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 bee0b0ea..c5d8ab43 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java @@ -598,33 +598,35 @@ public class MaterialController { break; } } - }else{ + } else { // 如果是拆单单位 + + for (InventoryP inventoryP : inventoryPList) { - // 获取对应拆单库存处理记录 - SplitInventory splitInventory = splitUnitService.findSplitInventoryByIid(inventoryP.getId()); - if(splitInventory != null) { - // 如果存在 - - // 获取对应拆单记录 - SplitInfo splitInfoById = splitUnitService.findSplitInfoById(splitInventory.getSid()); - // 获取当前所有拆单单位 - int saveQuantity = splitInventory.getSaveQuantity() + inventoryP.getQuantity() * splitInfoById.getQuantity(); - if (quantity <= saveQuantity) { // 如果当前数量合适则跳出循环 - flag = true; - break; - } - }else{ - // 如果不存在 - Map paramForSplitInfo = new HashMap<>(); - paramForSplitInfo.put("mid",inventoryP.getMid()); - paramForSplitInfo.put("newUnit",unit); - SplitInfo splitInfo = splitUnitService.findSplitInfoByMidAndUnit(paramForSplitInfo); - int saveQuantity = inventoryP.getQuantity() * splitInfo.getQuantity(); - if(quantity <= saveQuantity){ - flag = true; - break; - } + + Map paramForSplitInfo = new HashMap<>(); + paramForSplitInfo.put("mid", inventoryP.getMid()); + paramForSplitInfo.put("newUnit", unit); + // 获取当前拆单记录 + SplitInfo splitInfo = splitUnitService.findSplitInfoByMidAndUnit(paramForSplitInfo); + + // 获取最高级对应当前单位的数量 + int saveQuantity = inventoryP.getQuantity() * splitUnitService.findSplitInfoQuantity(splitInfo); + + SplitInventory splitInventory = splitUnitService.findSplitInventoryByIidAndSid(inventoryP.getId(), splitInfo.getId()); + saveQuantity += splitInventory.getSaveQuantity(); + + SplitInfo parentSplitInfo = splitUnitService.findSplitInfoById(splitInfo.getParentId());; + while (parentSplitInfo != null){ + splitInventory = splitUnitService.findSplitInventoryByIidAndSid(inventoryP.getId(), parentSplitInfo.getId()); + splitInfo = splitUnitService.findSplitInfoByParentId(parentSplitInfo.getId()); + saveQuantity += splitInventory.getSaveQuantity() * splitInfo.getQuantity(); + parentSplitInfo = splitUnitService.findSplitInfoById(parentSplitInfo.getParentId()); + } + + if (quantity <= saveQuantity) { // 如果当前数量合适则跳出循环 + flag = true; + break; } } } diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/SplitController.java b/src/main/java/com/dreamchaser/depository_manage/controller/SplitController.java index fd749e91..940ad5c7 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/SplitController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/SplitController.java @@ -123,7 +123,7 @@ public class SplitController { List inventoryByMid = materialService.findInventoryByMid(splitInfoByMidAndUnit.getMid()); if(inventoryByMid.size() > 0){ Inventory inventory = inventoryByMid.get(0); - return new RestResponse(inventory.getPrice() / splitInfoByMidAndUnit.getQuantity()); + return new RestResponse(inventory.getPrice() / splitUnitService.findSplitInfoQuantity(splitInfoByMidAndUnit)); } }else{ Integer mid = ObjectFormatUtil.toInteger(map.get("mid")); diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/UserController.java b/src/main/java/com/dreamchaser/depository_manage/controller/UserController.java index e1fb3752..22fca4a6 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/UserController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/UserController.java @@ -156,17 +156,17 @@ public class UserController { JSONObject data = (JSONObject) jsonObject.get("data"); String userkey = (String) data.get("key"); if(userkey != null) { - String usertoken = (String) data.get("token"); + String userToken = (String) data.get("token"); - String keyAndToken = userkey + "&" +usertoken; + String keyAndToken = userkey + "&" +userToken; UserByPort userinfo = JSONObject.toJavaObject((JSONObject) data.get("userinfo"), UserByPort.class); // 将key与token暂存至池中保存 UserKeyAndTokenPool.addKeyAndToken(userinfo.getNumber(),keyAndToken); - AuthenticationTokenPool.addToken(usertoken,userinfo); + AuthenticationTokenPool.addToken(userToken,userinfo); HttpSession session = request.getSession(); - session.setAttribute("token"+userinfo.getId(),usertoken); + session.setAttribute("token"+userinfo.getId(),userToken); session.setAttribute("userToken",userinfo); session.setMaxInactiveInterval(1800); if(!flag){ @@ -179,7 +179,7 @@ public class UserController { } // 设置放入时间 userinfo.setInstant(Instant.now()); - return new RestResponse(usertoken); + return new RestResponse(userToken); }else{ return CrudUtil.NOT_EXIST_USER_OR_ERROR_PWD_RESPONSE; } diff --git a/src/main/java/com/dreamchaser/depository_manage/mapper/SplitUnitMapper.java b/src/main/java/com/dreamchaser/depository_manage/mapper/SplitUnitMapper.java index 2b578520..9956b2a1 100644 --- a/src/main/java/com/dreamchaser/depository_manage/mapper/SplitUnitMapper.java +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/SplitUnitMapper.java @@ -149,8 +149,15 @@ public interface SplitUnitMapper { * @param Iid 待查询库存id * @return */ - SplitInventory findSplitInventoryByIid(Integer Iid); + List findSplitInventoryByIid(Integer Iid); + /** + * 根据父级查询拆单记录 + * @param parentId 待查询父级 + * @return + */ + SplitInfo findSplitInfoByParentId(Integer parentId); + } diff --git a/src/main/java/com/dreamchaser/depository_manage/mapper/SplitUnitMapper.xml b/src/main/java/com/dreamchaser/depository_manage/mapper/SplitUnitMapper.xml index 1c8e8bf4..da82ed2e 100644 --- a/src/main/java/com/dreamchaser/depository_manage/mapper/SplitUnitMapper.xml +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/SplitUnitMapper.xml @@ -306,6 +306,13 @@ + + diff --git a/src/main/java/com/dreamchaser/depository_manage/service/SplitUnitService.java b/src/main/java/com/dreamchaser/depository_manage/service/SplitUnitService.java index 51a689aa..4d12493b 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/SplitUnitService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/SplitUnitService.java @@ -98,5 +98,29 @@ public interface SplitUnitService { * @param Iid 待查询库存id * @return */ - SplitInventory findSplitInventoryByIid(Integer Iid); + List findSplitInventoryByIid(Integer Iid); + + /** + * 用于计算当前拆单单位与基础单位之间的进率 + * + * @param splitInfo 待查询拆单记录 + * @return + */ + int findSplitInfoQuantity(SplitInfo splitInfo); + + /** + * 根据库存id与拆单记录id获取对应拆单库存处理记录 + * @param Iid 待查询库存id + * @param sid 待查询拆单id + * @return + */ + SplitInventory findSplitInventoryByIidAndSid(Integer Iid,Integer sid); + + + /** + * 根据父级查询拆单记录 + * @param parentId 待查询父级 + * @return + */ + SplitInfo findSplitInfoByParentId(Integer parentId); } 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 ef4abf6b..ccdd2832 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 @@ -129,9 +129,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { Double amounts = (quantity * price * 100); // 获取平均价格 double avgPrice = 0.0; - if(quantity != 0){ - avgPrice = (amounts) / ( quantity); - }else{ + if (quantity != 0) { + avgPrice = (amounts) / (quantity); + } else { avgPrice = price * 100; } @@ -171,9 +171,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { map.put("newInMid", newMid); // 如果包含realQuantity则代表是入库的拆单单位 - if(map.containsKey("realQuantity")){ + if (map.containsKey("realQuantity")) { // 将入库数量修改为realQuantity - map.put("quantity",map.get("realQuantity")); + map.put("quantity", map.get("realQuantity")); } return depositoryRecordMapper.insertApplicationInRecord(map); } @@ -541,8 +541,8 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { Integer mid = ObjectFormatUtil.toInteger(map.get("mid")); Material materialById = materialMapper.findMaterialById(mid); String unit = (String) map.get("unit"); - if("-1".equals(unit)){ - map.put("unit",materialById.getUnit()); + if ("-1".equals(unit)) { + map.put("unit", materialById.getUnit()); } if (placeById.getMax() - placeById.getQuantity() > quantity) { // 如果当前库位还能存放 @@ -773,7 +773,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 获取出库申请时的单位 String unit = applicationOutMinById.getUnit(); MaterialAndPlace placeAndMaterialByMidAndPid = null; - if("-1".equals(unit)) { + if ("-1".equals(unit)) { // 如果是按基础单位出库 @@ -801,8 +801,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { restResponse.setStatusInfo(new StatusInfo("出库失败", "当前位置未发现该物料")); return restResponse; } - } - else { // 如果是默认库位 + } else { // 如果是默认库位 Map params = new HashMap<>(); params.put("mid", inventory.getId()); params.put("pid", 0); @@ -845,8 +844,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { placeMapper.UpdatePlace(placeById); - - // 如果是库存转移订单 Map map = new HashMap<>(); if (record.getIstransfer() == 1) { @@ -860,7 +857,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { restResponse.setStatusInfo(new StatusInfo("出库成功", "出库成功")); // 进行子订单的相关处理 - updateApplicationMinOutInfo(id,applicationOutMinById,record,trueOut,userByPort,placeId,userAgent); + updateApplicationMinOutInfo(id, applicationOutMinById, record, trueOut, userByPort, placeId, userAgent); // 更新入库批次中的物料数量 new Thread(new Runnable() { @@ -887,30 +884,45 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { } } }).start(); - } - else { + } else { restResponse.setStatus(508); restResponse.setData(""); restResponse.setStatusInfo(new StatusInfo("出库失败", "出库失败,库存不足")); } - } - else{ + } else { // 如果是拆单后的单位 - // 获取拆单库存处理记录 - SplitInventory splitInventory = splitUnitMapper.findSplitInventoryByIid(inventory.getId()); - if(splitInventory != null) { + + // 用于获取对应的拆单记录 + Map paramForSplitInfo = new HashMap<>(); + paramForSplitInfo.put("mid", inventory.getMid()); + paramForSplitInfo.put("newUnit", record.getUnit()); + // 获取对应拆单记录 + SplitInfo splitInfo = splitUnitMapper.findSplitInfoByMidAndUnit(paramForSplitInfo); + + // 获取当前拆单库存 + Map paramForSplitInventory = new HashMap<>(); + paramForSplitInventory.put("sid", splitInfo.getId()); + paramForSplitInventory.put("iid", inventory.getId()); + SplitInventory splitInventory = splitUnitMapper.findSplitInventoryByIidAndSid(paramForSplitInventory); + + + if (splitInventory != null) { // 如果拆单库存处理记录存在 if (splitInventory.getSaveQuantity() >= trueOut) { // 如果当前待处理树可以满足需求 + splitInventory.setSaveQuantity(splitInventory.getSaveQuantity() - trueOut); + + // 设置当前拆单后的出库数量 if (splitInventory.getOutQuantity() != null) { splitInventory.setOutQuantity(splitInventory.getOutQuantity() + trueOut); } else { splitInventory.setOutQuantity(trueOut); } + // 修改库存处理记录 splitUnitMapper.updateSplitInventory(splitInventory); // 进行子订单的相关处理 @@ -926,100 +938,111 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 如果不能满足需求 // 获取对应的拆单记录 - SplitInfo splitInfo = splitUnitMapper.findSplitInfoById(splitInventory.getSid()); + SplitInfo splitInfoById = splitUnitMapper.findSplitInfoById(splitInventory.getSid()); // 获取剩余不足的数量 int surplus = trueOut - splitInventory.getSaveQuantity(); - if (surplus < splitInfo.getQuantity()) { - // 如果剩余不足的数量小于拆单单位对应的数量 - Map params = new HashMap<>(); - params.put("mid", inventory.getId()); - params.put("pid", placeId); + if (surplus < splitInfoById.getQuantity()) { - // 获取当前物料在库位中的数量 - placeAndMaterialByMidAndPid = placeMapper.findPlaceAndMaterialByMidAndPid(params); + if (splitInfoById.getParentId() != null) { + // 如果当前拆单没有父级 - if (placeAndMaterialByMidAndPid != null) { - // 如果当前库位存在该物料 - if (placeAndMaterialByMidAndPid.getQuantity() < 1) { - // 如果当前库存中的物料库存不足以出库 - flag = false; + // 如果剩余不足的数量小于拆单单位对应的数量 + + Map params = new HashMap<>(); + params.put("mid", inventory.getId()); + params.put("pid", placeId); + + // 获取当前物料在库位中的数量 + placeAndMaterialByMidAndPid = placeMapper.findPlaceAndMaterialByMidAndPid(params); + + if (placeAndMaterialByMidAndPid != null) { + // 如果当前库位存在该物料 + if (placeAndMaterialByMidAndPid.getQuantity() < 1) { + // 如果当前库存中的物料库存不足以出库 + flag = false; + } + } else { + restResponse.setStatus(566); + restResponse.setData(""); + restResponse.setStatusInfo(new StatusInfo("出库失败", "当前位置未发现该物料")); + return restResponse; } - } else { - restResponse.setStatus(566); - restResponse.setData(""); - restResponse.setStatusInfo(new StatusInfo("出库失败", "当前位置未发现该物料")); - return restResponse; - } - // 如果物料数量可以出库并且库位数量充足 - if (inventory.getQuantity() >= 1 && flag) { + // 如果物料数量可以出库并且库位数量充足 + if (inventory.getQuantity() >= 1 && flag) { - // 令库存-1 - inventory.setQuantity(inventory.getQuantity() - 1); + // 令库存-1 + inventory.setQuantity(inventory.getQuantity() - 1); - // 重新计算总额 - inventory.setAmounts(inventory.getQuantity() * inventory.getPrice()); + // 重新计算总额 + inventory.setAmounts(inventory.getQuantity() * inventory.getPrice()); - // 重新计算单价 - BigDecimal decimal = new BigDecimal(inventory.getAmounts() / inventory.getQuantity()); - Double price = decimal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); - inventory.setPrice(price); + // 重新计算单价 + BigDecimal decimal = new BigDecimal(inventory.getAmounts() / inventory.getQuantity()); + Double price = decimal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); + inventory.setPrice(price); - // 修改库存记录 - materialMapper.updateInventory(inventory); + // 修改库存记录 + materialMapper.updateInventory(inventory); - // 修改当前库位存放物料的数量 - placeAndMaterialByMidAndPid.setQuantity(placeAndMaterialByMidAndPid.getQuantity() - 1); - placeMapper.updateMaterialAndPlace(placeAndMaterialByMidAndPid); + // 修改当前库位存放物料的数量 + placeAndMaterialByMidAndPid.setQuantity(placeAndMaterialByMidAndPid.getQuantity() - 1); + placeMapper.updateMaterialAndPlace(placeAndMaterialByMidAndPid); - // 修改库位数量 - Place placeById = placeMapper.findPlaceById(placeId); - placeById.setQuantity(placeById.getQuantity() - 1); - placeMapper.UpdatePlace(placeById); + // 修改库位数量 + Place placeById = placeMapper.findPlaceById(placeId); + placeById.setQuantity(placeById.getQuantity() - 1); + placeMapper.UpdatePlace(placeById); - // 如果是库存转移订单 - Map map = new HashMap<>(); - if (record.getIstransfer() == 1) { - map.put("quantity", "1"); - map.put("applicantId", record.getApplicantId()); - map.put("minRecordId", applicationOutMinById.getId()); // 出库订单编号 - transferMaterial(map); - } + // 如果是库存转移订单 + Map map = new HashMap<>(); + if (record.getIstransfer() == 1) { + map.put("quantity", "1"); + map.put("applicantId", record.getApplicantId()); + map.put("minRecordId", applicationOutMinById.getId()); // 出库订单编号 + transferMaterial(map); + } - // 设置剩余拆单库存处理数量 - splitInventory.setSaveQuantity(splitInfo.getQuantity() + splitInventory.getSaveQuantity() - trueOut); - splitInventory.setOutQuantity(splitInventory.getOutQuantity() + trueOut); - splitUnitMapper.updateSplitInventory(splitInventory); + // 设置剩余拆单库存处理数量 + splitInventory.setSaveQuantity(splitInfoById.getQuantity() + splitInventory.getSaveQuantity() - trueOut); + splitInventory.setOutQuantity(splitInventory.getOutQuantity() + trueOut); + splitUnitMapper.updateSplitInventory(splitInventory); + + updateApplicationMinOutInfo(id, applicationOutMinById, record, trueOut, userByPort, placeId, userAgent); + + restResponse.setStatus(200); + restResponse.setData(""); + restResponse.setStatusInfo(new StatusInfo("出库成功", "出库成功")); + + } else { + restResponse.setStatus(508); + restResponse.setData(""); + restResponse.setStatusInfo(new StatusInfo("出库失败", "出库失败,库存不足")); + } + }else{ + //如果有父级 - updateApplicationMinOutInfo(id, applicationOutMinById, record, trueOut, userByPort, placeId, userAgent); - restResponse.setStatus(200); - restResponse.setData(""); - restResponse.setStatusInfo(new StatusInfo("出库成功", "出库成功")); - } else { - restResponse.setStatus(508); - restResponse.setData(""); - restResponse.setStatusInfo(new StatusInfo("出库失败", "出库失败,库存不足")); } } else { // 如果大于 // 获取库存重要减少的数量 - int surplus_redundant = surplus / splitInfo.getQuantity(); + int surplus_redundant = surplus / splitInfoById.getQuantity(); // 获取拆单库存处理中要处理数量 - int saveQuantity = surplus - surplus_redundant * splitInfo.getQuantity(); + int saveQuantity = surplus - surplus_redundant * splitInfoById.getQuantity(); if (saveQuantity > splitInventory.getSaveQuantity()) { // 如果要处理的数量大于剩余数量 // 获取一个数量 surplus_redundant += 1; - splitInventory.setSaveQuantity(splitInfo.getQuantity() + splitInventory.getSaveQuantity() - saveQuantity); + splitInventory.setSaveQuantity(splitInfoById.getQuantity() + splitInventory.getSaveQuantity() - saveQuantity); } else { // 如果不大于 splitInventory.setSaveQuantity(splitInventory.getSaveQuantity() - saveQuantity); @@ -1095,17 +1118,11 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { } } - } - else{ + + } else { // 如果拆单库存处理记录不存在 - // 用于获取对应的拆单记录 - Map paramForSplitInfo = new HashMap<>(); - paramForSplitInfo.put("mid",inventory.getMid()); - paramForSplitInfo.put("newUnit",record.getUnit()); - // 获取对应拆单记录 - SplitInfo splitInfo = splitUnitMapper.findSplitInfoByMidAndUnit(paramForSplitInfo); - if(inventory.getQuantity() * splitInfo.getQuantity() > trueOut){ + if (inventory.getQuantity() * splitInfo.getQuantity() > trueOut) { // 如果当前库存数量满足要求 // 获取当前出库的具体数目 @@ -1138,12 +1155,12 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { placeMapper.UpdatePlace(placeById); // 添加拆单库存处理记录 - Map insertSplitInventory = new HashMap<>(); - insertSplitInventory.put("sid",splitInfo.getId()); - insertSplitInventory.put("iid",inventory.getId()); - insertSplitInventory.put("outQuantity",trueOut); - insertSplitInventory.put("inQuantity",0); - insertSplitInventory.put("saveQuantity",splitInfo.getQuantity() - residue_realQuantity); + Map insertSplitInventory = new HashMap<>(); + insertSplitInventory.put("sid", splitInfo.getId()); + insertSplitInventory.put("iid", inventory.getId()); + insertSplitInventory.put("outQuantity", trueOut); + insertSplitInventory.put("inQuantity", 0); + insertSplitInventory.put("saveQuantity", splitInfo.getQuantity() - residue_realQuantity); splitUnitMapper.addSplitInventory(insertSplitInventory); @@ -1163,7 +1180,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { restResponse.setStatusInfo(new StatusInfo("出库成功", "出库成功")); - }else { + } else { restResponse.setStatus(508); restResponse.setData(""); restResponse.setStatusInfo(new StatusInfo("出库失败", "出库失败,库存不足")); @@ -1174,19 +1191,38 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { return restResponse; } + /** + * 用于有父级拆单记录的出库处理 + * @param splitInfo 当前拆单记录 + * @param inventory 当前库存记录 + * @return + */ + RestResponse updateSplitInventoryInfo(SplitInfo splitInfo,Inventory inventory){ + // 获取当前拆单的父级 + SplitInfo parentSplitInfo = splitUnitMapper.findSplitInfoById(splitInfo.getParentId()); + // + Map paramForSplitInventory = new HashMap<>(); + paramForSplitInventory.put("sid",splitInfo.getId()); + paramForSplitInventory.put("iid",inventory.getId()); + splitUnitMapper.findSplitInventoryByIidAndSid(paramForSplitInventory); + return null; + } + + /** * 用于完成出库时的相关处理操作 - * @param id 子订单id + * + * @param id 子订单id * @param applicationOutMinById 待处理的子订单 - * @param record 子订单对应的主订单 - * @param trueOut 实际出库数量 - * @param userByPort 当前登录用户 - * @param placeId 出库库位id - * @param userAgent user-agent + * @param record 子订单对应的主订单 + * @param trueOut 实际出库数量 + * @param userByPort 当前登录用户 + * @param placeId 出库库位id + * @param userAgent user-agent */ @Transactional(rollbackFor = Exception.class) - void updateApplicationMinOutInfo(Integer id, ApplicationOutRecordMin applicationOutMinById, ApplicationOutRecordP record, Integer trueOut, UserByPort userByPort, Integer placeId, String userAgent){ + void updateApplicationMinOutInfo(Integer id, ApplicationOutRecordMin applicationOutMinById, ApplicationOutRecordP record, Integer trueOut, UserByPort userByPort, Integer placeId, String userAgent) { String redisMinRecordKey = "minRecord:" + id; // 设置redis中子订单键值 // 修改redis中本子订单状态 // redisTemplate.opsForHash().put(redisMinRecordKey,"state","2"); @@ -1678,8 +1714,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { qyWxOperationService.sendMessageForOtherUserByCard(ObjectFormatUtil.toInteger(id), s, userAgent, 1); } }).start(); - } - else { + } else { String result = ""; // 开启线程更改其他用户卡片模板样式 String simpleTime = DateUtil.getSimpleTime(new Date()); 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 e2bdab26..e76ce68f 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 @@ -628,17 +628,33 @@ public class MaterialServiceImpl implements MaterialService { m.setTypeId(materialTypeByOldId.getOldId()); m.setWarningCount(warningCount); // 获取当前是否存在拆单处理记录 - SplitInventory splitInventoryByIid = splitUnitMapper.findSplitInventoryByIid(m.getId()); - if (splitInventoryByIid != null) { + List splitInventoryList = splitUnitMapper.findSplitInventoryByIid(m.getId()); + + if (splitInventoryList.size() > 0) { // 如果存在拆单库存处理记录 // 获取拆单信息 - SplitInfo splitInfo = splitUnitMapper.findSplitInfoById(splitInventoryByIid.getSid()); - if (Integer.compare(m.getQuantity(), 0) == 0) { - m.setShowQuantity(splitInfo.getNewUnit() + ":" + splitInventoryByIid.getSaveQuantity()); - } else { - m.setShowQuantity(m.getUnit() + ":" + m.getQuantity() + "," + splitInfo.getNewUnit() + ":" + splitInventoryByIid.getSaveQuantity()); + StringBuilder showQuantity = new StringBuilder(); + double amounts = 0.0; + if (Integer.compare(m.getQuantity(), 0) != 0) { + showQuantity.append(m.getUnit()).append(":").append(m.getQuantity()); + } + for (SplitInventory splitInventory : splitInventoryList) { + SplitInfo splitInfo = splitUnitMapper.findSplitInfoById(splitInventory.getSid()); + + if (Integer.compare(splitInventory.getSaveQuantity(), 0) != 0) { + showQuantity.append(splitInfo.getNewUnit()).append(":").append(splitInventory.getSaveQuantity()).append(" "); + // 计算拆单后的单价 + BigDecimal bigDecimal = BigDecimal.valueOf(inventory.getPrice() / splitInfo.getQuantity()); + double split_price = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); + amounts += split_price * splitInventory.getSaveQuantity(); + } + } + m.setAmounts(m.getAmounts() + amounts); + m.setShowQuantity(showQuantity.toString()); + + } else { m.setShowQuantity(m.getUnit() + ":" + m.getQuantity()); } @@ -1722,22 +1738,24 @@ public class MaterialServiceImpl implements MaterialService { if (version == null) { version = ""; } - String title = inventory.getMname() + ",规格型号: " + version; + StringBuilder title = new StringBuilder(inventory.getMname() + ",规格型号: " + version); if (inventory.getDepositoryId() != null) { // 如果当前是库存 // 获取对应拆单库存处理记录 - title += ",当前库存为:" + inventory.getUnit() + ":" + inventory.getQuantity(); - SplitInventory splitInventoryByIid = splitUnitMapper.findSplitInventoryByIid(inventory.getId()); - if (splitInventoryByIid != null) { + title.append(",当前库存为:").append(inventory.getUnit()).append(":").append(inventory.getQuantity()); + List splitInventoryList = splitUnitMapper.findSplitInventoryByIid(inventory.getId()); + if (splitInventoryList.size() > 0) { // 如果存在 // 获取对应的拆单记录 - SplitInfo splitInfoById = splitUnitMapper.findSplitInfoById(splitInventoryByIid.getSid()); - title += "," + splitInventoryByIid.getSaveQuantity() + splitInfoById.getNewUnit(); + for (SplitInventory splitInventory : splitInventoryList) { + SplitInfo splitInfoById = splitUnitMapper.findSplitInfoById(splitInventory.getSid()); + title.append(",").append(splitInventory.getSaveQuantity()).append(splitInfoById.getNewUnit()); + } } } - map.put("title", title); + map.put("title", title.toString()); map.put("id", inventory.getId()); result.add(map); } @@ -1749,23 +1767,28 @@ public class MaterialServiceImpl implements MaterialService { if (version == null) { version = ""; } - String title = inventory.getMname() + ",规格型号: " + version; + StringBuilder title = new StringBuilder(inventory.getMname() + ",规格型号: " + version); if (inventory.getDepositoryId() != null) { // 如果当前是库存 // 如果当前是库存 // 获取对应拆单库存处理记录 - title += ",当前库存为:" + inventory.getUnit() + ":" + inventory.getQuantity(); - SplitInventory splitInventoryByIid = splitUnitMapper.findSplitInventoryByIid(inventory.getId()); - if (splitInventoryByIid != null) { + title.append(",当前库存为:").append(inventory.getUnit()).append(":").append(inventory.getQuantity()); + List splitInventoryList = splitUnitMapper.findSplitInventoryByIid(inventory.getId()); + if (splitInventoryList.size() > 0) { // 如果存在 // 获取对应的拆单记录 - SplitInfo splitInfoById = splitUnitMapper.findSplitInfoById(splitInventoryByIid.getSid()); - title += "," + splitInventoryByIid.getSaveQuantity() + splitInfoById.getNewUnit(); + for (SplitInventory splitInventory : + splitInventoryList) { + + SplitInfo splitInfoById = splitUnitMapper.findSplitInfoById(splitInventory.getSid()); + + title.append(",").append(splitInventory.getSaveQuantity()).append(splitInfoById.getNewUnit()); + } } } - map.put("title", title); + map.put("title", title.toString()); map.put("id", inventory.getId()); result.add(map); } @@ -2379,7 +2402,7 @@ public class MaterialServiceImpl implements MaterialService { materialByTypeIds = materialMapper.findMaterialByTypeIdsAndMname(paramForMnameAndMtid); } else if ("2".equals(type)) { - inventoryByTypeIdsAndMname= materialMapper.findInventoryByTypeIdsAndMname(paramForMnameAndMtid); + inventoryByTypeIdsAndMname = materialMapper.findInventoryByTypeIdsAndMname(paramForMnameAndMtid); } // 查询当前物料类型所包含的物料 @@ -2393,7 +2416,7 @@ public class MaterialServiceImpl implements MaterialService { // 1.定义CompletionService CompletionService completionService = new ExecutorCompletionService(exs); - if("1".equals(type)) { + if ("1".equals(type)) { for (MaterialType mt : materialTypeByOldIds) { // 获取当前物料类型 // 开启对应线程 @@ -2401,7 +2424,7 @@ public class MaterialServiceImpl implements MaterialService { // 添加到线程结果列表 futureList.add(future); } - }else if("2".equals(type)){ + } else if ("2".equals(type)) { for (MaterialType mt : materialTypeByOldIds) { // 获取当前物料类型 // 开启对应线程 @@ -2459,7 +2482,7 @@ public class MaterialServiceImpl implements MaterialService { List inventoryList = new ArrayList<>(); // 将物料打包成树结构对应结果 List objectList = new ArrayList<>(); - if("1".equals(type)) { + if ("1".equals(type)) { for (int i = 0; i < materiaList.size(); i++) { Material material = materiaList.get(i); // 如果当前物料是当前物料类型下的物料 @@ -2467,8 +2490,8 @@ public class MaterialServiceImpl implements MaterialService { materialList.add(material); } } - objectList = AddMaterialByTypeForSelectMname(materialList, null); - }else if("2".equals(type)){ + objectList = AddMaterialByTypeForSelectMname(materialList, null); + } else if ("2".equals(type)) { for (int i = 0; i < inventorys.size(); i++) { Inventory inventory = inventorys.get(i); // 如果当前物料是当前物料类型下的物料 @@ -2476,7 +2499,7 @@ public class MaterialServiceImpl implements MaterialService { inventoryList.add(inventory); } } - objectList = AddMaterialByTypeForSelectMname(null,inventoryList); + objectList = AddMaterialByTypeForSelectMname(null, inventoryList); } // 封装成对应的结构 @@ -2500,9 +2523,9 @@ public class MaterialServiceImpl implements MaterialService { } // 在类别后添加物料名称(通过物料名称搜索) - public List AddMaterialByTypeForSelectMname(List materialList,List inventoryList) { + public List AddMaterialByTypeForSelectMname(List materialList, List inventoryList) { List result = new ArrayList<>(); - if(materialList!=null) { + if (materialList != null) { for (Material material : materialList) { Map map = new HashMap<>(); String version = material.getVersion(); @@ -2515,25 +2538,30 @@ public class MaterialServiceImpl implements MaterialService { map.put("id", material.getId()); result.add(map); } - }else if(inventoryList != null){ + } else if (inventoryList != null) { for (Inventory inventory : inventoryList) { Map map = new HashMap<>(); String version = inventory.getVersion(); if (version == null) { version = ""; } - String title = ""; - title = inventory.getMname() + ",规格型号: " + version+",库存数量:"+inventory.getUnit() +":"+inventory.getQuantity(); + StringBuilder title = new StringBuilder(); + title = new StringBuilder(inventory.getMname() + ",规格型号: " + version + ",库存数量:" + inventory.getUnit() + ":" + inventory.getQuantity()); // 获取对应拆单库存处理记录 - SplitInventory splitInventoryByIid = splitUnitMapper.findSplitInventoryByIid(inventory.getId()); - if(splitInventoryByIid != null){ + List splitInventoryList = splitUnitMapper.findSplitInventoryByIid(inventory.getId()); + if (splitInventoryList.size() > 0) { // 如果不为空 // 获取对应拆单信息 - SplitInfo splitInfoById = splitUnitMapper.findSplitInfoById(splitInventoryByIid.getSid()); - title +=","+splitInfoById.getNewUnit()+":"+splitInventoryByIid.getSaveQuantity(); + for (SplitInventory splitInventory : + splitInventoryList) { + + SplitInfo splitInfoById = splitUnitMapper.findSplitInfoById(splitInventory.getSid()); + title.append(",").append(splitInfoById.getNewUnit()).append(":").append(splitInventory.getSaveQuantity()); + + } } - map.put("title", title); + map.put("title", title.toString()); map.put("id", inventory.getId()); result.add(map); } 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 81e22d60..5de48c1b 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 @@ -1,16 +1,11 @@ package com.dreamchaser.depository_manage.service.impl; -import com.dreamchaser.depository_manage.entity.Inventory; -import com.dreamchaser.depository_manage.entity.SplitInfo; -import com.dreamchaser.depository_manage.entity.SplitInventory; -import com.dreamchaser.depository_manage.exception.MyException; +import com.dreamchaser.depository_manage.entity.*; import com.dreamchaser.depository_manage.mapper.*; import com.dreamchaser.depository_manage.pojo.SplitInfoP; import com.dreamchaser.depository_manage.service.DepositoryRecordService; -import com.dreamchaser.depository_manage.service.MaterialService; import com.dreamchaser.depository_manage.service.SplitUnitService; import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; -import com.sun.mail.imap.protocol.ID; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -91,11 +86,10 @@ public class SplitUnitServiceImpl implements SplitUnitService { // 用于存储最终计算结果 Integer result = 0; - if (splitInfoForUnit != null) { + if (splitInfoForUnit != null) { // 获取当前进制 -// Integer scale = findSplitInfoQuantity(splitInfoForUnit); - Integer scale = findSplitInfoQuantity(splitInfoForUnit); + Integer scale = splitInfoForUnit.getQuantity(); // 获取当前处理的类型 String type = (String) map.get("type"); @@ -117,15 +111,14 @@ public class SplitUnitServiceImpl implements SplitUnitService { // 获取对应的库存记录 inventory = materialMapper.findInventoryById(iid); - } else { Map param = new HashMap<>(); param.put("depositoryId", map.get("depositoryId")); param.put("mid", map.get("mid")); // 判断该仓库中有无该物物料 - List materialByCondition = materialMapper.findInventory(param); - if (materialByCondition.size() > 0) { - inventory = materialByCondition.get(0); + List inventoryList = materialMapper.findInventory(param); + if (inventoryList.size() > 0) { + inventory = inventoryList.get(0); paramForInsertSplitInventory.put("iid", inventory.getId()); @@ -144,15 +137,20 @@ public class SplitUnitServiceImpl implements SplitUnitService { // 最终存储到拆单处理的数量 double saveQuantity = quantity - disposeQuantity * scale; + if (splitInventory != null) { // 如果有过记录 // 最终存储数量 int realQuantity = (int) Math.round(saveQuantity) + splitInventory.getSaveQuantity(); - if (realQuantity > scale) { + if (realQuantity >= scale) { // 如果当前入库的数量大于拆单规定的进制数量 - int quantity_in = realQuantity - (realQuantity / scale); + + // 计算要进的数目 + int quantity_in = (realQuantity / scale) ; + // 更新处理数量 disposeQuantity += quantity_in; + // 拆单库存实际入库的数量 realQuantity = realQuantity - quantity_in * scale; } // 设置当前计量单位的库存 @@ -165,7 +163,7 @@ public class SplitUnitServiceImpl implements SplitUnitService { splitInventory.setInQuantity((int) Math.round(quantity)); } - splitUnitMapper.updateSplitInventory(splitInventory); + result += splitUnitMapper.updateSplitInventory(splitInventory); if (disposeQuantity != 0) { // 用于更改库存的数量 @@ -176,25 +174,101 @@ public class SplitUnitServiceImpl implements SplitUnitService { } // 实际入库数量 map.put("realQuantity", quantity.toString()); - result += depositoryRecordService.applicationInPlace(map); - } else { + if (splitInfoForUnit.getParentId() != null) { + SplitInfo parentSplitInfo = splitUnitMapper.findSplitInfoById(splitInfoForUnit.getParentId()); + updateSplitInfoSaveQuantity(parentSplitInfo, disposeQuantity, inventory.getId(), map,quantity.intValue()); + } else { + Double price = Double.parseDouble((String) map.get("price")); + price = price * findSplitInfoQuantity(splitInfoForUnit); + map.put("price",price.toString()); + depositoryRecordService.applicationInPlace(map); + } + + + } + else { // 如果没有记录 + // 获取当前拆单记录的父级 + Integer parentId = splitInfoForUnit.getParentId(); + if (disposeQuantity != 0) { // 用于更改库存的数量 map.put("quantity", String.valueOf(disposeQuantity)); } else { map.put("quantity", "0"); } - // 实际入库数量 - map.put("realQuantity", quantity.toString()); - result += depositoryRecordService.applicationInPlace(map); - paramForInsertSplitInventory.put("inQuantity", quantity); - paramForInsertSplitInventory.put("outQuantity", 0); - paramForInsertSplitInventory.put("saveQuantity", saveQuantity); - paramForInsertSplitInventory.put("iid", map.get("newInMid")); - splitUnitMapper.addSplitInventory(paramForInsertSplitInventory); + if (disposeQuantity > splitInfoForUnit.getQuantity()) { + //如果当前处理数量大于设置的进制数量 + + // 实际入库数量 + map.put("realQuantity", quantity.toString()); + + + if (parentId != null) { + // 如果该记录有父级拆单 + + SplitInfo parentSplitInfo = splitUnitMapper.findSplitInfoById(parentId); + if (inventory != null) { + updateSplitInfoSaveQuantity(parentSplitInfo, ObjectFormatUtil.toInteger(String.valueOf(saveQuantity)), inventory.getId(), map,quantity.intValue()); + } else { + Double price = Double.parseDouble((String) map.get("price")); + price = price * findSplitInfoQuantity(splitInfoForUnit); + map.put("price",price.toString()); + result += depositoryRecordService.applicationInPlace(map); + updateSplitInfoSaveQuantity(parentSplitInfo, ObjectFormatUtil.toInteger(String.valueOf(saveQuantity)), ObjectFormatUtil.toInteger(map.get("newInMid")), map,quantity.intValue()); + } + } else { + Double price = Double.parseDouble((String) map.get("price")); + price = price * findSplitInfoQuantity(splitInfoForUnit); + map.put("price",price.toString()); + result += depositoryRecordService.applicationInPlace(map); + } + } else { + // 如果不大于设置的进制数量 + + paramForInsertSplitInventory.put("inQuantity", quantity); + paramForInsertSplitInventory.put("outQuantity", 0); + paramForInsertSplitInventory.put("saveQuantity", saveQuantity); + + if (inventory != null) { + // 如果有库存记录 + paramForInsertSplitInventory.put("iid", inventory.getId()); + } else { + // 如果没有库存记录 + + // 插入一条库存记录 + Double price = Double.parseDouble((String) map.get("price")); + price = price * findSplitInfoQuantity(splitInfoForUnit); + map.put("price",price.toString()); + + + + if(parentId != null){ + // 如果有父级 + + // 先插入一条库存记录用于后续操作 + map.put("quantity","0"); + result += depositoryRecordService.applicationInPlace(map); + + }else{ + // 如果没有父级 + result += depositoryRecordService.applicationInPlace(map); + } + + paramForInsertSplitInventory.put("iid", map.get("newInMid")); + } + + splitUnitMapper.addSplitInventory(paramForInsertSplitInventory); + if(parentId != null){ + // 获取父级 + SplitInfo parentSplitInfo = splitUnitMapper.findSplitInfoById(splitInfoForUnit.getParentId()); + updateSplitInfoSaveQuantity(parentSplitInfo,disposeQuantity,ObjectFormatUtil.toInteger(map.get("newInMid")),map,quantity.intValue()); + } + } + + } } } @@ -209,7 +283,7 @@ public class SplitUnitServiceImpl implements SplitUnitService { * @param splitInfo 待查询拆单记录 * @return */ - private int findSplitInfoQuantity(SplitInfo splitInfo) { + public int findSplitInfoQuantity(SplitInfo splitInfo) { int quantity = 1; quantity *= splitInfo.getQuantity(); if (splitInfo.getParentId() != null) { @@ -220,6 +294,158 @@ public class SplitUnitServiceImpl implements SplitUnitService { } } + /** + * 根据库存id与拆单记录id获取对应拆单库存处理记录 + * @param Iid 待查询库存id + * @param sid 待查询拆单id + * @return + */ + @Override + public SplitInventory findSplitInventoryByIidAndSid(Integer Iid, Integer sid) { + Map param = new HashMap<>(); + param.put("iid",Iid); + param.put("sid",sid); + + return splitUnitMapper.findSplitInventoryByIidAndSid(param); + } + + /** + * 根据父级查询拆单记录 + * @param parentId 待查询父级 + * @return + */ + @Override + public SplitInfo findSplitInfoByParentId(Integer parentId) { + return splitUnitMapper.findSplitInfoByParentId(parentId); + } + + /** + * 用于拆单库存处理记录的修改 + * @param splitInfo 对应拆单记录 + * @param quantity 修改数目 + * @param map 入库条件 + * @param inQuantity 最终入库数量 + */ + private void updateSplitInfoSaveQuantity(SplitInfo splitInfo, int quantity, int iid, Map map,int inQuantity) { + + int result = 0; + + // 获取当前拆单记录的父级拆单记录 + Integer parentId = splitInfo.getParentId(); + + // 获取当前拆单记录对应的拆开库存处理记录 + Map paramForSplitInventory = new HashMap<>(); + paramForSplitInventory.put("iid", iid); + paramForSplitInventory.put("sid", splitInfo.getId()); + SplitInventory splitInventory = splitUnitMapper.findSplitInventoryByIidAndSid(paramForSplitInventory); + + + // 获取当前进制 + int scale = splitInfo.getQuantity(); + + // 计算处理数量(下取整) + int disposeQuantity = (int) Math.round(Math.floor(quantity / scale)); + + // 最终存储到拆单处理的数量 + double saveQuantity = quantity - disposeQuantity * scale; + + if (splitInventory != null) { + // 如果拆单库存处理记录不为空 + if (splitInventory.getSaveQuantity() + saveQuantity > splitInfo.getQuantity()) { + // 当前库存拆单记录与新入库的数目大于预设的进制 + + + // 定义当前实际修改数量 + double new_saveQuantity = splitInventory.getSaveQuantity() + saveQuantity - splitInfo.getQuantity(); + // 令计算处理数量+1 + disposeQuantity += 1; + + // 定义保存数量 + splitInventory.setSaveQuantity((int) (splitInventory.getSaveQuantity() + new_saveQuantity)); + // 定义添加数量 + splitInventory.setInQuantity((int) (splitInventory.getInQuantity() + new_saveQuantity)); + + // 修改库存拆单库存处理记录 + splitUnitMapper.updateSplitInventory(splitInventory); + + if (parentId != null) { + // 如果当前拆单的父级不为空 + + // 获取具体父级 + SplitInfo splitInfoForParent = splitUnitMapper.findSplitInfoById(parentId); + + updateSplitInfoSaveQuantity(splitInfoForParent, disposeQuantity, splitInventory.getIid(), map,inQuantity); + } else { + // 如果为空 + Double price = Double.parseDouble((String) map.get("price")); + price = price * findSplitInfoQuantity(splitInfo); + map.put("price",price.toString()); + map.put("quantity", String.valueOf(disposeQuantity)); + map.put("realQuantity", String.valueOf(inQuantity)); + + depositoryRecordService.applicationInPlace(map); + } + } + else { + // 当前库存拆单记录与新入库的数目不大于预设的进制 + splitInventory.setSaveQuantity(splitInventory.getSaveQuantity() + disposeQuantity); + splitInventory.setInQuantity(splitInventory.getInQuantity() + disposeQuantity); + splitUnitMapper.updateSplitInventory(splitInventory); + + Double price = Double.parseDouble((String) map.get("price")); + price = price * findSplitInfoQuantity(splitInfo); + map.put("price",price.toString()); + map.put("quantity", "0"); + map.put("realQuantity", String.valueOf(inQuantity)); + depositoryRecordService.applicationInPlace(map); + } + } + else { + + // 如果为空 + Map paramForInsertSplitInventory = new HashMap<>(); + + paramForInsertSplitInventory.put("sid", splitInfo.getId()); + paramForInsertSplitInventory.put("inQuantity", quantity); + paramForInsertSplitInventory.put("outQuantity", 0); + paramForInsertSplitInventory.put("iid", map.get("newInMid")); + if (quantity > splitInfo.getQuantity()) { + // 如果当前处理数量大于当前设置的进制数量 + + // 计算需要进位的数量 + int quantity_scale = quantity / splitInfo.getQuantity(); + // 计算剩余处理的数量 + int quantity_residue = quantity - quantity_scale * splitInfo.getQuantity(); + paramForInsertSplitInventory.put("saveQuantity", quantity_residue); + splitUnitMapper.addSplitInventory(paramForInsertSplitInventory); + + if (parentId != null) { + // 如果其有父级 + + // 获取当前拆单记录的父级 + SplitInfo parentSplitInfo = splitUnitMapper.findSplitInfoById(parentId); + + updateSplitInfoSaveQuantity(parentSplitInfo, quantity_scale, iid, map,inQuantity); + } else { + Double price = Double.parseDouble((String) map.get("price")); + price = price * findSplitInfoQuantity(splitInfo); + map.put("price",price.toString()); + map.put("quantity", String.valueOf(quantity_scale)); + map.put("realQuantity", String.valueOf(inQuantity)); + depositoryRecordService.applicationInPlace(map); + } + } else { + // 如果不大于 + paramForInsertSplitInventory.put("saveQuantity", String.valueOf(inQuantity)); + splitUnitMapper.addSplitInventory(paramForInsertSplitInventory); + map.put("quantity", "0"); + map.put("realQuantity", String.valueOf(inQuantity)); + depositoryRecordService.applicationInPlace(map); + + } + } + } + /** * 根据条件查询对应拆单详细信息 * @@ -385,7 +611,7 @@ public class SplitUnitServiceImpl implements SplitUnitService { * @return */ @Override - public SplitInventory findSplitInventoryByIid(Integer Iid) { + public List findSplitInventoryByIid(Integer Iid) { return splitUnitMapper.findSplitInventoryByIid(Iid); } diff --git a/src/main/resources/templates/pages/depository/table-stock.html b/src/main/resources/templates/pages/depository/table-stock.html index 49aab5c1..925ff428 100644 --- a/src/main/resources/templates/pages/depository/table-stock.html +++ b/src/main/resources/templates/pages/depository/table-stock.html @@ -169,7 +169,7 @@ } // 所处库位 - var placeCodeItem = $("[lay-id='currentTableId'] tr:eq(" + (i+1) + ")").children()[9]; + var placeCodeItem = $("[lay-id='currentTableId'] tr:eq(" + (i+1) + ")").children()[8]; var aItem = placeCodeItem.childNodes[0]; for (let k = 0; k < placeCode.length; k++) { if(placeCode[k] !== ""){ diff --git a/src/test/java/com/dreamchaser/depository_manage/TestForOther.java b/src/test/java/com/dreamchaser/depository_manage/TestForOther.java index 50a5d5ea..abde431e 100644 --- a/src/test/java/com/dreamchaser/depository_manage/TestForOther.java +++ b/src/test/java/com/dreamchaser/depository_manage/TestForOther.java @@ -1,8 +1,12 @@ package com.dreamchaser.depository_manage; import com.dreamchaser.depository_manage.entity.SplitInfo; +import com.dreamchaser.depository_manage.entity.SplitInventory; import com.dreamchaser.depository_manage.mapper.SplitUnitMapper; +import com.dreamchaser.depository_manage.pojo.InventoryP; +import com.dreamchaser.depository_manage.service.SplitUnitService; import com.dreamchaser.depository_manage.utils.CreateQrCodeUtil; +import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -24,10 +28,13 @@ import java.io.OutputStream; public class TestForOther { - @Test public void Test() throws IOException { + Double a = 24.0; + System.out.println(a.intValue()); } + + } diff --git a/target/classes/com/dreamchaser/depository_manage/mapper/SplitUnitMapper.xml b/target/classes/com/dreamchaser/depository_manage/mapper/SplitUnitMapper.xml index 1c8e8bf4..da82ed2e 100644 --- a/target/classes/com/dreamchaser/depository_manage/mapper/SplitUnitMapper.xml +++ b/target/classes/com/dreamchaser/depository_manage/mapper/SplitUnitMapper.xml @@ -306,6 +306,13 @@ + + diff --git a/target/classes/templates/pages/depository/table-stock.html b/target/classes/templates/pages/depository/table-stock.html index 49aab5c1..925ff428 100644 --- a/target/classes/templates/pages/depository/table-stock.html +++ b/target/classes/templates/pages/depository/table-stock.html @@ -169,7 +169,7 @@ } // 所处库位 - var placeCodeItem = $("[lay-id='currentTableId'] tr:eq(" + (i+1) + ")").children()[9]; + var placeCodeItem = $("[lay-id='currentTableId'] tr:eq(" + (i+1) + ")").children()[8]; var aItem = placeCodeItem.childNodes[0]; for (let k = 0; k < placeCode.length; k++) { if(placeCode[k] !== ""){ diff --git a/target/classes/templates/pages/material/selectMaterial.html b/target/classes/templates/pages/material/selectMaterial.html index d1eee8d7..b69e9ab6 100644 --- a/target/classes/templates/pages/material/selectMaterial.html +++ b/target/classes/templates/pages/material/selectMaterial.html @@ -23,6 +23,7 @@ var tempData = []; var req = {}; req.mname = mname; + req.type = "1"; var test = tree.render({ elem: '#test2' , data: [] diff --git a/target/classes/templates/pages/split/split_add.html b/target/classes/templates/pages/split/split_add.html index e1d60aff..2e59b4f0 100644 --- a/target/classes/templates/pages/split/split_add.html +++ b/target/classes/templates/pages/split/split_add.html @@ -34,10 +34,10 @@ padding-right: 0px; } - .inputdiv .layui-unselect { - border-style: none; + .layui-form-select{ width: 100%; } +
@@ -119,8 +119,9 @@
- +
@@ -240,7 +241,7 @@ codeValue.val(""); version.val(""); typeName.val(""); - unit.val(""); + unit.empty(); return false; } else if (d.count === 0) { layer.msg("没有该物品,请确认输入是否正确"); @@ -249,7 +250,7 @@ materialName.val(""); version.val(""); typeName.val(""); - unit.val(""); + unit.empty(); return false; } else { var material = d.data[0]; @@ -258,7 +259,34 @@ codeValue.val(material.code); version.val(material.version); typeName.val(material.typeName); - unit.val(material.unit); + + unit.append(new Option(material.unit,material.unit)); + var splitInfoList = material["splitInfoList"]; + $.each(splitInfoList,function (index,item) { + $("#unit").append(new Option(item.newUnit, item.newUnit));//往下拉菜单里添加元素 + }); + form.render(); + + var materialAndBarCodeList = material["materialAndBarCodeList"]; + + if (materialAndBarCodeList !== null && materialAndBarCodeList.length > 0) { + // 如果有对应的条形码 + $("#barCode").remove(); + var barCodeSelect = ` + `; + $("#barCodeImg").before(barCodeSelect); + form.render(); + $.each(materialAndBarCodeList, function (index, item) { + $("#barCode").append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素 + }); + form.render(); + }else{ + let children = $("#barCode").parent().children(); + if(children.length > 2){ + $("#barCode").empty(); + $(children[1]).empty(); + } + } } } }); @@ -301,10 +329,16 @@ } $("#code").val(code); $("#version").val(material.version); - $("#unit").val(material.unit); + $("#unit").append(new Option(material.unit,material.unit)); + var splitInfoList = material["splitInfoList"]; + $.each(splitInfoList,function (index,item) { + $("#unit").append(new Option(item.newUnit, item.newUnit));//往下拉菜单里添加元素 + }); + form.render(); $("#typeName").val(material.typeName); var materialAndBarCodeList = material["materialAndBarCodeList"]; - if (materialAndBarCodeList.length > 0) { + + if (materialAndBarCodeList !== null && materialAndBarCodeList.length > 0) { // 如果有对应的条形码 $("#barCode").remove(); var barCodeSelect = ` @@ -315,6 +349,12 @@ $("#barCode").append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素 }); form.render(); + }else{ + let children = $("#barCode").parent().children(); + if(children.length > 2){ + $("#barCode").empty(); + $(children[1]).empty(); + } } } }); @@ -406,7 +446,7 @@ $("#code").val(""); $("#barCode").val(""); $("#version").val(""); - $("#unit").val(""); + $("#unit").empty(); $("#typeName").val(""); form.render(); @@ -414,11 +454,17 @@ $("#mname").val(d.mname); $("#mid").val( d.mid); $("#version").val(d.version); - $("#unit").val(d.unit); + $("#unit").empty(); + $('#unit').append(new Option(d.unit,d.unit)); + var splitInfoList = d["splitInfoList"]; + $.each(splitInfoList,function (index,item) { + $("#unit").append(new Option(item.newUnit, item.newUnit));//往下拉菜单里添加元素 + }); + form.render(); $("#typeName").val(d.typeName); // 获取物料与条形码的对应关系 var materialAndBarCodeList = d["materialAndBarCodeList"]; - if (materialAndBarCodeList.length > 0) { + if (materialAndBarCodeList !== null && materialAndBarCodeList.length > 0) { // 如果有对应的条形码 $("#barCode").remove(); $(".layui-unselect").remove(); @@ -433,8 +479,11 @@ }); form.render(); } else { - $("#barCode").remove(); - $(".layui-unselect").remove(); + let children = $("#barCode").parent().children(); + if(children.length > 2){ + $("#barCode").empty(); + $(children[1]).empty(); + } } } diff --git a/target/classes/templates/pages/warehouse/depository_add.html b/target/classes/templates/pages/warehouse/depository_add.html index 865a78b1..8cd697d4 100644 --- a/target/classes/templates/pages/warehouse/depository_add.html +++ b/target/classes/templates/pages/warehouse/depository_add.html @@ -112,7 +112,7 @@ dataType:'json', contentType: "application/json;charset=utf-8", success:function(d){ - if(data.value != "") { + if(data.value !== "") { $('#adminorg').empty(); $('#adminorg').append(new Option("请选择部门", "")); $.each(d.data, function (index, item) {