diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/GroupController.java b/src/main/java/com/dreamchaser/depository_manage/controller/GroupController.java index 3212fb00..2e11f7f1 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/GroupController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/GroupController.java @@ -91,28 +91,12 @@ public class GroupController { @PostMapping("/findGroupByCode") public RestResponse findGroupByCode(@RequestBody Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); - // 获取当前部门仓库 - List depositoryByAdminorg = depositoryService.findDepositoryByAdminorg(userToken.getMaindeparment().toString()); - // 查询当前用户管理的仓库 - List depositoryAndRole = roleService.findDepositoryAndRole(userToken.getId()); - depositoryAndRole.addAll(roleService.findDepositoryAndRole(userToken.getPosition())); - - List depositoryIdList = new ArrayList<>(); - for (Depository depository : depositoryByAdminorg - ) { - depositoryIdList.add(depository.getId()); - } - for (RoleAndDepository rad : depositoryAndRole - ) { - if (!depositoryIdList.contains(rad.getDepositoryId())) { - depositoryIdList.add(rad.getDepositoryId()); - } - } + List depositoryIdList = roleService.findDepositoryIdForUserHas(userToken); String code = map.get("code").toString(); @@ -128,17 +112,26 @@ public class GroupController { // 用于标识当前组合是否可以正常出库 boolean flag = true; + // 定义符合要求的仓库id + List satisfyDepositoryIdList = new ArrayList<>(); for (GroupInfo groupInfo : groupByGid) { + // 获取详细信息 + Integer infoQuantity = groupInfo.getQuantity(); // 获取该物料的库存 - List inventoryByMidAndDepository = materialService.findInventoryByGroupInfoAndDepository(groupInfo, depositoryIdList); + Map inventoryByGroupInfoAndDepository = materialService.findInventoryByGroupInfoAndDepository(groupInfo, depositoryIdList); // 用于标志当前物料库存是否符合要求 boolean flagForQuantity = false; - for (Double quantity : inventoryByMidAndDepository) { + // 获取key 的迭代 + for (Integer depositoryId : inventoryByGroupInfoAndDepository.keySet()) { + Double quantity = inventoryByGroupInfoAndDepository.get(depositoryId); // 如果库存符合要求 - if (quantity >= groupInfo.getQuantity()) { + if (quantity >= infoQuantity) { flagForQuantity = true; + if (!satisfyDepositoryIdList.contains(depositoryId)) { + satisfyDepositoryIdList.add(depositoryId); + } } } if (!flagForQuantity) { @@ -146,6 +139,9 @@ public class GroupController { flag = false; errMsg.append(" ").append(groupInfo.getMname()).append(" "); break; + } else { + List depositoryByIds = depositoryService.findDepositoryByIds(satisfyDepositoryIdList); + groupInfo.setSatisfyDepositoryList(depositoryByIds); } } @@ -208,7 +204,12 @@ public class GroupController { * @return */ @PostMapping("/findGroupByGname") - public RestResponse findGroupByGname(@RequestBody Map map) { + public RestResponse findGroupByGname(@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); if (map.containsKey("gname")) { List groupOnlyByCondition = groupService.findGroupOnlyByCondition(map); int size = groupOnlyByCondition.size(); @@ -220,6 +221,13 @@ public class GroupController { // 如果刚好只有一个 // 获取当前组合的所有物料数据 List groupByGid = groupService.findGroupByCondition(map); + List depositoryIdForUserHas = roleService.findDepositoryIdForUserHas(userToken); + List depositoryByIds = depositoryService.findDepositoryByIds(depositoryIdForUserHas); + if (groupByGid != null && groupByGid.size() > 0) { + groupByGid.get(0).setSatisfyDepositoryList(depositoryByIds); + }else{ + groupByGid = new ArrayList<>(); + } return new RestResponse(groupByGid, groupByGid.size(), 200); } else { @@ -369,28 +377,14 @@ public class GroupController { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); - // 获取当前部门仓库 - List depositoryByAdminorg = depositoryService.findDepositoryByAdminorg(userToken.getMaindeparment().toString()); - - // 查询当前用户管理的仓库 - List depositoryAndRole = roleService.findDepositoryAndRole(userToken.getId()); - depositoryAndRole.addAll(roleService.findDepositoryAndRole(userToken.getPosition())); List depositoryIdList = new ArrayList<>(); - for (Depository depository : depositoryByAdminorg - ) { - depositoryIdList.add(depository.getId()); - } - for (RoleAndDepository rad : depositoryAndRole - ) { - if (!depositoryIdList.contains(rad.getDepositoryId())) { - depositoryIdList.add(rad.getDepositoryId()); - } - } + + depositoryIdList = roleService.findDepositoryIdForUserHas(userToken); // 获取当前组合的所有物料数据 List groupByGid = groupService.findGroupByCondition(map); @@ -403,29 +397,42 @@ public class GroupController { boolean flag = true; if (!"in".equals(type)) { + // 定义符合要求的仓库id + List satisfyDepositoryIdList = new ArrayList<>(); for (GroupInfo groupInfo : groupByGid) { // 获取详细信息 // 获取该物料的库存 - List inventoryByMidAndDepository = materialService.findInventoryByGroupInfoAndDepository(groupInfo, depositoryIdList); + Integer infoQuantity = groupInfo.getQuantity(); + // 用于标志当前物料库存是否符合要求 boolean flagForQuantity = false; - for (Double quantity : inventoryByMidAndDepository) { - // 如果库存符合要求 - if (quantity >= groupInfo.getQuantity()) { + // 获取该物料在各仓库的库存 + Map inventoryByMidAndDepository = materialService.findInventoryByGroupInfoAndDepository(groupInfo, depositoryIdList); + // 获取key的迭代器 + for (Integer depositoryId : inventoryByMidAndDepository.keySet()) { + Double value = inventoryByMidAndDepository.get(depositoryId); + if (value >= infoQuantity) { flagForQuantity = true; + satisfyDepositoryIdList.add(depositoryId); } } + + if (!flagForQuantity) { // 如果当前不符合 flag = false; errMsg.append(" ").append(groupInfo.getMname()).append(" "); break; + } else { + List depositoryByIds = depositoryService.findDepositoryByIds(satisfyDepositoryIdList); + groupInfo.setSatisfyDepositoryList(depositoryByIds); } } } if (flag) { + return new RestResponse(groupByGid); } else { return new RestResponse(null, 666, new StatusInfo("不能出库", "当前组合中的" + errMsg + "在仓库中库存不足")); @@ -454,14 +461,14 @@ public class GroupController { @PostMapping("/addApplicationToRedis") public RestResponse addApplicationToRedis(@RequestBody Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); // 获取暂存的数据 List gids = (List) map.get("gids"); // 获取当前已经存在的数据 - List range = redisPool.getRedisTemplateByDb(15).opsForList().range("wms_gids" + userToken.getId(), 0, -1); + List range = redisPool.getRedisTemplateByDb(15).opsForList().range("wms_gids" + userToken.getId(), 0, -1); for (Integer gid : gids) { if (range.contains(gid.toString())) { continue; @@ -470,7 +477,7 @@ public class GroupController { } // 设置过期时间为1天 - redisPool.getRedisTemplateByDb(15).expire("wms_gids" + userToken.getId(), 24 * 60 * 60, TimeUnit.SECONDS); + redisPool.getRedisTemplateByDb(15).expire("wms_gids" + userToken.getId(), 24 * 60 * 60, TimeUnit.SECONDS); return CrudUtil.insertHandle(1, 1); } @@ -488,11 +495,11 @@ public class GroupController { Integer start = (page - 1) * pagesize; Integer end = page * 10; String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); - Long size = redisPool.getRedisTemplateByDb(15).boundListOps("wms_gids" + userToken.getId()).size(); + Long size = redisPool.getRedisTemplateByDb(15).boundListOps("wms_gids" + userToken.getId()).size(); if (end > size) { end = ObjectFormatUtil.toInteger(size); } @@ -500,7 +507,7 @@ public class GroupController { Map paramForGroupOnly = new HashMap<>(); for (int i = start; i < end; i++) { // 获取组合编号 - Integer gid = ObjectFormatUtil.toInteger( redisPool.getRedisTemplateByDb(15).opsForList().index("wms_gids" + userToken.getId(), i)); + Integer gid = ObjectFormatUtil.toInteger(redisPool.getRedisTemplateByDb(15).opsForList().index("wms_gids" + userToken.getId(), i)); paramForGroupOnly.put("gid", gid); List groupPByCondition = groupService.findOnlyGroupByCondition(paramForGroupOnly); for (int j = 0; j < groupPByCondition.size(); j++) { @@ -522,13 +529,13 @@ public class GroupController { @PostMapping("/deleteApplicationToRedis") public RestResponse deleteApplicationToRedis(@RequestBody Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); List gids = (List) map.get("gids"); for (int i = 0; i < gids.size(); i++) { - redisPool.getRedisTemplateByDb(15).opsForList().remove("wms_gids" + userToken.getId(), 1, gids.get(i).toString()); + redisPool.getRedisTemplateByDb(15).opsForList().remove("wms_gids" + userToken.getId(), 1, gids.get(i).toString()); } return CrudUtil.insertHandle(1, 1); } @@ -571,7 +578,7 @@ public class GroupController { } } try { - integer += groupService.insertApplicationInRecord(map, userToken,crypt,userKey,token); // 插入主订单 + integer += groupService.insertApplicationInRecord(map, userToken, crypt, userKey, token); // 插入主订单 } catch (Exception e) { return new RestResponse("", 666, new StatusInfo("出库失败", e.getMessage())); } @@ -580,6 +587,7 @@ public class GroupController { /** * 入库审核 + * * @param map * @param request * @return @@ -587,7 +595,7 @@ public class GroupController { @PutMapping("/reviewIn") public RestResponse reviewIn(@RequestBody Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); @@ -602,10 +610,10 @@ public class GroupController { } @PostMapping("/findGroupById") - public RestResponse findGroupById(@RequestBody Map map){ - if(map.containsKey("id")){ + public RestResponse findGroupById(@RequestBody Map map) { + if (map.containsKey("id")) { return new RestResponse(groupService.findGroupOnlyById(ObjectFormatUtil.toInteger(map.get("id")))); - }else{ + } else { throw new MyException("缺少必要参数"); } } @@ -613,23 +621,24 @@ public class GroupController { /** * 用于获取当前物料在组合中的详细信息 + * * @param map * @return */ @PostMapping("/materialInfoForGroup") - public RestResponse materialInfoForGroup(@RequestBody Mapmap){ - if(map.containsKey("mid") && map.containsKey("gid")){ + public RestResponse materialInfoForGroup(@RequestBody Map map) { + if (map.containsKey("mid") && map.containsKey("gid")) { Integer mid = ObjectFormatUtil.toInteger(map.get("mid")); Integer gid = ObjectFormatUtil.toInteger(map.get("gid")); GroupInfo groupInfoByMidAndGid = groupService.findGroupInfoByMidAndGid(mid, gid); - Map result = new HashMap<>(); + Map result = new HashMap<>(); if (groupInfoByMidAndGid != null) { List splitInfoByMid = splitUnitService.findSplitInfoByMid(groupInfoByMidAndGid.getMid()); - result.put("groupInfo",groupInfoByMidAndGid); - result.put("splitList",splitInfoByMid); + result.put("groupInfo", groupInfoByMidAndGid); + result.put("splitList", splitInfoByMid); } return new RestResponse(result); - }else{ + } else { throw new MyException("缺少必要参数"); } } @@ -655,7 +664,7 @@ public class GroupController { map.put("applicantId", userToken.getId()); // 获取当前部门负责人 - List departmentHeadByUsers = PublicConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userkey,token); + List departmentHeadByUsers = PublicConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userkey, token); // 部门负责人id StringBuilder departmentHeadId = new StringBuilder(); // 部门负责人企业微信user @@ -704,7 +713,7 @@ public class GroupController { map.put("adminorgId", userToken.getMaindeparment()); } try { - integer += groupService.insertApplicationOutRecord(map, userToken,userkey,token); // 插入主订单 + integer += groupService.insertApplicationOutRecord(map, userToken, userkey, token); // 插入主订单 } catch (Exception e) { return new RestResponse("", 666, new StatusInfo("出库失败", e.getMessage())); } @@ -719,9 +728,9 @@ public class GroupController { 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); }); if (integer != 0 && params.size() < 1) { @@ -773,37 +782,30 @@ public class GroupController { public RestResponse groupQuantityIsTrue(@RequestBody Map map, HttpServletRequest request) { if (map.containsKey("gid")) { String token = request.getHeader("user-token"); - if(token == null){ - token = (String) request.getSession().getAttribute("userToken"); - } - UserByPort userToken = AuthenticationTokenPool.getUserToken(token); - // 获取当前部门所拥有的仓库 - List depositoryByAdminorg = depositoryService.findDepositoryByAdminorg(userToken.getMaindeparment().toString()); - // 查询当前用户管理的仓库 - List depositoryAndRole = roleService.findDepositoryAndRole(userToken.getId()); - depositoryAndRole.addAll(roleService.findDepositoryAndRole(userToken.getPosition())); - - List depositoryIdList = new ArrayList<>(); - for (Depository depository : depositoryByAdminorg - ) { - depositoryIdList.add(depository.getId()); - } - for (RoleAndDepository rad : depositoryAndRole - ) { - if (!depositoryIdList.contains(rad.getDepositoryId())) { - depositoryIdList.add(rad.getDepositoryId()); - } + if (token == null) { + token = (String) request.getSession().getAttribute("userToken"); } + UserByPort userToken = AuthenticationTokenPool.getUserToken(token); + // 获取组合id Integer gid = ObjectFormatUtil.toInteger(map.get("gid")); // 获取组合数量 Integer quantity = ObjectFormatUtil.toInteger(map.get("quantity")); + List depositoryIdList = new ArrayList<>(); + if (map.containsKey("depositoryId")) { + // 获取选择的仓库 + Integer depositoryId = ObjectFormatUtil.toInteger(map.get("depositoryId")); + depositoryIdList.add(depositoryId); + } else { + depositoryIdList = roleService.findDepositoryIdForUserHas(userToken); + } + Map trueForGroup = isTrueForGroup(gid, quantity, depositoryIdList); Boolean flag = Boolean.valueOf(trueForGroup.get("flag")); - String mname = trueForGroup.get("mname"); - return new RestResponse(flag,200,new StatusInfo(mname,mname)); + String mname = trueForGroup.get("mname"); + return new RestResponse(flag, 200, new StatusInfo(mname, mname)); } else { throw new MyException("缺少必要参数"); } @@ -829,7 +831,7 @@ public class GroupController { String crypt = Md5.crypt(header); map.put("applicantId", userToken.getId()); // 获取当前部门负责人 - List departmentHeadByUsers = PublicConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userkey,token); + List departmentHeadByUsers = PublicConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userkey, token); // 部门负责人id StringBuilder departmentHeadId = new StringBuilder(); // 部门负责人企业微信user @@ -877,8 +879,8 @@ public class GroupController { Integer quantity = ObjectFormatUtil.toInteger(map.get("quantity")); Map trueForGroup = isTrueForGroup(gid, quantity, depositoryIdList); boolean flag = Boolean.parseBoolean(trueForGroup.get("flag")); - if(!flag){ - return new RestResponse("", 666, new StatusInfo("仓库中"+trueForGroup.get("mname")+"库存不足","仓库中"+trueForGroup.get("mname")+"库存不足" )); + if (!flag) { + return new RestResponse("", 666, new StatusInfo("仓库中" + trueForGroup.get("mname") + "库存不足", "仓库中" + trueForGroup.get("mname") + "库存不足")); } map.put("gid", gid); List groupInfoByGid = groupService.findGroupInfoByGid(gid); @@ -899,8 +901,8 @@ public class GroupController { Map trueForGroup = isTrueForGroup(temp, quantity, depositoryIdList); boolean flag = Boolean.parseBoolean(trueForGroup.get("flag")); - if(!flag){ - return new RestResponse("", 666, new StatusInfo("仓库中"+trueForGroup.get("mname")+"库存不足","仓库中"+trueForGroup.get("mname")+"库存不足" )); + if (!flag) { + return new RestResponse("", 666, new StatusInfo("仓库中" + trueForGroup.get("mname") + "库存不足", "仓库中" + trueForGroup.get("mname") + "库存不足")); } List groupInfoByGid = groupService.findGroupInfoByGid(temp); if (groupInfoByGid != null) { @@ -933,7 +935,7 @@ public class GroupController { map.put("adminorgId", userToken.getMaindeparment()); } try { - integer += groupService.insertApplicationOutRecord(map, userToken,userkey,token); // 插入主订单 + integer += groupService.insertApplicationOutRecord(map, userToken, userkey, token); // 插入主订单 } catch (Exception e) { return new RestResponse("", 666, new StatusInfo("出库失败", e.getMessage())); } @@ -948,17 +950,16 @@ public class GroupController { 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); }); return CrudUtil.insertHandle(integer, result); } - - Map isTrueForGroup(Integer gid,Integer quantity,List depositoryIdList){ + Map isTrueForGroup(Integer gid, Integer quantity, List depositoryIdList) { List groupInfoByGid = groupService.findGroupInfoByGid(gid); boolean flag = true; String mname = ""; @@ -971,9 +972,11 @@ public class GroupController { boolean flagForInventory = false; // 获取该物料在各仓库的库存 - List inventoryByMidAndDepository = materialService.findInventoryByGroupInfoAndDepository(groupInfo, depositoryIdList); - for (Double integer : inventoryByMidAndDepository) { - if (integer >= totalQuantity) { + Map inventoryByMidAndDepository = materialService.findInventoryByGroupInfoAndDepository(groupInfo, depositoryIdList); + // 获取key的迭代器 + for (Integer depositoryId : inventoryByMidAndDepository.keySet()) { + Double value = inventoryByMidAndDepository.get(depositoryId); + if (value >= totalQuantity) { flagForInventory = true; break; } @@ -985,9 +988,9 @@ public class GroupController { } mname = groupInfo.getMname(); } - Map result = new HashMap<>(); + Map result = new HashMap<>(); result.put("flag", Boolean.toString(flag)); - result.put("mname",mname); + result.put("mname", mname); return result; } } diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/GroupInfo.java b/src/main/java/com/dreamchaser/depository_manage/entity/GroupInfo.java index 9a7ef918..a26b286d 100644 --- a/src/main/java/com/dreamchaser/depository_manage/entity/GroupInfo.java +++ b/src/main/java/com/dreamchaser/depository_manage/entity/GroupInfo.java @@ -2,6 +2,8 @@ package com.dreamchaser.depository_manage.entity; import lombok.Data; +import java.util.List; + /** * 用于组合信息的封装 */ @@ -104,4 +106,9 @@ public class GroupInfo { * 用于展示的计量单位 */ private String showUnit; + + /** + * 用于展示符合库存数量的仓库id + */ + private List satisfyDepositoryList; } diff --git a/src/main/java/com/dreamchaser/depository_manage/service/MaterialService.java b/src/main/java/com/dreamchaser/depository_manage/service/MaterialService.java index 9ba9aadc..4e7cdedd 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/MaterialService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/MaterialService.java @@ -157,7 +157,7 @@ public interface MaterialService { * @param depositoryList 待查询的仓库 * @return */ - List findInventoryByGroupInfoAndDepository(GroupInfo groupInfo, List depositoryList); + Map findInventoryByGroupInfoAndDepository(GroupInfo groupInfo, List depositoryList); /** * 根据物料id获取其在对应仓库中的库存数 diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/GroupServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/GroupServiceImpl.java index 8fe3cda8..e3edb9cd 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/GroupServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/GroupServiceImpl.java @@ -132,13 +132,13 @@ public class GroupServiceImpl implements GroupService { } else { groupInfo.setShowUnit(groupInfo.getUnit()); } - if(groupInfo.getVersion() == null){ + if (groupInfo.getVersion() == null) { groupInfo.setVersion(""); } - if(groupInfo.getBrand() == null){ + if (groupInfo.getBrand() == null) { groupInfo.setBrand(""); } - if(groupInfo.getCreateTime() != null){ + if (groupInfo.getCreateTime() != null) { groupInfo.setShowCreateTime(DateUtil.TimeStampToDateTime(groupInfo.getCreateTime())); } } @@ -579,13 +579,14 @@ public class GroupServiceImpl implements GroupService { */ @Override @Transactional(rollbackFor = Exception.class) - public Integer insertApplicationOutRecord(Map map, UserByPort userToken,String userKey,String token) { + public Integer insertApplicationOutRecord(Map map, UserByPort userToken, String userKey, String token) { // 用于存储出库数据 Map paramForOut = new HashMap<>(); paramForOut.put("departmenthead", map.get("departmenthead")); paramForOut.put("applicantId", userToken.getId()); paramForOut.put("createUid", userToken.getId()); + // 获取当前提交数 List params = (List) map.get("params"); @@ -603,6 +604,14 @@ public class GroupServiceImpl implements GroupService { // 获取要出库组合的具体信息 List groupInfoByGid = groupMapper.findGroupInfoByGid(gid); + + // 用于统计出库物料总数 + double quantityForTotal = 0; + + // 用于统计出库物料金额总数 + double priceForTotal = 0; + + List depositoryIdList = new ArrayList<>(); // 获取当前部门所拥有的仓库 List depositoryByAdminorg = depositoryMapper.findDepositoryByAdminorg(userToken.getMaindeparment().toString()); @@ -610,7 +619,6 @@ public class GroupServiceImpl implements GroupService { List depositoryAndRole = roleMapper.findDepositoryAndRole(userToken.getId()); depositoryAndRole.addAll(roleMapper.findDepositoryAndRole(userToken.getPosition())); - List depositoryIdList = new ArrayList<>(); for (Depository depository : depositoryByAdminorg ) { depositoryIdList.add(depository.getId()); @@ -621,11 +629,27 @@ public class GroupServiceImpl implements GroupService { depositoryIdList.add(rad.getDepositoryId()); } } - // 用于统计出库物料总数 - double quantityForTotal = 0; - // 用于统计出库物料金额总数 - double priceForTotal = 0; + // 定义是否选择的仓库(默认没有选择) + boolean flagForSelectDepository = false; + Object depositoryIdForSelect = map.get("depositoryId"); + if (depositoryIdForSelect == null || "".equals(depositoryIdForSelect.toString())) { + paramForOut.put("flagForOpenDepository", 1); + map.remove("depositoryId"); + } else { + paramForOut.put("flagForOpenDepository", 2); + paramForOut.put("depositoryId", depositoryIdForSelect); + if (depositoryIdList.contains(ObjectFormatUtil.toInteger(depositoryIdForSelect))) { + paramForOut.put("flagForOpenDepository", 1); + flagForSelectDepository = true; + }else{ + depositoryIdList = new ArrayList<>(); + depositoryIdList.add(ObjectFormatUtil.toInteger(depositoryIdForSelect)); + } + + + } + // 循环遍历当前部门所拥有的仓库 for (Integer depositoryId : @@ -646,7 +670,9 @@ public class GroupServiceImpl implements GroupService { if (inventory.size() > 0) { quantityForTotal += quantityForGroup * groupInfo.getQuantity(); priceForTotal += inventory.get(0).getPrice() * 100 * quantityForGroup; - paramForOut.put("depositoryId", depositoryId); + if (!flagForSelectDepository) { + paramForOut.put("depositoryId", depositoryId); + } break; } } else { @@ -663,12 +689,16 @@ public class GroupServiceImpl implements GroupService { if (inventory.size() > 0) { quantityForTotal += quantityForGroup * groupInfo.getQuantity(); priceForTotal += inventory.get(0).getPrice() * 100 / scale * quantityForGroup; - paramForOut.put("depositoryId", depositoryId); + if (!flagForSelectDepository) { + paramForOut.put("depositoryId", depositoryId); + } break; } } } } + + if (map.containsKey("flagForAgency")) { // 如果开启了代领 paramForOut.put("applicantId", map.get("agencyUid")); @@ -676,7 +706,6 @@ public class GroupServiceImpl implements GroupService { } else { paramForOut.put("flagForAgency", 2); } - paramForOut.put("flagForOpenDepository",1); paramForOut.put("quantity", quantityForTotal * 100); paramForOut.put("price", priceForTotal); paramForOut.put("applicantTime", System.currentTimeMillis()); @@ -684,7 +713,7 @@ public class GroupServiceImpl implements GroupService { paramForOut.put("state", "待部门负责人审核"); paramForOut.put("applyRemark", map.get("applyRemark")); // 获取当前部门名称 - Administration company = LinkInterfaceUtil.getCompany(userToken.getMaindeparment(), userKey,token); + Administration company = LinkInterfaceUtil.getCompany(userToken.getMaindeparment(), userKey, token); // 构造出库订单编码 String code = createOutCode("outOrderNumber", company.getName()); paramForOut.put("code", code); @@ -717,13 +746,13 @@ public class GroupServiceImpl implements GroupService { priceForTotal += inventory.get(0).getPrice() * 100 * quantityForGroup; } if (map.containsKey("constructionUnitId" + temp)) { - String constructionUnitId = map.get("constructionUnitId"+ temp).toString(); + String constructionUnitId = map.get("constructionUnitId" + temp).toString(); if ("".equals(constructionUnitId)) { - map.remove("constructionUnitId"+ temp); + map.remove("constructionUnitId" + temp); } } - if (map.containsKey("adminorgId"+ temp)) { - String adminorgId = map.get("adminorgId"+ temp).toString(); + if (map.containsKey("adminorgId" + temp)) { + String adminorgId = map.get("adminorgId" + temp).toString(); if ("".equals(adminorgId)) { map.put("adminorgId", userToken.getMaindeparment()); } @@ -746,7 +775,7 @@ public class GroupServiceImpl implements GroupService { */ @Transactional(rollbackFor = Exception.class) @Override - public Integer insertApplicationInRecord(Map map, UserByPort userToken, String userAgent,String userKey,String token) { + public Integer insertApplicationInRecord(Map map, UserByPort userToken, String userAgent, String userKey, String token) { // 获取当前提交数 @@ -826,29 +855,29 @@ public class GroupServiceImpl implements GroupService { // 获取当前类型的管理员 Map paramForMtManagers = new HashMap<>(); - paramForMtManagers.put("mtid",next); + paramForMtManagers.put("mtid", next); List materialTypeIdForIn = roleMapper.findRoleAndMaterialTypeByCondition(paramForMtManagers); // 用于存储当前仓库的管理员企业微信userId StringBuilder sb = new StringBuilder(); for (RoleAndMaterialType mt : materialTypeIdForIn ) { // 获取管理员数据 - UserByPort userByPort = LinkInterfaceUtil.FindUserById(mt.getUid(), userKey,token); + UserByPort userByPort = LinkInterfaceUtil.FindUserById(mt.getUid(), userKey, token); String workwechat = userByPort.getWorkwechat(); if (workwechat == null || "".equals(workwechat)) { workwechat = userByPort.getWechat(); } sb.append(workwechat).append(","); } - JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateIn(userAgent, userToken, integerList, sb.toString(),userKey,token); + JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateIn(userAgent, userToken, integerList, sb.toString(), userKey, token); String sp_no = jsonObject.getString("sp_no"); Map QyWxApprovalMap = new HashMap<>(); QyWxApprovalMap.put("sp_no", sp_no); QyWxApprovalMap.put("mainId", integerList.toString()); QyWxApprovalMap.put("mainGidId", showRecordIds.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); } @@ -996,7 +1025,7 @@ public class GroupServiceImpl implements GroupService { /** * 用于插入子出库订单 * - * @param map 申请条件 + * @param map 申请条件 * @param code 出库单号 * @param parentId 主单号 * @param gid 组合id @@ -1004,7 +1033,7 @@ public class GroupServiceImpl implements GroupService { * @return */ @Transactional(rollbackFor = Exception.class) - public Integer insertApplicationOutMinRecord(Map map, String code, Object parentId, Integer gid, Integer quantityForGroup, List depositoryIdList) { + public Integer insertApplicationOutMinRecord(Map map, String code, Object parentId, Integer gid, Integer quantityForGroup, List depositoryIdList) { // 用于存储申请数 Integer result = 0; 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 892935b8..6047e5a9 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 @@ -507,9 +507,11 @@ public class MaterialServiceImpl implements MaterialService { * @return */ @Override - public List findInventoryByGroupInfoAndDepository(GroupInfo groupInfo, List depositoryList) { + public Map findInventoryByGroupInfoAndDepository(GroupInfo groupInfo, List depositoryList) { + // 用于存储各仓库的库存 - List result = new ArrayList<>(); + Map resultMap = new HashMap<>(); + // 获取当前物料在组合中的单位 String unit = groupInfo.getUnit(); @@ -521,10 +523,11 @@ public class MaterialServiceImpl implements MaterialService { for (Integer depositoryId : depositoryList) { map.put("did", depositoryId); Inventory inventory = materialMapper.findInventoryByMidAndDid(map); + if (inventory != null) { - result.add((double) inventory.getQuantity() / 100); + resultMap.put(depositoryId, (inventory.getQuantity() / 100.0)); } else { - result.add(0.0); + resultMap.put(depositoryId, 0.0); } } } else { @@ -532,8 +535,6 @@ public class MaterialServiceImpl implements MaterialService { map.put("newUnit", unit); // 获取当前拆单单位 SplitInfo splitInfo = splitUnitMapper.findSplitInfoByMidAndUnit(map); - // 获取当前拆单单位与基础单位的进制 - int scale = splitUnitService.findSplitInfoScaleQuantity(splitInfo, -1); // 用户获取对应拆单库存记录 Map paramForSplitInventory = new HashMap<>(); @@ -550,14 +551,12 @@ public class MaterialServiceImpl implements MaterialService { materialAndPlace.setId(materialAndPlaceForView.getId()); quantity += splitUnitService.findAllInventoryForSplitInfo(-1, materialAndPlace, splitInfo.getId(), 0, true); } - - result.add(quantity); - + resultMap.put(depositoryId, quantity); } } - return result; + return resultMap; } /** diff --git a/src/main/resources/templates/pages/application/application-out.html b/src/main/resources/templates/pages/application/application-out.html index 4f3c8b21..147271a7 100644 --- a/src/main/resources/templates/pages/application/application-out.html +++ b/src/main/resources/templates/pages/application/application-out.html @@ -298,6 +298,15 @@ required lay-verify="number" placeholder="请填写组合数量"/> +
+ +
+ +
+
@@ -765,6 +774,15 @@
+
+
+ +
+ +
@@ -1049,9 +1067,21 @@ // 赋值给gname gnameItem.value = data[0].gname; gidItem.value = data[0].gid; + let satisfyDepositoryList = data[0].satisfyDepositoryList; + if (depositoryDisplay !== "none") { + var idNumber = gidItem.name.split("gid")[1]; + $("#showDepositoryForGroup" + idNumber).empty(); + if (satisfyDepositoryList !== null) { + for (let i = 0; i < satisfyDepositoryList.length; i++) { + $("#showDepositoryForGroup" + idNumber).append(new Option(satisfyDepositoryList[i].dname, satisfyDepositoryList[i].id)); + } + } + form.render(); + } for (let i = 0; i < data.length; i++) { CoverpageForGroup(pid, data[i]); } + element.init(); layer.close(loading2) } @@ -1249,6 +1279,17 @@ } // 赋值给gname gcodeItem.value = data[0].gcode; + let satisfyDepositoryList = data[0].satisfyDepositoryList; + if (depositoryDisplay !== "none") { + var idNumber = gidItem.name.split("gid")[1]; + $("#showDepositoryForGroup" + idNumber).empty(); + if (satisfyDepositoryList !== null) { + for (let i = 0; i < satisfyDepositoryList.length; i++) { + $("#showDepositoryForGroup" + idNumber).append(new Option(satisfyDepositoryList[i].dname, satisfyDepositoryList[i].id)); + } + } + form.render(); + } for (let i = 0; i < data.length; i++) { CoverpageForGroup(pid, data[i]); } @@ -1339,6 +1380,17 @@ // 赋值给gname gidItem.value = data[0].gid; gcodeItem.value = data[0].gcode; + let satisfyDepositoryList = data[0].satisfyDepositoryList; + if (depositoryDisplay !== "none") { + var idNumber = gidItem.name.split("gid")[1]; + $("#showDepositoryForGroup" + idNumber).empty(); + if (satisfyDepositoryList !== null) { + for (let i = 0; i < satisfyDepositoryList.length; i++) { + $("#showDepositoryForGroup" + idNumber).append(new Option(satisfyDepositoryList[i].dname, satisfyDepositoryList[i].id)); + } + } + form.render(); + } for (let i = 0; i < data.length; i++) { CoverpageForGroup(pid, data[i]); } @@ -1348,7 +1400,8 @@ } } }) - } else { + } + else { gcodeItem.value = ''; gidItem.value = ''; let childNodes = parent.childNodes; @@ -1357,7 +1410,6 @@ childNodes[i].remove() } } - layer.close(loading2); } }; @@ -1727,6 +1779,9 @@ var req = {}; req.gid = gid; req.quantity = val; + if (depositoryDisplay !== "none") { + req.depositoryId = $("#showDepositoryForGroup" + id).val(); + } let loading2 = layer.open({type: 3, shade: [0.25, '#000'], icon: 2, speed: 0}); $.ajax({ url: "/group/groupQuantityIsTrue", @@ -1763,53 +1818,64 @@ let unit = ""; let mcode = ""; let depositoryId = "-1"; + // 用于标志是否为物料出库(默认为物料) + let flag = true; if (id.indexOf('unit') !== -1) { unit = data.value; - } else { - // 获取当前选中的仓库id + } else if (!(id.indexOf('ForGroup'))) { + // 获取当前选中的仓库id是在物料出库下 depositoryId = data.value; idNum = id.split('showDepository')[1]; unit = $("#unit" + idNum).val(); - + } else if (id.indexOf("ForGroup")) { + depositoryId = data.value; + idNum = id.split('showDepositoryForGroup')[1]; + flag = false; } - mcode = $("#code" + idNum).val(); - if (mcode === "" || mcode === undefined || mcode === null) { - layer.msg("请输入物料的正确编码!", {icon: 0, time: 500}, function () { - $("#quantity" + idNum).val("") - }); - } else { - let val = $("#quantity" + idNum).val(); - if (val !== null && val !== undefined && val !== '') { - var req = {}; - req.mcode = mcode; - req.quantity = val; - req.unit = unit; - req.placeId = -1; - if (depositoryId !== "-1") { - req.depositoryId = depositoryId; - } - let loading2 = layer.open({type: 3, shade: [0.25, '#000'], icon: 2, speed: 0}); - $.ajax({ - url: "/material/MaterialQuantityIsTrue", - type: "post", - data: JSON.stringify(req), - dataType: 'json', - contentType: "application/json;charset=utf-8", - success: function (res) { - var flag = res.data; - if (!flag) { // 如果当前数目不合适 - layer.msg("当前单个仓库中物料数量不足", {icon: 0, time: 500}, function () { - layer.close(loading2); - $("#quantity" + idNum).val(""); - }, - ); - } else { - layer.close(loading2) - } - - } + if (flag) { + mcode = $("#code" + idNum).val(); + if (mcode === "" || mcode === undefined || mcode === null) { + layer.msg("请输入物料的正确编码!", {icon: 0, time: 1000}, function () { + $("#quantity" + idNum).val("") }); + } else { + let val = $("#quantity" + idNum).val(); + if (val !== null && val !== undefined && val !== '') { + var req = {}; + req.mcode = mcode; + req.quantity = val; + req.unit = unit; + req.placeId = -1; + if (depositoryId !== "-1") { + req.depositoryId = depositoryId; + } + let loading2 = layer.open({type: 3, shade: [0.25, '#000'], icon: 2, speed: 0}); + $.ajax({ + url: "/material/MaterialQuantityIsTrue", + type: "post", + data: JSON.stringify(req), + dataType: 'json', + contentType: "application/json;charset=utf-8", + success: function (res) { + var flag = res.data; + if (!flag) { // 如果当前数目不合适 + layer.msg("当前单个仓库中物料数量不足", {icon: 0, time: 500}, function () { + layer.close(loading2); + $("#quantity" + idNum).val(""); + }, + ); + } else { + layer.close(loading2) + } + + } + }); + } } + } else { + let elem = {}; + elem.id = "quantityForGroup" + idNum; + groupQuantityIsTrue(elem) } @@ -1820,7 +1886,7 @@ let id = obj.id; if (id.indexOf("ForGroup") !== -1) { id = "ForGroup"; - }else{ + } else { id = ""; } let name = obj.value;