于继渤 2 лет назад
Родитель
Сommit
7ad2a2aee3

+ 8 - 0
src/main/java/com/dk/mdm/controller/ivt/IntoReturnController.java

@@ -81,4 +81,12 @@ public class IntoReturnController{
     public ResponseResultVO<?> selectByUpdate(@PathVariable String id) {
         return intoReturnService.selectByUpdate(id);
     }
+
+
+    @ApiOperation(value = "编辑", notes = "编辑")
+    @PostMapping({"update"})
+    public ResponseResultVO<?> update(@RequestBody IntoReturnVO intoReturnVO) {
+        return intoReturnService.update(intoReturnVO);
+    }
+
 }

+ 3 - 0
src/main/java/com/dk/mdm/mapper/ivt/InboundItemMapper.java

@@ -47,6 +47,9 @@ public interface InboundItemMapper extends BaseMapper<InboundItem>{
     int  updateAmount(InboundItem inboundItem);
 
 
+    int  deleteByFromId(InboundItem inboundItem);
+
+
 
 }
 

+ 6 - 0
src/main/java/com/dk/mdm/mapper/ivt/InboundItemMapper.xml

@@ -266,4 +266,10 @@
     </update>
 
 
+    <delete id="deleteByFromId" parameterType="com.dk.mdm.model.pojo.ivt.InboundItem">
+
+        DELETE FROM dkic_b.t_psi_inbound_item WHERE from_item_id =  #{fromItemId}::uuid
+    </delete>
+
+
 </mapper>

+ 136 - 12
src/main/java/com/dk/mdm/service/ivt/IntoReturnService.java

@@ -196,7 +196,7 @@ public class IntoReturnService extends BaseService<IntoReturn> {
         inboundVO.setIntoingAmt(intoReturnVO.getSumAmount().multiply(new BigDecimal(-1)));
         List<InboundItemVO> list = new ArrayList<>();
         for (IntoReturnItemVO intoReturnItemVO : intoReturnItemVOList) {
-            System.out.println("'id==='"+intoReturnItemVO.getItemId());
+            System.out.println("'id==='" + intoReturnItemVO.getItemId());
             InboundItemVO inboundItemVO = new InboundItemVO();
             inboundItemVO.setIntoingQty(intoReturnItemVO.getItemQty().multiply(new BigDecimal(-1)));
             inboundItemVO.setIntoingAmt(intoReturnItemVO.getItemAmt().multiply(new BigDecimal(-1)));
@@ -296,7 +296,7 @@ public class IntoReturnService extends BaseService<IntoReturn> {
 //            } else {
 //                intoReturnItemVO.setOutingQty(intoReturnItemVO.getItemQty());
 //                intoReturnItemVO.setOutingAmt(intoReturnItemVO.getItemAmt());
-                intoReturnItemVO.setOutStatus(Constant.OutStatus.CHUKUZHONG.getName());
+            intoReturnItemVO.setOutStatus(Constant.OutStatus.CHUKUZHONG.getName());
 //            }
 //            //新建明细
             IntoReturnItem intoReturnItem = intoReturnItemConvert.convertToPo(intoReturnItemVO);
@@ -307,7 +307,6 @@ public class IntoReturnService extends BaseService<IntoReturn> {
     }
 
 
-
     /**
      * @desc : 作废
      * @date : 2022/6/28 16:58
@@ -317,14 +316,14 @@ public class IntoReturnService extends BaseService<IntoReturn> {
     public ResponseResultVO<String> cancel(IntoReturnVO intoReturnVO) {
         //根据入库退货单id查询到退货单
         IntoReturnResponse intoReturnResponse = intoReturnMapper.selectById(intoReturnVO.getReturnId());
-        if(intoReturnResponse.getReturnStatus().equals(Constant.returnStatus.OUT_REJECT_STATUS_RIGHTING_NOT.getName())){
+        if (intoReturnResponse.getReturnStatus().equals(Constant.returnStatus.OUT_REJECT_STATUS_RIGHTING_NOT.getName())) {
             //当前单据已经作废,不能重复操
             return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISFLGVALID_FALSE.getMessage());
         }
 
         //查询入库单 修改 已入库退货数量/金额
         InboundResponse inboundResponse = inboundMapper.selectById(intoReturnVO.getIntoId());
-        if (inboundResponse == null ) {
+        if (inboundResponse == null) {
             //返回 单据所对应的原始单据不存在,请重新操作
             return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ORIGINAL_DOCUMENT_ABSENT.getMessage());
         }
@@ -334,7 +333,7 @@ public class IntoReturnService extends BaseService<IntoReturn> {
 
         //查询采购单
         PurchaseResponse purchaseResponse = purchaseMapper.selectById(intoReturnResponse.getPurId());
-        if (purchaseResponse == null ) {
+        if (purchaseResponse == null) {
             //返回 单据所对应的原始单据不存在,请重新操作
             return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ORIGINAL_DOCUMENT_ABSENT.getMessage());
         }
@@ -368,7 +367,7 @@ public class IntoReturnService extends BaseService<IntoReturn> {
                 );
                 //查询采购单明细
                 PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(intoReturnItemResponse.getPurId());
-                if (purchaseItemResponse == null ) {
+                if (purchaseItemResponse == null) {
                     //返回 单据所对应的原始单据不存在,请重新操作
                     return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ORIGINAL_DOCUMENT_ABSENT.getMessage());
                 }
@@ -396,11 +395,9 @@ public class IntoReturnService extends BaseService<IntoReturn> {
     }
 
 
-
-
     /**
-     * @desc   : 获取单据信息(编辑用)
-     * @date   : 2024/3/16 16:28
+     * @desc : 获取单据信息(编辑用)
+     * @date : 2024/3/16 16:28
      * @author : 于继渤
      */
     public ResponseResultVO<?> selectByUpdate(String id) {
@@ -408,7 +405,7 @@ public class IntoReturnService extends BaseService<IntoReturn> {
         //总单
         IntoReturnResponse intoReturnResponse = intoReturnMapper.selectByIntoReturnQuery(new IntoReturnQuery().setReturnId(id));
         //单据不存在
-        if(intoReturnResponse==null){
+        if (intoReturnResponse == null) {
             return ResponseResultUtil.error(ErrorCodeEnum.ORIGINAL_DOCUMENT_ABSENT.getCode(),
                     ErrorCodeEnum.ORIGINAL_DOCUMENT_ABSENT.getMessage());
         }
@@ -418,4 +415,131 @@ public class IntoReturnService extends BaseService<IntoReturn> {
         dataInfo.put("dataItem", intoReturnItemResponses);
         return ResponseResultUtil.success(dataInfo);
     }
+
+    /**
+     * @desc :出库中 编辑
+     * @date : 2024/3/16 16:28
+     * @author : 于继渤
+     */
+    @Transactional(
+            rollbackFor = {Exception.class}
+    )
+    public ResponseResultVO<?> update(IntoReturnVO intoReturnVO) {
+        //校验单据
+        if (intoReturnVO.getReturnId() == null) {
+            return ResponseResultUtil.error(ErrorCodeEnum.ORIGINAL_DOCUMENT_ABSENT.getCode(),
+                    ErrorCodeEnum.ORIGINAL_DOCUMENT_ABSENT.getMessage());
+        }
+        //非出库中单据不能编辑
+        if (intoReturnVO.getOutStatus().equals(Constant.OutStatus.YICHUKU.getName())) {
+            return ResponseResultUtil.error(ErrorCodeEnum.NO_WAIT_INTO_RETURN.getCode(),
+                    ErrorCodeEnum.NO_WAIT_INTO_RETURN.getMessage());
+        }
+        IntoReturn intoReturn = intoReturnConvert.convertToPo(intoReturnVO);
+        //查询原始退货总单
+        IntoReturnResponse intoReturnResponse = intoReturnMapper.selectById(intoReturnVO.getReturnId());
+        //负数转正数
+        intoReturnVO.setSumQuantity(intoReturnVO.getSumQuantity().abs());
+        intoReturnVO.setSumAmount(intoReturnVO.getSumAmount().abs());
+        //查询采购订单
+        PurchaseResponse purchaseResponse = purchaseMapper.selectById(intoReturnVO.getPurId());
+        //采购订单原始退货数量 - 原始退货单退货数量
+        BigDecimal purchaseReturnQty = purchaseResponse.getReturnQty().subtract(intoReturnResponse.getSumQuantity());
+        BigDecimal purchaseReturnAmt = purchaseResponse.getReturnAmt().subtract(intoReturnResponse.getSumAmount());
+        //反写采购订单已入库退货数量、金额
+        purchaseMapper.updateAmount(new Purchase().setPurId(intoReturnVO.getPurId())
+                .setReturnQty(purchaseReturnQty.add(intoReturnVO.getSumQuantity()))
+                .setReturnAmt(purchaseReturnAmt.add(intoReturnVO.getSumAmount()))
+        );
+        //校验明细
+        if (intoReturnVO.getIntoReturnItemVOList() != null && intoReturnVO.getIntoReturnItemVOList().size() > 0) {
+
+            for (IntoReturnItemVO intoReturnItemVO : intoReturnVO.getIntoReturnItemVOList()) {
+                //负数转正数
+                intoReturnItemVO.setPriceReturn(intoReturnItemVO.getPriceReturn().abs());
+                intoReturnItemVO.setItemQty(intoReturnItemVO.getItemQty().abs());
+                intoReturnItemVO.setItemAmt(intoReturnItemVO.getItemAmt().abs());
+                //查询原始采购退货明细
+                IntoReturnItem intoReturnItem = intoReturnItemMapper.selectById(new IntoReturnItem().setItemId(intoReturnItemVO.getPurItemId()));
+                //查询采购订单明细数据
+                PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(intoReturnItemVO.getPurItemId());
+                BigDecimal purchaseItemReturnQty = purchaseItemResponse.getReturnQty().subtract(intoReturnItem.getItemQty());
+                BigDecimal purchaseItemReturnAmt = purchaseItemResponse.getReturnAmt().subtract(intoReturnItem.getItemAmt());
+                //反写采购订单明细退货数量和退货金额
+                purchaseItemMapper.updateAmount(
+                        new PurchaseItem()
+                                .setItemId(intoReturnItemVO.getPurItemId())
+                                .setReturnQty(purchaseItemReturnQty.add(intoReturnItemVO.getItemQty().setScale(6, BigDecimal.ROUND_HALF_UP)))
+                                .setReturnAmt(purchaseItemReturnAmt.add(intoReturnItemVO.getItemAmt().setScale(6, BigDecimal.ROUND_HALF_UP)))
+
+                );
+                //根据退货明细中入库明细id查询入库明细数据
+                InboundItemResponse inboundItemResponse = inboundItemMapper.selectById(intoReturnItemVO.getIntoItemId());
+                BigDecimal inboundItemReturnQty = inboundItemResponse.getReturnQty().subtract(intoReturnItem.getItemQty());
+                BigDecimal inboundItemReturnAmt = inboundItemResponse.getReturnAmt().subtract(intoReturnItem.getItemAmt());
+
+
+                BigDecimal ReturnQty = inboundItemReturnQty.add(intoReturnItemVO.getItemQty().setScale(6, BigDecimal.ROUND_HALF_UP));
+                BigDecimal ReturnAm = inboundItemReturnAmt.add(intoReturnItemVO.getItemAmt().setScale(6, BigDecimal.ROUND_HALF_UP));
+                //反写原始入库单明细 不是负向的入库单
+                inboundItemMapper.updateAmount(
+                        new InboundItem()
+                                .setItemId(inboundItemResponse.getItemId())
+                                .setReturnQty(ReturnQty)
+                                .setReturnAmt(ReturnAm)
+                );
+                //反写原始入库单
+                InboundResponse inboundResponse = inboundMapper.selectById(intoReturnItemVO.getIntoId());
+                BigDecimal inboundReturnQty = inboundResponse.getReturnQty().subtract(intoReturnItem.getItemQty());
+                BigDecimal inboundReturnAmt = inboundResponse.getReturnAmt().subtract(intoReturnItem.getItemAmt());
+                inboundMapper.updateAmount(new Inbound().setIntoId(intoReturnItemVO.getIntoId())
+                        .setReturnQty(inboundReturnQty.add(intoReturnItemVO.getItemQty()))
+                        .setReturnAmt(inboundReturnAmt.add(intoReturnItemVO.getItemAmt())));
+
+                //新建编辑操作
+                if (intoReturnItemVO.getItemId() != null) {
+                    //编辑明细
+                    intoReturnItemMapper.updateById(intoReturnItem);
+                } else {
+                    Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.PURCHASEOUT.getName(), false);
+                    intoReturnItem.setItemId(codeMap.get("outId").toString());
+                    intoReturnItemMapper.insert(intoReturnItem);
+                }
+            }
+        }
+        intoReturnMapper.updateById(intoReturn);
+        //生成逆向  负数的 入库单
+        InboundVO inboundVO = new InboundVO();
+        //自动标识
+        inboundVO.setAutomaticFlg(intoReturnVO.getAutomaticFlg());
+        inboundVO.setFromId(intoReturnVO.getReturnId());
+        inboundVO.setFromNo(intoReturnVO.getReturnNo());
+        inboundVO.setStaffId(intoReturnVO.getStaffId());
+        inboundVO.setOrgId(intoReturnVO.getOrgId());
+        inboundVO.setMakeStaff(authUtils.getStaff().getStaffId());
+        inboundVO.setMakeTime(LocalDateTime.now());
+        inboundVO.setIntoingQty(intoReturnVO.getSumQuantity().multiply(new BigDecimal(-1)));
+        inboundVO.setIntoingAmt(intoReturnVO.getSumAmount().multiply(new BigDecimal(-1)));
+        List<InboundItemVO> list = new ArrayList<>();
+        for (IntoReturnItemVO intoReturnItemVO : intoReturnVO.getIntoReturnItemVOList()) {
+            //删除原始负数入库单
+            if (intoReturnItemVO.getFromItemId() != null) {
+                inboundItemMapper.deleteByFromId(new InboundItem().setFromItemId(intoReturnItemVO.getItemId()));
+            }
+            InboundItemVO inboundItemVO = new InboundItemVO();
+            inboundItemVO.setIntoingQty(intoReturnItemVO.getItemQty().multiply(new BigDecimal(-1)));
+            inboundItemVO.setIntoingAmt(intoReturnItemVO.getItemAmt().multiply(new BigDecimal(-1)));
+            inboundItemVO.setPriceInto(intoReturnItemVO.getPriceReturn());
+            inboundItemVO.setFromItemId(intoReturnItemVO.getItemId());
+            inboundItemVO.setSkuId(intoReturnItemVO.getSkuId());
+            inboundItemVO.setItemIndex(intoReturnItemVO.getItemIndex());
+            inboundItemVO.setNonStdCode(intoReturnItemVO.getNonStdCode());
+            inboundItemVO.setReturnQty(intoReturnItemVO.getItemQty());
+            inboundItemVO.setReturnAmt(intoReturnItemVO.getItemAmt());
+            list.add(inboundItemVO);
+        }
+        inboundVO.setItemList(list);
+        inboundPurchaseReturnService.purchaseReturnInboundInsert(inboundVO);
+        return ResponseResultUtil.success();
+    }
 }