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 be6fc9ff..38172f24 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java @@ -400,14 +400,14 @@ public class PageController { } @GetMapping("/split_edit") - public ModelAndView split_edit(Integer id){ - if(id == null){ + public ModelAndView split_edit(Integer id) { + if (id == null) { throw new MyException("缺少必要参数"); } ModelAndView mv = new ModelAndView(); // 获取所进行查询的拆单详细信息 SplitInfoP splitInfoPById = splitUnitService.findSplitInfoPById(id); - mv.addObject("record",splitInfoPById); + mv.addObject("record", splitInfoPById); mv.setViewName("pages/split/split_edit"); return mv; } @@ -481,7 +481,7 @@ public class PageController { @GetMapping("/selectPlaceByDepository") // 库位树形菜单 - public ModelAndView selectPlaceByDepository(Integer depositoryId, Integer mid, String placeCode) { + public ModelAndView selectPlaceByDepository(Integer depositoryId, Integer mid, String placeCode, String unit) { ModelAndView mv = new ModelAndView(); @@ -504,9 +504,22 @@ public class PageController { placeAndMaterialByMidAndPid = placeService.findPlaceAndMaterialByMidAndPid(place.getId(), mid); mv.addObject("placeId", place.getId()); } + if ("-1".equals(unit)) { + // 如果转移的基础单位 + mv.addObject("quantity", placeAndMaterialByMidAndPid.getQuantity()); + }else{ + // 获取当前的拆单记录 + Map paramForSplitInfo = new HashMap<>(); + Inventory inventoryById = materialService.findInventoryById(mid); + 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("depositoryId", depositoryId); - mv.addObject("quantity",placeAndMaterialByMidAndPid.getQuantity()); - mv.addObject("mid",mid); + mv.addObject("mid", mid); + mv.addObject("unit", unit); mv.setViewName("pages/material/selectPlaceByDepository"); return mv; } @@ -537,14 +550,14 @@ public class PageController { // 组合树形菜单页面 @GetMapping("/selectGroup") - public ModelAndView selectGroup(String gname,String clickObj){ + public ModelAndView selectGroup(String gname, String clickObj) { ModelAndView mv = new ModelAndView(); mv.setViewName("pages/group/selectGroup"); - if(gname == null){ + if (gname == null) { gname = ""; } - mv.addObject("gname",gname); - mv.addObject("clickObj",clickObj); + mv.addObject("gname", gname); + mv.addObject("clickObj", clickObj); return mv; } @@ -639,6 +652,7 @@ public class PageController { /** * 跳转到库存多选处理页面 + * * @return */ @GetMapping("/application_multi") @@ -651,6 +665,7 @@ public class PageController { /** * 跳转到组合多选处理页面 + * * @return */ @GetMapping("/application_group_multi") @@ -741,7 +756,7 @@ public class PageController { } @GetMapping("/split_add") - public ModelAndView split_add(){ + public ModelAndView split_add() { ModelAndView mv = new ModelAndView(); mv.setViewName("pages/split/split_add"); return mv; @@ -796,28 +811,30 @@ public class PageController { /** * 跳转到组合添加页面 + * * @return */ @GetMapping("/group_add") - public ModelAndView group_add(@RequestParam(required = false) Integer gid){ + public ModelAndView group_add(@RequestParam(required = false) Integer gid) { ModelAndView mv = new ModelAndView(); - if(gid != null){ - mv.addObject("gid",gid); - }else{ - mv.addObject("gid",-1); + if (gid != null) { + mv.addObject("gid", gid); + } else { + mv.addObject("gid", -1); } - mv.setViewName("pages/group/group-add"); + mv.setViewName("pages/group/group-add_back"); return mv; } /** * 跳转到组合查询页面 + * * @return */ @GetMapping("/group_out") public ModelAndView group_out(HttpServletRequest request) { ModelAndView mv = new ModelAndView(); - mv.setViewName( "pages/group/group-out"); + mv.setViewName("pages/group/group-out"); UserByPort userToken = (UserByPort) request.getAttribute("userToken"); Integer isadmin = userToken.getIsadmin(); if (isadmin == null) { @@ -834,19 +851,19 @@ public class PageController { /** * 跳转到组合中物料明细中 + * * @param mid 物料id * @param gid 组合id * @return */ @GetMapping("/materialForGroup") - public ModelAndView materialForGroup(Integer mid,Integer gid){ + public ModelAndView materialForGroup(Integer mid, Integer gid) { ModelAndView mv = new ModelAndView(); // 根据物料id与组合id查询对应明细 GroupInfo groupInfoByMidAndGid = groupService.findGroupInfoByMidAndGid(mid, gid); - if(groupInfoByMidAndGid != null){ - mv.addObject("record",groupInfoByMidAndGid); - } - else { + if (groupInfoByMidAndGid != null) { + mv.addObject("record", groupInfoByMidAndGid); + } else { throw new MyException("缺少必要参数!"); } mv.setViewName("pages/group/group_material_edit"); @@ -854,12 +871,12 @@ public class PageController { } @GetMapping("/group_edit") - public ModelAndView groupEdit(Integer id){ + public ModelAndView groupEdit(Integer id) { ModelAndView mv = new ModelAndView(); mv.setViewName("pages/group/group_edit"); Group group = groupService.findGroupOnlyById(id); - mv.addObject("id",id); - mv.addObject("record",group); + mv.addObject("id", id); + mv.addObject("record", group); return mv; } @@ -1099,7 +1116,7 @@ public class PageController { param.put("parentId", parentId); mv.addObject("parentId", parentId); List depositoryRecordPByCondition = depositoryService.findDepositoryByCondition(param, userByPort); - param.put("state",2); + param.put("state", 2); List depositoryRecordPByConditionForState = depositoryService.findDepositoryByCondition(param, userByPort); Integer role = userByPort.getIsadmin(); if (role == null) { @@ -1248,10 +1265,10 @@ public class PageController { sumQuantity += applicationOutRecordMin.getQuantity(); sumPrice += (materialById.getPrice()); String unit = applicationOutRecordMin.getUnit(); - if("-1".equals(unit)){ - sumUnit.append(materialById.getUnit()+","); - }else{ - sumUnit.append(unit+","); + if ("-1".equals(unit)) { + sumUnit.append(materialById.getUnit() + ","); + } else { + sumUnit.append(unit + ","); } } // 申请人 @@ -1470,14 +1487,14 @@ public class PageController { @GetMapping("/applicationOutForGroup") - public ModelAndView applicationOutForGroup(Integer gid,String type){ + public ModelAndView applicationOutForGroup(Integer gid, String type) { ModelAndView mv = new ModelAndView(); List gidList = new ArrayList<>(); - if("one".equals(type)) { + if ("one".equals(type)) { gidList.add(gid); - }else if("more".equals(type)){ + } else if ("more".equals(type)) { } - mv.addObject("gidList",gidList); + mv.addObject("gidList", gidList); mv.setViewName("pages/group/applicationOutForGroup"); return mv; } 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 f9d2fdbe..4101e5db 100644 --- a/src/main/java/com/dreamchaser/depository_manage/entity/GroupInfo.java +++ b/src/main/java/com/dreamchaser/depository_manage/entity/GroupInfo.java @@ -50,6 +50,10 @@ public class GroupInfo { /** * 物料计量单位 */ + private String munit; + /** + * 组合中的物料单位 + */ private String unit; /** * 物料材质 @@ -70,7 +74,11 @@ public class GroupInfo { /** * 物料备注 */ - private String remark; + private String mremark; + /** + * 套餐备注 + */ + private String gremark; /** * 组合创建时间 */ diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/MaterialForGroup.java b/src/main/java/com/dreamchaser/depository_manage/entity/MaterialForGroup.java index 1a5d7eb5..988fd5a8 100644 --- a/src/main/java/com/dreamchaser/depository_manage/entity/MaterialForGroup.java +++ b/src/main/java/com/dreamchaser/depository_manage/entity/MaterialForGroup.java @@ -20,4 +20,9 @@ public class MaterialForGroup { * 数量 */ private Integer quantity; + + /* + 计量单位 + */ + private String unit; } diff --git a/src/main/java/com/dreamchaser/depository_manage/mapper/GroupMapper.xml b/src/main/java/com/dreamchaser/depository_manage/mapper/GroupMapper.xml index 4f77f691..8b586e6a 100644 --- a/src/main/java/com/dreamchaser/depository_manage/mapper/GroupMapper.xml +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/GroupMapper.xml @@ -15,11 +15,13 @@ + - + + @@ -40,11 +42,13 @@ + + - id,mid,gid,quantity,mtid,shelfLife,gcode,mname,tname,mcode,version,unit,texture,productionPlace,brand,remark,createTime,gstate,gname + id,mid,gid,quantity,mtid,shelfLife,gcode,mname,tname,mcode,version,munit,texture,productionPlace,brand,mremark,createTime,gstate,gname,unit,gremark @@ -54,7 +58,7 @@ - id,mid,gid,quantity + id,mid,gid,quantity,unit @@ -148,12 +152,13 @@ INSERT INTO groupformaterial ( - id, mid, gid, quantity + id, mid, gid, quantity,unit ) VALUES ( #{id}, #{mid}, #{gid}, - #{quantity} + #{quantity}, + #{unit} ) @@ -310,7 +315,10 @@ mid = #{mid}, - quantity = #{quantity} + quantity = #{quantity}, + + + unit = #{unit} where id = #{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 07a1829b..ccf34a06 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 @@ -198,6 +198,8 @@ public class GroupServiceImpl implements GroupService { String code = createCode(groupCount); insertForGroup.put("code", code); insertForGroup.put("state", 1); + insertForGroup.put("remark",map.get("applyRemark")); + insertForGroup.put("gname",map.get("gname")); // 插入到数据库 groupMapper.addGroup(insertForGroup); 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 c81514b7..dfd12b19 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 @@ -8,9 +8,7 @@ import com.dreamchaser.depository_manage.mapper.*; import com.dreamchaser.depository_manage.pojo.InventoryP; import com.dreamchaser.depository_manage.pojo.MaterialP; import com.dreamchaser.depository_manage.pojo.PlaceP; -import com.dreamchaser.depository_manage.service.MaterialService; -import com.dreamchaser.depository_manage.service.PlaceService; -import com.dreamchaser.depository_manage.service.RoleService; +import com.dreamchaser.depository_manage.service.*; import com.dreamchaser.depository_manage.utils.DateUtil; import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; import lombok.Data; @@ -49,6 +47,15 @@ public class MaterialServiceImpl implements MaterialService { @Autowired SplitUnitMapper splitUnitMapper; + @Autowired + SplitUnitService splitUnitService; + + @Autowired + DepositoryRecordService depositoryRecordService; + + @Autowired + DepositoryRecordMapper depositoryRecordMapper; + /** * 用于深度拷贝列表 * @@ -714,7 +721,7 @@ public class MaterialServiceImpl implements MaterialService { m.setProducedDate(DateUtil.TimeStampToDateTimeForDay(producedDate)); } // 设置当前物料保质期的具体时间 - Long calcShelfLife = Long.valueOf(0); + Long calcShelfLife = 0L; String currentDate = DateUtil.getCurrentDate(); // 获取当天时间 @@ -1268,7 +1275,7 @@ public class MaterialServiceImpl implements MaterialService { } /** - * 用于修改库位中的物料 + * 用于修改物料所处的库位 * * @param map 修改条件 * @return @@ -1283,63 +1290,247 @@ public class MaterialServiceImpl implements MaterialService { Integer fromPlaceId = ObjectFormatUtil.toInteger(map.get("fromPlaceId")); Place fromPlace = placeService.findPlaceById(fromPlaceId); // 获取当前转移之前的库位与库存的对应关系 - MaterialAndPlace pidAndmidForBefore = placeService.findPlaceAndMaterialByMidAndPid(fromPlaceId, id); + MaterialAndPlace pidAndMidForBefore = placeService.findPlaceAndMaterialByMidAndPid(fromPlaceId, id); // 获取要转移的数量 Integer quantity = ObjectFormatUtil.toInteger(map.get("quantity")); // 获取转移到的库位 Integer toPlaceId = ObjectFormatUtil.toInteger(map.get("toPlaceId")); Place toPlace = placeService.findPlaceById(toPlaceId); // 获取当前转移后的库位与库存的对应关系 - MaterialAndPlace pidAndmidForAfter = placeService.findPlaceAndMaterialByMidAndPid(toPlaceId, id); + MaterialAndPlace pidAndMidForAfter = placeService.findPlaceAndMaterialByMidAndPid(toPlaceId, id); - // 获取转移之前的库存转移的数量 - int beforeQuantity = pidAndmidForBefore.getQuantity() - quantity; + // 获取当前转移的计量单位 + String unit = (String) map.get("unit"); - // 判断转移到的库位是否超出库存 - if (toPlace.getQuantity() + quantity > toPlace.getMax()) { - // 如果超出最大存储量 - return -1; - } else { - // 如果没有超出最大存储量 + // 获取转移之前的库存转移的数量 + int beforeQuantity = pidAndMidForBefore.getQuantity() - quantity; - // 判断转移到的库位是否存在该物料 - if (pidAndmidForAfter != null) { - // 如果该库位有物料 + if ("-1".equals(unit)) { + // 如果是基础单位 - // 修改转入物料数量 - pidAndmidForAfter.setQuantity(pidAndmidForAfter.getQuantity() + quantity); - placeService.updateMaterialAndPlace(pidAndmidForAfter); + // 判断转移到的库位是否超出库存 + if (toPlace.getQuantity() + quantity > toPlace.getMax()) { + // 如果超出最大存储量 + return -1; } else { - // 如果没有 + // 如果没有超出最大存储量 + + + // 判断转移到的库位是否存在该物料 + if (pidAndMidForAfter != null) { + // 如果该库位有物料 + + // 修改转入物料数量 + pidAndMidForAfter.setQuantity(pidAndMidForAfter.getQuantity() + quantity); + placeService.updateMaterialAndPlace(pidAndMidForAfter); + } else { + // 如果没有 + + // 新增对应关系 + Map insertAfter = new HashMap<>(); + insertAfter.put("mid", id); + insertAfter.put("quantity", quantity); + insertAfter.put("pid", toPlaceId); + // 添加对应关系 + placeService.addMaterialOnPlace(insertAfter); + } + + if (beforeQuantity > 0) { + // 如果转移后还存在 + // 修改当前物料所在库位的数量 + pidAndMidForBefore.setQuantity(beforeQuantity); + placeService.updateMaterialAndPlace(pidAndMidForBefore); + } else { + // 如果转移后不存在 + + // 删除该记录 + placeService.deleteMaterialAndPlace(pidAndMidForBefore.getId()); + } + + // 修改转移之前库位的数量 + fromPlace.setQuantity(fromPlace.getQuantity() - quantity); + // 修改转移之后库位的数量 + toPlace.setQuantity(toPlace.getQuantity() + quantity); + placeService.UpdatePlace(fromPlace); + placeService.UpdatePlace(toPlace); - // 新增对应关系 - Map insertAfter = new HashMap<>(); - insertAfter.put("mid", id); - insertAfter.put("quantity", quantity); - insertAfter.put("pid", toPlaceId); - // 添加对应关系 - placeService.addMaterialOnPlace(insertAfter); } + } else { + // 如果是拆单单位 + + // 用于查询当前拆单记录 + Map paramForSplitInfo = new HashMap<>(); + paramForSplitInfo.put("newUnit", unit); + paramForSplitInfo.put("mid", inventoryByMid.getMid()); + // 查询当前拆单记录 + SplitInfo splitInfo = splitUnitMapper.findSplitInfoByMidAndUnit(paramForSplitInfo); + + // 用于查询当前拆单对应的库存记录 + Map paramForSplitInventory = new HashMap<>(); + paramForSplitInventory.put("sid", splitInfo.getId()); + // 获取转移之前的拆单库存记录 + paramForSplitInventory.put("iid", pidAndMidForBefore.getId()); + // 转移之前的拆单库存记录 + SplitInventory splitInventoryForBefore = splitUnitMapper.findSplitInventoryByIidAndSid(paramForSplitInventory); + // 设置转移前库存的数量 + splitInventoryForBefore.setSaveQuantity(splitInventoryForBefore.getSaveQuantity() - quantity); + // 设置转移前的出库数量 + splitInventoryForBefore.setOutQuantity(splitInventoryForBefore.getOutQuantity() + quantity); + // 修改转移前的记录 + splitUnitMapper.updateSplitInventory(splitInventoryForBefore); + + + // 定义进制时算法需要的参数 + Map paramForNewMap = new HashMap<>(); + paramForNewMap.put("mid",inventoryByMid.getMid()); + paramForNewMap.put("price",String.valueOf(inventoryByMid.getPrice() / 100)); + paramForNewMap.put("unit",unit); + paramForNewMap.put("depositoryId",map.get("depositoryId")); + paramForNewMap.put("placeId",toPlace.getId()); + if (pidAndMidForAfter != null) { + // 如果转移后的当前库位存在该物料 + + // 获取转移之后的拆单库存记录 + paramForSplitInventory.put("iid", pidAndMidForAfter.getId()); + // 转移之后的拆单库存记录 + SplitInventory splitInventoryForAfter = splitUnitMapper.findSplitInventoryByIidAndSid(paramForSplitInventory); + if(splitInventoryForAfter != null ){ + // 如果转移后的拆单库存记录不为空 + + // 获取当前转移后的总数 + int realQuantity = splitInventoryForAfter.getSaveQuantity() + quantity; + + if(realQuantity >= splitInfo.getQuantity()) { + // 如果当前转移后的总数大于进制数 + + // 获取当前进行进位的数 + int dispose = (int)Math.floor(realQuantity / (double)splitInfo.getQuantity()); + // 获取进位后当前入库的数量 + realQuantity = realQuantity - dispose * splitInfo.getQuantity(); + // 设置当前库存数量 + splitInventoryForAfter.setSaveQuantity(realQuantity); + // 设置当前入库数量 + splitInventoryForAfter.setInQuantity(splitInventoryForAfter.getInQuantity() + quantity); + // 修改库存记录 + splitUnitMapper.updateSplitInventory(splitInventoryForAfter); + + if(splitInfo.getParentId() != null){ + // 获取当前父级 + SplitInfo parentSplitInfo = splitUnitMapper.findSplitInfoById(splitInfo.getParentId()); + splitUnitService.updateSplitInfoSaveQuantity(parentSplitInfo,dispose,pidAndMidForAfter.getId(),paramForNewMap,quantity,splitInfo); + } + else{ + paramForNewMap.put("price", Double.toString(inventoryByMid.getPrice() / 100)); + paramForNewMap.put("realQuantity",String.valueOf(dispose)); + paramForNewMap.put("quantity",String.valueOf(dispose)); + depositoryRecordService.applicationInPlace(paramForNewMap); + depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(paramForNewMap.get("id"))); + } + // 调用新算法 - if (beforeQuantity > 0) { - // 如果转移后还存在 - // 修改当前物料所在库位的数量 - pidAndmidForBefore.setQuantity(beforeQuantity); - placeService.updateMaterialAndPlace(pidAndmidForBefore); - } else { - // 如果转移后不存在 + }else{ + + // 如果不大于进制数 - // 删除该记录 - placeService.deleteMaterialAndPlace(pidAndmidForBefore.getId()); + // 设置转移后的库存数量 + splitInventoryForAfter.setSaveQuantity(realQuantity); + // 设置转移后的入库数量 + splitInventoryForAfter.setInQuantity(splitInventoryForAfter.getSaveQuantity() + quantity); + // 修改库存数量 + splitUnitMapper.updateSplitInventory(splitInventoryForAfter); + } + } + else{ + // 如果不存在转移后的拆单库存记录 + + // 定义用于添加拆单库存记录 + Map insertForSplitInventory = new HashMap<>(); + insertForSplitInventory.put("sid",splitInfo.getId()); + insertForSplitInventory.put("outQuantity",0); + insertForSplitInventory.put("iid",pidAndMidForAfter.getId()); + if(quantity >= splitInfo.getQuantity()){ + // 如果转移的数量大于进制数 + + // 获取进制数 + int dispose = (int) Math.floor(quantity / (double)splitInfo.getQuantity()); + // 获取当前进行入库的数量 + int realQuantity = quantity - dispose * splitInfo.getQuantity(); + // 如果不大于 + insertForSplitInventory.put("saveQuantity",realQuantity); + insertForSplitInventory.put("inQuantity",realQuantity); + splitUnitMapper.addSplitInventory(insertForSplitInventory); + + if(splitInfo.getParentId() != null){ + // 获取当前父级 + SplitInfo parentSplitInfo = splitUnitMapper.findSplitInfoById(splitInfo.getParentId()); + splitUnitService.updateSplitInfoSaveQuantity(parentSplitInfo,dispose,pidAndMidForAfter.getId(),paramForNewMap,quantity,splitInfo); + }else{ + paramForNewMap.put("price", Double.toString(inventoryByMid.getPrice() / 100)); + paramForNewMap.put("realQuantity",String.valueOf(dispose)); + paramForNewMap.put("quantity",String.valueOf(dispose)); + depositoryRecordService.applicationInPlace(paramForNewMap); + depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(paramForNewMap.get("id"))); + } + }else{ + // 如果不大于 + insertForSplitInventory.put("saveQuantity",quantity); + insertForSplitInventory.put("inQuantity",quantity); + splitUnitMapper.addSplitInventory(insertForSplitInventory); + } + } } + else{ + // 如果转移后的当前库位不存在该物料 + + + // 新增物料与库位的对应关系 + Map insertForAfter = new HashMap<>(); + insertForAfter.put("mid", id); + insertForAfter.put("quantity", 0); + insertForAfter.put("pid", toPlaceId); + // 添加对应关系 + placeService.addMaterialOnPlace(insertForAfter); + + Map insertForSplitInventory = new HashMap<>(); + insertForSplitInventory.put("sid",splitInfo.getId()); + insertForSplitInventory.put("iid",insertForAfter.get("id")); + insertForSplitInventory.put("outQuantity",0); + if(quantity >= splitInfo.getQuantity()){ + // 如果当前转移的数量大于进制数 + + // 获取进位数量 + int dispose = (int)Math.floor(quantity / (double)splitInfo.getQuantity()); + // 获取当前入库数量 + int realQuantity = quantity - dispose * splitInfo.getQuantity(); + + insertForSplitInventory.put("saveQuantity",realQuantity); + insertForSplitInventory.put("inQuantity",realQuantity); + splitUnitMapper.addSplitInventory(insertForSplitInventory); + + if(splitInfo.getParentId() != null){ + // 获取当前父级 + SplitInfo parentSplitInfo = splitUnitMapper.findSplitInfoById(splitInfo.getParentId()); + splitUnitService.updateSplitInfoSaveQuantity(parentSplitInfo,dispose,ObjectFormatUtil.toInteger(insertForSplitInventory.get("id")),paramForNewMap,quantity,splitInfo); + }else{ + paramForNewMap.put("price", Double.toString(inventoryByMid.getPrice() / 100)); + paramForNewMap.put("realQuantity",String.valueOf(dispose)); + paramForNewMap.put("quantity",String.valueOf(dispose)); + depositoryRecordService.applicationInPlace(paramForNewMap); + depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(paramForNewMap.get("id"))); + } + + }else{ + // 如果不大于进制数 + insertForSplitInventory.put("saveQuantity",quantity); + insertForSplitInventory.put("inQuantity",quantity); + splitUnitMapper.addSplitInventory(insertForSplitInventory); + } - // 修改转移之前库位的数量 - fromPlace.setQuantity(fromPlace.getQuantity() - quantity); - // 修改转移之后库位的数量 - toPlace.setQuantity(toPlace.getQuantity() + quantity); - placeService.UpdatePlace(fromPlace); - placeService.UpdatePlace(toPlace); + + + + } } return 1; @@ -2144,7 +2335,7 @@ public class MaterialServiceImpl implements MaterialService { * * @return */ - public List InitTreeForSelectName(String mname, String type,Map map) { + public List InitTreeForSelectName(String mname, String type, Map map) { // 获取所有物料类型 List materialTypeAll = materialTypeMapper.findMaterialTypeAll(); // 物料总数 @@ -2169,7 +2360,7 @@ public class MaterialServiceImpl implements MaterialService { List materialTypeList = new ArrayList<>(); // 用于标志是否为库存盘点 boolean flagForStock = false; - if("3".equals(type)){ + if ("3".equals(type)) { // 如果是库存盘点 flagForStock = true; } @@ -2179,7 +2370,7 @@ public class MaterialServiceImpl implements MaterialService { if (((i + 1) % 100) == 0) { // 如果有100个开启线程进行处理 materialTypeList.add(materialType.getOldId()); TaskTestForSelectMname taskTestForSelectMname = new TaskTestForSelectMname(materialTypeList, mname, type); - if(flagForStock){ + if (flagForStock) { taskTestForSelectMname.setMap(map); } Future future = completionService.submit(taskTestForSelectMname); @@ -2194,7 +2385,7 @@ public class MaterialServiceImpl implements MaterialService { if (materialTypeList.size() > 0) { // 如果有剩余,开启线程进行处理 TaskTestForSelectMname taskTestForSelectMname = new TaskTestForSelectMname(materialTypeList, mname, type); - if(flagForStock){ + if (flagForStock) { taskTestForSelectMname.setMap(map); } Future future = completionService.submit(taskTestForSelectMname); @@ -2476,11 +2667,7 @@ public class MaterialServiceImpl implements MaterialService { // 1入库2出库3盘点 String type; // 相关使用的数据 - Map map; - - public void setMap(Map map) { - this.map = map; - } + Map map; public TaskTestForSelectMname(List materialTypeByCondition, String mname, String type) { this.materialTypeIdList = materialTypeByCondition; @@ -2488,6 +2675,10 @@ public class MaterialServiceImpl implements MaterialService { this.type = type; } + public void setMap(Map map) { + this.map = map; + } + @Override public Object call() throws Exception { @@ -2505,16 +2696,16 @@ public class MaterialServiceImpl implements MaterialService { } else if ("2".equals(type)) { // 如果是出库 inventoryByTypeIdsAndMname = materialMapper.findInventoryByTypeIdsAndMname(paramForMnameAndMtid); - }else if("3".equals(type)){ + } else if ("3".equals(type)) { // 如果是盘点 List inventoryList = materialMapper.findInventoryByTypeIdsAndMname(paramForMnameAndMtid); Integer placeId = ObjectFormatUtil.toInteger(map.get("placeId")); // 查询当前存在于当前库位的物料 - for (Inventory inventory: + for (Inventory inventory : inventoryList) { MaterialAndPlace placeAndMaterialByMidAndPid = placeService.findPlaceAndMaterialByMidAndPid(placeId, inventory.getId()); - if(placeAndMaterialByMidAndPid != null){ + if (placeAndMaterialByMidAndPid != null) { inventoryByTypeIdsAndMname.add(inventory); } diff --git a/src/main/resources/templates/pages/depository/table-stock.html b/src/main/resources/templates/pages/depository/table-stock.html index 05c81f0d..bc093321 100644 --- a/src/main/resources/templates/pages/depository/table-stock.html +++ b/src/main/resources/templates/pages/depository/table-stock.html @@ -76,6 +76,7 @@ id="btn_{{d.id}}" value="{{d.unit}}">{{d.unit}} + @@ -185,7 +186,7 @@ // 用于计量单位的添加 for (let k = 0; k < placeCode.length; k++) { if (placeCode[k] !== "") { - $(aItem).append('') + $(aItem).append('') } } @@ -387,6 +388,14 @@ var depositoryId = obj.value; var placeCode = obj.innerText; var mid = obj.id; + + // 当前点击行中的计量单位按钮 + let unitBtn = obj.parentNode.parentNode.parentNode.childNodes[5].childNodes[0].childNodes[1]; + let unit = unitBtn.innerText; + let click_num = Number(unitBtn.getAttribute("click_num")); + if(click_num === 0){ + unit = "-1"; + } var index = layer.open({ title: '选择库位', type: 2, @@ -394,7 +403,7 @@ maxmin: true, shadeClose: true, area: ['70%', '70%'], - content: '/selectPlaceByDepository?depositoryId=' + depositoryId + '&mid=' + mid + '&placeCode=' + placeCode, + content: '/selectPlaceByDepository?depositoryId=' + depositoryId + '&mid=' + mid + '&placeCode=' + placeCode+'&unit='+unit, success: function (layero, index) { var children = layero.children(); var content = $(children[1]); diff --git a/src/main/resources/templates/pages/group/group-add_back.html b/src/main/resources/templates/pages/group/group-add_back.html new file mode 100644 index 00000000..a8e2dc6c --- /dev/null +++ b/src/main/resources/templates/pages/group/group-add_back.html @@ -0,0 +1,744 @@ + + + + + layui + + + + + + + + + + +
+
+ +
+
+
+
+ +
+
+ +
+
+
+ +
+ +
+
+ +
+
+ 组合明细 +
+
+ +
+ +
+
+ + +
+ +
+
+
+ +
+
+ + +
+
+
+
+ +
+
+ + +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/pages/material/selectPlaceByDepository.html b/src/main/resources/templates/pages/material/selectPlaceByDepository.html index ffd2717e..84800595 100644 --- a/src/main/resources/templates/pages/material/selectPlaceByDepository.html +++ b/src/main/resources/templates/pages/material/selectPlaceByDepository.html @@ -14,6 +14,7 @@ +
+ @@ -150,7 +151,7 @@ {field: 'quantity', width: 200, title: '数量'}, {field: 'depositoryName', width: 200, title: '仓库名称'}, {field: 'depositoryCode', width: 200, title: '仓库编码'}, - {title: '所处库位', width: 200, templet: '#selectManager', align: "center"}, + {title: '所处库位', width: 200, templet: '#changePlace', align: "center"}, {field: 'warningCount', width: 200, title: '待过期数量', sort: true}, {field: 'price', title: '单价', width: 200, sort: true}, {field: 'amounts', title: '总金额', width: 200, sort: true}, @@ -185,7 +186,7 @@ // 用于计量单位的添加 for (let k = 0; k < placeCode.length; k++) { if (placeCode[k] !== "") { - $(aItem).append('') + $(aItem).append('') } } @@ -387,6 +388,14 @@ var depositoryId = obj.value; var placeCode = obj.innerText; var mid = obj.id; + + // 当前点击行中的计量单位按钮 + let unitBtn = obj.parentNode.parentNode.parentNode.childNodes[5].childNodes[0].childNodes[1]; + let unit = unitBtn.innerText; + let click_num = Number(unitBtn.getAttribute("click_num")); + if(click_num === 0){ + unit = "-1"; + } var index = layer.open({ title: '选择库位', type: 2, @@ -394,7 +403,7 @@ maxmin: true, shadeClose: true, area: ['70%', '70%'], - content: '/selectPlaceByDepository?depositoryId=' + depositoryId + '&mid=' + mid + '&placeCode=' + placeCode, + content: '/selectPlaceByDepository?depositoryId=' + depositoryId + '&mid=' + mid + '&placeCode=' + placeCode+'&unit='+unit, success: function (layero, index) { var children = layero.children(); var content = $(children[1]); diff --git a/target/classes/templates/pages/material/selectPlaceByDepository.html b/target/classes/templates/pages/material/selectPlaceByDepository.html index 02ab75bd..84800595 100644 --- a/target/classes/templates/pages/material/selectPlaceByDepository.html +++ b/target/classes/templates/pages/material/selectPlaceByDepository.html @@ -14,16 +14,24 @@ +