pruple_boy 1 year ago
parent
commit
e8bc06d392

+ 3 - 2
mjava-aiwei/src/main/java/com/malk/aiwei/server/AWServer.java

@@ -18,8 +18,9 @@ public class AWServer {
     public static final String TASK_CODE = "任务编号";
     public static final String TASK_STAGE = "TR评审节点";
 
-    public static final String TASK_CHECK_LINK = "预检项";
-    public static final String TASK_CHECK_STATUS = "预检项检查状态";
+    // prd 23.02.29 字段从 预检项 变更为 技术检查项
+    public static final String TASK_CHECK_LINK = "技术检查项";
+    public static final String TASK_CHECK_STATUS = "技术检查项检查状态";
 
     public static final String TASK_APPROVE_ATTACHMENT = "交付件";
     public static final String TASK_APPROVE_LINK = "交付件审批流程";

+ 5 - 0
mjava-aiwei/src/main/java/com/malk/aiwei/service/AWClint.java

@@ -41,6 +41,11 @@ public interface AWClint {
      */
     void updateProjectRole(String projectId);
 
+    /**
+     * 项目迁移: 删除依赖项
+     */
+    void removeDependencies(String projectId, String trNode);
+
     /**
      * 同步预检项
      *

+ 29 - 4
mjava-aiwei/src/main/java/com/malk/aiwei/service/impl/AWImplClient.java

@@ -405,8 +405,9 @@ public class AWImplClient implements AWClint {
             if (projectMaps.size() > 0) {
                 ydParam2.setFormInstanceId(String.valueOf(projectMaps.get(0).get("instanceId")));
                 ydClient.operateData(ydParam2, YDConf.FORM_OPERATION.update);
-                // 保留tb项目号, 避免冲重复通过模板参加项目
-                formData.put("textField_lqxtykce", UtilMap.getMap(projectMaps.get(0), "formData").get("textField_lqxtykce"));
+                // 保留tb项目号, 避免冲重复通过模板参加项目 todo::: 临时bug
+                formData.put("textField_lqxtykce", UtilMap.getString(projectMaps.get(0), "textField_lqxtykce"));
+                formData.put("formInstanceId", projectMaps.get(0).get("instanceId"));
             } else {
                 String formInstId = (String) ydClient.operateData(ydParam2, YDConf.FORM_OPERATION.create);
                 formData.put("formInstanceId", formInstId);
@@ -525,6 +526,30 @@ public class AWImplClient implements AWClint {
         });
     }
 
+    /**
+     * 项目迁移: 删除依赖项
+     */
+    @Override
+    public void removeDependencies(String projectId, String trNode) {
+
+        log.info("删除依赖项 projectId = {}, trNode = {}", projectId, trNode);
+        // 任务编码字段ID
+        List<Map> customField = tbClient.queryProjectCustomField(projectId, null);
+        tbClient.queryProjectTaskList(projectId, null, taskList -> {
+            for (Map task : taskList) {
+
+                // 获取资源名称对应的项目角色
+                Optional optional = customField.stream().filter(item -> AWServer.TASK_ROLE.equals(item.get("name"))).findAny();
+                if (!optional.isPresent()) {
+                    continue;
+                }
+                List<Map> customfields = (List<Map>) task.get("customfields");
+                String roleName = TBConf.getTaskFieldValue_First(customfields, UtilMap.getString((Map) optional.get(), "id"));
+            }
+            return true;
+        });
+    }
+
     // TB与宜搭userId转换 todo 提取 tbService
     private String _convertUserId(String userId, boolean isTBID) {
         List<Map> tbMap = tbClient.idMapQuery(userId, isTBID);
@@ -624,8 +649,8 @@ public class AWImplClient implements AWClint {
                 YDParam ydParam3 = YDParam.builder()
                         .formUuid("FORM-5436DC75BC8347D498DFF2617925BA70O066")
                         .build();
-                // 任务号, 描述, ID(标题)
-                Map<String, ?> compIds3 = UtilMap.map("selectField_lrncf4hk, textField_lrrnqz7w, textField_lrnd3h0r", "selectField_4gwjfa5", "textField_lryetn3g", "textField_9x1yps6");
+                // 任务号, 描述, ID(标题), 验收标准, 等级
+                Map<String, ?> compIds3 = UtilMap.map("selectField_lrncf4hk, textField_lrrnqz7w, textField_lrnd3h0r, textField_cd4f65l, textField_267kho2", "selectField_4gwjfa5, textField_lryetn3g, textField_9x1yps6, textField_cd4f65l, textField_267kho2");
                 syncCheckList(ydParam3, compIds3, "selectField_4gwjfa5", "textField_9x1yps6", "TR评审要素表", "associationFormField_lrrn5csa");
                 break;
         }

+ 9 - 2
mjava-fengkaili/src/main/java/com/malk/fengkaili/service/impl/FKLImplService.java

@@ -391,7 +391,7 @@ public class FKLImplService implements FKLService {
                                             day_2 = "出差";
                                         }
                                     } else {
-                                        /// 请假数据处理 [半天情况]
+                                        /// 非小时假, 请假数据处理 [半天情况]
                                         String[] arr = status.split(" ");
                                         int sstart = Integer.valueOf(status.split(" ")[1].split("到")[0].replace(":", ""));
                                         float day = Float.valueOf((arr[arr.length - 1].replace("天", "")));
@@ -399,7 +399,8 @@ public class FKLImplService implements FKLService {
                                         boolean eDate = date.equals(status.split(" ")[1].split("到")[1]);
                                         type = tmp;
                                         // 兼容跨天请假场景
-                                        if ((day == 1.0f && sDate && eDate) || !sDate && !eDate) {
+                                        int sEnd = Integer.valueOf(status.split(" ")[2].replace(":", ""));
+                                        if ((day >= 1.0f && ((sDate && eDate) || (sDate & sstart <= 800) || (eDate && sEnd >= 1700))) || (!sDate && !eDate)) {
                                             day_1 = type;
                                             day_2 = type;
                                         } else {
@@ -582,8 +583,13 @@ public class FKLImplService implements FKLService {
                 AtomicReference<Float> days_chidao = new AtomicReference<>(0f);
                 AtomicReference<Float> days_zaotui = new AtomicReference<>(0f);
                 AtomicReference<Float> days_kuangong = new AtomicReference<>(0f);
+                AtomicReference<Float> days_addition = new AtomicReference<>(0f);
                 attendance.put("出勤天数_prd", attendance.keySet().stream().reduce(0f, (acc, cur) -> {
                     if (cur.toString().contains("_")) {
+                        // prd 2.29 新增 = 出差 + 外出 + zc [Excel添加公式导出不直接显示, 需要触发回车才会更新]
+                        if (Arrays.asList("zc", "外出", "出差").contains(attendance.get(cur))) {
+                            days_addition.updateAndGet(v -> new Float((float) (v + 0.5)));
+                        }
                         // 累计汇总天数 [出勤天数包含 外出, 缺卡, zc]; ppExt 未加入考勤组人员, 会全月统计为zc, 钉钉返回为空, 没有判断条件. 因此需要手动调整 [极端情况]
                         if (Arrays.asList("zc", "缺卡", "外出").contains(attendance.get(cur))) {
                             return Float.valueOf(String.valueOf(acc)) + 0.5;
@@ -605,6 +611,7 @@ public class FKLImplService implements FKLService {
                     }
                     return acc;
                 }));
+                attendance.put("公假(新增)_prd", days_addition.get());
                 attendance.put("公假天数_prd", days_rest.get());
                 attendance.put("调休天数_prd", days_tiaoxiu.get());
                 attendance.put("事假天数_prd", days_shijia.get());

BIN
mjava-fengkaili/src/main/resources/templates/Template_days.xlsx


+ 11 - 1
mjava-hake/src/main/java/com/malk/hake/service/impl/HKImplClient.java

@@ -72,7 +72,17 @@ public class HKImplClient implements HKClient {
                 }
                 formData.put(key, details);
             } else {
-                formData.put(key, data.get(component.get(key)));
+                Object value = data.get(component.get(key));
+                // prd 3.5 销售订单审批和通知里面有个reason字段
+                if ("numberField_lnmyrzwx".equals(key)) {
+                    if ("0".equals(value)) {
+                        value = "价格变更";
+                    }
+                    if ("1".equals(value)) {
+                        value = "数量或交期变更";
+                    }
+                }
+                formData.put(key, value);
             }
         }
         // 发起人匹配规则

+ 3 - 1
mjava-hake/src/main/resources/static/json/form.json

@@ -26,6 +26,7 @@
         "numberField_lnmyiqb1": "exchangeRate",
         "numberField_lnmyiqb2": "priceInCompanyCurrencyExTax",
         "numberField_lnmyiqb3": "priceInTax",
+        "numberField_lt60a87j": "standardPrice",
         "numberField_lnmyiqb4": "",
         "numberField_lnmyiqb5": "",
         "textField_lnmyiqb6": "deliveryDate"
@@ -58,7 +59,8 @@
         "numberField_lnmyiqb1": "exchangeRate",
         "numberField_lnmyrzwz": "priceInCompanyCurrencyExTax",
         "textField_lnmyiqb6": "rowType"
-      }
+      },
+      "textareaField_lte4l7om": "changes"
     }
   },
   "XSDD_RC": "serialNumberField_lntocd8t",

+ 27 - 24
mjava-luyi/src/main/java/com/malk/luyi/controller/LYController.java

@@ -43,30 +43,33 @@ public class LYController {
     McR query(@RequestBody Map data) {
 
         log.info("报告查询, {}", data);
-        McException.assertParamException_Null(data, "cardNo, phoneNo, page, size");
-
-        // 更新客户档案
-        DDR_New ddr_new = ydClient.queryData(YDParam.builder()
-                .formUuid("FORM-MFA66S91KKJDA2708OHTW6RBOJRK3SVWO7KLL1")
-                .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_llvq2dqf", data.get("cardNo"))))
-                .build(), YDConf.FORM_QUERY.retrieve_search_form);
-        McException.assertAccessException(ddr_new.getTotalCount() == 0, "信息未登记! ");
-        Map formData = (Map) ((List<Map>) ddr_new.getData()).get(0).get("formData");
-        List<Map> details = (List<Map>) formData.get("tableField_llk8hw38");
-        Optional optional = details.stream().filter(item -> data.get("phoneNo").equals(item.get("textField_llvq2dqr"))).findAny();
-        if (!optional.isPresent()) {
-            details.add(UtilMap.map("textField_llvq2dqr, textField_llk8hw39, radioField_lndtpa2c", data.get("phoneNo"), "报告回写", "报告回写"));
-            formData.put("tableField_llk8hw38", details);
-            ydClient.operateData(YDParam.builder()
-                    .formInstId(String.valueOf(((List<Map>) ddr_new.getData()).get(0).get("formInstanceId")))
-                    .updateFormDataJson(JSON.toJSONString(formData))
-                    .build(), YDConf.FORM_OPERATION.update);
-            // 写入联系人记录表
-            ydClient.operateData(YDParam.builder()
-                    .formUuid("FORM-XHA6688148UDAB8RCH4TO7T0CBGF3NWHGI4ML8")
-                    .formDataJson(JSON.toJSONString(UtilMap.map("selectField_lm4kbce2, textField_lm4igzq0, textField_lm4igzq2, textField_lm4igzq4, radioField_lndtpa2c",
-                            formData.get("textField_llk8hw32"), formData.get("serialNumberField_llkb8w7t"), "报告回写", data.get("phoneNo"), "报告回写")))
-                    .build(), YDConf.FORM_OPERATION.create);
+        McException.assertParamException_Null(data, "cardNo, page, size");
+        
+        // prd 3.5 无手机号查询
+        if (data.containsKey("phoneNo")) {
+            // 更新客户档案
+            DDR_New ddr_new = ydClient.queryData(YDParam.builder()
+                    .formUuid("FORM-MFA66S91KKJDA2708OHTW6RBOJRK3SVWO7KLL1")
+                    .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_llvq2dqf", data.get("cardNo"))))
+                    .build(), YDConf.FORM_QUERY.retrieve_search_form);
+            McException.assertAccessException(ddr_new.getTotalCount() == 0, "信息未登记! ");
+            Map formData = (Map) ((List<Map>) ddr_new.getData()).get(0).get("formData");
+            List<Map> details = (List<Map>) formData.get("tableField_llk8hw38");
+            Optional optional = details.stream().filter(item -> data.get("phoneNo").equals(item.get("textField_llvq2dqr"))).findAny();
+            if (!optional.isPresent()) {
+                details.add(UtilMap.map("textField_llvq2dqr, textField_llk8hw39, radioField_lndtpa2c", data.get("phoneNo"), "报告回写", "报告回写"));
+                formData.put("tableField_llk8hw38", details);
+                ydClient.operateData(YDParam.builder()
+                        .formInstId(String.valueOf(((List<Map>) ddr_new.getData()).get(0).get("formInstanceId")))
+                        .updateFormDataJson(JSON.toJSONString(formData))
+                        .build(), YDConf.FORM_OPERATION.update);
+                // 写入联系人记录表
+                ydClient.operateData(YDParam.builder()
+                        .formUuid("FORM-XHA6688148UDAB8RCH4TO7T0CBGF3NWHGI4ML8")
+                        .formDataJson(JSON.toJSONString(UtilMap.map("selectField_lm4kbce2, textField_lm4igzq0, textField_lm4igzq2, textField_lm4igzq4, radioField_lndtpa2c",
+                                formData.get("textField_llk8hw32"), formData.get("serialNumberField_llkb8w7t"), "报告回写", data.get("phoneNo"), "报告回写")))
+                        .build(), YDConf.FORM_OPERATION.create);
+            }
         }
         // 查询报告结果
         DDR_New ddr_new2 = ydClient.queryData(YDParam.builder()

+ 1 - 1
mjava/src/main/java/com/malk/utils/UtilMap.java

@@ -62,7 +62,7 @@ public abstract class UtilMap {
     }
 
     /**
-     * 快速创建map [保留skeys, 取值ckeys] todo: 新版本更新
+     * 快速创建map [保留skeys, 取值ckeys] todo: 新版本更新, 字段覆盖
      */
     public static Map<String, Object> map(String skeys, String ckeys, Map map) {
         String[] sprops = skeys.split(", ");