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 33c79085..fcf96319 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoOrderController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoOrderController.java @@ -688,6 +688,46 @@ public class IoOrderController extends BaseController { return ResultVOUtils.success(); } + + /** + * 1、根据 billNo 查找出当前退货单的io_order 、 io_order_detail_biz 、 io_order_detail_code 、 io_code + * 2、新增io_order 生产新的billNo + * 3、复制新的io_order_detail_biz 、 io_order_detail_code 绑定新billNo + * 4、复制io_code 到新billNo的io_code_temp + * + */ + @AuthRuleAnnotation("") + @PostMapping("/udiwms/inout/order/copyOrder") + @Log(title = "单据管理", businessType = BusinessType.INSERT) + public BaseResponse copyOrder(@RequestBody IoOrderEntity ioOrderEntity) { + if ( null == ioOrderEntity || StrUtil.isEmpty(ioOrderEntity.getBillNo()) ) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + } + + String oldBillNo = ioOrderEntity.getBillNo(); + IoOrderEntity oldIoOrderEntity = orderService.findByBillNo(oldBillNo); + if (Objects.isNull(oldIoOrderEntity)){ + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + } + + //新单号 + String newBillNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER, "yyyyMMdd")); + //当前操作人 + AuthAdmin authAdmin = getUser(); + //处理io_order + IoOrderEntity newIoOrderEntity = new IoOrderEntity(); + orderService.copyOrder(authAdmin,newBillNo,newIoOrderEntity,oldIoOrderEntity); + orderService.insertOrder(newIoOrderEntity); + //处理io_order_detail_biz + orderDetailBizService.copyOrderDetailBiz(newBillNo,oldBillNo); + //处理io_order_detail_code + orderDetailCodeService.copyOrderDetailCode(newBillNo,oldBillNo); + //处理io_code + codeTempService.copyCodeTemp(newBillNo,oldBillNo); + + return ResultVOUtils.success(newBillNo); + } + @Resource SpsSyncWebSocket webSocketServer; // --------------------------------------------------------UDI_MS平台-------------------------------------------------------------------------------------- diff --git a/src/main/java/com/glxp/api/service/inout/IoCodeTempService.java b/src/main/java/com/glxp/api/service/inout/IoCodeTempService.java index 2fd8454f..07b243fc 100644 --- a/src/main/java/com/glxp/api/service/inout/IoCodeTempService.java +++ b/src/main/java/com/glxp/api/service/inout/IoCodeTempService.java @@ -42,4 +42,12 @@ public interface IoCodeTempService { Boolean checkTempCode(IoCodeTempEntity ioCodeTempEntity); boolean isExit(String orderId); + + /** + * 复制单据内容 + * @param newBillNo + * @param oldBillNo + * @return + */ + boolean copyCodeTemp(String newBillNo, String oldBillNo); } diff --git a/src/main/java/com/glxp/api/service/inout/IoOrderDetailBizService.java b/src/main/java/com/glxp/api/service/inout/IoOrderDetailBizService.java index 22082b4a..c0e9fe2c 100644 --- a/src/main/java/com/glxp/api/service/inout/IoOrderDetailBizService.java +++ b/src/main/java/com/glxp/api/service/inout/IoOrderDetailBizService.java @@ -55,4 +55,10 @@ public interface IoOrderDetailBizService { Boolean updateOrderDetailBiz(IoOrderDetailBizEntity ioOrderDetailBizEntity); + /** + * 复制单据内容 + * @param newBillNo + * @param oldBillNo + */ + boolean copyOrderDetailBiz(String newBillNo, String oldBillNo); } diff --git a/src/main/java/com/glxp/api/service/inout/IoOrderDetailCodeService.java b/src/main/java/com/glxp/api/service/inout/IoOrderDetailCodeService.java index c4d9c2f4..ffeb4c1f 100644 --- a/src/main/java/com/glxp/api/service/inout/IoOrderDetailCodeService.java +++ b/src/main/java/com/glxp/api/service/inout/IoOrderDetailCodeService.java @@ -56,4 +56,11 @@ public interface IoOrderDetailCodeService { Boolean updateOrderDetailBiz(IoOrderDetailCodeEntity orderDetailCodeEntity); + /** + * 复制单据内容 + * @param newBillNo + * @param oldBillNo + * @return + */ + boolean copyOrderDetailCode(String newBillNo, String oldBillNo); } 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 203651bf..e68fffc4 100644 --- a/src/main/java/com/glxp/api/service/inout/IoOrderService.java +++ b/src/main/java/com/glxp/api/service/inout/IoOrderService.java @@ -1,6 +1,7 @@ package com.glxp.api.service.inout; import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.entity.auth.AuthAdmin; import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.req.inout.FilterOrderRequest; import com.glxp.api.req.inout.FilterUploadOrderRequest; @@ -127,4 +128,14 @@ public interface IoOrderService { boolean isExitByAction(String action); List selectList(Long userId); + + /** + * 复制单据内容 + * + * @param authAdmin + * @param newBillNo + * @param newIoOrderEntity + * @param oldIoOrderEntity + */ + boolean copyOrder(AuthAdmin authAdmin,String newBillNo, IoOrderEntity newIoOrderEntity, IoOrderEntity oldIoOrderEntity); } diff --git a/src/main/java/com/glxp/api/service/inout/impl/IoCodeTempServiceImpl.java b/src/main/java/com/glxp/api/service/inout/impl/IoCodeTempServiceImpl.java index 2c6e4b7a..a9d53c93 100644 --- a/src/main/java/com/glxp/api/service/inout/impl/IoCodeTempServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inout/impl/IoCodeTempServiceImpl.java @@ -1,20 +1,26 @@ package com.glxp.api.service.inout.impl; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.pagehelper.PageHelper; +import com.glxp.api.dao.inout.IoCodeDao; import com.glxp.api.dao.inout.IoCodeTempDao; +import com.glxp.api.entity.inout.IoCodeEntity; import com.glxp.api.entity.inout.IoCodeTempEntity; +import com.glxp.api.entity.inout.IoOrderDetailCodeEntity; import com.glxp.api.req.inout.FilterCodeRequest; import com.glxp.api.res.inout.IoCodeTempResponse; import com.glxp.api.service.inout.IoCodeTempService; import com.glxp.api.util.BeanCopyUtils; import com.glxp.api.util.page.PageQuery; import com.glxp.api.util.page.TableDataInfo; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; @Service @@ -24,6 +30,9 @@ public class IoCodeTempServiceImpl implements IoCodeTempService { @Resource IoCodeTempDao ioCodeTempDao; + @Resource + IoCodeDao ioCodeDao; + @Override public IoCodeTempEntity selectById(Integer id) { return ioCodeTempDao.selectById(id); @@ -108,4 +117,25 @@ public class IoCodeTempServiceImpl implements IoCodeTempService { return ioCodeTempDao.exists(new QueryWrapper().eq("orderId", orderId)); } + @Override + public boolean copyCodeTemp(String newBillNo, String oldBillNo) { + //获取旧列表数据 + FilterCodeRequest filterCodeRequest = new FilterCodeRequest(); + filterCodeRequest.setOrderId(oldBillNo); + List oldIoCodeEntityList = ioCodeDao.filterCodeList(filterCodeRequest); + if (CollUtil.isNotEmpty(oldIoCodeEntityList)){ + List newIoCodeTempEntityList = new ArrayList<>(oldIoCodeEntityList.size()); + //遍历修改新单号为新订单号 + oldIoCodeEntityList.forEach( x -> { + IoCodeTempEntity ioCodeTempEntity = new IoCodeTempEntity(); + BeanUtils.copyProperties(x,ioCodeTempEntity); + ioCodeTempEntity.setOrderId(newBillNo); + newIoCodeTempEntityList.add(ioCodeTempEntity); + }); + //批量插入 + ioCodeTempDao.insertBatch(newIoCodeTempEntityList); + } + return false; + } + } diff --git a/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailBizServiceImpl.java b/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailBizServiceImpl.java index 936a519a..d00be1c8 100644 --- a/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailBizServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailBizServiceImpl.java @@ -25,6 +25,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -212,4 +213,21 @@ public class IoOrderDetailBizServiceImpl implements IoOrderDetailBizService { return ioOrderDetailBizDao.updateById(ioOrderDetailBizEntity) > 0; } + @Override + public boolean copyOrderDetailBiz(String newBillNo, String oldBillNo) { + //获取旧列表数据 + List oldOrderDetailBiz = findByOrderIdAndNameCode(oldBillNo, false); + if (CollUtil.isNotEmpty(oldOrderDetailBiz)){ + List newOrderDetailBiz = new ArrayList<>(oldOrderDetailBiz.size()); + //遍历修改新单号为新订单号 + oldOrderDetailBiz.forEach( x -> { + x.setOrderIdFk(newBillNo); + newOrderDetailBiz.add(x); + }); + //批量插入 + ioOrderDetailBizDao.insertBatch(newOrderDetailBiz); + } + return false; + } + } diff --git a/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailCodeServiceImpl.java b/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailCodeServiceImpl.java index df0eeff4..2f0f7ed4 100644 --- a/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailCodeServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailCodeServiceImpl.java @@ -138,4 +138,21 @@ public class IoOrderDetailCodeServiceImpl implements IoOrderDetailCodeService { return ioOrderDetailCodeDao.updateById(orderDetailCodeEntity) > 0; } + @Override + public boolean copyOrderDetailCode(String newBillNo, String oldBillNo) { + //获取旧列表数据 + List oldOrderDetailCode = findByOrderId(oldBillNo); + if (CollUtil.isNotEmpty(oldOrderDetailCode)){ + List newOrderDetailCode = new ArrayList<>(oldOrderDetailCode.size()); + //遍历修改新单号为新订单号 + oldOrderDetailCode.forEach( x -> { + x.setOrderIdFk(newBillNo); + newOrderDetailCode.add(x); + }); + //批量插入 + ioOrderDetailCodeDao.insertBatch(newOrderDetailCode); + } + return false; + } + } 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 7f0b407f..25c5cec9 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 @@ -22,6 +22,7 @@ import com.glxp.api.dao.basic.BasicCorpDao; import com.glxp.api.dao.inout.IoOrderDao; import com.glxp.api.dao.thrsys.ThrSystemBusApiDao; import com.glxp.api.dao.thrsys.ThrSystemDao; +import com.glxp.api.entity.auth.AuthAdmin; import com.glxp.api.entity.basic.BasicBussinessTypeEntity; import com.glxp.api.entity.basic.BasicCorpEntity; import com.glxp.api.entity.inout.*; @@ -42,7 +43,9 @@ import com.glxp.api.service.inv.*; import com.glxp.api.service.inv.impl.InvProductDetailService; import com.glxp.api.service.system.SyncUploadDataBustypeService; import com.glxp.api.util.DateUtil; +import com.glxp.api.util.GennerOrderUtils; import com.glxp.api.util.IntUtil; +import com.glxp.api.util.OrderNoTypeBean; import com.glxp.api.util.udi.UdiCalCountUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.exception.ExceptionUtils; @@ -887,6 +890,25 @@ public class IoOrderServiceImpl implements IoOrderService { return ioOrderEntities; } + @Override + public boolean copyOrder(AuthAdmin authAdmin,String newBillNo, IoOrderEntity newIoOrderEntity, IoOrderEntity oldIoOrderEntity) { + newIoOrderEntity.setBillNo(newBillNo); + newIoOrderEntity.setMainAction(ConstantType.TYPE_OUT); + newIoOrderEntity.setFromCorp(oldIoOrderEntity.getFromCorp()); + newIoOrderEntity.setInvCode(oldIoOrderEntity.getInvCode()); + newIoOrderEntity.setDeptCode(oldIoOrderEntity.getDeptCode()); + newIoOrderEntity.setReplicateNo(oldIoOrderEntity.getReplicateNo()); + newIoOrderEntity.setFromType(ConstantStatus.FROM_WEBNEW);//网页新增 + newIoOrderEntity.setStatus(ConstantStatus.ORDER_STATUS_TEMP_SAVE);//草稿 + newIoOrderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_DRAFT);//草稿 + newIoOrderEntity.setCreateUser(authAdmin.getId() + ""); + newIoOrderEntity.setCreateTime(new Date()); + newIoOrderEntity.setUpdateUser(authAdmin.getId() + ""); + newIoOrderEntity.setUpdateTime(new Date()); + newIoOrderEntity.setOrderType(ConstantStatus.ORDER_TYPE_NORMAL);//正常单据处理 + return false; + } + /** * 查询此单据关联的所有单据 *