Browse Source

添加出库审批逻辑测试

lwx_dev
erdanergou 3 years ago
parent
commit
63eefb57b2
  1. 6
      src/main/java/com/dreamchaser/depository_manage/controller/QyWxOperationController.java
  2. 290
      src/test/java/com/dreamchaser/depository_manage/SomeTest.java

6
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");

290
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<ApprovalInfo_Details> 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<ApprovalInfo_Details> 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<ApprovalInfo_SpRecord> 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<ApprovalInfo_Details> 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<ApprovalInfo_Details> 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<ApprovalInfo_SpRecord> spRecord_list = new ArrayList<>();
ApprovalInfo_SpRecord asr1 = new ApprovalInfo_SpRecord();
asr1.setSpStatus("2");
List<ApprovalInfo_Details> 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_Details> 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_Details> 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);
}
}

Loading…
Cancel
Save