ht 4 hete%!(EXTRA string=óta)
szülő
commit
ecd3ab5699

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 41 - 63
ERP-YIDA-PUSH-API.md


+ 0 - 1
pom.xml

@@ -21,7 +21,6 @@
         <java.version>1.8</java.version>
         <maven.compiler.source>1.8</maven.compiler.source>
         <maven.compiler.target>1.8</maven.compiler.target>
-        <maven.compiler.release>8</maven.compiler.release>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 

+ 1 - 0
src/main/java/com/malk/minglei/service/impl/yida/Apmt100FormPushHandler.java

@@ -137,6 +137,7 @@ public class Apmt100FormPushHandler implements YidaFormPushHandler {
 
     private static Map<String, String> createErpFieldMapping() {
         Map<String, String> mapping = new LinkedHashMap<String, String>();
+        mapping.put("docno", "textField_muyz41ss");
         mapping.put("sqlx", APPLY_TYPE_FIELD_ID);
         mapping.put("gysmc", SUPPLIER_NAME_FIELD_ID);
         mapping.put("gysbm", SUPPLIER_CODE_FIELD_ID);

+ 1 - 0
src/main/java/com/malk/minglei/service/impl/yida/Asft800FormPushHandler.java

@@ -25,6 +25,7 @@ import java.util.Map;
 @Service
 public class
 
+    //包装工单变更审批流程
 Asft800FormPushHandler implements YidaFormPushHandler {
 
     public static final String TYPE = "asft800";

+ 48 - 31
src/main/java/com/malk/minglei/service/impl/yida/MlWorkOrderCraftPriceFormPushHandler.java

@@ -28,11 +28,12 @@ import java.util.Map;
 @Service
 public class MlWorkOrderCraftPriceFormPushHandler implements YidaFormPushHandler {
 
+    public static final String TYPE = "csfp340";
+
     private static final Logger LOGGER = LoggerFactory.getLogger(MlWorkOrderCraftPriceFormPushHandler.class);
     private static final String START_PROCESS_ENDPOINT = "/v1.0/yida/processes/instances/start";
     private static final String FORM_NAME = "ML-工单工艺工价审定";
     private static final String FORM_UUID = "FORM-4403B45A7F184CB79088FCDAFD2FD925LZ3K";
-    public static final String TYPE = FORM_UUID;
     private static final String PROCESS_CODE = "TPROC--WG966BA1VWF8Q1K4OGF8H9KW47RR3ZREH0YSM2";
     private static final String DEFAULT_ORIGINATOR_USER_ID = "41603502201288023";
 
@@ -148,35 +149,41 @@ public class MlWorkOrderCraftPriceFormPushHandler implements YidaFormPushHandler
 
     private Map<String, Object> toYidaFormData(ErpYidaPushRequest request, String operatorUserId) {
         ErpYidaPushMainData mainData = request.getMainData();
+        Map<String, Object> mainFields = toMainDataMap(mainData);
         Map<String, Object> detail = toDetailRecord(request.getDetailData());
+        Object workOrderNo = firstNonBlank(mainFields.get("sfaadocno"),
+                value(detail, "工单号", "workOrderNo", "gdh"));
+        String title = isBlank(workOrderNo) ? null : FORM_NAME + "-" + toText(workOrderNo);
 
         Map<String, Object> formData = new LinkedHashMap<String, Object>();
-        putIfNotBlank(formData, TITLE_FIELD_ID, firstNonBlank(value(detail, "标题", "title", "dataTitle"), value(detail, "工单号", "workOrderNo", "gdh")));
+        putIfNotBlank(formData, TITLE_FIELD_ID, firstNonBlank(title, value(detail, "标题", "title", "dataTitle")));
         putIfNotBlank(formData, APPLICANT_FIELD_ID, toStringList(operatorUserId, null));
-        putIfNotBlank(formData, COMPANY_CODE_FIELD_ID, firstNonBlank(mainData == null ? null : mainData.getGs(), value(detail, "申请公司", "applyCompany", "company", "gs", "companyCode")));
-        putIfNotBlank(formData, DEPARTMENT_FIELD_ID, toStringList(firstNonBlank(mainData == null ? null : mainData.getBm(), value(detail, "申请部门", "applyDepartment", "department", "deptId")), null));
-        putIfNotBlank(formData, APPLY_DATE_FIELD_ID, toDateMillis(firstNonBlank(value(detail, "申请日期", "applyDate", "date", "rq"), mainData == null ? null : mainData.getRq())));
+        putIfNotBlank(formData, COMPANY_CODE_FIELD_ID, firstNonBlank(mainFields.get("gs"), value(detail, "申请公司", "applyCompany", "company", "gs", "companyCode")));
+        putIfNotBlank(formData, DEPARTMENT_FIELD_ID, toStringList(firstNonBlank(mainFields.get("bm"), value(detail, "申请部门", "applyDepartment", "department", "deptId")), null));
+        putIfNotBlank(formData, APPLY_DATE_FIELD_ID, toDateMillis(firstNonBlank(value(detail, "申请日期", "applyDate", "date", "rq"), mainFields.get("rq"))));
         putIfNotBlank(formData, APPLICANT_POSITION_FIELD_ID, value(detail, "申请人职位", "applicantPosition", "position"));
         putIfNotBlank(formData, MOBILE_FIELD_ID, value(detail, "手机号", "mobile", "phone"));
-        putIfNotBlank(formData, FORM_TITLE_FIELD_ID, firstNonBlank(value(detail, "表单标题", "formTitle"), value(detail, "标题", "title", "dataTitle"), value(detail, "工单号", "workOrderNo", "gdh")));
-        putIfNotBlank(formData, WORK_ORDER_NO_FIELD_ID, value(detail, "工单号", "workOrderNo", "gdh", "workOrderCode"));
-        putIfNotBlank(formData, PRODUCTION_ORDER_FIELD_ID, value(detail, "生产令", "productionOrder", "scl", "productionNo"));
-        putIfNotBlank(formData, PRODUCTION_MATERIAL_FIELD_ID, value(detail, "生产料号", "productionMaterial", "productionItemCode", "sclh"));
-        putIfNotBlank(formData, ITEM_NAME_FIELD_ID, value(detail, "品名", "itemName", "pm", "productName"));
-        putIfNotBlank(formData, SPECIFICATION_FIELD_ID, value(detail, "规格", "specification", "spec", "gg"));
-        putIfNotBlank(formData, ASSEMBLY_PACKAGING_FIELD_ID, value(detail, "组装|包装", "assemblyPackaging", "zzbz", "assemblyOrPackaging"));
+        putIfNotBlank(formData, FORM_TITLE_FIELD_ID, firstNonBlank(title, value(detail, "表单标题", "formTitle"), value(detail, "标题", "title", "dataTitle")));
+        putIfNotBlank(formData, WORK_ORDER_NO_FIELD_ID, firstNonBlank(mainFields.get("sfaadocno"), value(detail, "工单号", "workOrderNo", "gdh", "workOrderCode")));
+        putIfNotBlank(formData, PRODUCTION_ORDER_FIELD_ID, firstNonBlank(mainFields.get("sfaaud009"), value(detail, "生产令", "productionOrder", "scl", "productionNo")));
+        putIfNotBlank(formData, PRODUCTION_MATERIAL_FIELD_ID, firstNonBlank(mainFields.get("sfaa010"), value(detail, "生产料号", "productionMaterial", "productionItemCode", "sclh")));
+        putIfNotBlank(formData, ITEM_NAME_FIELD_ID, firstNonBlank(mainFields.get("imaal003"), value(detail, "品名", "itemName", "pm", "productName")));
+        putIfNotBlank(formData, SPECIFICATION_FIELD_ID, firstNonBlank(mainFields.get("imaal004"), value(detail, "规格", "specification", "spec", "gg")));
+        putIfNotBlank(formData, ASSEMBLY_PACKAGING_FIELD_ID, firstNonBlank(mainFields.get("zzbz"), value(detail, "组装|包装", "assemblyPackaging", "zzbz", "assemblyOrPackaging")));
         putStructuredAssociation(formData, PACKAGING_METHOD_FIELD_ID, value(detail, "包装方式", "packagingMethod"));
-        putIfNotBlank(formData, FIXED_PRICE_FIELD_ID, toDecimal(value(detail, "固定工价", "fixedPrice", "gdgj")));
-        putIfNotBlank(formData, TOTAL_UNIT_PRICE_FIELD_ID, toDecimal(value(detail, "总单位工价", "totalUnitPrice", "zdwgj")));
+        putIfNotBlank(formData, FIXED_PRICE_FIELD_ID, toDecimal(firstNonBlank(mainFields.get("cjzg"), value(detail, "固定工价", "fixedPrice", "cjzg", "gdgj"))));
+        putIfNotBlank(formData, TOTAL_UNIT_PRICE_FIELD_ID, toDecimal(firstNonBlank(mainFields.get("gdgj"), value(detail, "总单位工价", "totalUnitPrice", "gdgj", "zdwgj"))));
+        putIfNotBlank(formData, MATERIAL_T100_ID_FIELD_ID, mainFields.get("t100id"));
+        putIfNotBlank(formData, MATERIAL_ENTERPRISE_NO_FIELD_ID, mainFields.get("sfaaent"));
 
         List<Map<String, Object>> processRows = toProcessRows(firstNonNull(
-                detail.get("明细表1"), detail.get("processData"), detail.get("processList"), detail.get("gongxuData"), detail.get("detailData1"), detail.get("detailData")));
+                detail.get("明细表1"), detail.get("processData"), detail.get("processList"), detail.get("gongxuData"), detail.get("detailData")));
         if (!processRows.isEmpty()) {
             formData.put(PROCESS_TABLE_FIELD_ID, processRows);
         }
 
         List<Map<String, Object>> materialRows = toMaterialRows(firstNonNull(
-                detail.get("明细表2"), detail.get("materialData"), detail.get("materialList"), detail.get("bomData"), detail.get("bomList"), detail.get("detailData2")));
+                detail.get("明细表2"), detail.get("materialData"), detail.get("materialList"), detail.get("bomData"), detail.get("bomList"), detail.get("detailData1"), detail.get("detailData2")));
         if (!materialRows.isEmpty()) {
             formData.put(MATERIAL_TABLE_FIELD_ID, materialRows);
         }
@@ -214,10 +221,10 @@ public class MlWorkOrderCraftPriceFormPushHandler implements YidaFormPushHandler
                 continue;
             }
             Map<String, Object> row = new LinkedHashMap<String, Object>();
-            putIfNotBlank(row, MATERIAL_SEQ_FIELD_ID, value(source, "项次", "seq", "xc"));
-            putIfNotBlank(row, MATERIAL_CODE_FIELD_ID, value(source, "料号", "materialCode", "lh"));
-            putIfNotBlank(row, MATERIAL_NAME_FIELD_ID, value(source, "品名", "materialName", "pm", "name"));
-            putIfNotBlank(row, MATERIAL_SPECIFICATION_FIELD_ID, value(source, "规格", "specification", "spec", "gg"));
+            putIfNotBlank(row, MATERIAL_SEQ_FIELD_ID, value(source, "项次", "sfbaseq", "seq", "xc"));
+            putIfNotBlank(row, MATERIAL_CODE_FIELD_ID, value(source, "料号", "sfba006", "materialCode", "lh"));
+            putIfNotBlank(row, MATERIAL_NAME_FIELD_ID, value(source, "品名", "imaal003", "materialName", "pm", "name"));
+            putIfNotBlank(row, MATERIAL_SPECIFICATION_FIELD_ID, value(source, "规格", "imaal004", "specification", "spec", "gg"));
             putIfNotBlank(row, MATERIAL_USAGE_FIELD_ID, value(source, "用量", "usage", "yl"));
             putIfNotBlank(row, MATERIAL_T100_ID_FIELD_ID, value(source, "t100id", "t100Id"));
             putIfNotBlank(row, MATERIAL_LINE_LEADER_FIELD_ID, value(source, "车间线长", "lineLeader", "cjxz"));
@@ -267,22 +274,17 @@ public class MlWorkOrderCraftPriceFormPushHandler implements YidaFormPushHandler
         return null;
     }
 
-    private Object firstNonNull(Object first, Object second, Object third, Object fourth, Object fifth, Object sixth) {
+    private Object firstNonNull(Object first, Object... others) {
         if (first != null) {
             return first;
         }
-        if (second != null) {
-            return second;
-        }
-        if (third != null) {
-            return third;
-        }
-        if (fourth != null) {
-            return fourth;
+        for (Object other : others) {
+            if (other != null) {
+                return other;
+            }
         }
-        return fifth == null ? sixth : fifth;
+        return null;
     }
-
     private List<?> toList(Object value) {
         if (value instanceof List) {
             return (List<?>) value;
@@ -385,6 +387,21 @@ public class MlWorkOrderCraftPriceFormPushHandler implements YidaFormPushHandler
         return detail;
     }
 
+    private Map<String, Object> toMainDataMap(ErpYidaPushMainData mainData) {
+        if (mainData == null) {
+            return Collections.emptyMap();
+        }
+        Map<String, Object> result = new LinkedHashMap<String, Object>();
+        putIfNotBlank(result, "rq", mainData.getRq());
+        putIfNotBlank(result, "bm", mainData.getBm());
+        putIfNotBlank(result, "tjr", mainData.getTjr());
+        putIfNotBlank(result, "gs", mainData.getGs());
+        putIfNotBlank(result, "t100id", mainData.getT100id());
+        putIfNotBlank(result, "ent", mainData.getEnt());
+        putIfNotBlank(result, "t100bm", mainData.getT100bm());
+        result.putAll(mainData.getExtraFields());
+        return result;
+    }
     private boolean isBlank(Object value) {
         if (value == null) {
             return true;

+ 19 - 6
src/test/java/com/malk/minglei/service/impl/yida/MlWorkOrderCraftPriceFormPushHandlerTest.java

@@ -44,7 +44,17 @@ class MlWorkOrderCraftPriceFormPushHandlerTest {
         ErpYidaPushMainData mainData = new ErpYidaPushMainData();
         mainData.setRq("1799337600000");
         mainData.setGs("浙江明磊锂能源科技股份有限公司");
+        mainData.setT100id("ML");
         mainData.setBm("123456");
+        mainData.setExtraField("sfaadocno", "GD-001");
+        mainData.setExtraField("sfaaud009", "MO-001");
+        mainData.setExtraField("sfaa010", "ITEM-001");
+        mainData.setExtraField("imaal003", "电池包");
+        mainData.setExtraField("imaal004", "24V");
+        mainData.setExtraField("zzbz", "组装");
+        mainData.setExtraField("cjzg", "10.5");
+        mainData.setExtraField("gdgj", "17.5");
+        mainData.setExtraField("sfaaent", "87");
 
         Map<String, Object> processRow = new LinkedHashMap<String, Object>();
         processRow.put("工序编号", "GX-001");
@@ -77,10 +87,11 @@ class MlWorkOrderCraftPriceFormPushHandlerTest {
         detailRow.put("固定工价", "10.5");
         detailRow.put("总单位工价", "17.5");
         detailRow.put("明细表1", Collections.singletonList(processRow));
-        detailRow.put("明细表2", Collections.singletonList(materialRow));
+
 
         Map<String, Object> detailData = new LinkedHashMap<String, Object>();
         detailData.put("detailData", Collections.singletonList(detailRow));
+        detailData.put("detailData1", Collections.singletonList(materialRow));
 
         ErpYidaPushRequest request = new ErpYidaPushRequest();
         request.setType(MlWorkOrderCraftPriceFormPushHandler.TYPE);
@@ -90,7 +101,7 @@ class MlWorkOrderCraftPriceFormPushHandlerTest {
 
         MlWorkOrderCraftPriceFormPushHandler handler = new MlWorkOrderCraftPriceFormPushHandler(yidaClient, ddConf, applications);
 
-        assertEquals(Collections.singletonList("FORM-4403B45A7F184CB79088FCDAFD2FD925LZ3K"), handler.getTypes());
+        assertEquals(Collections.singletonList("csfp340"), handler.getTypes());
         assertEquals("process-instance-1", handler.push(request));
 
         ArgumentCaptor<Map> bodyCaptor = ArgumentCaptor.forClass(Map.class);
@@ -103,12 +114,12 @@ class MlWorkOrderCraftPriceFormPushHandlerTest {
         assertEquals("FORM-4403B45A7F184CB79088FCDAFD2FD925LZ3K", body.get("formUuid"));
         assertEquals(true, body.get("executeExpression"));
         assertEquals(false, body.get("noExecuteExpression"));
-        assertEquals("工单工艺工价审定-GD-001", body.get("title"));
-        assertEquals("工单工艺工价审定-GD-001", body.get("dataTitle"));
+        assertEquals("ML-工单工艺工价审定-GD-001", body.get("title"));
+        assertEquals("ML-工单工艺工价审定-GD-001", body.get("dataTitle"));
 
         JSONObject formData = JSONObject.parseObject(String.valueOf(body.get("formDataJson")));
-        assertEquals("工单工艺工价审定-GD-001", formData.getString("textField_msh27unu"));
-        assertEquals("工单工艺工价审定-GD-001", formData.getString("textField_mspcpz92"));
+        assertEquals("ML-工单工艺工价审定-GD-001", formData.getString("textField_msh27unu"));
+        assertEquals("ML-工单工艺工价审定-GD-001", formData.getString("textField_mspcpz92"));
         assertEquals("dingtalk-user-001", formData.getJSONArray("employeeField_msh186rr").getString(0));
         assertFalse(formData.containsKey("selectField_mso1em48"));
         assertEquals(mainData.getGs(), formData.getString("textField_mu1yk6l5"));
@@ -143,6 +154,8 @@ class MlWorkOrderCraftPriceFormPushHandlerTest {
         assertEquals("ML", savedMaterialRow.getString("textField_msy0zj6b"));
         assertEquals("leader-001", savedMaterialRow.getString("textField_msy0zj6c"));
         assertEquals("87", savedMaterialRow.getString("textField_msy0zj6h"));
+        assertEquals("ML", formData.getString("textField_msy0zj6b"));
+        assertEquals("87", formData.getString("textField_msy0zj6h"));
     }
 
     @Test