进销存系统物资分类事件繁琐的事情;简单分类无法实现个性商品定制录入数据的问题; 亦不可能对不同种类商品建立不同的数据表类型,虽然可行,但维护成本极高;
下面提供一种表单解决思路,既能满足定制表单,又能支持无限拓展。
import java.io.Serializable; /** * @author Cheng.Wei * @ClassName DefaultData * @Description 属性默认值 * @date 2017-09-04 11:51 */ public class DefaultData implements Serializable { private String value;//表单填充值 private Boolean defaultVal;//是否默认 }---------------------------------------------------------------------------------------------------------------------------------
import java.io.Serializable; import java.util.List; /** * @author Cheng.Wei * @ClassName PropertyInfo * @Description 属性信息 * @date 2017-09-04 10:50 */ public class PropertyInfo implements Serializable{ private String name;//名称 private String formName;//表单字段 private String style;// 样式 input、 select private Integer width;//列宽 private String align;//对齐方式 private Boolean required;//是否必须 private ListdefaultData;//默认值 }
-----------------------------------------------------------------------
import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.io.Serializable; import java.util.Date; import java.util.List; /** * @author Cheng.Wei * @ClassName Categories * @Description 物品分类 * @date 2017-09-04 09:01 */ @Document(collection="categories") public class Categories implements Serializable{ @Id private String id; private String name; private Listproperty; private Boolean enable; // 是否可用 private Boolean deleted; // 是否删除 private Date createTime; // 创建时间 private Date modifiedTime; // 修改时间 }
其实已经相当明了,Categories是物品的分类,PropertyInfo作为定制表单的参数信息,DefaultData类进一步对每一个属性的默认值进行归类,解决根据物品种类的不同,定制化表单提交参数的问题。
数据样式:
{
"_id": ObjectId('59ad061b8c39ba13ec9d592f'),
"_class": "com.xxxxCategories",
"name": "电脑",
"property": [
{
"name": "品牌",
"formName": "band",
"style": "select",
"width": 50,
"align": "left",
"required": true,
"defaultData": [
{
"value": "联想",
"defaultVal": false
},
{
"value": "戴尔",
"defaultVal": true
}
]
},
{
"name": "内存",
"formName": "ram",
"style": "select",
"width": 50,
"align": "left",
"required": true,
"defaultData": [
{
"value": "4GB",
"defaultVal": false
},
{
"value": "8GB",
"defaultVal": true
},
{
"value": "16GB",
"defaultVal": true
}
]
},
{
"name": "显卡",
"formName": "gpu",
"style": "input",
"width": 50,
"align": "left",
"required": true,
"defaultData": []
}
],
"enable": true,
"deleted": false
}