Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

dongke 2 лет назад
Родитель
Сommit
1769a16e9c
24 измененных файлов с 741 добавлено и 140 удалено
  1. 36 1
      src/main/java/com/dk/mdm/controller/ivt/IntoReturnController.java
  2. 27 0
      src/main/java/com/dk/mdm/controller/sale/OutReturnController.java
  3. 7 8
      src/main/java/com/dk/mdm/generator/Generator.java
  4. 3 0
      src/main/java/com/dk/mdm/infrastructure/convert/ivt/IntoReturnItemConvert.java
  5. 2 2
      src/main/java/com/dk/mdm/infrastructure/convert/sale/OrderItemConvert.java
  6. 22 0
      src/main/java/com/dk/mdm/infrastructure/convert/sale/OutReturnConvert.java
  7. 22 0
      src/main/java/com/dk/mdm/infrastructure/convert/sale/OutReturnItemConvert.java
  8. 0 2
      src/main/java/com/dk/mdm/mapper/ivt/InboundMapper.xml
  9. 19 1
      src/main/java/com/dk/mdm/mapper/ivt/IntoReturnMapper.java
  10. 181 10
      src/main/java/com/dk/mdm/mapper/ivt/IntoReturnMapper.xml
  11. 2 1
      src/main/java/com/dk/mdm/mapper/pur/PurchaseItemMapper.java
  12. 1 1
      src/main/java/com/dk/mdm/mapper/pur/PurchaseItemMapper.xml
  13. 3 2
      src/main/java/com/dk/mdm/model/pojo/ivt/IntoReturn.java
  14. 3 2
      src/main/java/com/dk/mdm/model/pojo/sale/OutReturn.java
  15. 3 2
      src/main/java/com/dk/mdm/model/query/ivt/IntoReturnQuery.java
  16. 3 2
      src/main/java/com/dk/mdm/model/query/sale/OutReturnQuery.java
  17. 15 69
      src/main/java/com/dk/mdm/model/response/ivt/IntoReturnResponse.java
  18. 3 2
      src/main/java/com/dk/mdm/model/response/sale/OutReturnResponse.java
  19. 2 2
      src/main/java/com/dk/mdm/model/vo/ivt/IntoReturnItemVO.java
  20. 6 13
      src/main/java/com/dk/mdm/model/vo/ivt/IntoReturnVO.java
  21. 9 2
      src/main/java/com/dk/mdm/model/vo/sale/OutReturnVO.java
  22. 227 6
      src/main/java/com/dk/mdm/service/ivt/IntoReturnService.java
  23. 2 2
      src/main/java/com/dk/mdm/service/ivt/OutboundService.java
  24. 143 10
      src/main/java/com/dk/mdm/service/sale/OutReturnService.java

+ 36 - 1
src/main/java/com/dk/mdm/controller/ivt/IntoReturnController.java

@@ -1,8 +1,19 @@
 package com.dk.mdm.controller.ivt;
 
+import com.dk.common.model.pojo.PageList;
+import com.dk.common.response.ResponseResultVO;
 import com.dk.mdm.model.pojo.ivt.IntoReturn;
-import com.dk.common.controller.BaseController;
 import com.dk.common.service.BaseService;
+import com.dk.mdm.model.query.ivt.InboundQuery;
+import com.dk.mdm.model.query.ivt.IntoReturnQuery;
+import com.dk.mdm.model.query.pur.PurchaseQuery;
+import com.dk.mdm.model.response.ivt.InboundResponse;
+import com.dk.mdm.model.response.ivt.IntoReturnResponse;
+import com.dk.mdm.model.response.pur.PurchaseResponse;
+import com.dk.mdm.model.vo.ivt.IntoReturnVO;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RestController;
@@ -21,4 +32,28 @@ public class IntoReturnController{
     @Autowired
     private IntoReturnService intoReturnService;
 
+    /**
+     * @desc : 查询
+     * @author : 于继渤
+     * @date : 2023/1/5 9:39
+     */
+    @ApiOperation(
+            value = "分页、关联、条件查询",
+            notes = "分页、关联、条件查询"
+    )
+    @PostMapping({"list_by"})
+    public ResponseResultVO<PageList<IntoReturnResponse>> selectByCond(@RequestBody IntoReturnQuery intoReturnQuery) {
+        return intoReturnService.selectByCond(intoReturnQuery);
+    }
+    /**
+     * @desc : 新建采购退货
+     * @author : 于继渤
+     * @date : 2023/1/5 9:39
+     */
+    @ApiOperation(value = "新建", notes = "新建")
+    @PostMapping({"insert"})
+    public ResponseResultVO<?> insert(@RequestBody IntoReturnVO intoReturnVO) {
+        return intoReturnService.insert(intoReturnVO);
+    }
+
 }

+ 27 - 0
src/main/java/com/dk/mdm/controller/sale/OutReturnController.java

@@ -1,7 +1,12 @@
 package com.dk.mdm.controller.sale;
 
+import com.dk.common.response.ResponseResultVO;
 import com.dk.mdm.model.pojo.sale.OutReturn;
 import com.dk.common.service.BaseService;
+import com.dk.mdm.model.vo.sale.OutReturnVO;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RestController;
@@ -20,4 +25,26 @@ public class OutReturnController{
     @Autowired
     private OutReturnService outReturnService;
 
+    /**
+     * @desc : 新建退货
+     * @author : 付斌
+     * @date : 2023/1/9 10:48
+     */
+    @ApiOperation(value = "新建退货", notes = "新建退货")
+    @PostMapping({"insert"})
+    public ResponseResultVO<?> insert(@RequestBody OutReturnVO outReturnVO) {
+        return outReturnService.insert(outReturnVO);
+    }
+
+    /**
+     * @desc : 编辑退货
+     * @author : 付斌
+     * @date : 2023/1/9 10:49
+     */
+    @ApiOperation(value = "编辑退货", notes = "编辑退货")
+    @PostMapping({"update"})
+    public ResponseResultVO<Boolean> update(@RequestBody OutReturnVO outReturnVO) {
+        return outReturnService.update(outReturnVO);
+    }
+
 }

+ 7 - 8
src/main/java/com/dk/mdm/generator/Generator.java

@@ -79,11 +79,11 @@ public class Generator {
         PackageConfig pc = new PackageConfig();
 //        pc.setModuleName("task");                  //模块包名
         pc.setParent("com.dk.mdm");        //父包路径
-        pc.setEntity("model.pojo.mst");                     //实体层路径
-        pc.setMapper("mapper.mst");                 //mapper层路径
-        pc.setXml("mapper.mst");                       //xml层路径
-        pc.setServiceImpl("service.mst");                   //业务层路径
-        pc.setController("controller.mst");             //控制层路径
+        pc.setEntity("model.pojo.ivt");                     //实体层路径
+        pc.setMapper("mapper.ivt");                 //mapper层路径
+        pc.setXml("mapper.ivt");                       //xml层路径
+        pc.setServiceImpl("service.ivt");                   //业务层路径
+        pc.setController("controller.ivt");             //控制层路径
         //app相关路径
 //        pc.setEntity("model.app.pojo.pset");                     //实体层路径
 //        pc.setMapper("mapper.app.pset");                 //mapper层路径
@@ -94,9 +94,8 @@ public class Generator {
 
         //4、策略配置
         StrategyConfig strategy = new StrategyConfig();
-        strategy.setTablePrefix("t_mst");                                             //表名前缀
-        strategy.setInclude("t_mst_setting_value");                                        //设置要映射的表名,只需改这里即可,可以是一个数组,一次性生成多张表。
-//        strategy.setInclude("t_mst_setting_value");                                        //设置要映射的表名,只需改这里即可,可以是一个数组,一次性生成多张表。
+        strategy.setTablePrefix("t_psi");                                             //表名前缀
+        strategy.setInclude("t_psi_outbound_item");                                        //设置要映射的表名,只需改这里即可,可以是一个数组,一次性生成多张表。
         strategy.setNaming(NamingStrategy.underline_to_camel);                      //转驼峰
         strategy.setColumnNaming(NamingStrategy.underline_to_camel);                //字段下划线转驼峰
         strategy.setEntityLombokModel(true);                                        //是否使用lombok开启注解

+ 3 - 0
src/main/java/com/dk/mdm/infrastructure/convert/ivt/IntoReturnItemConvert.java

@@ -5,8 +5,11 @@ import com.dk.mdm.model.vo.ivt.IntoReturnItemVO;
 
 import org.mapstruct.Mapper;
 
+import java.util.List;
+
 @Mapper(componentModel = "spring")
 public interface IntoReturnItemConvert {
 
     IntoReturnItem convertToPo(IntoReturnItemVO intoReturnVO);
+    List<IntoReturnItem> convertToPoList(List<IntoReturnItemVO> intoReturnVO);
 }

+ 2 - 2
src/main/java/com/dk/mdm/infrastructure/convert/sale/OrderItemConvert.java

@@ -5,7 +5,7 @@ import com.dk.mdm.model.vo.sale.OrderItemVO;
 import org.mapstruct.Mapper;
 
 /**
- * @desc   : Order转换类
+ * @desc   : OrderItem转换类
  * @author : 付斌
  * @date   : 2024-02-28 10:18
  */
@@ -17,6 +17,6 @@ public interface OrderItemConvert {
      * @author : 付斌
      * @date   : 2024-02-28 15:25
      */
-    OrderItem convertToPo(OrderItemVO orderVO);
+    OrderItem convertToPo(OrderItemVO orderItemVO);
 
 }

+ 22 - 0
src/main/java/com/dk/mdm/infrastructure/convert/sale/OutReturnConvert.java

@@ -0,0 +1,22 @@
+package com.dk.mdm.infrastructure.convert.sale;
+
+import com.dk.mdm.model.pojo.sale.OutReturn;
+import com.dk.mdm.model.vo.sale.OutReturnVO;
+import org.mapstruct.Mapper;
+
+/**
+ * @desc   : OutReturn转换类
+ * @author : 付斌
+ * @date   : 2024-02-28 10:18
+ */
+@Mapper(componentModel = "spring")
+public interface OutReturnConvert {
+
+    /**
+     * @desc   : 转换vo为pojo
+     * @author : 付斌
+     * @date   : 2024-02-28 15:26
+     */
+    OutReturn convertToPo(OutReturnVO outReturnVO);
+
+}

+ 22 - 0
src/main/java/com/dk/mdm/infrastructure/convert/sale/OutReturnItemConvert.java

@@ -0,0 +1,22 @@
+package com.dk.mdm.infrastructure.convert.sale;
+
+import com.dk.mdm.model.pojo.sale.OutReturnItem;
+import com.dk.mdm.model.vo.sale.OutReturnItemVO;
+import org.mapstruct.Mapper;
+
+/**
+ * @desc   : OutReturnItem转换类
+ * @author : 付斌
+ * @date   : 2024-02-28 10:18
+ */
+@Mapper(componentModel = "spring")
+public interface OutReturnItemConvert {
+
+    /**
+     * @desc   : 转换vo为pojo
+     * @author : 付斌
+     * @date   : 2024-02-28 15:25
+     */
+    OutReturnItem convertToPo(OutReturnItemVO outReturnItemVO);
+
+}

+ 0 - 2
src/main/java/com/dk/mdm/mapper/ivt/InboundMapper.xml

@@ -427,9 +427,7 @@
         tpii.from_item_id AS list_from_item_id,
         tpii.item_index AS list_item_index,
         tpii.sku_id AS list_sku_id,
-        tpii.item_qty AS list_item_qty,
         tpii.price_into AS list_price_into,
-        tpii.item_amt AS list_item_amt,
         tpii.non_std_code AS list_non_std_code,
         tpii.into_status AS list_into_status,
         tpii.intoing_qty AS list_intoing_qty,

+ 19 - 1
src/main/java/com/dk/mdm/mapper/ivt/IntoReturnMapper.java

@@ -2,13 +2,31 @@ package com.dk.mdm.mapper.ivt;
 
 import com.dk.mdm.model.pojo.ivt.IntoReturn;
 import com.dk.common.mapper.BaseMapper;
+import com.dk.mdm.model.query.ivt.IntoReturnQuery;
+import com.dk.mdm.model.query.pur.PurchaseQuery;
+import com.dk.mdm.model.response.ivt.IntoReturnResponse;
+import com.dk.mdm.model.response.pur.PurchaseResponse;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 /**
 *  入库退货 Mapper
 */
 @Repository
 public interface IntoReturnMapper extends BaseMapper<IntoReturn>{
-	
+    /**
+     * @desc   : 查询
+     * @author : 于继渤
+     * @date   : 2024/2/28 9:48
+     */
+    List<IntoReturnResponse> selectByCond(IntoReturnQuery intoReturnQuery);
+
+    /**
+     * @desc   : 查询个数
+     * @author : 于继渤
+     * @date   : 2024/2/28 9:48
+     */
+    Long countByCond(IntoReturnQuery intoReturnQuery);
 }
 

+ 181 - 10
src/main/java/com/dk/mdm/mapper/ivt/IntoReturnMapper.xml

@@ -51,6 +51,64 @@
                 <result column="op_db_user" property="opDbUser"/>
     </resultMap>
 
+
+
+
+    <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.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,
+        tpir.remarks, tpir.annex_paths, tpir.make_staff, tpir.make_time, tpir.flg_valid, tpir.cp_id
+    </sql>
+
+
+    <resultMap id="BaseResultMapResponse" type="com.dk.mdm.model.response.ivt.IntoReturnResponse">
+        <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"/>
+        <result column="org_id" property="orgId" typeHandler="UuidTypeHandler"/>
+        <result column="staff_id" property="staffId" typeHandler="UuidTypeHandler"/>
+        <result column="sup_id" property="supId" typeHandler="UuidTypeHandler"/>
+        <result column="contact_name" property="contactName"/>
+        <result column="contact_phone" property="contactPhone"/>
+        <result column="delivery_date" property="deliveryDate" typeHandler="TimestampTypeHandler"/>
+        <result column="sum_quantity" property="sumQuantity"/>
+        <result column="sum_standard" property="sumStandard"/>
+        <result column="sum_amount" property="sumAmount"/>
+        <result column="sale_discount" property="saleDiscount"/>
+        <result column="return_status" property="returnStatus"/>
+        <result column="out_status" property="outStatus"/>
+        <result column="outing_qty" property="outingQty"/>
+        <result column="outing_amt" property="outingAmt"/>
+        <result column="out_qty" property="outQty"/>
+        <result column="out_amt" property="outAmt"/>
+        <result column="amt_payable" property="amtPayable"/>
+        <result column="amt_handle" property="amtHandle"/>
+        <result column="amt_residue" property="amtResidue"/>
+        <result column="remarks" property="remarks"/>
+        <result column="annex_paths" property="annexPaths" typeHandler="JsonTypeHandler"/>
+        <result column="make_staff" property="makeStaff" typeHandler="UuidTypeHandler"/>
+        <result column="make_time" property="makeTime" typeHandler="TimestampTypeHandler"/>
+        <result column="flg_valid" property="flgValid"/>
+        <result column="cp_id" property="cpId"/>
+
+        <result column="sup_name" property="supName"/>
+        <result column="sup_code" property="supCode"/>
+
+        <result column="staff_name" property="staffName"/>
+        <result column="staff_code" property="staffCode"/>
+
+        <result column="org_name" property="orgName"/>
+        <result column="org_code" property="orgCode"/>
+
+    </resultMap>
+
+
     <!-- 通用条件列 -->
     <sql id="Condition">
         <where>
@@ -171,6 +229,105 @@
         </where>
     </sql>
 
+    <sql id="Condition_Response">
+        <where>
+            <if test="returnNo != null and returnNo != ''">
+                AND tpir.return_no = #{returnNo}
+            </if>
+            <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>
+            <if test="intoNo != null and intoNo != ''">
+                AND tpir.into_no = #{intoNo}
+            </if>
+            <if test="purNo != null and purNo != ''">
+                AND tpir.pur_no = #{purNo}
+            </if>
+            <if test="orgId != null and orgId != ''">
+                AND tpir.org_id = #{orgId}
+            </if>
+            <if test="staffId != null and staffId != ''">
+                AND tpir.staff_id = #{staffId}
+            </if>
+            <if test="supId != null and supId != ''">
+                AND tpir.sup_id = #{supId}
+            </if>
+            <if test="contactName != null and contactName != ''">
+                AND tpir.contact_name = #{contactName}
+            </if>
+            <if test="contactPhone != null and contactPhone != ''">
+                AND tpir.contact_phone = #{contactPhone}
+            </if>
+            <if test="deliveryDate != null">
+                AND tpir.delivery_date = #{deliveryDate}
+            </if>
+            <if test="sumQuantity != null">
+                AND tpir.sum_quantity = #{sumQuantity}
+            </if>
+            <if test="sumStandard != null">
+                AND tpir.sum_standard = #{sumStandard}
+            </if>
+            <if test="sumAmount != null">
+                AND tpir.sum_amount = #{sumAmount}
+            </if>
+            <if test="saleDiscount != null">
+                AND tpir.sale_discount = #{saleDiscount}
+            </if>
+            <if test="returnStatus != null and returnStatus != ''">
+                AND tpir.return_status = #{returnStatus}
+            </if>
+            <if test="outStatus != null and outStatus != ''">
+                AND tpir.out_status = #{outStatus}
+            </if>
+            <if test="outingQty != null">
+                AND tpir.outing_qty = #{outingQty}
+            </if>
+            <if test="outingAmt != null">
+                AND tpir.outing_amt = #{outingAmt}
+            </if>
+            <if test="outQty != null">
+                AND tpir.out_qty = #{outQty}
+            </if>
+            <if test="outAmt != null">
+                AND tpir.out_amt = #{outAmt}
+            </if>
+            <if test="amtPayable != null">
+                AND tpir.amt_payable = #{amtPayable}
+            </if>
+            <if test="amtHandle != null">
+                AND tpir.amt_handle = #{amtHandle}
+            </if>
+            <if test="amtResidue != null">
+                AND tpir.amt_residue = #{amtResidue}
+            </if>
+            <if test="remarks != null and remarks != ''">
+                AND tpir.remarks = #{remarks}
+            </if>
+            <if test="annexPaths != null and annexPaths != ''">
+                AND tpir.annex_paths = #{annexPaths}
+            </if>
+            <if test="makeStaff != null and makeStaff != ''">
+                AND tpir.make_staff = #{makeStaff}
+            </if>
+            <if test="makeTime != null">
+                AND tpir.make_time = #{makeTime}
+            </if>
+            <if test="flgValid != null">
+                AND tpir.flg_valid = #{flgValid}
+            </if>
+            <if test="cpId != null">
+                AND tpir.cp_id = #{cpId}
+            </if>
+
+        </where>
+    </sql>
+
     <sql id="idsForeach">
         <!-- 根据主键returnId批量操作 -->
         WHERE return_id in
@@ -179,12 +336,26 @@
         </foreach>
     </sql>
 
+    <sql id="Base_Column_List_Join">
+
+        tms.sup_name AS sup_name,
+        tms.sup_code AS sup_code,
+        tmsf.staff_name AS staff_name,
+        tmsf.staff_code AS staff_code,
+        tmo.org_name AS org_name,
+        tmo.org_code AS org_code
+    </sql>
+
     <!-- 查询表t_psi_into_return,(条件查询+分页)列表 -->
-    <select id="selectByCond" resultMap="BaseResultMap">
+    <select id="selectByCond" resultMap="BaseResultMapResponse">
         SELECT
-        <include refid="Base_Column_List"/>
-        FROM t_psi_into_return
-        <include refid="Condition"/>
+        <include refid="Base_Column_List_Response"/>,
+        <include refid="Base_Column_List_Join"/>
+        FROM dkic_b.t_psi_into_return  tpir
+        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
+        <include refid="Condition_Response"/>
         <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
             limit #{end} offset #{start}
         </if>
@@ -194,15 +365,15 @@
     <select id="countByCond" resultType="Long">
         SELECT
         count(1)
-        FROM t_psi_into_return
-        <include refid="Condition"/>
+        FROM dkic_b.t_psi_into_return tpir
+        <include refid="Condition_Response"/>
     </select>
 
     <!-- 根据主键查询表t_psi_into_return的一行数据 -->
     <select id="selectById" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List"/>
-        FROM t_psi_into_return
+        FROM dkic_b.t_psi_into_return
         WHERE return_id = #{returnId}::uuid
     </select>
 
@@ -210,7 +381,7 @@
     <select id="selectByIdForUpdate" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List"/>
-        FROM t_psi_into_return
+        FROM dkic_b.t_psi_into_return
         WHERE return_id = #{returnId}
         for update
     </select>
@@ -219,13 +390,13 @@
     <select id="selectByIdsForUpdate" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List"/>
-        FROM t_psi_into_return
+        FROM dkic_b.t_psi_into_return
         <include refid="idsForeach"/>
         for update
     </select>
 
     <insert id="insertBatch">
-        insert into t_psi_into_return
+        insert into dkic_b.t_psi_into_return
         (
         <trim suffixOverrides=",">
             return_no,

+ 2 - 1
src/main/java/com/dk/mdm/mapper/pur/PurchaseItemMapper.java

@@ -29,6 +29,7 @@ public interface PurchaseItemMapper extends BaseMapper<PurchaseItem>{
     Long countByCond(PurchaseItemQuery purchaseItemQuery);
 
     int deleteById(@Param("id") String id);
-	
+    PurchaseItemResponse selectById(@Param("itemId") String id);
+
 }
 

+ 1 - 1
src/main/java/com/dk/mdm/mapper/pur/PurchaseItemMapper.xml

@@ -289,7 +289,7 @@
         SELECT
         <include refid="Base_Column_List"/>
         FROM dkic_b.t_psi_purchase_item
-        WHERE item_id = #{itemId}
+        WHERE item_id = #{itemId}::uuid
         for update
     </select>
 

+ 3 - 2
src/main/java/com/dk/mdm/model/pojo/ivt/IntoReturn.java

@@ -18,6 +18,7 @@ import io.swagger.annotations.ApiModelProperty;
 import com.alibaba.fastjson.JSONObject;
 
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.util.List;
 import java.time.LocalDateTime;
 
@@ -144,9 +145,9 @@ public class IntoReturn extends PageInfo<IntoReturn> implements Serializable {
      */
     @Excel(name = "送货日期")
     @ApiModelProperty(value = "送货日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime deliveryDate;
+    private LocalDate deliveryDate;
 
 
     /**

+ 3 - 2
src/main/java/com/dk/mdm/model/pojo/sale/OutReturn.java

@@ -18,6 +18,7 @@ import io.swagger.annotations.ApiModelProperty;
 import com.alibaba.fastjson.JSONObject;
 
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.util.List;
 import java.time.LocalDateTime;
 
@@ -179,9 +180,9 @@ public class OutReturn extends PageInfo<OutReturn> implements Serializable {
      */
     @Excel(name = "取货日期")
     @ApiModelProperty(value = "取货日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime pickupDate;
+    private LocalDate pickupDate;
 
 
     /**

+ 3 - 2
src/main/java/com/dk/mdm/model/query/ivt/IntoReturnQuery.java

@@ -20,6 +20,7 @@ import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 /**
@@ -145,9 +146,9 @@ public class IntoReturnQuery extends PageInfo<IntoReturnQuery> implements Serial
      */
     @Excel(name = "送货日期")
     @ApiModelProperty(value = "送货日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime deliveryDate;
+    private LocalDate deliveryDate;
 
 
     /**

+ 3 - 2
src/main/java/com/dk/mdm/model/query/sale/OutReturnQuery.java

@@ -20,6 +20,7 @@ import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 /**
@@ -180,9 +181,9 @@ public class OutReturnQuery extends PageInfo<OutReturnQuery> implements Serializ
      */
     @Excel(name = "取货日期")
     @ApiModelProperty(value = "取货日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime pickupDate;
+    private LocalDate pickupDate;
 
 
     /**

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

@@ -20,6 +20,7 @@ import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 /**
@@ -144,9 +145,9 @@ public class IntoReturnResponse  implements Serializable {
      */
     @Excel(name = "送货日期")
     @ApiModelProperty(value = "送货日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime deliveryDate;
+    private LocalDate deliveryDate;
 
 
     /**
@@ -304,80 +305,25 @@ public class IntoReturnResponse  implements Serializable {
     @ApiModelProperty(value = "企业ID")
     private Integer cpId;
 
+    @ApiModelProperty(value = "供应商名称")
+    private String supName;
 
-    /**
-     * 创建时间 (触发器自动处理)
-     */
-    @Excel(name = "创建时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
-    @ApiModelProperty(value = "创建时间 (触发器自动处理)")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime opCreateTime;
-
-
-    /**
-     * 创建用户 (触发器自动处理)
-     */
-    @Excel(name = "创建用户 (触发器自动处理)")
-    @ApiModelProperty(value = "创建用户 (触发器自动处理)")
-    @TableField(typeHandler = UuidTypeHandler.class)
-    private String opCreateUserId;
-
-
-    /**
-     * 修改时间 (触发器自动处理)
-     */
-    @Excel(name = "修改时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
-    @ApiModelProperty(value = "修改时间 (触发器自动处理)")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime opUpdateTime;
-
-
-    /**
-     * 修改用户 (触发器自动处理)
-     */
-    @Excel(name = "修改用户 (触发器自动处理)")
-    @ApiModelProperty(value = "修改用户 (触发器自动处理)")
-    @TableField(typeHandler = UuidTypeHandler.class)
-    private String opUpdateUserId;
+    @ApiModelProperty(value = "供应商编码")
+    private String supCode;
 
+    @ApiModelProperty(value = "员工名称")
+    private String staffName;
 
-    /**
-     * 数据操作应用 (触发器自动处理)
-     */
-    @Excel(name = "数据操作应用 (触发器自动处理)")
-    @ApiModelProperty(value = "数据操作应用 (触发器自动处理)")
-    private String opAppCode;
-
-
-    /**
-     * 数据时间戳 (触发器自动处理)
-     */
-    @Excel(name = "数据时间戳 (触发器自动处理)")
-    @ApiModelProperty(value = "数据时间戳 (触发器自动处理)")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime opTimestamp;
-
+    @ApiModelProperty(value = "员工编码")
+    private String staffCode;
 
-    /**
-     * 数据操作数据库用户 (触发器自动处理)
-     */
-    @Excel(name = "数据操作数据库用户 (触发器自动处理)")
-    @ApiModelProperty(value = "数据操作数据库用户 (触发器自动处理)")
-    private String opDbUser;
+    @ApiModelProperty(value = "部门名称")
+    private String orgName;
 
+    @ApiModelProperty(value = "部门编码")
+    private String orgCode;
 
-    /*
-     * 相关属性
-     * @TableField(exist = false)
-     */
 
-    /*
-     * 关联属性 + 查询条件
-     * @TableField(exist = false)
-     */
 
 
     private static final long serialVersionUID = 1L;

+ 3 - 2
src/main/java/com/dk/mdm/model/response/sale/OutReturnResponse.java

@@ -20,6 +20,7 @@ import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 /**
@@ -180,9 +181,9 @@ public class OutReturnResponse extends PageInfo<OutReturnResponse> implements Se
      */
     @Excel(name = "取货日期")
     @ApiModelProperty(value = "取货日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime pickupDate;
+    private LocalDate pickupDate;
 
 
     /**

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

@@ -6,13 +6,11 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.dk.common.infrastructure.annotaiton.ExportTitle;
 import com.dk.common.infrastructure.handler.TimestampTypeHandler;
 import com.dk.common.infrastructure.handler.UuidTypeHandler;
-import com.dk.common.model.pojo.PageInfo;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
 
@@ -88,6 +86,8 @@ public class IntoReturnItemVO  implements Serializable {
     @TableField(typeHandler = UuidTypeHandler.class)
     private String purItemId;
 
+    private String fromItemId;
+
 
     /**
      * 商品顺序

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

@@ -20,7 +20,9 @@ import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  *  入库退货
@@ -144,9 +146,9 @@ public class IntoReturnVO  implements Serializable {
      */
     @Excel(name = "送货日期")
     @ApiModelProperty(value = "送货日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime deliveryDate;
+    private LocalDate deliveryDate;
 
 
     /**
@@ -368,17 +370,8 @@ public class IntoReturnVO  implements Serializable {
     @ApiModelProperty(value = "数据操作数据库用户 (触发器自动处理)")
     private String opDbUser;
 
-
-    /*
-     * 相关属性
-     * @TableField(exist = false)
-     */
-
-    /*
-     * 关联属性 + 查询条件
-     * @TableField(exist = false)
-     */
-
+    @ApiModelProperty(value = "退货明细")
+    private List<IntoReturnItemVO> intoReturnItemVOList;
 
     private static final long serialVersionUID = 1L;
 

+ 9 - 2
src/main/java/com/dk/mdm/model/vo/sale/OutReturnVO.java

@@ -20,7 +20,9 @@ import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  *  出库退货
@@ -179,9 +181,9 @@ public class OutReturnVO extends PageInfo<OutReturnVO> implements Serializable {
      */
     @Excel(name = "取货日期")
     @ApiModelProperty(value = "取货日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime pickupDate;
+    private LocalDate pickupDate;
 
 
     /**
@@ -403,6 +405,11 @@ public class OutReturnVO extends PageInfo<OutReturnVO> implements Serializable {
     @ApiModelProperty(value = "数据操作数据库用户 (触发器自动处理)")
     private String opDbUser;
 
+    @ApiModelProperty(value = "明细")
+    private List<OutReturnItemVO> itemList;
+
+    @ApiModelProperty(value = "删除明细")
+    private List<OutReturnItemVO> deleteItemList;
 
     /*
      * 相关属性

+ 227 - 6
src/main/java/com/dk/mdm/service/ivt/IntoReturnService.java

@@ -1,23 +1,244 @@
 package com.dk.mdm.service.ivt;
 
+import com.dk.common.infrastructure.annotaiton.Pagination;
+import com.dk.common.infrastructure.constant.Constant;
+import com.dk.common.infrastructure.enums.ErrorCodeEnum;
+import com.dk.common.model.pojo.PageList;
+import com.dk.common.response.ResponseCodeEnum;
+import com.dk.common.response.ResponseResultUtil;
+import com.dk.common.response.ResponseResultVO;
+import com.dk.mdm.infrastructure.convert.ivt.IntoReturnConvert;
+import com.dk.mdm.infrastructure.convert.ivt.IntoReturnItemConvert;
+import com.dk.mdm.infrastructure.util.AuthUtils;
+import com.dk.mdm.mapper.pur.PurchaseItemMapper;
+import com.dk.mdm.mapper.pur.PurchaseMapper;
 import com.dk.mdm.model.pojo.ivt.IntoReturn;
 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.PurchaseItem;
+import com.dk.mdm.model.query.ivt.IntoReturnQuery;
+import com.dk.mdm.model.query.pur.PurchaseQuery;
+import com.dk.mdm.model.response.ivt.IntoReturnResponse;
+import com.dk.mdm.model.response.pur.PurchaseItemResponse;
+import com.dk.mdm.model.response.pur.PurchaseResponse;
+import com.dk.mdm.model.vo.ivt.IntoReturnItemVO;
+import com.dk.mdm.model.vo.ivt.IntoReturnVO;
+import com.dk.mdm.model.vo.ivt.OutboundVO;
+import com.dk.mdm.service.common.CommonService;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+
 @Service
 @Transactional
 public class IntoReturnService extends BaseService<IntoReturn> {
 
-	@Override
-	public BaseMapper<IntoReturn> getRepository() {
-		return intoReturnMapper;
-	}
+    @Override
+    public BaseMapper<IntoReturn> getRepository() {
+        return intoReturnMapper;
+    }
+
+    @Autowired
+    private IntoReturnMapper intoReturnMapper;
+
+    @Autowired
+    private IntoReturnConvert intoReturnConvert;
+
+    @Autowired
+    private IntoReturnItemConvert intoReturnItemConvert;
+
+    @Autowired
+    private PurchaseMapper purchaseMapper;
+
+    @Autowired
+    private PurchaseItemMapper purchaseItemMapper;
+
+    @Autowired
+    private IntoReturnItemService intoReturnItemService;
+
+    @Autowired
+    private CommonService commonService;
+
+    @Autowired
+    private AuthUtils authUtils;
+
+    @Autowired
+    private OutboundService outboundService;
+    /**
+     * @desc : 查询
+     * @author : 于继渤
+     * @date : 2023/1/5 9:39
+     */
+    @Pagination
+    public ResponseResultVO<PageList<IntoReturnResponse>> selectByCond(IntoReturnQuery intoReturnQuery) {
+        return super.mergeListWithCount(intoReturnQuery, intoReturnMapper.selectByCond(intoReturnQuery), intoReturnMapper.countByCond(intoReturnQuery));
+    }
+
+    /**
+     * @desc : 新建采购退货
+     * @author : 于继渤
+     * @date : 2023/1/5 9:39
+     */
+    @Transactional(
+            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);
+
+        //新建出库单
+        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("出库状态-出库中");
+        outboundService.insert(outboundVO);
+
+
+        return ResponseResultUtil.success();
+    }
+    /**
+     * @desc : 设置总单信息
+     * @date : 2023/9/28 16:20
+     * @author : 于继渤
+     */
+    @Transactional(rollbackFor = {Exception.class})
+    public IntoReturnVO insertTotal(IntoReturnVO intoReturnVO) {
+        // 获取单号
+        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.setOutStatus("出库状态-未出");
+        //制单员
+        intoReturnVO.setMakeStaff(authUtils.getStaff().getStaffId());
+        //业务员
+        intoReturnVO.setStaffId(purchaseResponse.getStaffId());
+        //供应商
+        intoReturnVO.setSupId(purchaseResponse.getSupId());
+        //联系人
+        intoReturnVO.setContactName(purchaseResponse.getContactName());
+        //联系电话
+        intoReturnVO.setContactPhone(purchaseResponse.getContactPhone());
+        //送货日期//取货日期
+        intoReturnVO.setDeliveryDate(purchaseResponse.getPickupDate());
+        //新建总单
+        IntoReturn intoReturn = intoReturnConvert.convertToPo(intoReturnVO);
+        intoReturnMapper.insert(intoReturn);
+        return intoReturnVO;
+    }
+
+
+    /**
+     * @desc : 设置明细信息
+     * @date : 2023/9/28 16:20
+     * @author : 于继渤
+     */
+    @Transactional(rollbackFor = {Exception.class})
+    public List<IntoReturnItemVO> insertDetail(IntoReturnVO intoReturnVO, List<IntoReturnItemVO> intoReturnItemVOList) {
+        for (IntoReturnItemVO intoReturnItemVO : intoReturnItemVOList) {
+            //总单Id
+            intoReturnItemVO.setReturnId(intoReturnVO.getReturnId());
+            //公司Id
+            intoReturnItemVO.setCpId(intoReturnVO.getCpId());
+            //根据分销订单明细Id查询数据
+            //查询明细数据
+            PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(intoReturnItemVO.getFromItemId());
+            //采购订单id
+            intoReturnItemVO.setPurId(purchaseItemResponse.getPurId());
+            intoReturnItemVO.setPurItemId(purchaseItemResponse.getItemId());
+            intoReturnItemVO.setIntoItemId(intoReturnItemVO.getItemId());
+            intoReturnItemVO.setItemId(null);
+            //标价
+            intoReturnItemVO.setPriceStd(purchaseItemResponse.getPriceStd());
+            //标价金额 (商品数量*标价)
+            intoReturnItemVO.setAmtStd(intoReturnItemVO.getItemQty().multiply(intoReturnItemVO.getPriceStd()).setScale(2, BigDecimal.ROUND_HALF_UP));
+            //退货价格
+            intoReturnItemVO.setPriceReturn(purchaseItemResponse.getPricePur());
+            //退货金额 (商品数量*退货价)
+            intoReturnItemVO.setItemAmt(intoReturnItemVO.getItemQty().multiply(intoReturnItemVO.getPriceReturn()).setScale(2, BigDecimal.ROUND_HALF_UP));
+
+            //新建明细
+            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;
+    }
+
+
 
-	@Autowired
-	private IntoReturnMapper intoReturnMapper;
 
 }

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

@@ -112,7 +112,7 @@ public class OutboundService extends BaseService<Outbound> {
 					.setOutType(Constant.OutType.SALE.getName());
 				outboundItemMapper.insert(outboundItem);
 
-				// 反写订单出库中数量
+				// 反写订单出库中数量、金额
 				OrderItem orderItem = orderItemMapper.selectById(outboundItem.getFromItemId());
 				// 如果商品数量小于订单+本次出库单上的出库中数量
 				if(orderItem.getItemQty().compareTo(orderItem.getOutingQty().add(outboundItem.getOutingQty())) == -1){
@@ -173,7 +173,7 @@ public class OutboundService extends BaseService<Outbound> {
 		for (OutboundItemVO outboundItemVO : editOutboundItemVOList) {
 			// 出库中数量不能小于出库数量
 			if(outboundItemVO.getOutingQty().compareTo(outboundItemVO.getOutQty()) == -1){
-				throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ITEMQTY_NO_LESS_OUTQTY.getMessage());
+				throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.OUTINGQTY_NO_LESS_OUTQTY.getMessage());
 			} else {
 				OutboundItem outboundItem = outboundItemConvert.convertToPo(outboundItemVO);
 				outboundItemService.updateByUuid(outboundItem);

+ 143 - 10
src/main/java/com/dk/mdm/service/sale/OutReturnService.java

@@ -1,28 +1,161 @@
 package com.dk.mdm.service.sale;
 
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.dk.common.exception.BaseBusinessException;
+import com.dk.common.infrastructure.constant.Constant;
+import com.dk.common.infrastructure.enums.ErrorCodeEnum;
+import com.dk.common.response.ResponseCodeEnum;
+import com.dk.common.response.ResponseResultUtil;
+import com.dk.common.response.ResponseResultVO;
+import com.dk.mdm.infrastructure.convert.sale.OutReturnConvert;
+import com.dk.mdm.infrastructure.convert.sale.OutReturnItemConvert;
+import com.dk.mdm.mapper.sale.OrderItemMapper;
+import com.dk.mdm.mapper.sale.OrderMapper;
+import com.dk.mdm.mapper.sale.OutReturnItemMapper;
+import com.dk.mdm.model.pojo.sale.Order;
+import com.dk.mdm.model.pojo.sale.OrderItem;
 import com.dk.mdm.model.pojo.sale.OutReturn;
+import com.dk.mdm.model.pojo.sale.OutReturnItem;
 import com.dk.mdm.mapper.sale.OutReturnMapper;
 import com.dk.common.service.BaseService;
 import com.dk.common.mapper.BaseMapper;
+import com.dk.mdm.model.response.sale.OrderResponse;
+import com.dk.mdm.model.vo.sale.OutReturnItemVO;
+import com.dk.mdm.model.vo.sale.OutReturnVO;
+import com.dk.mdm.service.common.CommonService;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import java.util.stream.Collectors;
+
 @Service
 @Transactional
 public class OutReturnService extends BaseService<OutReturn> {
 
-	@Override
-	public String getPrimaryKey() {
-		return "return_id";
-	}
+    @Override
+    public String getPrimaryKey() {
+        return "return_id";
+    }
+
+    @Override
+    public BaseMapper<OutReturn> getRepository() {
+        return outReturnMapper;
+    }
+
+    @Autowired
+    private OutReturnMapper outReturnMapper;
+
+    @Autowired
+    private OutReturnItemService outReturnItemService;
+
+    @Autowired
+    private OutReturnItemMapper outReturnItemMapper;
+
+    @Autowired
+    private OrderService orderService;
+
+    @Autowired
+    private OrderMapper orderMapper;
+
+    @Autowired
+    private OrderItemService orderItemService;
+
+    @Autowired
+    private OrderItemMapper orderItemMapper;
+
+    @Autowired
+    private CommonService commonService;
+
+    @Autowired
+    private OutReturnConvert outReturnConvert;
+
+    @Autowired
+    private OutReturnItemConvert outReturnItemConvert;
+
+    /**
+     * @desc : 新建方法
+     * @author : 付斌
+     * @date : 2023/1/9 10:49
+     */
+    @Transactional(
+            rollbackFor = {Exception.class}
+    )
+    public ResponseResultVO<?> insert(OutReturnVO outReturnVO) {
+
+        // 获取单号
+        Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.ORDEROUT.getName(), false);
+        outReturnVO.setReturnId(codeMap.get("outId").toString()).setReturnNo(codeMap.get("outNote").toString())
+                .setReturnType(Constant.DocumentType.OUT_RETURN.getName());
+        // 转化实体
+        OutReturn outReturn = outReturnConvert.convertToPo(outReturnVO);
+        // 总单保存
+        super.insert(outReturn);
+
+        // 明细保存
+        if (outReturnVO.getItemList() != null && outReturnVO.getItemList().size() > 0) {
+            double sumReturnQty = 0;    // 合计已出库退货数量
+            double sumReturnAmt = 0;    // 合计已出库退货金额
+            for (OutReturnItemVO outReturnItemVO : outReturnVO.getItemList()) {
+                OutReturnItem outReturnItem = outReturnItemConvert.convertToPo(outReturnItemVO);
+                outReturnItem.setReturnId(outReturn.getReturnId()).setCpId(outReturn.getCpId()).setIntoStatus(Constant.IntoStatus.DAIRUKU.getName());
+                outReturnItemMapper.insert(outReturnItem);
+
+                // 反写订单已出库退货数量、金额
+                OrderItem orderItem = orderItemMapper.selectById(outReturnItem.getOrderItemId());
+                // 如果出库数量小于订单上已退货+本次退货数量
+                if (orderItem.getOutQty().compareTo(orderItem.getReturnQty().add(outReturnItem.getItemQty())) == -1) {
+                    throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.OUTQTY_NO_LESS_RETURNQTY.getMessage());
+                }
+                OrderItem orderItemUpdate = new OrderItem();
+                orderItemUpdate.setReturnQty(orderItem.getReturnQty().add(outReturnItem.getItemQty()))
+                        .setReturnAmt(orderItem.getReturnAmt().add(outReturnItem.getItemAmt()))
+                        .setItemId(orderItem.getItemId());
+                orderItemService.updateByUuid(orderItemUpdate);
+                // 累加退货数量,金额
+                sumReturnQty += outReturnItem.getItemQty().doubleValue();
+                sumReturnAmt += outReturnItem.getItemAmt().doubleValue();
+            }
+            // 更新订单上的退货数量,金额
+            OrderResponse orderResponse = orderMapper.selectById(outReturnVO.getOrderId());
+            Order orderUpdate = new Order();
+            orderUpdate.setReturnQty(orderResponse.getReturnQty().add(new BigDecimal(sumReturnQty)))
+                    .setReturnAmt(orderResponse.getReturnAmt().add(new BigDecimal(sumReturnAmt)))
+                    .setOrderId(outReturnVO.getOrderId());
+            orderService.updateByUuid(orderUpdate);
+        }
+        return ResponseResultUtil.success();
+    }
 
-	@Override
-	public BaseMapper<OutReturn> getRepository() {
-		return outReturnMapper;
-	}
+    /**
+     * @desc : 编辑方法
+     * @author : 付斌
+     * @date : 2023/1/9 10:49
+     */
+    @Transactional(
+            rollbackFor = {Exception.class}
+    )
+    public ResponseResultVO<Boolean> update(OutReturnVO outReturnVO) {
+        // 转化实体
+        OutReturn outReturn = outReturnConvert.convertToPo(outReturnVO);
 
-	@Autowired
-	private OutReturnMapper outReturnMapper;
+        // 编辑的
+        List<OutReturnItemVO> editOutReturnItemVOList = outReturnVO.getItemList().stream().filter(it -> it.getItemId() != null).collect(Collectors.toList());
+        for (OutReturnItemVO outReturnItemVO : editOutReturnItemVOList) {
+            // 入库中数量不能小于入库数量
+            if (outReturnItemVO.getIntoingQty().compareTo(outReturnItemVO.getIntoQty()) == -1) {
+                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.INTOINGQTY_NO_LESS_INTOQTY.getMessage());
+            } else {
+                OutReturnItem outReturnItem = outReturnItemConvert.convertToPo(outReturnItemVO);
+                outReturnItemService.updateByUuid(outReturnItem);
+            }
+        }
 
+        return ResponseResultUtil.success(super.update(outReturn, new UpdateWrapper<OutReturn>().lambda().eq(OutReturn::getReturnId,
+                UUID.fromString(outReturn.getReturnId()))));
+    }
 }