物料导入优化
This commit is contained in:
		
							parent
							
								
									a14577ebd4
								
							
						
					
					
						commit
						61065050b0
					
				| 
						 | 
				
			
			@ -127,10 +127,10 @@ public class ContractMaterialImportPlugin extends AbstractFormPlugin {
 | 
			
		|||
 | 
			
		||||
    private String checkMaterial(String materialName, String materialModel) {
 | 
			
		||||
        QFilter qFilter = new QFilter("name", QCP.equals, materialName);
 | 
			
		||||
        qFilter.and("modelnum", QCP.equals, materialModel);
 | 
			
		||||
        DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("bd_material", qFilter.toArray());
 | 
			
		||||
        if (dynamicObject != null) {
 | 
			
		||||
            return dynamicObject.getString("number");
 | 
			
		||||
        qFilter.and("modelnum", QCP.equals, materialModel==null ? "":materialModel);
 | 
			
		||||
        DynamicObject[] dynamicObject = BusinessDataServiceHelper.load("bd_material", "id,number",qFilter.toArray());
 | 
			
		||||
        if (dynamicObject.length!=0){
 | 
			
		||||
            return dynamicObject[0].getString("number");
 | 
			
		||||
        }
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -150,25 +150,16 @@ public class ContractMaterialImportPlugin extends AbstractFormPlugin {
 | 
			
		|||
    public void beforeImportEntry(BeforeImportEntryEventArgs e) {
 | 
			
		||||
        super.beforeImportEntry(e);
 | 
			
		||||
        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();
 | 
			
		||||
            Set<String> existComb = new HashSet<>();
 | 
			
		||||
 | 
			
		||||
            // 提前加载所有系统物料类型
 | 
			
		||||
            Set<String> validMaterialTypes = this.getSysMaterialType();
 | 
			
		||||
 | 
			
		||||
            //加载映射表中默认物料类型名称
 | 
			
		||||
            String typeName=this.getMapBillMaterialTypeName();
 | 
			
		||||
 | 
			
		||||
            // 获取已存在的物料名称+规格组合
 | 
			
		||||
            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());
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            //Set<String> existComb = this.getExitMaterialArray();
 | 
			
		||||
 | 
			
		||||
            // 处理导入数据
 | 
			
		||||
            HashMap itemEntry = (HashMap) e.getSource();
 | 
			
		||||
| 
						 | 
				
			
			@ -203,7 +194,6 @@ public class ContractMaterialImportPlugin extends AbstractFormPlugin {
 | 
			
		|||
                    importMaterial.setMaterialNumber(material.getString("number"));
 | 
			
		||||
                }
 | 
			
		||||
                //物料类型校验
 | 
			
		||||
                String typeName="待分类";
 | 
			
		||||
                JSONObject materialType = (JSONObject) map.get("qeug_materialtypeid");//物料分类
 | 
			
		||||
                if (materialType!=null && validMaterialTypes.contains(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();
 | 
			
		||||
                Map<String, List<Object>> logMap = e.getEntryDataMap();
 | 
			
		||||
                ImportLogger importLogger = (ImportLogger) logMap.get(entryName).get(0);
 | 
			
		||||
| 
						 | 
				
			
			@ -260,10 +250,10 @@ public class ContractMaterialImportPlugin extends AbstractFormPlugin {
 | 
			
		|||
    /**
 | 
			
		||||
     * 校验物料名称、物料单位
 | 
			
		||||
     * @param entryDataList
 | 
			
		||||
     * @param existComb
 | 
			
		||||
     * @param
 | 
			
		||||
     * @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<>();
 | 
			
		||||
 | 
			
		||||
        for (int i = 0; i < entryDataList.size(); i++) {
 | 
			
		||||
| 
						 | 
				
			
			@ -282,13 +272,13 @@ public class ContractMaterialImportPlugin extends AbstractFormPlugin {
 | 
			
		|||
                indexVsMsgMap.put(rowNum, "第" + (i + 1) + "行:物料单位不能为空或空字符串");
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            String name = (String) map.get("qeug_materialnames"); // 物料单位
 | 
			
		||||
            String model = (String) map.get("qeug_importmodel"); // 物料规格
 | 
			
		||||
 | 
			
		||||
            // 校验物料编码是否已经存在于当前页面的表格中
 | 
			
		||||
            if (existComb.contains(name.trim()+model.trim())) {
 | 
			
		||||
                indexVsMsgMap.put(rowNum, "第" + (i + 1) + "行:物料+规格已存在,请勿重复导入");
 | 
			
		||||
            }
 | 
			
		||||
//            String name = (String) map.get("qeug_materialnames"); // 物料单位
 | 
			
		||||
//            String model = (String) map.get("qeug_importmodel")==null ? "":(String) map.get("qeug_importmodel"); // 物料规格
 | 
			
		||||
//
 | 
			
		||||
//            // 校验物料编码是否已经存在于当前页面的表格中
 | 
			
		||||
//            if (existComb.contains(name.trim()+model.trim())) {
 | 
			
		||||
//                indexVsMsgMap.put(rowNum, "第" + (i + 1) + "行:物料+规格已存在,请勿重复导入");
 | 
			
		||||
//            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return indexVsMsgMap;
 | 
			
		||||
| 
						 | 
				
			
			@ -309,4 +299,56 @@ public class ContractMaterialImportPlugin extends AbstractFormPlugin {
 | 
			
		|||
        }
 | 
			
		||||
        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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -84,6 +84,9 @@ public class MaterialSaveCarryNumberPlugin extends AbstractBillPlugIn implements
 | 
			
		|||
            for (int i = 0; i < entryEntity.size(); i++) {
 | 
			
		||||
                DynamicObject material = entryEntity.get(i).getDynamicObject(materialIdLogotype);//物料-基础资料
 | 
			
		||||
                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 unit = entryEntity.get(i).getString("qeug_importunit");//规格型号
 | 
			
		||||
                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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue