diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/CompanyController.java b/src/main/java/com/dreamchaser/depository_manage/controller/CompanyController.java index 80aa35de..d6b3561a 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/CompanyController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/CompanyController.java @@ -17,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; @@ -39,6 +40,8 @@ public class CompanyController { @Autowired ConstructionUnitService constructionUnitService; + + /** * 查询组织架构 * diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java index eeea925f..27d07c98 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java @@ -66,14 +66,14 @@ public class DepositoryRecordController { } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); map.put("applicantId", userToken.getId()); - List applicationInRecordPlist = depositoryRecordService.findApplicationInRecordPByCondition(map, userToken,userKey,token); + List applicationInRecordPlist = depositoryRecordService.findApplicationInRecordPByCondition(map, userToken, userKey, token); Integer InCount = depositoryRecordService.findApplicationInRecordPCountByCondition(map); for (ApplicationInRecordP applicationInRecordP : applicationInRecordPlist) { if (applicationInRecordP.getPrice() != null) { applicationInRecordP.setPrice(applicationInRecordP.getPrice() / 100); } } - List applicationOutRecordPlist = depositoryRecordService.findApplicationOutRecordPByCondition(map, userToken,userKey,token); + List applicationOutRecordPlist = depositoryRecordService.findApplicationOutRecordPByCondition(map, userToken, userKey, token); Integer OutCount = depositoryRecordService.findApplicationOutRecordPCountByCondition(map); for (ApplicationOutRecordP recordP : applicationOutRecordPlist) { if (recordP.getPrice() != null) { @@ -98,7 +98,7 @@ public class DepositoryRecordController { } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); map.put("userId", userToken.getId()); - List myTask = depositoryRecordService.findMyTaskOut(map,userKey,token); + List myTask = depositoryRecordService.findMyTaskOut(map, userKey, token); return new RestResponse(myTask , depositoryRecordService.findMyTaskOutCount(map), 200); @@ -115,7 +115,7 @@ public class DepositoryRecordController { } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); map.put("userId", userToken.getId()); - List myTask = depositoryRecordService.findMyTaskIn(map,userKey,token); + List myTask = depositoryRecordService.findMyTaskIn(map, userKey, token); return new RestResponse(myTask , depositoryRecordService.findMyTaskInCount(map), 200); @@ -461,14 +461,14 @@ public class DepositoryRecordController { } sb.append(workwechat).append(","); } - JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateIn(crypt, userToken, integerList, sb.toString(),finalUserKey,finalToken); + JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateIn(crypt, userToken, integerList, sb.toString(), finalUserKey, finalToken); String sp_no = jsonObject.getString("sp_no"); Map QyWxApprovalMap = new HashMap<>(); QyWxApprovalMap.put("sp_no", sp_no); QyWxApprovalMap.put("mainId", integerList.toString()); - redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_"+sp_no, QyWxApprovalMap); + redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_" + sp_no, QyWxApprovalMap); // 设置过期为7天 - redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_"+sp_no, 7, TimeUnit.DAYS); + redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_" + sp_no, 7, TimeUnit.DAYS); } @@ -485,21 +485,21 @@ public class DepositoryRecordController { for (RoleAndDepository mt : materialTypeIdForIn ) { // 获取管理员数据 - UserByPort userByPort = LinkInterfaceUtil.FindUserById(mt.getUserId(), finalUserKey,finalToken); + UserByPort userByPort = LinkInterfaceUtil.FindUserById(mt.getUserId(), finalUserKey, finalToken); String workwechat = userByPort.getWorkwechat(); if (workwechat == null || "".equals(workwechat)) { workwechat = userByPort.getWechat(); } sb.append(workwechat).append(","); } - JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateIn(crypt, userToken, integerList, sb.toString(),finalUserKey,finalToken); + JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateIn(crypt, userToken, integerList, sb.toString(), finalUserKey, finalToken); String sp_no = jsonObject.getString("sp_no"); Map QyWxApprovalMap = new HashMap<>(); QyWxApprovalMap.put("sp_no", sp_no); QyWxApprovalMap.put("mainId", integerList.toString()); - redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_"+sp_no, QyWxApprovalMap); + redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_" + sp_no, QyWxApprovalMap); // 设置过期为7天 - redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_"+sp_no, 7, TimeUnit.DAYS); + redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_" + sp_no, 7, TimeUnit.DAYS); } }); @@ -532,7 +532,7 @@ public class DepositoryRecordController { String crypt = Md5.crypt(header); map.put("applicantId", userToken.getId()); // 获取当前部门负责人 - List departmentHeadByUsers = PublicConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userkey,usertoken); + List departmentHeadByUsers = PublicConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userkey, usertoken); StringBuilder departmentHeadId = new StringBuilder(); StringBuilder departMentHeadQyWxName = new StringBuilder(); // for (int i = 0; i < departmentHeadByUsers.size(); i++) { @@ -566,7 +566,7 @@ public class DepositoryRecordController { String finalUserkey = userkey; String finalUsertoken = usertoken; if (params.size() < 1 && map.size() > 3) { - Integer res = depositoryRecordService.insertApplicationOutRecord(map, userToken,userkey,usertoken); // 插入主订单 + Integer res = depositoryRecordService.insertApplicationOutRecord(map, userToken, userkey, usertoken); // 插入主订单 Object id = map.get("id"); // 获取主订单编号 if (res == 1) { // 如果插入成功 if (id != null) { @@ -586,9 +586,9 @@ public class DepositoryRecordController { QyWxApprovalMap.put("sp_no", sp_no); QyWxApprovalMap.put("otherDepartmentIdList", jsonObject.getString("otherDepartmentIdList")); QyWxApprovalMap.put("mainId", id.toString()); - redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_"+sp_no, QyWxApprovalMap); + redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_" + sp_no, QyWxApprovalMap); // 设置过期为7天 - redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_"+sp_no, 7, TimeUnit.DAYS); + redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_" + sp_no, 7, TimeUnit.DAYS); }); } @@ -608,7 +608,7 @@ public class DepositoryRecordController { } String keyNumber = key.split("mid")[1]; } - Integer res = depositoryRecordService.insertApplicationOutRecord(map, userToken,userkey,usertoken); + Integer res = depositoryRecordService.insertApplicationOutRecord(map, userToken, userkey, usertoken); if (res == 1) { // 获取主订单编号 Object id = map.get("id"); @@ -636,15 +636,147 @@ public class DepositoryRecordController { // 开启一个线程开启审批 SendQyWxMessageThreadPool.execute(() -> { - JSONObject jsonObject = qyWxOperationService.sendOutApprovalTemplate(crypt, userToken, ObjectFormatUtil.toInteger(id),finalUserkey,finalUsertoken); + JSONObject jsonObject = qyWxOperationService.sendOutApprovalTemplate(crypt, userToken, ObjectFormatUtil.toInteger(id), finalUserkey, finalUsertoken); + String sp_no = jsonObject.getString("sp_no"); + Map QyWxApprovalMap = new HashMap<>(); + QyWxApprovalMap.put("sp_no", sp_no); + QyWxApprovalMap.put("otherDepartmentIdList", jsonObject.getString("otherDepartmentIdList")); + QyWxApprovalMap.put("mainId", id.toString()); + redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_" + sp_no, QyWxApprovalMap); + // 设置过期为7天 + redisPool.getRedisTemplateByDb(14).expire(sp_no, 7, TimeUnit.DAYS); + }); + + + } + } + if (integer != 0 && params.size() < 1) { + return CrudUtil.insertHandle(integer, 1); + } else if (integer != 0 && params.size() >= 1) { + return CrudUtil.insertHandle(integer, params.size() + 1); + } else { + return new RestResponse("", 666, new StatusInfo("出库失败", "请联系管理员进行操作")); + } + + } + + // 出库申请用于立刻提交 + @PostMapping("/applicationOutForImmediately") + public RestResponse insertApplicationOutRecordForImmediately(@RequestBody Map map, HttpServletRequest request) { + String usertoken = request.getHeader("user-token"); + String userkey = request.getHeader("user-key"); + if (usertoken == null) { + usertoken = (String) request.getSession().getAttribute("userToken"); + userkey = (String) request.getSession().getAttribute("userKey"); + } + UserByPort userToken = AuthenticationTokenPool.getUserToken(usertoken); + String header = request.getHeader("user-agent"); + String crypt = Md5.crypt(header); + map.put("applicantId", userToken.getId()); + + Object userId = map.get("userId"); + if (userId != null) { + UserByPort userByPort = LinkInterfaceUtil.FindUserById(ObjectFormatUtil.toInteger(userId), userkey, usertoken); + map.put("departmenthead",userByPort.getId()); + map.put("depositoryManager",userToken.getId()); + } else { + List departmentHeadByUsers = PublicConfig.findDepartmentHeadByUser(ObjectFormatUtil.toInteger(map.get("adminorgId")), userkey, usertoken); + StringBuilder departmentHeadId = new StringBuilder(); + for (UserByPort departmentHeadByUser : departmentHeadByUsers) { + departmentHeadId.append(departmentHeadByUser.getId()).append(","); + } + map.put("departmenthead",userToken.getId()); + map.put("depositoryManager",departmentHeadId.toString()); + } + List params = (List) map.get("params"); + Integer integer = 0; + if (map.containsKey("constructionUnitId")) { + String constructionUnitId = map.get("constructionUnitId").toString(); + if ("".equals(constructionUnitId)) { + map.remove("constructionUnitId"); + } + } + String finalUserkey = userkey; + String finalUsertoken = usertoken; + if (params.size() < 1 && map.size() > 3) { + Integer res = depositoryRecordService.insertApplicationOutRecord(map, userToken, userkey, usertoken); // 插入主订单 + Object id = map.get("id"); // 获取主订单编号 + if (res == 1) { // 如果插入成功 + if (id != null) { + map.remove("id"); + map.put("parentId", id); + } + integer += depositoryRecordService.insertApplicationOutMin(map); + + // 开启一个线程执行发送信息操作 + + // 开启一个线程开启审批 + + SendQyWxMessageThreadPool.execute(() -> { + JSONObject jsonObject = qyWxOperationService.sendOutApprovalTemplateForImmediately(crypt, userToken, ObjectFormatUtil.toInteger(id), finalUserkey, finalUsertoken); String sp_no = jsonObject.getString("sp_no"); Map QyWxApprovalMap = new HashMap<>(); QyWxApprovalMap.put("sp_no", sp_no); QyWxApprovalMap.put("otherDepartmentIdList", jsonObject.getString("otherDepartmentIdList")); QyWxApprovalMap.put("mainId", id.toString()); - redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_"+sp_no, QyWxApprovalMap); + redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_" + sp_no, QyWxApprovalMap); // 设置过期为7天 - redisPool.getRedisTemplateByDb(14).expire(sp_no, 7, TimeUnit.DAYS); + redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_" + sp_no, 7, TimeUnit.DAYS); + }); + + } + } else { + // 插入主订单 + if (!map.containsKey("mid")) { + // 如果不包含初始的第一个卡片 + Set strings = map.keySet(); + String key = ""; + for (String tempKey : + strings) { + if (tempKey.contains("mid")) { + key = tempKey; + break; + } + } + String keyNumber = key.split("mid")[1]; + } + Integer res = depositoryRecordService.insertApplicationOutRecord(map, userToken, userkey, usertoken); + if (res == 1) { + // 获取主订单编号 + Object id = map.get("id"); + for (Integer temp : params) { + Map insert = new HashMap<>(); + insert.put("applicantId", userToken.getId()); + insert.put("mid", map.get("mid" + temp)); + insert.put("quantity", (int) (ObjectFormatUtil.toDouble(map.get("quantity" + temp)) * 100)); + insert.put("code", map.get("code")); + insert.put("placeId", map.get("placeId")); + insert.put("unit", map.get("unit" + temp)); + insert.put("project", map.get("project" + temp)); + // 获取主订单编号 + insert.put("parentId", id); + // 插入子订单 + integer += depositoryRecordService.insertApplicationOutMin(insert); + } + + // 插入子订单 + map.put("parentId", id); + map.remove("id"); + // 插入子订单 + integer += depositoryRecordService.insertApplicationOutMin(map); + + + // 开启一个线程开启审批 + SendQyWxMessageThreadPool.execute(() -> { + JSONObject jsonObject = qyWxOperationService.sendOutApprovalTemplateForImmediately(crypt, userToken, ObjectFormatUtil.toInteger(id), finalUserkey, finalUsertoken); + String sp_no = jsonObject.getString("sp_no"); + Map QyWxApprovalMap = new HashMap<>(); + QyWxApprovalMap.put("sp_no", sp_no); + QyWxApprovalMap.put("otherDepartmentIdList", jsonObject.getString("otherDepartmentIdList")); + QyWxApprovalMap.put("mainId", id.toString()); + redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_" + sp_no, QyWxApprovalMap); + // 设置过期为7天 + redisPool.getRedisTemplateByDb(14).expire(sp_no, 7, TimeUnit.DAYS); }); @@ -674,11 +806,11 @@ public class DepositoryRecordController { Integer recordPCount = 0; Integer maindeparment = userToken.getMaindeparment(); if (PublicConfig.roleAdminorgList.contains(maindeparment)) { - list = depositoryRecordService.findApplicationInRecordPByCondition(map, userToken,userKey,token); + list = depositoryRecordService.findApplicationInRecordPByCondition(map, userToken, userKey, token); recordPCount = depositoryRecordService.findApplicationInRecordPCountByCondition(map); } else { - list = depositoryRecordService.findApplicationInRecordPByUser(userToken, map,userKey,token); + list = depositoryRecordService.findApplicationInRecordPByUser(userToken, map, userKey, token); recordPCount = depositoryRecordService.findApplicationInRecordPCountByUser(userToken, map); } for (ApplicationInRecordP applicationInRecordP : list) { @@ -708,7 +840,7 @@ public class DepositoryRecordController { // 获取当前仓库信息 Depository depositoryRecordById = depositoryService.findDepositoryById(depositoryId); // 获取当前用户要处理的记录信息 - String minRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get("user:" + userToken.getId(), "minRecord"); + String minRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get("user:" + userToken.getId(), "minRecord"); // 获取子订单键值 if (minRecord == null && Integer.compare(stateOnView, 0) == 0) { return new RestResponse(applicationOutRecordMinList, applicationOutRecordMinList.size(), 200); @@ -750,7 +882,7 @@ public class DepositoryRecordController { ApplicationOutRecordP applicationOutRecordPById = depositoryRecordService.findApplicationOutRecordPById(applicationOutMinById.getParentId()); // 获取申请人 - UserByPort userByPort = LinkInterfaceUtil.FindUserById(applicationOutRecordPById.getApplicantId(), userKey,token); + UserByPort userByPort = LinkInterfaceUtil.FindUserById(applicationOutRecordPById.getApplicantId(), userKey, token); // 创建展示对象 SimpleApplicationOutMinRecordP simpleApplicationOutMinRecordP = new SimpleApplicationOutMinRecordP(applicationOutMinById); // 设置展示时的数量为申请数-已出库数 @@ -781,7 +913,7 @@ public class DepositoryRecordController { if (checkId != null) { // 如果该订单已经处理 // 获取处理人 - UserByPort checker = LinkInterfaceUtil.FindUserById(checkId, userKey,token); + UserByPort checker = LinkInterfaceUtil.FindUserById(checkId, userKey, token); simpleApplicationOutMinRecordP.setCheckerName(checker.getName()); simpleApplicationOutMinRecordP.setPcode(placeByDid.getCode()); // 当已经完成出库时设置数量为出库数 @@ -835,10 +967,10 @@ public class DepositoryRecordController { Integer countBy = 0; Integer maindeparment = userByPort.getMaindeparment(); if (PublicConfig.roleAdminorgList.contains(maindeparment)) { - list = depositoryRecordService.findApplicationOutRecordPByCondition(map, userByPort,userKey,token); + list = depositoryRecordService.findApplicationOutRecordPByCondition(map, userByPort, userKey, token); countBy = depositoryRecordService.findApplicationOutRecordPCountByCondition(map); } else { - list = depositoryRecordService.findApplicationOutRecordPByUser(userByPort, map,userKey,token); + list = depositoryRecordService.findApplicationOutRecordPByUser(userByPort, map, userKey, token); countBy = depositoryRecordService.findApplicationOutRecordPCountByUser(userByPort, map); } @@ -924,19 +1056,19 @@ public class DepositoryRecordController { List mids = (List) map.get("mids"); List depositoryIds = (List) map.get("depositoryIds"); List placeCodes = (List) map.get("placeCodes"); - List nowmids = redisPool.getRedisTemplateByDb(15).opsForList().range("mids" + userToken.getId(), 0, -1); + List nowmids = redisPool.getRedisTemplateByDb(15).opsForList().range("mids" + userToken.getId(), 0, -1); for (int i = 0; i < mids.size(); i++) { if (nowmids.contains(mids.get(i))) { continue; } - redisPool.getRedisTemplateByDb(15).opsForList().leftPush("mids" + userToken.getId(), mids.get(i).toString()); - redisPool.getRedisTemplateByDb(15).opsForList().leftPush("depositoryIds" + userToken.getId(), depositoryIds.get(i).toString()); - redisPool.getRedisTemplateByDb(15).opsForList().leftPush("placeCodes" + userToken.getId(), placeCodes.get(i).toString()); + redisPool.getRedisTemplateByDb(15).opsForList().leftPush("mids" + userToken.getId(), mids.get(i).toString()); + redisPool.getRedisTemplateByDb(15).opsForList().leftPush("depositoryIds" + userToken.getId(), depositoryIds.get(i).toString()); + redisPool.getRedisTemplateByDb(15).opsForList().leftPush("placeCodes" + userToken.getId(), placeCodes.get(i).toString()); } - redisPool.getRedisTemplateByDb(15).expire("mids" + userToken.getId(), 24 * 60 * 60, TimeUnit.SECONDS); - redisPool.getRedisTemplateByDb(15).expire("depositoryIds" + userToken.getId(), 24 * 60 * 60, TimeUnit.SECONDS); - redisPool.getRedisTemplateByDb(15).expire("placeCodes" + userToken.getId(), 24 * 60 * 60, TimeUnit.SECONDS); + redisPool.getRedisTemplateByDb(15).expire("mids" + userToken.getId(), 24 * 60 * 60, TimeUnit.SECONDS); + redisPool.getRedisTemplateByDb(15).expire("depositoryIds" + userToken.getId(), 24 * 60 * 60, TimeUnit.SECONDS); + redisPool.getRedisTemplateByDb(15).expire("placeCodes" + userToken.getId(), 24 * 60 * 60, TimeUnit.SECONDS); return CrudUtil.insertHandle(1, 1); } @@ -958,13 +1090,13 @@ public class DepositoryRecordController { List depositoryIds = (List) map.get("depositoryIds"); List placeCodes = (List) map.get("placeCodes"); for (Integer mid : mids) { - redisPool.getRedisTemplateByDb(15).opsForList().remove("mids" + userToken.getId(), 1, mid.toString()); + redisPool.getRedisTemplateByDb(15).opsForList().remove("mids" + userToken.getId(), 1, mid.toString()); } for (Integer depositoryId : depositoryIds) { - redisPool.getRedisTemplateByDb(15).opsForList().remove("depositoryIds" + userToken.getId(), 1, depositoryId.toString()); + redisPool.getRedisTemplateByDb(15).opsForList().remove("depositoryIds" + userToken.getId(), 1, depositoryId.toString()); } for (String placeCode : placeCodes) { - redisPool.getRedisTemplateByDb(15).opsForList().remove("placeCodes" + userToken.getId(), 1, placeCode + " "); + redisPool.getRedisTemplateByDb(15).opsForList().remove("placeCodes" + userToken.getId(), 1, placeCode + " "); } return CrudUtil.insertHandle(1, 1); } @@ -981,7 +1113,7 @@ public class DepositoryRecordController { UserByPort userToken = AuthenticationTokenPool.getUserToken(token); String header = request.getHeader("user-agent"); String crypt = Md5.crypt(header); - Integer review = depositoryRecordService.review(map, userToken.getId(), userToken, crypt,userkey,token); + Integer review = depositoryRecordService.review(map, userToken.getId(), userToken, crypt, userkey, token); if (review != -1) { return CrudUtil.insertHandle(review, 1); } else { @@ -1020,7 +1152,7 @@ public class DepositoryRecordController { String header = request.getHeader("user-agent"); String crypt = Md5.crypt(header); UserByPort userToken = AuthenticationTokenPool.getUserToken(usertoken); - List departmentHeadByUsers = PublicConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userkey,usertoken); + List departmentHeadByUsers = PublicConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userkey, usertoken); StringBuilder departmentHeadId = new StringBuilder(); StringBuilder departMentHeadQyWxName = new StringBuilder(); // for (int i = 0; i < departmentHeadByUsers.size(); i++) { @@ -1057,7 +1189,7 @@ public class DepositoryRecordController { String finalUserkey = userkey; String finalUsertoken = usertoken; if (params.size() < 1 && map.size() > 4) { - integer += depositoryRecordService.transferApply(map, userToken,userkey,usertoken); + integer += depositoryRecordService.transferApply(map, userToken, userkey, usertoken); Object id = map.get("parentId"); // 开启一个线程开启审批 @@ -1069,9 +1201,9 @@ public class DepositoryRecordController { QyWxApprovalMap.put("sp_no", sp_no); QyWxApprovalMap.put("mainId", id.toString()); QyWxApprovalMap.put("otherDepartmentIdList", jsonObject.getString("otherDepartmentIdList")); - redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_"+sp_no, QyWxApprovalMap); + redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_" + sp_no, QyWxApprovalMap); // 设置过期为7天 - redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_"+sp_no, 7, TimeUnit.DAYS); + redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_" + sp_no, 7, TimeUnit.DAYS); }); } else if (params.size() > 0) { @@ -1091,23 +1223,23 @@ public class DepositoryRecordController { if (parentId != null) { insert.put("parentId", parentId); } - integer += depositoryRecordService.transferApply(insert, userToken,userkey,usertoken); + integer += depositoryRecordService.transferApply(insert, userToken, userkey, usertoken); map.put("parentId", insert.get("parentId")); } - integer += depositoryRecordService.transferApply(map, userToken,userkey,usertoken); + integer += depositoryRecordService.transferApply(map, userToken, userkey, usertoken); Object id = map.get("parentId"); // 开启一个线程开启审批 SendQyWxMessageThreadPool.execute(() -> { - JSONObject jsonObject = qyWxOperationService.sendOutApprovalTemplate(crypt, userToken, ObjectFormatUtil.toInteger(id),finalUserkey,finalUsertoken); + JSONObject jsonObject = qyWxOperationService.sendOutApprovalTemplate(crypt, userToken, ObjectFormatUtil.toInteger(id), finalUserkey, finalUsertoken); String sp_no = jsonObject.getString("sp_no"); Map QyWxApprovalMap = new HashMap<>(); QyWxApprovalMap.put("sp_no", sp_no); QyWxApprovalMap.put("mainId", id.toString()); QyWxApprovalMap.put("otherDepartmentIdList", jsonObject.getString("otherDepartmentIdList")); - redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_"+sp_no, QyWxApprovalMap); + redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_" + sp_no, QyWxApprovalMap); // 设置过期为7天 - redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_"+sp_no, 7, TimeUnit.DAYS); + redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_" + sp_no, 7, TimeUnit.DAYS); }); } @@ -1203,7 +1335,7 @@ public class DepositoryRecordController { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); - Long size = redisPool.getRedisTemplateByDb(15).boundListOps("mids" + userToken.getId()).size(); + Long size = redisPool.getRedisTemplateByDb(15).boundListOps("mids" + userToken.getId()).size(); if (size == null) { size = 0L; } @@ -1213,11 +1345,11 @@ public class DepositoryRecordController { List list = new ArrayList<>(); for (int i = start; i < end; i++) { // 获取物料编号 - Integer mid = ObjectFormatUtil.toInteger( redisPool.getRedisTemplateByDb(15).opsForList().index("mids" + userToken.getId(), i)); + Integer mid = ObjectFormatUtil.toInteger(redisPool.getRedisTemplateByDb(15).opsForList().index("mids" + userToken.getId(), i)); // 获取仓库编号 - Integer depositoryId = ObjectFormatUtil.toInteger( redisPool.getRedisTemplateByDb(15).opsForList().index("depositoryIds" + userToken.getId(), i)); + Integer depositoryId = ObjectFormatUtil.toInteger(redisPool.getRedisTemplateByDb(15).opsForList().index("depositoryIds" + userToken.getId(), i)); // 获取库位编码 - String placeCode = (String) ( redisPool.getRedisTemplateByDb(15).opsForList().index("placeCodes" + userToken.getId(), i)); + String placeCode = (String) (redisPool.getRedisTemplateByDb(15).opsForList().index("placeCodes" + userToken.getId(), i)); // 获取物料信息 Inventory materialById = materialService.findInventoryById(mid); // 获取仓库信息 @@ -1368,14 +1500,14 @@ public class DepositoryRecordController { } sb.append(workwechat).append(","); } - JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateIn(crypt, userToken, integerList, sb.toString(),finalUserkey,finalUsertoken); + JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateIn(crypt, userToken, integerList, sb.toString(), finalUserkey, finalUsertoken); String sp_no = jsonObject.getString("sp_no"); Map QyWxApprovalMap = new HashMap<>(); QyWxApprovalMap.put("sp_no", sp_no); QyWxApprovalMap.put("mainId", integerList.toString()); - redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_"+sp_no, QyWxApprovalMap); + redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_" + sp_no, QyWxApprovalMap); // 设置过期为7天 - redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_"+sp_no, 7, TimeUnit.DAYS); + redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_" + sp_no, 7, TimeUnit.DAYS); } @@ -1392,28 +1524,28 @@ public class DepositoryRecordController { for (RoleAndDepository mt : materialTypeIdForIn ) { // 获取管理员数据 - UserByPort userByPort = LinkInterfaceUtil.FindUserById(mt.getUserId(), finalUserkey,finalUsertoken); + UserByPort userByPort = LinkInterfaceUtil.FindUserById(mt.getUserId(), finalUserkey, finalUsertoken); String workwechat = userByPort.getWorkwechat(); if (workwechat == null || "".equals(workwechat)) { workwechat = userByPort.getWechat(); } sb.append(workwechat).append(","); } - JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateIn(crypt, userToken, integerList, sb.toString(),finalUserkey,finalUsertoken); + JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateIn(crypt, userToken, integerList, sb.toString(), finalUserkey, finalUsertoken); String sp_no = jsonObject.getString("sp_no"); Map QyWxApprovalMap = new HashMap<>(); QyWxApprovalMap.put("sp_no", sp_no); QyWxApprovalMap.put("mainId", integerList.toString()); - redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_"+sp_no, QyWxApprovalMap); + redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_" + sp_no, QyWxApprovalMap); // 设置过期为7天 - redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_"+sp_no, 7, TimeUnit.DAYS); + redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_" + sp_no, 7, TimeUnit.DAYS); } }); } else if ("out".equals(type)) { // 获取部门负责人 - List departmentHeadByUsers = PublicConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userkey,usertoken); + List departmentHeadByUsers = PublicConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userkey, usertoken); StringBuilder departmentHeadId = new StringBuilder(); StringBuilder departMentHeadQyWxName = new StringBuilder(); // for (UserByPort departmentHeadByUser : departmentHeadByUsers) { @@ -1435,7 +1567,7 @@ public class DepositoryRecordController { return new RestResponse("", 666, new StatusInfo("申请失败", "超出最大存储容量")); } map.put("mid", mid); - Integer res = depositoryRecordService.insertApplicationOutRecord(map, userToken,userkey,usertoken); // 插入主订单 + Integer res = depositoryRecordService.insertApplicationOutRecord(map, userToken, userkey, usertoken); // 插入主订单 if (res == 1) { // 如果插入成功 Object id = map.get("id"); // 获取主订单编号 if (id != null) { @@ -1448,15 +1580,15 @@ public class DepositoryRecordController { // 开启一个线程开启审批 SendQyWxMessageThreadPool.execute(() -> { - JSONObject jsonObject = qyWxOperationService.sendOutApprovalTemplate(crypt, userToken, ObjectFormatUtil.toInteger(id),finalUserkey,finalUsertoken); + JSONObject jsonObject = qyWxOperationService.sendOutApprovalTemplate(crypt, userToken, ObjectFormatUtil.toInteger(id), finalUserkey, finalUsertoken); String sp_no = jsonObject.getString("sp_no"); Map QyWxApprovalMap = new HashMap<>(); QyWxApprovalMap.put("sp_no", sp_no); QyWxApprovalMap.put("mainId", id.toString()); QyWxApprovalMap.put("otherDepartmentIdList", jsonObject.getString("otherDepartmentIdList")); - redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_"+sp_no, QyWxApprovalMap); + redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_" + sp_no, QyWxApprovalMap); // 设置过期为7天 - redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_"+sp_no, 7, TimeUnit.DAYS); + redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_" + sp_no, 7, TimeUnit.DAYS); }); } @@ -1611,14 +1743,14 @@ public class DepositoryRecordController { } sb.append(workwechat).append(","); } - JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateIn(crypt, userToken, integerList, sb.toString(),finalUserkey,finalUsertoken); + JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateIn(crypt, userToken, integerList, sb.toString(), finalUserkey, finalUsertoken); String sp_no = jsonObject.getString("sp_no"); Map QyWxApprovalMap = new HashMap<>(); QyWxApprovalMap.put("sp_no", sp_no); QyWxApprovalMap.put("mainId", integerList.toString()); - redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_"+sp_no, QyWxApprovalMap); + redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_" + sp_no, QyWxApprovalMap); // 设置过期为7天 - redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_"+sp_no, 7, TimeUnit.DAYS); + redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_" + sp_no, 7, TimeUnit.DAYS); } @@ -1635,21 +1767,21 @@ public class DepositoryRecordController { for (RoleAndDepository mt : materialTypeIdForIn ) { // 获取管理员数据 - UserByPort userByPort = LinkInterfaceUtil.FindUserById(mt.getUserId(), finalUserkey,finalUsertoken); + UserByPort userByPort = LinkInterfaceUtil.FindUserById(mt.getUserId(), finalUserkey, finalUsertoken); String workwechat = userByPort.getWorkwechat(); if (workwechat == null || "".equals(workwechat)) { workwechat = userByPort.getWechat(); } sb.append(workwechat).append(","); } - JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateIn(crypt, userToken, integerList, sb.toString(),finalUserkey,finalUsertoken); + JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateIn(crypt, userToken, integerList, sb.toString(), finalUserkey, finalUsertoken); String sp_no = jsonObject.getString("sp_no"); Map QyWxApprovalMap = new HashMap<>(); QyWxApprovalMap.put("sp_no", sp_no); QyWxApprovalMap.put("mainId", integerList.toString()); - redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_"+sp_no, QyWxApprovalMap); + redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_" + sp_no, QyWxApprovalMap); // 设置过期为7天 - redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_"+sp_no, 7, TimeUnit.DAYS); + redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_" + sp_no, 7, TimeUnit.DAYS); } }); @@ -1661,7 +1793,7 @@ public class DepositoryRecordController { sumQuantity += integer; } // 获取部门负责人 - List departmentHeadByUsers = PublicConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userkey,usertoken); + List departmentHeadByUsers = PublicConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userkey, usertoken); StringBuilder departmentHeadId = new StringBuilder(); StringBuilder departMentHeadQyWxName = new StringBuilder(); // for (int i = 0; i < departmentHeadByUsers.size(); i++) { @@ -1679,7 +1811,7 @@ public class DepositoryRecordController { mainRecord.put("quantity", sumQuantity.toString()); mainRecord.put("departmenthead", departmentHeadId.toString()); // 插入主表 - depositoryRecordService.insertApplicationOutRecord(mainRecord, userToken,userkey,usertoken); + depositoryRecordService.insertApplicationOutRecord(mainRecord, userToken, userkey, usertoken); id = ObjectFormatUtil.toInteger(mainRecord.get("id")); for (int i = 0; i < iids.size(); i++) { // 出库物料 @@ -1750,15 +1882,15 @@ public class DepositoryRecordController { Integer finalId = id; // 开启一个线程开启审批 SendQyWxMessageThreadPool.execute(() -> { - JSONObject jsonObject = qyWxOperationService.sendOutApprovalTemplate(crypt, userToken, ObjectFormatUtil.toInteger(finalId),finalUserkey,finalUsertoken); + JSONObject jsonObject = qyWxOperationService.sendOutApprovalTemplate(crypt, userToken, ObjectFormatUtil.toInteger(finalId), finalUserkey, finalUsertoken); String sp_no = jsonObject.getString("sp_no"); Map QyWxApprovalMap = new HashMap<>(); QyWxApprovalMap.put("sp_no", sp_no); QyWxApprovalMap.put("mainId", finalId.toString()); QyWxApprovalMap.put("otherDepartmentIdList", jsonObject.getString("otherDepartmentIdList")); - redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_"+sp_no, QyWxApprovalMap); + redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_" + sp_no, QyWxApprovalMap); // 设置过期为7天 - redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_"+sp_no, 7, TimeUnit.DAYS); + redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_" + sp_no, 7, TimeUnit.DAYS); }); } @@ -1798,7 +1930,7 @@ public class DepositoryRecordController { if (barCode != null) { map.put("barCode", barCode); } - return depositoryRecordService.completeApplicationOutMinRecord(map, userToken, crypt,userKey,token); + return depositoryRecordService.completeApplicationOutMinRecord(map, userToken, crypt, userKey, token); } @@ -1814,7 +1946,7 @@ public class DepositoryRecordController { UserByPort userToken = AuthenticationTokenPool.getUserToken(token); if (map.containsKey("id")) { Integer id = ObjectFormatUtil.toInteger(map.get("id")); - List strings = excelService.writeExcelForPrint(id, 4, userToken,userKey,token); + List strings = excelService.writeExcelForPrint(id, 4, userToken, userKey, token); List files = new ArrayList<>(); for (String string : strings) { File file = new File(string); @@ -1860,7 +1992,7 @@ public class DepositoryRecordController { String header = request.getHeader("user-agent"); String crypt = Md5.crypt(header); - Integer integer = depositoryRecordService.updateOutMinRecordInfo(map, userToken, crypt,userKey,token); + Integer integer = depositoryRecordService.updateOutMinRecordInfo(map, userToken, crypt, userKey, token); return CrudUtil.updateHandle(integer, 1); } else { throw new MyException("缺少必要参数"); diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java index 0b61b548..3a03bf3c 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java @@ -369,6 +369,51 @@ public class MaterialController { return new RestResponse(map, 1, 200); } + + @GetMapping("/findInventoryByIdForImmediately") + public RestResponse findInventoryByIdForImmediately(@RequestParam(value = "mid", required = false) String mid, HttpServletRequest request) { + String token = request.getHeader("user-token"); + if (token == null) { + token = (String) request.getSession().getAttribute("userToken"); + } + UserByPort userToken = AuthenticationTokenPool.getUserToken(token); + if ("".equals(mid)) { + return new RestResponse("", 0, 200); + } + Inventory inventoryById = materialService.findInventoryById(ObjectFormatUtil.toInteger(mid)); + String mcode = inventoryById.getCode(); + Map paramByBarcode = new HashMap<>(); + paramByBarcode.put("mcode", mcode); + paramByBarcode.put("codeFlag", 1); + List materialByBarCodeByCondition = materialService.findMaterialByBarCodeByCondition(paramByBarcode); + List depositoryByAdminorg = depositoryService.findDepositoryByAdminorg(userToken.getMaindeparment().toString()); + List depositoryIdList = new ArrayList<>(); + for (Depository depository : depositoryByAdminorg + ) { + depositoryIdList.add(depository.getId()); + } + paramByBarcode.remove("codeFlag"); + paramByBarcode.put("depositoryIds", depositoryIdList); + List inventoryList = materialService.findInventory(paramByBarcode); + depositoryIdList = new ArrayList<>(); + InventoryP materialP = null; + for (InventoryP inventory : inventoryList + ) { + depositoryIdList.add(inventory.getDepositoryId()); + materialP = inventory; + } + if (materialP != null) { + List depositoryByIds = depositoryService.findDepositoryByIds(depositoryIdList); + materialP.setDepositoryList(depositoryByIds); + List splitInfoByMid = splitUnitService.findSplitInfoByMid(materialP.getMid()); + materialP.setSplitInfoList(splitInfoByMid); + materialP.setMaterialAndBarCodeList(materialByBarCodeByCondition); + } + Map map = new HashMap<>(); + map.put("materialById", materialP); + return new RestResponse(map, 1, 200); + } + /** * 根据物料id与库位id获取物料 * @@ -455,9 +500,6 @@ public class MaterialController { List depositoryIdList = roleService.findDepositoryIdForUserHas(userToken); - // 获取该用户额外可见的仓库 - List tempDepositoryIdlist = roleService.findDepositoryIdForWareHouseVisiblePermissionByUser(userToken); - depositoryIdList = (List) CollectionUtils.union(tempDepositoryIdlist, depositoryIdList); // 用于存储存在库存的仓库id List showDepository = new ArrayList<>(); for (Integer depositoryId : depositoryIdList @@ -523,12 +565,71 @@ public class MaterialController { } + + /** + * 用于通过物料编码获取库存信息(用于立即出库) + * + * @param map 待查询数据 + * @param request + * @return + */ + @GetMapping("/findMaterialByCodeForImmediatelyOut") + public RestResponse findMaterialByCodeForImmediatelyOut(@RequestParam Map map, HttpServletRequest request) { + String token = request.getHeader("user-token"); + if (token == null) { + token = (String) request.getSession().getAttribute("userToken"); + } + UserByPort userToken = AuthenticationTokenPool.getUserToken(token); + String code = map.get("mcode").toString(); + if ("".equals(code)) { + return new RestResponse(null, 1, 200); + } + // 获取当前用户部门所拥有及当前用户管理的仓库 + List depositoryIdForUser = new ArrayList<>(); + List depositoryByAdminorgAndUser = depositoryService.findDepositoryByAdminorg(userToken.getMaindeparment().toString()); + for (Depository depository : depositoryByAdminorgAndUser + ) { + depositoryIdForUser.add(depository.getId()); + } + map.put("depositoryIds", depositoryIdForUser); + map.remove("depositoryId"); + List inventoryList = materialService.findInventory(map); + List depositoryIdList = new ArrayList<>(); + InventoryP inventoryP = null; + for (InventoryP inventory : inventoryList + ) { + depositoryIdList.add(inventory.getDepositoryId()); + inventoryP = inventory; + } + if (inventoryP != null) { + List depositoryByIds = depositoryService.findDepositoryByIds(depositoryIdList); + List splitInfoByMid = splitUnitService.findSplitInfoByMid(inventoryP.getMid()); + Map paramByPrice = new HashMap<>(); + paramByPrice.put("mcode", inventoryP.getCode()); + paramByPrice.put("codeFlag", 1); + List materialByBarCodeByCondition = materialService.findMaterialByBarCodeByCondition(paramByPrice); + inventoryP.setMaterialAndBarCodeList(materialByBarCodeByCondition); + inventoryP.setDepositoryList(depositoryByIds); + inventoryP.setSplitInfoList(splitInfoByMid); + + } + return new RestResponse(inventoryP, 1, 200); + } + + @PostMapping("/findMaterialByCondition") public RestResponse findMaterialByCondition(@RequestBody Map map) { List materialPByCondition = materialService.findMaterialPByCondition(map); return new RestResponse(materialPByCondition, materialService.findCountByCondition(map), 200); } + /** + * 根据条件查询库存记录 + * + * @param map 待查询条件 + * @param request + * @return + */ @PostMapping("/findInventoryByCondition") public RestResponse findInventoryByCondition(@RequestBody Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); @@ -542,14 +643,11 @@ public class MaterialController { List depositoryIdList = roleService.findDepositoryIdForUserHas(userToken); - List tempDepositoryIDList = roleService.findDepositoryIdForWareHouseVisiblePermissionByUser(userToken); - depositoryIdList = (List) CollectionUtils.union(tempDepositoryIDList, depositoryIdList); - for (Integer depositoryId : depositoryIdList - ) { - map.put("depositoryId", depositoryId); - List inventoryPS = materialService.findInventory(map); - inventoryPList.addAll(inventoryPS); - } + map.remove("depositoryId"); + map.put("depositoryIds", depositoryIdList); + inventoryPList = materialService.findInventory(map); + + List depositoryByIds = depositoryService.findDepositoryByIds(depositoryIdList); Map paramByBarcode = new HashMap<>(); for (InventoryP inventoryP : inventoryPList) { @@ -572,11 +670,37 @@ public class MaterialController { inventoryP.setDepositoryList(depositoryByIds); inventoryP.setPlacePList(placeList); } - return new RestResponse(inventoryPList, inventoryPList.size(), 200); } + /** + * 通过条件获取库存记录(用于直接出库) + * + * @param map + * @param request + * @return + */ + @PostMapping("/findInventoryByConditionForImmediatelyOut") + public RestResponse findInventoryByConditionForImmediatelyOut(@RequestBody Map map, HttpServletRequest request) { + String token = request.getHeader("user-token"); + if (token == null) { + token = (String) request.getSession().getAttribute("userToken"); + } + UserByPort userToken = AuthenticationTokenPool.getUserToken(token); + // 获取当前用户部门所有拥有的仓库及其管理的仓库 + List depositoryIdForUser = new ArrayList<>(); + List depositoryByAdminorg = depositoryService.findDepositoryByAdminorg(userToken.getMaindeparment().toString()); + for (Depository depository : depositoryByAdminorg) { + depositoryIdForUser.add(depository.getId()); + } + map.put("depositoryIds", depositoryIdForUser); + List inventory = materialService.findInventory(map); + Integer inventoryCount = materialService.findInventoryCount(map); + return new RestResponse(inventory, inventoryCount, 200); + } + + // 构造物料二维码 @PostMapping("/createQrCode") public RestResponse createQrCode(@RequestBody Map map) { @@ -618,11 +742,11 @@ public class MaterialController { String s = map.get("id").toString(); String type = map.get("type").toString(); String key = "WMS_temporaryValue_" + type + userByPort.getNumber(); - List range = redisPool.getRedisTemplateByDb(15).opsForList().range(key, 0, -1); + List range = redisPool.getRedisTemplateByDb(15).opsForList().range(key, 0, -1); if (range != null) { if (!range.contains(s)) { - redisPool.getRedisTemplateByDb(15).opsForList().rightPush(key, s); - redisPool.getRedisTemplateByDb(15).expire(key, DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS); + redisPool.getRedisTemplateByDb(15).opsForList().rightPush(key, s); + redisPool.getRedisTemplateByDb(15).expire(key, DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS); } } return new RestResponse(); @@ -641,7 +765,7 @@ public class MaterialController { if (map.containsKey("type")) { String type = map.get("type").toString(); String key = "WMS_temporaryValue_" + type + userByPort.getNumber(); - List range = redisPool.getRedisTemplateByDb(15).opsForList().range(key, 0, -1); + List range = redisPool.getRedisTemplateByDb(15).opsForList().range(key, 0, -1); List result = new ArrayList<>(); if (range != null && range.size() > 0) { @@ -679,7 +803,7 @@ public class MaterialController { if (map.containsKey("type")) { String type = map.get("type").toString(); String key = "WMS_temporaryValue_" + type + userByPort.getNumber(); - List range = redisPool.getRedisTemplateByDb(15).opsForList().range(key, 0, -1); + List range = redisPool.getRedisTemplateByDb(15).opsForList().range(key, 0, -1); List result = new ArrayList<>(); if (range != null && range.size() > 0) { @@ -716,7 +840,7 @@ public class MaterialController { if (map.containsKey("id")) { String s = map.get("id").toString(); String type = map.get("type").toString(); - redisPool.getRedisTemplateByDb(15).opsForList().remove("WMS_temporaryValue_" + type + userByPort.getNumber(), 0, s); + redisPool.getRedisTemplateByDb(15).opsForList().remove("WMS_temporaryValue_" + type + userByPort.getNumber(), 0, s); } } @@ -733,12 +857,12 @@ public class MaterialController { String[] mids = map.get("mids").toString().split(","); String type = map.get("type").toString(); String key = "WMS_temporaryValue_" + type + userByPort.getNumber(); - List range = redisPool.getRedisTemplateByDb(15).opsForList().range(key, 0, -1); + List range = redisPool.getRedisTemplateByDb(15).opsForList().range(key, 0, -1); if (range != null) { for (String s : mids) { if (!range.contains(s)) { - redisPool.getRedisTemplateByDb(15).opsForList().rightPush(key, s); - redisPool.getRedisTemplateByDb(15).expire(key, DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS); + redisPool.getRedisTemplateByDb(15).opsForList().rightPush(key, s); + redisPool.getRedisTemplateByDb(15).expire(key, DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS); } } @@ -758,7 +882,7 @@ public class MaterialController { } UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); // 存入mids - redisPool.getRedisTemplateByDb(15).opsForValue().set("temporaryBarCodeValueForMaterial" + userByPort.getNumber(), JSONObject.toJSONString(map)); + redisPool.getRedisTemplateByDb(15).opsForValue().set("temporaryBarCodeValueForMaterial" + userByPort.getNumber(), JSONObject.toJSONString(map)); return new RestResponse(200); } @@ -978,11 +1102,17 @@ public class MaterialController { // 获取物料与条形码的对应关系 List materialByBarCodeByCondition = materialService.findMaterialByBarCodeByCondition(param); boolean flag = false; - List depositoryIdList = roleService.findDepositoryIdForUserHas(userByPort); - List tempDepositoryIdList = roleService.findDepositoryIdForWareHouseVisiblePermissionByUser(userByPort); - depositoryIdList = (List) CollectionUtils.union(depositoryIdList, tempDepositoryIdList); - + List depositoryIdList = new ArrayList<>(); + if (map.containsKey("outType")) { + List depositoryByAdminorg = depositoryService.findDepositoryByAdminorg(userByPort.getMaindeparment().toString()); + for (Depository depository : depositoryByAdminorg + ) { + depositoryIdList.add(depository.getId()); + } + } else { + depositoryIdList = roleService.findDepositoryIdForUserHas(userByPort); + } for (Integer depositoryId : depositoryIdList) { param.put("mcode", mcode); param.put("depositoryId", depositoryId); @@ -1140,9 +1270,16 @@ public class MaterialController { // 获取条形码与物料的映射 MaterialAndBarCode materialByBarCode = materialService.findMaterialByBarCode(barCode); if (materialByBarCode != null) { - List depositoryIdList = roleService.findDepositoryIdForUserHas(userByPort); - List tempDepositoryIdList = roleService.findDepositoryIdForWareHouseVisiblePermissionByUser(userByPort); - depositoryIdList = (List) CollectionUtils.union(depositoryIdList, tempDepositoryIdList); + List depositoryIdList = new ArrayList<>(); + if(map.containsKey("outType")){ + List depositoryByAdminorg = depositoryService.findDepositoryByAdminorg(userByPort.getMaindeparment().toString()); + for (Depository depository : depositoryByAdminorg + ) { + depositoryIdList.add(depository.getId()); + } + }else{ + depositoryIdList = roleService.findDepositoryIdForUserHas(userByPort); + } List placePList = new ArrayList<>(); for (Integer depositoryId : depositoryIdList) { boolean isExist = false; @@ -1752,11 +1889,12 @@ public class MaterialController { /** * 用于获取当前位置该单位下的库存数量 + * * @param map 待查询条件 * @return */ @PostMapping("/getQuantityForLocationAndUnit") - public RestResponse getQuantityForLocationAndUnit(@RequestBody Map map){ + public RestResponse getQuantityForLocationAndUnit(@RequestBody Map map) { // 当前计量单位 String unit = map.get("unit"); // 当前的仓库id @@ -1805,20 +1943,21 @@ public class MaterialController { quantity = (inventoryById.getQuantity() * Scale / 100.0); } } - Map result = new HashMap<>(); - result.put("quantity",quantity); - result.put("placeId",placeId); + Map result = new HashMap<>(); + result.put("quantity", quantity); + result.put("placeId", placeId); return new RestResponse(result); } /** * 根据库存id查询库存记录 + * * @param map 待查询数据 * @return */ @PostMapping("/findInventoryById") - public RestResponse findInventoryById(@RequestBody Map map){ - if(map.containsKey("id")){ + public RestResponse findInventoryById(@RequestBody Map map) { + if (map.containsKey("id")) { Integer id = ObjectFormatUtil.toInteger(map.get("id")); Inventory inventoryById = materialService.findInventoryById(id); InventoryP inventory = new InventoryP(inventoryById); @@ -1827,13 +1966,13 @@ public class MaterialController { List splitInfoByMid = splitUnitService.findSplitInfoByMid(inventoryById.getMid()); inventory.setSplitInfoList(splitInfoByMid); return new RestResponse(inventoryById); - }else{ + } else { throw new MyException("缺少必要参数"); } } @PostMapping("/findInventoryByMcodeAndDepository") - public RestResponse findInventoryByMcodeAndDepository(@RequestBody Map map,HttpServletRequest request){ + public RestResponse findInventoryByMcodeAndDepository(@RequestBody Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); if (token == null) { token = (String) request.getSession().getAttribute("userToken"); @@ -1857,6 +1996,6 @@ public class MaterialController { inventoryP.setDepositoryList(depositoryList); } } - return new RestResponse(inventoryP); + return new RestResponse(inventoryP); } } diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java b/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java index e15ef642..59d5067f 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java @@ -809,6 +809,18 @@ public class PageController { return mv; } + /** + * 跳转到出库申请页面 + * @param request + * @return + */ + @GetMapping("/application_out_immediately") + public ModelAndView application_out_immediately(HttpServletRequest request) { + ModelAndView mv = new ModelAndView(); + mv.setViewName("pages/applicationForStorageCenter/application-out_admin"); + return mv; + } + /** * 用于跳转到出库申请页面(从库存页面跳转而来) * @param code 当前物料编码 diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/UserController.java b/src/main/java/com/dreamchaser/depository_manage/controller/UserController.java index 6ac18ab5..464fac1c 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/UserController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/UserController.java @@ -114,6 +114,9 @@ public class UserController { } + + + @GetMapping("/loginOut") public RestResponse loginOut(HttpServletRequest request) { HttpSession session = request.getSession(); @@ -133,15 +136,6 @@ public class UserController { } - /** - * 退出登录,删除令牌的操作依据在拦截器中完成 - * - * @return RESPONSE200 - */ - /* @GetMapping("/loginOut") - public RestResponse logout() { - return new RestResponse("",200,new StatusInfo("退出成功","退出成功")); - }*/ @GetMapping("/sys/users") public RestResponse findUsers(@RequestParam Map map) { return new RestResponse(userService.findUserPsByCondition(map), userService.findCount(), 200); @@ -161,7 +155,6 @@ public class UserController { token = (String) request.getSession().getAttribute("userToken"); userkey = (String) request.getSession().getAttribute("userKey"); } - UserByPort userToken = AuthenticationTokenPool.getUserToken(token); String url = PublicConfig.external_url + "/staff/archiveslist"; if (map.containsKey("company")) { map.put("company", ObjectFormatUtil.toInteger(map.get("company"))); @@ -189,8 +182,8 @@ public class UserController { } Integer total = ObjectFormatUtil.toInteger(data.get("total")); List userByPortList = new ArrayList<>(); - for (int i = 0; i < list.size(); i++) { - UserByPort userByPort = JSONObject.toJavaObject((JSONObject) list.get(i), UserByPort.class); + for (Object o : list) { + UserByPort userByPort = JSONObject.toJavaObject((JSONObject) o, UserByPort.class); UserByPortP user = new UserByPortP(userByPort); Map param = new HashMap<>(); param.put("userId", userByPort.getId()); @@ -210,6 +203,27 @@ public class UserController { return new RestResponse(userByPortList, total, 200); } + + @PostMapping("/sys/findUserByName") + public RestResponse findUserByName(@RequestBody Map map,HttpServletRequest request){ + Map paramForUser = new HashMap<>(); + paramForUser.put("name",map.get("name")); + String token = request.getHeader("user-token"); + String userkey = request.getHeader("user-key"); + if (token == null) { + token = (String) request.getSession().getAttribute("userToken"); + userkey = (String) request.getSession().getAttribute("userKey"); + } + List userByPortList = LinkInterfaceUtil.FindUserByMap(paramForUser, userkey, token); + List userByPortP = new ArrayList<>(); + for (UserByPort userByPort : userByPortList) { + userByPortP.add(new UserByPortP(userByPort)); + } + return new RestResponse(userByPortP,userByPortP.size(),200); + + } + + /** * 添加用户管理仓库的权限 * @@ -246,6 +260,8 @@ public class UserController { } + + /** * 添加用户管理仓库的权限 * diff --git a/src/main/java/com/dreamchaser/depository_manage/security/pool/HandlesOtherFunctionalThreadPool.java b/src/main/java/com/dreamchaser/depository_manage/security/pool/HandlesOtherFunctionalThreadPool.java index b820a938..1378dc34 100644 --- a/src/main/java/com/dreamchaser/depository_manage/security/pool/HandlesOtherFunctionalThreadPool.java +++ b/src/main/java/com/dreamchaser/depository_manage/security/pool/HandlesOtherFunctionalThreadPool.java @@ -16,4 +16,24 @@ public class HandlesOtherFunctionalThreadPool { exs.execute(runnable); } + public static void close(){ + exs.shutdown(); // 禁止提交新任务 + // 设定最大重试次数 + try { + // 等待 60 s + if (!exs.awaitTermination(60, TimeUnit.SECONDS)) { + // 调用 shutdownNow 取消正在执行的任务 + exs.shutdownNow(); + // 再次等待 60 s,如果还未结束,可以再次尝试,或者直接放弃 + if (!exs.awaitTermination(60, TimeUnit.SECONDS)) + System.err.println("线程池任务未正常执行结束"); + } + } catch (InterruptedException ie) { + // 重新调用 shutdownNow + exs.shutdownNow(); + } + } + + + } diff --git a/src/main/java/com/dreamchaser/depository_manage/service/DepositoryService.java b/src/main/java/com/dreamchaser/depository_manage/service/DepositoryService.java index 40b24d79..cddf3b9a 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/DepositoryService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/DepositoryService.java @@ -225,4 +225,5 @@ public interface DepositoryService { List getTodayInventoryInfoByDidAndMt(Integer did); + } diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryServiceImpl.java index 4e86ad7e..c82b3f44 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryServiceImpl.java @@ -817,6 +817,8 @@ public class DepositoryServiceImpl implements DepositoryService { return result; } + + // 根据id获取子类 public List findChildForMaterialTypeByParent(Long mtId) { List result = new ArrayList<>(); diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java index 5a95843b..1068d671 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java @@ -2570,7 +2570,17 @@ public class MaterialServiceImpl implements MaterialService { // 获取所有物料类型 List materialTypeAll = materialTypeMapper.findMaterialTypeAll(); // 获取当前用户所可见的仓库id - List depositoryIdForUserHas = roleService.findDepositoryIdForUserHas(userToken); + List depositoryIdForUserHas = new ArrayList<>(); + if("immediately".equals(type)){ + List depositoryByAdminorg = depositoryMapper.findDepositoryByAdminorg(userToken.getMaindeparment().toString()); + for (Depository depository:depositoryByAdminorg + ) { + depositoryIdForUserHas.add(depository.getId()); + } + type = "2"; + }else{ + depositoryIdForUserHas = roleService.findDepositoryIdForUserHas(userToken); + } // 物料总数 int totalVal = materialTypeAll.size(); 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 df5ee7dd..f5ffb8ef 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 @@ -1836,6 +1836,411 @@ public class QyWxOperationService { } + /** + * 用于发送物料出库审批(用于立即出库) + * + * @param userAgent 加密后的userAgent + * @param userToken 申请人 + * @param mainId 出库的主订单 + * @return 发送结果 + */ + public JSONObject sendOutApprovalTemplateForImmediately(String userAgent, UserByPort userToken, Integer mainId,String userKey,String token) { + + // 获取当前出库主订单 + ApplicationOutRecord mainRecord = depositoryRecordMapper.findApplicationOutRecordPById(mainId); + + + // 事先定义其他部门负责人列表 + List otherDepartmentIdList = new ArrayList<>(); + + // 获取当前出库明细 + List minRecordList = depositoryRecordMapper.findApplicationOutRecordMinByParent(mainId); + // 定义审批模板 + ApprovalTemplate approvalTemplate = new ApprovalTemplate(); + + // 获取申请人的userId + String workwechat = userToken.getWorkwechat(); + if (workwechat == null || "".equals(workwechat)) { + workwechat = userToken.getWechat(); + } + // 设置申请人 + approvalTemplate.setCreator_userid(workwechat); + + // 设置模板id + approvalTemplate.setTemplate_id(QyWxConfig.out_approval_template_id); + + // 设置审批人模式为通过接口设置(系统内部自定义) + approvalTemplate.setUse_template_approver(0); + + + //审批流程信息,用于指定审批申请的审批流程,支持单人审批、多人会签、多人或签,可能有多个审批节点,仅use_template_approver为0时生效。 + List approval_template_approver_list = new ArrayList<>(); + + + List userIdList = new ArrayList<>(); + List departmentHeadForUserToken = PublicConfig.findDepartmentHeadByUser(userToken.getMaindeparment(),userKey,token ); + for (UserByPort departmentHead : departmentHeadForUserToken + ) { + String departmentHeadWorkwechat = departmentHead.getWorkwechat(); + if (departmentHeadWorkwechat == null || "".equals(departmentHeadWorkwechat)) { + departmentHeadWorkwechat = departmentHead.getWechat(); + } + userIdList.add(departmentHeadWorkwechat); + } + + // 获取当前登录用户部门与企业微信部门对照 + JSONObject userPortByQyWx = PublicConfig.getUserPortByQyWx(userToken.getMaindeparment()); + String portName = userPortByQyWx.getString("name"); + Integer portByQyWxInteger = userPortByQyWx.getInteger("wechatorganizationid"); + + // 用于设置部门负责人流程 + Approval_template_approver approval_template_approver_departMentHeader = new Approval_template_approver(); + approval_template_approver_departMentHeader.setAttr(1); + userIdList = new ArrayList<>(Collections.singleton("PangFuZhen")); + approval_template_approver_departMentHeader.setUserid(userIdList); + + + approval_template_approver_list.add(approval_template_approver_departMentHeader); + + + // 审批申请数据,可定义审批申请中各个控件的值,其中必填项必须有值,选填项可为空,数据结构同“获取审批申请详情”接口返回值中同名参数“apply_data” + Approval_template_apply_data approval_template_apply_data = new Approval_template_apply_data(); + + // 定义控件列表 + List approval_template_apply_data_contents_list = new ArrayList<>(); + + + //定义模板控件——发起人 + Approval_template_apply_data_contents approval_template_apply_data_contents_initiator = new Approval_template_apply_data_contents(); + // 控件类型 + approval_template_apply_data_contents_initiator.setControl("Contact"); + // 控件id + approval_template_apply_data_contents_initiator.setId("Contact-1668051509196"); + + // 成员控件值(control参数为Contact,且value参数为members) + Map members_initiator = new HashMap<>(); + Map contact_user = new HashMap<>(); + List> membersMap_initiator = new ArrayList<>(); + contact_user.put("userid", workwechat); + contact_user.put("name", userToken.getName()); + membersMap_initiator.add(contact_user); + members_initiator.put("members", membersMap_initiator); + approval_template_apply_data_contents_initiator.setValue(members_initiator); + + // 添加到控件列表 + approval_template_apply_data_contents_list.add(approval_template_apply_data_contents_initiator); + + //定义模板控件——发起时间 + Approval_template_apply_data_contents approval_template_apply_data_contents_time = new Approval_template_apply_data_contents(); + approval_template_apply_data_contents_time.setControl("Date"); + approval_template_apply_data_contents_time.setId("Date-1668051535322"); + + Map members_time = new HashMap<>(); + Map contact_time = new HashMap<>(); + contact_time.put("type", "hour"); + contact_time.put("s_timestamp", String.valueOf(System.currentTimeMillis() / 1000)); + members_time.put("date", contact_time); + approval_template_apply_data_contents_time.setValue(members_time); + + // 添加到控件列表 + approval_template_apply_data_contents_list.add(approval_template_apply_data_contents_time); + //定义模板控件——所在部门 + Approval_template_apply_data_contents approval_template_apply_data_contents_department = new Approval_template_apply_data_contents(); + approval_template_apply_data_contents_department.setControl("Contact"); + approval_template_apply_data_contents_department.setId("Contact-1668048405619"); + + + // 部门控件值(control参数为Contact,且value参数为departments) + Map members_department = new HashMap<>(); + Map contact_department = new HashMap<>(); + List> membersMap_department = new ArrayList<>(); + contact_department.put("openapi_id", portByQyWxInteger.toString()); + contact_department.put("name", portName); + membersMap_department.add(contact_department); + members_department.put("departments", membersMap_department); + approval_template_apply_data_contents_department.setValue(members_department); + + // 添加到控件列表 + approval_template_apply_data_contents_list.add(approval_template_apply_data_contents_department); + + + // 获取当前登录用户请求时的备注 + String applyRemark = mainRecord.getApplyRemark(); + if (applyRemark == null) { + applyRemark = ""; + } + //定义模板控件——申请备注 + Approval_template_apply_data_contents approval_template_apply_data_contents_applyRemark = new Approval_template_apply_data_contents(); + approval_template_apply_data_contents_applyRemark.setControl("Textarea"); + approval_template_apply_data_contents_applyRemark.setId("Textarea-1668046298633"); + Map applyRemark_text = new HashMap<>(); + applyRemark_text.put("text", applyRemark); + approval_template_apply_data_contents_applyRemark.setValue(applyRemark_text); + + // 添加到控件列表 + approval_template_apply_data_contents_list.add(approval_template_apply_data_contents_applyRemark); + + //定义模板控件——明细 + Approval_template_apply_data_contents approval_template_apply_data_contents_info = new Approval_template_apply_data_contents(); + approval_template_apply_data_contents_info.setControl("Table"); + approval_template_apply_data_contents_info.setId("Table-1668046309360"); + // 定义明细列表 + List contents_detail = new ArrayList<>(); + + + // 定义仓库Id列表 + List depositoryIdList = new ArrayList<>(); + for (ApplicationOutRecordMin recordMin : minRecordList) { + // 获取明细信息 + + // 获取当前出库物料 + Inventory materialById = materialMapper.findInventoryById(recordMin.getMid()); + + // 获取当前物料所在仓库 + Integer depositoryId = recordMin.getDepositoryId(); + Depository depositoryById = depositoryMapper.findDepositoryById(depositoryId); + + + if (!depositoryIdList.contains(depositoryId)) { + // 如果当前仓库列表中不存在该仓库id + depositoryIdList.add(depositoryId); + } + + Map detail_list = new HashMap<>(); + // 定义明细种的控件列表 + List detail_list_control = new ArrayList<>(); + + + // 物料名称 + Map detail_list_control_info_materialName = new HashMap<>(); + detail_list_control_info_materialName.put("control", "Text"); + detail_list_control_info_materialName.put("id", "Text-1668046310921"); + Map detail_list_control_info_title_materialName = new HashMap<>(); + detail_list_control_info_title_materialName.put("text", "物料名称"); + detail_list_control_info_title_materialName.put("lang", "zh_CN"); + + List detail_list_control_info_title_list_materialName = new ArrayList<>(); + detail_list_control_info_title_list_materialName.add(detail_list_control_info_title_materialName); + detail_list_control_info_materialName.put("title", detail_list_control_info_title_list_materialName); + + Map detail_list_control_info_value_Mname = new HashMap<>(); + detail_list_control_info_value_Mname.put("text", materialById.getMname()); + detail_list_control_info_materialName.put("value", detail_list_control_info_value_Mname); + + + // 物料编码 + Map detail_list_control_info_materialCode = new HashMap<>(); + detail_list_control_info_materialCode.put("control", "Text"); + detail_list_control_info_materialCode.put("id", "Text-1668046336721"); + Map detail_list_control_info_title_materialCode = new HashMap<>(); + detail_list_control_info_title_materialCode.put("text", "物料编码"); + detail_list_control_info_title_materialCode.put("lang", "zh_CN"); + + List detail_list_control_info_title_list_Code = new ArrayList<>(); + detail_list_control_info_title_list_Code.add(detail_list_control_info_title_materialCode); + detail_list_control_info_materialCode.put("title", detail_list_control_info_title_list_Code); + + Map detail_list_control_info_value_Code = new HashMap<>(); + detail_list_control_info_value_Code.put("text", materialById.getCode()); + detail_list_control_info_materialCode.put("value", detail_list_control_info_value_Code); + + // 请求数量 + Map detail_list_control_info_outNumber = new HashMap<>(); + detail_list_control_info_outNumber.put("control", "Number"); + detail_list_control_info_outNumber.put("id", "Number-1668051559772"); + Map detail_list_control_info_title_outNumber = new HashMap<>(); + detail_list_control_info_title_outNumber.put("text", "数量"); + detail_list_control_info_title_outNumber.put("lang", "zh_CN"); + + List detail_list_control_info_title_list_outNumber = new ArrayList<>(); + detail_list_control_info_title_list_outNumber.add(detail_list_control_info_title_outNumber); + detail_list_control_info_outNumber.put("title", detail_list_control_info_title_list_outNumber); + + Map detail_list_control_info_value_outNumber = new HashMap<>(); + detail_list_control_info_value_outNumber.put("new_number", String.valueOf(recordMin.getQuantity() / 100)); + detail_list_control_info_outNumber.put("value", detail_list_control_info_value_outNumber); + + // 请求单位 + Map detail_list_control_info_unit = new HashMap<>(); + detail_list_control_info_unit.put("control", "Text"); + detail_list_control_info_unit.put("id", "Text-1672816068840"); + Map detail_list_control_info_title_unit = new HashMap<>(); + detail_list_control_info_title_unit.put("text", "单位"); + detail_list_control_info_title_unit.put("lang", "zh_CN"); + + List detail_list_control_info_title_list_unit = new ArrayList<>(); + detail_list_control_info_title_list_unit.add(detail_list_control_info_title_unit); + detail_list_control_info_unit.put("title", detail_list_control_info_title_list_unit); + + Map detail_list_control_info_value_unit = new HashMap<>(); + // 定义出库单位 + String unit = recordMin.getUnit(); + if ("-1".equals(unit)) { + unit = materialById.getUnit(); + } + detail_list_control_info_value_unit.put("text", unit); + detail_list_control_info_unit.put("value", detail_list_control_info_value_unit); + + + // 仓库名称 + Map detail_list_control_info_depositoryName = new HashMap<>(); + detail_list_control_info_depositoryName.put("control", "Text"); + detail_list_control_info_depositoryName.put("id", "Text-1668137728919"); + Map detail_list_control_info_title_depositoryName = new HashMap<>(); + detail_list_control_info_title_depositoryName.put("text", "所在仓库"); + detail_list_control_info_title_depositoryName.put("lang", "zh_CN"); + + List detail_list_control_info_title_list_depositoryName = new ArrayList<>(); + detail_list_control_info_title_list_depositoryName.add(detail_list_control_info_title_depositoryName); + detail_list_control_info_depositoryName.put("title", detail_list_control_info_title_list_depositoryName); + + Map detail_list_control_info_value_dname = new HashMap<>(); + detail_list_control_info_value_dname.put("text", depositoryById.getDname()); + detail_list_control_info_depositoryName.put("value", detail_list_control_info_value_dname); + + // 物料规格型号 + Map detail_list_control_info_version = new HashMap<>(); + detail_list_control_info_version.put("control", "Text"); + detail_list_control_info_version.put("id", "Text-1672879620723"); + Map detail_list_control_info_title_version = new HashMap<>(); + detail_list_control_info_title_version.put("text", "规格型号"); + detail_list_control_info_title_version.put("lang", "zh_CN"); + + List detail_list_control_info_title_list_version = new ArrayList<>(); + detail_list_control_info_title_list_version.add(detail_list_control_info_title_version); + detail_list_control_info_version.put("title", detail_list_control_info_title_list_version); + + Map detail_list_control_info_value_version = new HashMap<>(); + detail_list_control_info_value_version.put("text", materialById.getVersion() == null ? "" : materialById.getVersion()); + detail_list_control_info_version.put("value", detail_list_control_info_value_version); + + + detail_list_control.add(detail_list_control_info_materialName); + detail_list_control.add(detail_list_control_info_materialCode); + detail_list_control.add(detail_list_control_info_version); + detail_list_control.add(detail_list_control_info_outNumber); + detail_list_control.add(detail_list_control_info_unit); + detail_list_control.add(detail_list_control_info_depositoryName); + + + detail_list.put("list", detail_list_control); + + contents_detail.add(detail_list); + + } + + Map approval_template_apply_data_contents_info_children = new HashMap<>(); + approval_template_apply_data_contents_info_children.put("children", contents_detail); + approval_template_apply_data_contents_info.setValue(approval_template_apply_data_contents_info_children); + + // 添加到控件列表 + approval_template_apply_data_contents_list.add(approval_template_apply_data_contents_info); + + + // 将控件列表添加到审批申请数据 + approval_template_apply_data.setContents(approval_template_apply_data_contents_list); + + // 定义摘要信息,用于显示在审批通知卡片、审批列表的摘要信息,最多3行 + List approval_template_apply_data_contents_summary_list = new ArrayList<>(); + + + Approval_template_summary_info summary_info_name = new Approval_template_summary_info(); + summary_info_name.setText("发起人:" + userToken.getName()); + summary_info_name.setLang("zh_CN"); + Approval_template_summary_info summary_info_time = new Approval_template_summary_info(); + summary_info_time.setText("发起时间:" + DateUtil.TimeStampToDateTime(Long.valueOf(mainRecord.getApplicantTime()))); + summary_info_time.setLang("zh_CN"); + Approval_template_summary_info summary_info_department = new Approval_template_summary_info(); + summary_info_department.setText("所在部门:" + portName); + summary_info_department.setLang("zh_CN"); + // 发起人 + Map summary_info_name_map = new HashMap<>(); + List summary_info_name_list = new ArrayList<>(); + summary_info_name_list.add(summary_info_name); + summary_info_name_map.put("summary_info", summary_info_name_list); + // 发起时间 + Map summary_info_time_map = new HashMap<>(); + List summary_info_time_list = new ArrayList<>(); + summary_info_time_list.add(summary_info_time); + summary_info_time_map.put("summary_info", summary_info_time_list); + // 所在部门 + Map summary_info_department_map = new HashMap<>(); + List summary_info_time_department = new ArrayList<>(); + summary_info_time_department.add(summary_info_department); + summary_info_department_map.put("summary_info", summary_info_time_department); + + approval_template_apply_data_contents_summary_list.add(summary_info_name_map); + approval_template_apply_data_contents_summary_list.add(summary_info_time_map); + approval_template_apply_data_contents_summary_list.add(summary_info_department_map); + + + // 将摘要信息添加到模板中 + approvalTemplate.setSummary_list(approval_template_apply_data_contents_summary_list); + //审批申请数据,可定义审批申请中各个控件的值,其中必填项必须有值,选填项可为空 + approvalTemplate.setApply_data(approval_template_apply_data); + + //抄送方式:1-提单时抄送(默认值); 2-单据通过后抄送;3-提单和单据通过后抄送。仅use_template_approver为0时生效。 + approvalTemplate.setNotify_type(2); + + + + + // 获取仓储中心负责人标签的用户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); + + + + + for (Integer depositoryId : depositoryIdList + + ) { + // 获取当前仓库的管理员列表 + List userIdByDid = roleMapper.findUserIdByDid(depositoryId); + // 获取当前管理员的企业微信userId + List qywxUserIdList = new ArrayList<>(); + for (Integer userId : userIdByDid + ) { + // 获取对应管理员信息 + UserByPort userByPort = LinkInterfaceUtil.FindUserById(userId, userKey,token); + String user = userByPort.getWorkwechat(); + if (user == null || "".equals(user)) { + user = userByPort.getWechat(); + } + qywxUserIdList.add(user); + } + if (qywxUserIdList.size() > 0) { + // 用于设置仓库管理员流程 + Approval_template_approver approval_template_approver_depository_manager = new Approval_template_approver(); + approval_template_approver_depository_manager.setAttr(1); + approval_template_approver_depository_manager.setUserid(qywxUserIdList); + + approval_template_approver_list.add(approval_template_approver_depository_manager); + } + + } + + + // 设置审批流程 + approvalTemplate.setApprover(approval_template_approver_list); + + // 获取最终模板字符串 + String jsonString = JSONObject.toJSONString(approvalTemplate); + + String url = String.format("https://qyapi.weixin.qq.com/cgi-bin/oa/applyevent?access_token=%s", QyWxConfig.GetQYWXToken(userAgent)); + + String s = HttpUtils.doPost(url, jsonString); + JSONObject jsonObject = JSONObject.parseObject(s); + jsonObject.put("otherDepartmentIdList", JSONObject.toJSONString(otherDepartmentIdList)); + return jsonObject; + } + + + /** * 用于发送入库审批 * diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/RoleServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/RoleServiceImpl.java index e22b6685..6da0e7bd 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/RoleServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/RoleServiceImpl.java @@ -466,6 +466,9 @@ public class RoleServiceImpl implements RoleService { } + + + /** * 获取当前仓库的子仓库 * diff --git a/src/main/resources/static/css/public.css b/src/main/resources/static/css/public.css index 64ee4f88..afc7e527 100644 --- a/src/main/resources/static/css/public.css +++ b/src/main/resources/static/css/public.css @@ -297,3 +297,17 @@ body { left: 15px; } +.userItem{ + margin: 20px 10px ; +} + +.userItemLabel{ + +} + +.userItemBtn{ + display: inline-block; +} + + + diff --git a/src/main/resources/templates/pages/applicationForStorageCenter/application-out_admin.html b/src/main/resources/templates/pages/applicationForStorageCenter/application-out_admin.html new file mode 100644 index 00000000..fda3935e --- /dev/null +++ b/src/main/resources/templates/pages/applicationForStorageCenter/application-out_admin.html @@ -0,0 +1,1996 @@ + + + + + 分步表单 + + + + + + + + + + +
+
+ +
+
+
    +
  • 物料出库
  • +
  • 组合出库
  • +
+
+ +
+ +
+
+ +
+
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/pages/applicationForStorageCenter/applicationSeletUser.html b/src/main/resources/templates/pages/applicationForStorageCenter/applicationSeletUser.html new file mode 100644 index 00000000..7dea7d51 --- /dev/null +++ b/src/main/resources/templates/pages/applicationForStorageCenter/applicationSeletUser.html @@ -0,0 +1,10 @@ + + + + + 选择人员 + + + + + \ No newline at end of file diff --git a/src/test/java/com/dreamchaser/depository_manage/OtherTest.java b/src/test/java/com/dreamchaser/depository_manage/OtherTest.java index ae2cce5a..70bcdee3 100644 --- a/src/test/java/com/dreamchaser/depository_manage/OtherTest.java +++ b/src/test/java/com/dreamchaser/depository_manage/OtherTest.java @@ -7,6 +7,7 @@ import com.dreamchaser.depository_manage.entity.UserByPort; 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.callBackXml_button_templatecard.TemplateCard; +import com.dreamchaser.depository_manage.security.pool.HandlesOtherFunctionalThreadPool; import com.dreamchaser.depository_manage.security.pool.RedisPool; import com.dreamchaser.depository_manage.mapper.DepositoryMapper; import com.dreamchaser.depository_manage.service.*; @@ -28,6 +29,9 @@ import org.springframework.test.context.junit4.SpringRunner; import java.lang.reflect.Field; import java.util.*; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @@ -91,31 +95,12 @@ public class OtherTest { @Test public void main() { -// UserByPort userByPort = LinkInterfaceUtil.FindUserById(6235, null, null); - ApprovalInfo_Details approvalInfo_details = new ApprovalInfo_Details(); - ApprovalInfo_Details_Approver approver = new ApprovalInfo_Details_Approver(); - approver.setUserId("PangFuZhen"); - approvalInfo_details.setApprover(approver); -// depositoryRecordService.reviewByQyWxApprovalIn("[141]",approvalInfo_details,"d35f243c9791341c148f7826994829ec","2","202305050008"); -// stockTakingService.reviewByQyWxApproval("4",approvalInfo_details,"d35f243c9791341c148f7826994829ec","2","202305050010"); - -// List list = new ArrayList<>(); -// list.add(4L); -// JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage("PangFuZhen,", 4, list, "d35f243c9791341c148f7826994829ec","",""); - - - - // Map stringObjectMap = objectToMap(userByPort); -// redisPool.getRedisTemplateByDb(5).opsForHash().putAll(PublicConfig.userInfoRedisPrefix+"300450",stringObjectMap); -// System.out.println(stringObjectMap); -// UserByPort userByPort = getLoginUserInformation("e3bfa398fe9d0e1ab78a00ff59eff788"); -// System.out.println(userByPort); - +// ExecutorService exs = new ThreadPoolExecutor(10, 10, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(10)); } @Test - public void StockTakingTest(){ + public void StockTakingTest() { ApprovalInfo_Details approvalInfo_details = new ApprovalInfo_Details(); ApprovalInfo_Details_Approver approver = new ApprovalInfo_Details_Approver(); approver.setUserId("PangFuZhen"); @@ -126,28 +111,28 @@ public class OtherTest { TemplateCard templateCard = new TemplateCard(); templateCard.setFromUserName("PangFuZhen"); templateCard.setEventKey("wms_completepass_StockTakingId4"); - stockTakingService.completeStockTakingByQyWx(templateCard,"e3bfa398fe9d0e1ab78a00ff59eff788"); + stockTakingService.completeStockTakingByQyWx(templateCard, "e3bfa398fe9d0e1ab78a00ff59eff788"); } @Test - public void ApplicationInTest(){ + public void ApplicationInTest() { ApprovalInfo_Details approvalInfo_details = new ApprovalInfo_Details(); ApprovalInfo_Details_Approver approver = new ApprovalInfo_Details_Approver(); approver.setUserId("PangFuZhen"); approvalInfo_details.setApprover(approver); - depositoryRecordService.reviewByQyWxApprovalIn("[142, 143]",approvalInfo_details,"d35f243c9791341c148f7826994829ec","2","202305050015"); + depositoryRecordService.reviewByQyWxApprovalIn("[142, 143]", approvalInfo_details, "d35f243c9791341c148f7826994829ec", "2", "202305050015"); } @Test - public void ApplicationOutTest(){ + public void ApplicationOutTest() { ApprovalInfo_Details approvalInfo_details = new ApprovalInfo_Details(); ApprovalInfo_Details_Approver approver = new ApprovalInfo_Details_Approver(); approver.setUserId("PangFuZhen"); approvalInfo_details.setApprover(approver); - depositoryRecordService.reviewByQyWxApprovalOut("29",approvalInfo_details,"d35f243c9791341c148f7826994829ec","2","",true,2); + depositoryRecordService.reviewByQyWxApprovalOut("29", approvalInfo_details, "d35f243c9791341c148f7826994829ec", "2", "", true, 2); } }