丽知:钉钉回调修改

This commit is contained in:
zhengyf 2024-11-22 09:10:09 +08:00
parent caa0b9f37c
commit f327c4181f
2 changed files with 271 additions and 118 deletions

View File

@ -183,29 +183,36 @@ public class CallBackServiceImpl implements CallBackService {
} else if (processInstanceResponseBodyResult.getStatus().equals("COMPLETED")) {//审批完成 } else if (processInstanceResponseBodyResult.getStatus().equals("COMPLETED")) {//审批完成
logger.info("采购付款申请(新)--->审批完成"); 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 //任务列表,文档地址https://open-dev.dingtalk.com/apiExplorer?spm=ding_open_doc.document.0.0.33293c33eWKtYM#/?devType=org&api=workflow_1.0%23GetProcessInstance
List<GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultTasks> tasks = processInstanceResponseBodyResult.getTasks(); List<GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultTasks> tasks = processInstanceResponseBodyResult.getTasks();
for (GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultTasks task : tasks) { for (GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultTasks task : tasks) {
if ("COMPLETED".equals(task.getStatus())) {//完成状态 userId=task.getUserId();
//获取人员得手机号作为u8c得审核人编码 }
String userId = task.getUserId(); mobile = getMobileByUserId(token, userId);
String mobile = getMobileByUserId(token, userId);
if ("AGREE".equals(task.getResult())) { result = processInstanceResponseBodyResult.getResult();
//同意 if ("agree".equals(result)) {
//审批u8c单据 //同意
approveArapDjzb(dingU8cBillEntity, remark); //审批u8c单据
dingU8cBillEntity.setApprove("Y"); approveArapDjzb(dingU8cBillEntity,mobile);
dingU8cBillDao.callBackSaveOrUpdate(dingU8cBillEntity); }else if ("refuse".equals(result)) {
} else if ("REFUSE".equals(task.getResult())) { //拒绝
//拒绝 dingU8cBillEntity.setApprove("N");
//后续林姐姐给接口拒绝之后清空process_idapproveN dingU8cBillDao.callBackSaveOrUpdate(dingU8cBillEntity);
refuse(dingU8cBillEntity, mobile); //后续林姐姐给接口拒绝之后清空process_idapproveN
dingU8cBillEntity.setApprove("N"); refuse(dingU8cBillEntity, mobile);
dingU8cBillDao.callBackSaveOrUpdate(dingU8cBillEntity);
}
}
} }
} catch (Exception e) { } catch (Exception e) {
logger.error("代理采购(付款单)->采购付款申请(店群专用)回调报错:" + e); logger.error("代理采购(付款单)->采购付款申请(店群专用)回调报错:" + e);
@ -238,41 +245,37 @@ public class CallBackServiceImpl implements CallBackService {
} else if (processInstanceResponseBodyResult.getStatus().equals("COMPLETED")) {//审批完成 } else if (processInstanceResponseBodyResult.getStatus().equals("COMPLETED")) {//审批完成
logger.info("采购付款申请(店群专用)--->审批完成"); logger.info("采购付款申请(店群专用)--->审批完成");
} }
//获取所有审批意见
List<GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultOperationRecords> operationRecords = processInstanceResponseBodyResult.getOperationRecords();
//审批意见过滤掉START_PROCESS_INSTANCE发起流程实例 String status = null;//审批状态RUNNING审批中 TERMINATED已撤销 COMPLETED审批完成
operationRecords = operationRecords.stream().filter(item -> !item.getType().equals("START_PROCESS_INSTANCE")).collect(Collectors.toList()); String result = null;//审批结果agree同意 refuse拒绝
System.out.println(operationRecords); String userId = null;//任务处理人
String mobile = null;//处理人手机号
String remark = ""; status = processInstanceResponseBodyResult.getStatus();
if ("RUNNING".equals(status) || "TERMINATED".equals(status)) {
//钉钉问题记录执行明细 //审批中已撤销不处理
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())) {
//后续林姐姐给接口
return; return;
} }
//审批u8c单据 //任务列表,文档地址https://open-dev.dingtalk.com/apiExplorer?spm=ding_open_doc.document.0.0.33293c33eWKtYM#/?devType=org&api=workflow_1.0%23GetProcessInstance
approveArapDjzb(dingU8cBillEntity, remark); List<GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultTasks> 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_idapproveN
refuse(dingU8cBillEntity, mobile);
}
} catch (Exception e) { } catch (Exception e) {
logger.error("代理采购(付款单)->采购付款申请(店群专用)回调报错:" + 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()); operationRecords = operationRecords.stream().filter(item -> !item.getType().equals("START_PROCESS_INSTANCE")).collect(Collectors.toList());
System.out.println(operationRecords); System.out.println(operationRecords);
String remark = ""; String status = null;//审批状态RUNNING审批中 TERMINATED已撤销 COMPLETED审批完成
//钉钉问题记录执行明细 String result = null;//审批结果agree同意 refuse拒绝
for (GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultOperationRecords operationRecord : operationRecords) { String userId = null;//任务处理人
//操作结果 String mobile = null;//处理人手机号
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; 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<GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultTasks> 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_idapproveN
refuse(dingU8cBillEntity, mobile);
}
} }
} catch (Exception e) { } 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(); LocalDate now = LocalDate.now();
Map bills = new HashMap(); Map bills = new HashMap();
bills.put("djbh", dingU8cBillEntity.getU8cBillCode()); bills.put("djbh", dingU8cBillEntity.getU8cBillCode());
bills.put("dwbm", dingU8cBillEntity.getU8cCodeCorp()); bills.put("dwbm", dingU8cBillEntity.getU8cCodeCorp());
bills.put("opinion", remark); bills.put("opinion", "同意");
bills.put("operatorid", OverallConstant.getOverAllValue("u8cApiZdrCode")); // bills.put("operatorid", OverallConstant.getOverAllValue("u8cApiZdrCode"));
bills.put("operatorid", mobile);
bills.put("operatedate", now.toString()); bills.put("operatedate", now.toString());
String jsonStr = JSONUtil.toJsonStr(bills); String jsonStr = JSONUtil.toJsonStr(bills);
jsonStr = "{\"bills\":[" + jsonStr + "]}"; jsonStr = "{\"bills\":[" + jsonStr + "]}";
@ -544,14 +550,14 @@ public class CallBackServiceImpl implements CallBackService {
DingU8cBillEntity dingU8cBillEntity = new DingU8cBillEntity(); DingU8cBillEntity dingU8cBillEntity = new DingU8cBillEntity();
dingU8cBillEntity.setU8cPkCorp(bdCorpEntity.getPkCorp());//公司主键 dingU8cBillEntity.setU8cPkCorp(bdCorpEntity.getPkCorp());//公司主键
dingU8cBillEntity.setU8cCodeCorp(bdCorpEntity.getUnitcode());//公司编码 dingU8cBillEntity.setU8cCodeCorp(bdCorpEntity.getUnitcode());//公司编码
dingU8cBillEntity.setU8cBillType(null);//单据类型 dingU8cBillEntity.setU8cBillType("D3");//单据类型
dingU8cBillEntity.setU8cBillCode(vbillcode);//单据号 dingU8cBillEntity.setU8cBillCode(vbillcode);//单据号
dingU8cBillEntity.setU8cBillId(vbillId);//单据主键 dingU8cBillEntity.setU8cBillId(vbillId);//单据主键
dingU8cBillEntity.setPushStatus("Y");//推送成功 dingU8cBillEntity.setPushStatus("Y");//推送成功
dingU8cBillEntity.setPushInfo("success");//推送成功 dingU8cBillEntity.setPushInfo("success");//推送成功
dingU8cBillEntity.setDingTalkProcessId(processInstanceId);//钉钉审批实例id dingU8cBillEntity.setDingTalkProcessId(processInstanceId);//钉钉审批实例id
dingU8cBillEntity.setCreate_time(new Date());//创建时间 dingU8cBillEntity.setCreate_time(new Date());//创建时间
dingU8cBillEntity.setApprove(null);//Y审核 N不审核 dingU8cBillEntity.setApprove("Y");//Y审核 N不审核
dingU8cBillEntity.setInitiate("D");//D钉钉发起U u8c发起 dingU8cBillEntity.setInitiate("D");//D钉钉发起U u8c发起
dingU8cBillDao.callBackSaveOrUpdate(dingU8cBillEntity); dingU8cBillDao.callBackSaveOrUpdate(dingU8cBillEntity);
@ -565,15 +571,15 @@ public class CallBackServiceImpl implements CallBackService {
} }
} catch (Exception e) { } catch (Exception e) {
logger.error(e); logger.error(e);
//成功 //失败
DingU8cBillEntity dingU8cBillEntity = new DingU8cBillEntity(); DingU8cBillEntity dingU8cBillEntity = new DingU8cBillEntity();
dingU8cBillEntity.setU8cPkCorp(corpName);//公司主键 dingU8cBillEntity.setU8cCodeCorp(corpName);//公司主键
dingU8cBillEntity.setU8cCodeCorp(null);//公司编码 dingU8cBillEntity.setU8cCodeCorp(null);//公司编码
dingU8cBillEntity.setU8cBillType(null);//单据类型 dingU8cBillEntity.setU8cBillType(null);//单据类型
dingU8cBillEntity.setU8cBillCode(null);//单据号 dingU8cBillEntity.setU8cBillCode(null);//单据号
dingU8cBillEntity.setU8cBillId(null);//单据主键 dingU8cBillEntity.setU8cBillId(null);//单据主键
dingU8cBillEntity.setPushStatus("N");//推送成功 dingU8cBillEntity.setPushStatus("N");//推送失败
dingU8cBillEntity.setPushInfo(e.getMessage());//推送成功 dingU8cBillEntity.setPushInfo(e.getMessage());//失败消息
dingU8cBillEntity.setDingTalkProcessId(processInstanceId);//钉钉审批实例id dingU8cBillEntity.setDingTalkProcessId(processInstanceId);//钉钉审批实例id
dingU8cBillEntity.setCreate_time(new Date());//创建时间 dingU8cBillEntity.setCreate_time(new Date());//创建时间
dingU8cBillEntity.setApprove(null);//Y审核 N不审核 dingU8cBillEntity.setApprove(null);//Y审核 N不审核
@ -618,10 +624,9 @@ public class CallBackServiceImpl implements CallBackService {
Map<String, String> fileMap = new HashMap<>(); Map<String, String> fileMap = new HashMap<>();
fileMap.put("instanceId", dingU8cBillEntity.getDingTalkProcessId()); fileMap.put("instanceId", dingU8cBillEntity.getDingTalkProcessId());
fileMap.put("userCode", mobile);//审批人 fileMap.put("userCode", mobile);//审批人
fileMap.put("ckeckResult", "同意"); fileMap.put("ckeckResult", "N");
fileMap.put("ckeckNote", ""); fileMap.put("ckeckNote", "");
String jsonFileMap = JSONUtil.toJsonStr(fileMap); String jsonFileMap = JSONUtil.toJsonStr(fileMap);
String json = "{\"json\":" + jsonFileMap + "}";
//请求 //请求
@ -633,7 +638,7 @@ public class CallBackServiceImpl implements CallBackService {
.toString()); .toString());
} }
RequestEntity entity = new StringRequestEntity(json, "application/json", "UTF-8"); RequestEntity entity = new StringRequestEntity(jsonFileMap, "application/json", "UTF-8");
httpPost.setRequestEntity(entity); httpPost.setRequestEntity(entity);
httpClient.executeMethod(httpPost); httpClient.executeMethod(httpPost);
String responseBodyAsString = httpPost.getResponseBodyAsString(); String responseBodyAsString = httpPost.getResponseBodyAsString();

View File

@ -1,28 +1,45 @@
package com.hzya.frame.plugin.lets.plugin.dingtalk; package com.hzya.frame.plugin.lets.plugin.dingtalk;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenResponseBody; import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenResponseBody;
import com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceResponse; import com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceResponse;
import com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceResponseBody; import com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceResponseBody;
import com.dingtalk.api.response.OapiV2UserGetResponse;
import com.hzya.frame.base.PluginBaseEntity; 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.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.dao.IDingU8cBillDao;
import com.hzya.frame.plugin.lets.dingtalk.entity.DingU8cBillEntity; import com.hzya.frame.plugin.lets.dingtalk.entity.DingU8cBillEntity;
import com.hzya.frame.plugin.lets.dingtalk.utils.DingTalkUtils; 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.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.dao.IIntegrationTaskLivingDetailsDao;
import com.hzya.frame.sysnew.integtationTaskLivingDetails.entity.IntegrationTaskLivingDetailsEntity; import com.hzya.frame.sysnew.integtationTaskLivingDetails.entity.IntegrationTaskLivingDetailsEntity;
import com.hzya.frame.web.entity.BaseResult; import com.hzya.frame.web.entity.BaseResult;
import com.hzya.frame.web.entity.JsonResultEntity; 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.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.IOException;
import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.ReentrantLock;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -165,7 +182,7 @@ public class DingCallBackPluginInitializer extends PluginBaseEntity {
public List<DingU8cBillEntity> filterPass(List<DingU8cBillEntity> query) { public List<DingU8cBillEntity> filterPass(List<DingU8cBillEntity> query) {
List<DingU8cBillEntity> filter = new ArrayList<>(); List<DingU8cBillEntity> filter = new ArrayList<>();
for (DingU8cBillEntity dingU8cBillEntity : query) { 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; continue;
} }
filter.add(dingU8cBillEntity); filter.add(dingU8cBillEntity);
@ -186,6 +203,9 @@ public class DingCallBackPluginInitializer extends PluginBaseEntity {
if(dingU8cBillEntity.getDingTalkProcessId()==null||"".equals(dingU8cBillEntity.getDingTalkProcessId().trim())){ if(dingU8cBillEntity.getDingTalkProcessId()==null||"".equals(dingU8cBillEntity.getDingTalkProcessId().trim())){
continue; continue;
} }
if("Y".equals(dingU8cBillEntity.getApprove())){
continue;
}
//查询u8c付款单审核状态审核的continue,没审核的查询钉钉表单上的状态 //查询u8c付款单审核状态审核的continue,没审核的查询钉钉表单上的状态
@ -193,34 +213,39 @@ public class DingCallBackPluginInitializer extends PluginBaseEntity {
//查询实例的具体信息 //查询实例的具体信息
GetProcessInstanceResponse processInstanceDetails = DingTalkUtils.getProcessInstanceDetails(token, dingU8cBillEntity.getDingTalkProcessId()); GetProcessInstanceResponse processInstanceDetails = DingTalkUtils.getProcessInstanceDetails(token, dingU8cBillEntity.getDingTalkProcessId());
GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResult processInstanceResponseBodyResult = processInstanceDetails.getBody().getResult(); GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResult processInstanceResponseBodyResult = processInstanceDetails.getBody().getResult();
//获取所有审批意见
List<GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultOperationRecords> 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;//处理人手机号
//钉钉问题记录执行明细 status = processInstanceResponseBodyResult.getStatus();
for (GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultOperationRecords operationRecord : operationRecords) { if ("RUNNING".equals(status) || "TERMINATED".equals(status)) {
//操作结果 //审批中已撤销不处理
switch (operationRecord.getResult()) { return;
case "AGREE":
dingU8cBillEntity.setDing_res("同意");
break;
case "REFUSE":
dingU8cBillEntity.setDing_res("拒绝");
break;
case "NONE":
dingU8cBillEntity.setDing_res("未处理");
break;
}
//处理意见
remark = operationRecord.getRemark();
} }
//审核 //查询u8c的单据状态//spzt1审核 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<GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultTasks> 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) { } 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_idding_resapproveinitiatepush_count++,push_process_ids * 审批拒绝后清除ding_talk_process_idding_resapproveinitiatepush_count++,push_process_ids
@ -246,4 +264,134 @@ public class DingCallBackPluginInitializer extends PluginBaseEntity {
dingU8cBillDao.update(dingU8cBillEntity); 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<String, Object> map = new HashMap<String, Object>();
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<String, String> 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<String, Object> 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<ArapDjzbEntity> 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;
}
} }