Pārlūkot izejas kodu

立项时,研发部需求数量,需要支持按不同系列不同语言拆分后填写

lvjs 1 mēnesi atpakaļ
vecāks
revīzija
f95bc1dce4

+ 57 - 18
src/main/java/com/malk/eastar/service/impl/EastarTbServiceImpl.java

@@ -137,6 +137,16 @@ public class EastarTbServiceImpl  implements EastarTbService {
         }else {
             tbProjectId = UtilMap.getString(UtilMap.getMap(recodList.get(0),"formData"),"textField_mecmytpo");
         }
+
+        // 获取【立项/项目台账】子表单【语言版本 - 数量拆分】数据 add by Jason 20260320 start
+        List<Map> projectSubDataLang = ydService.queryDetails(
+                YDParam.builder()
+                        .formInstanceId(formInstId)
+                        .formUuid(EastarParam.YD_FORMUUID_PROJECT)
+                        .tableFieldId("tableField_mn6vamoe").build()
+        );
+        // 获取【立项/项目台账】子表单【语言版本 - 数量拆分】数据 add by Jason 20260320 end
+
         // 订单数据
         List<UtilMap.assDetail> projectOrder=UtilMap.getAssFieldValue(data,"associationFormField_me2hylda_id");
         String orderFid= projectOrder.get(0).instanceId; // 项目任务类型
@@ -144,6 +154,7 @@ public class EastarTbServiceImpl  implements EastarTbService {
         List<Map> orderLangConf=UtilMap.getList(orderData,"tableField_meqqj4we");// 语言配置
         List<Map> xlConf=UtilMap.getList(orderData,"tableField_mesc7nvj");// 系列源配置
 
+
         // 子任务拆分数据
         List<Map> sonConfData= ydService.queryDetails(YDParam.builder().formInstanceId("FINST-X1B66Y81IUFY9U417XIUE99I8YV93HGMJ8WEMF").formUuid(EastarParam.YD_FORMUUID_SONCONF).tableFieldId("tableField_mew7d9f3").build());// 全品类配件表
         Map<String,Map<String,List<String>>>  sonConf= ConfigDataProcessor.processConfigData(sonConfData);
@@ -224,24 +235,30 @@ public class EastarTbServiceImpl  implements EastarTbService {
         String sonScenariofieldconfigId=_getTaskType(tbProjectId,"配件-子任务");
         String tasklistId=_getTaskList(tbProjectId,orderType+"项目");
         String stageId= tbTask.queryTaskStage(tbProjectId,tasklistId,"启动阶段");
+
+        /*
+            获取系列语言与研发部订单需求数量映射
+         */
+        Map<String,String> seriesLangDevNumMap = new HashMap<>();  //系列与研发部订单需求数量映射数据 add by Jason 20260320
+        String nameSeries;  //系列 add by Jason 20260320
+        String nameLang;    //语言  add by Jason 20260326
+        String devNum;  //研发部订单需求数量 add by Jason 20260320
+        for(Map projectSubRecordLang : projectSubDataLang) { //遍历【立项/项目台账】子表单【语言版本 - 数量拆分】数据
+            nameSeries = UtilMap.getString(projectSubRecordLang,"textField_mn6vamof");    //系列
+            nameLang = UtilMap.getString(projectSubRecordLang,"textField_mn6vamoh");    //语言
+            if(PublicUtil.isNull(nameLang)){
+                nameLang = "无";
+            }
+            devNum = UtilMap.getString(projectSubRecordLang,"numberField_mn6vamok");   //研发部订单需求数量
+            seriesLangDevNumMap.putIfAbsent(nameSeries + "_" + nameLang, devNum);
+        }
+
         // 全品类任务生成
         List<Map> table= ydService.queryDetails(YDParam.builder().formInstanceId(formInstId).formUuid(EastarParam.YD_FORMUUID_PROJECT).tableFieldId("tableField_mdy8x198").build());// 全品类配件表
         List<Map> recodTable = new ArrayList<>();
         List<String> jds=UtilMap.getList(data,"checkboxField_me9n37rs");
         Map<String,List<Map>> gysOrderData=new HashMap<>(); // 采购需求数据  按照供应商拆分BOM
-
-        Map<String,String> seriesDevNumMap = new HashMap<>();  //系列与研发部订单需求数量映射数据 add by Jason 20260320
-        String nameSeries;  //系列 add by Jason 20260320
-        String devNum;  //研发部订单需求数量 add by Jason 20260320
         for(Map map:table){
-            //获取系列与研发部订单需求数量映射 add by Jason 20260320 start
-            nameSeries = UtilMap.getString(map,"selectField_me2f7tw4");    //系列
-            devNum = UtilMap.getString(map,"numberField_mmke3fdc");   //研发部订单需求数量
-            if(seriesDevNumMap.get(nameSeries) == null){
-                seriesDevNumMap.put(nameSeries,devNum);
-            }
-            //获取系列与研发部订单需求数量映射 add by Jason 20260320 end
-
             Map taskMap=UtilMap.map("projectId, tasklistId, scenariofieldconfigId, stageId",tbProjectId,tasklistId,scenariofieldconfigId,stageId);
             taskMap.put("content",getValue(map,"selectField_me2f7tw4","-")+getValue(map,"textField_me2f7tvo","")); //系列 配件
             String gysName=UtilMap.getString(map,"textField_me2f7tvz");
@@ -264,9 +281,9 @@ public class EastarTbServiceImpl  implements EastarTbService {
                 }
             }
             if(isLang){ // 区分语言
-                result=saveTbTask(taskMap,orderLangConf,map,customfields,isLang,sonconf,sonScenariofieldconfigId,gysName,pId,pMainId,skuIdMap);
+                result=saveTbTask(taskMap,orderLangConf,map,customfields,isLang,sonconf,sonScenariofieldconfigId,gysName,pId,pMainId,skuIdMap,seriesLangDevNumMap);
             }else{
-                result=saveTbTask(taskMap,orderLangConf,map,customfields,isLang,sonconf,sonScenariofieldconfigId,gysName,pId,pMainId,skuIdMap);
+                result=saveTbTask(taskMap,orderLangConf,map,customfields,isLang,sonconf,sonScenariofieldconfigId,gysName,pId,pMainId,skuIdMap,seriesLangDevNumMap);
             }
             if(gysOrderData.containsKey(gysName)){
                 gysOrderData.get(gysName).addAll(result);
@@ -359,7 +376,7 @@ public class EastarTbServiceImpl  implements EastarTbService {
 //        生成包装任务:打样不需要生成包装
         if("大货".equals(orderType)){
             //seriesDevNumMap 系列与研发部订单需求数量映射数据 add by Jason 20260320
-            savePackTask(tbProjectId, orderLangConf, data, pName, pId, pMainId, projectOrder, mchDDIdMap, seriesDevNumMap);
+            savePackTask(tbProjectId, orderLangConf, data, pName, pId, pMainId, projectOrder, mchDDIdMap, seriesLangDevNumMap);
         }
 
 
@@ -369,9 +386,14 @@ public class EastarTbServiceImpl  implements EastarTbService {
         int numOfSetsAll;   //总套数
         for(Map orderSubRecordLang : orderLangConf){  //遍历子表单记录
             nameSeries = UtilMap.getString(orderSubRecordLang,"textField_meqqj4wa");    // 系列【语言版本 - 数量拆分】
+            nameLang = UtilMap.getString(orderSubRecordLang,"textField_meqqj4wb"); // 语言【语言版本 - 数量拆分】 add by Jason 20260326
             numOfSetsSeries = UtilMap.getInt(orderSubRecordLang,"numberField_meqqj4wd");    // 套数【语言版本 - 数量拆分】
             numOfSetsAll = 0;
-            devNum = seriesDevNumMap.get(nameSeries);
+            if(PublicUtil.isNull(nameLang)){
+                devNum = seriesLangDevNumMap.get(nameSeries+"_无");   //研发部订单需求数量
+            }else{
+                devNum = seriesLangDevNumMap.get(nameSeries+"_"+nameLang);   //研发部订单需求数量
+            }
             if(StringUtils.isNotEmpty(devNum)){
                 numOfSetsAll = numOfSetsSeries + Integer.parseInt(devNum);    // 总套数【语言版本 - 数量拆分】,总套数=套数+研发部订单数量,立项完成自动更新总套数
             }
@@ -397,19 +419,27 @@ public class EastarTbServiceImpl  implements EastarTbService {
     private List<Map> savePackTask(String tbProjectId, List <Map> orderLangConf,Map data,String pName,String pId,String pMainId,List projectOrder,Map mchDDIdMap,Map<String,String> seriesDevNumMap) {
         Map<String, List<Map>> packOrderData = new HashMap<>();
         String nameSeries;  //系列 add by Jason 20260320
+        String nameLang;    //语言 add by Jason 20260326
         String devNum;  //研发部订单需求数量 add by Jason 20260320
         int allSupplyNum;   //总采购数量 add by Jason 20260320
         for (Map orderMap : orderLangConf) {
             String supplier = UtilMap.getString(orderMap, "textField_mkp7yv76");
             String setsValue = UtilMap.getString(orderMap, "numberField_meqqj4wd");
+
+            nameLang = UtilMap.getString(orderMap,"textField_meqqj4wb"); // 语言【语言版本 - 数量拆分】 add by Jason 20260326
             //计算总采购数量 add by Jason 20260320 start
             nameSeries = UtilMap.getString(orderMap, "textField_meqqj4wa");   //系列
-            devNum = seriesDevNumMap.get(nameSeries);
+            if(PublicUtil.isNull(nameLang)){
+                devNum = seriesDevNumMap.get(nameSeries+"_无");
+            }else{
+                devNum = seriesDevNumMap.get(nameSeries+"_"+nameLang);
+            }
             allSupplyNum = 0;
             if(StringUtils.isNotEmpty(devNum) && StringUtils.isNotEmpty(setsValue)){
                 allSupplyNum = Integer.parseInt(devNum) + Integer.parseInt(setsValue);  //计算总采购数量
             }
             //计算总采购数量 add by Jason 20260320 end
+
             Map packTask = UtilMap.map(
                     "textField_mecmytpr, textField_mifp03eo, textField_mjr129o4, selectField_me2f7tw4, numberField_mkosp94h, numberField_mifp03el, " +
                             "numberField_mmmwu4cg, " + //研发部订单需求数量 add by Jason 20260312
@@ -455,7 +485,7 @@ public class EastarTbServiceImpl  implements EastarTbService {
         return value.length()==0?"":value+s;
     }
 
-    private List<Map> saveTbTask(Map taskMap,List<Map> orderConf,Map cgDetail,List<Map> customfields,boolean isLang,List<String> sonconf,String sonScenariofieldconfigId,String gysName,String pId,String pMainId,Map skuIdMap){
+    private List<Map> saveTbTask(Map taskMap,List<Map> orderConf,Map cgDetail,List<Map> customfields,boolean isLang,List<String> sonconf,String sonScenariofieldconfigId,String gysName,String pId,String pMainId,Map skuIdMap,Map<String,String> seriesLangDevNumMap){
         log.info("创建任务:{},是否区分语言{}",taskMap.get("content"),isLang);
         List<Map> recodTable=new ArrayList<>();
         if (PublicUtil.isNull(taskMap,"executorId")){
@@ -475,6 +505,15 @@ public class EastarTbServiceImpl  implements EastarTbService {
             skuId=PublicUtil.isNull(skuId)?"000":skuId;
             String sku="2"+skuId+UtilMap.getString_first(map,"textField_mizmmf8h","textField_mizmmf8m")+reportId.substring(reportId.length()-2);// sku 添加系列编号及文档编号
             String lang=UtilMap.getString(map,"textField_meqqj4wb"); // 语言
+
+            //获取系列语言对应的研发部订单需求数量 add by Jason 20260326 start
+            if(PublicUtil.isNull(lang)){
+                rdNum = seriesLangDevNumMap.get(confSeries+"_无");   //研发部订单需求数量
+            }else{
+                rdNum = seriesLangDevNumMap.get(confSeries+"_"+lang);   //研发部订单需求数量
+            }
+            //获取系列语言对应的研发部订单需求数量 add by Jason 20260326 end
+
             if(isLang){
                 if(PublicUtil.isNull(lang)){
                     lang="不区分";

+ 58 - 31
src/main/java/com/malk/eastar/service/impl/YidaServiceImpl.java

@@ -92,6 +92,12 @@ public class YidaServiceImpl implements YidaService {
                         .formUuid(EastarParam.YD_FORMUUID_PROJECT)
                         .tableFieldId("tableField_mdy8x198").build()
         );  // 【立项/项目台账】子表单【全品类】,旧变量名 -> table
+        List<Map> projectSubDataLang = ydService.queryDetails(
+                YDParam.builder()
+                        .formInstanceId(formInstId)
+                        .formUuid(EastarParam.YD_FORMUUID_PROJECT)
+                        .tableFieldId("tableField_mn6vamoe").build()
+        );  // 【立项/项目台账】子表单【语言版本 - 数量拆分】
         List<Map> projectSubDataBuyer = UtilMap.getList(
                 projectData,"tableField_mec6juik"
         );  // 【立项/项目台账】子表单【采购跟单明细】,旧变量名 -> mchTable
@@ -205,6 +211,21 @@ public class YidaServiceImpl implements YidaService {
 //        Set<String> userIdSet = new HashSet<>(userIdList);    //立项相关成员userid列表(不重复),旧变量名 -> set
 //        userIdList = new ArrayList<>(userIdSet);
 
+        /*
+            获取系列语言与研发部订单需求数量映射
+         */
+        Map<String,String> seriesLangDevNumMap = new HashMap<>();  //系列语言与研发部订单需求数量映射数据
+        String devNum;  //研发部订单需求数量
+        for(Map projectSubRecordLang : projectSubDataLang) { //遍历【立项/项目台账】子表单【语言版本 - 数量拆分】数据
+            nameSeries = UtilMap.getString(projectSubRecordLang,"textField_mn6vamof");    //系列
+            nameLang = UtilMap.getString(projectSubRecordLang,"textField_mn6vamoh");    //语言
+            if(PublicUtil.isNull(nameLang)){
+                nameLang = "无";
+            }
+            devNum = UtilMap.getString(projectSubRecordLang,"numberField_mn6vamok");   //研发部订单需求数量
+            seriesLangDevNumMap.putIfAbsent(nameSeries + "_" + nameLang, devNum);
+        }
+
         /*
             获取所有配件记录
          */
@@ -216,17 +237,7 @@ public class YidaServiceImpl implements YidaService {
         Map<String,List<String>> partsConfMapByMajorType; //配件参数信息(某配件大类),旧变量名 -> sonconfs
         List<String> phaseDeliverablesList; //阶段产出物列表
         List<String> partsMajorTypePhaseDeliverables;   //配件大类与产出物列表,旧变量名 -> sonconf
-        Map<String,String> seriesDevNumMap = new HashMap<>();  //系列与研发部订单需求数量映射数据
-        String devNum;  //研发部订单需求数量
         for(Map projectSubRecordParts : projectSubDataParts){ //遍历【立项/项目台账】子表单【全品类】数据,旧变量名 -> map
-            /*
-                获取系列与研发部订单需求数量映射
-             */
-            nameSeries = UtilMap.getString(projectSubRecordParts,"selectField_me2f7tw4");    //系列
-            devNum = UtilMap.getString(projectSubRecordParts,"numberField_mmke3fdc");   //研发部订单需求数量
-            if(seriesDevNumMap.get(nameSeries) == null){
-                seriesDevNumMap.put(nameSeries,devNum);
-            }
             /*
                 获取配件大类与产出物列表
              */
@@ -235,7 +246,7 @@ public class YidaServiceImpl implements YidaService {
             partsMajorType = UtilMap.getString(projectSubRecordParts,"selectField_me2f7tvk");
             partsConfMapByMajorType = partsConfMap.get(partsMajorType);
             partsMajorTypePhaseDeliverables = new ArrayList<>();
-            if(partsConfMapByMajorType!=null && partsConfMapByMajorType.size()>0){
+            if(partsConfMapByMajorType!=null && !partsConfMapByMajorType.isEmpty()){
                 for(String projectPhase : projectPhaseList){ //遍历项目包含阶段
                     if(partsConfMapByMajorType.containsKey(projectPhase)){
                         phaseDeliverablesList = partsConfMapByMajorType.get(projectPhase);
@@ -248,7 +259,7 @@ public class YidaServiceImpl implements YidaService {
             /*
                 获取所有配件记录
              */
-            partsRecordList = getPartsRecordList(null,orderSubDataLang,projectSubRecordParts,null,isMultiLang,partsMajorTypePhaseDeliverables,null,supplier,projectCode,leadsCode,partsTypeNameCodeMap);
+            partsRecordList = getPartsRecordList(null,orderSubDataLang,projectSubRecordParts,null,isMultiLang,partsMajorTypePhaseDeliverables,null,supplier,projectCode,leadsCode,partsTypeNameCodeMap,seriesLangDevNumMap);
             /*
                 按供应商对配件记录进行分组
              */
@@ -383,13 +394,13 @@ public class YidaServiceImpl implements YidaService {
                         【配件任务表】 FORM-B9CBFB34DB3249C483415EF641202AC199J9
                      */
                     System.out.println("保存配件任务数据("+projectPhase+"):"+ JSONObject.toJSONString(partsTaskData));
-//                    ydClient.operateData(
-//                            YDParam.builder()
-//                                    .formUuid(EastarParam.YD_FORMUUID_CGTASK)
-//                                    .formDataJson(JSONObject.toJSONString(partsTaskData))
-//                                    .build(),
-//                            YDConf.FORM_OPERATION.create
-//                    );
+                    ydClient.operateData(
+                            YDParam.builder()
+                                    .formUuid(EastarParam.YD_FORMUUID_CGTASK)
+                                    .formDataJson(JSONObject.toJSONString(partsTaskData))
+                                    .build(),
+                            YDConf.FORM_OPERATION.create
+                    );
                 }
             }
         }
@@ -398,7 +409,7 @@ public class YidaServiceImpl implements YidaService {
             生成包装任务(打样不需要生成包装)
          */
         if("大货".equals(projectOrderType)){
-            savePartsPackTaskData(null, orderSubDataLang, projectData, projectName, projectCode, leadsCode, projectDataAssOrder, supplierBuyerMap, seriesDevNumMap);
+            savePartsPackTaskData(null, orderSubDataLang, projectData, projectName, projectCode, leadsCode, projectDataAssOrder, supplierBuyerMap, seriesLangDevNumMap);
         }
 
         /*
@@ -407,9 +418,14 @@ public class YidaServiceImpl implements YidaService {
         List<Map> orderSubDataLangNew = new ArrayList<>();
         for(Map orderSubRecordLang : orderSubDataLang){  //遍历子表单记录
             nameSeries = UtilMap.getString(orderSubRecordLang,"textField_meqqj4wa");    // 系列【语言版本 - 数量拆分】
+            nameLang = UtilMap.getString(orderSubRecordLang,"textField_meqqj4wb"); // 语言【语言版本 - 数量拆分】
             numOfSetsSeries = UtilMap.getInt(orderSubRecordLang,"numberField_meqqj4wd");    // 套数【语言版本 - 数量拆分】
             numOfSetsAll = 0;
-            devNum = seriesDevNumMap.get(nameSeries);
+            if(PublicUtil.isNull(nameLang)){
+                devNum = seriesLangDevNumMap.get(nameSeries+"_无");   //研发部订单需求数量
+            }else{
+                devNum = seriesLangDevNumMap.get(nameSeries+"_"+nameLang);   //研发部订单需求数量
+            }
             if(StringUtils.isNotEmpty(devNum)){
                 numOfSetsAll = numOfSetsSeries + Integer.parseInt(devNum);    // 总套数【语言版本 - 数量拆分】,总套数=套数+研发部订单数量,立项完成自动更新总套数
             }
@@ -443,7 +459,8 @@ public class YidaServiceImpl implements YidaService {
             String supplier,    //供应商,旧变量名 -> gysName
             String projectCode, // 项目编号,旧变量名 -> pId
             String leadsCode, // 线索编码,旧变量名 -> pMainId
-            Map partsTypeNameCodeMap    //品类名称与配件编号(这里的配件编号应该是品类编码)映射,旧变量名 -> skuIdMap
+            Map partsTypeNameCodeMap,    //品类名称与配件编号(这里的配件编号应该是品类编码)映射,旧变量名 -> skuIdMap
+            Map<String,String> seriesLangDevNumMap  //系列语言与研发部订单需求数量映射数据
     ){
         List<Map> partsRecordList = new ArrayList<>();    //所有配件记录
         String nameSeries;  //系列,旧变量名 -> confSeries
@@ -475,6 +492,11 @@ public class YidaServiceImpl implements YidaService {
                     + UtilMap.getString_first(orderSubRecordLangOrSeries,"textField_mizmmf8h","textField_mizmmf8m")   //系列编号【语言版本 - 数量拆分】 或 系列编号【系列套数】
                     + docSN.substring(docSN.length()-2);  // sku 添加系列编号及文档编号
             nameLang = UtilMap.getString(orderSubRecordLangOrSeries,"textField_meqqj4wb"); // 语言【语言版本 - 数量拆分】,旧变量名 -> lang
+            if(PublicUtil.isNull(nameLang)){
+                devNum = seriesLangDevNumMap.get(nameSeries+"_无");   //研发部订单需求数量
+            }else{
+                devNum = seriesLangDevNumMap.get(nameSeries+"_"+nameLang);   //研发部订单需求数量
+            }
             if(isMultiLang){ // 是否存在多种语言版本
                 if(PublicUtil.isNull(nameLang)){
                     nameLang = "不区分";
@@ -491,7 +513,6 @@ public class YidaServiceImpl implements YidaService {
                     "numberField_meqqj4wd", // 套数【语言版本 - 数量拆分】
                     "numberField_mesc7nvi"  // 套数【系列套数】
             ); // 数量
-            devNum = UtilMap.getString(projectSubRecordParts,"numberField_mmke3fdc");   //研发部订单需求数量
             partsName = nameSeries + "-" + partsTypeName;
             /*
                 复制【立项/项目台账】子表单【全品类】记录为配件记录,并补充部分字段
@@ -550,13 +571,19 @@ public class YidaServiceImpl implements YidaService {
         String supplier;    //供应商
         String numOfSets;   //套数,旧变量名 -> setsValue
         String nameSeries;  //系列
+        String nameLang;    //语言
         String devNum;  //研发部订单需求数量
         int allSupplyNum;   //总采购数量
         for (Map orderSubRecordLang : orderSubDataLang) { //遍历子表单,旧变量名 -> orderMap
             supplier = UtilMap.getString(orderSubRecordLang, "textField_mkp7yv76"); //供应商
             numOfSets = UtilMap.getString(orderSubRecordLang, "numberField_meqqj4wd");  //套数
             nameSeries = UtilMap.getString(orderSubRecordLang, "textField_meqqj4wa");   //系列
-            devNum = seriesDevNumMap.get(nameSeries);
+            nameLang = UtilMap.getString(orderSubRecordLang,"textField_meqqj4wb"); // 语言【语言版本 - 数量拆分】
+            if(PublicUtil.isNull(nameLang)){
+                devNum = seriesDevNumMap.get(nameSeries+"_无");
+            }else{
+                devNum = seriesDevNumMap.get(nameSeries+"_"+nameLang);
+            }
             allSupplyNum = 0;
             if(StringUtils.isNotEmpty(devNum) && StringUtils.isNotEmpty(numOfSets)){
                 allSupplyNum = Integer.parseInt(devNum) + Integer.parseInt(numOfSets);  //计算总采购数量
@@ -638,13 +665,13 @@ public class YidaServiceImpl implements YidaService {
             }
             partsTaskData.put("textField_mmikzhlb","包装"); //里程碑
             System.out.println("保存配件任务数据(包装):"+ JSONObject.toJSONString(partsTaskData));
-//            ydClient.operateData(
-//                    YDParam.builder()
-//                            .formUuid(EastarParam.YD_FORMUUID_CGTASK)
-//                            .formDataJson(JSONObject.toJSONString(partsTaskData))
-//                            .build(),
-//                    YDConf.FORM_OPERATION.create
-//            );
+            ydClient.operateData(
+                    YDParam.builder()
+                            .formUuid(EastarParam.YD_FORMUUID_CGTASK)
+                            .formDataJson(JSONObject.toJSONString(partsTaskData))
+                            .build(),
+                    YDConf.FORM_OPERATION.create
+            );
         }
 
         return null;