From 63eefb57b27bd274878a36605fd8a08259ab07a1 Mon Sep 17 00:00:00 2001 From: erdanergou Date: Wed, 31 May 2023 15:44:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=87=BA=E5=BA=93=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=E9=80=BB=E8=BE=91=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/QyWxOperationController.java | 6 +- .../depository_manage/SomeTest.java | 290 ++++++++++++++---- 2 files changed, 230 insertions(+), 66 deletions(-) diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/QyWxOperationController.java b/src/main/java/com/dreamchaser/depository_manage/controller/QyWxOperationController.java index 88fd7b5e..7b36169e 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/QyWxOperationController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/QyWxOperationController.java @@ -152,7 +152,8 @@ public class QyWxOperationController { PrintWriter writer = response.getWriter(); writer.println(sEchoStr); writer.close(); - } else { + } + else { // 如果是响应事件 String ToUserName = (String) map.get("ToUserName"); @@ -495,7 +496,8 @@ public class QyWxOperationController { PrintWriter writer = response.getWriter(); writer.println(sEchoStr); writer.close(); - } else { + } else + { String ToUserName = (String) map.get("ToUserName"); String Encrypt = (String) map.get("Encrypt"); String AgentID = (String) map.get("AgentID"); diff --git a/src/test/java/com/dreamchaser/depository_manage/SomeTest.java b/src/test/java/com/dreamchaser/depository_manage/SomeTest.java index a0d1607f..cce81c63 100644 --- a/src/test/java/com/dreamchaser/depository_manage/SomeTest.java +++ b/src/test/java/com/dreamchaser/depository_manage/SomeTest.java @@ -1,12 +1,16 @@ package com.dreamchaser.depository_manage; import com.dreamchaser.depository_manage.config.QyWxConfig; +import com.dreamchaser.depository_manage.config.QyWxJMJM.com.qq.weixin.mp.aes.AesException; +import com.dreamchaser.depository_manage.config.QyWxJMJM.com.qq.weixin.mp.aes.WXBizMsgCrypt; import com.dreamchaser.depository_manage.pojo.ApplicationOutRecordP; -import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.ApprovalInfo_Details; -import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.ApprovalInfo_Details_Approver; -import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.ApprovalInfo_SpRecord; +import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.*; +import com.dreamchaser.depository_manage.security.pool.HandlesOtherFunctionalThreadPool; import com.dreamchaser.depository_manage.security.pool.RedisPool; import com.dreamchaser.depository_manage.service.DepositoryRecordService; +import com.dreamchaser.depository_manage.utils.Md5; +import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; +import com.dreamchaser.depository_manage.utils.QyWxXMLUtils; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -15,6 +19,7 @@ import org.springframework.test.context.junit4.SpringRunner; import java.util.ArrayList; import java.util.List; +import java.util.Map; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @RunWith(SpringRunner.class) @@ -26,77 +31,234 @@ public class SomeTest { @Autowired RedisPool redisPool; - @Test - public void someTest() { - ApprovalInfo_SpRecord approvalInfo_spRecord = new ApprovalInfo_SpRecord(); - List details1 = new ArrayList<>(); - ApprovalInfo_Details ad1 = new ApprovalInfo_Details(); - ad1.setSpStatus("2"); - ApprovalInfo_Details_Approver approver1 = new ApprovalInfo_Details_Approver(); - approver1.setUserId("XinPing"); - ad1.setApprover(approver1); - String spNo = "202305310014"; - int approval_count = 2; - int flagForDepository = 1; - boolean flagForFirst = true; - details1.add(ad1); - approvalInfo_spRecord.setDetails(details1); - if (approvalInfo_spRecord != null) { - // 获取第二个节点中审批人信息 - List details = approvalInfo_spRecord.getDetails(); - // 定义当前是否为标签 - boolean flagForLabel = true; // 默认为标签 - - - // 如果节点数目不等于标签人员数 - ApplicationOutRecordP applicationOutRecordPById = depositoryRecordService.findApplicationOutRecordPById(5); - - if (Integer.compare(applicationOutRecordPById.getFlagForOpenDepository(), 2) == 0) { - // 如果是申请的开放仓库 - - // 获取当时发送审批时其他部门负责人Id - String otherDepartmentIdList = (String) redisPool.getRedisTemplateByDb(14).opsForHash().get("wms_QyWxMessage_" + spNo, "otherDepartmentIdList"); - if (otherDepartmentIdList != null) { - for (ApprovalInfo_Details ad : details - ) { - // 获取当前节点审批人userId - String approver = ad.getApprover().getUserId(); - flagForLabel = flagForLabel && otherDepartmentIdList.contains(approver); - } + public void callback(ApprovalInfo approvalInfo) { + + + // 获取当前审批的编号 + String spNo = approvalInfo.getSpNo(); + + // 获取当前审批关联的主订单 + String mainId = (String) redisPool.getRedisTemplateByDb(14).opsForHash().get("wms_QyWxMessage_" + spNo, "mainId"); + + // 获取所有审批流程信息 + List spRecord_list = approvalInfo.getSpRecord(); + + // 获取审批流程信息 + ApprovalInfo_SpRecord as = null; + // 获取审批节点详情 + ApprovalInfo_Details approvalInfo_details = null; + // 定义当前流程审批时间 + String as_SpTime = ""; + // 定义当前审批流程是是否要通过仓储中心 + boolean flagForFirst = true; // 默认通过 + + // 设置当前审批是否为仓库管理员(1为部门负责人,2为仓储中心,3为仓库管理员) + int flagForDepository = 1; // 默认为部门负责人 + + // 定义已完成审批的节点数 + int approval_count = 0; + + // 获取审批申请状态变化类型:1-提单;2-同意;3-驳回;4-转审;5-催办;6-撤销;8-通过后撤销;10-添加备注 + String spStatus = approvalInfo.getStatuChangeEvent(); + + for (ApprovalInfo_SpRecord approvalInfo_SpRecord : spRecord_list) { + + // 获取当前审批节点详情。当节点为标签或上级时,一个节点可能有多个分支 + List details = approvalInfo_SpRecord.getDetails(); + + // 定义审批操作时间 + String spTime = ""; + // 定义审批操作状态 + String ad_SpStatus = ""; + // 定义审批详情 + ApprovalInfo_Details ap_detail = null; + + for (ApprovalInfo_Details ad : details) { + + // 获取节点分支审批人审批操作时间,0为尚未操作 + spTime = ad.getSpTime(); + + // 如果当前审批节点已经处理 + if (!("0".equals(spTime))) { + + // 设置当前处理的详情 + ap_detail = ad; + // 设置当前审批的状态 + ad_SpStatus = ad.getSpStatus(); + // 已审批节点数+1 + approval_count++; + break; } - } else { - flagForLabel = false; } + if (!"0".equals(spTime)) { + // 如果已经操作 + + // 盘点当前审批状态是否为回调时操作状态 + if (ad_SpStatus.equals(spStatus)) { + // 将当前审批进行暂存 + if (as == null) { + // 如果是当前并没有获取到审批节点 + as = approvalInfo_SpRecord; + as_SpTime = spTime; + approvalInfo_details = ap_detail; + } else { + // 如果已经获取到审批节点 + // 获取当前审批节点处理时间 + long aLong = Long.parseLong(spTime); - if (!flagForLabel) { - // 如果第二个节点不是标签节点 - if (approval_count > 1) { - // 如果完成审批的节点数大于1 - flagForDepository = 3; + // 获取之前节点的审批时间 + long aLong1 = Long.parseLong(as_SpTime); - // 如果已经完成该审批记录,则进行删除 -// redisPool.getRedisTemplateByDb(14).delete("wms_QyWxMessage_" + spNo); - } else { - // 如果当前是第一个节点 - flagForFirst = false; + if (aLong >= aLong1) { + // 如果当前审批节点是最近处理 + + // 更新当前审批节点 + as = approvalInfo_SpRecord; + as_SpTime = spTime; + approvalInfo_details = ap_detail; + flagForFirst = false; + } + } } - } else { - // 如果第二个节点是标签节点 - if (approval_count > 2) { - // 如果完成审批的节点数大于2 - flagForDepository = 3; - // 如果已经完成该审批记录,则进行删除 -// redisPool.getRedisTemplateByDb(14).delete("wms_QyWxMessage_" + spNo); - } else { - // 如果当前并不是标签节点后 - flagForDepository = 2; + } + } + + // 1-审批中;2-已同意;3-已驳回;4-已转审 + if (!("1".equals(spStatus))) { + + // 如果当前审批已同意 + if (QyWxConfig.out_approval_template_id.equals(approvalInfo.getTemplateId())) { + // 如果是物料出库申请审批 + + // 获取第二个节点数据 + + ApprovalInfo_SpRecord approvalInfo_spRecord = null; + if (spRecord_list.size() > 1) { + approvalInfo_spRecord = spRecord_list.get(1); } + if (approvalInfo_spRecord != null) { + // 获取第二个节点中审批人信息 + List details = approvalInfo_spRecord.getDetails(); + // 定义当前是否为标签 + boolean flagForLabel = true; // 默认为标签 + + // 获取当前的主订单 + ApplicationOutRecordP applicationOutRecordPById = depositoryRecordService.findApplicationOutRecordPById(Integer.parseInt(mainId)); + + if (Integer.compare(applicationOutRecordPById.getFlagForOpenDepository(), 2) == 0) { + // 如果是申请的开放仓库 + // 获取当时发送审批时其他部门负责人Id + String otherDepartmentIdList = (String) redisPool.getRedisTemplateByDb(14).opsForHash().get("wms_QyWxMessage_" + spNo, "otherDepartmentIdList"); + if (otherDepartmentIdList != null) { + for (ApprovalInfo_Details ad : details + ) { + // 获取当前节点审批人userId + String approver = ad.getApprover().getUserId(); + flagForLabel = flagForLabel && otherDepartmentIdList.contains(approver); + } + } + } else { + flagForLabel = false; + } + + + if (!flagForLabel) { + // 如果第二个节点不是标签节点 + if (approval_count > 1) { + // 如果完成审批的节点数大于1 + flagForDepository = 3; + + // 如果已经完成该审批记录,则进行删除 + redisPool.getRedisTemplateByDb(14).delete("wms_QyWxMessage_" + spNo); + } else { + // 如果当前是第一个节点 + flagForFirst = false; + } + + } else { + // 如果第二个节点是标签节点 + if (approval_count > 2) { + // 如果完成审批的节点数大于2 + flagForDepository = 3; + // 如果已经完成该审批记录,则进行删除 + redisPool.getRedisTemplateByDb(14).delete("wms_QyWxMessage_" + spNo); + } else { + // 如果当前并不是标签节点后 + flagForDepository = 2; + } + + } + } } + // 开启一个线程用于进行下步操作 } - System.out.println(flagForDepository); - System.out.println(flagForFirst); + + System.out.println("flagForDepository: " + flagForDepository); + System.out.println("flagForFirst: " + flagForFirst); + + } + + @Test + public void someTest() { + + ApprovalInfo approvalInfo = new ApprovalInfo(); + approvalInfo.setTemplateId("3WKiKVCzyLv3Y1LaHZxp4DimQEpCdvYP52HsAUtF"); + approvalInfo.setSpNo("202305310019"); + + + List spRecord_list = new ArrayList<>(); + ApprovalInfo_SpRecord asr1 = new ApprovalInfo_SpRecord(); + asr1.setSpStatus("2"); + List approvalInfo_Details1 = new ArrayList<>(); + ApprovalInfo_Details ad1 = new ApprovalInfo_Details(); + ad1.setSpStatus("2"); + ad1.setSpTime("1685517791000"); + ApprovalInfo_Details_Approver approver1 = new ApprovalInfo_Details_Approver(); + approver1.setUserId("PangFuZhen"); + ad1.setApprover(approver1); + approvalInfo_Details1.add(ad1); + asr1.setDetails(approvalInfo_Details1); + + + ApprovalInfo_SpRecord asr2 = new ApprovalInfo_SpRecord(); + asr2.setSpStatus("2"); + List approvalInfo_Details2 = new ArrayList<>(); + ApprovalInfo_Details ad2 = new ApprovalInfo_Details(); + ad2.setSpStatus("2"); + ad2.setSpTime("1685517793000"); + ApprovalInfo_Details_Approver approver2 = new ApprovalInfo_Details_Approver(); + approver2.setUserId("XinPing"); + ad2.setApprover(approver2); + approvalInfo_Details2.add(ad2); + asr2.setDetails(approvalInfo_Details2); + + + ApprovalInfo_SpRecord asr3 = new ApprovalInfo_SpRecord(); + asr3.setSpStatus("2"); + List approvalInfo_Details3 = new ArrayList<>(); + ApprovalInfo_Details ad3 = new ApprovalInfo_Details(); + ad3.setSpStatus("2"); + ad3.setSpTime("1685517794000"); + ApprovalInfo_Details_Approver approver3 = new ApprovalInfo_Details_Approver(); + approver3.setUserId("PangFuZhen"); + ad3.setApprover(approver3); + approvalInfo_Details3.add(ad3); + asr3.setDetails(approvalInfo_Details3); + + + spRecord_list.add(asr1); + spRecord_list.add(asr2); +// spRecord_list.add(asr3); + approvalInfo.setSpRecord(spRecord_list); + + approvalInfo.setStatuChangeEvent("2"); + + + callback(approvalInfo); + + } }