fix:层级文件上传

dev_unify
chenhc 8 months ago
parent 61f775940e
commit 4c0140e05a

@ -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,7 +467,11 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode
String comment = relationE.getAttribute("comment");
AuthAdmin user = customerService.getUserBean();
Node batchNode = batch.item(0);
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");
@ -480,7 +483,6 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode
String customerId = String.valueOf(user.getCustomerId());
RelCodeBatch relCodeBatch = new RelCodeBatch();
relCodeBatch.setProductCode(productCode);
relCodeBatch.setSubTypeNo(subTypeNo);
relCodeBatch.setCascadeRatio(cascade);
@ -497,22 +499,18 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode
relCodeBatch.setUpdateTime(new Date());
relCodeBatch.setUpdateUser(user.getUserName());
relCodeBatch.setErpId(customerId);
relCodeBatch.setUploadFlagDown(1);
relCodeBatch.setUploadFlagUp(0);
//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) {
RelCodeDetail relCodeDetail = new RelCodeDetail();
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));
@ -520,11 +518,72 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode
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);
}
}
// relCodeDetailService.saveBatch(relCodeDetails);
}
}
}
}
}

Loading…
Cancel
Save