pruple_boy 1 year ago
parent
commit
2889fb4ca7

+ 1 - 1
mjava-aipocloud/src/main/resources/application-test.yml

@@ -18,7 +18,7 @@ spring:
   # database
   datasource:
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    url: jdbc:sqlserver://10.14.2.4:1433;SelectMethod=cursor;DatabaseName=dingtalk
+    url: jdbc:sqlserver://127.0.0.1:1433;SelectMethod=cursor;DatabaseName=dingtalk
     username: DingTalk
     password: Dingding2023@#
     # JPA

+ 14 - 2
mjava-aiwei/src/main/java/com/malk/aiwei/controller/TBxYDController.java

@@ -215,6 +215,18 @@ public class TBxYDController {
         return McR.success();
     }
 
+
+    /**
+     * 提供verifier数据读取服务
+     */
+    @GetMapping("verifier/sync")
+    McR syncVerifier(String projectCode) {
+
+        List<Map> dataList = awClint.syncVerifier(projectCode);
+        log.info("syncVerifier, {}, {}", projectCode, dataList.size());
+        return McR.success(dataList);
+    }
+
     //////// test ////////
 
     @Autowired
@@ -262,8 +274,8 @@ public class TBxYDController {
     }
 
     @GetMapping("tmp")
-    McR tmp() {
+    McR tmp(String programIds) {
 
-        return McR.success();
+        return McR.success(tbClient.queryProgramList(programIds));
     }
 }

+ 1 - 0
mjava-aiwei/src/main/java/com/malk/aiwei/server/AWServer.java

@@ -19,6 +19,7 @@ public class AWServer {
     public static final String TASK_STAGE = "TR评审节点";
     public static final String TASK_STAGE_BLANK = "无TR评审节点";
     public static final String TASK_PRODUCT = "产品型号";
+    public static final String TASK_PRODUCT_VERSION = "产品版本";
 
     // prd 23.02.29 字段从 预检项 变更为 技术检查项
     public static final String TASK_CHECK_LINK = "技术检查项";

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

@@ -88,5 +88,10 @@ public interface AWClint {
      */
     void syncCheckList(int type);
 
+    /**
+     * 提供verifier数据读取服务
+     */
+    List<Map> syncVerifier(String projectCode);
+
     void test();
 }

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

@@ -268,7 +268,7 @@ public class AWImplClient implements AWClint {
     public Map doCheck(String taskId, boolean isTask) {
 
         log.info("检查项check, {}", taskId);
-        Map taskData = _getTaskFieldMap(taskId, AWServer.TASK_CODE, AWServer.TASK_CHECK_LINK, AWServer.TASK_ROLE, AWServer.TASK_STAGE, AWServer.TASK_CHECK_STATUS);
+        Map taskData = _getTaskFieldMap(taskId, AWServer.TASK_CODE, AWServer.TASK_CHECK_LINK, AWServer.TASK_ROLE, AWServer.TASK_STAGE, AWServer.TASK_CHECK_STATUS, AWServer.TASK_PRODUCT, AWServer.TASK_PRODUCT_VERSION);
         Map rTask = UtilMap.getMap(taskData, "task");
         String pCode = UtilMap.getString(rTask, "projectId");
         if (AWServer.PROJECT_IGNORE_ID.contains(pCode)) {
@@ -332,7 +332,8 @@ public class AWImplClient implements AWClint {
         formData.putAll(UtilMap.map("selectField_lqxuswze, textField_lrndwu07, textField_lqxuc9m4", UtilMap.getString(rProject, "textField_lrj7vnxb"), UtilMap.getString(rProject, "textareaField_lrj7vnxl"), UtilMap.getString(rProject, "textField_lqxtykcd")));
         // 任务信息 [TBManager 操作]
         Map<String, String> extra = (Map) tbClient.idMapQuery(creatorId, "dingTalk-user", ddConf.getCorpId()).get(0).get("extra");
-        formData.putAll(UtilMap.map("textField_lrndwu09, textField_lrndwu0a, textField_lrndwu0b, employeeField_lrndwu0e", rTask.get("content"), taskData.get(AWServer.TASK_STAGE), taskData.get(AWServer.TASK_ROLE), Arrays.asList(UtilMap.map("value, name", extra.get("userId"), extra.get("userId")))));
+        // ppExt: TB映射钉钉信息仅返回 userId, 人员组件返回前端展示需要 name. 通过页面公式临时自动加载, 可通过TB接口或钉钉用户接口查询
+        formData.putAll(UtilMap.map("textField_lrndwu09, textField_lrndwu0a, textField_lrndwu0b, employeeField_lrndwu0e, textField_lvbrueqs, textField_lvbrueqt", rTask.get("content"), taskData.get(AWServer.TASK_STAGE), taskData.get(AWServer.TASK_ROLE), Arrays.asList(UtilMap.map("value, name", extra.get("userId"), extra.get("userId"))), taskData.get(AWServer.TASK_PRODUCT), taskData.get(AWServer.TASK_PRODUCT_VERSION)));
         // 返回检查项
         formData.put("tableField_lqxxgj4s", tList.stream().map(item -> {
             item.put("associationFormField_lrrnem5r", YDConf.associationForm(ydConf.getAppType(), _matchFormUuid("CHECK"), UtilMap.getString(item, "instanceId"), UtilMap.getString(item, "textField_lrnd3h0r"), "", false));
@@ -826,8 +827,10 @@ public class AWImplClient implements AWClint {
     // 推送crm: prd 单次推送必须为相同料号
     void _pushCRM(String projectId, Map record) {
         log.info("推送crm, {}", record);
-        Map param = UtilMap.map("username, password, client_id, client_secret, grant_type", "interface@awinic.com.cn.uat", "welcome12", "3MVG959Nd8JMmavT2IGqAtf_hIbxepsElGbOpno6AO8KdQJSpSNqY9bnLRU2exuAEh3qIXb1oTn98S9h0WWZk", "3C9FC7427866D69586964F65A16D288EBBB1544335DD9FF3A03DE21DF14A7C6A", "password");
-        String rsp = UtilHttp.doPost("https://test.salesforce.com/services/oauth2/token", null, param, UtilMap.empty());
+        //Map param = UtilMap.map("username, password, client_id, client_secret, grant_type", "interface@awinic.com.cn.uat", "welcome12", "3MVG959Nd8JMmavT2IGqAtf_hIbxepsElGbOpno6AO8KdQJSpSNqY9bnLRU2exuAEh3qIXb1oTn98S9h0WWZk", "3C9FC7427866D69586964F65A16D288EBBB1544335DD9FF3A03DE21DF14A7C6A", "password");
+        Map param = UtilMap.map("username, password, client_id, client_secret, grant_type", "interface@awinic.com.cn", "welcome12", "3MVG9d8..z.hDcPKSaWop76C8GRQarYhn0LpBnP_U2S3VJaT8a6l05e2pDkdk5oE4MInQYwyLMpqWM7bLDzqm", "26A90098BDBE8C356817938986472730BAE5D9536DA9096AC7C45A4973867100", "password");
+        //String rsp = UtilHttp.doPost("https://test.salesforce.com/services/oauth2/token", null, param, UtilMap.empty());
+        String rsp = UtilHttp.doPost("https://login.salesforce.com/services/oauth2/token", null, param, UtilMap.empty());
         Map result = (Map) JSON.parse(rsp);
         Map header = UtilMap.map("Authorization", "OAuth " + result.get("access_token"));
         rsp = UtilHttp.doPost(UtilMap.getString(result, "instance_url") + "/services/apexrest/TBProductStageTimeRest", header, null, Arrays.asList(record), null);
@@ -1011,6 +1014,21 @@ public class AWImplClient implements AWClint {
         log.info("同步预检项 ##, {}", type);
     }
 
+    /**
+     * 提供verifier数据读取服务
+     */
+    @Override
+    public List<Map> syncVerifier(String projectCode) {
+        List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
+                .formUuid("FORM-23B67983E91C4ED3B063F9B629D6E964SGHH")
+                .searchCondition(JSON.toJSONString(UtilMap.map("textField_lt6xd8lm", projectCode)))
+                .build());
+
+        return dataList.stream().map(item -> {
+            return item;
+        }).collect(Collectors.toList());
+
+    }
 
     @Override
     public void test() {

+ 1 - 2
mjava-gewu/src/main/java/com/malk/gewu/controller/GWController.java

@@ -30,8 +30,7 @@ import java.util.Map;
 @RestController
 @RequestMapping
 public class GWController {
-
-
+    
     @Autowired
     private GWService gwService;
 

+ 1 - 1
mjava-gewu/src/main/java/com/malk/gewu/service/impl/GWImplService.java

@@ -45,7 +45,7 @@ public class GWImplService implements GWService {
     public void syncRoster() {
 
         // 花名册元数据
-        List<Map> metaList = (List<Map>) UtilFile.readJsonObjectFromResource("static/json/personnel.json"); // 本地匹配了宜搭组件ID
+        List<Map> metaList = (List<Map>) UtilFile.readJsonObjectFromResource("static/json/personnel"); // 本地匹配了宜搭组件ID
 //        List<Map> metaList = ddClient_personnel.getPersonnelMeta(ddClient.getAccessToken(), ddConf.getAgentId());
         // 同步全量人员
         ddClient_contacts.getDepartmentId_all(ddClient.getAccessToken(), true).forEach(deptId -> {

+ 2 - 2
mjava-hake/src/main/java/com/malk/hake/controller/HKController.java

@@ -52,8 +52,8 @@ public class HKController {
 
         Map data = UtilServlet.getParamMap(request);
         log.info("审批校验, {}", JSON.toJSONString(data));
-        // 拒绝审批意见必填校验
-        McException.assertParamException_Null(data, "Remark");
+        // 拒绝审批意见必填校验 prd 4.17 取消拒绝校验, 统一返回 [审核人xxx拒绝], monitor通过活动跳转
+        //McException.assertParamException_Null(data, "Remark");
         return McR.success();
     }
 

+ 8 - 3
mjava-hake/src/main/java/com/malk/hake/service/impl/HKImplClient.java

@@ -154,13 +154,18 @@ public class HKImplClient implements HKClient {
 
         // 拒绝审批意见必填校验
         McException.assertParamException_Null(data, "Result");
-        if ("0".equals(data.get("Result"))) {
-            McException.assertParamException_Null(data, "Remark");
-        }
+        // prd 4.17 取消拒绝校验, 统一返回 [审核人xxx拒绝], monitor通过活动跳转
+        //if ("0".equals(data.get("Result"))) {
+        // McException.assertParamException_Null(data, "Remark");
+        //}
         // 回调monitor审批信息
         data.put("Url", "https://pxi03f.aliwork.com/APP_QWUVLI1R6XYUXWAOPF6O/processDetail?procInsId=" + data.get("DdProcessId"));
         data.put("ApprovalDate", UtilDateTime.formatLocalDateTime(LocalDateTime.now()));
         Map UserInfo = ddClient_contacts.getUserInfoById(ddClient.getAccessToken(), String.valueOf(data.get("Approver")));
+        // prd 4.17 取消拒绝校验, 统一返回 [审核人xxx拒绝], monitor通过活动跳转
+        if ("0".equals(data.get("Result")) && !data.containsKey("Remark")) {
+            data.put("Remark", "审批人 【" + UserInfo.get("name") + "】拒绝");
+        }
         data.put("Approver", String.valueOf(UserInfo.get("name")));
         log.info("审批回调, {}", JSON.toJSONString(data));
         // prd: 通过 http status 判定, 200 即为成功

+ 14 - 0
mjava/src/main/java/com/malk/service/teambition/TBClient.java

@@ -237,6 +237,20 @@ public interface TBClient {
     Map updateTag(String projectTagId, Map param);
 
 
+    /**
+     * 查询项目集
+     *
+     * @apiNote https://open.teambition.com/docs/apis/64e810fe912d20d3b58f9ff9
+     */
+    List<Map> queryProgramList(String programIds);
+
+    /**
+     * 批量添加项目到项目集
+     *
+     * @apiNote https://open.teambition.com/docs/apis/64e810fe912d20d3b58f9ff9
+     */
+    List<Map> upsertProgramProject(String programId, List<String> projectIds);
+
     /**
      * 查询全部数据 [函数回调]
      * - ppExt

+ 14 - 0
mjava/src/main/java/com/malk/service/teambition/impl/TBClientImpl.java

@@ -341,4 +341,18 @@ public class TBClientImpl implements TBClient {
         TBR tbr = (TBR) UtilHttp.doGet(tbConf.getApiHost() + "/v3/project-tag/" + projectTagId, initHeaderToken(), param, TBR.class);
         return (Map) tbr.getResult();
     }
+
+    @Override
+    public List<Map> queryProgramList(String programIds) {
+        /// todo post请求 id虽然为非必填,但是这个参数是和get请求,在url后不在body里面。因此也会触发必填校验. BUG
+        Map param = UtilMap.map("programIds", programIds);
+        TBR tbr = (TBR) UtilHttp.doPost(tbConf.getApiHost() + "/v3/program/query", initHeaderToken(), param, null, TBR.class);
+        return (List<Map>) tbr.getResult();
+    }
+
+    @Override
+    public List<Map> upsertProgramProject(String programId, List<String> projectIds) {
+        TBR tbr = (TBR) UtilHttp.doPost(tbConf.getApiHost() + "v3/program/" + programId + "/project/create", initHeaderToken(), UtilMap.map("projectIds", projectIds), TBR.class);
+        return (List<Map>) tbr.getResult();
+    }
 }

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

@@ -49,6 +49,9 @@ public abstract class UtilMap {
      * 快速创建map [key, Strings]
      */
     public static Map<String, String> map(String keys, String values) {
+        if (UtilString.isBlankCompatNull(keys) || UtilString.isBlankCompatNull(values)) {
+            return UtilMap.empty();
+        }
         String[] props = keys.split(", ");
         String[] contents = values.split(", ");
         if (props.length != contents.length) {