新抽样单协议
1. 抽样单协议
为了实现抽样系统中电子抽样单的灵活性,修改原抽样系统中的问题,修改抽样单协议如下。(协议括号中的英文为服务器与手机端传输时定义的Key,未经允许,不可修改。)
1.1 抽样单结构
0抽样单仿照纸质抽样单,但比纸质抽样单功能更加丰富,抽样单的结构如下:
1 | --单元格(cell) |
以上是一张抽样单,由多个单元格组成,没有其他任何杂项。 如果需要添加功能,需要在单元格类型属性中添加类型。 用户通过在线设计不同功能的单元格实现不同功能的抽样单。
1.2 单元格属性
为了实现单元格的多样性,单元格具有多个属性,这些属性在使用在线设计抽样单功能时可以进行修改,下发到手机后,单元格的属性不可修改,手机根据不同的单元格类型(单元格属性之一) 属性,解析成不同的单元格。
下面介绍单元格的属性:
- 单元格名称(cell_name): 在制表时由用户填写,例如,“样品名称”,“亩产量”等
- 单元格类型(cell_type): 在制表时由用户选择,例如,文本类,填写类,照相类等。
- 单元格值(cell_value): 在制表时由用户填写,此属性仅对部分类型单元格有效,如填写类和选择类,其他单元格不受此属性影响。
- 单元格是否可编辑(cell_editable): 以下全为二值型属性(T,F,分别代表True,False),在制表时选择。此属性仅对部分类型单元格有效,如填写类,其他单元格不受此属性影响。
- 单元格是否为必填(cell_fill_required): 同上,手机端的必填项单元格如果不填写不能保存
- 单元格是否可打印(cell_printable): 同上,代表单元格是否具有打印功能
- 单元格是否默认勾选打印(cell_default_print): 同上,代表单元格打印的默认勾选状态
- 单元格可否被加样(cell_copyable): 同上。关于加样功能,解释如下:假设以下场景,在同一个村采100个样品,抽样单中的“抽样所在村”单元格每次都要填写相同的村名,而其他的单元格“样品编号等” 则每次填写不同的内容,所以为了方便采样人员在填写抽样单模板时不必每次填写重复内容,本系统设计了加样功能,即填写抽样单时,在不退出当前模板的界面,点击“加样”按钮后,可被加样的单元格(需要改变内容的单元格)被复制,而不可被加样的单元格(不需要改变内容的单元格)不被复制,最后采样人员在一个模板界面可一键保存成多个抽样单。单元格的可否被加样属性需要抽样单设计者在制作抽样单时设计好。
除了以上的属性,开发者可以通过添加单元格类型来增加抽样单功能。但是,开发者在开发网页端和手机端时一定要谨慎:要将不同属性的单元格封装好,日后如果需要添加单元格属性,只需要对新的单元格类型进行封装即可进行二次开发。
可以看出,抽样单是由多个单元格组成,每个单元格具有多个属性,其中单元格的功能体现在单元格类型上,这好比一个公司(抽样单)又许多员工(单元格)组成,每个员工具有多个不同的属性(性别,姓名,工种等),而员工的功能体现在工种(单元格类型)上。
1.3 单元格类型
为了增加抽样单的功能,目前的单元格类型有以下(按常用程度排序):
抽样序列号单元格(type_serial_number): 用户标识抽样单的唯一编号,同时用于将抽样单和样品关联。格式如“W170001”,是最为常用的类型,是否可编辑为否,可否被加样为是,是否为必填为是
填写单元格(type_edit_text): 用于手机端填写信息,所有单元格属性对其生效。
显示单元格(type_text): 仅用于显示信息,单元格是否可编辑属性、单元格是否为必填属性对其无效
单选单元格(type_radio): 用于进行单项选择,如单元格名称为“自然灾害情况”,单元格值为“洪灾,涝灾”。单元格是否可编辑属性对其无效
多选单元格(type_multi_select): 用于进行多项选择,如单元格名称为“喷洒农药名称”,可能喷洒多种农药,单元格值为“A药,B药”。单元格是否可编辑属性对其无效
二级多选单选单元格(type_multi_then_single_choice): 一级为多选,二级也为单选。用于对单选的内容进行补充,如上述自然灾害情况,单元格值为“洪灾,涝灾;轻微,一般,严重”,即可在选择完灾害后,选择严重程度。单元格是否可编辑属性对其无效
地理位置坐标单元格(type_geographic_coordinates): 显示采样人员所在的经纬度。单元格值、单元格是否可编辑属性对其无效
地址单元格(type_address): 用于显示采样人员所在的地址信息,如“XX市,XX区,XX县”。
拍照单元格(type_photos): 用于采集照片。单元格值、单元格是否可打印、单元格是否默认勾选打印属性对其无效
录像单元格(type_vedios): 用于拍摄视频。单元格值、单元格是否可打印、单元格是否默认勾选打印属性对其无效
自动记录日期单元格(type_auto_record_date): 用于自动记录日期,如”XXXX年XX月XX日”。单元格值、单元格是否可编辑属性对其无效
自动记录时间单元格(type_auto_record_time): 用于自动记录时间,如“XX时XX分”。单元格、单元格是否可编辑属性对其无效
日期选择单元格(type_date_select): 用于用于手动选择日期。单元格值、单元格是否可编辑属性对其无效
签名单元格(type_sign) 用于签名。单元格值、单元格是否可编辑、单元格是否可打印、单元格是否默认勾选打印属性对其无效
2. Json实例
下面的Json为使用该协议时,服务器与手机端传送的抽样单数据:
1 | { |
以上Json已经通过校验。
抽样单填写完成后,服务器收到的内容为:
1 | { |