123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379 |
- package com.malk.aiwei.controller;
- /**
- * 错误抛出与拦截详见 CatchException
- */
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONObject;
- import com.malk.aiwei.service.AWClint;
- import com.malk.delegate.McDelegate;
- import com.malk.server.aliwork.YDConf;
- import com.malk.server.aliwork.YDParam;
- import com.malk.server.common.McException;
- import com.malk.server.common.McR;
- import com.malk.server.dingtalk.DDConf;
- import com.malk.server.teambition.TBConf;
- import com.malk.service.aliwork.YDClient;
- import com.malk.service.aliwork.YDService;
- import com.malk.service.teambition.TBClient;
- import com.malk.utils.UtilMap;
- import com.malk.utils.UtilServlet;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.*;
- import javax.servlet.http.HttpServletRequest;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import java.util.Map;
- @Slf4j
- @RestController
- @RequestMapping
- public class TBxYDController {
- @Autowired
- private AWClint awClint;
- /**
- * 交付物审批回调
- */
- @PostMapping("approved")
- McR approve(HttpServletRequest request) {
- Map<String, ?> data = UtilServlet.getParamMap(request);
- log.info("交付物审批回调, {}", data);
- McException.assertParamException_Null(data, "projectId, taskId, creatorId, approve");
- awClint.approved(data);
- return McR.success();
- }
- /**
- * 检查项check回调
- */
- @PostMapping("checked")
- McR check(HttpServletRequest request) {
- Map<String, ?> data = UtilServlet.getParamMap(request);
- log.info("检查项check回调, {}", data);
- McException.assertParamException_Null(data, "taskId, formInstId");
- awClint.checked(data);
- return McR.success();
- }
- /**
- * 选项卡渲染获取详情
- */
- @PostMapping("load-check")
- public Map details(String taskId) {
- log.info("选项卡渲染, {}", taskId);
- String result = UtilMap.getString(awClint.doCheck(taskId, true), "result");
- String strJson = "{\"version\":\"1.0.0\",\"template\":{\"status\":\"#variables.status#\",\"toolbar\":[{\"label\":\"成功\",\"type\":\"text\",\"visible\":\"#variables.isDetailVisible#\",\"payload\":\"#variables.detailURL#\"}]},\"data\":[{\"itemId\":\"61b80257e1fe2200410c8ecd\",\"avatarUrl\":\"\",\"title\":\"xxxxx\",\"description\":\"\"}],\"variables\":{\"userId\":\"5bdc085d60bcef000146634f\",\"taskId\":\"\",\"status\":\"\",\"primaryLabel\":\"详情\",\"itemURL\":\"\",\"detailURL\":\"\",\"createURL\":\"\",\"createPlanTimeLabel\":\"\",\"createPlanTimeURL\":\"\",\"editURL\":\"\",\"removeURL\":\"\",\"isItemVisible\":true,\"isDetailVisible\":true,\"isCreatePlanTimeVisible\":true,\"isPrimaryVisible\":true,\"isEditVisible\":true,\"isRemoveVisible\":true}}";
- strJson = strJson.replace("xxxxx", result);
- return (Map) JSON.parse(strJson);
- }
- /**
- * 自定义审批字段模板渲染
- */
- @GetMapping("field-template")
- public List<Map> template(String nonce, long timestamp, String appId, String sign, String organizationId, String projectId) {
- log.info("自定义审批字段模板渲染, {}, {}, {}, {}, {}, {}", nonce, new Date(timestamp), appId, sign, organizationId, projectId);
- List<Map> templateIds = new ArrayList<>();
- templateIds.add(UtilMap.map("id, title, payload", "FORM-FBC1A390B4C348089020C763938A6F54RUNY", "交付物审批", UtilMap.map("templateId", "FORM-FBC1A390B4C348089020C763938A6F54RUNY")));
- templateIds.add(UtilMap.map("id, title, payload", "FORM-F6B54810EBA84F7AA9AC82EE1D8AE4D3GPKR", "预检项确认", UtilMap.map("templateId", "FORM-F6B54810EBA84F7AA9AC82EE1D8AE4D3GPKR")));
- return templateIds;
- }
- /**
- * 检查项发起
- */
- @PostMapping("do-check")
- McR doCheck(String taskId) {
- log.info("检查项发起, {}", taskId);
- return McR.success(awClint.doCheck(taskId, false));
- }
- /**
- * 交付物审批
- */
- @PostMapping("do-approve")
- McR doApprove(HttpServletRequest request) {
- Map<String, ?> data = UtilServlet.getParamMap(request);
- log.info("交付物审批, {}", data);
- Map formData = awClint.doApprove(data, UtilMap.getBoolean(data, "isChange"));
- return McR.success(formData);
- }
- /**
- * 交付物变更发起
- */
- @PostMapping("change-approve")
- McR changeApprove(HttpServletRequest request) {
- Map<String, ?> data = UtilServlet.getParamMap(request);
- log.info("交付物变更发起, {}", data);
- // prd 618 通过任务扩展按钮变更情况, 提交后再触发审批回写
- if (UtilMap.getBoolean(data, "isChange")) {
- awClint.changeApprove(UtilMap.getString(data, "taskId"), UtilMap.getString(data, "formInstId"), UtilMap.getString(data, "title"));
- }
- return McR.success();
- }
- /**
- * 通过模板创建项目
- */
- @PostMapping("project/create")
- McR createProject(HttpServletRequest request) {
- Map<String, ?> data = UtilServlet.getParamMap(request);
- log.info("通过模板创建项目, {}", data);
- McException.assertParamException_Null(data, "projectCode");
- String templateId = UtilMap.getString(data, "templateId");
- if (data.containsKey("manual")) {
- awClint.createProject(UtilMap.getString(data, "projectCode"), templateId);
- } else {
- // ppExt: 宜搭数据创建后, 以及客户系统同步到主数据有时间差, 做延迟代理 10s
- mcDelegate.setTimeout(() -> {
- awClint.createProject(UtilMap.getString(data, "projectCode"), templateId);
- }, 10000);
- }
- return McR.success();
- }
- /**
- * 分配项目角色
- */
- @PostMapping("project/role")
- McR updateRoleProject(HttpServletRequest request) {
- Map<String, ?> data = UtilServlet.getParamMap(request);
- log.info("分配项目角色, {}", data);
- McException.assertParamException_Null(data, "projectId", "trNode");
- List<String> trNodes = (List<String>) JSON.parse(UtilMap.getString(data, "trNode"));
- awClint.updateProjectRole(UtilMap.getString(data, "projectId"), trNodes, UtilMap.getString(data, "production"), UtilMap.getString(data, "version"));
- return McR.success();
- }
- /**
- * 删除前后置依赖
- */
- @PostMapping("project/remove/dependencies")
- McR removeDependencies(HttpServletRequest request) {
- Map<String, ?> data = UtilServlet.getParamMap(request);
- log.info("删除前后置依赖, {}", data);
- McException.assertParamException_Null(data, "projectId", "trNode");
- awClint.removeDependencies(UtilMap.getString(data, "projectId"), (List<String>) JSON.parse(UtilMap.getString(data, "trNode")));
- return McR.success();
- }
- /**
- * 手动触发, 同步项目主数据
- */
- @PostMapping("project/sync")
- McR syncProject() {
- awClint.syncProject(null);
- return McR.success();
- }
- /**
- * 手动触发, 同步预检项
- */
- @PostMapping("check/sync")
- McR syncCheck(int type) {
- awClint.syncCheckList(type);
- return McR.success();
- }
- /**
- * 项目主数据增量更新
- */
- @PostMapping("project/update")
- McR updateProject(HttpServletRequest request) {
- Map<String, ?> data = UtilServlet.getParamMap(request);
- log.info("项目主数据增量更新, {}", data);
- // ppExt: 宜搭数据创建后, 以及客户系统同步到主数据有时间差, 做延迟代理 10s
- mcDelegate.setTimeout(() -> {
- // 多项目变更(项目成员变更) ppExt: 自动化通过公式获取子表字段,接口取不到。目前先通过传递实例ID,进行查询
- if (data.containsKey("formInstId")) {
- Map formData = ydClient.queryData(YDParam.builder()
- .formInstanceId(UtilMap.getString(data, "formInstId"))
- .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
- for (Map row : (List<Map>) UtilMap.getList(formData, "tableField_lqovv8at")) {
- awClint.updateProject(UtilMap.getString(row, "textField_lqovv8ax"));
- }
- }
- // 单项目变更(项目号变更)
- if (data.containsKey("projectCode")) {
- awClint.updateProject(UtilMap.getString(data, "projectCode"));
- }
- }, 10000);
- return McR.success();
- }
- /**
- * 手动触发, 同步CRM基线数据
- */
- @PostMapping("crm/sync")
- McR syncCRM(HttpServletRequest request) {
- Map<String, ?> data = UtilServlet.getParamMap(request);
- log.info("同步CRM基线数据, {}", data);
- if (data.containsKey("projectId")) {
- awClint.syncBaseLineForCRM(UtilMap.getString(data, "projectId"));
- } else {
- awClint.syncBaseLineForCRM();
- }
- return McR.success();
- }
- /**
- * 手动触发, 批量修改项目角色
- */
- @PostMapping("batch/update")
- McR batchUpdate(HttpServletRequest request) {
- Map<String, ?> data = UtilServlet.getParamMap(request);
- log.info("批量修改项目角色, {}", data);
- McException.assertParamException_Null(data, "fieldName, preName, modifyName");
- String fieldName = UtilMap.getString(data, "fieldName");
- String preName = UtilMap.getString(data, "preName");
- String modifyName = UtilMap.getString(data, "modifyName");
- awClint.batchUpdate(fieldName, preName, modifyName, UtilMap.getString(data, "projectId"));
- return McR.success();
- }
- /// todo workspace/sync //手动触发, 知识库权限矩阵同步
- /**
- * 提供verifier数据读取服务
- */
- @GetMapping("verifier/sync")
- McR syncVerifier(String projectCode) {
- List<Map> dataList = awClint.syncVerifier(projectCode);
- log.info("syncVerifier, {}, {}", projectCode, dataList.size());
- return McR.success(dataList);
- }
- /**
- * 知识库版本管理
- */
- @PostMapping("approve/version")
- McR approveVersion(HttpServletRequest request) {
- Map<String, ?> data = UtilServlet.getParamMap(request);
- log.info("知识库版本管理, {}", data);
- McException.assertParamException_Null(data, "taskId", "pCode");
- awClint.approveVersion(UtilMap.getString(data, "taskId"), UtilMap.getString(data, "pCode"));
- return McR.success();
- }
- /**
- * 获取主数据产品列表
- */
- @GetMapping("product/list")
- Map getProductList(@RequestParam Map param) {
- System.out.println(JSONObject.toJSONString(param));
- // String projectId="65f2855b5a2065ad7ad7d084";
- String projectId = UtilMap.getString(param, "projectId");
- String q = UtilMap.getString(param, "q");
- String objectId = UtilMap.getString(param, "objectId");
- List result = awClint.getProductList(projectId, q);
- return UtilMap.map("options", result);
- }
- /**
- * 获取主数据产品版本
- */
- @GetMapping("product/version")
- Map getProductVersionList(@RequestParam Map param) {
- System.out.println(JSONObject.toJSONString(param));
- // String projectId="65f2855b5a2065ad7ad7d084";
- String projectId = UtilMap.getString(param, "projectId");
- String q = UtilMap.getString(param, "q");
- String objectId = UtilMap.getString(param, "objectId");
- List result = awClint.getProductList(projectId, q, objectId);
- return UtilMap.map("options", result);
- }
- //////// test ////////
- @Autowired
- private TBClient tbClient;
- @Autowired
- private TBConf tbConf;
- @Autowired
- private DDConf ddConf;
- @GetMapping("t/task")
- McR task(String taskId) {
- log.info("taskId, {}", taskId);
- List<Map> tList = tbClient.queryTaskDetail(taskId, "", "");
- return McR.success(tList);
- }
- @GetMapping("t/template")
- McR template(String name) {
- List<Map> tList = tbClient.templateSearch(null, name);
- return McR.success(tList);
- }
- @Autowired
- private YDClient ydClient;
- @Autowired
- private YDService ydService;
- @Autowired
- private McDelegate mcDelegate;
- @PostMapping("test")
- McR test(HttpServletRequest request) {
- Map<String, ?> data = UtilServlet.getParamMap(request);
- log.info("test, {}", data);
- awClint.test();
- // ydClient.operateData(YDParam.builder()
- // .formInstanceId("9d204da7-b01e-4bd9-a673-acb9b64b0e61")
- // .updateFormDataJson(JSON.toJSONString(UtilMap.map("radioField_lu9yf7vg", "否")))
- // .useLatestVersion(true)
- // .build(), YDConf.FORM_OPERATION.update);
- return McR.success();
- }
- @GetMapping("tmp")
- McR tmp(String programIds) {
- // awClint.tmp();
- List<String> tags = tbClient.queryProjectTag("66c763a2a86f837e07c418e9", tbConf.getOperatorId());
- tags.add("111");
- return McR.success(tags);
- }
- }
|