From 08c3c3b0524abdbdb255fb6fedeadb71141ee9c7 Mon Sep 17 00:00:00 2001 From: erdanergou Date: Thu, 25 May 2023 09:21:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=A1=E6=89=B9=E5=90=8E?= =?UTF-8?q?=E7=9A=84=E7=AE=A1=E7=90=86=E5=91=98=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../depository_manage/mapper/RoleMapper.java | 1 + .../impl/DepositoryRecordServiceImpl.java | 391 +++++++++++++----- .../service/impl/QyWxOperationService.java | 209 ++++++---- .../service/impl/SplitUnitServiceImpl.java | 67 ++- 4 files changed, 466 insertions(+), 202 deletions(-) diff --git a/src/main/java/com/dreamchaser/depository_manage/mapper/RoleMapper.java b/src/main/java/com/dreamchaser/depository_manage/mapper/RoleMapper.java index 5e3130c6..06b918b8 100644 --- a/src/main/java/com/dreamchaser/depository_manage/mapper/RoleMapper.java +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/RoleMapper.java @@ -101,6 +101,7 @@ public interface RoleMapper { */ List findUserIdByMtId(Long mtId); + /** * 根据条件获取权限 * 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 6bad09cc..6f1f7ac9 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 @@ -270,7 +270,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { map.put("code", code); map.put("pass", 3); map.put("quantity", quantity); - log.info("插入出库申请主表:"+JSONObject.toJSONString(map)); + log.info("插入出库申请主表:" + JSONObject.toJSONString(map)); return depositoryRecordMapper.insertApplicationOutRecord(map); } @@ -732,10 +732,26 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { flagForApproval = true; StringBuilder approverId = new StringBuilder(); for (RoleAndDepository roleAndDepository : roleAndDepositoryByDid) { - approverId.append(roleAndDepository.getUserId()).append(","); + // 获取该权限类型 + int classes = roleAndDepository.getClasses(); + // 获取userid + Integer userId = roleAndDepository.getUserId(); + if (classes == 1) { + // 如果是对人设置权限 + approverId.append(userId).append(","); + } else { + // 如果是对岗位 + + // 定义用于获取当前岗位下的人的参数map + Map paramForGetUserByPost = new HashMap<>(); + paramForGetUserByPost.put("position", roleAndDepository.getUserId()); + List userByPortList = LinkInterfaceUtil.FindUserByMap(paramForGetUserByPost, null, null); + for (UserByPort userByPort : userByPortList) { + approverId.append(userByPort.getId()).append(","); + } + } } map.put("approverId", approverId.toString()); - } if (isApprovalPass) { if (flagForApproval) { @@ -752,12 +768,23 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { map.put("inType", "mt"); // 获取当前类别物料是否需要审批 List roleAndMaterials = roleService.findRoleAndMaterialTypeByMtId(materialById.getMaterialTypeId()); - if (roleAndMaterials.size() > 0) { flagForApproval = true; StringBuilder approverId = new StringBuilder(); for (RoleAndMaterialType roleAndMaterialType : roleAndMaterials) { - approverId.append(roleAndMaterialType.getUid()).append(","); + Integer classes = roleAndMaterialType.getClasses(); + Integer uid = roleAndMaterialType.getUid(); + if (classes == 1) { + approverId.append(uid).append(","); + } else { + // 定义用于获取当前岗位下的人的参数map + Map paramForGetUserByPost = new HashMap<>(); + paramForGetUserByPost.put("position", uid); + List userByPortList = LinkInterfaceUtil.FindUserByMap(paramForGetUserByPost, null, null); + for (UserByPort userByPort : userByPortList) { + approverId.append(userByPort.getId()).append(","); + } + } } map.put("approverId", approverId.toString()); } @@ -913,7 +940,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 修改库存记录 materialMapper.updateInventory(inventoryById); } - log.info("插入出库申请子表"+JSONObject.toJSONString(map)); + log.info("插入出库申请子表" + JSONObject.toJSONString(map)); return depositoryRecordMapper.insertApplicationOutRecordMin(map); } @@ -2277,6 +2304,8 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { if (!flagForMtOrDepository) { // 如果是通过类型 + StringBuilder QyWxUid = new StringBuilder(); + // 获取当前仓库下的子订单 Long materialTypeId = inventory.getMaterialTypeId(); if (!findThisIdIsExistForMaterialType(materialTypeIdList, materialTypeId)) { @@ -2292,26 +2321,46 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { minIdList.add(applicationOutRecordMin.getId()); minIdByMaterialType.put("materialType" + materialTypeId, minIdList); - // 获取该物料所处仓库的仓库管理员 + // 获取该物料所处类型的管理员 List userIdByDid = new ArrayList<>(); - userIdByDid = roleService.findUserIdByMtId(inventory.getMaterialTypeId()); - StringBuilder QyWxUid = new StringBuilder(); + + // 用于查询对应的管理员权限 + Map paramForUserManager = new HashMap<>(); + paramForUserManager.put("mtid", materialTypeId); + + List roleAndMaterialTypeByCondition = roleService.findRoleAndMaterialTypeByCondition(paramForUserManager); + for (RoleAndMaterialType roleAndMaterialType : roleAndMaterialTypeByCondition) { + int classes = roleAndMaterialType.getClasses(); + if (classes == 1) { + // 如果是对人设置的权限 + userIdByDid.add(roleAndMaterialType.getUid()); + } else { + // 如果是对岗位 + + // 定义用于获取当前岗位下的人的参数map + Map paramForGetUserByPost = new HashMap<>(); + paramForGetUserByPost.put("position", roleAndMaterialType.getUid()); + List userByPortList = LinkInterfaceUtil.FindUserByMap(paramForGetUserByPost, userKey, token); + for (UserByPort userByPort1 : userByPortList) { + Integer userId1 = userByPort1.getId(); + // 修改redis中用户的数据 + updateRedisDataForUserManager(userId1, minRecordKey); + minRecordManage.append(userId1).append(","); + // 获取企业微信id或微信id + String userByPortWorkwechat = userByPort1.getWorkwechat(); + if (userByPortWorkwechat == null || "".equals(userByPortWorkwechat)) { + userByPortWorkwechat = userByPort1.getWechat(); + } + QyWxUid.append(userByPortWorkwechat).append(","); + } + } + } + + for (Integer integer : userIdByDid) { // 获取仓库管理员信息 - UserByPort manager = LinkInterfaceUtil.FindUserById(integer, null, null); - // 仓库管理员订单信息 - Map userRecord = new HashMap<>(); - // 用户当前子订单 - String userMinRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get("user:" + integer, "minRecord"); - if (userMinRecord == null) { // 如果当前用户没有子订单 - userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单 - } else { // 如果当前用户已经有子订单 - StringBuilder minRecordList = new StringBuilder(userMinRecord); // 转为stringbuilder类型 - minRecordList.insert(1, minRecordKey + ",");// 将当前子订单插入头部 - userRecord.put("minRecord", minRecordList.toString()); - } - // 更新redis中用户记录 - redisPool.getRedisTemplateByDb(15).opsForHash().putAll("user:" + integer, userRecord); + UserByPort manager = LinkInterfaceUtil.FindUserById(integer, userKey, token); + updateRedisDataForUserManager(integer, minRecordKey); minRecordManage.append(integer).append(","); String workwechat = manager.getWorkwechat(); if (workwechat == null || "".equals(workwechat)) { @@ -2335,6 +2384,8 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 如果是通过仓库 + StringBuilder QyWxUid = new StringBuilder(); + if (!findThisIdIsExistForDepository(depositoryIdList, depositoryId)) { // 如果当前仓库id没有存入过 depositoryIdList.add(depositoryId); @@ -2350,24 +2401,45 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 获取该物料所处仓库的仓库管理员 List userIdByDid = new ArrayList<>(); - userIdByDid = roleService.findUserIdByDid(depositoryId); - StringBuilder QyWxUid = new StringBuilder(); + + // 用于查询对应的管理员权限 + Map paramForUserManager = new HashMap<>(); + paramForUserManager.put("depositoryId", depositoryId); + + List roleAndDepositoryByCondition = roleService.findRoleAndDepositoryByCondition(paramForUserManager); + for (RoleAndDepository roleAndDepository : roleAndDepositoryByCondition) { + int classes = roleAndDepository.getClasses(); + if (classes == 1) { + // 如果是对人设置的权限 + userIdByDid.add(roleAndDepository.getUserId()); + } else { + // 如果是对岗位 + + // 定义用于获取当前岗位下的人的参数map + Map paramForGetUserByPost = new HashMap<>(); + paramForGetUserByPost.put("position", roleAndDepository.getUserId()); + List userByPortList = LinkInterfaceUtil.FindUserByMap(paramForGetUserByPost, userKey, token); + for (UserByPort userByPort1 : userByPortList) { + Integer userId1 = userByPort1.getId(); + // 修改redis中用户的数据 + updateRedisDataForUserManager(userId1, minRecordKey); + minRecordManage.append(userId1).append(","); + // 获取企业微信id或微信id + String userByPortWorkwechat = userByPort1.getWorkwechat(); + if (userByPortWorkwechat == null || "".equals(userByPortWorkwechat)) { + userByPortWorkwechat = userByPort1.getWechat(); + } + QyWxUid.append(userByPortWorkwechat).append(","); + } + } + } + + for (Integer integer : userIdByDid) { + // 修改redis中用户的数据 + updateRedisDataForUserManager(integer, minRecordKey); // 获取仓库管理员信息 - UserByPort manager = LinkInterfaceUtil.FindUserById(integer, null, null); - // 仓库管理员订单信息 - Map userRecord = new HashMap<>(); - // 用户当前子订单 - String userMinRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get("user:" + integer, "minRecord"); - if (userMinRecord == null) { // 如果当前用户没有子订单 - userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单 - } else { // 如果当前用户已经有子订单 - StringBuilder minRecordList = new StringBuilder(userMinRecord); // 转为stringbuilder类型 - minRecordList.insert(1, minRecordKey + ",");// 将当前子订单插入头部 - userRecord.put("minRecord", minRecordList.toString()); - } - // 更新redis中用户记录 - redisPool.getRedisTemplateByDb(15).opsForHash().putAll("user:" + integer, userRecord); + UserByPort manager = LinkInterfaceUtil.FindUserById(integer, userKey, token); minRecordManage.append(integer).append(","); String workwechat = manager.getWorkwechat(); if (workwechat == null || "".equals(workwechat)) { @@ -2421,8 +2493,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 将当前redis中存储的spno删除 redisPool.getRedisTemplateByDb(14).delete("wms_QyWxMessage_" + spNo); } - } - else { + } else { // 如果是部门负责人 String departmentheadTime = recordP.getDepartmentheadTime(); @@ -2476,7 +2547,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { if (flag) { return 1; } - log.info("出库审批参数 “flagForFirst:"+flagForFirst+"”,“flagForDepository:"+flagForDepository+"”,审批人:"+userByPort.getNumber()+userByPort.getName()+"出库审批修改数据:"+JSONObject.toJSONString(map)); + log.info("出库审批参数 “flagForFirst:" + flagForFirst + "”,“flagForDepository:" + flagForDepository + "”,审批人:" + userByPort.getNumber() + userByPort.getName() + "出库审批修改数据:" + JSONObject.toJSONString(map)); map.put("id", outId); return depositoryRecordMapper.updateApplicationOutRecord(map); @@ -2779,6 +2850,28 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { } } + /** + * 修改redis中用户当前的子订单数据 + * + * @param integer 用户id + * @param minRecordKey + */ + private void updateRedisDataForUserManager(Integer integer, String minRecordKey) { + // 仓库管理员订单信息 + Map userRecord = new HashMap<>(); + // 用户当前子订单 + String userMinRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get("user:" + integer, "minRecord"); + if (userMinRecord == null) { // 如果当前用户没有子订单 + userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单 + } else { // 如果当前用户已经有子订单 + StringBuilder minRecordList = new StringBuilder(userMinRecord); // 转为stringbuilder类型 + minRecordList.insert(1, minRecordKey + ",");// 将当前子订单插入头部 + userRecord.put("minRecord", minRecordList.toString()); + } + // 更新redis中用户记录 + redisPool.getRedisTemplateByDb(15).opsForHash().putAll("user:" + integer, userRecord); + } + /** * 审核申请 * @@ -3019,6 +3112,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { if (!flagForMtOrDepository) { // 如果是通过类型 + + // 用于存储企业微信uid + StringBuilder QyWxUid = new StringBuilder(); // 获取具体物料类型 Long materialTypeId = inventory.getMaterialTypeId(); if (!findThisIdIsExistForMaterialType(materialTypeIdList, materialTypeId)) { @@ -3034,26 +3130,46 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { minIdList.add(applicationOutRecordMin.getId()); minIdByMaterialType.put("materialType" + materialTypeId, minIdList); - // 获取该物料所处仓库的仓库管理员 + // 获取该物料所处类型的管理员 List userIdByDid = new ArrayList<>(); - userIdByDid = roleService.findUserIdByMtId(inventory.getMaterialTypeId()); - StringBuilder QyWxUid = new StringBuilder(); + + // 用于查询对应的管理员权限 + Map paramForUserManager = new HashMap<>(); + paramForUserManager.put("mtid", materialTypeId); + + List roleAndMaterialTypeByCondition = roleService.findRoleAndMaterialTypeByCondition(paramForUserManager); + for (RoleAndMaterialType roleAndMaterialType : roleAndMaterialTypeByCondition) { + int classes = roleAndMaterialType.getClasses(); + if (classes == 1) { + // 如果是对人设置的权限 + userIdByDid.add(roleAndMaterialType.getUid()); + } else { + // 如果是对岗位 + + // 定义用于获取当前岗位下的人的参数map + Map paramForGetUserByPost = new HashMap<>(); + paramForGetUserByPost.put("position", roleAndMaterialType.getUid()); + List userByPortList = LinkInterfaceUtil.FindUserByMap(paramForGetUserByPost, userKey, token); + for (UserByPort userByPort : userByPortList) { + Integer userId = userByPort.getId(); + // 修改redis中用户的数据 + updateRedisDataForUserManager(userId, minRecordKey); + minRecordManage.append(userId).append(","); + // 获取企业微信id或微信id + String userByPortWorkwechat = userByPort.getWorkwechat(); + if (userByPortWorkwechat == null || "".equals(userByPortWorkwechat)) { + userByPortWorkwechat = userByPort.getWechat(); + } + QyWxUid.append(userByPortWorkwechat).append(","); + } + } + } + + for (Integer integer : userIdByDid) { // 获取仓库管理员信息 UserByPort manager = LinkInterfaceUtil.FindUserById(integer, userKey, token); - // 仓库管理员订单信息 - Map userRecord = new HashMap<>(); - // 用户当前子订单 - String userMinRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get("user:" + integer, "minRecord"); - if (userMinRecord == null) { // 如果当前用户没有子订单 - userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单 - } else { // 如果当前用户已经有子订单 - StringBuilder minRecordList = new StringBuilder(userMinRecord); // 转为stringbuilder类型 - minRecordList.insert(1, minRecordKey + ",");// 将当前子订单插入头部 - userRecord.put("minRecord", minRecordList.toString()); - } - // 更新redis中用户记录 - redisPool.getRedisTemplateByDb(15).opsForHash().putAll("user:" + integer, userRecord); + updateRedisDataForUserManager(integer, minRecordKey); minRecordManage.append(integer).append(","); String workwechat = manager.getWorkwechat(); if (workwechat == null || "".equals(workwechat)) { @@ -3076,6 +3192,8 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { } else { // 如果是通过仓库 + // 用于存储企业微信uid + StringBuilder QyWxUid = new StringBuilder(); if (!findThisIdIsExistForDepository(depositoryIdList, depositoryId)) { // 如果当前仓库id没有存入过 @@ -3092,24 +3210,45 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 获取该物料所处仓库的仓库管理员 List userIdByDid = new ArrayList<>(); - userIdByDid = roleService.findUserIdByDid(depositoryId); - StringBuilder QyWxUid = new StringBuilder(); + + // 用于查询对应的管理员权限 + Map paramForUserManager = new HashMap<>(); + paramForUserManager.put("depositoryId", depositoryId); + + List roleAndDepositoryByCondition = roleService.findRoleAndDepositoryByCondition(paramForUserManager); + for (RoleAndDepository roleAndDepository : roleAndDepositoryByCondition) { + int classes = roleAndDepository.getClasses(); + if (classes == 1) { + // 如果是对人设置的权限 + userIdByDid.add(roleAndDepository.getUserId()); + } else { + // 如果是对岗位 + + // 定义用于获取当前岗位下的人的参数map + Map paramForGetUserByPost = new HashMap<>(); + paramForGetUserByPost.put("position", roleAndDepository.getUserId()); + List userByPortList = LinkInterfaceUtil.FindUserByMap(paramForGetUserByPost, userKey, token); + for (UserByPort userByPort : userByPortList) { + Integer userId = userByPort.getId(); + // 修改redis中用户的数据 + updateRedisDataForUserManager(userId, minRecordKey); + minRecordManage.append(userId).append(","); + // 获取企业微信id或微信id + String userByPortWorkwechat = userByPort.getWorkwechat(); + if (userByPortWorkwechat == null || "".equals(userByPortWorkwechat)) { + userByPortWorkwechat = userByPort.getWechat(); + } + QyWxUid.append(userByPortWorkwechat).append(","); + } + } + } + + for (Integer integer : userIdByDid) { + // 修改redis中用户的数据 + updateRedisDataForUserManager(integer, minRecordKey); // 获取仓库管理员信息 UserByPort manager = LinkInterfaceUtil.FindUserById(integer, userKey, token); - // 仓库管理员订单信息 - Map userRecord = new HashMap<>(); - // 用户当前子订单 - String userMinRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get("user:" + integer, "minRecord"); - if (userMinRecord == null) { // 如果当前用户没有子订单 - userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单 - } else { // 如果当前用户已经有子订单 - StringBuilder minRecordList = new StringBuilder(userMinRecord); // 转为stringbuilder类型 - minRecordList.insert(1, minRecordKey + ",");// 将当前子订单插入头部 - userRecord.put("minRecord", minRecordList.toString()); - } - // 更新redis中用户记录 - redisPool.getRedisTemplateByDb(15).opsForHash().putAll("user:" + integer, userRecord); minRecordManage.append(integer).append(","); String workwechat = manager.getWorkwechat(); if (workwechat == null || "".equals(workwechat)) { @@ -3453,6 +3592,8 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 获取具体物料类型 Long materialTypeId = inventory.getMaterialTypeId(); + + StringBuilder QyWxUid = new StringBuilder(); if (!findThisIdIsExistForMaterialType(materialTypeIdList, materialTypeId)) { // 如果当前仓库id没有存入过 materialTypeIdList.add(materialTypeId); @@ -3466,26 +3607,46 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { minIdList.add(applicationOutRecordMin.getId()); minIdByMaterialType.put("materialType" + materialTypeId, minIdList); - // 获取该物料所处仓库的仓库管理员 + // 获取该物料所处类型的管理员 List userIdByDid = new ArrayList<>(); - userIdByDid = roleService.findUserIdByMtId(inventory.getMaterialTypeId()); - StringBuilder QyWxUid = new StringBuilder(); + + // 用于查询对应的管理员权限 + Map paramForUserManager = new HashMap<>(); + paramForUserManager.put("mtid", materialTypeId); + + List roleAndMaterialTypeByCondition = roleService.findRoleAndMaterialTypeByCondition(paramForUserManager); + for (RoleAndMaterialType roleAndMaterialType : roleAndMaterialTypeByCondition) { + int classes = roleAndMaterialType.getClasses(); + if (classes == 1) { + // 如果是对人设置的权限 + userIdByDid.add(roleAndMaterialType.getUid()); + } else { + // 如果是对岗位 + + // 定义用于获取当前岗位下的人的参数map + Map paramForGetUserByPost = new HashMap<>(); + paramForGetUserByPost.put("position", roleAndMaterialType.getUid()); + List userByPortList = LinkInterfaceUtil.FindUserByMap(paramForGetUserByPost, userKey, token); + for (UserByPort userByPort1 : userByPortList) { + Integer userId = userByPort1.getId(); + // 修改redis中用户的数据 + updateRedisDataForUserManager(userId, minRecordKey); + minRecordManage.append(userId).append(","); + // 获取企业微信id或微信id + String userByPortWorkwechat = userByPort1.getWorkwechat(); + if (userByPortWorkwechat == null || "".equals(userByPortWorkwechat)) { + userByPortWorkwechat = userByPort1.getWechat(); + } + QyWxUid.append(userByPortWorkwechat).append(","); + } + } + } + + for (Integer integer : userIdByDid) { // 获取仓库管理员信息 UserByPort manager = LinkInterfaceUtil.FindUserById(integer, userKey, token); - // 仓库管理员订单信息 - Map userRecord = new HashMap<>(); - // 用户当前子订单 - String userMinRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get("user:" + integer, "minRecord"); - if (userMinRecord == null) { // 如果当前用户没有子订单 - userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单 - } else { // 如果当前用户已经有子订单 - StringBuilder minRecordList = new StringBuilder(userMinRecord); // 转为stringbuilder类型 - minRecordList.insert(1, minRecordKey + ",");// 将当前子订单插入头部 - userRecord.put("minRecord", minRecordList.toString()); - } - // 更新redis中用户记录 - redisPool.getRedisTemplateByDb(15).opsForHash().putAll("user:" + integer, userRecord); + updateRedisDataForUserManager(integer, minRecordKey); minRecordManage.append(integer).append(","); String workwechat = manager.getWorkwechat(); if (workwechat == null || "".equals(workwechat)) { @@ -3509,6 +3670,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 如果是通过仓库 + StringBuilder QyWxUid = new StringBuilder(); if (!findThisIdIsExistForDepository(depositoryIdList, depositoryId)) { // 如果当前仓库id没有存入过 depositoryIdList.add(depositoryId); @@ -3524,24 +3686,45 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 获取该物料所处仓库的仓库管理员 List userIdByDid = new ArrayList<>(); - userIdByDid = roleService.findUserIdByDid(depositoryId); - StringBuilder QyWxUid = new StringBuilder(); + + // 用于查询对应的管理员权限 + Map paramForUserManager = new HashMap<>(); + paramForUserManager.put("depositoryId", depositoryId); + + List roleAndDepositoryByCondition = roleService.findRoleAndDepositoryByCondition(paramForUserManager); + for (RoleAndDepository roleAndDepository : roleAndDepositoryByCondition) { + int classes = roleAndDepository.getClasses(); + if (classes == 1) { + // 如果是对人设置的权限 + userIdByDid.add(roleAndDepository.getUserId()); + } else { + // 如果是对岗位 + + // 定义用于获取当前岗位下的人的参数map + Map paramForGetUserByPost = new HashMap<>(); + paramForGetUserByPost.put("position", roleAndDepository.getUserId()); + List userByPortList = LinkInterfaceUtil.FindUserByMap(paramForGetUserByPost, userKey, token); + for (UserByPort userByPort1 : userByPortList) { + Integer userId = userByPort1.getId(); + // 修改redis中用户的数据 + updateRedisDataForUserManager(userId, minRecordKey); + minRecordManage.append(userId).append(","); + // 获取企业微信id或微信id + String userByPortWorkwechat = userByPort1.getWorkwechat(); + if (userByPortWorkwechat == null || "".equals(userByPortWorkwechat)) { + userByPortWorkwechat = userByPort1.getWechat(); + } + QyWxUid.append(userByPortWorkwechat).append(","); + } + } + } + + for (Integer integer : userIdByDid) { + // 修改redis中用户的数据 + updateRedisDataForUserManager(integer, minRecordKey); // 获取仓库管理员信息 UserByPort manager = LinkInterfaceUtil.FindUserById(integer, userKey, token); - // 仓库管理员订单信息 - Map userRecord = new HashMap<>(); - // 用户当前子订单 - String userMinRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get("user:" + integer, "minRecord"); - if (userMinRecord == null) { // 如果当前用户没有子订单 - userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单 - } else { // 如果当前用户已经有子订单 - StringBuilder minRecordList = new StringBuilder(userMinRecord); // 转为stringbuilder类型 - minRecordList.insert(1, minRecordKey + ",");// 将当前子订单插入头部 - userRecord.put("minRecord", minRecordList.toString()); - } - // 更新redis中用户记录 - redisPool.getRedisTemplateByDb(15).opsForHash().putAll("user:" + integer, userRecord); minRecordManage.append(integer).append(","); String workwechat = manager.getWorkwechat(); if (workwechat == null || "".equals(workwechat)) { 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 678a7192..23028014 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 @@ -10,6 +10,8 @@ import com.dreamchaser.depository_manage.config.QyWx_template_card.*; import com.dreamchaser.depository_manage.entity.*; import com.dreamchaser.depository_manage.exception.MyException; import com.dreamchaser.depository_manage.mapper.*; +import com.dreamchaser.depository_manage.pojo.RoleAndDepository; +import com.dreamchaser.depository_manage.pojo.RoleAndMaterialType; import com.dreamchaser.depository_manage.utils.DateUtil; import com.dreamchaser.depository_manage.utils.HttpUtils; import com.dreamchaser.depository_manage.utils.LinkInterfaceUtil; @@ -59,14 +61,14 @@ public class QyWxOperationService { * @param flag 用于判断发送类型是部门负责人还是仓储负责人(true为部门,false为仓储) * @return */ - public JSONObject sendQyWxToApplicationOutMessage(String uid, Integer outId, Boolean flag, String userAgent,String userKey,String token) { + public JSONObject sendQyWxToApplicationOutMessage(String uid, Integer outId, Boolean flag, String userAgent, String userKey, String token) { // 获取将要发送申请的订单记录 ApplicationOutRecord applicationOutRecordPById = depositoryRecordMapper.findApplicationOutRecordPById(outId); // 申请人id Integer applicantId = applicationOutRecordPById.getApplicantId(); // 申请人 - UserByPort applicant = LinkInterfaceUtil.FindUserById(applicantId, userKey,token); + UserByPort applicant = LinkInterfaceUtil.FindUserById(applicantId, userKey, token); // 获取所有子订单 List applicationOutRecordMinByParent = depositoryRecordMapper.findApplicationOutRecordMinByParent(outId); @@ -238,7 +240,7 @@ public class QyWxOperationService { // 将返回结果转为json对象 JSONObject jsonObject = JSON.parseObject(s1); - log.info("发送企业微信出库消息结果"+s1); + log.info("发送企业微信出库消息结果" + s1); // 返回 return jsonObject; } @@ -251,7 +253,7 @@ public class QyWxOperationService { * @param mainId 盘点记录编号 * @return */ - public JSONObject sendQyWxToStockTakingDepartmentManagerMessage(String uid, Integer mainId, String userAgent,String userKey,String token) { + public JSONObject sendQyWxToStockTakingDepartmentManagerMessage(String uid, Integer mainId, String userAgent, String userKey, String token) { // 获取盘点主记录 StockTaking mainRecord = stockTakingMapper.selectStockTakingById(mainId); @@ -261,7 +263,7 @@ public class QyWxOperationService { // 申请人id Integer getOriginator = mainRecord.getOriginator(); // 申请人 - UserByPort originator = LinkInterfaceUtil.FindUserById(getOriginator, userKey,token); + UserByPort originator = LinkInterfaceUtil.FindUserById(getOriginator, userKey, token); // 盘点物料名称 StringBuilder mname = new StringBuilder(); @@ -484,7 +486,7 @@ public class QyWxOperationService { * @param mainId 盘点记录编号 * @return */ - public JSONObject sendQyWxToStockTakingMessage(String uid, Integer mainId, List normalMinId, String userAgent,String userKey,String token) { + public JSONObject sendQyWxToStockTakingMessage(String uid, Integer mainId, List normalMinId, String userAgent, String userKey, String token) { // 获取盘点主记录 StockTaking mainRecord = stockTakingMapper.selectStockTakingById(mainId); @@ -498,7 +500,7 @@ public class QyWxOperationService { // 申请人id Integer getOriginator = mainRecord.getOriginator(); // 申请人 - UserByPort originator = LinkInterfaceUtil.FindUserById(getOriginator, userKey,token); + UserByPort originator = LinkInterfaceUtil.FindUserById(getOriginator, userKey, token); // 盘点物料名称 StringBuilder mname = new StringBuilder(); @@ -708,7 +710,7 @@ public class QyWxOperationService { // 将返回结果转为json对象 JSONObject jsonObject = JSON.parseObject(s1); - log.info("发送企业微信盘点消息结果"+s1); + log.info("发送企业微信盘点消息结果" + s1); // 返回 return jsonObject; @@ -721,13 +723,13 @@ public class QyWxOperationService { * @param outId 订单编号 * @return */ - public JSONObject sendCcMessageToUsers(String uid, Integer outId, String userAgent,String userKey,String token) { + public JSONObject sendCcMessageToUsers(String uid, Integer outId, String userAgent, String userKey, String token) { // 获取已经完成的订单 ApplicationOutRecord recordP = depositoryRecordMapper.findApplicationOutRecordPById(outId); // 申请人id Integer applicantId = recordP.getApplicantId(); // 申请人 - UserByPort applicant = LinkInterfaceUtil.FindUserById(applicantId, userKey,token); + UserByPort applicant = LinkInterfaceUtil.FindUserById(applicantId, userKey, token); // 获取所有子订单 List applicationOutRecordMinByParent = depositoryRecordMapper.findApplicationOutRecordMinByParent(outId); @@ -761,7 +763,7 @@ public class QyWxOperationService { // 获取仓库信息 Depository depositoryRecordById = depositoryMapper.findDepositoryById(recordMin.getDepositoryId()); // 获取处理人信息 - UserByPort userByPort = LinkInterfaceUtil.FindUserById(recordMin.getCheckId(), userKey,token); + UserByPort userByPort = LinkInterfaceUtil.FindUserById(recordMin.getCheckId(), userKey, token); // 获取对应出库单位 String unit = recordMin.getUnit(); @@ -791,7 +793,7 @@ public class QyWxOperationService { // 将返回结果转为json对象 JSONObject jsonObject = JSON.parseObject(s1); - log.info("发送企业微信抄送结果:"+s1); + log.info("发送企业微信抄送结果:" + s1); // 返回 return jsonObject; @@ -805,7 +807,7 @@ public class QyWxOperationService { * @param map * @return */ - public JSONObject sendCcStockTakingMessageToHead(String uid, Map map, UserByPort userToken, StockTaking mainRecord, String userAgent,String userKey,String token) { + public JSONObject sendCcStockTakingMessageToHead(String uid, Map map, UserByPort userToken, StockTaking mainRecord, String userAgent, String userKey, String token) { /** * 获取完成的订单 @@ -832,7 +834,7 @@ public class QyWxOperationService { // 抄送内容 StringBuilder content = new StringBuilder("## `抄送信息:`%n"); // 获取发起人信息 - UserByPort originator = LinkInterfaceUtil.FindUserById(mainRecord.getOriginator(), userKey,token); + UserByPort originator = LinkInterfaceUtil.FindUserById(mainRecord.getOriginator(), userKey, token); // 设置content content.append(">### **").append(originator.getName()).append("的物料调账记录** %n时间:").append(DateUtil.TimeStampToDateTime(mainRecord.getCreateTime())).append(" %n"); @@ -882,10 +884,10 @@ public class QyWxOperationService { } content.append(">- 物料名称:").append(material.getMname()).append("%n"); content.append(">- 盘点位置:").append(fromLocation).append("%n"); - content.append(">- 原库存数量:").append((int)(minRecord.getOldInventory() / 100.0)).append("%n"); - content.append(">- 盘点数量:").append((int)(minRecord.getNewInventory() / 100.0)).append("%n"); + content.append(">- 原库存数量:").append((int) (minRecord.getOldInventory() / 100.0)).append("%n"); + content.append(">- 盘点数量:").append((int) (minRecord.getNewInventory() / 100.0)).append("%n"); content.append(">- 盘点单位:").append(unit).append("%n"); - content.append(">- 盈亏数量:").append((int)(minRecord.getInventory()/ 100.0)).append("%n"); + content.append(">- 盈亏数量:").append((int) (minRecord.getInventory() / 100.0)).append("%n"); content.append(">- 盘点结果:").append(takingResult).append("%n"); content.append("%n---%n"); } @@ -906,7 +908,7 @@ public class QyWxOperationService { // 将返回结果转为json对象 JSONObject jsonObject = JSON.parseObject(s1); - log.info("抄送库存盘点消息结果"+s1); + log.info("抄送库存盘点消息结果" + s1); // 返回 return jsonObject; @@ -920,7 +922,7 @@ public class QyWxOperationService { * @param mainRecord 主订单 * @return */ - public JSONObject sendStockTakingErrMessageToHead(String uid, List errIds, StockTaking mainRecord, UserByPort userToken, String userAgent,String userKey,String token) { + public JSONObject sendStockTakingErrMessageToHead(String uid, List errIds, StockTaking mainRecord, UserByPort userToken, String userAgent, String userKey, String token) { MessageByMarkDown markDown = new MessageByMarkDown(); //设置消息接收者 @@ -942,7 +944,7 @@ public class QyWxOperationService { // 抄送内容 StringBuilder content = new StringBuilder("## `盘点发生错误:`%n"); // 获取发起人信息 - UserByPort originator = LinkInterfaceUtil.FindUserById(mainRecord.getOriginator(), userKey,token); + UserByPort originator = LinkInterfaceUtil.FindUserById(mainRecord.getOriginator(), userKey, token); // 设置content content.append(">### **" + originator.getName() + "的物料盘点记录** %n时间:" + DateUtil.TimeStampToDateTime(mainRecord.getCreateTime()) + " %n"); @@ -1001,7 +1003,7 @@ public class QyWxOperationService { // 将返回结果转为json对象 JSONObject jsonObject = JSON.parseObject(s1); - log.info("发送库存盘点错误消息结果"+s1); + log.info("发送库存盘点错误消息结果" + s1); // 返回 return jsonObject; } @@ -1013,7 +1015,7 @@ public class QyWxOperationService { * @param map * @return */ - public JSONObject sendCcStockTakingTransferMessageToHead(String uid, Map map, UserByPort userToken, StockTaking mainRecord, String userAgent,String userKey,String token) { + public JSONObject sendCcStockTakingTransferMessageToHead(String uid, Map map, UserByPort userToken, StockTaking mainRecord, String userAgent, String userKey, String token) { /** * 获取要转移的订单 @@ -1040,7 +1042,7 @@ public class QyWxOperationService { // 抄送内容 StringBuilder content = new StringBuilder("## `抄送信息:`%n"); // 获取发起人信息 - UserByPort originator = LinkInterfaceUtil.FindUserById(mainRecord.getOriginator(), userKey,token); + UserByPort originator = LinkInterfaceUtil.FindUserById(mainRecord.getOriginator(), userKey, token); // 设置content content.append(">### **" + originator.getName() + "的物料转移记录** %n时间:" + DateUtil.TimeStampToDateTime(mainRecord.getCreateTime()) + " %n"); @@ -1136,14 +1138,14 @@ public class QyWxOperationService { // 将返回结果转为json对象 JSONObject jsonObject = JSON.parseObject(s1); - log.info("抄送库存盘点转移消息结果"+s1); + log.info("抄送库存盘点转移消息结果" + s1); // 返回 return jsonObject; } // 获取文本卡片模板 - public TemplateCard_text_notice getTextNoticeCard(Integer outMinId, Integer quantity,String userKey,String token) { + public TemplateCard_text_notice getTextNoticeCard(Integer outMinId, Integer quantity, String userKey, String token) { // 需要出库的子订单 ApplicationOutRecordMin recordMin = depositoryRecordMapper.findApplicationOutMinById(outMinId); // 获取其主订单 @@ -1151,7 +1153,7 @@ public class QyWxOperationService { // 申请人id Integer applicantId = outRecordP.getApplicantId(); // 申请人 - UserByPort applicant = LinkInterfaceUtil.FindUserById(applicantId, userKey,token); + UserByPort applicant = LinkInterfaceUtil.FindUserById(applicantId, userKey, token); // 定义卡片模板 TemplateCard_text_notice text_notice = new TemplateCard_text_notice(); @@ -1271,7 +1273,7 @@ public class QyWxOperationService { * @param outMinId * @return */ - public JSONObject sendNotificationToDepositoryManager(String uid, Integer outMinId, String userAgent,String userKey,String token) { + public JSONObject sendNotificationToDepositoryManager(String uid, Integer outMinId, String userAgent, String userKey, String token) { // 定义文本通知型卡片 TextNotice textNotice = new TextNotice(); @@ -1291,7 +1293,7 @@ public class QyWxOperationService { textNotice.setMsgtype("template_card"); // 获取卡片模板 - TemplateCard_text_notice text_notice = getTextNoticeCard(outMinId, null,userKey,token); + TemplateCard_text_notice text_notice = getTextNoticeCard(outMinId, null, userKey, token); textNotice.setTemplate_card(text_notice); String s = JSONObject.toJSONString(textNotice); @@ -1307,7 +1309,7 @@ public class QyWxOperationService { // 将返回结果转为json对象 JSONObject jsonObject = JSON.parseObject(s1); - log.info("给仓库管理员发送出库通知结果:"+s1); + log.info("给仓库管理员发送出库通知结果:" + s1); // 返回 return jsonObject; } @@ -1359,14 +1361,14 @@ public class QyWxOperationService { } - public JSONObject updateTemplateCardToQuantity(String response_code, Integer quantity, String userAgent, Integer outMinId,String userKey,String token) { + public JSONObject updateTemplateCardToQuantity(String response_code, Integer quantity, String userAgent, Integer outMinId, String userKey, String token) { String url = String.format("https://qyapi.weixin.qq.com/cgi-bin/message/update_template_card?access_token=" + QyWxConfig.GetQYWXToken(userAgent) + "&debug=1"); Map map = new HashMap<>(); map.put("atall", 1); map.put("agentid", QyWxConfig.AgentId); map.put("response_code", response_code); map.put("enable_id_trans", 0); - TemplateCard_text_notice text_notice = getTextNoticeCard(outMinId, quantity,userKey,token); + TemplateCard_text_notice text_notice = getTextNoticeCard(outMinId, quantity, userKey, token); map.put("template_card", text_notice); String jsonString = JSONObject.toJSONString(map); System.out.println(jsonString); @@ -1400,7 +1402,7 @@ public class QyWxOperationService { * @param mainId 出库的主订单 * @return 发送结果 */ - public JSONObject sendOutApprovalTemplate(String userAgent, UserByPort userToken, Integer mainId,String userKey,String token) { + public JSONObject sendOutApprovalTemplate(String userAgent, UserByPort userToken, Integer mainId, String userKey, String token) { // 获取当前出库主订单 ApplicationOutRecord mainRecord = depositoryRecordMapper.findApplicationOutRecordPById(mainId); @@ -1435,7 +1437,7 @@ public class QyWxOperationService { List userIdList = new ArrayList<>(); - List departmentHeadForUserToken = PublicConfig.findDepartmentHeadByUser(userToken.getMaindeparment(),userKey,token ); + List departmentHeadForUserToken = PublicConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userKey, token); for (UserByPort departmentHead : departmentHeadForUserToken ) { String departmentHeadWorkwechat = departmentHead.getWorkwechat(); @@ -1576,7 +1578,7 @@ public class QyWxOperationService { depositoryIdList.add(depositoryId); } Long materialTypeId = materialById.getMaterialTypeId(); - if(!materialTypeIdList.contains(materialTypeId)){ + if (!materialTypeIdList.contains(materialTypeId)) { materialTypeIdList.add(materialTypeId); } @@ -1769,8 +1771,7 @@ public class QyWxOperationService { approval_template_approver_list.add(approval_template_approver_Label); - } - else { + } else { // 如果不是中心仓下的仓库 if (Integer.compare(2, flagForOpenDepository) == 0) { // 如果该仓库是通过开放仓库获取到的 @@ -1780,7 +1781,7 @@ public class QyWxOperationService { // 获取当前仓库所属的部门 String adminorg = depositoryById.getAdminorg(); - List departmentHeadByUser = PublicConfig.findDepartmentHeadByUser(ObjectFormatUtil.toInteger(adminorg), userKey,token); + List departmentHeadByUser = PublicConfig.findDepartmentHeadByUser(ObjectFormatUtil.toInteger(adminorg), userKey, token); for (UserByPort departmentHead : departmentHeadByUser ) { String departmentHeadWorkwechat = departmentHead.getWorkwechat(); @@ -1802,9 +1803,9 @@ public class QyWxOperationService { } - if(!flag){ - for (Long mtId:materialTypeIdList - ) { + if (!flag) { + for (Long mtId : materialTypeIdList + ) { // 获取当前仓库的管理员列表 List userIdByDid = roleMapper.findUserIdByMtId(mtId); // 获取当前管理员的企业微信userId @@ -1812,7 +1813,7 @@ public class QyWxOperationService { for (Integer userId : userIdByDid ) { // 获取对应管理员信息 - UserByPort userByPort = LinkInterfaceUtil.FindUserById(userId, userKey,token); + UserByPort userByPort = LinkInterfaceUtil.FindUserById(userId, userKey, token); String user = userByPort.getWorkwechat(); if (user == null || "".equals(user)) { user = userByPort.getWechat(); @@ -1828,8 +1829,7 @@ public class QyWxOperationService { approval_template_approver_list.add(approval_template_approver_depository_manager); } } - } - else{ + } else { for (Integer depositoryId : depositoryIdList ) { @@ -1840,7 +1840,7 @@ public class QyWxOperationService { for (Integer userId : userIdByDid ) { // 获取对应管理员信息 - UserByPort userByPort = LinkInterfaceUtil.FindUserById(userId, userKey,token); + UserByPort userByPort = LinkInterfaceUtil.FindUserById(userId, userKey, token); String user = userByPort.getWorkwechat(); if (user == null || "".equals(user)) { user = userByPort.getWechat(); @@ -1860,7 +1860,6 @@ public class QyWxOperationService { } - // 设置审批流程 approvalTemplate.setApprover(approval_template_approver_list); @@ -1872,7 +1871,7 @@ public class QyWxOperationService { String s = HttpUtils.doPost(url, jsonString); JSONObject jsonObject = JSONObject.parseObject(s); jsonObject.put("otherDepartmentIdList", JSONObject.toJSONString(otherDepartmentIdList)); - log.info("发送出库审批结果:"+s); + log.info("发送出库审批结果:" + s); return jsonObject; } @@ -1885,7 +1884,7 @@ public class QyWxOperationService { * @param mainId 出库的主订单 * @return 发送结果 */ - public JSONObject sendOutApprovalTemplateForImmediately(String userAgent, UserByPort userToken, Integer mainId,String userKey,String token) { + public JSONObject sendOutApprovalTemplateForImmediately(String userAgent, UserByPort userToken, Integer mainId, String userKey, String token) { // 获取当前出库主订单 ApplicationOutRecord mainRecord = depositoryRecordMapper.findApplicationOutRecordPById(mainId); @@ -1920,9 +1919,9 @@ public class QyWxOperationService { List userIdList = new ArrayList<>(); String[] departmentHeadS = mainRecord.getDepartmenthead().split(","); - for (String department:departmentHeadS - ) { - if("".equals(department)){ + for (String department : departmentHeadS + ) { + if ("".equals(department)) { continue; } UserByPort departmentHead = LinkInterfaceUtil.FindUserById(ObjectFormatUtil.toInteger(department), userKey, token); @@ -2245,12 +2244,11 @@ public class QyWxOperationService { approvalTemplate.setNotify_type(2); - String[] depositoryManagerS = mainRecord.getDepositoryManager().split(","); List depositoryManagerWorkWechats = new ArrayList<>(); - for (String depositorymanager:depositoryManagerS + for (String depositorymanager : depositoryManagerS ) { - if("".equals(depositorymanager)){ + if ("".equals(depositorymanager)) { continue; } UserByPort depositoryManage = LinkInterfaceUtil.FindUserById(ObjectFormatUtil.toInteger(depositorymanager), userKey, token); @@ -2269,20 +2267,43 @@ public class QyWxOperationService { approval_template_approver_list.add(approval_template_approver_Label); - - - - if(!flag){ - for (Long mtId:materialTypeIdList + if (!flag) { + // 用于查询对应的管理员权限 + Map paramForUserManager = new HashMap<>(); + for (Long mtId : materialTypeIdList ) { - // 获取当前仓库的管理员列表 - List userIdByDid = roleMapper.findUserIdByMtId(mtId); - // 获取当前管理员的企业微信userId + // 定义存储当前管理员的企业微信userId List qywxUserIdList = new ArrayList<>(); - for (Integer userId : userIdByDid + // 用于获取当前仓库的管理员列表 + List userIdByMtId = new ArrayList<>(); + paramForUserManager.put("mtid", mainId); + List roleAndMaterialTypeByCondition = roleMapper.findRoleAndMaterialTypeByCondition(paramForUserManager); + for (RoleAndMaterialType roleAndMaterialType : roleAndMaterialTypeByCondition) { + int classes = roleAndMaterialType.getClasses(); + if (classes == 1) { + // 如果是对人设置的权限 + userIdByMtId.add(roleAndMaterialType.getUid()); + } else { + // 如果是对岗位 + + // 定义用于获取当前岗位下的人的参数map + Map paramForGetUserByPost = new HashMap<>(); + paramForGetUserByPost.put("position", roleAndMaterialType.getUid()); + List userByPortList = LinkInterfaceUtil.FindUserByMap(paramForGetUserByPost, userKey, token); + for (UserByPort userByPort : userByPortList) { + String userByPortWorkwechat = userByPort.getWorkwechat(); + if (userByPortWorkwechat == null || "".equals(userByPortWorkwechat)) { + userByPortWorkwechat = userByPort.getWechat(); + } + qywxUserIdList.add(userByPortWorkwechat); + } + } + } + + for (Integer userId : userIdByMtId ) { // 获取对应管理员信息 - UserByPort userByPort = LinkInterfaceUtil.FindUserById(userId, userKey,token); + UserByPort userByPort = LinkInterfaceUtil.FindUserById(userId, userKey, token); String user = userByPort.getWorkwechat(); if (user == null || "".equals(user)) { user = userByPort.getWechat(); @@ -2298,19 +2319,50 @@ public class QyWxOperationService { approval_template_approver_list.add(approval_template_approver_depository_manager); } } - } - else{ + } else { + + // 用于查询对应的管理员权限 + Map paramForUserManager = new HashMap<>(); + for (Integer depositoryId : depositoryIdList ) { - // 获取当前仓库的管理员列表 - List userIdByDid = roleMapper.findUserIdByDid(depositoryId); + paramForUserManager.put("depositoryId", depositoryId); + // 获取当前管理员的企业微信userId List qywxUserIdList = new ArrayList<>(); + + // 获取当前仓库的管理员列表 + List userIdByDid = new ArrayList<>(); + + List roleAndDepositoryByCondition = roleMapper.findRoleAndDepositoryByCondition(paramForUserManager); + for (RoleAndDepository roleAndDepository : roleAndDepositoryByCondition) { + int classes = roleAndDepository.getClasses(); + if (classes == 1) { + // 如果是对人设置的权限 + userIdByDid.add(roleAndDepository.getUserId()); + } else { + // 如果是对岗位 + + // 定义用于获取当前岗位下的人的参数map + Map paramForGetUserByPost = new HashMap<>(); + paramForGetUserByPost.put("position", roleAndDepository.getUserId()); + List userByPortList = LinkInterfaceUtil.FindUserByMap(paramForGetUserByPost, userKey, token); + for (UserByPort userByPort : userByPortList) { + String userByPortWorkwechat = userByPort.getWorkwechat(); + if (userByPortWorkwechat == null || "".equals(userByPortWorkwechat)) { + userByPortWorkwechat = userByPort.getWechat(); + } + qywxUserIdList.add(userByPortWorkwechat); + } + } + } + + for (Integer userId : userIdByDid ) { // 获取对应管理员信息 - UserByPort userByPort = LinkInterfaceUtil.FindUserById(userId, userKey,token); + UserByPort userByPort = LinkInterfaceUtil.FindUserById(userId, userKey, token); String user = userByPort.getWorkwechat(); if (user == null || "".equals(user)) { user = userByPort.getWechat(); @@ -2341,12 +2393,11 @@ public class QyWxOperationService { String s = HttpUtils.doPost(url, jsonString); JSONObject jsonObject = JSONObject.parseObject(s); jsonObject.put("otherDepartmentIdList", JSONObject.toJSONString(otherDepartmentIdList)); - log.info("发送出库审批(立即出库)结果:"+s); + log.info("发送出库审批(立即出库)结果:" + s); return jsonObject; } - /** * 用于发送入库审批 * @@ -2356,7 +2407,7 @@ public class QyWxOperationService { * @param QyWxUid 接收人 * @return */ - public JSONObject sendApprovalTemplateIn(String userAgent, UserByPort userToken, List recordIdList, String QyWxUid,String userKey,String token) { + public JSONObject sendApprovalTemplateIn(String userAgent, UserByPort userToken, List recordIdList, String QyWxUid, String userKey, String token) { // 获取当前出库明细 List minRecordList = depositoryRecordMapper.findApplicationInRecordsByIds(recordIdList); @@ -2369,7 +2420,7 @@ public class QyWxOperationService { // 获取申请人的userId - UserByPort userByPort = LinkInterfaceUtil.FindUserById(minRecordList.get(0).getApplicantId(), userKey,token); + UserByPort userByPort = LinkInterfaceUtil.FindUserById(minRecordList.get(0).getApplicantId(), userKey, token); String workwechat = userByPort.getWorkwechat(); if (workwechat == null || "".equals(workwechat)) { workwechat = userByPort.getWechat(); @@ -2673,7 +2724,7 @@ public class QyWxOperationService { String s = HttpUtils.doPost(url, jsonString); JSONObject jsonObject = JSONObject.parseObject(s); - log.info("发送入库审批结果:"+s); + log.info("发送入库审批结果:" + s); return jsonObject; } @@ -3119,7 +3170,7 @@ public class QyWxOperationService { String s = HttpUtils.doPost(url, jsonString); JSONObject jsonObject = JSONObject.parseObject(s); - log.info("发送库存盘点审批结果:"+s); + log.info("发送库存盘点审批结果:" + s); return jsonObject; } @@ -3131,7 +3182,7 @@ public class QyWxOperationService { * @param userAgent md5加密后user-agent * @return */ - public JSONObject sendNoticeForAllUser(Integer nid, String userAgent,String userKey,String token) { + public JSONObject sendNoticeForAllUser(Integer nid, String userAgent, String userKey, String token) { // 获取当前要发生的公告信息 Notice noticeById = noticeMapper.findNoticeById(nid); TextTemplateCard textTemplateCard = new TextTemplateCard(); @@ -3150,7 +3201,7 @@ public class QyWxOperationService { textCardContent.setTitle(noticeById.getTitle()); String noticeContent = "
" + DateUtil.TimeStampToDateTime(noticeById.getTime()) + "
" + noticeById.getContent() + "
" + - LinkInterfaceUtil.FindUserById(noticeById.getUserId(), userKey,token).getName() + "
"; + LinkInterfaceUtil.FindUserById(noticeById.getUserId(), userKey, token).getName() + ""; // 设置内容 textCardContent.setDescription(noticeContent); // 设置点击后跳转的链接 @@ -3188,7 +3239,7 @@ public class QyWxOperationService { * @param flag 标志当前是什么申请 1出库2盘点 * @return */ - public JSONObject sendMessageForOtherUserByCard(Integer mainId, String uid, String userAgent, Integer flag,String userKey,String token) { + public JSONObject sendMessageForOtherUserByCard(Integer mainId, String uid, String userAgent, Integer flag, String userKey, String token) { // 获取当前申请主订单 ApplicationOutRecord aorp = null; @@ -3235,7 +3286,7 @@ public class QyWxOperationService { applicantTime = stockTaking.getCreateTime(); tempMessageTitle = "库存盘点审批"; } - UserByPort userByPort = LinkInterfaceUtil.FindUserById(applicantId, userKey,token); + UserByPort userByPort = LinkInterfaceUtil.FindUserById(applicantId, userKey, token); // 设置content content.append(">### **%n对于" + userByPort.getName() + "在" + DateUtil.TimeStampToDateTime(applicantTime) + "提起" + tempMessageTitle + "的转至应用发送的消息进行审批,审批应用中的流程请忽略 %n**"); content.append("%n---%n"); @@ -3255,7 +3306,7 @@ public class QyWxOperationService { // 将返回结果转为json对象 JSONObject jsonObject = JSON.parseObject(s1); - log.info("用于当在系统内进行审批后向其他所有用户发送消息结果:"+s1); + log.info("用于当在系统内进行审批后向其他所有用户发送消息结果:" + s1); // 返回 return jsonObject; } diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/SplitUnitServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/SplitUnitServiceImpl.java index a825e36e..092f49e7 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/SplitUnitServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/SplitUnitServiceImpl.java @@ -7,6 +7,7 @@ import com.dreamchaser.depository_manage.pojo.RoleAndMaterialType; import com.dreamchaser.depository_manage.pojo.SplitInfoP; import com.dreamchaser.depository_manage.service.DepositoryRecordService; import com.dreamchaser.depository_manage.service.SplitUnitService; +import com.dreamchaser.depository_manage.utils.LinkInterfaceUtil; import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -107,51 +108,80 @@ public class SplitUnitServiceImpl implements SplitUnitService { flagForMtOrDepository = false; } boolean flagForApproval = false; // 默认不需要 - if(flagForMtOrDepository){ + if (flagForMtOrDepository) { // 如果是仓库 // 设置审批权限 - map.put("inType","d"); + map.put("inType", "d"); - if(!map.containsKey("flagForApproval")){ - paramForMtRole.put("depositoryId",depositoryId); + if (!map.containsKey("flagForApproval")) { + paramForMtRole.put("depositoryId", depositoryId); List roleAndDepositoryByDid = roleMapper.findRoleAndDepositoryByCondition(paramForMtRole); // 用于标志该仓库是否需要进行审批 if (roleAndDepositoryByDid.size() > 0) { flagForApproval = true; StringBuilder approverId = new StringBuilder(); for (RoleAndDepository roleAndDepository : roleAndDepositoryByDid) { - approverId.append(roleAndDepository.getUserId()).append(","); + // 获取该权限类型 + int classes = roleAndDepository.getClasses(); + // 获取userid + Integer userId = roleAndDepository.getUserId(); + if (classes == 1) { + // 如果是对人设置权限 + approverId.append(userId).append(","); + } else { + // 如果是对岗位 + + // 定义用于获取当前岗位下的人的参数map + Map paramForGetUserByPost = new HashMap<>(); + paramForGetUserByPost.put("position", roleAndDepository.getUserId()); + List userByPortList = LinkInterfaceUtil.FindUserByMap(paramForGetUserByPost, null, null); + for (UserByPort userByPort : userByPortList) { + approverId.append(userByPort.getId()).append(","); + } + } + } map.put("approverId", approverId.toString()); } map.put("flagForApproval", flagForApproval); - }else{ + } else { flagForApproval = ObjectFormatUtil.toBoolean(map.get("flagForApproval")); } - }else{ + } else { // 设置审批权限 - map.put("inType","mt"); - if(!map.containsKey("flagForApproval")){ + map.put("inType", "mt"); + if (!map.containsKey("flagForApproval")) { List roleAndMaterials = roleMapper.findRoleAndMaterialTypeByCondition(paramForMtRole); // 用于标志该仓库是否需要进行审批 if (roleAndMaterials.size() > 0) { flagForApproval = true; StringBuilder approverId = new StringBuilder(); for (RoleAndMaterialType roleAndMaterialType : roleAndMaterials) { - approverId.append(roleAndMaterialType.getUid()).append(","); + Integer classes = roleAndMaterialType.getClasses(); + Integer uid = roleAndMaterialType.getUid(); + if (classes == 1) { + approverId.append(uid).append(","); + } else { + // 定义用于获取当前岗位下的人的参数map + Map paramForGetUserByPost = new HashMap<>(); + paramForGetUserByPost.put("position", uid); + List userByPortList = LinkInterfaceUtil.FindUserByMap(paramForGetUserByPost, null, null); + for (UserByPort userByPort : userByPortList) { + approverId.append(userByPort.getId()).append(","); + } + } } map.put("approverId", approverId.toString()); } map.put("flagForApproval", flagForApproval); - }else{ + } else { flagForApproval = ObjectFormatUtil.toBoolean(map.get("flagForApproval")); } } - // 用于存储最终计算结果 Integer result = 0; @@ -188,8 +218,7 @@ public class SplitUnitServiceImpl implements SplitUnitService { // 查询当前库存是否有该拆单的处理记录 splitInventory = splitUnitMapper.findSplitInventoryByIidAndSid(paramForInsertSplitInventory); } - } - else { + } else { Map param = new HashMap<>(); param.put("depositoryId", map.get("depositoryId")); param.put("mid", map.get("mid")); @@ -220,7 +249,7 @@ public class SplitUnitServiceImpl implements SplitUnitService { // 如果是入库并且不需要审批 map.remove("approverId"); result = realInInventoryToDepository(quantity, splitInventory, map, splitInfoForUnit, placeAndMaterialByMidAndPid, false); - map.put("applicationInIdForOut",map.get("applicationInId")); + map.put("applicationInIdForOut", map.get("applicationInId")); map.remove("applicationInId"); } else if ("in".equals(type)) { // 如果是入库且需要审批 @@ -663,7 +692,7 @@ public class SplitUnitServiceImpl implements SplitUnitService { // 定义当前实际修改数量 - double new_saveQuantity = ((double)splitInventory.getSaveQuantity() / 100) + saveQuantity - splitInfo.getQuantity(); + double new_saveQuantity = ((double) splitInventory.getSaveQuantity() / 100) + saveQuantity - splitInfo.getQuantity(); // 令计算处理数量+1 disposeQuantity += 1; @@ -778,9 +807,9 @@ public class SplitUnitServiceImpl implements SplitUnitService { } map.put("sstate", state); List splitInfoPByCondition = splitUnitMapper.findSplitInfoPByCondition(map); - for (SplitInfoP splitInfoP:splitInfoPByCondition - ) { - if(splitInfoP.getBrand() == null){ + for (SplitInfoP splitInfoP : splitInfoPByCondition + ) { + if (splitInfoP.getBrand() == null) { splitInfoP.setBrand(""); } }