diff --git a/src/main/java/com/dreamchaser/depository_manage/config/QyWxConfig.java b/src/main/java/com/dreamchaser/depository_manage/config/QyWxConfig.java index 1ebb11ed..172bbeca 100644 --- a/src/main/java/com/dreamchaser/depository_manage/config/QyWxConfig.java +++ b/src/main/java/com/dreamchaser/depository_manage/config/QyWxConfig.java @@ -160,7 +160,7 @@ public class QyWxConfig { } // 获取企业微信中仓储中心负责人标签的成员的userId - public static List getQyWxLabelUserList(String UserAgent) { + public static List getQyWxLabelUserListForLabelName(String UserAgent,String labelName) { // 获取当前token String tempToken = GetQYWXToken(UserAgent); String url = String.format("https://qyapi.weixin.qq.com/cgi-bin/tag/list?access_token=%s", tempToken); @@ -172,7 +172,7 @@ public class QyWxConfig { JSONArray taglist = jsonObject.getJSONArray("taglist"); for (Object o : taglist) { qywxLabel qywxLabel = JSONObject.toJavaObject((JSON) o, qywxLabel.class); - if (qywxLabel.getTagname().contains("仓储中心负责人")) { + if (qywxLabel.getTagname().contains(labelName)) { List qyWxLabelUserList = getQyWxLabelUserList(tempToken, qywxLabel.getTagid().toString()); for (qywxLabelUser qywxLabelUser : qyWxLabelUserList) { userIdList.add(qywxLabelUser.getUserid()); 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 7b36169e..12bd0170 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/QyWxOperationController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/QyWxOperationController.java @@ -678,12 +678,14 @@ public class QyWxOperationController { int finalFlagForDepository = flagForDepository; HandlesOtherFunctionalThreadPool.execute(() -> depositoryRecordService.reviewByQyWxApprovalOut(mainId, finalApprovalInfo_details, crypt, spStatus, approvalInfo.getSpNo(), finalFlagForFirst, finalFlagForDepository)); - } else if (QyWxConfig.stockTaking_approval_template_id.equals(approvalInfo.getTemplateId())) { + } + else if (QyWxConfig.stockTaking_approval_template_id.equals(approvalInfo.getTemplateId())) { // 如果是库存盘点审批 // 开启一个线程用于进行处理 ApprovalInfo_Details finalApprovalInfo_details = approvalInfo_details; HandlesOtherFunctionalThreadPool.execute(() -> stockTakingService.reviewByQyWxApproval(mainId, finalApprovalInfo_details, crypt, spStatus, approvalInfo.getSpNo())); - } else if (QyWxConfig.in_approval_template_id.equals(approvalInfo.getTemplateId())) { + } + else if (QyWxConfig.in_approval_template_id.equals(approvalInfo.getTemplateId())) { // 如果是入库审批 // 开启一个线程用于进行处理 ApprovalInfo_Details finalApprovalInfo_details = approvalInfo_details; diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java index 00333e6e..9c66e21a 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java @@ -1,6 +1,5 @@ package com.dreamchaser.depository_manage.service.impl; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.dreamchaser.depository_manage.config.PublicConfig; import com.dreamchaser.depository_manage.config.QyWxConfig; @@ -767,8 +766,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { flagForApproval = isApprovalPass; } map.put("flagForApproval", flagForApproval); - } - else { + } else { // 设置审批权限 map.put("inType", "mt"); // 获取当前类别物料是否需要审批 @@ -842,7 +840,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { * @return */ Integer updateInventoryInfoForApproval(Map map, double quantity, Material materialById, Place placeById) { - log.info("入库审批后要修改的数据: "+JSONObject.toJSONString(map)+JSONObject.toJSONString(materialById)+JSONObject.toJSONString(placeById)); + log.info("入库审批后要修改的数据: " + JSONObject.toJSONString(map) + JSONObject.toJSONString(materialById) + JSONObject.toJSONString(placeById)); // 获取当前入库的物料id Integer newInMid = ObjectFormatUtil.toInteger(map.get("newInMid")); // 获取当前入库记录id @@ -2498,9 +2496,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 将主订单插入到redis中 redisPool.getRedisTemplateByDb(15).opsForHash().put("record:" + recordP.getId(), "minRecord", minRecordByMain.toString()); - map.put("state", "仓储中心负责人审核通过"); + map.put("state", userByPort.getName()+"审核通过"); if (flagForDepartmentHeadPass || flagForOpenDepository == 2) { - map.put("state", "部门负责人审核通过"); + map.put("state", userByPort.getName()+"审核通过"); map.put("departmentheadTime", DateUtil.DateTimeToTimeStamp(simpleTime)); map.put("depositoryManagerPass", 4); map.put("departmenthead", userByPort.getId()); @@ -2512,10 +2510,10 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { updateInventoryForOutRefused(recordP); map.put("depositoryManagerPass", 2); map.put("pass", 2); - map.put("state", "仓储中心负责人审核未通过"); + map.put("state", userByPort.getName() + "审核未通过"); if (flagForDepartmentHeadPass || flagForOpenDepository == 2) { map.put("departmentheadPass", 2); - map.put("state", "部门负责人审核未通过"); + map.put("state", userByPort.getName() + "审核未通过"); map.put("departmentheadTime", DateUtil.DateTimeToTimeStamp(simpleTime)); map.put("departmenthead", userByPort.getId()); map.put("depositoryManagerPass", 4); @@ -2553,7 +2551,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { } else { map.put("state", "待仓储中心负责人审核"); // 获取仓储中心负责人标签的用户userId - List qyWxLabelUserList = QyWxConfig.getQyWxLabelUserList(userAgent); + List qyWxLabelUserList = QyWxConfig.getQyWxLabelUserListForLabelName(userAgent, "仓储中心负责人"); for (String s : qyWxLabelUserList) { Map userByQyWxUserId = PublicConfig.findUserByQyWxUserId(s); UserByPort user = (UserByPort) userByQyWxUserId.get("user"); @@ -2568,7 +2566,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { updateInventoryForOutRefused(recordP); map.put("pass", 2); map.put("departmentheadPass", 2); - map.put("state", "部门负责人审核未通过"); + map.put("state", userByPort.getName() + "审核未通过"); redisPool.getRedisTemplateByDb(14).delete("wms_QyWxMessage_" + spNo); } } @@ -3044,7 +3042,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { updateInventoryForOutRefused(record); result = "驳回"; map.put("pass", 2); - map.put("state", "部门负责人审核未通过"); + map.put("state", userToken.getName()+"审核未通过"); } // 开启线程更改其他用户卡片模板样式 @@ -3327,10 +3325,10 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 将主订单插入到redis中 redisPool.getRedisTemplateByDb(15).opsForHash().put("record:" + record.getId(), "minRecord", minRecordByMain.toString()); - map.put("state", "仓储中心负责人审核通过"); + map.put("state", userToken.getName()+"审核通过"); if (flagFordepartmentTime || flagForOpenDepository == 2) { - map.put("state", "部门负责人审核通过"); + map.put("state", userToken.getName()+"审核通过"); map.put("departmentheadTime", DateUtil.DateTimeToTimeStamp(simpleTime)); map.put("depositoryManagerPass", 4); map.put("departmenthead", userToken.getId()); @@ -3341,9 +3339,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { updateInventoryForOutRefused(record); result = "驳回"; map.put("pass", 2); - map.put("state", "仓储中心负责人审核未通过"); + map.put("state", userToken.getName()+"审核未通过"); if (flagFordepartmentTime) { - map.put("state", "部门负责人审核未通过"); + map.put("state", userToken.getName()+"审核未通过"); map.put("departmenthead", userToken.getId()); map.put("departmentheadPass", 2); map.put("departmentheadTime", DateUtil.DateTimeToTimeStamp(simpleTime)); @@ -3567,7 +3565,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 如果点击的是驳回 map.put("pass", 2); map.put("departmentheadPass", 2); - map.put("state", "部门负责人审核未通过"); + map.put("state", userByPort.getName()+"审核未通过"); } } else { @@ -3782,13 +3780,13 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 将主订单插入到redis中 redisPool.getRedisTemplateByDb(15).opsForHash().put("record:" + recordP.getId(), "minRecord", minRecordByMain.toString()); - map.put("state", "仓储中心负责人审核通过"); + map.put("state", userByPort.getName()+"审核通过"); } else { // 如果是不通过 updateInventoryForOutRefused(recordP); map.put("depositoryManagerPass", 2); map.put("pass", 2); - map.put("state", "仓储中心负责人审核未通过"); + map.put("state", userByPort.getName()+"审核未通过"); } } map.put("id", outId); diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/QyWxOperationService.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/QyWxOperationService.java index c346e808..b1c1ce20 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/QyWxOperationService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/QyWxOperationService.java @@ -19,6 +19,7 @@ import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import sun.net.PortConfig; import java.util.*; @@ -1566,6 +1567,9 @@ public class QyWxOperationService { // 设置标志位,用于标志是否全为办公用品库或消防用品库 boolean flag = true; + // 设置标志位,标志是否为中心仓下的办公用品库(默认不是) + boolean flagForZXCWorkWarehouse = false; + // 定义仓库Id列表 List depositoryIdList = new ArrayList<>(); List materialTypeIdList = new ArrayList<>(); @@ -1587,6 +1591,12 @@ public class QyWxOperationService { if (!depositoryTop.getDname().contains("前置仓")) { // 如果不是前置仓下的仓库 flag = false; + } else { + // 获取当前选择的仓库名称 + String dname = depositoryById.getDname(); + if (dname.contains("办公")) { + flagForZXCWorkWarehouse = true; + } } if (!depositoryIdList.contains(depositoryId)) { @@ -1772,26 +1782,61 @@ public class QyWxOperationService { approvalTemplate.setApply_data(approval_template_apply_data); //抄送方式:1-提单时抄送(默认值); 2-单据通过后抄送;3-提单和单据通过后抄送。仅use_template_approver为0时生效。 - approvalTemplate.setNotify_type(2); + approvalTemplate.setNotify_type(1); if (!flag) { + if (flagForZXCWorkWarehouse) { + // 如果是办公用品库 + // 流程修改为 部门负责人-平衡岗人员-综合部负责人-管理员 + + List userListForLabelName = QyWxConfig.getQyWxLabelUserListForLabelName(userAgent, "平衡岗"); + + // 用于设置平衡岗负责人流程 + Approval_template_approver approval_template_approver_Label = new Approval_template_approver(); + approval_template_approver_Label.setAttr(1); + approval_template_approver_Label.setUserid(userListForLabelName); - // 获取仓储中心负责人标签的用户userId - List qyWxLabelUserList = QyWxConfig.getQyWxLabelUserList(userAgent); - // 用于设置仓储中心负责人流程 - Approval_template_approver approval_template_approver_Label = new Approval_template_approver(); - approval_template_approver_Label.setAttr(1); - approval_template_approver_Label.setUserid(qyWxLabelUserList); + approval_template_approver_list.add(approval_template_approver_Label); - approval_template_approver_list.add(approval_template_approver_Label); + // 获取综合办部门负责人 + List departmentHeadByUser = PublicConfig.findDepartmentHeadByUser(268, userKey, token); + List ZHBQyWxId = new ArrayList<>(); + for (UserByPort userByPort : departmentHeadByUser) { + String QyWxId = userByPort.getWorkwechat(); + if (QyWxId == null || "".equals(QyWxId)) { + QyWxId = userByPort.getWechat(); + } + ZHBQyWxId.add(QyWxId); + } + // 用于设置综合办负责人流程 + Approval_template_approver approval_template_approver_ZHBHeader = new Approval_template_approver(); + approval_template_approver_ZHBHeader.setAttr(1); + approval_template_approver_ZHBHeader.setUserid(ZHBQyWxId); + approval_template_approver_list.add(approval_template_approver_ZHBHeader); - // 如果是通过开放仓库申请的 - if (Integer.compare(2, flagForOpenDepository) == 0) { - otherDepartmentIdList = qyWxLabelUserList; + } else { + // 如果不是办公用品库 + + + // 获取仓储中心负责人标签的用户userId + List qyWxLabelUserList = QyWxConfig.getQyWxLabelUserListForLabelName(userAgent, "仓储中心负责人"); + // 用于设置仓储中心负责人流程 + Approval_template_approver approval_template_approver_Label = new Approval_template_approver(); + approval_template_approver_Label.setAttr(1); + approval_template_approver_Label.setUserid(qyWxLabelUserList); + + approval_template_approver_list.add(approval_template_approver_Label); + + // 如果是通过开放仓库申请的 + if (Integer.compare(2, flagForOpenDepository) == 0) { + otherDepartmentIdList = qyWxLabelUserList; + } } - } else { + + } + else { // 如果不是中心仓下的仓库 if (Integer.compare(2, flagForOpenDepository) == 0) { diff --git a/src/test/java/com/dreamchaser/depository_manage/SomeTest.java b/src/test/java/com/dreamchaser/depository_manage/SomeTest.java index 4eac4f37..b78bc78f 100644 --- a/src/test/java/com/dreamchaser/depository_manage/SomeTest.java +++ b/src/test/java/com/dreamchaser/depository_manage/SomeTest.java @@ -1,8 +1,10 @@ package com.dreamchaser.depository_manage; +import com.dreamchaser.depository_manage.config.PublicConfig; 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.entity.UserByPort; import com.dreamchaser.depository_manage.pojo.ApplicationOutRecordP; import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.*; import com.dreamchaser.depository_manage.security.pool.HandlesOtherFunctionalThreadPool; @@ -73,6 +75,7 @@ public class SomeTest { // 定义审批详情 ApprovalInfo_Details ap_detail = null; + // 用于获取当前审批的最新节点 for (ApprovalInfo_Details ad : details) { // 获取节点分支审批人审批操作时间,0为尚未操作 @@ -90,6 +93,8 @@ public class SomeTest { break; } } + + if (!"0".equals(spTime)) { // 如果已经操作