diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java index 8a67d42c..53c758f0 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java @@ -1,6 +1,7 @@ package com.dreamchaser.depository_manage.controller; import com.alibaba.excel.util.ListUtils; +import com.dreamchaser.depository_manage.config.PublicConfig; import com.dreamchaser.depository_manage.entity.*; import com.dreamchaser.depository_manage.exception.MyException; import com.dreamchaser.depository_manage.pojo.*; @@ -231,8 +232,8 @@ public class DepositoryController { userKey = (String) request.getSession().getAttribute("userKey"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); - String finalUserKey = userKey; - String finalToken = token; + String finalUserKey = userKey; + String finalToken = token; if (map.containsKey("id")) { Integer id = ObjectFormatUtil.toInteger(map.get("id")); HandlesOtherFunctionalThreadPool.execute(() -> UpdateSonState(id.toString(), 3, true, finalUserKey, finalToken)); @@ -242,7 +243,7 @@ public class DepositoryController { List ids = (List) map.get("ids"); for (Integer integer : ids) { String id = integer.toString(); - HandlesOtherFunctionalThreadPool.execute(() -> UpdateSonState(id, 3, true, finalUserKey,finalToken)); + HandlesOtherFunctionalThreadPool.execute(() -> UpdateSonState(id, 3, true, finalUserKey, finalToken)); } return CrudUtil.deleteHandle(depositoryService.changeStateToDeletedByIds(ids), ids.size()); } else { @@ -289,14 +290,14 @@ public class DepositoryController { int state = ((int) map.get("state")); String id = (String) map.get("id"); if (state == 2) { - String finalUserKey = userKey; - String finalToken = token; + String finalUserKey = userKey; + String finalToken = token; if (map.containsKey("envelop")) { // 封库 HandlesOtherFunctionalThreadPool.execute(() -> UpdateSonState(id, state, true, finalUserKey, finalToken)); } else { // 禁用仓库 - HandlesOtherFunctionalThreadPool.execute(() -> UpdateSonState(id, state, false, finalUserKey,finalToken)); + HandlesOtherFunctionalThreadPool.execute(() -> UpdateSonState(id, state, false, finalUserKey, finalToken)); } } return CrudUtil.insertHandle(depositoryService.updateDepository(map), 1); @@ -307,15 +308,15 @@ public class DepositoryController { * * @param parentId */ - public void UpdateSonState(String parentId, Integer state, boolean envelop, String userKey,String token) { + public void UpdateSonState(String parentId, Integer state, boolean envelop, String userKey, String token) { Map param = new HashMap<>(); param.put("parentId", parentId); // 获取当前仓库所有子仓库 - List depositoryRecordPByCondition = depositoryService.findDepositoryByCondition(param, userKey,token); + List depositoryRecordPByCondition = depositoryService.findDepositoryByCondition(param, userKey, token); for (Depository depository : depositoryRecordPByCondition) { int depositoryId = depository.getId(); - UpdateSonState(String.valueOf(depositoryId), state, envelop, userKey,token); + UpdateSonState(String.valueOf(depositoryId), state, envelop, userKey, token); Map map = new HashMap<>(); map.put("id", depositoryId); map.put("state", state); @@ -383,7 +384,12 @@ public class DepositoryController { show_weekday.add("周日"); // 获取各仓库名称以及id - Map depositoryAllNameAndId = depositoryService.findDepositoryAllNameAndId(userByPort); + Map depositoryAllNameAndId = new HashMap<>(); + if (PublicConfig.roleAdminorgList.contains(userByPort.getMaindeparment())) { + depositoryAllNameAndId = depositoryService.findAllDepositoryNameAndId(); + } else { + depositoryAllNameAndId = depositoryService.findDepositoryAllNameAndId(userByPort); + } Iterator it = depositoryAllNameAndId.keySet().iterator(); @@ -426,8 +432,7 @@ public class DepositoryController { show_data.putAll((Map) result); } depository_data.put("data", show_data); - } - else { + } else { // 定义线程 int threadSize = depositoryAllNameAndId.size(); ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize)); @@ -487,8 +492,12 @@ public class DepositoryController { show_weekday.add("周日"); // 获取各仓库名称以及id - Map depositoryAllNameAndId = depositoryService.findDepositoryAllNameAndId(userByPort); - + Map depositoryAllNameAndId = new HashMap<>(); + if (PublicConfig.roleAdminorgList.contains(userByPort.getMaindeparment())) { + depositoryAllNameAndId = depositoryService.findAllDepositoryNameAndId(); + } else { + depositoryAllNameAndId = depositoryService.findDepositoryAllNameAndId(userByPort); + } Map depository_data = new HashMap<>(); depository_data.put("week", show_weekday); if ("0".equals(type)) { @@ -529,7 +538,12 @@ public class DepositoryController { show_weekday.add("周日"); // 获取各仓库名称以及id - Map depositoryAllNameAndId = depositoryService.findDepositoryAllNameAndId(userByPort); + Map depositoryAllNameAndId = new HashMap<>(); + if (PublicConfig.roleAdminorgList.contains(userByPort.getMaindeparment())) { + depositoryAllNameAndId = depositoryService.findAllDepositoryNameAndId(); + } else { + depositoryAllNameAndId = depositoryService.findDepositoryAllNameAndId(userByPort); + } int threadSize = 10; ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize)); @@ -841,12 +855,11 @@ public class DepositoryController { Material materialById = materialService.findMaterialById(Integer.parseInt(mid)); Map param = new HashMap<>(); param.put("depositoryId", materialById.getDepositoryId()); - List depositoryId = depositoryService.findDepositoryByCondition(param, userKey,token); + List depositoryId = depositoryService.findDepositoryByCondition(param, userKey, token); return new RestResponse(depositoryId.get(0), 1, 200); } - /** * 查找仓库内是否有物品 * @@ -1212,7 +1225,12 @@ public class DepositoryController { * @return */ Map getBarChartData(UserByPort userByPort) { - Map depositoryAllNameAndId = depositoryService.findDepositoryAllNameAndId(userByPort); + Map depositoryAllNameAndId = new HashMap<>(); + if (PublicConfig.roleAdminorgList.contains(userByPort.getMaindeparment())) { + depositoryAllNameAndId = depositoryService.findAllDepositoryNameAndId(); + } else { + depositoryAllNameAndId = depositoryService.findDepositoryAllNameAndId(userByPort); + } int threadSize = 2; ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize)); @@ -1499,11 +1517,11 @@ public class DepositoryController { for (i = days.size() - 1; i > 0; i--) { // 遍历 Map并计算各仓库的入库数 // 获取一段时间内的库存额度 - Double depositoryRecordByDate1 = depositoryRecordService.findApplicationRecordByDate(days.get(i), days.get(i-1), Integer.parseInt(type), val); + Double depositoryRecordByDate1 = depositoryRecordService.findApplicationRecordByDate(days.get(i), days.get(i - 1), Integer.parseInt(type), val); drCountbyDrName.add(depositoryRecordByDate1); } Collections.reverse(drCountbyDrName); - map.put("data",drCountbyDrName); + map.put("data", drCountbyDrName); result.put(val, map); return result; } 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 cddf3b9a..5abd51b8 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/DepositoryService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/DepositoryService.java @@ -120,11 +120,17 @@ public interface DepositoryService { /** - * 查询所有仓库名称即对应编号 + * 查询当前用户所拥有的所有仓库名称即对应编号 * @return */ Map findDepositoryAllNameAndId(UserByPort user); + /** + * 查询所有仓库名称即对应编号 + * @return + */ + Map findAllDepositoryNameAndId(); + /** * 根据名称或编码获取当前仓库库存容量 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 c82b3f44..ff9bbd6b 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 @@ -3,6 +3,7 @@ package com.dreamchaser.depository_manage.service.impl; import cn.hutool.core.lang.Snowflake; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.dreamchaser.depository_manage.config.PublicConfig; import com.dreamchaser.depository_manage.entity.*; import com.dreamchaser.depository_manage.mapper.*; import com.dreamchaser.depository_manage.pojo.InventoryByDname; @@ -47,7 +48,7 @@ public class DepositoryServiceImpl implements DepositoryService { * @return 影响条数 */ @Override - public Integer insertDepository(Map map, String userKey,String token) { + public Integer insertDepository(Map map, String userKey, String token) { // 获取当前仓库拼音首字母 String dname = (String) map.get("dname"); String dnamePinYin = WordUtil.getPinYinHeadChar(dname); @@ -61,12 +62,12 @@ public class DepositoryServiceImpl implements DepositoryService { List condition = depositoryMapper.findDepositoryByCondition(temp); // 公司编号 Integer cid = ObjectFormatUtil.toInteger(map.get("cid")); - String companyName = LinkInterfaceUtil.getCompany(cid, userKey,token).getName(); + String companyName = LinkInterfaceUtil.getCompany(cid, userKey, token).getName(); String adminorgName = ""; // 部门编号 if (!"".equals(map.get("adminorg"))) { Integer adminorg = ObjectFormatUtil.toInteger(map.get("adminorg")); - adminorgName = LinkInterfaceUtil.getCompany(adminorg, userKey,token).getName(); + adminorgName = LinkInterfaceUtil.getCompany(adminorg, userKey, token).getName(); } // 公司简称 companyName = WordUtil.getPinYinHeadChar(companyName); @@ -98,7 +99,7 @@ public class DepositoryServiceImpl implements DepositoryService { // 部门编号 if (!"".equals(map.get("adminorg"))) { Integer adminorg = ObjectFormatUtil.toInteger(map.get("adminorg")); - adminorgName = LinkInterfaceUtil.getCompany(adminorg, userKey,token).getName(); + adminorgName = LinkInterfaceUtil.getCompany(adminorg, userKey, token).getName(); adminorgName = WordUtil.getPinYinHeadChar(adminorgName).substring(0, 2); } // 获取父仓库编码 @@ -132,7 +133,7 @@ public class DepositoryServiceImpl implements DepositoryService { * @return 影响条数 */ @Override - public List findDepositoryByCondition(Map map, String userKey,String token) { + public List findDepositoryByCondition(Map map, String userKey, String token) { Integer size = 10, page = 1; if (map.containsKey("size")) { size = ObjectFormatUtil.toInteger(map.get("size")); @@ -150,7 +151,7 @@ public class DepositoryServiceImpl implements DepositoryService { List list = depositoryMapper.findDepositoryByCondition(map); for (Depository depository : list) { if (!depository.getAdminorg().isEmpty()) { - Administration company = LinkInterfaceUtil.getCompany(ObjectFormatUtil.toInteger(depository.getAdminorg()), userKey,token); + Administration company = LinkInterfaceUtil.getCompany(ObjectFormatUtil.toInteger(depository.getAdminorg()), userKey, token); depository.setAdminorgName(company.getName()); } } @@ -280,6 +281,7 @@ public class DepositoryServiceImpl implements DepositoryService { /** * 查询顶级仓库 + * * @return */ @Override @@ -303,7 +305,6 @@ public class DepositoryServiceImpl implements DepositoryService { } - /** * 获取本部门以及个人管理仓库的名称和id * @@ -316,46 +317,77 @@ public class DepositoryServiceImpl implements DepositoryService { Integer adminorg = user.getMaindeparment(); // 获取当前用户所在部门管理的仓库 List depositoryByAdminorg = depositoryMapper.findDepositoryByAdminorg(adminorg.toString()); + + List depositoryParentIdList = new ArrayList<>(); + List depositoryList = new ArrayList<>(); // 仓库id列表 // 添加到id列表 for (Depository depository : depositoryByAdminorg) { int parentId = depository.getParentId(); - Integer id = depository.getId(); if (parentId != 0) { - List depositoryByParent = depositoryMapper.findDepositoryByParent(id); - if (depositoryByParent.size() == 0) { - map.put(depository.getDname() + "," + depository.getCode(), id); - } else { - if (depository.getAdminorg().equals(adminorg.toString())) { - for (Depository d : depositoryByParent) { - map.put(d.getDname() + "," + d.getCode(), d.getId()); - } - } - } + depositoryList.add(depository); + depositoryParentIdList.add(parentId); + } + } + + + for (Depository depository : depositoryList + ) { + Integer id = depository.getId(); + if (!depositoryParentIdList.contains(id)) { + map.put(depository.getDname() + "," + depository.getCode(), id); } } // 获取当前用户管理的仓库 List depositoryAndRole = roleMapper.findDepositoryAndRole(user.getId()); + List roleAndDepositoryList = new ArrayList<>(); + depositoryParentIdList = new ArrayList<>(); for (RoleAndDepository roleAndDepository : depositoryAndRole) { int parentId = roleAndDepository.getParentId(); - Integer id = roleAndDepository.getDepositoryId(); if (parentId != 0) { - List depositoryByParent = depositoryMapper.findDepositoryByParent(id); - if (depositoryByParent.size() == 0) { - map.put(roleAndDepository.getDepositoryName() + "," + roleAndDepository.getDepositoryCode(), id); - } else { - if (roleAndDepository.getDepositoryAdminorg().equals(adminorg.toString())) { - for (Depository d : depositoryByParent) { - map.put(d.getDname() + "," + d.getCode(), d.getId()); - } - } - } + roleAndDepositoryList.add(roleAndDepository); + depositoryParentIdList.add(parentId); + } + } + for (RoleAndDepository roleAndDepository : roleAndDepositoryList) { + Integer id = roleAndDepository.getDepositoryId(); + if (!depositoryParentIdList.contains(id)) { + map.put(roleAndDepository.getDepositoryName() + "," + roleAndDepository.getDepositoryCode(), id); } } + return map; + } + + /** + * 查询所有仓库名称即对应编号 + * + * @return + */ + @Override + public Map findAllDepositoryNameAndId() { + List depositoryAll = depositoryMapper.findDepositoryAll(); + Map map = new HashMap<>(); + List depositoryParentIdList = new ArrayList<>(); + List depositoryList = new ArrayList<>(); + for (Depository depository : depositoryAll + ) { + int parentId = depository.getParentId(); + if (parentId != 0) { + depositoryList.add(depository); + depositoryParentIdList.add(parentId); + } + } + for (Depository depository : depositoryList + ) { + int id = depository.getId(); + if (!depositoryParentIdList.contains(id)) { + map.put(depository.getDname() + "," + depository.getCode(), id); + } + } return map; } @@ -818,7 +850,6 @@ public class DepositoryServiceImpl implements DepositoryService { } - // 根据id获取子类 public List findChildForMaterialTypeByParent(Long mtId) { List result = new ArrayList<>(); @@ -836,7 +867,6 @@ public class DepositoryServiceImpl implements DepositoryService { } - private boolean hasDepository(List list, Depository o) { boolean flag = false; for (Depository depository : list) { diff --git a/src/test/java/com/dreamchaser/depository_manage/OtherTest.java b/src/test/java/com/dreamchaser/depository_manage/OtherTest.java index ffdf5c94..1de50b52 100644 --- a/src/test/java/com/dreamchaser/depository_manage/OtherTest.java +++ b/src/test/java/com/dreamchaser/depository_manage/OtherTest.java @@ -47,6 +47,9 @@ public class OtherTest { @Autowired DepositoryMapper depositoryMapper; + @Autowired + DepositoryService depositoryService; + @Autowired QyWxOperationService qyWxOperationService; @@ -94,6 +97,12 @@ public class OtherTest { } + @Test + public void someTest(){ + Map allDepositoryNameAndId = depositoryService.findAllDepositoryNameAndId(); + System.out.println(JSONObject.toJSONString(allDepositoryNameAndId)); + } + @Test public void main() { ExecutorService exs = new ThreadPoolExecutor(10, 100, 60, TimeUnit.SECONDS, new LinkedBlockingQueue<>(10),new ThreadPoolExecutor.DiscardPolicy());