From 4efea1c347b603ecbbd5cc7441aa54ec3f163374 Mon Sep 17 00:00:00 2001 From: erdanergou Date: Fri, 16 Dec 2022 15:32:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=90=84=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E7=9A=84=E7=A6=81=E7=94=A8=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DepositoryController.java | 104 ++++++++++++------ .../DepositoryRecordController.java | 2 + .../controller/MaterialController.java | 6 + .../mapper/DepositoryRecordMapper.java | 13 +++ .../mapper/DepositoryRecordMapper.xml | 20 ++++ .../mapper/MaterialMapper.xml | 3 + .../service/DepositoryRecordService.java | 15 +++ .../impl/DepositoryRecordServiceImpl.java | 20 ++++ .../service/impl/DepositoryServiceImpl.java | 5 + .../service/impl/MaterialServiceImpl.java | 5 + .../service/impl/MaterialTypeServiceImpl.java | 5 + .../pages/application/application-in.html | 12 +- .../material/selectPlaceByDepository.html | 1 - .../TestFoFindDepositoryMaterial.java | 10 +- .../mapper/MaterialMapper.xml | 3 + 15 files changed, 177 insertions(+), 47 deletions(-) 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 e54dcc6a..a03bf6eb 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java @@ -38,6 +38,9 @@ public class DepositoryController { @Autowired RoleService roleService; + @Autowired + StockTakingService stockTakingService; + /** * 获取本月之前的月份 * @@ -1415,8 +1418,7 @@ public class DepositoryController { */ @GetMapping("/findMaterialByDepository") public RestResponse FindMaterialByDepository(@RequestParam("depositoryId") String depositoryId, HttpServletRequest request) { - UserByPort userToken = (UserByPort) request.getAttribute("userToken"); - Boolean allSonDepository = findAllSonDepository(depositoryId, userToken); + Boolean allSonDepository = findAllSonDepositoryOfRelevancy(depositoryId, request); return new RestResponse(allSonDepository); } @@ -1475,25 +1477,25 @@ public class DepositoryController { /** * 根据父级编号查询所有关联信息 * - * @param parentid + * @param did * @return */ - public Boolean findAllSonDepositoryOfRelevancy(String parentid, HttpServletRequest request) { - UserByPort userToken = (UserByPort) request.getAttribute("userToken"); - Map param = new HashMap<>(); - param.put("parentId", parentid); - param.put("state", 1); - boolean materialByDepository = findMaterialByDepository(parentid); - Boolean depositoryRecord = findDepositoryRecord(parentid, request); + public Boolean findAllSonDepositoryOfRelevancy(String did, HttpServletRequest request) { + // 判断当前仓库是否存在物料 + boolean materialByDepository = findMaterialByDepository(did); + // 判断当前仓库是否有相关订单 + boolean depositoryRecord = findDepositoryRecord(did, request); if (materialByDepository || depositoryRecord) { return true; } - List depositoryRecordPByCondition = depositoryService.findDepositoryByCondition(param, userToken); - for (int i = 0; i < depositoryRecordPByCondition.size(); i++) { - String depositoryId = depositoryRecordPByCondition.get(i).getId().toString(); - if (!findMaterialByDepository(depositoryId) && !findDepositoryRecord(depositoryId, request)) { - findAllSonDepositoryOfRelevancy(depositoryRecordPByCondition.get(i).getId().toString(), request); - } else { + // 查询当前仓库 + Depository depositoryById = depositoryService.findDepositoryById(ObjectFormatUtil.toInteger(did)); + // 查询当前仓库及子仓库 + List childForDepositoryByParent = findChildForDepositoryByParent(depositoryById); + List depositories = depositoryService.selectDepositoryRecordByIds(childForDepositoryByParent); + for (Depository depository : depositories) { + String depositoryId = depository.getId().toString(); + if (findMaterialByDepository(depositoryId) || findDepositoryRecord(depositoryId, request)) { return true; } } @@ -1503,39 +1505,33 @@ public class DepositoryController { /** * 根据仓库编号判断该仓库是否有物品 * - * @param parentId + * @param depositoryId 待查询仓库id * @return */ - public boolean findMaterialByDepository(String parentId) { + public boolean findMaterialByDepository(String depositoryId) { Map param = new HashMap<>(); param.put("state", 1); - param.put("depositoryId", parentId); + param.put("depositoryId", depositoryId); List materialPByCondition = materialService.findInventory(param); - if (materialPByCondition.size() > 0) { - return true; - } - return false; + return materialPByCondition.size() > 0; } /** * 根据仓库编号查询与其有关的订单信息 - * - * @param depositoryId + * @param depositoryId 待查询仓库id * @return */ public Boolean findDepositoryRecord(String depositoryId, HttpServletRequest request) { Map param = new HashMap<>(); param.put("depositoryId", depositoryId); - List recordPByCondition = depositoryRecordService.findDepositoryRecordPByCondition(param, request); - if (recordPByCondition.size() > 0) { - return true; - } - return false; + List inRecordPList = depositoryRecordService.findApplicationInRecordByDepository(depositoryId); + List outRecordPList = depositoryRecordService.findApplicationOutRecordByDepository(depositoryId); + List stockTakingList = stockTakingService.findStockTakingByCondition(param); + return inRecordPList.size() > 0 || outRecordPList.size() > 0 || stockTakingList.size() > 0; } /** * 查询当前仓库子仓库 - * * @param parentId * @return */ @@ -1548,6 +1544,12 @@ public class DepositoryController { return new RestResponse(depositoryRecordPByCondition, depositoryService.findCountByCondition(param), 200); } + /** + * 查询当前仓库的管理员 + * @param did 待查询仓库 + * @param request + * @return + */ @GetMapping("/findManagerByDid") public RestResponse FindManagerByDid(@RequestParam("did") Integer did, HttpServletRequest request) { UserByPort userToken = (UserByPort) request.getAttribute("userToken"); @@ -1626,4 +1628,44 @@ public class DepositoryController { return new RestResponse("err: " + e.getMessage(), 678, new StatusInfo("失败", "请联系开发人员")); } } + + + /** + * 用于获取当前仓库的所有子类 + * @param d 待查询仓库 + * @return + */ + public List findChildForDepositoryByParent(Depository d) { + // 用于存储最终返回结果 + List result = new ArrayList<>(); + result.add(d.getId()); + // 父级 + List parentId = new ArrayList<>(); + parentId.add(d.getId()); + // 查询所有仓库正常使用的仓库 + List depositoryAll = depositoryService.findDepositoryAll(); + for (Depository depository : depositoryAll) { + if (isTrueForParent(parentId, depository.getParentId())) { + parentId.add(depository.getId()); + result.add(depository.getId()); + } + } + return result; + } + + /** + * 判断当前id是否在ids中 + * + * @param parentList 父级列表 + * @param id 待判断id + * @return + */ + public Boolean isTrueForParent(List parentList, Integer id) { + for (Integer aLong : parentList) { + if (Long.compare(aLong, id) == 0) { + return true; + } + } + return false; + } } 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 49026e87..b99d9619 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java @@ -9,6 +9,7 @@ import com.dreamchaser.depository_manage.service.impl.QyWxOperationService; import com.dreamchaser.depository_manage.utils.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; @@ -174,6 +175,7 @@ public class DepositoryRecordController { // 入库申请 @PostMapping("/applicationIn") + @Transactional(rollbackFor = Exception.class) public RestResponse insertApplicationInRecord(@RequestBody Map map, HttpServletRequest request){ UserByPort userToken= (UserByPort) request.getAttribute("userToken"); List params = (List) map.get("params"); 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 94be5985..a5da41bf 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java @@ -59,6 +59,12 @@ public class MaterialController { } + /** + * 用于查询当前组合中物料的数量 + * @param map 待查询数据 + * @param request + * @return + */ @GetMapping("/findInventoryForGroup") public RestResponse findInventoryForGroup(@RequestParam Map map, HttpServletRequest request) { UserByPort userToken = (UserByPort) request.getAttribute("userToken"); diff --git a/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.java b/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.java index 96818e58..51b86ba3 100644 --- a/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.java +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.java @@ -216,6 +216,19 @@ public interface DepositoryRecordMapper { */ List findApplicationInRecordPByCondition(Map map); + /** + * 查询当前仓库的入库记录 + * @param depositoryId 待查询仓库id + * @return + */ + List findApplicationInRecordByDepository(String depositoryId); + + /** + * 查询当前仓库的出库记录 + * @param depositoryId 待查询仓库id + * @return + */ + List findApplicationOutRecordByDepository(String depositoryId); /** diff --git a/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml b/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml index 7cc9e25a..4299cb7e 100644 --- a/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml @@ -288,6 +288,19 @@ LIMIT #{begin},#{size} + + + + + + +