From d1d10bbd8f760a1c00528541fe4665b52fd3ef7c Mon Sep 17 00:00:00 2001 From: anthonywj Date: Sat, 4 Mar 2023 08:53:28 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/inout/IoOrderController.java | 9 +++-- .../inv/InvPreinOrderController.java | 38 +++++++++++++++++++ .../controller/inv/InvProductController.java | 9 ++++- .../glxp/api/entity/inout/IoCodeEntity.java | 7 +++- .../api/service/inout/IoAddInoutService.java | 5 +-- .../service/inout/IoCheckInoutService.java | 28 +++++++------- .../inout/impl/IoOrderServiceImpl.java | 36 +++++++++--------- 7 files changed, 91 insertions(+), 41 deletions(-) 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 623e32407..b54a077c7 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoOrderController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoOrderController.java @@ -95,12 +95,13 @@ public class IoOrderController extends BaseController { return ResultVOUtils.error(500, orderDetailBizEntity.getCoName() + "该产品未指定供应商!"); } if (orderDetailBizEntity.getCount() == 0) { - return ResultVOUtils.error(500, orderDetailBizEntity.getCoName() + "产品数量不能为0"); + return ResultVOUtils.error(500, orderDetailBizEntity.getCoName() + "产品数量不能为0!"); + } + if (StrUtil.isEmpty(orderDetailBizEntity.getBatchNo()) && StrUtil.isEmpty(orderDetailBizEntity.getProductDate()) && StrUtil.isEmpty(orderDetailBizEntity.getExpireDate())) { + return ResultVOUtils.error(500, orderDetailBizEntity.getCoName() + "三期不能全为空!"); } -// if(orderDetailBizEntity.) } - IoOrderEntity orderEntity = orderService.findByBillNo(addOrderRequest.getBillNo()); ioAddInoutService.dealBusProcess(orderEntity); return ResultVOUtils.success("提交成功!"); @@ -167,7 +168,7 @@ public class IoOrderController extends BaseController { List orderDetailCodeEntities = orderDetailCodeService.findByOrderId(addOrderRequest.getBillNo()); if (CollUtil.isEmpty(orderDetailCodeEntities)) { - return ResultVOUtils.error(500, "单据还未扫码!"); + return ResultVOUtils.error(500, "单据还未扫码或UDI码存在异常无法提交!"); } if (checkInoutService.checkManual(addOrderRequest.getBillNo())) { diff --git a/src/main/java/com/glxp/api/controller/inv/InvPreinOrderController.java b/src/main/java/com/glxp/api/controller/inv/InvPreinOrderController.java index 3d198ea7d..6aaf68c4a 100644 --- a/src/main/java/com/glxp/api/controller/inv/InvPreinOrderController.java +++ b/src/main/java/com/glxp/api/controller/inv/InvPreinOrderController.java @@ -6,14 +6,20 @@ import com.glxp.api.annotation.AuthRuleAnnotation; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.controller.BaseController; +import com.glxp.api.entity.basic.UdiEntity; +import com.glxp.api.entity.inout.IoCodeTempEntity; +import com.glxp.api.entity.inv.InvPreinDetailEntity; +import com.glxp.api.entity.inv.InvProductDetailEntity; import com.glxp.api.req.inv.FilterInvPreinDetailRequest; import com.glxp.api.req.inv.FilterInvPreinRequest; +import com.glxp.api.req.inv.FilterInvProductDetailRequest; import com.glxp.api.req.system.DeleteRequest; import com.glxp.api.res.inv.InvPreinDetailResponse; import com.glxp.api.res.inv.InvPreinOrderResponse; import com.glxp.api.service.inv.InvPreProductDetailService; import com.glxp.api.service.inv.InvPreinDetailService; import com.glxp.api.service.inv.InvPreinOrderService; +import com.glxp.api.util.udi.FilterUdiUtils; import lombok.extern.slf4j.Slf4j; import org.apache.regexp.RE; import org.springframework.web.bind.annotation.GetMapping; @@ -62,4 +68,36 @@ public class InvPreinOrderController extends BaseController { } + + @AuthRuleAnnotation("") + @GetMapping("spms/prein/inv/products/getDetaiByCode") + public BaseResponse getDetaiByCode(FilterInvProductDetailRequest filterInvProductDetailRequest) { + InvPreinDetailEntity invProductDetailEntity = invPreinDetailService.findOneByCode(filterInvProductDetailRequest.getCode()); + if (invProductDetailEntity == null) { + return ResultVOUtils.error(500, "预验收库存未存在此产品!"); + } else { + if (StrUtil.isNotEmpty(invProductDetailEntity.getBatchNo()) && StrUtil.isNotEmpty(filterInvProductDetailRequest.getBatchNo()) + && !invProductDetailEntity.getBatchNo().equals(filterInvProductDetailRequest.getBatchNo())) { + return ResultVOUtils.error(500, "当前批次号与预验收录入批次号不匹配!"); + } + UdiEntity udiEntity = FilterUdiUtils.getUdi(filterInvProductDetailRequest.getCode()); + if (StrUtil.isEmpty(udiEntity.getSerialNo())) {//该单据已有该产品 + //无序列号,则可能存在多个预验收入库单 + List invPreinDetailEntities = invPreinDetailService.findByCode(filterInvProductDetailRequest.getCode()); + int count = 0; + for (InvPreinDetailEntity temp : invPreinDetailEntities) { + count = count + temp.getCount(); + } + invPreinDetailEntities.get(0).setCount(count); + return ResultVOUtils.success(invPreinDetailEntities.get(0)); + } else { + if (invProductDetailEntity.getCount() < 1) { + return ResultVOUtils.error(500, "超出预验收库存数量"); + } + } + } + + return ResultVOUtils.success(invProductDetailEntity); + } + } 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 e78e11ba6..3595e4427 100644 --- a/src/main/java/com/glxp/api/controller/inv/InvProductController.java +++ b/src/main/java/com/glxp/api/controller/inv/InvProductController.java @@ -223,9 +223,14 @@ public class InvProductController { @AuthRuleAnnotation("") @GetMapping("spms/inv/products/vailInvCount") public BaseResponse vailInvCount(FilterInvProductDetailRequest filterInvProductDetailRequest) { - int count = 0; -// invProductDetailService.vailStockCount(filterInvProductDetailRequest.getCode()); + if (StrUtil.isEmpty(filterInvProductDetailRequest.getRelId())) { + return ResultVOUtils.error(500, "产品ID不能为空"); + } + if (StrUtil.isEmpty(filterInvProductDetailRequest.getInvCode())) { + return ResultVOUtils.error(500, "当前仓库号不能为空"); + } + int count = invProductDetailService.vailStockCount(Long.parseLong(filterInvProductDetailRequest.getRelId()), filterInvProductDetailRequest.getBatchNo(), filterInvProductDetailRequest.getSupId(), filterInvProductDetailRequest.getDeptCode(), filterInvProductDetailRequest.getInvCode(), null); return ResultVOUtils.success(count); } diff --git a/src/main/java/com/glxp/api/entity/inout/IoCodeEntity.java b/src/main/java/com/glxp/api/entity/inout/IoCodeEntity.java index 2f9dd6baa..95686f2a1 100644 --- a/src/main/java/com/glxp/api/entity/inout/IoCodeEntity.java +++ b/src/main/java/com/glxp/api/entity/inout/IoCodeEntity.java @@ -4,13 +4,15 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; +import java.io.Serializable; import java.util.Date; @Data @TableName(value = "io_code") -public class IoCodeEntity { +public class IoCodeEntity implements Serializable { @TableId(value = "id", type = IdType.AUTO) private Integer id; @@ -140,12 +142,13 @@ public class IoCodeEntity { private int scanCount; + @JsonIgnore public int getMyCount() { if (count == null) return 0; return count; } - + @JsonIgnore public int getMyReCount() { if (reCount == null) { return 0; diff --git a/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java b/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java index 50722ef92..ef5664987 100644 --- a/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java @@ -66,6 +66,8 @@ public class IoAddInoutService { IoCheckInoutService ioCheckInoutService; @Resource SystemParamConfigService systemParamConfigService; + @Resource + IoOrderDetailBizService orderDetailBizService; //新增扫码单据处理 public void dealProcess(IoOrderEntity orderEntity) { @@ -268,7 +270,6 @@ public class IoAddInoutService { if (StrUtil.isEmpty(orderDetailBizEntity.getSupId())) { errMsg = errMsg + orderDetailBizEntity.getCoName() + "未绑定供应商;"; } - if (orderDetailBizEntity.getBindRlFk() == null) { errMsg = errMsg + orderDetailBizEntity.getCoName() + "未绑定耗材字典编码;"; } @@ -291,8 +292,6 @@ public class IoAddInoutService { } - @Resource - IoOrderDetailBizService orderDetailBizService; //生成扫码单据详情 public void genOrderDetailCode(IoOrderEntity orderEntity, IoCodeTempEntity codeTempEntity) { 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 c4a8f6cd7..36b205b85 100644 --- a/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java @@ -609,7 +609,6 @@ public class IoCheckInoutService { //预验收不删除单号,方便后续查询 if (bussinessTypeEntity.isPreInBack()) { //预验收如果带回,则清空相关预验收库存; -// invPreinOrderService.deleteByOrderId(preInEntity.getBillNo()); invPreinDetailService.deleteByOrderId(preInEntity.getBillNo()); } else { //预验收如果不带回,则清除已出库相关库存 for (IoCodeEntity codeEntity : codeList) { @@ -617,19 +616,22 @@ public class IoCheckInoutService { InvPreinDetailEntity invPreinDetailEntity = invPreinDetailService.findByCode(key, codeEntity.getCode()); 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); + if (count >= 0) { + 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 { 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 d859b7b5b..de875d90f 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 @@ -381,27 +381,28 @@ public class IoOrderServiceImpl implements IoOrderService { if (bussinessTypeEntity.isPreIn()) { invPreinOrderService.deleteByOrderId(billNo); invPreinDetailService.deleteByOrderId(billNo); - return true; - } - - List invProductDetailEntities = invProductDetailService.selectByOrderIdFk(billNo); - if (CollUtil.isNotEmpty(invProductDetailEntities)) { - for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) { - InvProductEntity invProductEntity = invProductService.selectByUnique(invProductDetailEntity.getRelId(), invProductDetailEntity.getBatchNo(), invProductDetailEntity.getSupId(), - invProductDetailEntity.getDeptCode(), invProductDetailEntity.getInvCode()); - - if (ConstantType.TYPE_PUT.equals(invProductDetailEntity.getMainAction())) { - int count = invProductEntity.getInCount() - invProductDetailEntity.getReCount(); - invProductEntity.setInCount(count); - } else if (ConstantType.TYPE_OUT.equals(invProductDetailEntity.getMainAction())) { - int count = invProductEntity.getOutCount() - invProductDetailEntity.getReCount(); - invProductEntity.setOutCount(count); + }else { + List invProductDetailEntities = invProductDetailService.selectByOrderIdFk(billNo); + if (CollUtil.isNotEmpty(invProductDetailEntities)) { + for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) { + InvProductEntity invProductEntity = invProductService.selectByUnique(invProductDetailEntity.getRelId(), invProductDetailEntity.getBatchNo(), invProductDetailEntity.getSupId(), + invProductDetailEntity.getDeptCode(), invProductDetailEntity.getInvCode()); + + if (ConstantType.TYPE_PUT.equals(invProductDetailEntity.getMainAction())) { + int count = invProductEntity.getInCount() - invProductDetailEntity.getReCount(); + invProductEntity.setInCount(count); + } else if (ConstantType.TYPE_OUT.equals(invProductDetailEntity.getMainAction())) { + int count = invProductEntity.getOutCount() - invProductDetailEntity.getReCount(); + invProductEntity.setOutCount(count); + } + invProductService.update(invProductEntity); } - invProductService.update(invProductEntity); + invProductDetailService.deleteByOrderId(billNo); } - invProductDetailService.deleteByOrderId(billNo); } + + orderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_POST); orderEntity.setStatus(ConstantStatus.ORDER_STATUS_CHECK_SUCCESS); orderEntity.setUpdateTime(new Date()); @@ -509,6 +510,7 @@ public class IoOrderServiceImpl implements IoOrderService { case Constant.ORDER_STATUS_NEW_ORDER: filterOrderRequest.setStatuses(Arrays.asList(1, 2, 4)); filterOrderRequest.setDealStatuses(Arrays.asList(1, 2)); + filterOrderRequest.setOrderType(ConstantStatus.ORDER_TYPE_NORMAL); break; case Constant.ORDER_STATUS_UN_CHECK: filterOrderRequest.setStatuses(Arrays.asList(3));