丽知:钉钉回调修改
This commit is contained in:
parent
caa0b9f37c
commit
f327c4181f
|
@ -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_id、approve:N
|
dingU8cBillDao.callBackSaveOrUpdate(dingU8cBillEntity);
|
||||||
refuse(dingU8cBillEntity, mobile);
|
//后续林姐姐给接口,拒绝之后清空process_id、approve:N
|
||||||
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_id、approve:N
|
||||||
|
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_id、approve:N
|
||||||
|
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();
|
||||||
|
|
|
@ -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的单据状态//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<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_id、ding_res、approve、initiate、push_count++,push_process_ids
|
* 审批拒绝后清除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);
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue