From 2643dd64d18c2737b3553e3b02f18555380709ff Mon Sep 17 00:00:00 2001 From: zhengyf Date: Fri, 1 Nov 2024 08:45:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BD=E7=9F=A5:=E9=92=89=E9=92=89=E5=9B=9E?= =?UTF-8?q?=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/lets/constant/OverallConstant.java | 5 + .../service/impl/CallBackServiceImpl.java | 141 +++++++++++++++--- .../dingtalk/entity/DingU8cBillEntity.xml | 2 +- 3 files changed, 123 insertions(+), 25 deletions(-) diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/constant/OverallConstant.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/constant/OverallConstant.java index 2a6ab576..20f01480 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/constant/OverallConstant.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/constant/OverallConstant.java @@ -70,6 +70,11 @@ public class OverallConstant { //应收单 prodOverPublic.put("arapYsInsertApproveCode", "8000370069");//自定义档案内容查询 + //付款单 + prodOverPublic.put("arapFkInsetCode", "8000370044");//付款单审批 + prodOverPublic.put("arapFkApproveCode", "8000370005");//付款单保存即审批 + + prodOverPublic.put("appId", "800037");//数智中台 prodOverPublic.put("publicKey", "ZJYAWb7lhAUTYqekPkU+uHJv1/ObJxb7dT7sD8HPRDGAgyhCe7eDIk+3zDUT+v578prj");//数智中台 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 1735bcc5..a13b161a 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 @@ -1,17 +1,23 @@ package com.hzya.frame.plugin.lets.dingtalk.callback.service.impl; import cn.hutool.core.lang.Assert; +import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; 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.hzya.frame.plugin.lets.constant.OverallConstant; 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.entity.DingU8cBillEntity; import com.hzya.frame.plugin.lets.dingtalk.utils.DingTalkUtils; import com.hzya.frame.plugin.lets.dingtalk.vo.DingCallbackCrypto; 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.Logger; import org.springframework.beans.factory.annotation.Autowired; @@ -19,6 +25,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -79,7 +86,7 @@ public class CallBackServiceImpl implements CallBackService { break; case "PROC-AC33FC85-FB44-49FC-B926-1D966AE3BBD2": logger.info("采购付款申请(新) -> PROC-AC33FC85-FB44-49FC-B926-1D966AE3BBD2"); -// transferBill(eventJson);//特殊业务处理(新) + transferBill(eventJson);//特殊业务处理(新) break; } @@ -109,26 +116,59 @@ public class CallBackServiceImpl implements CallBackService { * 回调,审核付款单 */ public void outSourceBill(JSONObject eventJson) throws Exception { - //获取token - String token = getDingTalkToken(); - //实例ID - String processInstanceId = eventJson.getString("processInstanceId"); - //查询实例的具体信息 - GetProcessInstanceResponse processInstanceDetails = DingTalkUtils.getProcessInstanceDetails(token, processInstanceId); - GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResult processInstanceResponseBodyResult = processInstanceDetails.getBody().getResult(); - //审批状态,该回调事件只监听,审批完成的 - if (processInstanceResponseBodyResult.getStatus().equals("RUNNING")) {//审批中 - logger.info("采购付款申请(新)--->审批中"); - } else if (processInstanceResponseBodyResult.getStatus().equals("TERMINATED")) {//已撤销 - logger.info("采购付款申请(新)--->已撤销"); - } else if (processInstanceResponseBodyResult.getStatus().equals("COMPLETED")) {//审批完成 - logger.info("采购付款申请(新)--->审批完成"); - } - //获取所有审批意见 - List operationRecords = processInstanceResponseBodyResult.getOperationRecords(); + try { + //获取token + String token = getDingTalkToken(); + //实例ID + String processInstanceId = eventJson.getString("processInstanceId"); + DingU8cBillEntity dingU8cBillEntity = queryU8CDing(processInstanceId); + if (dingU8cBillEntity == null) { + Assert.state(false, "代理采购(付款单)->采购付款申请(店群专用)回调:未查询到相关审批实例,实例id:{}", processInstanceId); + } + //查询实例的具体信息 + GetProcessInstanceResponse processInstanceDetails = DingTalkUtils.getProcessInstanceDetails(token, processInstanceId); + GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResult processInstanceResponseBodyResult = processInstanceDetails.getBody().getResult(); + //审批状态,该回调事件只监听,审批完成的 + if (processInstanceResponseBodyResult.getStatus().equals("RUNNING")) {//审批中 + logger.info("采购付款申请(新)--->审批中"); + } else if (processInstanceResponseBodyResult.getStatus().equals("TERMINATED")) {//已撤销 + logger.info("采购付款申请(新)--->已撤销"); + } 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 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{ try { - - //获取token String token = getDingTalkToken(); //实例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 处理意见 */ - public void approveArapDjzb(DingU8cBillEntity dingU8cBillEntity,String remark){ - ArapDjzb arapDjzb = new ArapDjzb(); + public void approveArapDjzb(DingU8cBillEntity dingU8cBillEntity,String remark) throws Exception { + 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); } } diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/dingtalk/entity/DingU8cBillEntity.xml b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/dingtalk/entity/DingU8cBillEntity.xml index 005d7871..01a03264 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/dingtalk/entity/DingU8cBillEntity.xml +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/dingtalk/entity/DingU8cBillEntity.xml @@ -13,7 +13,7 @@ - +