|  |  |  | @ -74,7 +74,7 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode | 
			
		
	
		
			
				
					|  |  |  |  |      * @param file | 
			
		
	
		
			
				
					|  |  |  |  |      */ | 
			
		
	
		
			
				
					|  |  |  |  |     @Transactional(rollbackFor = Exception.class) | 
			
		
	
		
			
				
					|  |  |  |  |     public void xmlUpload(MultipartFile file) { | 
			
		
	
		
			
				
					|  |  |  |  |     public void xmlUpload2(MultipartFile file) { | 
			
		
	
		
			
				
					|  |  |  |  |         try { | 
			
		
	
		
			
				
					|  |  |  |  |             String fileName = file.getOriginalFilename(); | 
			
		
	
		
			
				
					|  |  |  |  |             String suffix = FileUtil.getSuffix(fileName); | 
			
		
	
	
		
			
				
					|  |  |  | @ -174,7 +174,7 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode | 
			
		
	
		
			
				
					|  |  |  |  |      * @param file | 
			
		
	
		
			
				
					|  |  |  |  |      */ | 
			
		
	
		
			
				
					|  |  |  |  |     @Transactional(rollbackFor = Exception.class) | 
			
		
	
		
			
				
					|  |  |  |  |     public void xmlUpload2(MultipartFile file) { | 
			
		
	
		
			
				
					|  |  |  |  |     public void xmlUpload(MultipartFile file) { | 
			
		
	
		
			
				
					|  |  |  |  |         try { | 
			
		
	
		
			
				
					|  |  |  |  |             String fileName = file.getOriginalFilename(); | 
			
		
	
		
			
				
					|  |  |  |  |             String suffix = FileUtil.getSuffix(fileName); | 
			
		
	
	
		
			
				
					|  |  |  | @ -189,7 +189,7 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode | 
			
		
	
		
			
				
					|  |  |  |  |             Document document = XmlUtil.readXML(file.getInputStream()); | 
			
		
	
		
			
				
					|  |  |  |  |             //获取根
 | 
			
		
	
		
			
				
					|  |  |  |  |             Element rootElement = XmlUtil.getRootElement(document); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             this.ProcessData(rootElement); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         } catch (Exception e) { | 
			
		
	
		
			
				
					|  |  |  |  |             throw new JsonException("上传失败:" + e.getMessage()); | 
			
		
	
	
		
			
				
					|  |  |  | @ -446,6 +446,7 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     @Transactional(rollbackFor = Exception.class) | 
			
		
	
		
			
				
					|  |  |  |  |     void ProcessData(Element rootElement){ | 
			
		
	
		
			
				
					|  |  |  |  |         //截取Relation
 | 
			
		
	
		
			
				
					|  |  |  |  |         NodeList relation = rootElement.getElementsByTagName("Relation"); | 
			
		
	
	
		
			
				
					|  |  |  | @ -459,8 +460,6 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode | 
			
		
	
		
			
				
					|  |  |  |  |             throw new JsonException("XML文件解析错误"); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         Map<String, List<RelCodeDetail>> 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<RelCodeBatchMapper, RelCode | 
			
		
	
		
			
				
					|  |  |  |  |         String comment = relationE.getAttribute("comment"); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         AuthAdmin user = customerService.getUserBean(); | 
			
		
	
		
			
				
					|  |  |  |  |         Node batchNode = batch.item(0); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         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()); | 
			
		
	
		
			
				
					|  |  |  |  |         for (int i = 0; i < batch.getLength(); i++) { | 
			
		
	
		
			
				
					|  |  |  |  |             Node batchNode = batch.item(i); | 
			
		
	
		
			
				
					|  |  |  |  |             RelCodeBatch relCodeBatch = new RelCodeBatch(); | 
			
		
	
		
			
				
					|  |  |  |  |             Map<String, List<RelCodeDetail>> 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<RelCodeDetail> relCodeDetails = codeMap.get(StrUtil.isNotBlank(parentCode) ? parentCode : "0"); | 
			
		
	
		
			
				
					|  |  |  |  |                         if (relCodeDetails == null){ | 
			
		
	
		
			
				
					|  |  |  |  |                             List<RelCodeDetail> 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<String, Integer> batchIdFkMap = new HashMap<>(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |                     // 遍历 Map
 | 
			
		
	
		
			
				
					|  |  |  |  |                     for (Map.Entry<String, List<RelCodeDetail>> entry : codeMap.entrySet()) { | 
			
		
	
		
			
				
					|  |  |  |  |                         List<RelCodeDetail> addRelCodeDetail = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |  |                         String key = entry.getKey(); | 
			
		
	
		
			
				
					|  |  |  |  |                         List<RelCodeDetail> 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);
 | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
	
		
			
				
					|  |  |  | 
 |