From f327c4181f6a624f2c3fca6feebe36684230e9b7 Mon Sep 17 00:00:00 2001 From: zhengyf Date: Fri, 22 Nov 2024 09:10:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BD=E7=9F=A5=EF=BC=9A=E9=92=89=E9=92=89?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CallBackServiceImpl.java | 179 +++++++-------- .../DingCallBackPluginInitializer.java | 210 +++++++++++++++--- 2 files changed, 271 insertions(+), 118 deletions(-) diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/dingtalk/callback/service/impl/CallBackServiceImpl.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/dingtalk/callback/service/impl/CallBackServiceImpl.java index f0749fbb..1c769d69 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/dingtalk/callback/service/impl/CallBackServiceImpl.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/dingtalk/callback/service/impl/CallBackServiceImpl.java @@ -183,29 +183,36 @@ public class CallBackServiceImpl implements CallBackService { } else if (processInstanceResponseBodyResult.getStatus().equals("COMPLETED")) {//审批完成 logger.info("采购付款申请(新)--->审批完成"); } - String remark = ""; + + String status = null;//审批状态。RUNNING:审批中 TERMINATED:已撤销 COMPLETED:审批完成 + String result = null;//审批结果。agree:同意 refuse:拒绝 + String userId = null;//任务处理人。 + String mobile = null;//处理人手机号 + + status = processInstanceResponseBodyResult.getStatus(); + if ("RUNNING".equals(status) || "TERMINATED".equals(status)) { + //审批中、已撤销不处理 + return; + } //任务列表,文档地址:https://open-dev.dingtalk.com/apiExplorer?spm=ding_open_doc.document.0.0.33293c33eWKtYM#/?devType=org&api=workflow_1.0%23GetProcessInstance List tasks = processInstanceResponseBodyResult.getTasks(); for (GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultTasks task : tasks) { - if ("COMPLETED".equals(task.getStatus())) {//完成状态 - //获取人员得手机号作为u8c得审核人编码 - String userId = task.getUserId(); - String mobile = getMobileByUserId(token, userId); - if ("AGREE".equals(task.getResult())) { - //同意 - //审批u8c单据 - approveArapDjzb(dingU8cBillEntity, remark); - dingU8cBillEntity.setApprove("Y"); - dingU8cBillDao.callBackSaveOrUpdate(dingU8cBillEntity); - } else if ("REFUSE".equals(task.getResult())) { - //拒绝 - //后续林姐姐给接口,拒绝之后清空process_id、approve:N - refuse(dingU8cBillEntity, mobile); - dingU8cBillEntity.setApprove("N"); - dingU8cBillDao.callBackSaveOrUpdate(dingU8cBillEntity); - } - } + userId=task.getUserId(); + } + mobile = getMobileByUserId(token, userId); + + result = processInstanceResponseBodyResult.getResult(); + if ("agree".equals(result)) { + //同意 + //审批u8c单据 + approveArapDjzb(dingU8cBillEntity,mobile); + }else if ("refuse".equals(result)) { + //拒绝 + dingU8cBillEntity.setApprove("N"); + dingU8cBillDao.callBackSaveOrUpdate(dingU8cBillEntity); + //后续林姐姐给接口,拒绝之后清空process_id、approve:N + refuse(dingU8cBillEntity, mobile); } } catch (Exception e) { logger.error("代理采购(付款单)->采购付款申请(店群专用)回调报错:" + e); @@ -238,41 +245,37 @@ public class CallBackServiceImpl implements CallBackService { } else if (processInstanceResponseBodyResult.getStatus().equals("COMPLETED")) {//审批完成 logger.info("采购付款申请(店群专用)--->审批完成"); } - //获取所有审批意见 - List operationRecords = processInstanceResponseBodyResult.getOperationRecords(); - //审批意见过滤掉:START_PROCESS_INSTANCE:发起流程实例 - operationRecords = operationRecords.stream().filter(item -> !item.getType().equals("START_PROCESS_INSTANCE")).collect(Collectors.toList()); - System.out.println(operationRecords); + String status = null;//审批状态。RUNNING:审批中 TERMINATED:已撤销 COMPLETED:审批完成 + String result = null;//审批结果。agree:同意 refuse:拒绝 + String userId = null;//任务处理人。 + String mobile = null;//处理人手机号 - String remark = ""; - - //钉钉问题记录执行明细 - for (GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultOperationRecords operationRecord : operationRecords) { - //操作结果 - switch (operationRecord.getResult()) { - case "AGREE": - dingU8cBillEntity.setDing_res("同意"); - break; - case "REFUSE": - dingU8cBillEntity.setDing_res("拒绝"); - break; - case "NONE": - dingU8cBillEntity.setDing_res("未处理"); - break; - } - //处理意见 - remark = operationRecord.getRemark(); - } - dingU8cBillDao.callBackSaveOrUpdate(dingU8cBillEntity); - - if ("拒绝".equals(dingU8cBillEntity.getDing_res()) || "未处理".equals(dingU8cBillEntity.getDing_res())) { - //后续林姐姐给接口 + status = processInstanceResponseBodyResult.getStatus(); + if ("RUNNING".equals(status) || "TERMINATED".equals(status)) { + //审批中、已撤销不处理 return; } - //审批u8c单据 - approveArapDjzb(dingU8cBillEntity, remark); + //任务列表,文档地址:https://open-dev.dingtalk.com/apiExplorer?spm=ding_open_doc.document.0.0.33293c33eWKtYM#/?devType=org&api=workflow_1.0%23GetProcessInstance + List tasks = processInstanceResponseBodyResult.getTasks(); + for (GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultTasks task : tasks) { + userId=task.getUserId(); + } + mobile = getMobileByUserId(token, userId); + + result = processInstanceResponseBodyResult.getResult(); + if ("agree".equals(result)) { + //同意 + //审批u8c单据 + approveArapDjzb(dingU8cBillEntity,mobile); + }else if ("refuse".equals(result)) { + //拒绝 + dingU8cBillEntity.setApprove("N"); + dingU8cBillDao.callBackSaveOrUpdate(dingU8cBillEntity); + //后续林姐姐给接口,拒绝之后清空process_id、approve:N + refuse(dingU8cBillEntity, mobile); + } } catch (Exception e) { logger.error("代理采购(付款单)->采购付款申请(店群专用)回调报错:" + e); } @@ -329,36 +332,40 @@ public class CallBackServiceImpl implements CallBackService { operationRecords = operationRecords.stream().filter(item -> !item.getType().equals("START_PROCESS_INSTANCE")).collect(Collectors.toList()); System.out.println(operationRecords); - String remark = ""; - //钉钉问题记录执行明细 - for (GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultOperationRecords operationRecord : operationRecords) { - //操作结果 - switch (operationRecord.getResult()) { - case "AGREE": - dingU8cBillEntity.setDing_res("同意"); - break; - case "REFUSE": - dingU8cBillEntity.setDing_res("拒绝"); - break; - case "NONE": - dingU8cBillEntity.setDing_res("未处理"); - break; - } - //处理意见 - remark = operationRecord.getRemark(); - } - dingU8cBillDao.callBackSaveOrUpdate(dingU8cBillEntity); + String status = null;//审批状态。RUNNING:审批中 TERMINATED:已撤销 COMPLETED:审批完成 + String result = null;//审批结果。agree:同意 refuse:拒绝 + String userId = null;//任务处理人。 + String mobile = null;//处理人手机号 - if ("拒绝".equals(dingU8cBillEntity.getDing_res()) || "未处理".equals(dingU8cBillEntity.getDing_res())) { - //后续林姐姐给接口 + status = processInstanceResponseBodyResult.getStatus(); + if ("RUNNING".equals(status) || "TERMINATED".equals(status)) { + //审批中、已撤销不处理 return; } - //审批u8c单据 - approveArapDjzb(dingU8cBillEntity, remark); + + //任务列表,文档地址:https://open-dev.dingtalk.com/apiExplorer?spm=ding_open_doc.document.0.0.33293c33eWKtYM#/?devType=org&api=workflow_1.0%23GetProcessInstance + List tasks = processInstanceResponseBodyResult.getTasks(); + for (GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultTasks task : tasks) { + userId=task.getUserId(); + } + mobile = getMobileByUserId(token, userId); + + result = processInstanceResponseBodyResult.getResult(); + if ("agree".equals(result)) { + //同意 + //审批u8c单据 + approveArapDjzb(dingU8cBillEntity,mobile); + }else if ("refuse".equals(result)) { + //拒绝 + dingU8cBillEntity.setApprove("N"); + dingU8cBillDao.callBackSaveOrUpdate(dingU8cBillEntity); + //后续林姐姐给接口,拒绝之后清空process_id、approve:N + refuse(dingU8cBillEntity, mobile); + } } } catch (Exception e) { - + logger.error("调拨单内部交易(付款单)->特殊业务处理(新)回调报错:" + e); } } @@ -367,18 +374,17 @@ public class CallBackServiceImpl implements CallBackService { /** * 审核付款单,并保存日志 - * - * @param remark 处理意见 */ - public void approveArapDjzb(DingU8cBillEntity dingU8cBillEntity, String remark) throws Exception { + public void approveArapDjzb(DingU8cBillEntity dingU8cBillEntity,String mobile) throws Exception { //获取当前时间 LocalDate now = LocalDate.now(); Map bills = new HashMap(); bills.put("djbh", dingU8cBillEntity.getU8cBillCode()); bills.put("dwbm", dingU8cBillEntity.getU8cCodeCorp()); - bills.put("opinion", remark); - bills.put("operatorid", OverallConstant.getOverAllValue("u8cApiZdrCode")); + bills.put("opinion", "同意"); +// bills.put("operatorid", OverallConstant.getOverAllValue("u8cApiZdrCode")); + bills.put("operatorid", mobile); bills.put("operatedate", now.toString()); String jsonStr = JSONUtil.toJsonStr(bills); jsonStr = "{\"bills\":[" + jsonStr + "]}"; @@ -544,14 +550,14 @@ public class CallBackServiceImpl implements CallBackService { DingU8cBillEntity dingU8cBillEntity = new DingU8cBillEntity(); dingU8cBillEntity.setU8cPkCorp(bdCorpEntity.getPkCorp());//公司主键 dingU8cBillEntity.setU8cCodeCorp(bdCorpEntity.getUnitcode());//公司编码 - dingU8cBillEntity.setU8cBillType(null);//单据类型 + dingU8cBillEntity.setU8cBillType("D3");//单据类型 dingU8cBillEntity.setU8cBillCode(vbillcode);//单据号 dingU8cBillEntity.setU8cBillId(vbillId);//单据主键 dingU8cBillEntity.setPushStatus("Y");//推送成功 dingU8cBillEntity.setPushInfo("success");//推送成功 dingU8cBillEntity.setDingTalkProcessId(processInstanceId);//钉钉审批实例id dingU8cBillEntity.setCreate_time(new Date());//创建时间 - dingU8cBillEntity.setApprove(null);//Y审核 N不审核 + dingU8cBillEntity.setApprove("Y");//Y审核 N不审核 dingU8cBillEntity.setInitiate("D");//D钉钉发起,U u8c发起 dingU8cBillDao.callBackSaveOrUpdate(dingU8cBillEntity); @@ -565,15 +571,15 @@ public class CallBackServiceImpl implements CallBackService { } } catch (Exception e) { logger.error(e); - //成功 + //失败 DingU8cBillEntity dingU8cBillEntity = new DingU8cBillEntity(); - dingU8cBillEntity.setU8cPkCorp(corpName);//公司主键 + dingU8cBillEntity.setU8cCodeCorp(corpName);//公司主键 dingU8cBillEntity.setU8cCodeCorp(null);//公司编码 dingU8cBillEntity.setU8cBillType(null);//单据类型 dingU8cBillEntity.setU8cBillCode(null);//单据号 dingU8cBillEntity.setU8cBillId(null);//单据主键 - dingU8cBillEntity.setPushStatus("N");//推送成功 - dingU8cBillEntity.setPushInfo(e.getMessage());//推送成功 + dingU8cBillEntity.setPushStatus("N");//推送失败 + dingU8cBillEntity.setPushInfo(e.getMessage());//失败消息 dingU8cBillEntity.setDingTalkProcessId(processInstanceId);//钉钉审批实例id dingU8cBillEntity.setCreate_time(new Date());//创建时间 dingU8cBillEntity.setApprove(null);//Y审核 N不审核 @@ -618,10 +624,9 @@ public class CallBackServiceImpl implements CallBackService { Map fileMap = new HashMap<>(); fileMap.put("instanceId", dingU8cBillEntity.getDingTalkProcessId()); fileMap.put("userCode", mobile);//审批人 - fileMap.put("ckeckResult", "同意"); + fileMap.put("ckeckResult", "N"); fileMap.put("ckeckNote", "无"); String jsonFileMap = JSONUtil.toJsonStr(fileMap); - String json = "{\"json\":" + jsonFileMap + "}"; //请求 @@ -633,7 +638,7 @@ public class CallBackServiceImpl implements CallBackService { .toString()); } - RequestEntity entity = new StringRequestEntity(json, "application/json", "UTF-8"); + RequestEntity entity = new StringRequestEntity(jsonFileMap, "application/json", "UTF-8"); httpPost.setRequestEntity(entity); httpClient.executeMethod(httpPost); String responseBodyAsString = httpPost.getResponseBodyAsString(); diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/dingtalk/DingCallBackPluginInitializer.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/dingtalk/DingCallBackPluginInitializer.java index d93bfcda..789f3870 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/dingtalk/DingCallBackPluginInitializer.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/dingtalk/DingCallBackPluginInitializer.java @@ -1,28 +1,45 @@ package com.hzya.frame.plugin.lets.plugin.dingtalk; import cn.hutool.core.lang.Assert; +import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONObject; import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenResponseBody; import com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceResponse; import com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceResponseBody; +import com.dingtalk.api.response.OapiV2UserGetResponse; import com.hzya.frame.base.PluginBaseEntity; +import com.hzya.frame.plugin.lets.constant.OverallConstant; import com.hzya.frame.plugin.lets.constant.ProfilesActiveConstant; +import com.hzya.frame.plugin.lets.dao.IArapDjzbDao; import com.hzya.frame.plugin.lets.dingtalk.dao.IDingU8cBillDao; import com.hzya.frame.plugin.lets.dingtalk.entity.DingU8cBillEntity; import com.hzya.frame.plugin.lets.dingtalk.utils.DingTalkUtils; +import com.hzya.frame.plugin.lets.entity.ArapDjzbEntity; +import com.hzya.frame.plugin.lets.u8cdto.ArapDjzbVO; import com.hzya.frame.plugin.lets.util.SaveOrUpdateBusinessLogUtil; +import com.hzya.frame.plugin.lets.util.pushData.Attribute; +import com.hzya.frame.plugin.lets.util.pushData.PushU8CByApiCode; +import com.hzya.frame.plugin.lets.util.pushData.ZTResult; import com.hzya.frame.sysnew.integtationTaskLivingDetails.dao.IIntegrationTaskLivingDetailsDao; import com.hzya.frame.sysnew.integtationTaskLivingDetails.entity.IntegrationTaskLivingDetailsEntity; import com.hzya.frame.web.entity.BaseResult; import com.hzya.frame.web.entity.JsonResultEntity; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.methods.PostMethod; +import org.apache.commons.httpclient.methods.RequestEntity; +import org.apache.commons.httpclient.methods.StringRequestEntity; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import java.io.IOException; +import java.time.LocalDate; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.concurrent.locks.ReentrantLock; import java.util.stream.Collectors; @@ -165,7 +182,7 @@ public class DingCallBackPluginInitializer extends PluginBaseEntity { public List filterPass(List query) { List filter = new ArrayList<>(); for (DingU8cBillEntity dingU8cBillEntity : query) { - if ("Y".equals(dingU8cBillEntity.getApprove()) || (dingU8cBillEntity.getDingTalkProcessId() == null && "".equals(dingU8cBillEntity.getDingTalkProcessId().trim()))) { + if ("Y".equals(dingU8cBillEntity.getApprove()) || (dingU8cBillEntity.getDingTalkProcessId() == null || "".equals(dingU8cBillEntity.getDingTalkProcessId().trim()))) { continue; } filter.add(dingU8cBillEntity); @@ -186,6 +203,9 @@ public class DingCallBackPluginInitializer extends PluginBaseEntity { if(dingU8cBillEntity.getDingTalkProcessId()==null||"".equals(dingU8cBillEntity.getDingTalkProcessId().trim())){ continue; } + if("Y".equals(dingU8cBillEntity.getApprove())){ + continue; + } //查询u8c付款单审核状态,审核的continue,没审核的查询钉钉表单上的状态 @@ -193,34 +213,39 @@ public class DingCallBackPluginInitializer extends PluginBaseEntity { //查询实例的具体信息 GetProcessInstanceResponse processInstanceDetails = DingTalkUtils.getProcessInstanceDetails(token, dingU8cBillEntity.getDingTalkProcessId()); GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResult processInstanceResponseBodyResult = processInstanceDetails.getBody().getResult(); - //获取所有审批意见 - List operationRecords = processInstanceResponseBodyResult.getOperationRecords(); - //审批意见过滤掉:START_PROCESS_INSTANCE:发起流程实例 - operationRecords = operationRecords.stream().filter(item -> !item.getType().equals("START_PROCESS_INSTANCE")).collect(Collectors.toList()); - String remark = ""; + String status = null;//审批状态。RUNNING:审批中 TERMINATED:已撤销 COMPLETED:审批完成 + String result = null;//审批结果。agree:同意 refuse:拒绝 + String userId = null;//任务处理人。 + String mobile = null;//处理人手机号 - //钉钉问题记录执行明细 - for (GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultOperationRecords operationRecord : operationRecords) { - //操作结果 - switch (operationRecord.getResult()) { - case "AGREE": - dingU8cBillEntity.setDing_res("同意"); - break; - case "REFUSE": - dingU8cBillEntity.setDing_res("拒绝"); - break; - case "NONE": - dingU8cBillEntity.setDing_res("未处理"); - break; - } - //处理意见 - remark = operationRecord.getRemark(); + status = processInstanceResponseBodyResult.getStatus(); + if ("RUNNING".equals(status) || "TERMINATED".equals(status)) { + //审批中、已撤销不处理 + return; } - //审核 + //查询u8c的单据状态//spzt:1审核 null 未审核 + String u8cPkCorp = dingU8cBillEntity.getU8cPkCorp(); + String u8cBillCode = dingU8cBillEntity.getU8cBillCode(); + ArapDjzbEntity arapDjzbEntity = queryArapDjzbEntity(u8cPkCorp, u8cBillCode); + if(arapDjzbEntity==null){ + return; + } - //拒审 + //任务列表,文档地址:https://open-dev.dingtalk.com/apiExplorer?spm=ding_open_doc.document.0.0.33293c33eWKtYM#/?devType=org&api=workflow_1.0%23GetProcessInstance + List tasks = processInstanceResponseBodyResult.getTasks(); + for (GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultTasks task : tasks) { + userId=task.getUserId(); + } + mobile = getMobileByUserId(token, userId); + + result = processInstanceResponseBodyResult.getResult(); + if("agree".equals(result)){ + approveArapDjzb(dingU8cBillEntity,mobile); + }else if("refuse".equals(result)){ + refuse(dingU8cBillEntity,mobile); + } } catch (Exception e) { @@ -229,13 +254,6 @@ public class DingCallBackPluginInitializer extends PluginBaseEntity { } } - /** - * 获取钉钉应用token - */ - public String getDingTalkToken() throws Exception { - GetAccessTokenResponseBody tokenBody = DingTalkUtils.getTokenBody(APPKEY, AppSecret); - return tokenBody.getAccessToken(); - } /** * 审批拒绝后清除ding_talk_process_id、ding_res、approve、initiate、push_count++,push_process_ids @@ -246,4 +264,134 @@ public class DingCallBackPluginInitializer extends PluginBaseEntity { dingU8cBillDao.update(dingU8cBillEntity); } + @Autowired + private PushU8CByApiCode pushU8CByApiCode; + /** + * 审核付款单 + */ + public void approveArapDjzb(DingU8cBillEntity dingU8cBillEntity,String mobile) throws Exception { + + LocalDate now = LocalDate.now(); + + Map bills = new HashMap(); + bills.put("djbh", dingU8cBillEntity.getU8cBillCode()); + bills.put("dwbm", dingU8cBillEntity.getU8cCodeCorp()); + bills.put("opinion", "同意"); +// bills.put("operatorid", OverallConstant.getOverAllValue("u8cApiZdrCode")); + bills.put("operatorid", mobile); + bills.put("operatedate", now.toString()); + String jsonStr = JSONUtil.toJsonStr(bills); + jsonStr = "{\"bills\":[" + jsonStr + "]}"; + System.out.println(jsonStr); + + //推送 + String response = ""; + try { + ZTResult ztResult = pushU8CByApiCode.pushByCode(OverallConstant.getOverAllValue("arapFkApproveCode"), jsonStr); + //两层判断,一层中台转发,一层u8c返回 + if ("false".equals(ztResult.getFlag())) { + //转发失败 + response = JSONUtil.toJsonStr(ztResult.getAttribute()); + Assert.state(false, "丽知:审核付款单审核失败,失败原因:{}", ztResult.getAttribute()); + } + Attribute attribute = ztResult.getAttribute(); + boolean isSuccess = false; + if ("success".equals(attribute.getStatus())) { + isSuccess = true; + } + if (!isSuccess) { + Assert.state(false, "推送U8C--> 丽知:审核付款单审核 失败 接口返回结果:{} ", response); + } + //成功 + dingU8cBillEntity.setApprove("Y"); + dingU8cBillDao.callBackSaveOrUpdate(dingU8cBillEntity); + } catch (Exception e) { + logger.error("推送U8C--> 丽知:审核付款单审核 失败" + e); + //失败 + dingU8cBillEntity.setApprove("N"); + dingU8cBillEntity.setPushInfo(e.getMessage()); + dingU8cBillDao.callBackSaveOrUpdate(dingU8cBillEntity); + } + + } + + /** + * 钉钉拒绝审批,http请求 + */ + public void refuse(DingU8cBillEntity dingU8cBillEntity, String mobile) throws IOException { + // 服务器访问地址及端口,例如 http://ip:port + String serviceUrl = OverallConstant.getOverAllValue("u8cApiUrl"); + // 接口地址 + String serviceName = "/u8cloud/api/dev/define"; + + //请求头 + Map map = new HashMap(); + map.put("usercode", OverallConstant.getOverAllValue("u8cApiUsercodeCode")); // 用户 + map.put("password", OverallConstant.getOverAllValue("u8cApiPasswordCode")); // 密码,需要 MD5 加密后录入 + map.put("system", OverallConstant.getOverAllValue("u8cApiSystemCode")); // 系统编码 + map.put("custdevpclass", "nc.bs.ding.process.ProcessDingImpl"); //方法路径 + + //请求体 + Map fileMap = new HashMap<>(); + fileMap.put("instanceId", dingU8cBillEntity.getDingTalkProcessId()); + fileMap.put("userCode", mobile);//审批人 + fileMap.put("ckeckResult", "N"); + fileMap.put("ckeckNote", "无"); + String jsonFileMap = JSONUtil.toJsonStr(fileMap); + + + //请求 + HttpClient httpClient = new HttpClient(); + PostMethod httpPost = new PostMethod(serviceUrl + serviceName); + httpPost.setRequestHeader("content-type", "application/json;charset=utf-8"); + for (Map.Entry entry : map.entrySet()) { + httpPost.setRequestHeader(entry.getKey(), entry.getValue() + .toString()); + } + + RequestEntity entity = new StringRequestEntity(jsonFileMap, "application/json", "UTF-8"); + httpPost.setRequestEntity(entity); + httpClient.executeMethod(httpPost); + String responseBodyAsString = httpPost.getResponseBodyAsString(); + System.out.println(responseBodyAsString); + + //记录日志 + dingU8cBillEntity.setApprove("N"); + dingU8cBillDao.callBackSaveOrUpdate(dingU8cBillEntity); + } + + @Autowired + private IArapDjzbDao arapDjzbDao; + /** + * 查询u8c付款单主表 + * @param u8cPkCorp + * @param u8cBillCode + * @return + */ + public ArapDjzbEntity queryArapDjzbEntity(String u8cPkCorp, String u8cBillCode){ + ArapDjzbEntity arapDjzbEntity = new ArapDjzbEntity(); + arapDjzbEntity.setDr("0"); + arapDjzbEntity.setDwbm(u8cPkCorp); + arapDjzbEntity.setDjbh(u8cBillCode); + List query = arapDjzbDao.query(arapDjzbEntity); + if(query.size()==0){ + return null; + }else { + return query.get(0); + } + } + + /** + * 获取钉钉应用token + */ + public String getDingTalkToken() throws Exception { + GetAccessTokenResponseBody tokenBody = DingTalkUtils.getTokenBody(APPKEY, AppSecret); + return tokenBody.getAccessToken(); + } + public String getMobileByUserId(String token, String userId) { + OapiV2UserGetResponse user = DingTalkUtils.getUserById(token, userId); + String mobile = user.getResult().getMobile(); + return mobile; + } + }