物料导入优化

This commit is contained in:
李贵强 2025-05-20 17:53:02 +08:00
parent a14577ebd4
commit 61065050b0
2 changed files with 93 additions and 31 deletions

View File

@ -127,10 +127,10 @@ public class ContractMaterialImportPlugin extends AbstractFormPlugin {
private String checkMaterial(String materialName, String materialModel) { private String checkMaterial(String materialName, String materialModel) {
QFilter qFilter = new QFilter("name", QCP.equals, materialName); QFilter qFilter = new QFilter("name", QCP.equals, materialName);
qFilter.and("modelnum", QCP.equals, materialModel); qFilter.and("modelnum", QCP.equals, materialModel==null ? "":materialModel);
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("bd_material", qFilter.toArray()); DynamicObject[] dynamicObject = BusinessDataServiceHelper.load("bd_material", "id,number",qFilter.toArray());
if (dynamicObject != null) { if (dynamicObject.length!=0){
return dynamicObject.getString("number"); return dynamicObject[0].getString("number");
} }
return null; return null;
} }
@ -150,25 +150,16 @@ public class ContractMaterialImportPlugin extends AbstractFormPlugin {
public void beforeImportEntry(BeforeImportEntryEventArgs e) { public void beforeImportEntry(BeforeImportEntryEventArgs e) {
super.beforeImportEntry(e); super.beforeImportEntry(e);
try { try {
// 提前加载所有物料类型
Set<String> validMaterialTypes = new HashSet<>();
DynamicObject[] typeList = BusinessDataServiceHelper.load("bd_materialgroup", "id,name", null);
for (DynamicObject obj : typeList) {
validMaterialTypes.add(obj.getString("name"));
}
materialList.clear(); materialList.clear();
Set<String> existComb = new HashSet<>();
// 提前加载所有系统物料类型
Set<String> validMaterialTypes = this.getSysMaterialType();
//加载映射表中默认物料类型名称
String typeName=this.getMapBillMaterialTypeName();
// 获取已存在的物料名称+规格组合 // 获取已存在的物料名称+规格组合
DynamicObjectCollection orderFormEntry = (DynamicObjectCollection) this.getModel().getValue("qeug_orderformentry"); //Set<String> existComb = this.getExitMaterialArray();
if (orderFormEntry != null && !orderFormEntry.isEmpty()) {
for (DynamicObject dynamicObject : orderFormEntry) {
String name = dynamicObject.getString("qeug_materialnames");
String model = dynamicObject.getString("qeug_importmodel");
existComb.add(name.trim()+model.trim());
}
}
// 处理导入数据 // 处理导入数据
HashMap itemEntry = (HashMap) e.getSource(); HashMap itemEntry = (HashMap) e.getSource();
@ -203,7 +194,6 @@ public class ContractMaterialImportPlugin extends AbstractFormPlugin {
importMaterial.setMaterialNumber(material.getString("number")); importMaterial.setMaterialNumber(material.getString("number"));
} }
//物料类型校验 //物料类型校验
String typeName="待分类";
JSONObject materialType = (JSONObject) map.get("qeug_materialtypeid");//物料分类 JSONObject materialType = (JSONObject) map.get("qeug_materialtypeid");//物料分类
if (materialType!=null && validMaterialTypes.contains(materialType.getString("name"))){ if (materialType!=null && validMaterialTypes.contains(materialType.getString("name"))){
typeName = materialType.getString("name"); typeName = materialType.getString("name");
@ -228,7 +218,7 @@ public class ContractMaterialImportPlugin extends AbstractFormPlugin {
} }
// 进行校验 // 进行校验
Map<Integer, String> indexVsMsgMap = validateEntry(entryEntityImportDataList, existComb); Map<Integer, String> indexVsMsgMap = validateEntry(entryEntityImportDataList);
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);
@ -260,10 +250,10 @@ public class ContractMaterialImportPlugin extends AbstractFormPlugin {
/** /**
* 校验物料名称物料单位 * 校验物料名称物料单位
* @param entryDataList * @param entryDataList
* @param existComb * @param
* @return * @return
*/ */
private Map<Integer, String> validateEntry(List<ImportEntryData> entryDataList,Set<String> existComb) { private Map<Integer, String> validateEntry(List<ImportEntryData> entryDataList) {
Map<Integer, String> indexVsMsgMap = new HashMap<>(); Map<Integer, String> indexVsMsgMap = new HashMap<>();
for (int i = 0; i < entryDataList.size(); i++) { for (int i = 0; i < entryDataList.size(); i++) {
@ -282,13 +272,13 @@ public class ContractMaterialImportPlugin extends AbstractFormPlugin {
indexVsMsgMap.put(rowNum, "" + (i + 1) + "行:物料单位不能为空或空字符串"); indexVsMsgMap.put(rowNum, "" + (i + 1) + "行:物料单位不能为空或空字符串");
} }
String name = (String) map.get("qeug_materialnames"); // 物料单位 // String name = (String) map.get("qeug_materialnames"); // 物料单位
String model = (String) map.get("qeug_importmodel"); // 物料规格 // String model = (String) map.get("qeug_importmodel")==null ? "":(String) map.get("qeug_importmodel"); // 物料规格
//
// 校验物料编码是否已经存在于当前页面的表格中 // // 校验物料编码是否已经存在于当前页面的表格中
if (existComb.contains(name.trim()+model.trim())) { // if (existComb.contains(name.trim()+model.trim())) {
indexVsMsgMap.put(rowNum, "" + (i + 1) + "行:物料+规格已存在,请勿重复导入"); // indexVsMsgMap.put(rowNum, "" + (i + 1) + "行:物料+规格已存在,请勿重复导入");
} // }
} }
return indexVsMsgMap; return indexVsMsgMap;
@ -309,4 +299,56 @@ public class ContractMaterialImportPlugin extends AbstractFormPlugin {
} }
return result; return result;
} }
/**
* 加载系统物料类型
* @return
*/
private HashSet<String> getSysMaterialType(){
HashSet<String> validMaterialTypes = new HashSet<>();
DynamicObject[] typeList = BusinessDataServiceHelper.load("bd_materialgroup", "id,name", null);
for (DynamicObject obj : typeList) {
validMaterialTypes.add(obj.getString("name"));
}
return validMaterialTypes;
}
/**
*加载映射表中默认物料类型名称
*/
private String getMapBillMaterialTypeName(){
String typeName="待确认";
DynamicObject contractType = (DynamicObject) this.getModel().getValue("contracttype");
if (contractType!=null){
//查找映射表
DynamicObject typeMap = BusinessDataServiceHelper.loadSingle("qeug_materialtypemap", (new QFilter("qeug_contracttype.id", QCP.equals, contractType.getPkValue())).toArray());
if (typeMap!=null){
//获取默认物料分类
DynamicObject materialTypeObj = typeMap.getDynamicObject("qeug_materialtype");
if (materialTypeObj!=null){
typeName = materialTypeObj.getString("name");
}
}
}
return typeName;
}
/**
* 获取已存在的物料名称+规格组合
* @return
*/
private Set<String> getExitMaterialArray(){
Set<String> existComb = new HashSet<>();
DynamicObjectCollection orderFormEntry = (DynamicObjectCollection) this.getModel().getValue("qeug_orderformentry");
if (orderFormEntry != null && !orderFormEntry.isEmpty()) {
for (DynamicObject dynamicObject : orderFormEntry) {
String name = dynamicObject.getString("qeug_materialnames");
String model = dynamicObject.getString("qeug_importmodel");
existComb.add(name.trim()+model.trim());
}
}
return existComb;
}
} }

View File

@ -84,6 +84,9 @@ public class MaterialSaveCarryNumberPlugin extends AbstractBillPlugIn implements
for (int i = 0; i < entryEntity.size(); i++) { for (int i = 0; i < entryEntity.size(); i++) {
DynamicObject material = entryEntity.get(i).getDynamicObject(materialIdLogotype);//物料-基础资料 DynamicObject material = entryEntity.get(i).getDynamicObject(materialIdLogotype);//物料-基础资料
String type = entryEntity.get(i).getString("qeug_materialtypeid.name");//物料分类 String type = entryEntity.get(i).getString("qeug_materialtypeid.name");//物料分类
if (type==null||"".equals(type)){
type=this.getMapBillMaterialTypeName();
}
String model = entryEntity.get(i).getString("qeug_importmodel");//规格型号 String model = entryEntity.get(i).getString("qeug_importmodel");//规格型号
String unit = entryEntity.get(i).getString("qeug_importunit");//规格型号 String unit = entryEntity.get(i).getString("qeug_importunit");//规格型号
String brand = entryEntity.get(i).getString("qeug_brand");//规格型号 String brand = entryEntity.get(i).getString("qeug_brand");//规格型号
@ -310,4 +313,21 @@ public class MaterialSaveCarryNumberPlugin extends AbstractBillPlugIn implements
} }
} }
} }
private String getMapBillMaterialTypeName(){
String typeName="待确认";
DynamicObject contractType = (DynamicObject) this.getModel().getValue("contracttype");
if (contractType!=null){
//查找映射表
DynamicObject typeMap = BusinessDataServiceHelper.loadSingle("qeug_materialtypemap", (new QFilter("qeug_contracttype.id", QCP.equals, contractType.getPkValue())).toArray());
if (typeMap!=null){
//获取默认物料分类
DynamicObject materialTypeObj = typeMap.getDynamicObject("qeug_materialtype");
if (materialTypeObj!=null){
typeName = materialTypeObj.getString("name");
}
}
}
return typeName;
}
} }