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 41f03e67b..015fe86ae 100644 --- a/src/main/java/com/glxp/api/service/collect/RelCodeBatchService.java +++ b/src/main/java/com/glxp/api/service/collect/RelCodeBatchService.java @@ -74,7 +74,7 @@ public class RelCodeBatchService extends ServiceImpl> codeMap = new HashMap<>(); - String productCode = relationE.getAttribute("productCode"); String subTypeNo = relationE.getAttribute("subTypeNo"); String cascade = relationE.getAttribute("cascade"); @@ -468,63 +467,123 @@ public class RelCodeBatchService extends ServiceImpl> codeMap = new HashMap<>(); + if (batchNode.getNodeType() == Node.ELEMENT_NODE) { + + Element batchE = (Element) batchNode; + String batchNo = batchE.getAttribute("batchNo"); + String madeDate = batchE.getAttribute("madeDate"); + String validateDate = batchE.getAttribute("validateDate"); + String workShop = batchE.getAttribute("workShop"); + String lineName = batchE.getAttribute("lineName"); + String lineManager = batchE.getAttribute("lineManager"); + String customerId = String.valueOf(user.getCustomerId()); + + + relCodeBatch.setProductCode(productCode); + relCodeBatch.setSubTypeNo(subTypeNo); + relCodeBatch.setCascadeRatio(cascade); + relCodeBatch.setPackageSpec(packageSpec); + relCodeBatch.setComment(comment); + relCodeBatch.setBatchNo(batchNo); + relCodeBatch.setMadeDate(madeDate); + relCodeBatch.setValidateDate(String.valueOf(DateUtil.offsetDay(DateUtil.parse(validateDate, "yyyy-MM-dd"), 1))); + relCodeBatch.setLineName(lineName); + relCodeBatch.setWorkShop(workShop); + relCodeBatch.setLineManager(lineManager); + relCodeBatch.setCreateTime(new Date()); + relCodeBatch.setCreateUser(user.getUserName()); + relCodeBatch.setUpdateTime(new Date()); + relCodeBatch.setUpdateUser(user.getUserName()); + relCodeBatch.setErpId(customerId); + relCodeBatch.setUploadFlagDown(1); + relCodeBatch.setUploadFlagUp(0); + + //batch下的节点code + NodeList code = batchNode.getChildNodes(); + for (int j = 0; j < code.getLength(); j++) { + Node codeNode = code.item(j); + if (codeNode.getNodeType() == Node.ELEMENT_NODE) { + RelCodeDetail relCodeDetail = new RelCodeDetail(); + Element codeE = (Element) codeNode; + String curCode = codeE.getAttribute("curCode"); + Integer packLayer = Integer.valueOf(codeE.getAttribute("packLayer")); + relCodeDetail.setBatchIdFk(relCodeBatch.getId()); + relCodeDetail.setCurCode(curCode); + 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)); + //判断是否已存在 + List relCodeDetails = codeMap.get(StrUtil.isNotBlank(parentCode) ? parentCode : "0"); + if (relCodeDetails == null){ + List newRelCodeDetails = new ArrayList<>(); + newRelCodeDetails.add(relCodeDetail); + codeMap.put(StrUtil.isNotBlank(parentCode) ? parentCode : "0",newRelCodeDetails); + }else { + relCodeDetails.add(relCodeDetail); + codeMap.put(StrUtil.isNotBlank(parentCode) ? parentCode : "0",relCodeDetails); + } + } + } + //开始处理codeMap + if (!codeMap.isEmpty()){ + Map batchIdFkMap = new HashMap<>(); + + // 遍历 Map + for (Map.Entry> entry : codeMap.entrySet()) { + List addRelCodeDetail = new ArrayList<>(); + String key = entry.getKey(); + List list = entry.getValue(); + + RelCodeBatch addRelCodeBatch = new RelCodeBatch(); + BeanUtils.copyProperties(relCodeBatch,addRelCodeBatch); + addRelCodeBatch.setParentCode(key); + if ("0".equals(key)){ + RelCodeDetail relCodeDetail = list.get(0); + String curCode = relCodeDetail.getCurCode(); + String diStr = FilterUdiUtils.getUdi(curCode).getUdi(); + addRelCodeBatch.setProductCode(diStr); + + this.save(addRelCodeBatch); + batchIdFkMap.put(curCode,addRelCodeBatch.getId()); + }else { + for (RelCodeDetail detail : list) { + Integer packLayer = detail.getPackLayer(); + if (packLayer == 2){ + RelCodeBatch addRelCodeBatch2 = new RelCodeBatch(); + BeanUtils.copyProperties(relCodeBatch,addRelCodeBatch2); + addRelCodeBatch2.setParentCode(key); + String curCode = detail.getCurCode(); + String diStr = FilterUdiUtils.getUdi(curCode).getUdi(); + addRelCodeBatch2.setProductCode(diStr); + + this.save(addRelCodeBatch2); + batchIdFkMap.put(curCode,addRelCodeBatch2.getId()); + + //同时也是上面的明细 + detail.setBatchIdFk(batchIdFkMap.get(key)); + addRelCodeDetail.add(detail); + }else if (packLayer == 1){ + //直接明细 + detail.setBatchIdFk(batchIdFkMap.get(key)); + addRelCodeDetail.add(detail); + } + } + } + if (CollUtil.isNotEmpty(addRelCodeDetail)){ + relCodeDetailService.saveBatch(addRelCodeDetail); + } - RelCodeBatch relCodeBatch = new RelCodeBatch(); - relCodeBatch.setProductCode(productCode); - relCodeBatch.setSubTypeNo(subTypeNo); - relCodeBatch.setCascadeRatio(cascade); - relCodeBatch.setPackageSpec(packageSpec); - relCodeBatch.setComment(comment); - relCodeBatch.setBatchNo(batchNo); - relCodeBatch.setMadeDate(madeDate); - relCodeBatch.setValidateDate(String.valueOf(DateUtil.offsetDay(DateUtil.parse(validateDate, "yyyy-MM-dd"), 1))); - relCodeBatch.setLineName(lineName); - relCodeBatch.setWorkShop(workShop); - relCodeBatch.setLineManager(lineManager); - relCodeBatch.setCreateTime(new Date()); - relCodeBatch.setCreateUser(user.getUserName()); - relCodeBatch.setUpdateTime(new Date()); - relCodeBatch.setUpdateUser(user.getUserName()); - relCodeBatch.setErpId(customerId); + } - //batch下的节点code - NodeList code = batchNode.getChildNodes(); - //第一个节点的级别 - Integer packLayerP = null; - 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; - String curCode = codeE.getAttribute("curCode"); - Integer packLayer = Integer.valueOf(codeE.getAttribute("packLayer")); - if (j == 0) { - packLayerP = packLayer; - relCodeBatch.setParentCode("0"); } - relCodeDetail.setBatchIdFk(relCodeBatch.getId()); - relCodeDetail.setCurCode(curCode); - 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)); } } - - - -// relCodeDetailService.saveBatch(relCodeDetails); } }