|
|
@@ -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;
|