丽知:钉钉回调
This commit is contained in:
parent
224ab57805
commit
2643dd64d1
|
@ -70,6 +70,11 @@ public class OverallConstant {
|
||||||
//应收单
|
//应收单
|
||||||
prodOverPublic.put("arapYsInsertApproveCode", "8000370069");//自定义档案内容查询
|
prodOverPublic.put("arapYsInsertApproveCode", "8000370069");//自定义档案内容查询
|
||||||
|
|
||||||
|
//付款单
|
||||||
|
prodOverPublic.put("arapFkInsetCode", "8000370044");//付款单审批
|
||||||
|
prodOverPublic.put("arapFkApproveCode", "8000370005");//付款单保存即审批
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
prodOverPublic.put("appId", "800037");//数智中台
|
prodOverPublic.put("appId", "800037");//数智中台
|
||||||
prodOverPublic.put("publicKey", "ZJYAWb7lhAUTYqekPkU+uHJv1/ObJxb7dT7sD8HPRDGAgyhCe7eDIk+3zDUT+v578prj");//数智中台
|
prodOverPublic.put("publicKey", "ZJYAWb7lhAUTYqekPkU+uHJv1/ObJxb7dT7sD8HPRDGAgyhCe7eDIk+3zDUT+v578prj");//数智中台
|
||||||
|
|
|
@ -1,17 +1,23 @@
|
||||||
package com.hzya.frame.plugin.lets.dingtalk.callback.service.impl;
|
package com.hzya.frame.plugin.lets.dingtalk.callback.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
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.hzya.frame.plugin.lets.constant.OverallConstant;
|
||||||
import com.hzya.frame.plugin.lets.dingtalk.callback.service.CallBackService;
|
import com.hzya.frame.plugin.lets.dingtalk.callback.service.CallBackService;
|
||||||
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.dingtalk.vo.DingCallbackCrypto;
|
import com.hzya.frame.plugin.lets.dingtalk.vo.DingCallbackCrypto;
|
||||||
import com.hzya.frame.plugin.lets.u8cdto.ArapDjzb;
|
import com.hzya.frame.plugin.lets.u8cdto.ArapDjzb;
|
||||||
|
import com.hzya.frame.plugin.lets.u8cdto.GeneralBillVO_4ADto;
|
||||||
|
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 org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
@ -19,6 +25,7 @@ import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
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.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
@ -79,7 +86,7 @@ public class CallBackServiceImpl implements CallBackService {
|
||||||
break;
|
break;
|
||||||
case "PROC-AC33FC85-FB44-49FC-B926-1D966AE3BBD2":
|
case "PROC-AC33FC85-FB44-49FC-B926-1D966AE3BBD2":
|
||||||
logger.info("采购付款申请(新) -> PROC-AC33FC85-FB44-49FC-B926-1D966AE3BBD2");
|
logger.info("采购付款申请(新) -> PROC-AC33FC85-FB44-49FC-B926-1D966AE3BBD2");
|
||||||
// transferBill(eventJson);//特殊业务处理(新)
|
transferBill(eventJson);//特殊业务处理(新)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -109,26 +116,59 @@ public class CallBackServiceImpl implements CallBackService {
|
||||||
* 回调,审核付款单
|
* 回调,审核付款单
|
||||||
*/
|
*/
|
||||||
public void outSourceBill(JSONObject eventJson) throws Exception {
|
public void outSourceBill(JSONObject eventJson) throws Exception {
|
||||||
//获取token
|
try {
|
||||||
String token = getDingTalkToken();
|
//获取token
|
||||||
//实例ID
|
String token = getDingTalkToken();
|
||||||
String processInstanceId = eventJson.getString("processInstanceId");
|
//实例ID
|
||||||
//查询实例的具体信息
|
String processInstanceId = eventJson.getString("processInstanceId");
|
||||||
GetProcessInstanceResponse processInstanceDetails = DingTalkUtils.getProcessInstanceDetails(token, processInstanceId);
|
DingU8cBillEntity dingU8cBillEntity = queryU8CDing(processInstanceId);
|
||||||
GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResult processInstanceResponseBodyResult = processInstanceDetails.getBody().getResult();
|
if (dingU8cBillEntity == null) {
|
||||||
//审批状态,该回调事件只监听,审批完成的
|
Assert.state(false, "代理采购(付款单)->采购付款申请(店群专用)回调:未查询到相关审批实例,实例id:{}", processInstanceId);
|
||||||
if (processInstanceResponseBodyResult.getStatus().equals("RUNNING")) {//审批中
|
}
|
||||||
logger.info("采购付款申请(新)--->审批中");
|
//查询实例的具体信息
|
||||||
} else if (processInstanceResponseBodyResult.getStatus().equals("TERMINATED")) {//已撤销
|
GetProcessInstanceResponse processInstanceDetails = DingTalkUtils.getProcessInstanceDetails(token, processInstanceId);
|
||||||
logger.info("采购付款申请(新)--->已撤销");
|
GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResult processInstanceResponseBodyResult = processInstanceDetails.getBody().getResult();
|
||||||
} else if (processInstanceResponseBodyResult.getStatus().equals("COMPLETED")) {//审批完成
|
//审批状态,该回调事件只监听,审批完成的
|
||||||
logger.info("采购付款申请(新)--->审批完成");
|
if (processInstanceResponseBodyResult.getStatus().equals("RUNNING")) {//审批中
|
||||||
}
|
logger.info("采购付款申请(新)--->审批中");
|
||||||
//获取所有审批意见
|
} else if (processInstanceResponseBodyResult.getStatus().equals("TERMINATED")) {//已撤销
|
||||||
List<GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultOperationRecords> operationRecords = processInstanceResponseBodyResult.getOperationRecords();
|
logger.info("采购付款申请(新)--->已撤销");
|
||||||
|
} else if (processInstanceResponseBodyResult.getStatus().equals("COMPLETED")) {//审批完成
|
||||||
|
logger.info("采购付款申请(新)--->审批完成");
|
||||||
|
}
|
||||||
|
//获取所有审批意见
|
||||||
|
List<GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultOperationRecords> 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 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.saveOrUpDateV2(dingU8cBillEntity);
|
||||||
|
|
||||||
|
//审批u8c单据
|
||||||
|
approveArapDjzb(dingU8cBillEntity, remark);
|
||||||
|
}catch (Exception e){
|
||||||
|
logger.error("代理采购(付款单)->采购付款申请(店群专用)回调报错:"+e);
|
||||||
|
}
|
||||||
|
|
||||||
//审批意见过滤掉:START_PROCESS_INSTANCE:发起流程实例
|
|
||||||
operationRecords = operationRecords.stream().filter(item -> !item.getType().equals("START_PROCESS_INSTANCE")).collect(Collectors.toList());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -137,8 +177,6 @@ public class CallBackServiceImpl implements CallBackService {
|
||||||
*/
|
*/
|
||||||
public void agencyBill(JSONObject eventJson) throws Exception{
|
public void agencyBill(JSONObject eventJson) throws Exception{
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
|
||||||
//获取token
|
//获取token
|
||||||
String token = getDingTalkToken();
|
String token = getDingTalkToken();
|
||||||
//实例ID
|
//实例ID
|
||||||
|
@ -207,11 +245,66 @@ public class CallBackServiceImpl implements CallBackService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void transferBill(JSONObject eventJson) throws Exception{
|
||||||
|
//获取token
|
||||||
|
String token = getDingTalkToken();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private PushU8CByApiCode pushU8CByApiCode;
|
||||||
/**
|
/**
|
||||||
* 审核付款单
|
* 审核付款单
|
||||||
* @param remark 处理意见
|
* @param remark 处理意见
|
||||||
*/
|
*/
|
||||||
public void approveArapDjzb(DingU8cBillEntity dingU8cBillEntity,String remark){
|
public void approveArapDjzb(DingU8cBillEntity dingU8cBillEntity,String remark) throws Exception {
|
||||||
ArapDjzb arapDjzb = new ArapDjzb();
|
Map bills=new HashMap();
|
||||||
|
bills.put("djbh",dingU8cBillEntity.getU8cBillCode());
|
||||||
|
bills.put("dwbm",dingU8cBillEntity.getU8cCodeCorp());
|
||||||
|
bills.put("opinion",remark);
|
||||||
|
bills.put("operatorid", OverallConstant.getOverAllValue("u8cApiZdrCode"));
|
||||||
|
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.save(dingU8cBillEntity);
|
||||||
|
}catch (Exception e){
|
||||||
|
logger.error("推送U8C--> 丽知:审核付款单审核 失败"+e);
|
||||||
|
//失败
|
||||||
|
dingU8cBillEntity.setApprove("N");
|
||||||
|
dingU8cBillEntity.setPushInfo(e.getMessage());
|
||||||
|
dingU8cBillDao.save(dingU8cBillEntity);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Map bills=new HashMap();
|
||||||
|
bills.put("djbh","FK2108160001");
|
||||||
|
bills.put("dwbm","SHLZ");
|
||||||
|
bills.put("operatorid", "tbadmin");
|
||||||
|
String jsonStr = JSONUtil.toJsonStr(bills);
|
||||||
|
jsonStr="{\"bills\":["+jsonStr+"]}";
|
||||||
|
System.out.println(jsonStr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
<result property="pushInfo" column="push_info" jdbcType="VARCHAR"/>
|
<result property="pushInfo" column="push_info" jdbcType="VARCHAR"/>
|
||||||
<result property="dingTalkProcessId" column="ding_talk_process_id" jdbcType="VARCHAR"/>
|
<result property="dingTalkProcessId" column="ding_talk_process_id" jdbcType="VARCHAR"/>
|
||||||
<result property="ding_res" column="ding_res" jdbcType="VARCHAR"/>
|
<result property="ding_res" column="ding_res" jdbcType="VARCHAR"/>
|
||||||
<result property="approve" column="approve" jdbcType="approve"/>
|
<result property="approve" column="approve" jdbcType="VARCHAR"/>
|
||||||
<result property="modify_time" column="modify_time" jdbcType="TIMESTAMP"/>
|
<result property="modify_time" column="modify_time" jdbcType="TIMESTAMP"/>
|
||||||
<result property="create_time" column="create_time" jdbcType="TIMESTAMP"/>
|
<result property="create_time" column="create_time" jdbcType="TIMESTAMP"/>
|
||||||
<result property="sts" column="sts" jdbcType="VARCHAR"/>
|
<result property="sts" column="sts" jdbcType="VARCHAR"/>
|
||||||
|
|
Loading…
Reference in New Issue