diff --git a/src/main/java/com/glxp/api/entity/collect/RelCodeBatch.java b/src/main/java/com/glxp/api/entity/collect/RelCodeBatch.java index ba46bec97..8a98bc271 100644 --- a/src/main/java/com/glxp/api/entity/collect/RelCodeBatch.java +++ b/src/main/java/com/glxp/api/entity/collect/RelCodeBatch.java @@ -135,4 +135,28 @@ public class RelCodeBatch implements Serializable { @TableField(value = "erpId") @ApiModelProperty(value = "") private String erpId; + + /** + * curCode + */ + + @TableField(value = "curCode") + @ApiModelProperty(value = "") + private String curCode; + + + @TableField(value = "oneLevelCount") + @ApiModelProperty(value = "") + private Integer oneLevelCount; + + + @TableField(value = "twoLevelCount") + @ApiModelProperty(value = "") + private Integer twoLevelCount; + + + @TableField(value = "threeLevelCount") + @ApiModelProperty(value = "") + private Integer threeLevelCount; + } diff --git a/src/main/java/com/glxp/api/service/collect/RelCodeBatchService.java b/src/main/java/com/glxp/api/service/collect/RelCodeBatchService.java index 015fe86ae..2d2cbe054 100644 --- a/src/main/java/com/glxp/api/service/collect/RelCodeBatchService.java +++ b/src/main/java/com/glxp/api/service/collect/RelCodeBatchService.java @@ -6,13 +6,8 @@ import cn.hutool.core.io.FileUtil; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.XmlUtil; -import com.alibaba.fastjson.JSONObject; -import com.alibaba.fastjson.TypeReference; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.github.pagehelper.PageHelper; -import com.glxp.api.common.res.BaseResponse; -import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.dao.inout.IoCodeTempDao; import com.glxp.api.entity.auth.AuthAdmin; import com.glxp.api.entity.basic.ProductInfoEntity; @@ -20,20 +15,15 @@ import com.glxp.api.entity.basic.UdiEntity; import com.glxp.api.entity.basic.UdiProductEntity; import com.glxp.api.entity.collect.RelCodeDetail; import com.glxp.api.entity.inout.IoCodeTempEntity; -import com.glxp.api.entity.thrsys.ThrSystemEntity; import com.glxp.api.exception.JsonException; import com.glxp.api.http.sync.SpsDirectClient; import com.glxp.api.req.collect.RelCodeBatchRequest; import com.glxp.api.req.collect.RelCodeDetailRequest; -import com.glxp.api.req.inv.FilterInvProductRequest; -import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.collect.RelCodeBatchResponse; import com.glxp.api.res.collect.RelCodeDetailByParentCodeResponse; -import com.glxp.api.res.inv.ThrInvResultResponse; import com.glxp.api.service.auth.CustomerService; import com.glxp.api.service.basic.ProductInfoService; import com.glxp.api.service.basic.UdiProductService; -import com.glxp.api.util.HttpClient; import com.glxp.api.util.udi.FilterUdiUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; @@ -49,10 +39,6 @@ import org.w3c.dom.Node; import org.w3c.dom.NodeList; import javax.annotation.Resource; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; @@ -74,106 +60,6 @@ public class RelCodeBatchService extends ServiceImpl 5 * 1024 * 1024) { - throw new JsonException("上传文件超过5M"); - } - List relCodeDetails = new ArrayList<>(); - Document document = XmlUtil.readXML(file.getInputStream()); - //获取根 - Element rootElement = XmlUtil.getRootElement(document); - //截取Relation - NodeList relation = rootElement.getElementsByTagName("Relation"); - if (relation == null) { - throw new JsonException("XML文件解析错误"); - } - Element relationE = (Element) relation.item(0); - String productCode = relationE.getAttribute("productCode"); - String subTypeNo = relationE.getAttribute("subTypeNo"); - String cascade = relationE.getAttribute("cascade"); - String packageSpec = relationE.getAttribute("packageSpec"); - String comment = relationE.getAttribute("comment"); - //截取Batch - NodeList batch = rootElement.getElementsByTagName("Batch"); - if (batch == null) { - throw new JsonException("XML文件解析错误"); - } - AuthAdmin user = customerService.getUserBean(); - for (int i = 0; i < batch.getLength(); i++) { - Node batchNode = batch.item(i); - RelCodeBatch relCodeBatch = new RelCodeBatch(); - if (batchNode.getNodeType() == Node.ELEMENT_NODE) { - Element batchE = (Element) batchNode; - relCodeBatch.setProductCode(productCode); - relCodeBatch.setSubTypeNo(subTypeNo); - relCodeBatch.setCascadeRatio(cascade); - relCodeBatch.setPackageSpec(packageSpec); - relCodeBatch.setComment(comment); - String batchNo = batchE.getAttribute("batchNo"); - relCodeBatch.setBatchNo(batchNo); - String madeDate = batchE.getAttribute("madeDate"); - relCodeBatch.setMadeDate(madeDate); -// relCodeBatch.setMadeDate(DateUtil.parse(madeDate,"yyyy-MM-dd")); - String validateDate = batchE.getAttribute("validateDate"); -// relCodeBatch.setValidateDate(DateUtil.offsetDay(DateUtil.parse(validateDate,"yyyy-MM-dd"),1)); - relCodeBatch.setValidateDate(String.valueOf(DateUtil.offsetDay(DateUtil.parse(validateDate, "yyyy-MM-dd"), 1))); - String workShop = batchE.getAttribute("workShop"); - relCodeBatch.setWorkShop(workShop); - String lineName = batchE.getAttribute("lineName"); - relCodeBatch.setLineName(lineName); - String lineManager = batchE.getAttribute("lineManager"); - relCodeBatch.setLineManager(lineManager); - relCodeBatch.setCreateTime(new Date()); - relCodeBatch.setCreateUser(user.getUserName()); - relCodeBatch.setUpdateTime(new Date()); - relCodeBatch.setUpdateUser(user.getUserName()); - String customerId = String.valueOf(user.getCustomerId()); - relCodeBatch.setErpId(customerId); - this.save(relCodeBatch); - } - //batch下的节点code - NodeList code = batchNode.getChildNodes(); - for (int j = 0; j < code.getLength(); j++) { - Node codeNode = code.item(j); - RelCodeDetail relCodeDetail = new RelCodeDetail(); - if (codeNode.getNodeType() == Node.ELEMENT_NODE) { - Element codeE = (Element) codeNode; - relCodeDetail.setBatchIdFk(relCodeBatch.getId()); - String curCode = codeE.getAttribute("curCode"); - relCodeDetail.setCurCode(curCode); - String packLayer = codeE.getAttribute("packLayer"); - relCodeDetail.setPackLayer(Integer.valueOf(packLayer)); - String parentCode = codeE.getAttribute("parentCode"); - relCodeDetail.setParentCode(StrUtil.isNotBlank(parentCode) ? parentCode : "0"); - String flag = codeE.getAttribute("flag"); - relCodeDetail.setFlag(Integer.valueOf(flag)); - relCodeDetails.add(relCodeDetail); - } - } - } - relCodeDetailService.saveBatch(relCodeDetails); - } catch (Exception e) { - throw new JsonException("上传失败:" + e.getMessage()); - } - - } - - - /** - * 上传保存关联信息 - * 1、进来先判断是2 还是 3 个层级 - * 2、 - * - * @param file - */ - @Transactional(rollbackFor = Exception.class) public void xmlUpload(MultipartFile file) { try { String fileName = file.getOriginalFilename(); @@ -229,9 +115,9 @@ public class RelCodeBatchService extends ServiceImpl relCodeDetails = new ArrayList<>(); for (RelCodeDetailRequest request : detailList) { @@ -243,6 +129,7 @@ public class RelCodeBatchService extends ServiceImpl filterList(RelCodeBatchRequest relCodeBatchRequest) { @@ -534,10 +421,10 @@ public class RelCodeBatchService extends ServiceImpl batchIdFkMap = new HashMap<>(); - + List addRelCodeDetail = new ArrayList<>(); + RelCodeBatch updateDrugLevelRelCodeBatch = null; // 遍历 Map for (Map.Entry> entry : codeMap.entrySet()) { - List addRelCodeDetail = new ArrayList<>(); String key = entry.getKey(); List list = entry.getValue(); @@ -549,9 +436,12 @@ public class RelCodeBatchService extends ServiceImpl list = relCodeDetailService.list(new LambdaQueryWrapper().eq(RelCodeDetail::getParentCode, curCode)); + if (CollUtil.isNotEmpty(list)){ + RelCodeDetail relCodeDetail = list.get(0); + Integer packLayer = relCodeDetail.getPackLayer(); + if (packLayer == 2){ + item.setThreeLevelCount(1); + item.setTwoLevelCount(list.size()); + + //需要计算出一级数量 + List twoCurCodes = list.stream().map(RelCodeDetail::getCurCode).collect(Collectors.toList()); + List list2 = relCodeDetailService.list(new LambdaQueryWrapper().in(RelCodeDetail::getParentCode, twoCurCodes)); + item.setOneLevelCount(list2.size()); + + //更新下 二级单 + List twoRelCodeBatchs = this.list(new LambdaQueryWrapper().in(RelCodeBatch::getCurCode, twoCurCodes)); + if (CollUtil.isNotEmpty(twoRelCodeBatchs)){ + twoRelCodeBatchs.forEach( t -> { + this.updateDrugLevelCount(t); + }); } + }else if (packLayer == 1){ + item.setThreeLevelCount(0); + item.setTwoLevelCount(1); + item.setOneLevelCount(list.size()); } + this.updateById(item); } + return; } } diff --git a/src/main/resources/schemas/schema_v2.4.sql b/src/main/resources/schemas/schema_v2.4.sql index 6bd942728..08bee72fb 100644 --- a/src/main/resources/schemas/schema_v2.4.sql +++ b/src/main/resources/schemas/schema_v2.4.sql @@ -4622,7 +4622,39 @@ CREATE TABLE IF NOT EXISTS `sys_workplace_freight` COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; - +CREATE TABLE IF NOT EXISTS `rel_code_batch` ( + `id` int NOT NULL AUTO_INCREMENT, + `productCode` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '产品编码', + `subTypeNo` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '类型编码', + `cascadeRatio` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '包装比例', + `packageSpec` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '包装规格', + `comment` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注', + `batchNo` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '批次号', + `madeDate` datetime DEFAULT NULL COMMENT '生产日期', + `validateDate` datetime DEFAULT NULL COMMENT '失效日期', + `workShop` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '生产车间', + `lineName` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '生产线', + `lineManager` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '负责人', + `createTime` datetime DEFAULT NULL COMMENT '创建时间', + `createUser` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建人', + `updateTime` datetime DEFAULT NULL COMMENT '更新时间', + `updateUser` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '更新人', + `parentCode` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '父级码', + `uploadFlagUp` tinyint(1) DEFAULT '0' COMMENT '0 未上传 1已上传 2上传失败', + `uploadFlagDown` tinyint(1) DEFAULT '0' COMMENT '0 未上传 1已上传 2上传失败', + `erpId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '供应商ID', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; + +CREATE TABLE IF NOT EXISTS `rel_code_detail` ( + `id` int NOT NULL AUTO_INCREMENT, + `curCode` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '当前条码', + `packLayer` tinyint DEFAULT NULL COMMENT '包装级别', + `parentCode` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '父级码', + `flag` tinyint DEFAULT NULL COMMENT '状态', + `batchIdFk` int DEFAULT NULL COMMENT '产品批次ID外键', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CALL Pro_Temp_ColumnWork('sys_workplace_queue', 'layer', 'int NULL DEFAULT NULL COMMENT ''层级标记''', @@ -4732,3 +4764,19 @@ CALL Pro_Temp_ColumnWork('io_code', 'grantPaCode', ' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT ''爷级编码''', 1); + +CALL Pro_Temp_ColumnWork('rel_code_batch', 'curCode', + ' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT ''当前码''', + 1); + +CALL Pro_Temp_ColumnWork('rel_code_batch', 'oneLevelCount', + 'int NULL DEFAULT null COMMENT ''一级数量''', + 1); + +CALL Pro_Temp_ColumnWork('rel_code_batch', 'twoLevelCount', + 'int NULL DEFAULT null COMMENT ''二级数量''', + 1); + +CALL Pro_Temp_ColumnWork('rel_code_batch', 'threeLevelCount', + 'int NULL DEFAULT null COMMENT ''三级数量''', + 1); \ No newline at end of file