From dfd5e936cb19561492a4dbccfc1743e5a1c741b5 Mon Sep 17 00:00:00 2001 From: anthonywj Date: Wed, 1 Mar 2023 19:04:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E5=8D=95=E6=8D=AE=EF=BC=8C?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E7=9B=B8=E5=85=B3bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/glxp/api/constant/Constant.java | 2 + .../inout/IoCodeTempController.java | 19 +++++++--- .../controller/inout/IoOrderController.java | 8 +++- .../inv/InvPreProductController.java | 4 -- .../controller/inv/InvProductController.java | 4 -- .../service/inout/IoCheckInoutService.java | 38 ++++++++++++------- .../inout/impl/IoOrderServiceImpl.java | 2 +- .../service/inv/InvProductDetailService.java | 2 +- .../inv/impl/InvProductDetailServiceImpl.java | 10 +++-- .../mybatis/mapper/inout/IoOrderDao.xml | 2 + .../mapper/inv/InvPreProductDetailDao.xml | 5 +-- .../mapper/inv/invProductDetailDao.xml | 4 +- 12 files changed, 61 insertions(+), 39 deletions(-) diff --git a/src/main/java/com/glxp/api/constant/Constant.java b/src/main/java/com/glxp/api/constant/Constant.java index 2088c095c..cee5e925f 100644 --- a/src/main/java/com/glxp/api/constant/Constant.java +++ b/src/main/java/com/glxp/api/constant/Constant.java @@ -182,6 +182,8 @@ public class Constant { */ public static final String ORDER_STATUS_NEW_ORDER = "newOrder"; + + /** * 单据-未校验标识 */ diff --git a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java index 563635149..0b457109b 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java @@ -453,9 +453,15 @@ public class IoCodeTempController extends BaseController { } if (StrUtil.isNotEmpty(orderId)) {//非首次添加 if (StrUtil.isEmpty(udiEntity.getSerialNo())) {//该单据已有该产品 + //无序列号,则可能存在多个预验收入库单 IoCodeTempEntity codeTempEntity = codeTempService.findByUnique(orderId, code); + List invPreinDetailEntities = invPreinDetailService.findByCode(code); + int count = 0; + for (InvPreinDetailEntity temp : invPreinDetailEntities) { + count = count + temp.getCount(); + } if (codeTempEntity != null) { - if (invProductDetailEntity.getCount() < (codeTempEntity.getMyCount() + 1)) { + if (count < (codeTempEntity.getMyCount() + 1)) { return ResultVOUtils.error(500, "超出预验收库存数量"); } } @@ -497,6 +503,9 @@ public class IoCodeTempController extends BaseController { if (codeEnttitys.size() > 0) { exitLocalEntity = isExitLocal(code, codeEnttitys); if (exitLocalEntity != null) { + if (StrUtil.isEmpty(exitLocalEntity.getSupId()) || exitLocalEntity.getRelId() == null) { + return ResultVOUtils.error(500, "当前UDI码已存在,且存在异常未处理!"); + } udiRelevanceResponses = udiRelevanceService.selectGroupByNameCode(exitLocalEntity.getNameCode()); BeanUtils.copyProperties(exitLocalEntity, genDetaiEntity); genDetaiEntity.setCount(1); @@ -781,7 +790,7 @@ public class IoCodeTempController extends BaseController { // return ResultVOUtils.error(500, "当前库存不足,不允许0库存出库"); // } } else { - int count = invProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getDeptCode(), codeTempEntity.getInvCode(), null); + int count = invProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), codeTempEntity.getDeptCode(), codeTempEntity.getInvCode(), null); if (count <= 0) { return ResultVOUtils.error(500, "当前库存不足,不允许0库存出库"); } else { @@ -857,7 +866,7 @@ public class IoCodeTempController extends BaseController { IoOrderEntity orderEntity = orderService.findByBillNo(codeTempEntity.getOrderId()); if (codeTempEntity.getMyCount() > 1) { codeTempEntity.setCount(codeTempEntity.getMyCount() - 1); - codeTempEntity.setReCount(codeTempEntity.getMyCount() - udiCalCountUtil.getActCount(codeTempEntity.getRelId())); + codeTempEntity.setReCount(codeTempEntity.getMyReCount() - udiCalCountUtil.getActCount(codeTempEntity.getRelId())); codeTempService.updateById(codeTempEntity); } else { codeTempService.deleteById(id); @@ -870,8 +879,8 @@ public class IoCodeTempController extends BaseController { int orderCount = orderDetailCodeEntity.getCount(); int orderReCount = orderDetailCodeEntity.getReCount(); if (orderCount > 1) { - orderDetailCodeEntity.setCount(orderCount - codeTempEntity.getMyCount()); - orderDetailCodeEntity.setReCount(orderReCount - codeTempEntity.getMyReCount()); + orderDetailCodeEntity.setCount(orderCount - 1); + orderDetailCodeEntity.setReCount(orderReCount - udiCalCountUtil.getActCount(codeTempEntity.getRelId())); ioOrderDetailCodeService.update(orderDetailCodeEntity); } else { ioOrderDetailCodeService.deleteById(orderDetailCodeEntity.getId()); diff --git a/src/main/java/com/glxp/api/controller/inout/IoOrderController.java b/src/main/java/com/glxp/api/controller/inout/IoOrderController.java index f91465000..d73e17b11 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoOrderController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoOrderController.java @@ -91,17 +91,23 @@ public class IoOrderController extends BaseController { if (CollUtil.isEmpty(orderDetailBizEntities)) { return ResultVOUtils.error(500, "请先录入产品!"); } + + String vailKey = ""; for (IoOrderDetailBizEntity orderDetailBizEntity : orderDetailBizEntities) { if (orderDetailBizEntity.getBindRlFk() == null) { return ResultVOUtils.error(500, orderDetailBizEntity.getCoName() + "该产品未指定唯一耗材编码!"); } - if (StrUtil.isEmpty(orderDetailBizEntity.getSupId())) { return ResultVOUtils.error(500, orderDetailBizEntity.getCoName() + "该产品未指定供应商!"); } + if (orderDetailBizEntity.getCount() == 0) { + return ResultVOUtils.error(500, orderDetailBizEntity.getCoName() + "产品数量不能为0"); + } +// if(orderDetailBizEntity.) } + IoOrderEntity orderEntity = orderService.findByBillNo(addOrderRequest.getBillNo()); ioAddInoutService.dealBusProcess(orderEntity); return ResultVOUtils.success("提交成功!"); diff --git a/src/main/java/com/glxp/api/controller/inv/InvPreProductController.java b/src/main/java/com/glxp/api/controller/inv/InvPreProductController.java index 867f76b1c..c41123127 100644 --- a/src/main/java/com/glxp/api/controller/inv/InvPreProductController.java +++ b/src/main/java/com/glxp/api/controller/inv/InvPreProductController.java @@ -85,10 +85,6 @@ public class InvPreProductController { */ @GetMapping("/spms/inv/pre/product/filterDetail") public BaseResponse filterInvPreProductDetail(FilterInvPreProductDetailRequest detailRequest) { - if (StrUtil.isBlank(detailRequest.getBatchNo())) { - detailRequest.setBatchNo("empty"); - } - List invPreProductDetailEntities = invPreProductDetailService.filterPreProductDetailList(detailRequest); PageInfo pageInfo = new PageInfo<>(invPreProductDetailEntities); diff --git a/src/main/java/com/glxp/api/controller/inv/InvProductController.java b/src/main/java/com/glxp/api/controller/inv/InvProductController.java index 22e8eec72..15e8d7c7b 100644 --- a/src/main/java/com/glxp/api/controller/inv/InvProductController.java +++ b/src/main/java/com/glxp/api/controller/inv/InvProductController.java @@ -86,10 +86,6 @@ public class InvProductController { */ @GetMapping("/spms/inv/product/filterDetail") public BaseResponse filterInvProductDetail(FilterInvProductDetailRequest filterInvProductDetailRequest) { - if (StrUtil.isBlank(filterInvProductDetailRequest.getBatchNo())) { - filterInvProductDetailRequest.setBatchNo("empty"); - } - List invProductDetailEntities = invProductDetailService.filterInvProductDetailList(filterInvProductDetailRequest); PageInfo pageInfo = new PageInfo<>(invProductDetailEntities); diff --git a/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java index 6dbfef621..2c64a917d 100644 --- a/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java @@ -191,6 +191,9 @@ public class IoCheckInoutService { orderService.update(orderEntity); return; } + + orderDetailBizService.deleteByOrderId(orderEntity.getBillNo()); + orderDetailResultService.deleteByOrderId(orderEntity.getBillNo()); orderDetailCodeEntities.forEach(orderDetailCodeEntity -> { //生成业务单据 @@ -306,6 +309,7 @@ public class IoCheckInoutService { orderService.update(orderEntity); } else { //生成单据结果 + orderDetailResultService.deleteByOrderId(orderEntity.getBillNo()); for (IoOrderDetailBizEntity orderDetailBizEntity : orderDetailBizEntities) { IoOrderDetailResultEntity orderDetailResultEntity = new IoOrderDetailResultEntity(); BeanUtils.copyProperties(orderDetailBizEntity, orderDetailResultEntity); @@ -527,6 +531,8 @@ public class IoCheckInoutService { //预验收出库,删掉对应预验收库存 if (bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_OUT) && bussinessTypeEntity.isScanPreIn()) { List codeList = codeService.findByOrderId(orderEntity.getBillNo()); + + //找出UDI码对应的预验收入库单号 Map preInOrder = new HashMap<>(); for (IoCodeEntity warehouseEntity : codeList) { List invProductDetailEntities = invPreinDetailService.findByCode(warehouseEntity.getCode()); @@ -542,27 +548,31 @@ public class IoCheckInoutService { preInEntity.setPreOutBillNo(orderEntity.getBillNo()); orderService.update(preInEntity); + //预验收不删除单号,方便后续查询 if (bussinessTypeEntity.isPreInBack()) { //预验收如果带回,则清空相关预验收库存; - invPreinOrderService.deleteByOrderId(preInEntity.getBillNo()); +// invPreinOrderService.deleteByOrderId(preInEntity.getBillNo()); invPreinDetailService.deleteByOrderId(preInEntity.getBillNo()); } else { //预验收如果不带回,则清除已出库相关库存 for (IoCodeEntity codeEntity : codeList) { if (StrUtil.isEmpty(codeEntity.getSerialNo())) { InvPreinDetailEntity invPreinDetailEntity = invPreinDetailService.findByCode(key, codeEntity.getCode()); - int count = invPreinDetailEntity.getCount() - 1; - if (count == 0) { - invPreinDetailService.deleteByCode(key, codeEntity.getCode()); - } else { - invPreinDetailEntity.setCount(count); - invPreinDetailService.update(invPreinDetailEntity); - } - int reCount = invPreinDetailEntity.getReCount() - codeEntity.getMyReCount(); - if (reCount == 0) { - invPreinDetailService.deleteByCode(key, codeEntity.getCode()); - } else { - invPreinDetailEntity.setReCount(reCount); - invPreinDetailService.update(invPreinDetailEntity); + if (invPreinDetailEntity != null) { + int count = invPreinDetailEntity.getCount() - 1; + if (count == 0) { + invPreinDetailService.deleteByCode(key, codeEntity.getCode()); + } else { + invPreinDetailEntity.setCount(count); + invPreinDetailService.update(invPreinDetailEntity); + } + int reCount = invPreinDetailEntity.getReCount() - codeEntity.getMyReCount(); + if (reCount == 0) { + invPreinDetailService.deleteByCode(key, codeEntity.getCode()); + } else { + invPreinDetailEntity.setReCount(reCount); + invPreinDetailService.update(invPreinDetailEntity); + } } + } else { invPreinDetailService.deleteByCode(key, codeEntity.getCode()); } diff --git a/src/main/java/com/glxp/api/service/inout/impl/IoOrderServiceImpl.java b/src/main/java/com/glxp/api/service/inout/impl/IoOrderServiceImpl.java index 71ab69f22..78b38aa3b 100644 --- a/src/main/java/com/glxp/api/service/inout/impl/IoOrderServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inout/impl/IoOrderServiceImpl.java @@ -474,7 +474,7 @@ public class IoOrderServiceImpl implements IoOrderService { filterOrderRequest.setOrderType(ConstantStatus.ORDER_TYPE_SCAN); break; case Constant.ORDER_STATUS_NEW_ORDER: - filterOrderRequest.setStatuses(Arrays.asList(1, 2, 3, 4, 6)); + filterOrderRequest.setStatuses(Arrays.asList(1, 2, 4)); filterOrderRequest.setDealStatuses(Arrays.asList(1, 2)); break; case Constant.ORDER_STATUS_UN_CHECK: diff --git a/src/main/java/com/glxp/api/service/inv/InvProductDetailService.java b/src/main/java/com/glxp/api/service/inv/InvProductDetailService.java index ef8d137a4..da1b00c46 100644 --- a/src/main/java/com/glxp/api/service/inv/InvProductDetailService.java +++ b/src/main/java/com/glxp/api/service/inv/InvProductDetailService.java @@ -47,7 +47,7 @@ public interface InvProductDetailService { void setOrderInfo(InvProductDetailResponse response); - int vailStockCount(Long relId, String invStorageCode, String invWarehouseCode, String invSpaceCode); + int vailStockCount(Long relId, String batchNo, String supId, String deptCode, String invCode, String invSpaceCode); } diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvProductDetailServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvProductDetailServiceImpl.java index 9984f516f..3c162f23a 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvProductDetailServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvProductDetailServiceImpl.java @@ -131,19 +131,21 @@ public class InvProductDetailServiceImpl implements InvProductDetailService { @Override - public int vailStockCount(Long relId, String deptCode, String invCode, String invSpaceCode) { + public int vailStockCount(Long relId, String batchNo, String supId, String deptCode, String invCode, String invSpaceCode) { if (relId == null) { return 0; } List datas = - invProductDetailDao.selectList(new QueryWrapper().eq("relId", relId).eq("deptCode", deptCode).eq("invCode", invCode).eq("invSpaceCode", invSpaceCode)); + invProductDetailDao.selectList(new QueryWrapper().eq("relId", relId).eq(StrUtil.isNotEmpty(batchNo), "batchNo", batchNo) + .isNull(StrUtil.isEmpty(batchNo), "batchNo").eq(StrUtil.isNotEmpty(supId),"supId", supId).eq("deptCode", deptCode).eq("invCode", invCode).eq(StrUtil.isNotEmpty(invSpaceCode), "invSpaceCode", invSpaceCode)); + int count = 0; if (CollUtil.isNotEmpty(datas)) { for (InvProductDetailEntity invProductDetailEntity : datas) { if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_PUT)) - count = count + invProductDetailEntity.getCount(); + count = count + invProductDetailEntity.getReCount(); else { - count = count - invProductDetailEntity.getCount(); + count = count - invProductDetailEntity.getReCount(); } } } diff --git a/src/main/resources/mybatis/mapper/inout/IoOrderDao.xml b/src/main/resources/mybatis/mapper/inout/IoOrderDao.xml index 6a4e95353..8e7725bd8 100644 --- a/src/main/resources/mybatis/mapper/inout/IoOrderDao.xml +++ b/src/main/resources/mybatis/mapper/inout/IoOrderDao.xml @@ -73,6 +73,7 @@ AND orderType = #{orderType} + order by createTime desc diff --git a/src/main/resources/mybatis/mapper/inv/InvPreProductDetailDao.xml b/src/main/resources/mybatis/mapper/inv/InvPreProductDetailDao.xml index a44b17f39..1dc755be7 100644 --- a/src/main/resources/mybatis/mapper/inv/InvPreProductDetailDao.xml +++ b/src/main/resources/mybatis/mapper/inv/InvPreProductDetailDao.xml @@ -1,7 +1,6 @@ -