|
@@ -7,11 +7,18 @@ import com.malk.kabeiyi.util.U8Util;
|
|
|
import com.malk.server.aliwork.YDConf;
|
|
|
import com.malk.server.aliwork.YDParam;
|
|
|
import com.malk.server.common.McR;
|
|
|
+import com.malk.server.dingtalk.DDConf;
|
|
|
+import com.malk.server.dingtalk.DDR;
|
|
|
import com.malk.service.aliwork.YDService;
|
|
|
import com.malk.service.dingtalk.DDClient;
|
|
|
import com.malk.service.dingtalk.DDClient_Workflow;
|
|
|
import com.malk.utils.UtilHttp;
|
|
|
+import com.malk.utils.UtilToken;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.slf4j.MDC;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
@@ -20,6 +27,7 @@ import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Objects;
|
|
|
|
|
|
+@Slf4j
|
|
|
@Service
|
|
|
public class KabeiyiServiceImpl implements KabeiyiService {
|
|
|
@Autowired
|
|
@@ -31,15 +39,27 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
|
@Autowired
|
|
|
private YDService ydService;
|
|
|
|
|
|
- //审批实例url前缀
|
|
|
- private static final String PROC_INST_PREFIX_URL = "https://aflow.dingtalk.com/dingtalk/web/query/pchomepage.htm?from=oflow&op=true&corpid=dingc3a744cb591a7346f2c783f7214b6d69#/plainapproval?procInstId=";
|
|
|
+ @Autowired
|
|
|
+ private DDConf ddConf;
|
|
|
|
|
|
- //宜搭-关联数据表
|
|
|
- private static final String RELATION = "FORM-230C40137ED94524B4D4C94F8B23A8D2F8PF";
|
|
|
+ @Value("${tcdingtalk.appKey}")
|
|
|
+ private String appKey;
|
|
|
|
|
|
- private static final Map<String,String> SCHEMA_MAP = new HashMap<>();
|
|
|
+ @Value("${tcdingtalk.appSecret}")
|
|
|
+ private String appSecret;
|
|
|
+
|
|
|
+ //审批实例url前缀(卡倍亿)
|
|
|
+ private static final String PROC_INST_PREFIX_URL = "https://aflow.dingtalk.com/dingtalk/web/query/pchomepage.htm?from=oflow&op=true&corpid=dingc3a744cb591a7346f2c783f7214b6d69#/plainapproval?procInstId=";
|
|
|
+ //宜搭-关联数据(卡倍亿)
|
|
|
+ private static final String RELATION = "FORM-230C40137ED94524B4D4C94F8B23A8D2F8PF";
|
|
|
|
|
|
+ //审批实例url前缀(特充)
|
|
|
+ private static final String PROC_INST_PREFIX_URL2 = "https://aflow.dingtalk.com/dingtalk/web/query/pchomepage.htm?from=oflow&op=true&corpid=ding3ea249a3b5b466d0f2c783f7214b6d69#/plainapproval?procInstId=";
|
|
|
+ //宜搭-关联数据(特充)
|
|
|
+ private static final String RELATION2 = "FORM-51E17EFB52C14C9CB9E00168FED2BC18LQ6H";
|
|
|
|
|
|
+ //关联表单(卡倍亿)
|
|
|
+ private static final Map<String,String> SCHEMA_MAP = new HashMap<>();
|
|
|
static{
|
|
|
SCHEMA_MAP.put("工厂用章流程","1.1、工厂用章流程(除采购营销人事)");
|
|
|
SCHEMA_MAP.put("中心用章流程","1.2、中心用章流程(除采购营销人事)");
|
|
@@ -47,7 +67,6 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
|
SCHEMA_MAP.put("商务部用章申请流程","1.4、商务部用章申请流程");
|
|
|
SCHEMA_MAP.put("办公用品采购申请流程","4.3、办公用品采购申请流程");
|
|
|
|
|
|
-
|
|
|
//需传其他值
|
|
|
//对方单位名称 收入或支出 金额 备注
|
|
|
SCHEMA_MAP.put("信息化建设用章流程","1.7、信息化建设用章流程");
|
|
@@ -59,8 +78,26 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
|
SCHEMA_MAP.put("设备采购合同审批流程","4.5c、设备采购合同审批流程");
|
|
|
SCHEMA_MAP.put("原材料采购合同审批流程","4.9b、原材料采购合同审批流程");
|
|
|
SCHEMA_MAP.put("墨西哥采购合同审批流程","4.13b、墨西哥采购合同审批流程");
|
|
|
+ }
|
|
|
|
|
|
+ //关联表单(特充)
|
|
|
+ private static final Map<String,String> SCHEMA_MAP2 = new HashMap<>();
|
|
|
+ static{
|
|
|
+ //需传其他值
|
|
|
+ //对方单位名称 收入或支出 金额 备注
|
|
|
+ SCHEMA_MAP2.put("特充用章流程","1.2、特充用章流程(除采购营销人事)");
|
|
|
+
|
|
|
+ //合同总金额 合同说明
|
|
|
+ SCHEMA_MAP2.put("设备备品备件采购合同审批流程","4.1b、设备备品备件采购合同审批流程");
|
|
|
+ SCHEMA_MAP2.put("其他物品采购合同流程","4.2b、其他物品采购合同流程");
|
|
|
+ SCHEMA_MAP2.put("母排设备采购合同审批流程","4.5c、母排设备采购合同审批流程");
|
|
|
+ SCHEMA_MAP2.put("双铝设备采购合同审批流程","4.6c、双铝设备采购合同审批流程");
|
|
|
|
|
|
+ //合同总金额
|
|
|
+ SCHEMA_MAP2.put("原材料采购合同审批流程","4.9b、原材料采购合同审批流程");
|
|
|
+
|
|
|
+ //文件类别 对方单位名称 收入或支出 金额 用印文件名称 文件份数 加盖何种印章 备注
|
|
|
+ SCHEMA_MAP2.put("信息化建设用章流程","1.7、信息化建设用章流程");
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -82,6 +119,8 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
|
|
|
|
@Override
|
|
|
public McR pushProcInstToYD(Map map) {
|
|
|
+ MDC.put("MDC_KEY_PID","1002");
|
|
|
+
|
|
|
//审批实例
|
|
|
String procInstId = String.valueOf(map.get("procInstId"));
|
|
|
//获取审批实例信息
|
|
@@ -98,7 +137,7 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
|
case "1.7、信息化建设用章流程" :
|
|
|
for (Map formComponentValue : formComponentValues) {
|
|
|
String name = String.valueOf(formComponentValue.get("name"));
|
|
|
- String value = String.valueOf(formComponentValue.get("value"));
|
|
|
+ String value = String.valueOf(formComponentValue.get("value")).equals("null") ? "" : String.valueOf(formComponentValue.get("value"));
|
|
|
switch (name){
|
|
|
case "对方单位名称" : formData.put("textField_lygzlf3j",value);break;
|
|
|
case "收入或支出" : formData.put("textField_lygzlf3k",value);break;
|
|
@@ -157,4 +196,108 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
|
|
|
|
return McR.errorParam("审批实例不存在!");
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public McR pushProcInstToYD2(Map map) {
|
|
|
+ MDC.put("MDC_KEY_PID","1003");
|
|
|
+
|
|
|
+ //审批实例
|
|
|
+ String procInstId = String.valueOf(map.get("procInstId"));
|
|
|
+ //获取审批实例信息
|
|
|
+ Map processInstance = ddClient_workflow.getProcessInstanceId(getTcAccessToken(), procInstId);
|
|
|
+ if (Objects.nonNull(processInstance)){
|
|
|
+ Map formData = new HashMap<>();
|
|
|
+ String title = String.valueOf(processInstance.get("title"));
|
|
|
+ String type = "";
|
|
|
+ List<Map> formComponentValues = (List<Map>) processInstance.get("formComponentValues");
|
|
|
+ for (String key : SCHEMA_MAP2.keySet()) {
|
|
|
+ if (title.contains(key)){
|
|
|
+ type = SCHEMA_MAP2.get(key);
|
|
|
+ switch (type){
|
|
|
+ case "1.7、信息化建设用章流程" :
|
|
|
+ for (Map formComponentValue : formComponentValues) {
|
|
|
+ String name = String.valueOf(formComponentValue.get("name"));
|
|
|
+ Object value = formComponentValue.get("value");
|
|
|
+ switch (name){
|
|
|
+ case "文件类别" : formData.put("textField_lymfq9oa",value);break;
|
|
|
+ case "对方单位名称" : formData.put("textField_lygzlf3j",value);break;
|
|
|
+ case "收入或支出" : formData.put("textField_lygzlf3k",value);break;
|
|
|
+ case "金额(元)" : formData.put("textField_lygzlf3l",value);break;
|
|
|
+ case "用印文件名称" : formData.put("textField_lymfq9oc",value);break;
|
|
|
+ case "文件份数" : formData.put("numberField_lymfq9od",value);break;
|
|
|
+ case "加盖何种印章" : formData.put("textField_lymfq9oe",value);break;
|
|
|
+ case "备注" : formData.put("textField_lygzlf3m",value);break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case "4.1b、设备备品备件采购合同审批流程" :
|
|
|
+ case "4.2b、其他物品采购合同流程" :
|
|
|
+ case "4.5c、母排设备采购合同审批流程" :
|
|
|
+ case "4.6c、双铝设备采购合同审批流程" :
|
|
|
+ case "4.9b、原材料采购合同审批流程" :
|
|
|
+ for (Map formComponentValue : formComponentValues) {
|
|
|
+ String name = String.valueOf(formComponentValue.get("name"));
|
|
|
+ switch (name){
|
|
|
+ case "合同总金额(元)":
|
|
|
+ case "合同总金额" : formData.put("numberField_lyf81587",formComponentValue.get("value"));break;
|
|
|
+ case "合同说明" :
|
|
|
+ if (Objects.nonNull(formComponentValue.get("value"))){
|
|
|
+ formData.put("textField_lyf81588",formComponentValue.get("value"));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case "1.2、特充用章流程(除采购营销人事)" :
|
|
|
+ for (Map formComponentValue : formComponentValues) {
|
|
|
+ String name = String.valueOf(formComponentValue.get("name"));
|
|
|
+ String value = String.valueOf(formComponentValue.get("value")).equals("null") ? "" : String.valueOf(formComponentValue.get("value"));
|
|
|
+ switch (name){
|
|
|
+ case "对方单位名称" : formData.put("textField_lygzlf3j",value);break;
|
|
|
+ case "收入或支出" : formData.put("textField_lygzlf3k",value);break;
|
|
|
+ case "金额(元)" : formData.put("textField_lygzlf3l",value);break;
|
|
|
+ case "备注" : formData.put("textField_lygzlf3m",value);break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ formData.put("textField_lyf8157x",title);
|
|
|
+ formData.put("selectField_lyf81580",type);
|
|
|
+
|
|
|
+ Map condition = new HashMap<>();
|
|
|
+ condition.put("textField_lyf81581",PROC_INST_PREFIX_URL2 + procInstId);
|
|
|
+
|
|
|
+
|
|
|
+ //同步到宜搭
|
|
|
+ ydService.upsertFormData(RELATION2,condition,formData,null);
|
|
|
+
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return McR.success();
|
|
|
+ }
|
|
|
+
|
|
|
+ return McR.errorParam("审批实例不存在!");
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getTcAccessToken() {
|
|
|
+ String accessToken = UtilToken.get("tc-invalid-token-dingtalk");
|
|
|
+ if (StringUtils.isNotBlank(accessToken)) {
|
|
|
+ return accessToken;
|
|
|
+ } else {
|
|
|
+ Map param = new HashMap();
|
|
|
+ param.put("appkey", appKey);
|
|
|
+ param.put("appsecret", appSecret);
|
|
|
+ DDR r = (DDR)UtilHttp.doGet("https://oapi.dingtalk.com/gettoken", param, DDR.class);
|
|
|
+ log.info("特充响应token, {}", r.getAccessToken());
|
|
|
+ accessToken = r.getAccessToken();
|
|
|
+ UtilToken.put("tc-invalid-token-dingtalk", accessToken, (long)r.getExpiresIn() * 1000L);
|
|
|
+ return accessToken;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
}
|