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 ae2a1058..8753335d 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java @@ -52,16 +52,16 @@ public class DepositoryRecordController { map.put("applicantId", userToken.getId()); List applicationInRecordPlist = depositoryRecordService.findApplicationInRecordPByCondition(map, request); Integer InCount = depositoryRecordService.findApplicationInRecordPCountByCondition(map); - for (int i = 0; i < applicationInRecordPlist.size(); i++) { - if (applicationInRecordPlist.get(i).getPrice() != null) { - applicationInRecordPlist.get(i).setPrice(applicationInRecordPlist.get(i).getPrice() / 100); + for (ApplicationInRecordP applicationInRecordP : applicationInRecordPlist) { + if (applicationInRecordP.getPrice() != null) { + applicationInRecordP.setPrice(applicationInRecordP.getPrice() / 100); } } List applicationOutRecordPlist = depositoryRecordService.findApplicationOutRecordPByCondition(map, request); Integer OutCount = depositoryRecordService.findApplicationOutRecordPCountByCondition(map); - for (int i = 0; i < applicationOutRecordPlist.size(); i++) { - if (applicationOutRecordPlist.get(i).getPrice() != null) { - applicationOutRecordPlist.get(i).setPrice(applicationOutRecordPlist.get(i).getPrice() / 100); + for (ApplicationOutRecordP recordP : applicationOutRecordPlist) { + if (recordP.getPrice() != null) { + recordP.setPrice(recordP.getPrice() / 100); } } Map result = new HashMap<>(); @@ -461,8 +461,8 @@ public class DepositoryRecordController { @GetMapping("/applicationInView") public RestResponse findApplicationInRecordByCondition(@RequestParam Map map, HttpServletRequest request) { List list = depositoryRecordService.findApplicationInRecordPByCondition(map, request); - for (int i = 0; i < list.size(); i++) { - list.get(i).setPrice(list.get(i).getPrice() / 100); + for (ApplicationInRecordP applicationInRecordP : list) { + applicationInRecordP.setPrice(applicationInRecordP.getPrice() / 100); } return new RestResponse(list, depositoryRecordService.findApplicationInRecordPCountByCondition(map), 200); } 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 7f6a471d..6596aa48 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/GroupController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/GroupController.java @@ -58,7 +58,27 @@ public class GroupController { return CrudUtil.postHandle(len, integer); } + @PostMapping("/findGroupByCodeForIn") + public RestResponse findGroupByCodeForIn (@RequestBody Map map, HttpServletRequest request) { + String code = map.get("code").toString(); + + // 获取组合编码 + Group groupByCode = groupService.findGroupByCode(code); + if (groupByCode != null) { + List groupByGid = groupService.findGroupInfoByGid(groupByCode.getId()); + return new RestResponse(groupByGid); + }else{ + return new RestResponse(null, 666, new StatusInfo("失败", "暂无该组合,请确认是否正确")); + } + } + + /** + * 用于出库时查找对应编码的组合 + * @param map 查询条件 + * @param request + * @return + */ @PostMapping("/findGroupByCode") public RestResponse findGroupByCode(@RequestBody Map map, HttpServletRequest request) { UserByPort userToken = (UserByPort) request.getAttribute("userToken"); @@ -449,6 +469,44 @@ public class GroupController { } + /** + * 用于构造组合入库单 + * @param map 入库数据 + * @param request + * @return + */ + @PostMapping("/applicationInForGroup") + public RestResponse applicationInForGroup(@RequestBody Map map, HttpServletRequest request) { + UserByPort userToken = (UserByPort) request.getAttribute("userToken"); + String header = request.getHeader("user-agent"); + String crypt = Md5.crypt(header); + // 获取当前提交数 + List params = (List) map.get("params"); + // 执行结果 + Integer integer = 0; + // 实际结果 + Integer result = 0; + Integer gid = ObjectFormatUtil.toInteger(map.get("gid")); + List groupInfoByGid = groupService.findGroupInfoByGid(gid); + if (groupInfoByGid != null) { + result += groupInfoByGid.size(); + } + for (String param : params) { + gid = ObjectFormatUtil.toInteger(map.get("gid" + param)); + groupInfoByGid = groupService.findGroupInfoByGid(gid); + if (groupInfoByGid != null) { + result += groupInfoByGid.size(); + } + } + try { + integer += groupService.insertApplicationInRecord(map, userToken); // 插入主订单 + } catch (Exception e) { + return new RestResponse("", 666, new StatusInfo("出库失败", e.getMessage())); + } + return CrudUtil.putHandle(result,integer); + } + + /** * 用于构造组合出库单 * @param map 出库数据 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 65f978f5..e932cc25 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java @@ -768,39 +768,43 @@ public class MaterialController { String mcode = materialService.findMaterialCodeByQrCode(qrCode); // 根据物料编码获取物料 Material material = materialService.findMaterialByCode(mcode); - Map param = new HashMap<>(); - List placePList = new ArrayList<>(); - param.put("mcode", mcode); - InventoryP ip = null; - // 获取物料与条形码的对应关系 - List materialByBarCodeByCondition = materialService.findMaterialByBarCodeByCondition(param); - for (int j = 0; j < depositoryByAdminorg.size(); j++) { - Depository depository = depositoryByAdminorg.get(j); - param.put("mcode", material.getCode()); - param.put("depositoryId", depository.getId()); - // 获取当前仓库下是否有当前物料的库存 - List inventory = materialService.findInventory(param); - if (inventory.size() > 0) { - ip = inventory.get(0); - List place = placeService.findPlaceByMidAndDid(ip.getMid(), depository.getId()); - placePList.addAll(place); + if(material != null) { + Map param = new HashMap<>(); + List placePList = new ArrayList<>(); + param.put("mcode", mcode); + InventoryP ip = null; + // 获取物料与条形码的对应关系 + List materialByBarCodeByCondition = materialService.findMaterialByBarCodeByCondition(param); + for (int j = 0; j < depositoryByAdminorg.size(); j++) { + Depository depository = depositoryByAdminorg.get(j); + param.put("mcode", material.getCode()); + param.put("depositoryId", depository.getId()); + // 获取当前仓库下是否有当前物料的库存 + List inventory = materialService.findInventory(param); + if (inventory.size() > 0) { + ip = inventory.get(0); + List place = placeService.findPlaceByMidAndDid(ip.getMid(), depository.getId()); + placePList.addAll(place); + } } - } - if (ip != null) { - // 设置当前物料在相关仓库下的所有库位 - ip.setPlacePList(placePList); - // 设置物料与条形码的对应关系 - ip.setMaterialAndBarCodeList(materialByBarCodeByCondition); - List splitInfoByMid = splitUnitService.findSplitInfoByMid(ip.getMid()); - ip.setSplitInfoList(splitInfoByMid); - return new RestResponse(ip); - } else { - MaterialP mp = new MaterialP(material); - // 设置物料与条形码的对应关系 - mp.setMaterialAndBarCodeList(materialByBarCodeByCondition); - List splitInfoByMid = splitUnitService.findSplitInfoByMid(mp.getMid()); - mp.setSplitInfoList(splitInfoByMid); - return new RestResponse(mp); + if (ip != null) { + // 设置当前物料在相关仓库下的所有库位 + ip.setPlacePList(placePList); + // 设置物料与条形码的对应关系 + ip.setMaterialAndBarCodeList(materialByBarCodeByCondition); + List splitInfoByMid = splitUnitService.findSplitInfoByMid(ip.getMid()); + ip.setSplitInfoList(splitInfoByMid); + return new RestResponse(ip); + } else { + MaterialP mp = new MaterialP(material); + // 设置物料与条形码的对应关系 + mp.setMaterialAndBarCodeList(materialByBarCodeByCondition); + List splitInfoByMid = splitUnitService.findSplitInfoByMid(mp.getMid()); + mp.setSplitInfoList(splitInfoByMid); + return new RestResponse(mp); + } + }else{ + return new RestResponse(null); } 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 129ce22e..406c9641 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java @@ -508,15 +508,15 @@ public class PageController { if ("-1".equals(unit)) { // 如果转移的基础单位 mv.addObject("quantity", placeAndMaterialByMidAndPid.getQuantity()); - }else{ + } else { // 获取当前的拆单记录 - Map paramForSplitInfo = new HashMap<>(); + Map paramForSplitInfo = new HashMap<>(); Inventory inventoryById = materialService.findInventoryById(mid); - paramForSplitInfo.put("mid",inventoryById.getMid()); - paramForSplitInfo.put("newUnit",unit); + paramForSplitInfo.put("mid", inventoryById.getMid()); + paramForSplitInfo.put("newUnit", unit); SplitInfo splitInfo = splitUnitService.findSplitInfoByMidAndUnit(paramForSplitInfo); SplitInventory splitInventory = splitUnitService.findSplitInventoryByIidAndSid(placeAndMaterialByMidAndPid.getId(), splitInfo.getId()); - mv.addObject("quantity",splitInventory.getSaveQuantity()); + mv.addObject("quantity", splitInventory.getSaveQuantity()); } mv.addObject("depositoryId", depositoryId); mv.addObject("mid", mid); @@ -528,13 +528,14 @@ public class PageController { // 专用于卡片仓库树形菜单页面 @GetMapping("/selectDepositoryByCard") - public ModelAndView selectDepositoryByCard(Integer type, String clickObj, HttpServletRequest request) { + public ModelAndView selectDepositoryByCard(Integer type, String clickObj, @RequestParam(value = "flagForGroup", required = false) boolean flagForGroup, HttpServletRequest request) { ModelAndView mv = new ModelAndView(); UserByPort userToken = (UserByPort) request.getAttribute("userToken"); if (type == 1) { Integer maindeparment = userToken.getMaindeparment(); mv.addObject("adminorg", maindeparment); mv.addObject("clickObj", clickObj); + mv.addObject("flagForGroup", flagForGroup); } mv.setViewName("pages/material/selectDepositoryByCard"); return mv; @@ -821,7 +822,7 @@ public class PageController { if (gid != null) { mv.addObject("gid", gid); Group groupOnlyById = groupService.findGroupOnlyById(gid); - mv.addObject("group",groupOnlyById); + mv.addObject("group", groupOnlyById); } else { mv.addObject("gid", -1); } @@ -867,7 +868,7 @@ public class PageController { if (groupInfoByMidAndGid != null) { mv.addObject("record", groupInfoByMidAndGid); List splitInfoByMid = splitUnitService.findSplitInfoByMid(groupInfoByMidAndGid.getMid()); - mv.addObject("splitList",splitInfoByMid); + mv.addObject("splitList", splitInfoByMid); } else { throw new MyException("缺少必要参数!"); } @@ -1274,15 +1275,15 @@ public class PageController { sumUnit.append(inventoryById.getUnit()).append(","); } else { // 用于获取当前拆单记录 - Map paramForSplitInfo = new HashMap<>(); - paramForSplitInfo.put("newUnit",unit); - paramForSplitInfo.put("mid",inventoryById.getMid()); + Map paramForSplitInfo = new HashMap<>(); + paramForSplitInfo.put("newUnit", unit); + paramForSplitInfo.put("mid", inventoryById.getMid()); // 获取拆单记录 SplitInfo splitInfo = splitUnitService.findSplitInfoByMidAndUnit(paramForSplitInfo); // 获取当前拆单与基础单位的进制 int scale = splitUnitService.findSplitInfoScaleQuantity(splitInfo, -1); sumUnit.append(unit).append(","); - sumPrice+= (inventoryById.getPrice() / scale * applicationOutRecordMin.getQuantity()); + sumPrice += (inventoryById.getPrice() / scale * applicationOutRecordMin.getQuantity()); } } // 申请人 @@ -1327,17 +1328,31 @@ public class PageController { } @GetMapping("/form_step_look") - public ModelAndView form_step_look(Integer id, HttpServletRequest request) { + public ModelAndView form_step_look(Integer id, Integer flagForGroup, HttpServletRequest request) { UserByPort userToken = (UserByPort) request.getAttribute("userToken"); ModelAndView mv = new ModelAndView(); mv.setViewName("pages/application/form-step-look"); if (id != null) { ApplicationInRecordP applicationInRecordPById = depositoryRecordService.findApplicationInRecordPById(id); - UserByPort userByPort = LinkInterfaceUtil.FindUserById(applicationInRecordPById.getApplicantId(), userToken); - applicationInRecordPById.setApplicantName(userByPort.getName()); - applicationInRecordPById.setApplicantTime(DateUtil.TimeStampToDateTime(Long.valueOf(applicationInRecordPById.getApplicantTime()))); - applicationInRecordPById.setPrice(applicationInRecordPById.getPrice() / 100); - mv.addObject("record", applicationInRecordPById); + if (Integer.compare(flagForGroup, 2) != 0) { + // 如果不是组合 + UserByPort userByPort = LinkInterfaceUtil.FindUserById(applicationInRecordPById.getApplicantId(), userToken); + applicationInRecordPById.setApplicantName(userByPort.getName()); + applicationInRecordPById.setApplicantTime(DateUtil.TimeStampToDateTime(Long.valueOf(applicationInRecordPById.getApplicantTime()))); + applicationInRecordPById.setPrice(applicationInRecordPById.getPrice() / 100); + mv.addObject("record", applicationInRecordPById); + } else { + // 如果是组合 + + // 获取组合数据 + Group group = groupService.findGroupOnlyById(applicationInRecordPById.getMid()); + // 获取组合详情数据 + List groupInfoList = groupService.findGroupInfoByGid(applicationInRecordPById.getMid()); + mv.addObject("group",group); + mv.addObject("groupInfoList",groupInfoList); + mv.addObject("record", applicationInRecordPById); + mv.setViewName("pages/application/form-step-look_group"); + } } else { throw new MyException("缺少必要参数!"); } @@ -1369,17 +1384,17 @@ public class PageController { recordMinP.setMcode(inventoryById.getCode()); recordMinP.setPlaceCode(placeById.getCode()); String unit = recordMinP.getUnit(); - if("-1".equals(unit)){ + if ("-1".equals(unit)) { recordMinP.setUnit(inventoryById.getUnit()); double price = (inventoryById.getPrice()) * recordMinP.getQuantity(); BigDecimal bg = new BigDecimal(price); price = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); recordMinP.setPrice(price); - }else{ + } else { // 用于获取拆单记录 - Map paramForSplitInfo = new HashMap<>(); - paramForSplitInfo.put("newUnit",unit); - paramForSplitInfo.put("mid",inventoryById.getMid()); + Map paramForSplitInfo = new HashMap<>(); + paramForSplitInfo.put("newUnit", unit); + paramForSplitInfo.put("mid", inventoryById.getMid()); // 获取拆单记录 SplitInfo splitInfo = splitUnitService.findSplitInfoByMidAndUnit(paramForSplitInfo); // 获取当前拆单与基础单位的进制 @@ -1462,16 +1477,16 @@ public class PageController { sumQuantity += applicationOutRecordMin.getQuantity(); // 获取当前计量单位 String unit = recordMinP.getUnit(); - if("-1".equals(unit)){ + if ("-1".equals(unit)) { // 如果是基础单位 sumPrice += (inventoryById.getPrice() * applicationOutRecordMin.getQuantity()); - }else{ + } else { // 如果是拆单 // 用于获取拆单记录 - Map paramForSplitInfo = new HashMap<>(); - paramForSplitInfo.put("newUnit",unit); - paramForSplitInfo.put("mid",inventoryById.getMid()); + Map paramForSplitInfo = new HashMap<>(); + paramForSplitInfo.put("newUnit", unit); + paramForSplitInfo.put("mid", inventoryById.getMid()); // 查询拆单记录 SplitInfo splitInfo = splitUnitService.findSplitInfoByMidAndUnit(paramForSplitInfo); // 获取当前拆单记录与基础单位的进制 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 48d4825d..706075d9 100644 --- a/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml @@ -48,6 +48,8 @@ + + @@ -137,7 +139,7 @@ - airid,mname,quantity,price,tname,applicant_time,aircode,dname,applicant_id,applyRemark,mcode,mversion,munit,mtexture,mkingdeecode,mdepositoryCode,airUnit + airid,mname,quantity,price,tname,applicant_time,aircode,dname,applicant_id,applyRemark,mcode,mversion,munit,mtexture,mkingdeecode,mdepositoryCode,airUnit,flagForGroup,mid @@ -626,7 +628,7 @@ - insert into application_in_record (id,mid,quantity,price,applicant_id,applicant_time,depository_id,code,applyRemark,unit) + insert into application_in_record (id,mid,quantity,price,applicant_id,applicant_time,depository_id,code,applyRemark,unit,flagForGroup) values( #{id}, #{mid}, @@ -637,7 +639,8 @@ #{depositoryId}, #{code}, #{applyRemark}, - #{unit} + #{unit}, + #{flagForGroup} ) diff --git a/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml b/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml index 65003273..b149d0f5 100644 --- a/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml @@ -25,6 +25,7 @@ + diff --git a/src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationInRecordP.java b/src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationInRecordP.java index 9da3d5e3..bd71485e 100644 --- a/src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationInRecordP.java +++ b/src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationInRecordP.java @@ -85,10 +85,19 @@ public class ApplicationInRecordP { */ private String mdepositoryCode; - /** * 入库时选中的单位 */ private String airUnit; + /** + * 1物料2组合 + */ + private Integer flagForGroup; + + /** + * 入库物料 + */ + private Integer mid; + } diff --git a/src/main/java/com/dreamchaser/depository_manage/pojo/MaterialP.java b/src/main/java/com/dreamchaser/depository_manage/pojo/MaterialP.java index 9ee7774f..5070c5ae 100644 --- a/src/main/java/com/dreamchaser/depository_manage/pojo/MaterialP.java +++ b/src/main/java/com/dreamchaser/depository_manage/pojo/MaterialP.java @@ -210,6 +210,7 @@ public class MaterialP { this.brand = material.getBrand(); // 品牌 this.remark = material.getRemark(); // 备注 this.shelfLifeForCalc = material.getShelfLife(); //保质期,用于计算 + this.typeName = material.getTypeName(); // 物料类型 } public MaterialP() { diff --git a/src/main/java/com/dreamchaser/depository_manage/service/DepositoryRecordService.java b/src/main/java/com/dreamchaser/depository_manage/service/DepositoryRecordService.java index d0a85a8b..1cbd7051 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/DepositoryRecordService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/DepositoryRecordService.java @@ -325,6 +325,15 @@ public interface DepositoryRecordService { */ Integer applicationInPlace(Map map); + + /** + * 生成单号 + * + * @param depositoryName + * @return + */ + String createCode(String depositoryName, String key, String type, String mainDeparmentName) ; + /** * 将刚入库的记录删除 * @param map diff --git a/src/main/java/com/dreamchaser/depository_manage/service/GroupService.java b/src/main/java/com/dreamchaser/depository_manage/service/GroupService.java index 240a58d7..237cba7a 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/GroupService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/GroupService.java @@ -192,6 +192,13 @@ public interface GroupService { */ Integer insertApplicationOutRecord(Map map, UserByPort userToken); + /** + * 插入一条入库记录 + * @param map 具体数据 + * @return + */ + Integer insertApplicationInRecord(Map map, UserByPort userToken); + /** * 根据组合编号获取组合具体信息 diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java index d8562723..13a87ffc 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java @@ -67,6 +67,10 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { private SplitUnitService splitUnitService; + @Autowired + private GroupMapper groupMapper; + + /** * 提交申请,插入一条仓库调度记录 * @@ -180,6 +184,10 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 将入库数量修改为realQuantity map.put("quantity", map.get("realQuantity")); } + if (!map.containsKey("flagForGroup")) { + // 如果不包含标志位. + map.put("flagForGroup", 1); + } return depositoryRecordMapper.insertApplicationInRecord(map); } @@ -481,44 +489,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { return result; } - /** - * 用于计算当前主记录下的总额与数量 - */ - class CalcApplicationOutInfo implements Callable { - - ApplicationOutRecordP mainRecord; - - CalcApplicationOutInfo(ApplicationOutRecordP mainRecord) { - this.mainRecord = mainRecord; - } - - @Override - public Object call() throws Exception { - Map result = new HashMap<>(); - // 获取当前订单的子订单 - List minList = depositoryRecordMapper.findApplicationOutRecordMinByParent(mainRecord.getId()); - // 额度 - Double price = 0.0; - // 数量 - Integer count = 0; - for (int i = 0; i < minList.size(); i++) { - ApplicationOutRecordMin recordMin = minList.get(i); - count += recordMin.getQuantity(); - // 获取当前出库物料 - Inventory materialById = materialMapper.findInventoryById(recordMin.getMid()); - // 计算当前出库金额 - double price_out = materialById.getPrice() * recordMin.getQuantity(); - BigDecimal bg = new BigDecimal(price_out / 100); - price_out = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); - price += price_out; - } - result.put("count", count); - result.put("price", price); - return result; - } - } - - /** * 将物料入库到库位 * @@ -896,8 +866,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { restResponse.setData(""); restResponse.setStatusInfo(new StatusInfo("出库失败", "出库失败,库存不足")); } - } - else { + } else { // 如果是拆单后的出库 // 用于获取对应的拆单记录 @@ -1260,7 +1229,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { return restResponse; } - /** * 用于有父级拆单记录的出库处理 * @@ -1513,7 +1481,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { return restResponse; } - /** * 用于完成出库时的相关处理操作 * @@ -1810,8 +1777,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 将主订单插入到redis中 redisTemplate.opsForHash().put("record:" + recordP.getId(), "minRecord", minRecordByMain.toString()); map.put("state", "仓储中心负责人审核通过"); - } - else { + } else { // 如果是不通过 updateInventoryForOutRefused(recordP); map.put("depositoryManagerPass", 2); @@ -1928,23 +1894,23 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { return depositoryRecordMapper.insertApplicationOutRecordMin(map); } - /** * 用于修改拒绝了的出库订单中的库存记录 + * * @param recordP 拒绝的订单 */ - private void updateInventoryForOutRefused(ApplicationOutRecordP recordP){ + private void updateInventoryForOutRefused(ApplicationOutRecordP recordP) { // 获取该订单下的子订单 List recordMinByParent = depositoryRecordMapper.findApplicationOutRecordMinByParent(recordP.getId()); // 循环该记录 - for (ApplicationOutRecordMin recordMin: + for (ApplicationOutRecordMin recordMin : recordMinByParent) { // 获取出库时的计量单位 String unit = recordMin.getUnit(); // 获取库存记录 Integer mid = recordMin.getMid(); - if("-1".equals(unit)){ + if ("-1".equals(unit)) { // 如果出库时选中的为基础单位 // 获取库存记录 @@ -2012,8 +1978,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { }).start();*/ - } - else { + } else { // 如果没有通过 updateInventoryForOutRefused(record); result = "驳回"; @@ -2455,7 +2420,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { map.put("mid", material.getMid()); map.put("depositoryId", transferRecord.getToId()); map.put("placeId", transferRecord.getToPlaceId()); - map.put("unit",unit); + map.put("unit", unit); if ("-1".equals(unit)) { // 如果是基础单位 @@ -2500,8 +2465,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { placeMapper.updateMaterialAndPlace(toMaterialAndPlace); } } - } - else { + } else { // 如果是拆单单位 // 用于获取当前拆单记录 @@ -2757,7 +2721,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { } - /** * 用于处理超出进制的拆单库存处理记录 * @@ -2822,7 +2785,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { } - /** * 根据id修改仓库调度记录 * @@ -2909,6 +2871,14 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { applicationInRecordP.setApplicantName(userByPortById.getName()); applicationInRecordP.setApplicantTime(time); applicationInRecordP.setApplyRemark(applicationInRecordP.getApplyRemark() == null ? "" : applicationInRecordP.getApplyRemark()); + if (Integer.compare(applicationInRecordP.getFlagForGroup(), 2) == 0) { + // 如果入库的是组合 + Group group = groupMapper.findGroupOnlyById(applicationInRecordP.getMid()); + applicationInRecordP.setMname(group.getGname()); + applicationInRecordP.setAirUnit(""); + applicationInRecordP.setMcode(group.getCode()); + applicationInRecordP.setMversion("组合"); + } } return list; } @@ -3111,7 +3081,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { return sum; } - /** * 计算物料总额 * @@ -3251,7 +3220,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { } } - /** * 获取一段时间内的入库额度 * @@ -3330,7 +3298,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { return sumCount; } - @Override public Integer findMaterialCountByMonth2(Map map) { Integer type = ObjectFormatUtil.toInteger(map.get("type")); @@ -3353,7 +3320,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { return sumCount; } - /** * 查询仓库当天流水 * @@ -3397,7 +3363,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { return depositoryRecordMapper.deleteApplicationInRecordByIds(list); } - /** * 对查出来的记录进行包装,包装成前端需要的数据 * @@ -3414,7 +3379,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { return result; } - /** * 对查出来的记录进行包装,包装成前端需要的数据 * @@ -3494,7 +3458,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { * @param depositoryName * @return */ - private String createCode(String depositoryName, String key, String type, String mainDeparmentName) { + public String createCode(String depositoryName, String key, String type, String mainDeparmentName) { RLock lock = redissonClient.getLock(key); // 入库单号(公司简称+仓库简称+年月日+数字(位数设置>=9)) String code = "GK"; @@ -3552,7 +3516,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { return false; } - /** * 判断当前id是否在ids中 * @@ -3570,4 +3533,41 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { return false; } + /** + * 用于计算当前主记录下的总额与数量 + */ + class CalcApplicationOutInfo implements Callable { + + ApplicationOutRecordP mainRecord; + + CalcApplicationOutInfo(ApplicationOutRecordP mainRecord) { + this.mainRecord = mainRecord; + } + + @Override + public Object call() throws Exception { + Map result = new HashMap<>(); + // 获取当前订单的子订单 + List minList = depositoryRecordMapper.findApplicationOutRecordMinByParent(mainRecord.getId()); + // 额度 + Double price = 0.0; + // 数量 + Integer count = 0; + for (int i = 0; i < minList.size(); i++) { + ApplicationOutRecordMin recordMin = minList.get(i); + count += recordMin.getQuantity(); + // 获取当前出库物料 + Inventory materialById = materialMapper.findInventoryById(recordMin.getMid()); + // 计算当前出库金额 + double price_out = materialById.getPrice() * recordMin.getQuantity(); + BigDecimal bg = new BigDecimal(price_out / 100); + price_out = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); + price += price_out; + } + result.put("count", count); + result.put("price", price); + return result; + } + } + } 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 ee2e29f0..403cf552 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 @@ -5,6 +5,7 @@ import com.dreamchaser.depository_manage.exception.MyException; import com.dreamchaser.depository_manage.mapper.*; import com.dreamchaser.depository_manage.pojo.GroupInfoP; import com.dreamchaser.depository_manage.pojo.MaterialAndPlaceForView; +import com.dreamchaser.depository_manage.service.DepositoryRecordService; import com.dreamchaser.depository_manage.service.GroupService; import com.dreamchaser.depository_manage.service.SplitUnitService; import com.dreamchaser.depository_manage.utils.DateUtil; @@ -32,6 +33,10 @@ public class GroupServiceImpl implements GroupService { @Autowired DepositoryRecordMapper depositoryRecordMapper; + + @Autowired + DepositoryRecordService depositoryRecordService; + @Autowired DepositoryMapper depositoryMapper; @Autowired @@ -673,6 +678,134 @@ public class GroupServiceImpl implements GroupService { return result; } + /** + * 插入一条入库记录 + * @param map 具体数据 + * @return + */ + @Override + public Integer insertApplicationInRecord(Map map, UserByPort userToken) { + // 获取当前提交数 + List params = (List) map.get("params"); + + // 用于存储申请数 + Integer result = 0; + + // 定义参数用与入库 + Map insertForApplicationInRecord = new HashMap<>(); + + + insertForApplicationInRecord.put("applicantId", userToken.getId()); + // 循环参数列表 + for (String temp : params) { + + // 获取当前入库的组合数量 + Integer quantityForGroup = ObjectFormatUtil.toInteger(map.get("quantity" + temp)); + + // 获取要出库的组合 + Integer gid = ObjectFormatUtil.toInteger(map.get("gid"+temp)); + + // 获取要出库组合的具体信息 + List groupInfoByGid = groupMapper.findGroupInfoByGid(gid); + + // 获取入库的库位 + Integer placeId = ObjectFormatUtil.toInteger(map.get("placeId" + temp)); + // 获取入库的仓库 + Integer depositoryId = ObjectFormatUtil.toInteger(map.get("depositoryId" + temp)); + + insertForApplicationInRecord.put("depositoryId",depositoryId); + insertForApplicationInRecord.put("placeId",placeId); + insertForApplicationInRecord.put("price", String.valueOf(0)); + insertForApplicationInRecord.put("applyRemark", map.get("applyRemark" + temp)); + // 循环当前组合信息 + for (GroupInfo groupInfo : + groupInfoByGid) { + // 获取当前组合记录中的单位 + String unit = groupInfo.getUnit(); + insertForApplicationInRecord.put("mid",groupInfo.getMid()); + insertForApplicationInRecord.put("quantity",String.valueOf(groupInfo.getQuantity() * quantityForGroup)); + insertForApplicationInRecord.put("code",groupInfo.getMcode()); + if("-1".equals(unit)){ + // 如果是基础单位 + Material material = materialMapper.findMaterialById(groupInfo.getMid()); + insertForApplicationInRecord.put("unit",material.getUnit()); + result += depositoryRecordService.applicationInPlace(insertForApplicationInRecord); + depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(insertForApplicationInRecord.get("id"))); + }else{ + insertForApplicationInRecord.put("unit",unit); + insertForApplicationInRecord.put("type","in"); + result += splitUnitService.addSplitInventory(insertForApplicationInRecord); + depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(insertForApplicationInRecord.get("applicationInId"))); + insertForApplicationInRecord.remove("applicationInId"); + + } + + } + insertForApplicationInRecord.put("flagForGroup",2); + insertForApplicationInRecord.put("quantity",quantityForGroup.toString()); + insertForApplicationInRecord.put("mid",gid); + insertForApplicationInRecord.put("unit",-1); + Depository depository = depositoryMapper.findDepositoryById(depositoryId); + insertForApplicationInRecord.put("code",depositoryRecordService.createCode(depository.getDname(), "InOrderNumber", "in", "")); + insertForApplicationInRecord.put("applicant_time",System.currentTimeMillis()); + depositoryRecordMapper.insertApplicationInRecord(insertForApplicationInRecord); + insertForApplicationInRecord.remove("id"); + + } + + // 获取当前入库的组合数量 + Integer quantityForGroup = ObjectFormatUtil.toInteger(map.get("quantity")); + + // 获取要出库的组合 + Integer gid = ObjectFormatUtil.toInteger(map.get("gid")); + + // 获取要出库组合的具体信息 + List groupInfoByGid = groupMapper.findGroupInfoByGid(gid); + + // 获取入库的库位 + Integer placeId = ObjectFormatUtil.toInteger(map.get("placeId")); + // 获取入库的仓库 + Integer depositoryId = ObjectFormatUtil.toInteger(map.get("depositoryId")); + + insertForApplicationInRecord.put("depositoryId",depositoryId); + insertForApplicationInRecord.put("placeId",placeId); + + insertForApplicationInRecord.put("applyRemark", map.get("applyRemark")); + // 循环当前组合信息 + for (GroupInfo groupInfo : + groupInfoByGid) { + // 获取当前组合记录中的单位 + String unit = groupInfo.getUnit(); + insertForApplicationInRecord.put("mid",groupInfo.getMid()); + insertForApplicationInRecord.put("quantity",String.valueOf(groupInfo.getQuantity() * quantityForGroup)); + insertForApplicationInRecord.put("code",groupInfo.getMcode()); + if("-1".equals(unit)){ + // 如果是基础单位 + insertForApplicationInRecord.put("price", String.valueOf(0)); + Material material = materialMapper.findMaterialById(groupInfo.getMid()); + insertForApplicationInRecord.put("unit",material.getUnit()); + result += depositoryRecordService.applicationInPlace(insertForApplicationInRecord); + depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(insertForApplicationInRecord.get("id"))); + }else{ + insertForApplicationInRecord.put("price", String.valueOf(0)); + insertForApplicationInRecord.put("unit",unit); + insertForApplicationInRecord.put("type","in"); + result += splitUnitService.addSplitInventory(insertForApplicationInRecord); + depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(insertForApplicationInRecord.get("applicationInId"))); + insertForApplicationInRecord.remove("applicationInId"); + } + } + insertForApplicationInRecord.put("flagForGroup",2); + insertForApplicationInRecord.put("quantity",quantityForGroup.toString()); + insertForApplicationInRecord.put("mid",gid); + insertForApplicationInRecord.put("unit",-1); + Depository depository = depositoryMapper.findDepositoryById(depositoryId); + insertForApplicationInRecord.put("code",depositoryRecordService.createCode(depository.getDname(), "InOrderNumber", "in", "")); + insertForApplicationInRecord.put("applicant_time",System.currentTimeMillis()); + depositoryRecordMapper.insertApplicationInRecord(insertForApplicationInRecord); + return result; + } + /** * 用于插入子出库订单 * diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/SplitUnitServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/SplitUnitServiceImpl.java index f146ca06..8f0d3e0d 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/SplitUnitServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/SplitUnitServiceImpl.java @@ -201,6 +201,7 @@ public class SplitUnitServiceImpl implements SplitUnitService { price = price * findSplitInfoScaleQuantity(splitInfoForUnit, -1); map.put("price", Double.toString(price)); depositoryRecordService.applicationInPlace(map); + map.put("applicationInId",map.get("id")); map.remove("id"); } @@ -236,6 +237,7 @@ public class SplitUnitServiceImpl implements SplitUnitService { price = price * findSplitInfoScaleQuantity(splitInfoForUnit, -1); map.put("price", Double.toString(price)); result += depositoryRecordService.applicationInPlace(map); + map.put("applicationInId",map.get("id")); map.remove("id"); Map paramForInventoryToPlace = new HashMap<>(); paramForInventoryToPlace.put("mid", map.get("newInMid")); @@ -248,6 +250,7 @@ public class SplitUnitServiceImpl implements SplitUnitService { price = price * findSplitInfoScaleQuantity(splitInfoForUnit, -1); map.put("price", Double.toString(price)); result += depositoryRecordService.applicationInPlace(map); + map.put("applicationInId",map.get("id")); map.remove("id"); } } @@ -276,11 +279,13 @@ public class SplitUnitServiceImpl implements SplitUnitService { // 先插入一条库存记录用于后续操作 map.put("quantity", "0"); depositoryRecordService.applicationInPlace(map); + map.put("applicationInId",map.get("id")); map.remove("id"); } else { // 如果没有父级 depositoryRecordService.applicationInPlace(map); + map.put("applicationInId",map.get("id")); map.remove("id"); } Map paramForInventoryToPlace = new HashMap<>(); diff --git a/src/main/resources/templates/pages/application/application-in.html b/src/main/resources/templates/pages/application/application-in.html index f2cde85e..ec8e45e3 100644 --- a/src/main/resources/templates/pages/application/application-in.html +++ b/src/main/resources/templates/pages/application/application-in.html @@ -46,151 +46,286 @@
- -