From 6fb648ea840f27dfe5f0a96208c3ce2b36608280 Mon Sep 17 00:00:00 2001 From: anthonywj Date: Thu, 23 Feb 2023 17:32:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=95=E6=8D=AE=E6=92=A4=E5=9B=9E=E7=9B=B8?= =?UTF-8?q?=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inout/IoCodeTempController.java | 2 +- .../controller/inout/IoOrderController.java | 34 +++++++- .../api/service/inout/IoOrderService.java | 5 ++ .../inout/impl/IoOrderServiceImpl.java | 79 +++++++++++++++++-- 4 files changed, 112 insertions(+), 8 deletions(-) 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 f9a895a67..2c903e14e 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java @@ -581,7 +581,7 @@ public class IoCodeTempController extends BaseController { orderEntity.setAction(bussinessTypeEntity.getAction()); orderEntity.setFromCorp(addOrderRequest.getFromCorp()); if (StrUtil.isNotEmpty(addOrderRequest.getFromInvCode())) { - InvWarehouseEntity invWarehouseEntity1 = invWarehouseService.findByInvSubByCode(addOrderRequest.getInvCode()); + InvWarehouseEntity invWarehouseEntity1 = invWarehouseService.findByInvSubByCode(addOrderRequest.getFromInvCode()); orderEntity.setFromDeptCode(invWarehouseEntity1.getParentId()); } orderEntity.setFromInvCode(addOrderRequest.getFromInvCode()); 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 c80c05f21..a376bf648 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoOrderController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoOrderController.java @@ -261,11 +261,43 @@ public class IoOrderController extends BaseController { @AuthRuleAnnotation("") @PostMapping("udiwms/inout/code/finish/delete") public BaseResponse deleteCodeById(@RequestBody IoCodeEntity codeEntity) { - orderService.deleteInvCode(codeEntity.getOrderId(), codeEntity.getCode()); return ResultVOUtils.success("删除成功!"); } + //已验收单据撤回 + @AuthRuleAnnotation("") + @GetMapping("/udiwms/stock/order/received/rollback") + public BaseResponse rollbackOrder(String billNo, Integer contrastStatus) { + if (StrUtil.isBlank(billNo)) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + } + IoOrderEntity orderEntity = orderService.findByBillNo(billNo); + if (StrUtil.isNotEmpty(orderEntity.getSupplementNo()) || StrUtil.isNotEmpty(orderEntity.getUllageSupNo())) { + return ResultVOUtils.error(500, "单据已补单,无法撤回!"); + } + boolean result = orderService.rollbackOrder(billNo); + if (result) { + return ResultVOUtils.success(); + } + return ResultVOUtils.error(ResultEnum.NOT_NETWORK, "撤回失败"); + } + + + //已校验单据撤回到等待处理 + @AuthRuleAnnotation("") + @GetMapping("/udiwms/inout/order/unReceive/rollback") + public BaseResponse rollUnReceivebackOrder(String billNo, Integer contrastStatus) { + if (StrUtil.isBlank(billNo)) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + } + boolean result = orderService.rollbackUnReOrder(billNo); + if (result) { + return ResultVOUtils.success("撤回成功!"); + } + return ResultVOUtils.error(ResultEnum.NOT_NETWORK, "撤回失败"); + } + //手持终端获取未处理业务单据进行校验 @AuthRuleAnnotation("") diff --git a/src/main/java/com/glxp/api/service/inout/IoOrderService.java b/src/main/java/com/glxp/api/service/inout/IoOrderService.java index ab081935b..f89ec669b 100644 --- a/src/main/java/com/glxp/api/service/inout/IoOrderService.java +++ b/src/main/java/com/glxp/api/service/inout/IoOrderService.java @@ -37,6 +37,9 @@ public interface IoOrderService { int deleteInvCode(String billNo, String code); + boolean rollbackOrder(String billNo); + + boolean rollbackUnReOrder(String billNo); /** * 查询单据列表 @@ -91,4 +94,6 @@ public interface IoOrderService { * @param orderEditRequest */ void updateOrderInfo(OrderEditRequest orderEditRequest); + + } 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 98e5ccb62..84b8cbb04 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 @@ -31,6 +31,7 @@ import com.glxp.api.service.inv.*; import com.glxp.api.util.DateUtil; import com.glxp.api.util.udi.UdiCalCountUtil; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -73,6 +74,10 @@ public class IoOrderServiceImpl implements IoOrderService { IoCodeService codeService; @Resource IoCodeTempService codeTempService; + @Resource + IoOrderDetailCodeService ioOrderDetailCodeService; + @Resource + IoOrderDetailResultService ioOrderDetailResultService; @Override public List selectAll() { @@ -210,12 +215,6 @@ public class IoOrderServiceImpl implements IoOrderService { return 0; } - - @Resource - IoOrderDetailCodeService ioOrderDetailCodeService; - @Resource - IoOrderDetailResultService ioOrderDetailResultService; - //单据编辑条码减一 @Override public int deleteInvCode(String billNo, String code) { @@ -337,6 +336,73 @@ public class IoOrderServiceImpl implements IoOrderService { return 0; } + + @Resource + InvPreinOrderService invPreinOrderService; + @Resource + InvPreinDetailService invPreinDetailService; + + //已验收单据撤回 + @Override + public boolean rollbackOrder(String billNo) { + + IoOrderEntity orderEntity = findByBillNo(billNo); + BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(orderEntity.getAction()); + + //预验收撤回---直接删除预验收库存 + 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); + } + invProductService.update(invProductEntity); + } + invProductDetailService.deleteByOrderId(billNo); + } + + orderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_POST); + orderEntity.setStatus(ConstantStatus.ORDER_STATUS_CHECK_SUCCESS); + orderEntity.setUpdateTime(new Date()); + update(orderEntity); + return false; + } + + @Override + public boolean rollbackUnReOrder(String billNo) { + + IoOrderEntity orderEntity = findByBillNo(billNo); + List codeEntityList = codeService.findByOrderId(billNo); + List codeTempEntities = new ArrayList<>(); + for (IoCodeEntity codeEntity : codeEntityList) { + IoCodeTempEntity codeTempEntity = new IoCodeTempEntity(); + BeanUtils.copyProperties(codeEntity, codeTempEntity); + codeTempEntity.setId(null); + codeTempEntities.add(codeTempEntity); + } + codeTempService.insertBatch(codeTempEntities); + codeService.deleteCodeByOrderId(billNo); + orderEntity.setStatus(ConstantStatus.ORDER_STATUS_CHECK); + orderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_POST); + orderEntity.setUpdateTime(new Date()); + update(orderEntity); + return true; + } + + @Override public List filterList(FilterOrderRequest filterOrderRequest) { if (null == filterOrderRequest) { @@ -476,6 +542,7 @@ public class IoOrderServiceImpl implements IoOrderService { orderDao.update(order, new QueryWrapper().in("billNo", orderEditRequest.getOrderIds())); } + /** * 查询此单据关联的所有单据 *