于继渤 2 سال پیش
والد
کامیت
83eee5813a

+ 15 - 0
src/main/java/com/dk/mdm/controller/ivt/inboundReturnController.java

@@ -80,4 +80,19 @@ public class inboundReturnController {
         return inboundReturnService.cancel(inboundVO);
     }
 
+
+    /**
+     * @desc : 编辑
+     * @date : 2022/6/28 16:58
+     * @author : 于继渤
+     */
+    @ApiOperation(
+            value = "编辑",
+            notes = "编辑"
+    )
+    @PostMapping("update")
+    public ResponseResultVO<String> update(@RequestBody InboundVO inboundVO) {
+        return inboundReturnService.update(inboundVO);
+    }
+
 }

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

@@ -25,6 +25,7 @@ public interface InboundItemMapper extends BaseMapper<InboundItem>{
      */
     List<InboundItemResponse> selectByCond(InboundItemQuery inboundItemQuery);
 
+
     /**
      * @desc   : 条件查询个数 (采购入库用)
      * @author : 常皓宁
@@ -61,5 +62,13 @@ public interface InboundItemMapper extends BaseMapper<InboundItem>{
 
     int updateIntoStatus(InboundItem inboundItem);
 
+
+    /**
+     * @desc   : 条件查询 --- 采购退货详情用
+     * @date   : 2024/3/23 9:24
+     * @author : 于继渤
+     */
+    List<InboundItemResponse> selectByInboundReturnCond(InboundItemQuery inboundItemQuery);
+
 }
 

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

@@ -92,6 +92,53 @@
         <result column="s_pur_id" property="sPurId" typeHandler="UuidTypeHandler"/>
         <result column="s_pur_item_id" property="sPurItemId" typeHandler="UuidTypeHandler"/>
     </resultMap>
+<!--    退货用-->
+    <resultMap id="BaseResultMapReturnResponse" type="com.dk.mdm.model.response.ivt.InboundItemResponse">
+        <id column="item_id" property="itemId"/>
+        <result column="into_id" property="intoId" typeHandler="UuidTypeHandler"/>
+        <result column="into_type" property="intoType"/>
+        <result column="from_id" property="fromId" typeHandler="UuidTypeHandler"/>
+        <result column="from_item_id" property="fromItemId" typeHandler="UuidTypeHandler"/>
+        <result column="item_index" property="itemIndex"/>
+        <result column="sku_id" property="skuId" typeHandler="UuidTypeHandler"/>
+        <result column="price_into" property="priceInto"/>
+        <result column="non_std_code" property="nonStdCode"/>
+        <result column="into_status" property="intoStatus"/>
+        <result column="intoing_qty" property="intoingQty"/>
+        <result column="intoing_amt" property="intoingAmt"/>
+        <result column="into_qty" property="intoQty"/>
+        <result column="into_amt" property="intoAmt"/>
+        <result column="return_qty" property="returnQty"/>
+        <result column="return_amt" property="returnAmt"/>
+        <result column="remarks" property="remarks"/>
+        <result column="inv_id" property="invId" typeHandler="UuidTypeHandler"/>
+        <result column="cost_price" property="costPrice"/>
+        <result column="cost_amt" property="costAmt"/>
+        <result column="out_qty" property="outQty"/>
+        <result column="inv_qty" property="invQty"/>
+        <result column="flg_valid" property="flgValid"/>
+        <result column="cp_id" property="cpId"/>
+        <result column="s_into_id" property="sIntoId" typeHandler="UuidTypeHandler"/>
+        <result column="s_into_item_id" property="sIntoItemId" typeHandler="UuidTypeHandler"/>
+        <result column="s_pur_id" property="sPurId" typeHandler="UuidTypeHandler"/>
+        <result column="s_pur_item_id" property="sPurItemId" typeHandler="UuidTypeHandler"/>
+
+        <result column="sIntoItemIntoingQty" property="sIntoItemIntoingQty"/>
+        <result column="sIntoItemIntoingAmt" property="sIntoItemIntoingAmt"/>
+        <result column="sIntoItemIntoQty" property="sIntoItemIntoQty"/>
+        <result column="sIntoItemIntoAmt" property="sIntoItemIntoAmt"/>
+        <result column="sIntoItemReturnQty" property="sIntoItemReturnQty"/>
+        <result column="sIntoItemReturnAmt" property="sIntoItemReturnAmt"/>
+
+
+        <result column="sPurItemIntoingQty" property="sPurItemIntoingQty"/>
+        <result column="sPurItemIntoingAmt" property="sPurItemIntoingAmt"/>
+        <result column="sPurItemIntoQty" property="sPurItemIntoQty"/>
+        <result column="sPurItemIntoAmt" property="sPurItemIntoAmt"/>
+        <result column="sPurItemReturnQty" property="sPurItemReturnQty"/>
+        <result column="sPurItemReturnAmt" property="sPurItemReturnAmt"/>
+
+    </resultMap>
 
     <!-- 通用条件列 -->
     <sql id="Condition">
@@ -403,5 +450,44 @@
         where item_id = #{itemId}::uuid
     </update>
 
+    <select id="selectByInboundReturnCond" resultMap="BaseResultMapReturnResponse">
+        SELECT
+        <include refid="Base_Column_List_Response"/>
+        ,tmgs.sku_code  as "skuCode"
+        ,tmgs.sku_model as "skuModel"
+        ,tmgs.sku_name  as "skuName"
+        ,tmgs.sku_spec  as "skuSpec"
+        ,tmgb.brand_name  as "brandName"
+        ,tmgb.short_name  as "shortName"
+        ,tmw.wh_id as "whId"
+        ,tmw.wh_code as "whCode"
+        ,tmw.wh_name as "whName"
+        ,tpsii.intoing_qty as "sIntoItemIntoingQty"
+        ,tpsii.intoing_amt as "sIntoItemIntoingAmt"
+        ,tpsii.into_qty as "sIntoItemIntoQty"
+        ,tpsii.into_amt as "sIntoItemIntoAmt"
+        ,tpsii.return_qty as "sIntoItemReturnQty"
+        ,tpsii.return_amt as "sIntoItemReturnAmt"
+
+        ,tppi.intoing_qty as "sPurItemIntoingQty"
+        ,tppi.intoing_amt as "sPurItemIntoingAmt"
+        ,tppi.into_qty as "sPurItemIntoQty"
+        ,tppi.into_amt as "sPurItemIntoAmt"
+        ,tppi.return_qty as "sPurItemReturnQty"
+        ,tppi.return_amt as "sPurItemReturnAmt"
+
+
+        FROM dkic_b.t_psi_inbound_item tpii
+        left join dkic_b.t_mst_goods_sku tmgs on tmgs.sku_id = tpii.sku_id
+        left join dkic_b.t_mst_goods_brand tmgb on tmgb.brand_id = tmgs.brand_id
+        left join dkic_b.t_psi_inventory tpi on tpi.inv_id = tpii.inv_id
+        left join dkic_b.t_mst_warehouse tmw on tmw.wh_id = tpii.wh_id
 
+        left join  dkic_b.t_psi_inbound_item  tpsii  on  tpsii.item_id = tpii.s_into_item_id
+        left join  dkic_b.t_psi_purchase_item  tppi  on  tppi.item_id = tpii.s_pur_item_id
+        <include refid="Condition"/>
+        <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
+            limit #{end} offset #{start}
+        </if>
+    </select>
 </mapper>

+ 39 - 0
src/main/java/com/dk/mdm/model/response/ivt/InboundItemResponse.java

@@ -318,6 +318,45 @@ public class InboundItemResponse  {
     private String inventoryDocCode;
 
 
+    @ApiModelProperty(value = "源入库单明细入库中数量")
+    private BigDecimal sIntoItemIntoingQty;
+
+    @ApiModelProperty(value = "源入库单明细入库中金额")
+    private BigDecimal sIntoItemIntoingAmt;
+
+    @ApiModelProperty(value = "源入库单明细入库数量")
+    private BigDecimal sIntoItemIntoQty;
+
+    @ApiModelProperty(value = "源入库单明细入库金额")
+    private BigDecimal sIntoItemIntoAmt;
+
+    @ApiModelProperty(value = "源入库单明细已入库退货数量")
+    private BigDecimal sIntoItemReturnQty;
+
+    @ApiModelProperty(value = "源入库单明细已入库退货金额")
+    private BigDecimal sIntoItemReturnAmt;
+
+
+    @ApiModelProperty(value = "源采购单明细入库中数量")
+    private BigDecimal sPurItemIntoingQty;
+
+    @ApiModelProperty(value = "源采购单明细入库中金额")
+    private BigDecimal sPurItemIntoingAmt;
+
+    @ApiModelProperty(value = "源采购单明细入库数量")
+    private BigDecimal sPurItemIntoQty;
+
+    @ApiModelProperty(value = "源采购单明细入库金额")
+    private BigDecimal sPurItemIntoAmt;
+
+    @ApiModelProperty(value = "源采购单明细已入库退货数量")
+    private BigDecimal sPurItemReturnQty;
+
+    @ApiModelProperty(value = "源采购单明细已入库退货金额")
+    private BigDecimal sPurItemReturnAmt;
+
+
+
     private static final long serialVersionUID = 1L;
 
 }

+ 137 - 110
src/main/java/com/dk/mdm/service/ivt/InboundReturnService.java

@@ -1,5 +1,6 @@
 package com.dk.mdm.service.ivt;
 
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.dk.common.infrastructure.annotaiton.Pagination;
 import com.dk.common.infrastructure.constant.Constant;
 import com.dk.common.infrastructure.enums.ErrorCodeEnum;
@@ -35,16 +36,14 @@ import com.dk.mdm.model.vo.ivt.InboundItemVO;
 import com.dk.mdm.model.vo.ivt.InboundVO;
 import com.dk.mdm.model.vo.ivt.IntoReturnVO;
 import com.dk.mdm.service.common.CommonService;
+import com.dk.mdm.service.ivt.inbound.InboundPurchaseReturnService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Service("inboundReturn")
 @Transactional
@@ -75,6 +74,8 @@ public class InboundReturnService extends BaseService<Inbound> {
 
     @Autowired
     private InboundItemConvert inboundItemConvert;
+    @Autowired
+    private InboundPurchaseReturnService inboundPurchaseReturnService;
 
     @Autowired
     private CommonMapper commonMapper;
@@ -97,7 +98,7 @@ public class InboundReturnService extends BaseService<Inbound> {
                     ErrorCodeEnum.INBOUND_CANNOT_BE_EMPTY.getMessage());
         }
         //查询明细
-        List<InboundItemResponse> inboundItemResponselist = inboundItemMapper.selectByCond(new InboundItemQuery().setIntoId(intoId));
+        List<InboundItemResponse> inboundItemResponselist = inboundItemMapper.selectByInboundReturnCond(new InboundItemQuery().setIntoId(intoId));
         inboundResponse.setGoodsList(inboundItemResponselist);
         return ResponseResultUtil.success(inboundResponse);
     }
@@ -131,6 +132,8 @@ public class InboundReturnService extends BaseService<Inbound> {
 
         //反写入库订单明细、反写订单明细
         for (InboundItemVO inboundItemVO : itemList) {
+            inboundItemVO.setReturnQty(inboundItemVO.getReturnQty().abs());
+            inboundItemVO.setReturnAmt(inboundItemVO.getReturnAmt().abs());
             //根据退货明细中入库明细id查询入库明细数据
             InboundItemResponse inboundItemResponse = inboundItemMapper.selectById(inboundItemVO.getItemId()); //原入库单明细id
             BigDecimal returnQty = inboundItemResponse.getReturnQty().add(inboundItemVO.getReturnQty().setScale(6, BigDecimal.ROUND_HALF_UP));
@@ -156,24 +159,12 @@ public class InboundReturnService extends BaseService<Inbound> {
                             .setItemId(inboundItemVO.getFromItemId())
                             .setReturnQty(purchaseItemResponse.getReturnQty().add(inboundItemVO.getReturnQty().setScale(6, BigDecimal.ROUND_HALF_UP)))
                             .setReturnAmt(purchaseItemResponse.getReturnAmt().add(inboundItemVO.getReturnAmt().setScale(6, BigDecimal.ROUND_HALF_UP)))
-
             );
         }
         inboundVO.setIntoingQty(inboundVO.getReturnQty().multiply(new BigDecimal(-1)));
         inboundVO.setIntoingAmt(inboundVO.getReturnAmt().multiply(new BigDecimal(-1)));
         List<InboundItemVO> list = new ArrayList<>();
         for (InboundItemVO inboundItemVO : inboundVO.getItemList()) {
-
-            inboundItemVO.setIntoingQty(inboundItemVO.getReturnQty().multiply(new BigDecimal(-1)));
-            inboundItemVO.setIntoingAmt(inboundItemVO.getReturnAmt().multiply(new BigDecimal(-1)));
-            inboundItemVO.setPriceInto(inboundItemVO.getPriceInto());
-            inboundItemVO.setFromItemId(inboundItemVO.getItemId());
-            inboundItemVO.setSkuId(inboundItemVO.getSkuId());
-            inboundItemVO.setItemIndex(inboundItemVO.getItemIndex());
-            inboundItemVO.setNonStdCode(inboundItemVO.getNonStdCode());
-            inboundItemVO.setReturnQty(inboundItemVO.getReturnQty());
-            inboundItemVO.setReturnAmt(inboundItemVO.getReturnAmt());
-
             //源入库单ID(采购退货时记录)
             inboundItemVO.setSIntoId(inboundItemVO.getIntoId());
             //源入库单明细ID(采购退货时记录)
@@ -182,97 +173,122 @@ public class InboundReturnService extends BaseService<Inbound> {
             inboundItemVO.setSPurId(inboundItemVO.getFromId());
             //源采购明细ID(采购退货时记录)
             inboundItemVO.setSPurItemId(inboundItemVO.getFromItemId());
+            inboundItemVO.setIntoingQty(inboundItemVO.getReturnQty().multiply(new BigDecimal(-1)));
+            inboundItemVO.setIntoingAmt(inboundItemVO.getReturnAmt().multiply(new BigDecimal(-1)));
+            inboundItemVO.setPriceInto(inboundItemVO.getPriceInto());
+            inboundItemVO.setFromItemId(inboundItemVO.getItemId());
+            inboundItemVO.setSkuId(inboundItemVO.getSkuId());
+            inboundItemVO.setItemIndex(inboundItemVO.getItemIndex());
+            inboundItemVO.setNonStdCode(inboundItemVO.getNonStdCode());
+            inboundItemVO.setReturnQty(inboundItemVO.getReturnQty().multiply(new BigDecimal(-1)));
+            inboundItemVO.setReturnAmt(inboundItemVO.getReturnAmt().multiply(new BigDecimal(-1)));
+
             inboundItemVO.setItemId(null);
             list.add(inboundItemVO);
         }
 
         inboundVO.setItemList(list);
-        Map<String, Object> map = new HashMap<>();
-        map.put("cpId", inboundVO.getCpId());
-        map.put("code", "IVT_001");
-        //自动办理标识
-        String flgHandleSetting = commonMapper.getSettingValue(map);
-        //自动办理标识为1 自动办理入库
-        if(Constant.FlgAutoHandleStringType.ONE.getValue().equals(flgHandleSetting)){
-            inboundVO.setFlgHandleSetting(Constant.FlgHandleSetting.TRUE.getValue());
-        }
-        //region  总单
-        //获取 id/单号
-        Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.SALERETURN.getName(), false);
-        inboundVO.setIntoId(codeMap.get("outId").toString()).
-                setIntoNo(codeMap.get("outNote").toString());
-        //入库类型
-        inboundVO.setIntoType(Constant.IntoType.PURRETURN_RETURN.getName());
-        //自动入库标识
-        if (inboundVO.getFlgAutoHandle()) {
-            //已入库
-            inboundVO.setIntoStatus(Constant.IntoStatus.YIRUKU.getName());
-        } else {
-            //入库中
-            inboundVO.setIntoStatus(Constant.IntoStatus.RUKUZHONG.getName());
-        }
-        //退货数量
-        inboundVO.setReturnQty(inboundVO.getIntoingQty());
-        //退货金额
-        inboundVO.setReturnAmt(inboundVO.getIntoingAmt());
-        //入库状态等于已入库 更新合计入库数量/金额 = 入库中数量/入库中金额
-        if (Constant.IntoStatus.YIRUKU.getName().equals(inboundVO.getIntoStatus())) {
-            inboundVO
-                    .setIntoQty(inboundVO.getIntoingQty())
-                    .setIntoAmt(inboundVO.getIntoingAmt())
-                    .setIntoingQty(BigDecimal.ZERO)
-                    .setIntoingAmt(BigDecimal.ZERO)
-            ;
-        } else {
-            inboundVO
-                    .setIntoQty(BigDecimal.ZERO)
-                    .setIntoAmt(BigDecimal.ZERO)
-            ;
-        }
+        inboundPurchaseReturnService.purchaseReturnInboundInsert(inboundVO);
+        return ResponseResultUtil.success();
+    }
+
+    /**
+     * @desc : 编辑
+     * @date : 2022/6/28 16:58
+     * @author : 于继渤
+     */
+    @Transactional(rollbackFor = {Exception.class})
+    public ResponseResultVO<String> update(InboundVO inboundVO) {
+        inboundVO.setReturnQty(inboundVO.getReturnQty().abs());
+        inboundVO.setReturnAmt(inboundVO.getReturnAmt().abs());
+        //查询编辑之前的采退单
+        InboundResponse inboundReturnResponse = inboundMapper.selectById(inboundVO.getIntoId());
+        inboundReturnResponse.setReturnQty(inboundReturnResponse.getReturnQty().abs());
+        inboundReturnResponse.setReturnAmt(inboundReturnResponse.getReturnAmt().abs());
+
+        inboundVO.setReturnAmt(inboundVO.getReturnAmt().abs());
+        //查询采购订单
+        PurchaseResponse purchaseResponse = purchaseMapper.selectById(inboundVO.getFromId());
+        //采购订单原始退货数量 - 原始退货单退货数量
+        BigDecimal purchaseReturnQty = purchaseResponse.getReturnQty().subtract(inboundReturnResponse.getReturnQty());
+        BigDecimal purchaseReturnAmt = purchaseResponse.getReturnAmt().subtract(inboundReturnResponse.getReturnAmt());
+        //反写采购订单已入库退货数量、金额
+        purchaseMapper.updateAmount(new Purchase().setPurId(inboundVO.getFromId())
+                .setReturnQty(purchaseReturnQty.add(inboundVO.getReturnAmt()))
+                .setReturnAmt(purchaseReturnAmt.add(inboundVO.getReturnQty()))
+        );
+
 
-        //实体转换
-        Inbound inbound = inboundConvert.convertToPo(inboundVO);
-        inboundMapper.insert(inbound);
-        //endregion
 
-        //region 明细
         //校验明细
-        if (inboundVO.getItemList().size() == 0) {
-            return ResponseResultUtil.error(ErrorCodeEnum.INBOUND_ITEM_NOT_EXIST.getCode(),
-                    ErrorCodeEnum.INBOUND_ITEM_NOT_EXIST.getMessage());
-        }
-        for (InboundItemVO inboundItemVO : inboundVO.getItemList()) {
-            //总单id
-            inboundItemVO.setIntoId(inboundVO.getIntoId());
-            //入库类型
-            inboundItemVO.setIntoType(inboundVO.getIntoType());
-            //入库状态等于已入库 更新合计入库数量/金额 = 入库中数量/入库中金额
-            if (Constant.IntoStatus.YIRUKU.getName().equals(inboundVO.getIntoStatus())) {
-                inboundItemVO
-                        .setIntoQty(inboundItemVO.getIntoingQty())
-                        .setIntoAmt(inboundItemVO.getIntoingAmt())
-                        .setIntoingQty(BigDecimal.ZERO)
-                        .setIntoingAmt(BigDecimal.ZERO)
-                        .setCostPrice(inboundItemVO.getPriceInto())
-                        .setCostAmt(inboundItemVO.getIntoQty().multiply(inboundItemVO.getPriceInto()).setScale(2, BigDecimal.ROUND_HALF_UP))
-                ;
-            } else {
-                inboundItemVO
-                        .setIntoQty(BigDecimal.ZERO)
-                        .setIntoAmt(BigDecimal.ZERO);
+        if(inboundVO.getItemList() != null &&  inboundVO.getItemList().size() > 0){
+            for (InboundItemVO inboundItemVO : inboundVO.getItemList()) {
+                InboundItemResponse inboundItemReturnResponse = inboundItemMapper.selectById(inboundItemVO.getSIntoItemId());
+                inboundItemReturnResponse.setReturnQty(inboundItemReturnResponse.getReturnQty().abs());
+                inboundItemReturnResponse.setReturnAmt(inboundItemReturnResponse.getReturnAmt().abs());
+                inboundItemVO.setReturnQty(inboundItemVO.getReturnQty().abs());
+                inboundItemVO.setReturnAmt(inboundItemVO.getReturnAmt().abs());
+                //查询采购订单明细数据
+                PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(inboundItemVO.getSPurItemId());
+                BigDecimal purchaseItemReturnQty = purchaseItemResponse.getReturnQty().subtract(inboundItemReturnResponse.getReturnQty());
+                BigDecimal purchaseItemReturnAmt = purchaseItemResponse.getReturnAmt().subtract(inboundItemReturnResponse.getReturnAmt());
+                //反写采购订单明细退货数量和退货金额
+                purchaseItemMapper.updateAmount(
+                        new PurchaseItem()
+                                .setItemId(inboundItemVO.getSPurItemId())
+                                .setReturnQty(purchaseItemReturnQty.add(inboundItemVO.getReturnQty().setScale(6, BigDecimal.ROUND_HALF_UP)))
+                                .setReturnAmt(purchaseItemReturnAmt.add(inboundItemVO.getReturnAmt().setScale(6, BigDecimal.ROUND_HALF_UP)))
+                );
+                //根据退货明细中入库明细id查询入库明细数据
+                InboundItemResponse inboundItemResponse = inboundItemMapper.selectById(inboundItemVO.getSIntoItemId());
+                BigDecimal inboundItemReturnQty = inboundItemResponse.getReturnQty().subtract(inboundItemReturnResponse.getReturnQty());
+                BigDecimal inboundItemReturnAmt = inboundItemResponse.getReturnAmt().subtract(inboundItemReturnResponse.getReturnAmt());
+
+
+                BigDecimal ReturnQty = inboundItemReturnQty.add(inboundItemVO.getReturnQty().setScale(6, BigDecimal.ROUND_HALF_UP));
+                BigDecimal ReturnAm = inboundItemReturnAmt.add(inboundItemVO.getReturnAmt().setScale(6, BigDecimal.ROUND_HALF_UP));
+                //反写原始入库单明细 不是负向的入库单
+                inboundItemMapper.updateAmount(
+                        new InboundItem()
+                                .setItemId(inboundItemResponse.getItemId())
+                                .setReturnQty(ReturnQty)
+                                .setReturnAmt(ReturnAm)
+                );
+                //反写原始入库单
+                InboundResponse inboundResponse = inboundMapper.selectById(inboundItemVO.getSIntoId());
+                BigDecimal inboundReturnQty = inboundResponse.getReturnQty().subtract(inboundItemReturnResponse.getReturnQty());
+                BigDecimal inboundReturnAmt = inboundResponse.getReturnAmt().subtract(inboundItemReturnResponse.getReturnAmt());
+                inboundMapper.updateAmount(new Inbound().setIntoId(inboundItemVO.getSIntoId())
+                        .setReturnQty(inboundReturnQty.add(inboundItemVO.getReturnQty()))
+                        .setReturnAmt(inboundReturnAmt.add(inboundItemVO.getReturnAmt())));
+
+                //修改采退明细
+                InboundItem inboundItem = new InboundItem();
+                inboundItem.setItemId(inboundItemVO.getItemId());
+                inboundItem.setReturnQty(inboundItemVO.getReturnQty().multiply(new BigDecimal(-1)));
+                inboundItem.setReturnAmt(inboundItemVO.getReturnAmt().multiply(new BigDecimal(-1)));
+                //修改
+                inboundItemMapper.update(inboundItem,
+                        new UpdateWrapper<InboundItem>().lambda()
+                                .eq(InboundItem::getItemId, UUID.fromString(inboundItem.getItemId()))
+                );
             }
-            //入库状态
-            inboundItemVO.setIntoStatus(inboundVO.getIntoStatus());
-            //实体转换
-            InboundItem inboundItem = inboundItemConvert.convertToPo(inboundItemVO);
-            inboundItemMapper.insert(inboundItem);
-            //endregion
-
         }
-        return ResponseResultUtil.success();
-    }
+
+        //修改采退总单
+        Inbound inbound = new Inbound();
+        inbound.setIntoId(inboundVO.getIntoId());
+        inbound.setReturnQty(inboundVO.getReturnQty().multiply(new BigDecimal(-1)));
+        inbound.setReturnAmt(inboundVO.getReturnAmt().multiply(new BigDecimal(-1)));
+        //修改
+        inboundMapper.update(inbound,
+                new UpdateWrapper<Inbound>().lambda().eq(Inbound::getIntoId, UUID.fromString(inbound.getIntoId()))
+        );
 
 
+        inboundPurchaseReturnService.purchaseReturnInboundUpdate(inboundVO);
+        return ResponseResultUtil.success();
+    }
     /**
      * @desc : 作废
      * @date : 2022/6/28 16:58
@@ -291,18 +307,16 @@ public class InboundReturnService extends BaseService<Inbound> {
 
         //region  查询当前公司的系统参数  自动办理信息  并赋值
         Map<String, Object> map = new HashMap<>();
-        map.put("cpId", inboundResponse.getCpId());
+        map.put("cpId", inboundVO.getCpId());
         map.put("code", "IVT_001");
         //自动办理标识
         String flgHandleSetting = commonMapper.getSettingValue(map);
         //自动办理标识为1 自动办理入库
         if(Constant.FlgAutoHandleStringType.ONE.getValue().equals(flgHandleSetting)){
-            inboundResponse.setFlgHandleSetting(Constant.FlgHandleSetting.TRUE.getValue());
+            inboundVO.setFlgHandleSetting(Constant.FlgHandleSetting.TRUE.getValue());
+            inboundVO.setFlgAutoHandle(Constant.FlgAutoHandle.TRUE.getValue());
         }
 
-
-
-
         //TODO  //系统参数自动出入库办理 已出库(未退款)可以作废,已出库(已退款)不可以作废
         if(inboundResponse.getFlgHandleSetting() &&  inboundResponse.getIntoStatus().equals(Constant.IntoStatus.YIRUKU.getName())){
             return ResponseResultUtil.error(ErrorCodeEnum.NO_WAIT_INTO_RETURN_CANCEL.getCode(),
@@ -320,11 +334,14 @@ public class InboundReturnService extends BaseService<Inbound> {
             return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ORIGINAL_DOCUMENT_ABSENT.getMessage());
         }
         //修改采购单 已入库数量/金额
+        //TODO 如果 退货存的 退货数量是负数的话
+        System.out.println(purchaseResponse.getReturnQty().subtract(inboundResponse.getReturnQty()));
+
         purchaseMapper.updateAmount(
-                new Purchase().setReturnQty(purchaseResponse.getReturnQty().subtract(inboundResponse.getReturnQty()))
-                        .setReturnAmt(purchaseResponse.getReturnAmt().subtract(inboundResponse.getReturnAmt())).setPurId(purchaseResponse.getPurId())
+                new Purchase().setReturnQty(purchaseResponse.getReturnQty().add(inboundResponse.getReturnQty()))
+                        .setReturnAmt(purchaseResponse.getReturnAmt().add(inboundResponse.getReturnAmt())).setPurId(purchaseResponse.getPurId())
         );
-
+        //查询退货明细
         List<InboundItemResponse> inboundItemResponses = inboundItemMapper.selectByCond(new InboundItemQuery().setIntoId(inboundResponse.getIntoId()));
         for (InboundItemResponse inboundItemRespons : inboundItemResponses) {
 
@@ -337,8 +354,8 @@ public class InboundReturnService extends BaseService<Inbound> {
             //修改入库单明细 已入库退货数量/金额
             inboundItemMapper.updateAmount(new InboundItem()
                     .setItemId(inboundItemResponse.getSIntoItemId())
-                    .setReturnQty(inboundItemResponse.getReturnQty().subtract(inboundItemResponse.getReturnQty()))
-                    .setReturnAmt(inboundItemResponse.getReturnAmt().subtract(inboundItemResponse.getReturnAmt()))
+                    .setReturnQty(inboundItemResponse.getReturnQty().add(inboundItemResponse.getReturnQty()))
+                    .setReturnAmt(inboundItemResponse.getReturnAmt().add(inboundItemResponse.getReturnAmt()))
             );
 
 
@@ -349,8 +366,8 @@ public class InboundReturnService extends BaseService<Inbound> {
                 return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ORIGINAL_DOCUMENT_ABSENT.getMessage());
             }
             inboundMapper.updateAmount(new Inbound().setIntoId(inboundRes.getIntoId())
-                    .setReturnQty(inboundResponse.getReturnQty().subtract(inboundItemRespons.getReturnQty()))
-                    .setReturnAmt(inboundResponse.getReturnAmt().subtract(inboundItemRespons.getReturnAmt())));
+                    .setReturnQty(inboundResponse.getReturnQty().add(inboundItemRespons.getReturnQty()))
+                    .setReturnAmt(inboundResponse.getReturnAmt().add(inboundItemRespons.getReturnAmt())));
 
 
             //查询采购单明细
@@ -363,8 +380,8 @@ public class InboundReturnService extends BaseService<Inbound> {
             purchaseItemMapper.updateAmount(
                     new PurchaseItem()
                             .setItemId(purchaseItemResponse.getItemId())
-                            .setReturnQty(purchaseItemResponse.getReturnQty().subtract(inboundItemRespons.getReturnQty()))
-                            .setReturnAmt(purchaseItemResponse.getReturnAmt().subtract(inboundItemRespons.getReturnAmt()))
+                            .setReturnQty(purchaseItemResponse.getReturnQty().add(inboundItemRespons.getReturnQty()))
+                            .setReturnAmt(purchaseItemResponse.getReturnAmt().add(inboundItemRespons.getReturnAmt()))
             );
         }
         //修改 负向入库单 状态为作废
@@ -377,6 +394,16 @@ public class InboundReturnService extends BaseService<Inbound> {
                 inboundItemMapper.updateIntoStatus(new InboundItem().setItemId(inboundItemRespons.getItemId()).setIntoStatus(Constant.IntoStatus.ZUOFEI.getName()));
             }
         }
+        inboundPurchaseReturnService.purchaseReturnInboundRepeal(inboundVO.getIntoId());
         return ResponseResultUtil.success();
     }
+
+
+
+
+    public static void main(String[] args) {
+        BigDecimal a = new BigDecimal(5);
+        BigDecimal b = new BigDecimal(-5);
+        System.out.println(a.add(b));
+    }
 }