物料导入优化
This commit is contained in:
parent
ae8c381fe7
commit
663dddcaf4
|
@ -120,34 +120,44 @@ public class ContractMaterialImportPlugin extends AbstractFormPlugin {
|
||||||
public void beforeImportEntry(BeforeImportEntryEventArgs e) {
|
public void beforeImportEntry(BeforeImportEntryEventArgs e) {
|
||||||
super.beforeImportEntry(e);
|
super.beforeImportEntry(e);
|
||||||
materialList.clear();
|
materialList.clear();
|
||||||
Set<String> existCodes=new HashSet<>();
|
Set<String> existCodes = new HashSet<>();
|
||||||
|
|
||||||
|
// 获取已存在的物料编码
|
||||||
DynamicObjectCollection orderFormEntry = (DynamicObjectCollection) this.getModel().getValue("qeug_orderformentry");
|
DynamicObjectCollection orderFormEntry = (DynamicObjectCollection) this.getModel().getValue("qeug_orderformentry");
|
||||||
if (null!=orderFormEntry&&orderFormEntry.size()!=0){
|
if (orderFormEntry != null && !orderFormEntry.isEmpty()) {
|
||||||
for (DynamicObject dynamicObject : orderFormEntry) {
|
for (DynamicObject dynamicObject : orderFormEntry) {
|
||||||
String number = dynamicObject.getString("qeug_material.number");
|
String number = dynamicObject.getString("qeug_material.number");
|
||||||
existCodes.add(number);
|
existCodes.add(number);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 处理导入数据
|
||||||
HashMap itemEntry = (HashMap) e.getSource();
|
HashMap itemEntry = (HashMap) e.getSource();
|
||||||
ArrayList list = (ArrayList) itemEntry.get("qeug_orderformentry");
|
ArrayList list = (ArrayList) itemEntry.get("qeug_orderformentry");
|
||||||
for (int i = 0; i < list.size(); i++) {
|
|
||||||
ImportEntryData importData = (ImportEntryData) list.get(i);
|
Iterator iterator = list.iterator();
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
ImportEntryData importData = (ImportEntryData) iterator.next();
|
||||||
JSONObject data = importData.getData();
|
JSONObject data = importData.getData();
|
||||||
ImportMaterial importMaterial = new ImportMaterial();
|
|
||||||
Map<String, Object> map = data.toJavaObject(Map.class);
|
Map<String, Object> map = data.toJavaObject(Map.class);
|
||||||
JSONObject material = (JSONObject) map.get("qeug_material");
|
JSONObject material = (JSONObject) map.get("qeug_material");
|
||||||
//物料编码
|
|
||||||
|
// 如果 material 为空,则直接移除该行数据
|
||||||
|
if (material == null) {
|
||||||
|
iterator.remove();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
ImportMaterial importMaterial = new ImportMaterial();
|
||||||
importMaterial.setMaterialNumber(material.getString("number"));
|
importMaterial.setMaterialNumber(material.getString("number"));
|
||||||
//物料名称
|
|
||||||
importMaterial.setMaterialName((String) map.get("qeug_materialnames"));
|
importMaterial.setMaterialName((String) map.get("qeug_materialnames"));
|
||||||
//物料类型
|
|
||||||
importMaterial.setMaterialType((String) map.get("qeug_importmaterialtype"));
|
importMaterial.setMaterialType((String) map.get("qeug_importmaterialtype"));
|
||||||
//物料规格
|
|
||||||
importMaterial.setMaterialModel((String) map.get("qeug_importmodel"));
|
importMaterial.setMaterialModel((String) map.get("qeug_importmodel"));
|
||||||
//物料单位
|
|
||||||
importMaterial.setMaterialUnit((String) map.get("qeug_importunit"));
|
importMaterial.setMaterialUnit((String) map.get("qeug_importunit"));
|
||||||
materialList.add(importMaterial);
|
materialList.add(importMaterial);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 校验数据
|
||||||
Set<Map.Entry<String, List<ImportEntryData>>> entries = itemEntry.entrySet();
|
Set<Map.Entry<String, List<ImportEntryData>>> entries = itemEntry.entrySet();
|
||||||
for (Map.Entry<String, List<ImportEntryData>> entry : entries) {
|
for (Map.Entry<String, List<ImportEntryData>> entry : entries) {
|
||||||
String entryName = entry.getKey();
|
String entryName = entry.getKey();
|
||||||
|
@ -155,19 +165,25 @@ public class ContractMaterialImportPlugin extends AbstractFormPlugin {
|
||||||
if (CollectionUtils.isEmpty(entryEntityImportDataList)) {
|
if (CollectionUtils.isEmpty(entryEntityImportDataList)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Map<Integer, String> indexVsMsgMap = validateEntry(entryEntityImportDataList,existCodes);
|
|
||||||
|
// 进行校验
|
||||||
|
Map<Integer, String> indexVsMsgMap = validateEntry(entryEntityImportDataList, existCodes);
|
||||||
Set<Integer> indexSet = indexVsMsgMap.keySet();
|
Set<Integer> indexSet = indexVsMsgMap.keySet();
|
||||||
Map<String, List<Object>> logMap = e.getEntryDataMap();
|
Map<String, List<Object>> logMap = e.getEntryDataMap();
|
||||||
ImportLogger importLogger = (ImportLogger)logMap.get(entryName).get(0);
|
ImportLogger importLogger = (ImportLogger) logMap.get(entryName).get(0);
|
||||||
|
|
||||||
|
// 记录错误日志
|
||||||
for (Map.Entry<Integer, String> indexVsMsgEntry : indexVsMsgMap.entrySet()) {
|
for (Map.Entry<Integer, String> indexVsMsgEntry : indexVsMsgMap.entrySet()) {
|
||||||
Integer index = indexVsMsgEntry.getKey();
|
Integer index = indexVsMsgEntry.getKey();
|
||||||
importLogger.log(index, indexVsMsgEntry.getValue());
|
importLogger.log(index, indexVsMsgEntry.getValue());
|
||||||
importLogger.fail();
|
importLogger.fail();
|
||||||
importLogger.setTotal(importLogger.getTotal() + 1);
|
importLogger.setTotal(importLogger.getTotal() + 1);
|
||||||
}
|
}
|
||||||
Iterator<ImportEntryData> iterator = entryEntityImportDataList.iterator();
|
|
||||||
while (iterator.hasNext()) {
|
// 移除校验失败的数据
|
||||||
ImportEntryData entryData = iterator.next();
|
Iterator<ImportEntryData> iterator2 = entryEntityImportDataList.iterator();
|
||||||
|
while (iterator2.hasNext()) {
|
||||||
|
ImportEntryData entryData = iterator2.next();
|
||||||
Integer rowNum = (Integer) entryData.getData().get("rowNum");
|
Integer rowNum = (Integer) entryData.getData().get("rowNum");
|
||||||
if (indexSet.contains(rowNum)) {
|
if (indexSet.contains(rowNum)) {
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
|
@ -176,6 +192,7 @@ public class ContractMaterialImportPlugin extends AbstractFormPlugin {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private Map<Integer, String> validateEntry(List<ImportEntryData> entryDataList,Set<String> existingMaterialCodes) {
|
private Map<Integer, String> validateEntry(List<ImportEntryData> entryDataList,Set<String> existingMaterialCodes) {
|
||||||
Map<Integer, String> indexVsMsgMap = new HashMap<>();
|
Map<Integer, String> indexVsMsgMap = new HashMap<>();
|
||||||
Set<String> encounteredMaterialCodes = new HashSet<>(); // 用于记录当前批次中的物料编码
|
Set<String> encounteredMaterialCodes = new HashSet<>(); // 用于记录当前批次中的物料编码
|
||||||
|
|
Loading…
Reference in New Issue