From 7094e2f511f11517b54d3ad03d2c3167c96eee46 Mon Sep 17 00:00:00 2001 From: jishenghua <752718920@qq.com> Date: Wed, 9 Apr 2025 23:59:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=95=86=E5=93=81=E7=9A=84?= =?UTF-8?q?=E5=A4=9A=E5=B1=9E=E6=80=A7=E5=8A=9F=E8=83=BD=EF=BC=8C=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E7=9A=84=E9=A1=B5=E9=9D=A2=E4=B9=9F=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E5=A4=9A=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jshERP-boot/docs/jsh_erp.sql | 21 ++-- .../docs/数据库更新记录-首次安装请勿使用.txt | 9 +- .../jsh/erp/datasource/entities/Material.java | 10 ++ .../datasource/entities/MaterialExample.java | 70 +++++++++++ .../erp/service/MaterialExtendService.java | 19 ++- .../com/jsh/erp/service/MaterialService.java | 26 ++++ .../resources/mapper_xml/MaterialMapper.xml | 25 +++- .../resources/mapper_xml/MaterialMapperEx.xml | 6 + .../views/material/modules/MaterialModal.vue | 119 +++++++++++++++--- 9 files changed, 269 insertions(+), 36 deletions(-) diff --git a/jshERP-boot/docs/jsh_erp.sql b/jshERP-boot/docs/jsh_erp.sql index c7c270ff..d0084038 100644 --- a/jshERP-boot/docs/jsh_erp.sql +++ b/jshERP-boot/docs/jsh_erp.sql @@ -10,7 +10,7 @@ Target Server Type : MYSQL Target Server Version : 50704 File Encoding : 65001 -Date: 2025-03-25 23:43:27 +Date: 2025-04-09 21:17:48 */ SET FOREIGN_KEY_CHECKS=0; @@ -374,6 +374,7 @@ CREATE TABLE `jsh_material` ( `enable_serial_number` varchar(1) DEFAULT '0' COMMENT '是否开启序列号,0否,1是', `enable_batch_number` varchar(1) DEFAULT '0' COMMENT '是否开启批号,0否,1是', `position` varchar(100) DEFAULT NULL COMMENT '仓位货架', + `attribute` varchar(1000) DEFAULT NULL COMMENT '属性信息', `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id', `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除', PRIMARY KEY (`id`), @@ -384,15 +385,15 @@ CREATE TABLE `jsh_material` ( -- ---------------------------- -- Records of jsh_material -- ---------------------------- -INSERT INTO `jsh_material` VALUES ('568', '17', '商品1', '制1', 'sp1', '', null, null, '', '个', '', null, null, null, null, '', '', '', '', '0', '0', null, '63', '0'); -INSERT INTO `jsh_material` VALUES ('569', '17', '商品2', '', 'sp2', '', null, null, '', '只', '', null, null, null, null, '', '', '', '', '0', '0', null, '63', '0'); -INSERT INTO `jsh_material` VALUES ('570', '17', '商品3', '', 'sp3', '', null, null, '', '个', '', null, null, null, null, '', '', '', '', '0', '0', null, '63', '0'); -INSERT INTO `jsh_material` VALUES ('577', null, '商品8', '', 'sp8', '', null, null, '', '', '', null, '15', null, null, '', '', '', '', '0', '0', null, '63', '0'); -INSERT INTO `jsh_material` VALUES ('579', '21', '商品17', '', 'sp17', '', null, null, '', '', '', null, '15', null, null, '', '', '', '', '0', '0', null, '63', '0'); -INSERT INTO `jsh_material` VALUES ('586', '17', '序列号商品测试', '', 'xlh123', '', null, null, '', '个', '', null, null, null, null, '', '', '', '', '1', '0', null, '63', '0'); -INSERT INTO `jsh_material` VALUES ('587', '17', '商品test1', '南通中远', '', 'test1', null, null, '', '个', '', null, null, null, null, '', '', '', '', '0', '0', null, '63', '0'); -INSERT INTO `jsh_material` VALUES ('588', '21', '商品200', 'fafda', 'weqwe', '300ml', null, null, '红色', '个', 'aaaabbbbb', null, null, null, null, '', '', '', '', '0', '0', null, '63', '0'); -INSERT INTO `jsh_material` VALUES ('619', null, '衣服', null, null, null, null, null, null, '件', null, '', null, null, null, '', null, null, null, '0', '0', null, '63', '0'); +INSERT INTO `jsh_material` VALUES ('568', '17', '商品1', '制1', 'sp1', '', null, null, '', '个', '', null, null, null, null, '', '', '', '', '0', '0', null, null, '63', '0'); +INSERT INTO `jsh_material` VALUES ('569', '17', '商品2', '', 'sp2', '', null, null, '', '只', '', null, null, null, null, '', '', '', '', '0', '0', null, null, '63', '0'); +INSERT INTO `jsh_material` VALUES ('570', '17', '商品3', '', 'sp3', '', null, null, '', '个', '', null, null, null, null, '', '', '', '', '0', '0', null, null, '63', '0'); +INSERT INTO `jsh_material` VALUES ('577', null, '商品8', '', 'sp8', '', null, null, '', '', '', null, '15', null, null, '', '', '', '', '0', '0', null, null, '63', '0'); +INSERT INTO `jsh_material` VALUES ('579', '21', '商品17', '', 'sp17', '', null, null, '', '', '', null, '15', null, null, '', '', '', '', '0', '0', null, null, '63', '0'); +INSERT INTO `jsh_material` VALUES ('586', '17', '序列号商品测试', '', 'xlh123', '', null, null, '', '个', '', null, null, null, null, '', '', '', '', '1', '0', null, null, '63', '0'); +INSERT INTO `jsh_material` VALUES ('587', '17', '商品test1', '南通中远', '', 'test1', null, null, '', '个', '', null, null, null, null, '', '', '', '', '0', '0', null, null, '63', '0'); +INSERT INTO `jsh_material` VALUES ('588', '21', '商品200', 'fafda', 'weqwe', '300ml', null, null, '红色', '个', 'aaaabbbbb', null, null, null, null, '', '', '', '', '0', '0', null, null, '63', '0'); +INSERT INTO `jsh_material` VALUES ('619', null, '衣服', null, null, null, null, null, null, '件', null, '', null, null, null, '', null, null, null, '0', '0', null, null, '63', '0'); -- ---------------------------- -- Table structure for jsh_material_attribute diff --git a/jshERP-boot/docs/数据库更新记录-首次安装请勿使用.txt b/jshERP-boot/docs/数据库更新记录-首次安装请勿使用.txt index 099f8550..843114aa 100644 --- a/jshERP-boot/docs/数据库更新记录-首次安装请勿使用.txt +++ b/jshERP-boot/docs/数据库更新记录-首次安装请勿使用.txt @@ -1650,4 +1650,11 @@ alter table jsh_material_property add tenant_id bigint(20) DEFAULT NULL COMMENT -- by jishenghua -- 给jsh_account_head表的文件字段增加长度 -- -------------------------------------------------------- -alter table jsh_account_head change file_name file_name varchar(1000) DEFAULT NULL COMMENT '附件名称'; \ No newline at end of file +alter table jsh_account_head change file_name file_name varchar(1000) DEFAULT NULL COMMENT '附件名称'; + +-- -------------------------------------------------------- +-- 时间 2025年4月9日 +-- by jishenghua +-- 给商品表增加多属性字段,里面存多属性的数组 +-- -------------------------------------------------------- +alter table jsh_material add attribute varchar(1000) DEFAULT NULL COMMENT '属性信息' after position; \ No newline at end of file diff --git a/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/Material.java b/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/Material.java index 18d488f7..29a97c2f 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/Material.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/Material.java @@ -47,6 +47,8 @@ public class Material { private String position; + private String attribute; + private Long tenantId; private String deleteFlag; @@ -227,6 +229,14 @@ public class Material { this.position = position == null ? null : position.trim(); } + public String getAttribute() { + return attribute; + } + + public void setAttribute(String attribute) { + this.attribute = attribute == null ? null : attribute.trim(); + } + public Long getTenantId() { return tenantId; } diff --git a/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/MaterialExample.java b/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/MaterialExample.java index 902ad7ff..805ffe46 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/MaterialExample.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/MaterialExample.java @@ -1585,6 +1585,76 @@ public class MaterialExample { return (Criteria) this; } + public Criteria andAttributeIsNull() { + addCriterion("attribute is null"); + return (Criteria) this; + } + + public Criteria andAttributeIsNotNull() { + addCriterion("attribute is not null"); + return (Criteria) this; + } + + public Criteria andAttributeEqualTo(String value) { + addCriterion("attribute =", value, "attribute"); + return (Criteria) this; + } + + public Criteria andAttributeNotEqualTo(String value) { + addCriterion("attribute <>", value, "attribute"); + return (Criteria) this; + } + + public Criteria andAttributeGreaterThan(String value) { + addCriterion("attribute >", value, "attribute"); + return (Criteria) this; + } + + public Criteria andAttributeGreaterThanOrEqualTo(String value) { + addCriterion("attribute >=", value, "attribute"); + return (Criteria) this; + } + + public Criteria andAttributeLessThan(String value) { + addCriterion("attribute <", value, "attribute"); + return (Criteria) this; + } + + public Criteria andAttributeLessThanOrEqualTo(String value) { + addCriterion("attribute <=", value, "attribute"); + return (Criteria) this; + } + + public Criteria andAttributeLike(String value) { + addCriterion("attribute like", value, "attribute"); + return (Criteria) this; + } + + public Criteria andAttributeNotLike(String value) { + addCriterion("attribute not like", value, "attribute"); + return (Criteria) this; + } + + public Criteria andAttributeIn(List values) { + addCriterion("attribute in", values, "attribute"); + return (Criteria) this; + } + + public Criteria andAttributeNotIn(List values) { + addCriterion("attribute not in", values, "attribute"); + return (Criteria) this; + } + + public Criteria andAttributeBetween(String value1, String value2) { + addCriterion("attribute between", value1, value2, "attribute"); + return (Criteria) this; + } + + public Criteria andAttributeNotBetween(String value1, String value2) { + addCriterion("attribute not between", value1, value2, "attribute"); + return (Criteria) this; + } + public Criteria andTenantIdIsNull() { addCriterion("tenant_id is null"); return (Criteria) this; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/MaterialExtendService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/MaterialExtendService.java index 061677c6..be47a459 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/MaterialExtendService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/MaterialExtendService.java @@ -23,9 +23,7 @@ import org.springframework.web.context.request.ServletRequestAttributes; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; @Service @@ -97,6 +95,21 @@ public class MaterialExtendService { updatedJson.add(tempJson); } } + //针对多属性商品要考虑到有条码被删的情况,需要和原来的条码明细进行对比 + //1.先查询原来的条码列表 + List meList = materialExtendMapperEx.getDetailList(materialId); + //2.构造新的条码列表map + Map barCodeMap = new HashMap<>(); + for (int i = 0; i < meArr.size(); i++) { + JSONObject tempJson = meArr.getJSONObject(i); + barCodeMap.put(tempJson.getString("barCode"),tempJson.getString("barCode")); + } + //3.如果老的条码在新的里面不存在,则丢入删除队列 + for(MaterialExtendVo4List me: meList) { + if(barCodeMap.get(me.getBarCode()) == null) { + deletedJson.add(me.getId()); + } + } } } if (null != deletedJson) { diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/MaterialService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/MaterialService.java index 2cfedd96..87fd0457 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/MaterialService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/MaterialService.java @@ -154,6 +154,8 @@ public class MaterialService { public int insertMaterial(JSONObject obj, HttpServletRequest request)throws Exception { Material m = JSONObject.parseObject(obj.toJSONString(), Material.class); m.setEnabled(true); + //构造多属性数组字符串 + m.setAttribute(parseAttributeBySku(obj)); try{ materialMapperEx.insertSelectiveEx(m); Long mId = m.getId(); @@ -196,6 +198,8 @@ public class MaterialService { @Transactional(value = "transactionManager", rollbackFor = Exception.class) public int updateMaterial(JSONObject obj, HttpServletRequest request) throws Exception{ Material material = JSONObject.parseObject(obj.toJSONString(), Material.class); + //构造多属性数组字符串 + material.setAttribute(parseAttributeBySku(obj)); try{ materialMapper.updateByPrimaryKeySelective(material); if(material.getUnitId() == null) { @@ -1462,4 +1466,26 @@ public class MaterialService { public MaterialExtend getMaterialExtendBySerialNumber(String serialNumber) { return materialMapperEx.getMaterialExtendBySerialNumber(serialNumber); } + + /** + * 构造多属性数组字符串 + * @param obj + * @return + */ + public String parseAttributeBySku(JSONObject obj) { + if(obj!=null) { + JSONObject attributeObj = new JSONObject(); + JSONArray manySku = obj.getJSONArray("manySku"); + JSONArray skuOne = obj.getJSONArray("skuOne"); + JSONArray skuTwo = obj.getJSONArray("skuTwo"); + JSONArray skuThree = obj.getJSONArray("skuThree"); + attributeObj.put("manySku", manySku); + attributeObj.put("skuOne", skuOne); + attributeObj.put("skuTwo", skuTwo); + attributeObj.put("skuThree", skuThree); + return attributeObj.toJSONString(); + } else { + return null; + } + } } diff --git a/jshERP-boot/src/main/resources/mapper_xml/MaterialMapper.xml b/jshERP-boot/src/main/resources/mapper_xml/MaterialMapper.xml index 7befbf0c..ebcc8557 100644 --- a/jshERP-boot/src/main/resources/mapper_xml/MaterialMapper.xml +++ b/jshERP-boot/src/main/resources/mapper_xml/MaterialMapper.xml @@ -24,6 +24,7 @@ + @@ -88,7 +89,7 @@ id, category_id, name, mfrs, model, standard, brand, mnemonic, color, unit, remark, img_name, unit_id, expiry_num, weight, enabled, other_field1, other_field2, other_field3, - enable_serial_number, enable_batch_number, position, tenant_id, delete_flag + enable_serial_number, enable_batch_number, position, attribute, tenant_id, delete_flag