Răsfoiți Sursa

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/main/java/com/dk/mdm/mapper/pur/PurchaseMapper.java
#	src/main/java/com/dk/mdm/mapper/pur/PurchaseMapper.xml
dongke 2 ani în urmă
părinte
comite
f1f7bb0f9a

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

@@ -20,6 +20,8 @@ import org.springframework.web.bind.annotation.RestController;
 import io.swagger.annotations.Api;
 import com.dk.mdm.service.ivt.IntoReturnService;
 
+import java.util.List;
+
 @Api(tags = "入库退货API接口")
 @RestController
 @RequestMapping("/ivt/intoReturn")
@@ -56,4 +58,18 @@ public class IntoReturnController{
         return intoReturnService.insert(intoReturnVO);
     }
 
+
+    /**
+     * @desc   : 冲正
+     * @date   : 2023/10/17 11:29
+     * @author : 于继渤
+     */
+    @ApiOperation(
+            value = "冲正",
+            notes = "冲正"
+    )
+    @PostMapping("righting")
+    public ResponseResultVO<String> righting(@RequestBody IntoReturnVO intoReturnVO) {
+        return intoReturnService.righting(intoReturnVO.getPurId(),intoReturnVO.getIntoReturnIdList());
+    }
 }

+ 22 - 0
src/main/java/com/dk/mdm/controller/mst/MoneyAccountController.java

@@ -13,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import io.swagger.annotations.Api;
 import com.dk.mdm.service.mst.MoneyAccountService;
 
+import java.util.List;
 import java.util.Map;
 
 @Api(tags = "资金账户API接口")
@@ -104,5 +105,26 @@ public class MoneyAccountController{
         return this.getService().enable(id);
     }
 
+    /**
+     * @desc : 批量启用
+     * @author : 周兴
+     * @date : 2023/3/7 10:34
+     */
+    @ApiOperation(value = "批量启用", notes = "批量启用")
+    @PostMapping("enable_batch")
+    public ResponseResultVO<Boolean> enableBatch(@RequestBody List<String> ids) {
+        return this.getService().enableBatch(ids);
+    }
+
+    /**
+     * @desc : 批量停用
+     * @author : 周兴
+     * @date : 2023/3/7 10:34
+     */
+    @ApiOperation(value = "批量停用", notes = "批量停用")
+    @PostMapping("disable_batch")
+    public ResponseResultVO<Boolean> disableBatch(@RequestBody List<String> ids) {
+        return this.getService().disableBatch(ids);
+    }
 
 }

+ 9 - 1
src/main/java/com/dk/mdm/mapper/ivt/InboundMapper.xml

@@ -187,6 +187,10 @@
         <result column="price_purchase" property="pricePurchase"/>
         <result column="reject_qty" property="rejectQty"/>
         <result column="sku_images" property="skuImages"  typeHandler="JsonTypeHandler"/>
+        <result column="usable_qty" property="usable_qty"/>
+        <result column="inv_qty" property="invQty"/>
+        <result column="outing_qty" property="outingQty"/>
+
     </resultMap>
 
 
@@ -529,7 +533,10 @@
         tmgs.price_purchase AS  list_price_purchase,
         tmgs.sku_images AS  list_sku_images,
 
-        ( tpii.into_qty - tpii.return_qty)  AS list_reject_qty
+        ( tpii.into_qty + tpii.return_qty)  AS list_reject_qty,
+        tpit.usable_qty AS list_usable_qty,
+        tpit.inv_qty AS list_inv_qty,
+        tpit.outing_qty AS list_outing_qty
     </sql>
 
 
@@ -541,6 +548,7 @@
         FROM dkic_b.t_psi_inbound  tpi
         left join dkic_b.t_psi_inbound_item tpii  on tpi.into_id = tpii.into_id
         left join  dkic_b.t_mst_goods_sku  tmgs on tmgs.sku_id = tpii.sku_id
+        left join  dkic_b.t_psi_inventory  tpit on tpit.sku_id = tpii.sku_id
         <include refid="Condition_Join"/>
         <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
             limit #{end} offset #{start}

+ 4 - 0
src/main/java/com/dk/mdm/mapper/ivt/IntoReturnMapper.java

@@ -22,11 +22,15 @@ public interface IntoReturnMapper extends BaseMapper<IntoReturn>{
      */
     List<IntoReturnResponse> selectByCond(IntoReturnQuery intoReturnQuery);
 
+
     /**
      * @desc   : 查询个数
      * @author : 于继渤
      * @date   : 2024/2/28 9:48
      */
     Long countByCond(IntoReturnQuery intoReturnQuery);
+
+    List<IntoReturn> selectReturnList(List<String> intoReturnIdList);
+    IntoReturn selectReturnByRighting(String returnId);
 }
 

+ 39 - 15
src/main/java/com/dk/mdm/mapper/ivt/IntoReturnMapper.xml

@@ -5,7 +5,7 @@
     <!-- 通用设置 -->
     <!-- 通用查询列 -->
     <sql id="Base_Column_List">
-        return_id, return_no, return_type, into_id, pur_id, into_no, pur_no, org_id, staff_id, sup_id, contact_name, contact_phone, delivery_date, sum_quantity, sum_standard, sum_amount, sale_discount, return_status, out_status, outing_qty, outing_amt, out_qty, out_amt, amt_payable, amt_handle, amt_residue, remarks, annex_paths, make_staff, make_time, flg_valid, cp_id, op_create_time, op_create_user_id, op_update_time, op_update_user_id, op_app_code, op_timestamp, op_db_user
+        return_id, return_no, return_type,  pur_id, into_no, pur_no, org_id, staff_id, sup_id, contact_name, contact_phone, delivery_date, sum_quantity, sum_standard, sum_amount, sale_discount, return_status, out_status, outing_qty, outing_amt, out_qty, out_amt, amt_payable, amt_handle, amt_residue, remarks, annex_paths, make_staff, make_time, flg_valid, cp_id, op_create_time, op_create_user_id, op_update_time, op_update_user_id, op_app_code, op_timestamp, op_db_user
     </sql>
 
     <!-- 通用查询映射结果 -->
@@ -13,7 +13,7 @@
         <id column="return_id" property="returnId"/>
                 <result column="return_no" property="returnNo"/>
                 <result column="return_type" property="returnType"/>
-                <result column="into_id" property="intoId" typeHandler="UuidTypeHandler"/>
+
                 <result column="pur_id" property="purId" typeHandler="UuidTypeHandler"/>
                 <result column="into_no" property="intoNo"/>
                 <result column="pur_no" property="purNo"/>
@@ -55,7 +55,7 @@
 
 
     <sql id="Base_Column_List_Response">
-        tpir.return_id, tpir.return_no, tpir.return_type, tpir.into_id, tpir.pur_id, tpir.into_no, tpir.pur_no, tpir.org_id,
+        tpir.return_id, tpir.return_no, tpir.return_type,  tpir.pur_id, tpir.into_no, tpir.pur_no, tpir.org_id,
         tpir.staff_id, tpir.sup_id, tpir.contact_name, tpir.contact_phone, tpir.delivery_date, tpir.sum_quantity,
         tpir.sum_standard, tpir.sum_amount, tpir.sale_discount, tpir.return_status, tpir.out_status,
         tpir.outing_qty, tpir.outing_amt, tpir.out_qty, tpir.out_amt, tpir.amt_payable, tpir.amt_handle, tpir.amt_residue,
@@ -67,7 +67,6 @@
         <id column="return_id" property="returnId"/>
         <result column="return_no" property="returnNo"/>
         <result column="return_type" property="returnType"/>
-        <result column="into_id" property="intoId" typeHandler="UuidTypeHandler"/>
         <result column="pur_id" property="purId" typeHandler="UuidTypeHandler"/>
         <result column="into_no" property="intoNo"/>
         <result column="pur_no" property="purNo"/>
@@ -105,6 +104,9 @@
 
         <result column="org_name" property="orgName"/>
         <result column="org_code" property="orgCode"/>
+        <result column="return_address" property="returnAddress"/>
+        <result column="out_status_name" property="outStatusName"/>
+        <result column="return_status_name" property="returnStatusName"/>
 
     </resultMap>
 
@@ -118,9 +120,7 @@
             <if test="returnType != null and returnType != ''">
                 AND return_type = #{returnType}
             </if>
-            <if test="intoId != null and intoId != ''">
-                AND into_id = #{intoId}
-            </if>
+
             <if test="purId != null and purId != ''">
                 AND pur_id = #{purId}
             </if>
@@ -237,9 +237,7 @@
             <if test="returnType != null and returnType != ''">
                 AND tpir.return_type = #{returnType}
             </if>
-            <if test="intoId != null and intoId != ''">
-                AND tpir.into_id = #{intoId}
-            </if>
+
             <if test="purId != null and purId != ''">
                 AND tpir.pur_id = #{purId}
             </if>
@@ -324,7 +322,13 @@
             <if test="cpId != null">
                 AND tpir.cp_id = #{cpId}
             </if>
-
+            <!--退货单id集合-->
+            <if test="intoReturnIdList != null and intoReturnIdList.size() > 0">
+                AND tpir.return_id IN
+                <foreach collection="intoReturnIdList" index="index" item="item" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
         </where>
     </sql>
 
@@ -337,13 +341,15 @@
     </sql>
 
     <sql id="Base_Column_List_Join">
-
         tms.sup_name AS sup_name,
         tms.sup_code AS sup_code,
+        tms.return_address AS return_address,
         tmsf.staff_name AS staff_name,
         tmsf.staff_code AS staff_code,
         tmo.org_name AS org_name,
-        tmo.org_code AS org_code
+        tmo.org_code AS org_code,
+        tdk1.kind_name_i18n ->> 'zh_CN' AS out_status_name,
+        tdk2.kind_name_i18n ->> 'zh_CN' AS return_status_name
     </sql>
 
     <!-- 查询表t_psi_into_return,(条件查询+分页)列表 -->
@@ -355,6 +361,8 @@
         left join  dkic_b.t_mst_supplier tms  on  tms.sup_id = tpir.sup_id
         left join  dkic_b.t_mst_staff tmsf  on  tmsf.staff_id = tpir.staff_id
         left join  dkic_b.t_mst_org tmo  on  tmo.org_id = tpir.org_id
+        left join  sys.t_data_kind tdk1 on  tdk1.kind_code = tpir.out_status
+        left join  sys.t_data_kind tdk2 on  tdk2.kind_code = tpir.return_status
         <include refid="Condition_Response"/>
         <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
             limit #{end} offset #{start}
@@ -401,7 +409,6 @@
         <trim suffixOverrides=",">
             return_no,
             return_type,
-            into_id,
             pur_id,
             into_no,
             pur_no,
@@ -438,7 +445,6 @@
             <trim suffixOverrides=",">
                 #{item.returnNo},
                 #{item.returnType},
-                #{item.intoId}::uuid,
                 #{item.purId}::uuid,
                 #{item.intoNo},
                 #{item.purNo},
@@ -471,4 +477,22 @@
             )
         </foreach>
     </insert>
+
+
+    <!--查询采购退货数据List -->
+    <select id="selectReturnList" resultMap="BaseResultMapResponse" >
+        SELECT
+        <include refid="Base_Column_List_Join"/>
+        FROM dkic_b.t_psi_into_return  tpir
+        where tpir.return_id = any(#{returnId,typeHandler= UuidListTypeHandler})
+    </select>
+
+
+    <!-- 查询原始数据 冲正用-->
+    <select id="selectReturnByRighting" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM dkic_b.t_psi_into_return
+        where return_id =#{returnId}::uuid
+    </select>
 </mapper>

+ 4 - 0
src/main/java/com/dk/mdm/mapper/pur/PurchaseMapper.java

@@ -31,6 +31,7 @@ public interface PurchaseMapper extends BaseMapper<Purchase>{
      */
     Long countByCond(PurchaseQuery purchaseQuery);
 
+
     /**
      * @desc   : 根据id查询
      * @author : 常皓宁
@@ -52,5 +53,8 @@ public interface PurchaseMapper extends BaseMapper<Purchase>{
      */
     Long noStoredCountByCond(PurchaseQuery purchaseQuery);
 
+    int updateAmount(Purchase purchase);
+
+    Purchase selectPurchaseByRighting(PurchaseQuery purchaseQuery);
 }
 

+ 29 - 0
src/main/java/com/dk/mdm/mapper/pur/PurchaseMapper.xml

@@ -489,4 +489,33 @@
         <include refid="Condition_1"/>
     </select>
 
+
+    <update id="updateAmount" parameterType="com.dk.mdm.model.pojo.pur.Purchase">
+        update dkic_b.t_psi_purchase
+        <set>
+            <if test="returnQty!= null">
+                return_qty= #{returnQty},
+            </if>
+            <if test="returnAmt!= null">
+                return_amt = #{returnAmt},
+            </if>
+        </set>
+        where  pur_id = #{purId}::uuid
+    </update>
+
+
+
+    <!-- 查询原始数据 冲正用-->
+    <select id="selectPurchaseByRighting" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List_Left_join"/>
+        FROM dkic_b.t_psi_purchase tpp
+        <where>
+            <if test="orderId!=null">
+                tpp.pur_id = #{purId}::uuid
+            </if>
+
+        </where>
+    </select>
+
 </mapper>

+ 1 - 7
src/main/java/com/dk/mdm/model/pojo/ivt/IntoReturn.java

@@ -63,13 +63,7 @@ public class IntoReturn extends PageInfo<IntoReturn> implements Serializable {
     private String returnType;
 
 
-    /**
-     * 入库单
-     */
-    @Excel(name = "入库单")
-    @ApiModelProperty(value = "入库单")
-    @TableField(typeHandler = UuidTypeHandler.class)
-    private String intoId;
+
 
 
     /**

+ 6 - 17
src/main/java/com/dk/mdm/model/query/ivt/IntoReturnQuery.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.dk.common.infrastructure.annotaiton.ExportTitle;
 import com.dk.common.infrastructure.handler.JsonTypeHandler;
 import com.dk.common.infrastructure.handler.TimestampTypeHandler;
+import com.dk.common.infrastructure.handler.UuidListTypeHandler;
 import com.dk.common.infrastructure.handler.UuidTypeHandler;
 import com.dk.common.model.pojo.PageInfo;
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -22,6 +23,7 @@ import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  *  入库退货
@@ -64,13 +66,7 @@ public class IntoReturnQuery extends PageInfo<IntoReturnQuery> implements Serial
     private String returnType;
 
 
-    /**
-     * 入库单
-     */
-    @Excel(name = "入库单")
-    @ApiModelProperty(value = "入库单")
-    @TableField(typeHandler = UuidTypeHandler.class)
-    private String intoId;
+
 
 
     /**
@@ -371,16 +367,9 @@ public class IntoReturnQuery extends PageInfo<IntoReturnQuery> implements Serial
     private String opDbUser;
 
 
-    /*
-     * 相关属性
-     * @TableField(exist = false)
-     */
-
-    /*
-     * 关联属性 + 查询条件
-     * @TableField(exist = false)
-     */
-
+    @ApiModelProperty(value = "退货单id数组")
+    @TableField(typeHandler = UuidListTypeHandler.class)
+    private List<String> intoReturnIdList;
 
     private static final long serialVersionUID = 1L;
 

+ 7 - 7
src/main/java/com/dk/mdm/model/response/ivt/IntoReturnResponse.java

@@ -63,13 +63,7 @@ public class IntoReturnResponse  implements Serializable {
     private String returnType;
 
 
-    /**
-     * 入库单
-     */
-    @Excel(name = "入库单")
-    @ApiModelProperty(value = "入库单")
-    @TableField(typeHandler = UuidTypeHandler.class)
-    private String intoId;
+
 
 
     /**
@@ -323,8 +317,14 @@ public class IntoReturnResponse  implements Serializable {
     @ApiModelProperty(value = "部门编码")
     private String orgCode;
 
+    @ApiModelProperty(value = "供应商地址")
+    private String returnAddress;
 
+    @ApiModelProperty(value = "出库状态")
+    private String outStatusName;
 
+    @ApiModelProperty(value = "退货状态")
+    private String returnStatusName;
 
     private static final long serialVersionUID = 1L;
 

+ 1 - 7
src/main/java/com/dk/mdm/model/vo/ivt/InboundVO.java

@@ -42,13 +42,7 @@ public class InboundVO extends PageInfo<InboundVO> implements Serializable {
      * 数据库字段
      */
 
-    /**
-     * 入库单ID
-     */
-    @TableId(value = "into_id", type = IdType.AUTO)
-    @ApiModelProperty(value = "入库单ID")
-    @TableField(typeHandler = UuidTypeHandler.class)
-    private String intoId;
+
 
 
     /**

+ 4 - 9
src/main/java/com/dk/mdm/model/vo/ivt/IntoReturnItemVO.java

@@ -282,15 +282,10 @@ public class IntoReturnItemVO  implements Serializable {
     private String opDbUser;
 
 
-    /*
-     * 相关属性
-     * @TableField(exist = false)
-     */
-
-    /*
-     * 关联属性 + 查询条件
-     * @TableField(exist = false)
-     */
+    @Excel(name = "库存ID")
+    @ApiModelProperty(value = "库存ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String invId;
 
 
     private static final long serialVersionUID = 1L;

+ 6 - 0
src/main/java/com/dk/mdm/model/vo/ivt/IntoReturnVO.java

@@ -373,6 +373,12 @@ public class IntoReturnVO  implements Serializable {
     @ApiModelProperty(value = "退货明细")
     private List<IntoReturnItemVO> intoReturnItemVOList;
 
+
+    @ApiModelProperty(value = "退货单id数组")
+    private List<String> intoReturnIdList;
+
+
+
     private static final long serialVersionUID = 1L;
 
 }

+ 157 - 127
src/main/java/com/dk/mdm/service/ivt/IntoReturnService.java

@@ -1,5 +1,6 @@
 package com.dk.mdm.service.ivt;
 
+import com.alibaba.fastjson.JSONObject;
 import com.dk.common.infrastructure.annotaiton.Pagination;
 import com.dk.common.infrastructure.constant.Constant;
 import com.dk.common.infrastructure.enums.ErrorCodeEnum;
@@ -21,6 +22,7 @@ import com.dk.mdm.mapper.ivt.IntoReturnMapper;
 import com.dk.common.service.BaseService;
 import com.dk.common.mapper.BaseMapper;
 import com.dk.mdm.model.pojo.ivt.IntoReturnItem;
+import com.dk.mdm.model.pojo.pur.Purchase;
 import com.dk.mdm.model.pojo.pur.PurchaseItem;
 import com.dk.mdm.model.query.ivt.IntoReturnQuery;
 import com.dk.mdm.model.query.pur.PurchaseQuery;
@@ -79,14 +81,12 @@ public class IntoReturnService extends BaseService<IntoReturn> {
     private OutboundService outboundService;
 
     @Autowired
-    private InboundService inboundService;
-
-    @Autowired
     private InboundMapper inboundMapper;
 
     @Autowired
     private InboundItemMapper inboundItemMapper;
 
+
     /**
      * @desc : 查询
      * @author : 于继渤
@@ -106,83 +106,96 @@ public class IntoReturnService extends BaseService<IntoReturn> {
             rollbackFor = {Exception.class}
     )
     public ResponseResultVO<?> insert(IntoReturnVO intoReturnVO) {
-        //校验明细长度
-        List<IntoReturnItemVO> intoReturnItemVOList = intoReturnVO.getIntoReturnItemVOList();
-        //明细不存在
-        if (intoReturnItemVOList == null || intoReturnItemVOList.size() == 0) {
-            //返回 采购退货明细不可为空,请重新操作
-            return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.PURCHASE_RETURN_DETAIL_NOT_EXIST.getMessage());
-        }
-        //设置总单
-        intoReturnVO = this.insertTotal(intoReturnVO);
-        //设置明细
-        intoReturnItemVOList = this.insertDetail(intoReturnVO, intoReturnItemVOList);
-
-        //反写入库单 反写退货数量金额
-        Inbound inbound = inboundMapper.selectById(intoReturnVO.getIntoId());
-        inboundMapper.updateAmount(new Inbound().setIntoId(intoReturnVO.getIntoId())
-                .setReturnQty(inbound.getReturnQty().add(intoReturnVO.getSumQuantity()))
-                .setReturnAmt(inbound.getReturnAmt().add(intoReturnVO.getSumAmount())));
-
-
-        //反写入库订单明细、反写订单明细
-        for (IntoReturnItemVO intoReturnItemVO : intoReturnItemVOList) {
-
-            //根据退货明细中入库明细id查询入库明细数据
-            InboundItem inboundItem = inboundItemMapper.selectById(intoReturnItemVO.getIntoItemId());
-            inboundItemMapper.updateAmount(
-                    new InboundItem()
-                    .setItemId(inboundItem.getItemId())
-                    .setReturnQty(inboundItem.getReturnQty().add(intoReturnItemVO.getItemQty().setScale(6, BigDecimal.ROUND_HALF_UP)))
-                    .setReturnAmt(inboundItem.getReturnAmt().add(intoReturnItemVO.getItemAmt().setScale(6, BigDecimal.ROUND_HALF_UP)))
-            );
-            //TODO 反写订单出库明细 退货数量和退货金额
-            //查询采购订单明细数据
-            PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(intoReturnItemVO.getPurItemId());
-            //反写订单明细退货数量和退货金额
-            purchaseItemMapper.updateAmount(
-                    new PurchaseItem()
-                            .setItemId(intoReturnItemVO.getPurItemId())
-                            .setReturnQty(purchaseItemResponse.getReturnQty().add(intoReturnItemVO.getItemQty().setScale(6, BigDecimal.ROUND_HALF_UP)))
-                            .setReturnAmt(purchaseItemResponse.getReturnAmt().add(intoReturnItemVO.getItemAmt().setScale(6, BigDecimal.ROUND_HALF_UP)))
-
+            //校验明细长度
+            List<IntoReturnItemVO> intoReturnItemVOList = intoReturnVO.getIntoReturnItemVOList();
+            //明细不存在
+            if (intoReturnItemVOList == null || intoReturnItemVOList.size() == 0) {
+                //返回 采购退货明细不可为空,请重新操作
+                return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.PURCHASE_RETURN_DETAIL_NOT_EXIST.getMessage());
+            }
+            //查询采购订单
+            PurchaseResponse purchaseResponse = purchaseMapper.selectById(intoReturnVO.getPurId());
+            //设置总单
+            intoReturnVO = this.insertTotal(intoReturnVO, purchaseResponse);
+            //设置明细
+            intoReturnItemVOList = this.insertDetail(intoReturnVO, intoReturnItemVOList);
+
+
+            //反写采购订单已入库退货数量、金额
+            purchaseMapper.updateAmount(new Purchase().setPurId(intoReturnVO.getPurId())
+                    .setReturnQty(purchaseResponse.getReturnQty().add(intoReturnVO.getSumQuantity()))
+                    .setReturnAmt(purchaseResponse.getReturnAmt().add(intoReturnVO.getSumAmount()))
             );
-        }
-
-//        //新建出库单
-//        OutboundVO outboundVO = new OutboundVO();
-//        //来源ID
-//        outboundVO.setFromId(intoReturnVO.getReturnId());
-//        //来源单号
-//        outboundVO.setFromNo(intoReturnVO.getReturnNo());
-//        //部门
-//        outboundVO.setOrgId(intoReturnVO.getOrgId());
-//        //员工
-//        outboundVO.setStaffId(intoReturnVO.getStaffId());
-//        //供应商
-//        outboundVO.setSupId(intoReturnVO.getSupId());
-//        //出库状态
-//        outboundVO.setOutStatus("出库状态-出库中");
-//        outboundVO.setMakeStaff(authUtils.getStaff().getStaffId());
-//        outboundVO.setCpId(authUtils.getStaff().getCpId());
-//        List<OutboundItemVO> itemList = new ArrayList<>();
-//        Integer itemIndex = 0;
-//
-//        for (IntoReturnItemVO intoReturnItemVO : intoReturnItemVOList) {
-//            OutboundItemVO outboundItemVO = new OutboundItemVO();
-//            outboundItemVO.setSkuId(intoReturnItemVO.getSkuId());
-//            outboundItemVO.setItemIndex(itemIndex +1);
-//            outboundItemVO.setPriceOut(intoReturnItemVO.getPriceReturn());
-//            outboundItemVO.setInvId("10112024-0305-0000-0000-000009593bb6");
-//            itemList.add(outboundItemVO);
-//        }
-//
-//        outboundVO.setItemList(itemList);
-//
-//
-//
-//        outboundService.insert(outboundVO);
-
+            BigDecimal sumReturnQty = BigDecimal.ZERO;
+            BigDecimal sumReturnAmt = BigDecimal.ZERO;
+            //反写入库订单明细、反写订单明细
+            for (IntoReturnItemVO intoReturnItemVO : intoReturnItemVOList) {
+
+                //根据退货明细中入库明细id查询入库明细数据
+                InboundItem inboundItem = inboundItemMapper.selectById(intoReturnItemVO.getIntoItemId());
+                BigDecimal returnQty = inboundItem.getReturnQty().add(intoReturnItemVO.getItemQty().setScale(6, BigDecimal.ROUND_HALF_UP));
+                BigDecimal returnAmt = inboundItem.getReturnAmt().add(intoReturnItemVO.getItemAmt().setScale(6, BigDecimal.ROUND_HALF_UP));
+                sumReturnQty = sumReturnQty.add(returnQty);
+                sumReturnAmt = sumReturnAmt.add(returnAmt);
+                inboundItemMapper.updateAmount(
+                        new InboundItem()
+                                .setItemId(inboundItem.getItemId())
+                                .setReturnQty(returnQty)
+                                .setReturnAmt(returnAmt)
+                );
+                //TODO 反写订单出库明细 退货数量和退货金额
+                //查询采购订单明细数据
+                PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(intoReturnItemVO.getPurItemId());
+                //反写订单明细退货数量和退货金额
+                purchaseItemMapper.updateAmount(
+                        new PurchaseItem()
+                                .setItemId(intoReturnItemVO.getPurItemId())
+                                .setReturnQty(purchaseItemResponse.getReturnQty().add(intoReturnItemVO.getItemQty().setScale(6, BigDecimal.ROUND_HALF_UP)))
+                                .setReturnAmt(purchaseItemResponse.getReturnAmt().add(intoReturnItemVO.getItemAmt().setScale(6, BigDecimal.ROUND_HALF_UP)))
+
+                );
+            }
+            //反写入库单退货数量金额 todo
+            Inbound inbound = inboundMapper.selectById(intoReturnVO.getIntoId());
+            inboundMapper.updateAmount(new Inbound().setIntoId(intoReturnVO.getIntoId())
+                    .setReturnQty(inbound.getReturnQty().add(sumReturnQty))
+                    .setReturnAmt(inbound.getReturnAmt().add(sumReturnAmt)));
+            //新建出库单
+            OutboundVO outboundVO = new OutboundVO();
+            //来源ID
+            outboundVO.setFromId(intoReturnVO.getReturnId());
+            //来源单号
+            outboundVO.setFromNo(intoReturnVO.getReturnNo());
+            //部门
+            outboundVO.setOrgId(intoReturnVO.getOrgId());
+            //员工
+            outboundVO.setStaffId(intoReturnVO.getStaffId());
+            //出库状态 待出库
+            outboundVO.setOutStatus(Constant.OutStatus.DAICHUKU.getName());
+            //供应商
+            outboundVO.setSupId(intoReturnVO.getSupId());
+            outboundVO.setMakeStaff(authUtils.getStaff().getStaffId());
+            outboundVO.setCpId(authUtils.getStaff().getCpId());
+
+            outboundVO.setFromId(intoReturnVO.getReturnId());
+            List<OutboundItemVO> itemList = new ArrayList<>();
+            Integer itemIndex = 0;
+            for (IntoReturnItemVO intoReturnItemVO : intoReturnItemVOList) {
+                //来源单ID 入库退货
+                OutboundItemVO outboundItemVO = new OutboundItemVO();
+
+                outboundItemVO.setFromId(intoReturnItemVO.getReturnId());
+                outboundItemVO.setFromItemId(intoReturnItemVO.getItemId());
+                outboundItemVO.setSkuId(intoReturnItemVO.getSkuId());
+                outboundItemVO.setItemIndex(itemIndex + 1);
+                outboundItemVO.setPriceOut(intoReturnItemVO.getPriceReturn());
+                outboundItemVO.setInvId(intoReturnItemVO.getInvId());
+                itemList.add(outboundItemVO);
+            }
+
+            outboundVO.setItemList(itemList);
+            //新建出库单
+            outboundService.insertOutBound(outboundVO);
 
         return ResponseResultUtil.success();
     }
@@ -193,16 +206,16 @@ public class IntoReturnService extends BaseService<IntoReturn> {
      * @author : 于继渤
      */
     @Transactional(rollbackFor = {Exception.class})
-    public IntoReturnVO insertTotal(IntoReturnVO intoReturnVO) {
+    public IntoReturnVO insertTotal(IntoReturnVO intoReturnVO, PurchaseResponse purchaseResponse) {
         // 获取单号
         Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.OUTBOUND.getName(), false);
         intoReturnVO.setReturnId(codeMap.get("outId").toString()).setReturnNo(codeMap.get("outNote").toString())
                 .setReturnType(Constant.returnType.PURRETURN.getName());
-        //查询采购订单上的客户信息
-        PurchaseResponse purchaseResponse = purchaseMapper.selectById(intoReturnVO.getPurId());
+
         //部门Id
         intoReturnVO.setOrgId(purchaseResponse.getOrgId());
-        intoReturnVO.setReturnStatus("退货状态-通过");
+        //退货状态 通过
+        intoReturnVO.setReturnStatus(Constant.returnStatus.OUT_REJECT_STATUS_ADOPT.getName());
         //出库状态
         intoReturnVO.setOutStatus(Constant.OutStatus.DAICHUKU.getName());
         //制单员
@@ -257,53 +270,70 @@ public class IntoReturnService extends BaseService<IntoReturn> {
             IntoReturnItem intoReturnItem = intoReturnItemConvert.convertToPo(intoReturnItemVO);
             intoReturnItemService.insert(intoReturnItem);
 
-//			//已出库数量
-
-//			orderOutRejectItemVO.setOutOutQuantity(orderItem.getOutQuantity());
-//			//已出库金额
-//			orderOutRejectItemVO.setOutOutAmount(orderItem.getOutAmount());
-//			//已出库退货数量
-//			orderOutRejectItemVO.setOutRejectQuantity(orderItem.getRejectQuantity());
-//			//已出库退货金额
-//			orderOutRejectItemVO.setOutRejectAmount(orderItem.getRejectAmount());
-//			//退货差价
-//			orderOutRejectItemVO.setDifferencePrice(orderItem.getPriceSale().subtract(orderOutRejectItemVO.getOrderPriceSale()));
-//			//退货差额
-//			orderOutRejectItemVO.setDifferenceAmount(orderOutRejectItemVO.getDifferencePrice().multiply(orderOutRejectItemVO.getOutRejectQuantity()));
-//			// 出库中数量 - 已出库数量 < 本次出库数量
-//			if (orderOutRejectItemVO.getOutOutQuantity().add(orderOutRejectItemVO.getOutRejectQuantity()).compareTo(orderOutRejectItemVO.getRejectQuantity().negate()) == -1) {
-//				throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ORDER_GREATER_THAN_THE_REFUNDABLE_QUANTITY.getmessage());
-//			}
-//			//出库状态  出库中
-//			orderOutRejectItemVO.setOutStatus(Constant.OutStatusConstant.OUT_ORDER_NOT_OUT.getName());
-//			//出库中金额
-//			orderOutRejectItemVO.setOutGoingAmount(orderOutRejectItemVO.getRejectAmount().abs());
-//			//出库中数量
-//			orderOutRejectItemVO.setOutGoingQuantity(orderOutRejectItemVO.getRejectQuantity().abs());
-//			//出库中时间
-//			orderOutRejectItemVO.setOutGoingTime(LocalDateTime.now());
-//			//自动出库赋值  已出库数量、已出库金额、最后出库时间
-//			if (orderOutRejectVO.getFlgAutoIvt()) {
-//				//已出库数量
-//				orderOutRejectItemVO.setOutQuantity(orderOutRejectItemVO.getRejectQuantity().abs());
-//				//已出库金额
-//				orderOutRejectItemVO.setOutAmount(orderOutRejectItemVO.getRejectAmount().abs());
-//				//最后出库时间
-//				orderOutRejectItemVO.setOutTime(LocalDateTime.now());
-//			}
-//			//实体转换
-//			OrderOutRejectItem orderOutRejectItem = orderOutRejectItemConvert.convertToPo(orderOutRejectItemVO);
-//			//明细新建
-//			orderOutRejectItemMapper.insert(orderOutRejectItem);
-//			orderOutRejectItemVO.setItemId(orderOutRejectItem.getItemId());
-//		}
-//
-//		return orderOutRejectItemVOList;
-
-
         }
         return intoReturnItemVOList;
     }
 
 
+    //TODO 未完成
+
+    /**
+     * @desc : 冲正
+     * @date : 2022/6/28 16:58
+     * @author : 于继渤
+     */
+    @Transactional(rollbackFor = {Exception.class})
+    public ResponseResultVO<String> righting(String purId, List<String> intoReturnIdList) {
+        //根据订单id查询到订单
+        Purchase purchase = purchaseMapper.selectPurchaseByRighting(new PurchaseQuery().setPurId(purId));
+
+
+        //查询采购退货数据List
+        List<IntoReturn> intoReturnList = intoReturnMapper.selectReturnList(intoReturnIdList);
+
+        //根据订单id查询所有退货单
+        List<IntoReturnResponse> intoReturnResponsesList = intoReturnMapper.selectByCond(new IntoReturnQuery().setIntoReturnIdList(intoReturnIdList));
+
+
+        //本次冲正退货总额
+        BigDecimal sumReturnAmount = intoReturnResponsesList.stream().map(IntoReturnResponse::getSumAmount)
+                .reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, BigDecimal.ROUND_HALF_UP);
+
+//        for (IntoReturn intoReturn : intoReturnList) {
+//
+//
+//        }
+        //订单退货金额、退货数量
+        purchase.setReturnAmt(purchase.getReturnAmt().subtract(intoReturnList.stream()
+                .map(IntoReturn::getSumAmount).reduce(BigDecimal.ZERO, BigDecimal::add)).setScale(2, BigDecimal.ROUND_HALF_UP));
+        purchase.setReturnQty(purchase.getReturnQty().subtract(intoReturnList.stream()
+                .map(IntoReturn::getSumQuantity).reduce(BigDecimal.ZERO, BigDecimal::add)).setScale(6, BigDecimal.ROUND_HALF_UP));
+        return null;
+    }
+
+
+    //TODO 未完成
+    @Transactional(rollbackFor = {Exception.class})
+    public void rightingByIbossReturnSuccess(IntoReturn intoReturn) {
+        //修改原单总单的状态
+        intoReturnMapper.updateById(new IntoReturn().setReturnId(intoReturn.getReturnId()).
+                setReturnStatus("退货状态-冲正"));
+
+
+        //region 根据id查询原始单据信息、生成逆向生成销售退货总单数据
+        //根据id查询原始单据信息
+        IntoReturn intoReturnRig = intoReturnMapper.selectReturnByRighting(intoReturn.getReturnId());
+        Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.OUTBOUND.getName(), false);
+        intoReturnRig.setReturnId(codeMap.get("outId").toString()).setReturnNo(codeMap.get("outNote").toString())
+                .setReturnType(Constant.returnType.PURRETURN.getName());
+
+        intoReturnRig.setReturnType("退货类型-冲正");
+        intoReturnRig.setReturnStatus("退货状态-冲正");
+        //退货单状态 冲正
+        intoReturnRig.setMakeTime(LocalDateTime.now());
+        //endregion
+
+
+    }
+
 }

+ 63 - 0
src/main/java/com/dk/mdm/service/ivt/OutboundService.java

@@ -12,6 +12,7 @@ import com.dk.common.response.ResponseResultVO;
 import com.dk.mdm.infrastructure.convert.ivt.OutboundConvert;
 import com.dk.mdm.infrastructure.convert.ivt.OutboundItemConvert;
 import com.dk.mdm.mapper.ivt.OutboundItemMapper;
+import com.dk.mdm.mapper.pur.PurchaseItemMapper;
 import com.dk.mdm.mapper.sale.OrderItemMapper;
 import com.dk.mdm.mapper.sale.OrderMapper;
 import com.dk.mdm.model.pojo.ivt.Outbound;
@@ -25,6 +26,7 @@ import com.dk.mdm.model.query.ivt.OutboundItemQuery;
 import com.dk.mdm.model.query.ivt.OutboundQuery;
 import com.dk.mdm.model.response.ivt.OutboundItemResponse;
 import com.dk.mdm.model.response.ivt.OutboundResponse;
+import com.dk.mdm.model.response.pur.PurchaseItemResponse;
 import com.dk.mdm.model.response.sale.OrderResponse;
 import com.dk.mdm.model.vo.ivt.OutboundItemVO;
 import com.dk.mdm.model.vo.ivt.OutboundVO;
@@ -86,6 +88,9 @@ public class OutboundService extends BaseService<Outbound> {
 	@Autowired
 	private OutboundItemConvert outboundItemConvert;
 
+	@Autowired
+	private PurchaseItemMapper purchaseItemMapper;
+
 	/**
 	 * @desc : 条件查询
 	 * @author : 付斌
@@ -215,4 +220,62 @@ public class OutboundService extends BaseService<Outbound> {
 		return ResponseResultUtil.success(super.update(outbound, new UpdateWrapper<Outbound>().lambda().eq(Outbound::getOutId,
 				UUID.fromString(outbound.getOutId()))));
 	}
+
+	/**
+	 * @desc : 采购退货出库
+	 * @author : 于继渤
+	 * @date : 2023/1/9 10:49
+	 */
+	@Transactional(
+			rollbackFor = {Exception.class}
+	)
+	public ResponseResultVO<?> insertOutBound(OutboundVO outboundVO) {
+
+		// 获取单号
+		Map<String , Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.OUTBOUND.getName(),false);
+		outboundVO.setOutId(codeMap.get("outId").toString()).setOutNo(codeMap.get("outNote").toString())
+				.setOutType(Constant.OutType.PURRETURN.getName());
+		// 转化实体
+		Outbound outbound = outboundConvert.convertToPo(outboundVO);
+		// 总单保存
+		super.insert(outbound);
+
+		// 明细保存
+		if (outboundVO.getItemList() != null && outboundVO.getItemList().size() > 0) {
+			double sumOutingQty = 0;	// 合计出库中数量
+			double sumOutingAmt = 0;	// 合计出库中金额
+			for (OutboundItemVO outboundItemVO : outboundVO.getItemList()) {
+				OutboundItem outboundItem = outboundItemConvert.convertToPo(outboundItemVO);
+				outboundItem.setOutId(outbound.getOutId()).setCpId(outbound.getCpId()).setOutStatus(Constant.OutStatus.CHUKUZHONG.getName())
+						.setOutType(Constant.OutType.PURRETURN.getName());
+				outboundItemMapper.insert(outboundItem);
+
+//				PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(outboundItem.getFromItemId());
+
+				// 如果商品数量小于订单+本次出库单上的出库中数量
+//				if(orderItem.getItemQty().compareTo(orderItem.getOutingQty().add(outboundItem.getOutingQty())) == -1){
+//					throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ITEMQTY_NO_LESS_OUTQTY.getMessage());
+//				}else{
+//					OrderItem orderItemUpdate = new OrderItem();
+//					orderItemUpdate.setOutingQty(orderItem.getOutingQty().add(outboundItem.getOutingQty()))
+//							.setOutingAmt(orderItem.getOutingAmt().add(outboundItem.getOutingAmt()))
+//							.setItemId(orderItem.getItemId());
+//					orderItemService.updateByUuid(orderItemUpdate);
+//					// 累加出库中数量,金额
+//					sumOutingQty += outboundItem.getOutingQty().doubleValue();
+//					sumOutingAmt += outboundItem.getOutingAmt().doubleValue();
+//				}
+			}
+//			// 更新订单上的出库中数量,金额,状态
+//			OrderResponse orderResponse = orderMapper.selectById(outboundVO.getFromId());
+//			Order orderUpdate = new Order();
+//			orderUpdate.setOutingQty(orderResponse.getOutingQty().add(new BigDecimal(sumOutingQty)))
+//					.setOutingAmt(orderResponse.getOutingAmt().add(new BigDecimal(sumOutingAmt)))
+//					.setOutStatus(Constant.OutStatus.CHUKUZHONG.getName())
+//					.setOrderId(outboundVO.getFromId());
+//			orderService.updateByUuid(orderUpdate);
+		}
+		return ResponseResultUtil.success();
+	}
+
 }