Browse Source

Merge remote-tracking branch 'origin/master'

dongke 2 years ago
parent
commit
a966066a4d
41 changed files with 1120 additions and 257 deletions
  1. 21 0
      src/main/java/com/dk/mdm/controller/ivt/inventory/InventoryController.java
  2. 2 2
      src/main/java/com/dk/mdm/controller/mac/AccountController.java
  3. 25 4
      src/main/java/com/dk/mdm/controller/mac/RecPayController.java
  4. 21 0
      src/main/java/com/dk/mdm/infrastructure/convert/ivt/InOutRecordConvert.java
  5. 21 0
      src/main/java/com/dk/mdm/infrastructure/convert/ivt/InventoryBatchConvert.java
  6. 3 2
      src/main/java/com/dk/mdm/mapper/common/CommonMapper.xml
  7. 2 20
      src/main/java/com/dk/mdm/mapper/ivt/FreezeItemMapper.java
  8. 37 24
      src/main/java/com/dk/mdm/mapper/ivt/FreezeItemMapper.xml
  9. 43 7
      src/main/java/com/dk/mdm/mapper/ivt/FreezeMapper.xml
  10. 8 7
      src/main/java/com/dk/mdm/mapper/ivt/InboundMapper.xml
  11. 10 10
      src/main/java/com/dk/mdm/mapper/ivt/IntoReturnItemMapper.xml
  12. 8 1
      src/main/java/com/dk/mdm/mapper/ivt/InventoryMapper.java
  13. 31 1
      src/main/java/com/dk/mdm/mapper/ivt/InventoryMapper.xml
  14. 2 0
      src/main/java/com/dk/mdm/mapper/ivt/OutboundItemMapper.xml
  15. 5 0
      src/main/java/com/dk/mdm/mapper/mac/RecPayItemMapper.xml
  16. 76 17
      src/main/java/com/dk/mdm/mapper/mac/RecPayMapper.xml
  17. 2 1
      src/main/java/com/dk/mdm/mapper/pur/PurchaseItemMapper.xml
  18. 9 5
      src/main/java/com/dk/mdm/mapper/pur/PurchaseMapper.xml
  19. 9 1
      src/main/java/com/dk/mdm/mapper/sale/MultiOwnerMapper.java
  20. 10 6
      src/main/java/com/dk/mdm/mapper/sale/MultiOwnerMapper.xml
  21. 4 3
      src/main/java/com/dk/mdm/model/pojo/ivt/InOutRecord.java
  22. 15 0
      src/main/java/com/dk/mdm/model/pojo/mac/RecPay.java
  23. 4 4
      src/main/java/com/dk/mdm/model/query/ivt/InOutRecordQuery.java
  24. 15 0
      src/main/java/com/dk/mdm/model/query/mac/RecPayQuery.java
  25. 4 3
      src/main/java/com/dk/mdm/model/response/ivt/InOutRecordResponse.java
  26. 30 0
      src/main/java/com/dk/mdm/model/response/ivt/InventoryResponse.java
  27. 3 0
      src/main/java/com/dk/mdm/model/response/mac/RecPayItemResponse.java
  28. 15 0
      src/main/java/com/dk/mdm/model/response/mac/RecPayResponse.java
  29. 3 0
      src/main/java/com/dk/mdm/model/response/pur/PurchaseItemResponse.java
  30. 3 0
      src/main/java/com/dk/mdm/model/response/pur/PurchaseResponse.java
  31. 50 12
      src/main/java/com/dk/mdm/model/vo/ivt/InOutRecordVO.java
  32. 1 1
      src/main/java/com/dk/mdm/model/vo/ivt/IntoReturnVO.java
  33. 21 0
      src/main/java/com/dk/mdm/model/vo/ivt/InventoryBatchVO.java
  34. 2 0
      src/main/java/com/dk/mdm/model/vo/ivt/InventoryVO.java
  35. 18 0
      src/main/java/com/dk/mdm/model/vo/mac/RecPayVO.java
  36. 49 20
      src/main/java/com/dk/mdm/service/ivt/FreezeService.java
  37. 66 54
      src/main/java/com/dk/mdm/service/ivt/IntoReturnService.java
  38. 296 46
      src/main/java/com/dk/mdm/service/ivt/inventory/InventoryService.java
  39. 1 1
      src/main/java/com/dk/mdm/service/ivt/outbound/OutboundOtherService.java
  40. 101 2
      src/main/java/com/dk/mdm/service/mac/RecPayService.java
  41. 74 3
      src/main/java/com/dk/mdm/service/sale/OrderService.java

+ 21 - 0
src/main/java/com/dk/mdm/controller/ivt/inventory/InventoryController.java

@@ -1,7 +1,17 @@
 package com.dk.mdm.controller.ivt.inventory;
 
+import com.dk.common.model.pojo.PageList;
+import com.dk.common.response.ResponseResultVO;
 import com.dk.mdm.model.pojo.ivt.Inventory;
 import com.dk.common.service.BaseService;
+import com.dk.mdm.model.query.ivt.InboundQuery;
+import com.dk.mdm.model.query.ivt.InventoryQuery;
+import com.dk.mdm.model.response.ivt.InboundResponse;
+import com.dk.mdm.model.response.ivt.InventoryResponse;
+import com.dk.mdm.model.vo.ivt.InventoryVO;
+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 +30,15 @@ public class InventoryController{
     @Autowired
     private InventoryService inventoryService;
 
+    /**
+     * @desc   : 条件查询
+     * @date   : 2024/3/7 14:09
+     * @author : 寇珊珊
+     */
+    @ApiOperation(value = "条件查询", notes = "条件查询")
+    @PostMapping({"list_by"})
+    public ResponseResultVO<PageList<InventoryResponse>> selectByCond(@RequestBody InventoryQuery query) {
+        return inventoryService.selectByCond(query);
+    }
+
 }

+ 2 - 2
src/main/java/com/dk/mdm/controller/mac/AccountController.java

@@ -11,8 +11,8 @@ import com.dk.mdm.service.mac.AccountService;
 
 @Api(tags = "账款对象API接口")
 @RestController
-@RequestMapping("/account")
-public class AccountController{
+@RequestMapping("/mac/account")
+public class AccountController extends BaseController<Account>{
 
     public BaseService<Account> getService() {
         return accountService;

+ 25 - 4
src/main/java/com/dk/mdm/controller/mac/RecPayController.java

@@ -62,10 +62,21 @@ public class RecPayController{
      * @author : 付斌
      * @date : 2023/1/9 10:48
      */
-    @ApiOperation(value = "新建", notes = "新建")
-    @PostMapping({"insert"})
-    public ResponseResultVO<?> insert(@RequestBody RecPayVO recPayVO) {
-        return recPayService.insert(recPayVO);
+    @ApiOperation(value = "新建收款", notes = "新建收款")
+    @PostMapping({"insert_receipt"})
+    public ResponseResultVO<?> insertReceipt(@RequestBody RecPayVO recPayVO) {
+        return recPayService.insertReceipt(recPayVO);
+    }
+
+    /**
+     * @desc : 新建
+     * @author : 付斌
+     * @date : 2023/1/9 10:48
+     */
+    @ApiOperation(value = "新建退款", notes = "新建退款")
+    @PostMapping({"insert_refund"})
+    public ResponseResultVO<?> insertRefund(@RequestBody RecPayVO recPayVO) {
+        return recPayService.insertRefund(recPayVO);
     }
 
     /**
@@ -78,4 +89,14 @@ public class RecPayController{
     public ResponseResultVO<?> update(@RequestBody RecPayVO recPayVO) {
         return recPayService.update(recPayVO);
     }
+
+    /**
+     * @desc :查询收款明细(编辑用)
+     * @author : 付斌
+     * @date : 2024-02-28 13:24
+     */
+    @PostMapping({"get_rp_for_update/{id}"})
+    public ResponseResultVO<?> getRpForUpdate(@PathVariable String id) {
+        return recPayService.getRpForUpdate(id);
+    }
 }

+ 21 - 0
src/main/java/com/dk/mdm/infrastructure/convert/ivt/InOutRecordConvert.java

@@ -0,0 +1,21 @@
+package com.dk.mdm.infrastructure.convert.ivt;
+
+import com.dk.mdm.model.pojo.ivt.InOutRecord;
+import com.dk.mdm.model.vo.ivt.InOutRecordVO;
+import org.mapstruct.Mapper;
+
+/**
+ * @desc   : 库存流水实体类型转换
+ * @date   : 2024/3/21 14:48
+ * @author : 寇珊珊
+ */
+@Mapper(componentModel = "spring")
+public interface InOutRecordConvert {
+
+    /**
+     * @desc   : VO转pojo
+     * @date   : 2024/3/7 14:31
+     * @author : 寇珊珊
+     */
+    InOutRecord convertToPo(InOutRecordVO inOutRecordVO);
+}

+ 21 - 0
src/main/java/com/dk/mdm/infrastructure/convert/ivt/InventoryBatchConvert.java

@@ -0,0 +1,21 @@
+package com.dk.mdm.infrastructure.convert.ivt;
+
+import com.dk.mdm.model.pojo.ivt.InventoryBatch;
+import com.dk.mdm.model.vo.ivt.InventoryBatchVO;
+import org.mapstruct.Mapper;
+
+/**
+ * @desc   : 存货批次明细实体类型转换
+ * @date   : 2024/3/21 14:48
+ * @author : 寇珊珊
+ */
+@Mapper(componentModel = "spring")
+public interface InventoryBatchConvert {
+
+    /**
+     * @desc   : VO转pojo
+     * @date   : 2024/3/7 14:31
+     * @author : 寇珊珊
+     */
+    InventoryBatch convertToPo(InventoryBatchVO inventoryBatchVO);
+}

+ 3 - 2
src/main/java/com/dk/mdm/mapper/common/CommonMapper.xml

@@ -1310,7 +1310,7 @@
                                                 on tpo.order_id = tpmo.order_id
                             where tpmo.flg_valid
                               and tpmo.owner_type = any (array ['归属类型-主部门' , '归属类型-从部门'])
-                              and tpo.order_id = #{orderId}) mo
+                              and tpo.order_id = #{orderId} ::uuid) mo
                            on mo.owner_id = t.org_id
         where t.flg_valid
 
@@ -1342,7 +1342,8 @@
                                                 on tpo.order_id = tpmo.order_id
                             where tpmo.flg_valid
                               and tpmo.owner_type = any (array ['归属类型-主员工' , '归属类型-从员工'])
-                              and tpo.order_id = #{orderId}) mo
+                              and tpo.order_id = #{orderId} ::uuid
+                     ) mo
                            on mo.owner_id = t.staff_id
         where t.flg_valid
 

+ 2 - 20
src/main/java/com/dk/mdm/mapper/ivt/FreezeItemMapper.java

@@ -23,6 +23,7 @@ public interface FreezeItemMapper extends BaseMapper<FreezeItem>{
      */
     List<FreezeItemResponse> selectByCond(FreezeItemQuery freezeItemQuery);
 
+
     /**
      * @desc   : 根据Id进行查询
      * @author : 宋扬
@@ -30,20 +31,6 @@ public interface FreezeItemMapper extends BaseMapper<FreezeItem>{
      */
     FreezeItemResponse selectById(String id);
 
-    /**
-     * @desc   : 根据商品ID和仓库ID查询库存信息
-     * @author : 宋扬
-     * @date   : 2024/3/15 15:57
-     */
-    List<FreezeItemResponse> selectInvById(String Id);
-
-    /**
-     * @desc   : 根据库存ID修改库存表里的冻结量
-     * @author : 宋扬
-     * @date   : 2024/3/16 10:05
-     */
-    int updateInvFreezeQty(FreezeItemVO freezeItemVO);
-
    /**
     * @desc   : 根据条件进行查询(数量)
     * @author : 宋扬
@@ -51,11 +38,6 @@ public interface FreezeItemMapper extends BaseMapper<FreezeItem>{
     */
     Long countByCond(FreezeItemQuery freezeItemQuery);
 
-    /**
-     * @desc   : 减少库存冻结量
-     * @author : 宋扬
-     * @date   : 2024/3/20 11:07
-     */
-    int updateInvUnFreezeQty(FreezeItemVO freezeItemVO);
+
 }
 

+ 37 - 24
src/main/java/com/dk/mdm/mapper/ivt/FreezeItemMapper.xml

@@ -5,12 +5,16 @@
     <!-- 通用设置 -->
     <!-- 通用查询列 -->
     <sql id="Base_Column_List">
+        item_id, freeze_id, item_index, sku_id, freeze_qty, unfreeze_qty, surplus_qty, remarks, inv_id, 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>
+    <!-- 通用Respons查询列 -->
+    <sql id="Base_Column_List_Respons">
         item.item_id, item.freeze_id, item.item_index, item.sku_id, item.freeze_qty, item.unfreeze_qty, item.surplus_qty, item.remarks, item.inv_id, item.flg_valid
         ,item.cp_id, sku.sku_code, sku.sku_name, sku.sku_model,brand.short_name,wh.wh_name
     </sql>
 
     <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.dk.mdm.model.response.ivt.FreezeItemResponse">
+    <resultMap id="BaseResultMapResponse" type="com.dk.mdm.model.response.ivt.FreezeItemResponse">
         <id column="item_id" property="itemId"/>
                 <result column="freeze_id" property="freezeId" typeHandler="UuidTypeHandler"/>
                 <result column="item_index" property="itemIndex"/>
@@ -31,6 +35,28 @@
                 <result column="op_db_user" property="opDbUser"/>
     </resultMap>
 
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.dk.mdm.model.pojo.ivt.FreezeItem">
+        <id column="item_id" property="itemId"/>
+        <result column="freeze_id" property="freezeId" typeHandler="UuidTypeHandler"/>
+        <result column="item_index" property="itemIndex"/>
+        <result column="sku_id" property="skuId" typeHandler="UuidTypeHandler"/>
+        <result column="freeze_qty" property="freezeQty"/>
+        <result column="unfreeze_qty" property="unfreezeQty"/>
+        <result column="surplus_qty" property="surplusQty"/>
+        <result column="remarks" property="remarks"/>
+        <result column="inv_id" property="invId" typeHandler="UuidTypeHandler"/>
+        <result column="flg_valid" property="flgValid"/>
+        <result column="cp_id" property="cpId"/>
+        <result column="op_create_time" property="opCreateTime" typeHandler="TimestampTypeHandler"/>
+        <result column="op_create_user_id" property="opCreateUserId" typeHandler="UuidTypeHandler"/>
+        <result column="op_update_time" property="opUpdateTime" typeHandler="TimestampTypeHandler"/>
+        <result column="op_update_user_id" property="opUpdateUserId" typeHandler="UuidTypeHandler"/>
+        <result column="op_app_code" property="opAppCode"/>
+        <result column="op_timestamp" property="opTimestamp" typeHandler="TimestampTypeHandler"/>
+        <result column="op_db_user" property="opDbUser"/>
+    </resultMap>
+
     <!-- 通用条件列 -->
     <sql id="Condition">
         <where>
@@ -68,9 +94,9 @@
     </sql>
 
     <!-- 查询表t_psi_freeze_item,(条件查询+分页)列表 -->
-    <select id="selectByCond" resultMap="BaseResultMap">
+    <select id="selectByCond" resultMap="BaseResultMapResponse">
         SELECT
-        <include refid="Base_Column_List"/>
+        <include refid="Base_Column_List_Respons"/>
         FROM dkic_b.t_psi_freeze_item AS item
         LEFT JOIN dkic_b.t_mst_goods_sku AS sku ON item.sku_id=sku.sku_id
         LEFT JOIN dkic_b.t_psi_inventory AS inv ON inv.inv_id=item.inv_id
@@ -87,37 +113,24 @@
         <include refid="Condition"/>
     </select>
 
-    <!-- 根据主键查询表t_psi_freeze_item的一行数据 -->
-    <select id="selectById" resultMap="BaseResultMap">
+   <!-- 根据主键查询表t_psi_freeze_item的一行数据 -->
+    <select id="selectById" resultMap="BaseResultMapResponse">
         SELECT
             item.item_id, item.freeze_id, item.item_index, item.sku_id, item.freeze_qty, item.unfreeze_qty
              , item.surplus_qty, item.remarks, item.inv_id, item.flg_valid,item.cp_id
         FROM dkic_b.t_psi_freeze_item AS item
         WHERE item.item_id = #{itemId}::uuid
-        for update
     </select>
 
-    <!-- 根据商品ID和仓库ID查询库存信息-->
-    <select id="selectInvById" resultMap="BaseResultMap">
+
+    <!-- 根据主键锁定表t_psi_freeze_item的一行数据 -->
+    <select id="selectByIdForUpdate" resultMap="BaseResultMap">
         SELECT
-            inv.inv_qty,inv.freeze_qty,inv.usable_qty,inv.outing_qty
-        FROM dkic_b.t_psi_inventory AS inv
-        WHERE  inv.inv_id=#{invId}::uuid
+        <include refid="Base_Column_List"/>
+        FROM t_psi_freeze_item
+        WHERE item_id = #{id}::uuid
         for update
     </select>
 
-    <!-- 根据库存ID修改库存表里的冻结量-->
-    <update id="updateInvFreezeQty">
-        update dkic_b.t_psi_inventory
-        set freeze_qty = freeze_qty + #{freezeQty}
-        where inv_id = #{invId} ::uuid
-    </update>
-
-    <!-- 根据库存ID修改库存表里的冻结量-->
-    <update id="updateInvUnFreezeQty">
-        update dkic_b.t_psi_inventory
-        set freeze_qty = freeze_qty - #{unfreezeQty}
-        where inv_id = #{invId} ::uuid
-    </update>
 
 </mapper>

+ 43 - 7
src/main/java/com/dk/mdm/mapper/ivt/FreezeMapper.xml

@@ -5,6 +5,11 @@
     <!-- 通用设置 -->
     <!-- 通用查询列 -->
     <sql id="Base_Column_List">
+        freeze_id, freeze_no, cus_id, org_id, staff_id, freeze_status, freeze_date, auto_unfreeze_date, sum_quantity, remarks, 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>
+
+    <!-- 冻结一览查询列 -->
+    <sql id="Base_Column_List_Respons">
         fre.freeze_id,fre.freeze_no,fre.cus_id,fre.org_id,fre.staff_id
         ,sys.f_get_name_i18n(tdk.kind_name_i18n,'zh_CN' ) AS "freezeStatusName"
         ,fre.freeze_date,fre.auto_unfreeze_date ,fre.sum_quantity, fre.remarks, fre.make_staff
@@ -13,7 +18,7 @@
     </sql>
 
     <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.dk.mdm.model.response.ivt.FreezeResponse">
+    <resultMap id="BaseResultMapResponse" type="com.dk.mdm.model.response.ivt.FreezeResponse">
         <id column="freeze_id" property="freezeId"/>
                 <result column="freeze_no" property="freezeNo"/>
                 <result column="cus_id" property="cusId" typeHandler="UuidTypeHandler"/>
@@ -37,7 +42,31 @@
                 <result column="op_db_user" property="opDbUser"/>
     </resultMap>
 
-    <!-- 通用条件列 -->
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.dk.mdm.model.pojo.ivt.Freeze">
+        <id column="freeze_id" property="freezeId"/>
+        <result column="freeze_no" property="freezeNo"/>
+        <result column="cus_id" property="cusId" typeHandler="UuidTypeHandler"/>
+        <result column="org_id" property="orgId" typeHandler="UuidTypeHandler"/>
+        <result column="staff_id" property="staffId" typeHandler="UuidTypeHandler"/>
+        <result column="freeze_status" property="freezeStatus"/>
+        <result column="freeze_date" property="freezeDate" typeHandler="TimestampTypeHandler"/>
+        <result column="auto_unfreeze_date" property="autoUnfreezeDate" typeHandler="TimestampTypeHandler"/>
+        <result column="sum_quantity" property="sumQuantity"/>
+        <result column="remarks" property="remarks"/>
+        <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="op_create_time" property="opCreateTime" typeHandler="TimestampTypeHandler"/>
+        <result column="op_create_user_id" property="opCreateUserId" typeHandler="UuidTypeHandler"/>
+        <result column="op_update_time" property="opUpdateTime" typeHandler="TimestampTypeHandler"/>
+        <result column="op_update_user_id" property="opUpdateUserId" typeHandler="UuidTypeHandler"/>
+        <result column="op_app_code" property="opAppCode"/>
+        <result column="op_timestamp" property="opTimestamp" typeHandler="TimestampTypeHandler"/>
+        <result column="op_db_user" property="opDbUser"/>
+    </resultMap>
+      <!-- 通用条件列 -->
     <sql id="Condition">
         <where>
             <if test="freezeNo != null and freezeNo != ''">
@@ -86,9 +115,9 @@
     </sql>
 
     <!-- 查询表t_psi_freeze,(条件查询+分页)列表 -->
-    <select id="selectByCond" resultMap="BaseResultMap">
+    <select id="selectByCond" resultMap="BaseResultMapResponse">
         SELECT
-        <include refid="Base_Column_List"/>
+        <include refid="Base_Column_List_Respons"/>
         FROM dkic_b.t_psi_freeze AS fre
         lEFT JOIN dkic_b.t_mst_customer AS cus ON cus.cus_id=fre.cus_id
         lEFT JOIN dkic_b.t_mst_staff AS staff ON  staff.staff_id=fre.staff_id
@@ -110,9 +139,9 @@
     </select>
 
     <!-- 根据主键查询表t_psi_freeze的一行数据 -->
-    <select id="selectById" resultMap="BaseResultMap">
+    <select id="selectById" resultMap="BaseResultMapResponse">
         SELECT
-        <include refid="Base_Column_List"/>
+        <include refid="Base_Column_List_Respons"/>
         FROM dkic_b.t_psi_freeze AS fre
         lEFT JOIN dkic_b.t_mst_customer AS cus ON cus.cus_id=fre.cus_id
         lEFT JOIN dkic_b.t_mst_staff AS staff ON  staff.staff_id=fre.staff_id
@@ -122,6 +151,13 @@
         WHERE fre.freeze_id = #{freezeId}::uuid
     </select>
 
-
+    <!-- 根据主键锁定表t_psi_freeze的一行数据 -->
+    <select id="selectByIdForUpdate" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM t_psi_freeze
+        WHERE freeze_id = #{freezeId}
+        for update
+    </select>
 
 </mapper>

+ 8 - 7
src/main/java/com/dk/mdm/mapper/ivt/InboundMapper.xml

@@ -494,11 +494,11 @@
         tmgs.price_purchase AS  list_price_purchase,
         tmgs.sku_images AS  list_sku_images,
 
-        ( 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
-        ,
+        ( 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
+--         ,
         tmgs.price_standard AS list_price_std
     </sql>
 
@@ -509,9 +509,9 @@
         <include refid="Base_Column_List_Item_Response"/>,
         <include refid="Base_Column_List_Item_Response_Join"/>
         FROM dkic_b.t_psi_inbound  tpi
-        left join dkic_b.t_psi_inbound_item tpii  on tpi.into_id = tpii.into_id
+        INNER  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
+--         left join  dkic_b.t_psi_inventory  tpit on tpit.sku_id = tpii.sku_id
         <include refid="Condition"/>
         <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
             limit #{end} offset #{start}
@@ -523,6 +523,7 @@
         SELECT
         count(1)
         FROM dkic_b.t_psi_inbound tpi
+        left join dkic_b.t_psi_inbound_item tpii  on tpi.into_id = tpii.into_id
         <include refid="Condition"/>
     </select>
 

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

@@ -73,8 +73,8 @@
         <result column="item_amt" property="itemAmt"/>
         <result column="non_std_code" property="nonStdCode"/>
         <result column="out_status" property="outStatus"/>
-        <result column="outoing_qty" property="outingQty"/>
-        <result column="outoing_amt" property="outingAmt"/>
+        <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="remarks" property="remarks"/>
@@ -346,17 +346,17 @@
             <if test=" et!=null and et.nonStdCode != null">
                 non_std_code = #{et.nonStdCode,jdbcType=VARCHAR},
             </if>
-            <if test=" et!=null and et.intoStatus != null">
-                into_status = #{et.intoStatus,jdbcType=VARCHAR},
+            <if test=" et!=null and et.outStatus != null">
+                out_status = #{et.outStatus,jdbcType=VARCHAR},
             </if>
-            <if test=" et!=null and et.outoingQty != null">
-                outoing_qty = outoing_qty + #{et.outoingQty,jdbcType=NUMERIC},
+            <if test=" et!=null and et.outingQty != null">
+                outing_qty = outing_qty + #{et.outingQty,jdbcType=NUMERIC},
             </if>
-            <if test=" et!=null and et.outoingAmt != null">
-                outoing_amt = outoing_amt + #{et.outoingAmt,jdbcType=NUMERIC},
+            <if test=" et!=null and et.outingAmt != null">
+                outing_amt = outing_amt + #{et.outingAmt,jdbcType=NUMERIC},
             </if>
             <if test=" et!=null and et.outQty != null">
-                out_qty = out_qty + #{outQty,jdbcType=NUMERIC},
+                out_qty = out_qty + #{et.outQty,jdbcType=NUMERIC},
             </if>
             <if test=" et!=null and et.outAmt != null">
                 out_amt = out_amt + #{et.outAmt,jdbcType=NUMERIC},
@@ -372,7 +372,7 @@
             </if>
         </set>
         where item_id = #{et.itemId,typeHandler=UuidTypeHandler}
-        and  item_qty >= (out_qty + outoing_qty)
+        and  item_qty >= (out_qty + outing_qty)
     </update>
 
 </mapper>

+ 8 - 1
src/main/java/com/dk/mdm/mapper/ivt/InventoryMapper.java

@@ -6,6 +6,7 @@ import com.dk.mdm.model.query.ivt.InOutRecordQuery;
 import com.dk.mdm.model.query.ivt.InventoryQuery;
 import com.dk.mdm.model.response.ivt.InOutRecordResponse;
 import com.dk.mdm.model.response.ivt.InventoryResponse;
+import com.dk.mdm.model.vo.ivt.FreezeItemVO;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
@@ -37,6 +38,12 @@ public interface InventoryMapper extends BaseMapper<Inventory>{
      * @author : 寇珊珊
      */
     Long countByCond(InventoryQuery inventoryQuery);
-	
+
+    /**
+     * @desc   : 条件查询--查单条
+     * @date   : 2024/3/20 17:00
+     * @author : 寇珊珊
+     */
+   InventoryResponse  selectByOther(InventoryQuery inventoryQuery);
 }
 

+ 31 - 1
src/main/java/com/dk/mdm/mapper/ivt/InventoryMapper.xml

@@ -56,6 +56,10 @@
                 <result column="brand_name" property="brandName"/>
                 <result column="short_name" property="shortName"/>
                 <result column="wh_name" property="whName"/>
+                <result column="price_purchase" property="pricePurchase"/>
+                <result column="price_standard" property="priceStandard"/>
+                <result column="price_wholesale" property="priceWholesale"/>
+                <result column="price_limited" property="priceLimited"/>
     </resultMap>
 
     <!-- 通用条件列 -->
@@ -113,6 +117,10 @@
         ,tmgs.sku_model
         ,tmgs.sku_name
         ,tmgs.sku_spec
+        ,tmgs.price_purchase
+        ,tmgs.price_standard
+        ,tmgs.price_wholesale
+        ,tmgs.price_limited
         ,tmgb.brand_name
         ,tmgb.short_name
         ,tmw.wh_name
@@ -136,6 +144,7 @@
     <sql id="Join_Table">
         left join dkic_b.t_mst_goods_sku tmgs on tmgs.sku_id = tpi.sku_id
         left join dkic_b.t_mst_warehouse tmw on tmw.wh_id = tpi.wh_id
+        LEFT JOIN dkic_b.t_mst_goods_brand tmgb ON tmgb.brand_id = tmgs.brand_id
     </sql>
 
 
@@ -152,7 +161,7 @@
         SELECT
         <include refid="Base_Column_List"/>
         FROM dkic_b.t_psi_inventory
-        WHERE inv_id = #{invId}
+        WHERE inv_id = #{id}::uuid
         for update
     </select>
 
@@ -203,4 +212,25 @@
             )
         </foreach>
     </insert>
+
+    <!-- 查询表dkic_b.t_psi_inventory,(条件查询+分页)列表 -->
+    <select id="selectByOther" resultMap="BaseResultMapResponse">
+        SELECT
+        <include refid="Base_Column_List_Response"/>
+        FROM dkic_b.t_psi_inventory tpi
+        <where>
+            <if test="whId != null and whId != ''">
+                AND tpi.wh_id = #{whId}::uuid
+            </if>
+            <if test="skuId != null and skuId != ''">
+                AND tpi.sku_id = #{skuId}::uuid
+            </if>
+            <if test="nonStdCode != null and nonStdCode != ''">
+                AND tpi.non_std_code = #{nonStdCode}
+            </if>
+            <if test="nonStdCode == null and nonStdCode == ''">
+                AND tpi.non_std_code = '-'
+            </if>
+        </where>
+    </select>
 </mapper>

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

@@ -185,6 +185,8 @@
                tpoi.cost_amt,
                tpoi.flg_valid,
                tpoi.cp_id,
+                tpi.inv_qty                                     as  "invQty",
+                tpi.usable_qty                                  as  "usableQty",
                tmw.wh_name                                      as "whName",
                sys.f_get_name_i18n(tdk.kind_name_i18n, #{i18n}) as "outStatusName"
         FROM dkic_b.t_psi_outbound_item as tpoi

+ 5 - 0
src/main/java/com/dk/mdm/mapper/mac/RecPayItemMapper.xml

@@ -181,4 +181,9 @@
             )
         </foreach>
     </insert>
+
+    <delete id="deleteById">
+        DELETE FROM dkic_b.t_psi_order_item
+        WHERE item_id = #{id}::UUID;
+    </delete>
 </mapper>

+ 76 - 17
src/main/java/com/dk/mdm/mapper/mac/RecPayMapper.xml

@@ -5,7 +5,7 @@
     <!-- 通用设置 -->
     <!-- 通用查询列 -->
     <sql id="Base_Column_List">
-        rp_id, rp_no, rp_type, object_id, org_id, staff_id, sum_amt_rec, sum_amt_pay, acc_date, remarks, annex_paths, biznis_type, biznis_id, biznis_no, flg_lock, 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
+        rp_id, rp_no, rp_type, object_id, org_id, staff_id, sum_amt_rec, sum_amt_pay, sum_amt_receivable_handle, sum_amt_payable_handle, sum_waive_amt, acc_date, remarks, annex_paths, biznis_type, biznis_id, biznis_no, flg_lock, 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>
 
     <!-- 通用查询映射结果 -->
@@ -18,7 +18,10 @@
                 <result column="staff_id" property="staffId" typeHandler="UuidTypeHandler"/>
                 <result column="sum_amt_rec" property="sumAmtRec"/>
                 <result column="sum_amt_pay" property="sumAmtPay"/>
-            <result column="acc_date" property="accDate" typeHandler="TimestampTypeHandler"/>
+                <result column="sum_amt_receivable_handle" property="sumAmtReceivableHandle"/>
+                <result column="sum_amt_payable_handle" property="sumAmtPayableHandle"/>
+                <result column="sum_waive_amt" property="sumWaiveAmt"/>
+                <result column="acc_date" property="accDate" typeHandler="TimestampTypeHandler"/>
                 <result column="remarks" property="remarks"/>
                 <result column="annex_paths" property="annexPaths" typeHandler="JsonTypeHandler"/>
                 <result column="biznis_type" property="biznisType"/>
@@ -26,15 +29,15 @@
                 <result column="biznis_no" property="biznisNo"/>
                 <result column="flg_lock" property="flgLock"/>
                 <result column="make_staff" property="makeStaff" typeHandler="UuidTypeHandler"/>
-            <result column="make_time" property="makeTime" typeHandler="TimestampTypeHandler"/>
+                <result column="make_time" property="makeTime" typeHandler="TimestampTypeHandler"/>
                 <result column="flg_valid" property="flgValid"/>
                 <result column="cp_id" property="cpId"/>
-            <result column="op_create_time" property="opCreateTime" typeHandler="TimestampTypeHandler"/>
+                <result column="op_create_time" property="opCreateTime" typeHandler="TimestampTypeHandler"/>
                 <result column="op_create_user_id" property="opCreateUserId" typeHandler="UuidTypeHandler"/>
-            <result column="op_update_time" property="opUpdateTime" typeHandler="TimestampTypeHandler"/>
+                <result column="op_update_time" property="opUpdateTime" typeHandler="TimestampTypeHandler"/>
                 <result column="op_update_user_id" property="opUpdateUserId" typeHandler="UuidTypeHandler"/>
                 <result column="op_app_code" property="opAppCode"/>
-            <result column="op_timestamp" property="opTimestamp" typeHandler="TimestampTypeHandler"/>
+                <result column="op_timestamp" property="opTimestamp" typeHandler="TimestampTypeHandler"/>
                 <result column="op_db_user" property="opDbUser"/>
     </resultMap>
 
@@ -48,7 +51,10 @@
                 <result column="staff_id" property="staffId" typeHandler="UuidTypeHandler"/>
                 <result column="sum_amt_rec" property="sumAmtRec"/>
                 <result column="sum_amt_pay" property="sumAmtPay"/>
-            <result column="acc_date" property="accDate" typeHandler="TimestampTypeHandler"/>
+                <result column="sum_amt_receivable_handle" property="sumAmtReceivableHandle"/>
+                <result column="sum_amt_payable_handle" property="sumAmtPayableHandle"/>
+                <result column="sum_waive_amt" property="sumWaiveAmt"/>
+                <result column="acc_date" property="accDate" typeHandler="TimestampTypeHandler"/>
                 <result column="remarks" property="remarks"/>
                 <result column="annex_paths" property="annexPaths" typeHandler="JsonTypeHandler"/>
                 <result column="biznis_type" property="biznisType"/>
@@ -56,15 +62,15 @@
                 <result column="biznis_no" property="biznisNo"/>
                 <result column="flg_lock" property="flgLock"/>
                 <result column="make_staff" property="makeStaff" typeHandler="UuidTypeHandler"/>
-            <result column="make_time" property="makeTime" typeHandler="TimestampTypeHandler"/>
+                <result column="make_time" property="makeTime" typeHandler="TimestampTypeHandler"/>
                 <result column="flg_valid" property="flgValid"/>
                 <result column="cp_id" property="cpId"/>
-            <result column="op_create_time" property="opCreateTime" typeHandler="TimestampTypeHandler"/>
+                <result column="op_create_time" property="opCreateTime" typeHandler="TimestampTypeHandler"/>
                 <result column="op_create_user_id" property="opCreateUserId" typeHandler="UuidTypeHandler"/>
-            <result column="op_update_time" property="opUpdateTime" typeHandler="TimestampTypeHandler"/>
+                <result column="op_update_time" property="opUpdateTime" typeHandler="TimestampTypeHandler"/>
                 <result column="op_update_user_id" property="opUpdateUserId" typeHandler="UuidTypeHandler"/>
                 <result column="op_app_code" property="opAppCode"/>
-            <result column="op_timestamp" property="opTimestamp" typeHandler="TimestampTypeHandler"/>
+                <result column="op_timestamp" property="opTimestamp" typeHandler="TimestampTypeHandler"/>
                 <result column="op_db_user" property="opDbUser"/>
     </resultMap>
 
@@ -92,6 +98,15 @@
             <if test="sumAmtPay != null">
                 AND t.sum_amt_pay = #{sumAmtPay}
             </if>
+            <if test="sumAmtReceivableHandle != null">
+                AND t.sum_amt_receivable_handle = #{sumAmtReceivableHandle}
+            </if>
+            <if test="sumAmtPayableHandle != null">
+                AND t.sum_amt_payable_handle = #{sumAmtPayableHandle}
+            </if>
+            <if test="sumWaiveAmt != null">
+                AND t.sum_waive_amt = #{sumWaiveAmt}
+            </if>
             <if test="accDate != null">
                 AND t.acc_date = #{accDate}
             </if>
@@ -169,6 +184,9 @@
                tms.staff_name                                    as "staffName",
                t.sum_amt_rec,
                t.sum_amt_pay,
+               t.sum_amt_receivable_handle,
+               t.sum_amt_payable_handle,
+               t.sum_waive_amt,
                t.acc_date,
                t.remarks,
                t.annex_paths,
@@ -184,11 +202,12 @@
         from dkic_b.t_mac_rec_pay as t
                  left join dkic_b.t_mst_customer tmc
                            on tmc.cus_id = t.object_id and t.rp_type in ('收付款类型-收款', '收付款类型-退收款')
-                 left join sys.t_data_kind as tdk1 on t.rp_type = tdk1.kind_code
+                 left join sys.t_data_kind as tdk1 on tdk1.kind_code = t.rp_type
                  left join dkic_b.t_mst_org tmo on tmo.org_id = t.org_id
                  left join dkic_b.t_mst_staff tms on tms.staff_id = t.staff_id
                  left join dkic_b.t_mst_staff as makestaff on makestaff.staff_id = t.make_staff
         <include refid="Condition"/>
+        order by t.op_create_time desc
         <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
             limit #{end} offset #{start}
         </if>
@@ -205,11 +224,45 @@
     </select>
 
     <!-- 根据主键查询表t_mac_rec_pay的一行数据 -->
-    <select id="selectById" resultMap="BaseResultMap">
-        SELECT
-        <include refid="Base_Column_List"/>
-        FROM t_mac_rec_pay
-        WHERE rp_id = #{rpId}::uuid
+    <select id="selectById" resultMap="BaseResultMapResponse">
+        select t.rp_id,
+               t.rp_no,
+               t.rp_type,
+               sys.f_get_name_i18n(tdk1.kind_name_i18n, #{i18n}) as "rpTypeName",
+               t.object_id,
+               tmc.cus_code                                      as "cusCode",
+               tmc.cus_name                                      as "cusName",
+               tmc.cus_phone                                     as "cusPhone",
+               tmc.address_full                                  as "addressFull",
+               t.org_id,
+               tmo.org_name                                      as "orgName",
+               t.staff_id,
+               tms.staff_name                                    as "staffName",
+               t.sum_amt_rec,
+               t.sum_amt_pay,
+               t.sum_amt_receivable_handle,
+               t.sum_amt_payable_handle,
+               t.sum_waive_amt,
+               t.acc_date,
+               t.remarks,
+               t.annex_paths,
+               t.biznis_type,
+               t.biznis_id,
+               t.biznis_no,
+               t.flg_lock,
+               t.make_staff,
+               makestaff.staff_name                              as "makeStaffName",
+               t.make_time,
+               t.flg_valid,
+               t.cp_id
+        from dkic_b.t_mac_rec_pay as t
+                 left join dkic_b.t_mst_customer tmc
+                           on tmc.cus_id = t.object_id and t.rp_type in ('收付款类型-收款', '收付款类型-退收款')
+                 left join sys.t_data_kind as tdk1 on tdk1.kind_code = t.rp_type
+                 left join dkic_b.t_mst_org tmo on tmo.org_id = t.org_id
+                 left join dkic_b.t_mst_staff tms on tms.staff_id = t.staff_id
+                 left join dkic_b.t_mst_staff as makestaff on makestaff.staff_id = t.make_staff
+        WHERE t.rp_id = #{id}::uuid
     </select>
 
     <!-- 根据主键锁定表t_mac_rec_pay的一行数据 -->
@@ -241,6 +294,9 @@
             staff_id,
             sum_amt_rec,
             sum_amt_pay,
+            sum_amt_receivable_handle,
+            sum_amt_payable_handle,
+            sum_waive_amt,
             acc_date,
             remarks,
             annex_paths,
@@ -265,6 +321,9 @@
                 #{item.staffId}::uuid,
                 #{item.sumAmtRec},
                 #{item.sumAmtPay},
+                #{item.sumAmtReceivableHandle},
+                #{item.sumAmtPayableHandle},
+                #{item.sumWaiveAmt},
                 #{item.accDate},
                 #{item.remarks},
                 #{item.annexPaths},

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

@@ -300,10 +300,11 @@
         ,tmgs.sku_spec  as "skuSpec"
         ,tmgs.price_purchase  as "pricePurchase"
         ,tmgs.price_standard  as "priceStandard"
-
+        ,sys.f_get_name_i18n(tdk1.kind_name_i18n, ${i18n}) as "intoStatusName"
         FROM dkic_b.t_psi_purchase_item tppi
         left join dkic_b.t_mst_goods_sku tmgs on tppi.sku_id = tmgs.sku_id
         left join dkic_b.t_mst_goods_brand tmgb on tmgb.brand_id = tmgs.brand_id
+        left join sys.t_data_kind tdk1 on tdk1.kind_code = tppi.into_status
         <include refid="Condition_1"/>
         <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
             limit #{end} offset #{start}

+ 9 - 5
src/main/java/com/dk/mdm/mapper/pur/PurchaseMapper.xml

@@ -142,6 +142,8 @@
         <result column="supplierName" property="supplierName"/>
         <result column="whName" property="whName"/>
         <result column="displayedStatus" property="displayedStatus"/>
+        <result column="intoStatusName" property="intoStatusName"/>
+        <result column="purStatusName" property="purStatusName"/>
 
         <collection property="purchaseItemResponseList" resultMap="purchaseItemListMap" columnPrefix="list_"/>
     </resultMap>
@@ -450,9 +452,11 @@
         ,tms.staff_name as "staffName"
         ,tms1.staff_name as "makeStaffName"
         ,tmp.sup_name as "supplierName"
-        ,tmw.wh_name as "whName",
-        CASE
-        WHEN tpp.pur_status = '订单状态-暂存' THEN   sys.f_get_name_i18n(tdk.kind_name_i18n, #{i18n})
+        ,tmw.wh_name as "whName"
+        ,sys.f_get_name_i18n(tdk1.kind_name_i18n, #{i18n}) as "intoStatusName"
+        ,sys.f_get_name_i18n(tdk2.kind_name_i18n, #{i18n}) as "purStatusName"
+        ,CASE
+        WHEN tpp.pur_status = '订单状态-暂存' THEN   sys.f_get_name_i18n(tdk2.kind_name_i18n, #{i18n})
         WHEN tpp.pur_status != '订单状态-暂存' THEN  sys.f_get_name_i18n(tdk1.kind_name_i18n, #{i18n})
         END AS "displayedStatus"
         FROM dkic_b.t_psi_purchase tpp
@@ -461,8 +465,8 @@
         Left join dkic_b.t_mst_staff tms on tpp.staff_id = tms.staff_id
         Left join dkic_b.t_mst_staff tms1 on tpp.make_staff = tms1.staff_id
         Left join dkic_b.t_mst_warehouse tmw on tpp.wh_id = tmw.wh_id
-        left join sys.t_data_kind as tdk on tdk.kind_code = tpp.pur_status
-        left join sys.t_data_kind as tdk1 on tdk1.kind_code = tpp.into_status
+        left join sys.t_data_kind tdk1 on tdk1.kind_code = tpp.into_status
+        left join sys.t_data_kind tdk2 on tdk2.kind_code = tpp.pur_status
         <include refid="Condition_1"/>
         <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
             limit #{end} offset #{start}

+ 9 - 1
src/main/java/com/dk/mdm/mapper/sale/MultiOwnerMapper.java

@@ -2,6 +2,7 @@ package com.dk.mdm.mapper.sale;
 
 import com.dk.mdm.model.pojo.sale.MultiOwner;
 import com.dk.common.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 /**
@@ -9,6 +10,13 @@ import org.springframework.stereotype.Repository;
 */
 @Repository
 public interface MultiOwnerMapper extends BaseMapper<MultiOwner>{
-	
+
+
+    /**
+     * @desc : 删除明细(通过订单Id)
+     * @author : 付斌
+     * @date : 2024-03-03 14:17
+     */
+    int deleteByOrderId(@Param("orderId") String orderId);
 }
 

+ 10 - 6
src/main/java/com/dk/mdm/mapper/sale/MultiOwnerMapper.xml

@@ -83,7 +83,7 @@
     <select id="selectByCond" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List"/>
-        FROM t_psi_multi_owner
+        FROM dkic_b.t_psi_multi_owner
         <include refid="Condition"/>
         <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
             limit #{end} offset #{start}
@@ -94,7 +94,7 @@
     <select id="countByCond" resultType="Long">
         SELECT
         count(1)
-        FROM t_psi_multi_owner
+        FROM dkic_b.t_psi_multi_owner
         <include refid="Condition"/>
     </select>
 
@@ -102,7 +102,7 @@
     <select id="selectById" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List"/>
-        FROM t_psi_multi_owner
+        FROM dkic_b.t_psi_multi_owner
         WHERE multi_id = #{multiId}::uuid
     </select>
 
@@ -110,7 +110,7 @@
     <select id="selectByIdForUpdate" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List"/>
-        FROM t_psi_multi_owner
+        FROM dkic_b.t_psi_multi_owner
         WHERE multi_id = #{id}::uuid
         for update
     </select>
@@ -119,13 +119,13 @@
     <select id="selectByIdsForUpdate" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List"/>
-        FROM t_psi_multi_owner
+        FROM dkic_b.t_psi_multi_owner
         <include refid="idsForeach"/>
         for update
     </select>
 
     <insert id="insertBatch">
-        insert into t_psi_multi_owner
+        insert into dkic_b.t_psi_multi_owner
         (
         <trim suffixOverrides=",">
             order_id,
@@ -150,4 +150,8 @@
             )
         </foreach>
     </insert>
+
+    <delete id="deleteByOrderId">
+        DELETE FROM dkic_b.t_psi_multi_owner WHERE order_id = #{orderId}::uuid
+    </delete>
 </mapper>

+ 4 - 3
src/main/java/com/dk/mdm/model/pojo/ivt/InOutRecord.java

@@ -17,6 +17,7 @@ import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 /**
@@ -126,9 +127,9 @@ public class InOutRecord extends PageInfo<InOutRecord> implements Serializable {
      */
     @Excel(name = "入库日期")
     @ApiModelProperty(value = "入库日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime accDate;
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class, updateStrategy = FieldStrategy.IGNORED)
+    private LocalDate accDate;
 
 
     /**

+ 15 - 0
src/main/java/com/dk/mdm/model/pojo/mac/RecPay.java

@@ -107,6 +107,21 @@ public class RecPay extends PageInfo<RecPay> implements Serializable {
     private BigDecimal sumAmtPay;
 
 
+    @Excel(name = "合计应收冲抵金额")
+    @ApiModelProperty(value = "合计应收冲抵金额")
+    private BigDecimal sumAmtReceivableHandle;
+
+
+    @Excel(name = "合计应付冲抵金额")
+    @ApiModelProperty(value = "合计应付冲抵金额")
+    private BigDecimal sumAmtPayableHandle;
+
+
+    @Excel(name = "合计核销金额")
+    @ApiModelProperty(value = "合计核销金额")
+    private BigDecimal sumWaiveAmt;
+
+
     /**
      * 收付款日期 (账务日期)
      */

+ 4 - 4
src/main/java/com/dk/mdm/model/query/ivt/InOutRecordQuery.java

@@ -17,6 +17,7 @@ import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 /**
@@ -109,10 +110,9 @@ public class InOutRecordQuery extends PageInfo<InOutRecordQuery>  {
      * 入库日期
      */
     @ApiModelProperty(value = "入库日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime accDate;
-
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class, updateStrategy = FieldStrategy.IGNORED)
+    private LocalDate accDate;
 
     /**
      * 有效标识 (1:正常 0:停用)

+ 15 - 0
src/main/java/com/dk/mdm/model/query/mac/RecPayQuery.java

@@ -109,6 +109,21 @@ public class RecPayQuery extends PageInfo<RecPayQuery> implements Serializable {
     private BigDecimal sumAmtPay;
 
 
+    @Excel(name = "合计应收冲抵金额")
+    @ApiModelProperty(value = "合计应收冲抵金额")
+    private BigDecimal sumAmtReceivableHandle;
+
+
+    @Excel(name = "合计应付冲抵金额")
+    @ApiModelProperty(value = "合计应付冲抵金额")
+    private BigDecimal sumAmtPayableHandle;
+
+
+    @Excel(name = "合计核销金额")
+    @ApiModelProperty(value = "合计核销金额")
+    private BigDecimal sumWaiveAmt;
+
+
     /**
      * 收付款日期 (账务日期)
      */

+ 4 - 3
src/main/java/com/dk/mdm/model/response/ivt/InOutRecordResponse.java

@@ -17,6 +17,7 @@ import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 /**
@@ -117,9 +118,9 @@ public class InOutRecordResponse  {
      */
     @Excel(name = "入库日期")
     @ApiModelProperty(value = "入库日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime accDate;
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class, updateStrategy = FieldStrategy.IGNORED)
+    private LocalDate accDate;
 
 
     /**

+ 30 - 0
src/main/java/com/dk/mdm/model/response/ivt/InventoryResponse.java

@@ -185,6 +185,36 @@ public class InventoryResponse {
     private String whName;
 
 
+    /**
+     * 采购价
+     */
+    @Excel(name = "采购价")
+    @ApiModelProperty(value = "采购价")
+    private BigDecimal pricePurchase;
+
+    /**
+     * 零售价
+     */
+    @Excel(name = "零售价")
+    @ApiModelProperty(value = "零售价")
+    private BigDecimal priceStandard;
+
+
+    /**
+     * 批发价
+     */
+    @Excel(name = "批发价")
+    @ApiModelProperty(value = "批发价")
+    private BigDecimal priceWholesale;
+
+
+    /**
+     * 销售限价
+     */
+    @Excel(name = "销售限价")
+    @ApiModelProperty(value = "销售限价")
+    private BigDecimal priceLimited;
+
 
 
     private static final long serialVersionUID = 1L;

+ 3 - 0
src/main/java/com/dk/mdm/model/response/mac/RecPayItemResponse.java

@@ -209,6 +209,9 @@ public class RecPayItemResponse extends PageInfo<RecPayItemResponse> implements
     private String opDbUser;
 
 
+    @ApiModelProperty(value = "账号名称")
+    private String macName;
+
     /*
      * 相关属性
      * @TableField(exist = false)

+ 15 - 0
src/main/java/com/dk/mdm/model/response/mac/RecPayResponse.java

@@ -109,6 +109,21 @@ public class RecPayResponse extends PageInfo<RecPayResponse> implements Serializ
     private BigDecimal sumAmtPay;
 
 
+    @Excel(name = "合计应收冲抵金额")
+    @ApiModelProperty(value = "合计应收冲抵金额")
+    private BigDecimal sumAmtReceivableHandle;
+
+
+    @Excel(name = "合计应付冲抵金额")
+    @ApiModelProperty(value = "合计应付冲抵金额")
+    private BigDecimal sumAmtPayableHandle;
+
+
+    @Excel(name = "合计核销金额")
+    @ApiModelProperty(value = "合计核销金额")
+    private BigDecimal sumWaiveAmt;
+
+
     /**
      * 收付款日期 (账务日期)
      */

+ 3 - 0
src/main/java/com/dk/mdm/model/response/pur/PurchaseItemResponse.java

@@ -329,6 +329,9 @@ public class PurchaseItemResponse extends PageInfo<PurchaseItemResponse> impleme
     @Excel(name = "商品品牌简称")
     @ApiModelProperty(value = "商品品牌简称")
     private String shortName;
+
+    @ApiModelProperty(value = "入库状态")
+    private String intoStatusName;
     /*
      * 相关属性
      * @TableField(exist = false)

+ 3 - 0
src/main/java/com/dk/mdm/model/response/pur/PurchaseResponse.java

@@ -420,6 +420,9 @@ public class PurchaseResponse extends PageInfo<PurchaseResponse> implements Seri
     @ApiModelProperty(value = "采购订单明细")
     private List<PurchaseItemResponse> purchaseItemResponseList;
 
+    @ApiModelProperty(value = "订单状态名称")
+    private String purStatusName;
+
 
     /*
      * 相关属性

+ 50 - 12
src/main/java/com/dk/mdm/model/vo/ivt/InOutRecordVO.java

@@ -1,22 +1,16 @@
 package com.dk.mdm.model.vo.ivt;
 
-import cn.afterturn.easypoi.excel.annotation.Excel;
-import com.baomidou.mybatisplus.annotation.*;
-import com.dk.common.infrastructure.annotaiton.ExportTitle;
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
 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;
 
-import java.io.Serializable;
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 /**
@@ -109,9 +103,9 @@ public class InOutRecordVO  {
      * 入库日期
      */
     @ApiModelProperty(value = "入库日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime accDate;
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class, updateStrategy = FieldStrategy.IGNORED)
+    private LocalDate accDate;
 
 
     /**
@@ -146,6 +140,50 @@ public class InOutRecordVO  {
      */
 
 
+    @ApiModelProperty(value = "库存类型(入库,出库,销退出,采退入,移动)")
+    private String inventoryType;
+
+    @TableField(typeHandler = UuidTypeHandler.class)
+    @ApiModelProperty(value = "入库单id")
+    private String intoId;
+
+    @ApiModelProperty(value = "入库日期")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class, updateStrategy = FieldStrategy.IGNORED)
+    private LocalDate intoDate;
+
+    @ApiModelProperty(value = "已出库数量")
+    private BigDecimal outQty;
+
+    @TableField(typeHandler = UuidTypeHandler.class)
+    @ApiModelProperty(value = "出库单id")
+    private String outId;
+
+    @ApiModelProperty(value = "出库价")
+    private BigDecimal  priceOut;
+
+    @ApiModelProperty(value = "出库金额")
+    private BigDecimal  outAmt;
+
+    @ApiModelProperty(value = "出库日期")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class, updateStrategy = FieldStrategy.IGNORED)
+    private LocalDate outDate;
+
+    @TableField(typeHandler = UuidTypeHandler.class)
+    @ApiModelProperty(value = "明细id(出库,入库,调整单)")
+    private String ItemId;
+
+    @ApiModelProperty(value = "仓库ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String whId;
+
+    @ApiModelProperty(value = "成本单价")
+    private BigDecimal costPrice;
+
+
+
+
     private static final long serialVersionUID = 1L;
 
 }

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

@@ -335,7 +335,7 @@ public class IntoReturnVO {
     private List<String> intoReturnIdList;
 
     @ApiModelProperty(value = "自动出库办理标识")
-    private Boolean flgAutoIvt;
+    private Boolean automaticFlg;
 
     private static final long serialVersionUID = 1L;
 

+ 21 - 0
src/main/java/com/dk/mdm/model/vo/ivt/InventoryBatchVO.java

@@ -147,6 +147,27 @@ public class InventoryBatchVO  {
      * @TableField(exist = false)
      */
 
+    @TableField(typeHandler = UuidTypeHandler.class)
+    @ApiModelProperty(value = "入库单id")
+    private String intoId;
+
+    @ApiModelProperty(value = "入库价")
+    private BigDecimal priceInto;
+
+    @ApiModelProperty(value = "已入库数量")
+    private BigDecimal intoQty;
+
+    @ApiModelProperty(value = "已出库数量")
+    private BigDecimal outQty;
+
+    @TableField(typeHandler = UuidTypeHandler.class)
+    @ApiModelProperty(value = "出库单id")
+    private String outId;
+
+    @TableField(typeHandler = UuidTypeHandler.class)
+    @ApiModelProperty(value = "明细id(出库,入库,调整单)")
+    private String ItemId;
+
 
     private static final long serialVersionUID = 1L;
 

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

@@ -137,6 +137,8 @@ public class InventoryVO {
      */
 
 
+
+
     private static final long serialVersionUID = 1L;
 
 }

+ 18 - 0
src/main/java/com/dk/mdm/model/vo/mac/RecPayVO.java

@@ -110,6 +110,21 @@ public class RecPayVO extends PageInfo<RecPayVO> implements Serializable {
     private BigDecimal sumAmtPay;
 
 
+    @Excel(name = "合计应收冲抵金额")
+    @ApiModelProperty(value = "合计应收冲抵金额")
+    private BigDecimal sumAmtReceivableHandle;
+
+
+    @Excel(name = "合计应付冲抵金额")
+    @ApiModelProperty(value = "合计应付冲抵金额")
+    private BigDecimal sumAmtPayableHandle;
+
+
+    @Excel(name = "合计核销金额")
+    @ApiModelProperty(value = "合计核销金额")
+    private BigDecimal sumWaiveAmt;
+
+
     /**
      * 收付款日期 (账务日期)
      */
@@ -272,6 +287,9 @@ public class RecPayVO extends PageInfo<RecPayVO> implements Serializable {
     @ApiModelProperty(value = "明细")
     private List<RecPayItemVO> itemList;
 
+    @ApiModelProperty(value = "删除明细")
+    private List<RecPayItemVO> deleteItemList;
+
     /*
      * 相关属性
      * @TableField(exist = false)

+ 49 - 20
src/main/java/com/dk/mdm/service/ivt/FreezeService.java

@@ -9,14 +9,17 @@ 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.controller.ivt.inventory.InventoryController;
 import com.dk.mdm.infrastructure.convert.ivt.FreezeConvert;
 import com.dk.mdm.infrastructure.convert.ivt.FreezeItemConvert;
 import com.dk.mdm.mapper.ivt.FreezeItemMapper;
+import com.dk.mdm.mapper.ivt.InventoryMapper;
 import com.dk.mdm.model.pojo.ivt.Freeze;
 import com.dk.mdm.mapper.ivt.FreezeMapper;
 import com.dk.common.service.BaseService;
 import com.dk.common.mapper.BaseMapper;
 import com.dk.mdm.model.pojo.ivt.FreezeItem;
+import com.dk.mdm.model.pojo.ivt.Inventory;
 import com.dk.mdm.model.pojo.sale.Order;
 import com.dk.mdm.model.pojo.sale.OrderItem;
 import com.dk.mdm.model.query.ivt.FreezeItemQuery;
@@ -24,6 +27,7 @@ import com.dk.mdm.model.query.ivt.FreezeQuery;
 import com.dk.mdm.model.query.sale.OrderItemQuery;
 import com.dk.mdm.model.response.ivt.FreezeItemResponse;
 import com.dk.mdm.model.response.ivt.FreezeResponse;
+import com.dk.mdm.model.response.ivt.InventoryResponse;
 import com.dk.mdm.model.response.sale.OrderItemResponse;
 import com.dk.mdm.model.response.sale.OrderResponse;
 import com.dk.mdm.model.vo.ivt.FreezeItemVO;
@@ -31,6 +35,7 @@ import com.dk.mdm.model.vo.ivt.FreezeVO;
 import com.dk.mdm.model.vo.sale.OrderItemVO;
 import com.dk.mdm.model.vo.sale.OrderVO;
 import com.dk.mdm.service.common.CommonService;
+import com.dk.mdm.service.ivt.inventory.InventoryService;
 import com.dk.mdm.service.sale.OrderItemService;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -73,6 +78,11 @@ public class FreezeService extends BaseService<Freeze> {
 	@Autowired
 	private FreezeItemService freezeItemService;
 
+	@Autowired
+	private InventoryService inventoryService;
+
+	@Autowired
+	private InventoryMapper inventoryMapper;
 
 	/**
 	 * @desc   : 重写主键
@@ -105,22 +115,12 @@ public class FreezeService extends BaseService<Freeze> {
 		// 转化实体
 		Freeze freeze = freezeConvert.convertToPo(freezeVO);
 		try {
-			// 判断库存量和冻结量
-			if (freezeVO.getItemList() != null && freezeVO.getItemList().size() > 0) {
-				for (FreezeItemVO freezeItemVO : freezeVO.getItemList()) {
-					List<FreezeItemResponse> freezeItemList = freezeItemMapper.selectInvById(freezeItemVO.getInvId());
-					// 库存可售量不能小于冻结量
-					if (freezeItemList.get(0).getUsableQty().compareTo(freezeItemVO.getFreezeQty() ) == -1){
-						throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.FREEZEQTY_NO_LESS_USABLEQTY.getMessage());
-					}
-				}
-			}
 			Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.Freeze.getName(), true);
 			// 获取冻结状态 获取冻结日期(当前日期) 插入冻结表的实体
 			freeze.setFreezeStatus(Constant.FreezeStatusType.ALLFREEZE.getName()).setFreezeDate(LocalDate.now())
 					.setCusId(freezeVO.getCusId()).setMakeStaff(freezeVO.getMakeStaff()).setOrgId(freezeVO.getOrgId())
 					.setAutoUnfreezeDate(freezeVO.getAutoUnfreezeDate()).setMakeTime(LocalDateTime.now())
-					.setStaffId(freezeVO.getStaffId()).setFreezeId(codeMap.get("outId").toString()).setCpId(freezeVO.getCpId())
+					.setStaffId(freezeVO.getStaffId()).setFreezeId(codeMap.get("outId").toString()).setRemarks(freezeVO.getRemarks())
 					.setFreezeNo(codeMap.get("outNote").toString()).setSumQuantity(freezeVO.getSumQuantity());
 			// 先插入冻结单主表数据
 			super.insert(freeze);
@@ -128,12 +128,27 @@ public class FreezeService extends BaseService<Freeze> {
 			if (freezeVO.getItemList() != null && freezeVO.getItemList().size() > 0) {
 				for (FreezeItemVO freezeItemVO : freezeVO.getItemList()) {
 					FreezeItem freezeItem = freezeItemConvert.convertToPo(freezeItemVO);
+					// 查询库存信息
+					Inventory inventoryForUpdate=inventoryMapper.selectByIdForUpdate(freezeItemVO.getInvId());
+					// 判断冻结量是否大于可售量
+					if(inventoryForUpdate.getUsableQty().compareTo(inventoryForUpdate.getFreezeQty())== -1){
+						throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.FREEZEQTY_NO_LESS_USABLEQTY.getMessage());
+					}
 					// 获取冻结主表uuid
-					freezeItem.setFreezeId(freeze.getFreezeId()).setCpId(freeze.getCpId());
+					freezeItem.setFreezeId(freeze.getFreezeId());
 					// 插入冻结单明细数据
 					freezeItemMapper.insert(freezeItem);
-					// 修改库存冻结量
-					freezeItemMapper.updateInvFreezeQty(freezeItemVO);
+					// 库存冻结量=库存冻结量+新建冻结量
+					BigDecimal freezeqty=freezeItemVO.getFreezeQty().add(inventoryForUpdate.getFreezeQty());
+					// 库存可售量=库存可售量+新建冻结量
+					BigDecimal usableQt=inventoryForUpdate.getUsableQty().subtract(freezeItemVO.getFreezeQty());
+					// 更新修改内容信息
+					Inventory inventoryUpdate = new Inventory();
+					// 赋值库存可售量、冻结量和库存ID值
+					inventoryUpdate.setInvId(freezeItemVO.getInvId()).setFreezeQty(freezeqty).setUsableQty(usableQt);
+					// 修改库存冻结量、可售量
+					inventoryService.update(inventoryUpdate, new UpdateWrapper<Inventory>().lambda().eq(Inventory::getInvId,
+							UUID.fromString(inventoryUpdate.getInvId())));
 				}
 			}
 			return ResponseResultUtil.success();
@@ -169,7 +184,7 @@ public class FreezeService extends BaseService<Freeze> {
 	)
 	public ResponseResultVO<?> update(FreezeVO freezeVO) {
 		// 明细实体(避免并发,需要再查一遍)
-		FreezeItemResponse freezeItemForUpdate;
+		FreezeItem freezeItemForUpdate;
 		// 转化实体
 		Freeze freeze = freezeConvert.convertToPo(freezeVO);
 		// 赋值全部解冻
@@ -177,20 +192,34 @@ public class FreezeService extends BaseService<Freeze> {
 		// 解冻
 		for (FreezeItemVO freezeItemVO : freezeVO.getItemList()) {
 			// 查询锁表
-			freezeItemForUpdate = freezeItemMapper.selectById(freezeItemVO.getItemId());
+			freezeItemForUpdate = freezeItemMapper.selectByIdForUpdate(freezeItemVO.getItemId());
+			//
 			FreezeItem freezeItem = freezeItemConvert.convertToPo(freezeItemVO);
+			// 实际解冻量=现解冻量-原解冻量
+			BigDecimal unfreezeQty=freezeItemVO.getUnfreezeQty().subtract(freezeItemForUpdate.getUnfreezeQty());
 			// 修改冻结单明细解冻量
 			freezeItemService.updateByUuid(freezeItem);
-			// 修改库存冻结量
-			freezeItemMapper.updateInvUnFreezeQty(freezeItemVO);
-			// 根据冻结量和剩余冻结量判断冻结主表的部分解冻
+			// 根据冻结量和剩余冻结量不相等则冻结主表是部分解冻
 			if(!freezeItem.getSurplusQty().equals(freezeItem.getFreezeQty()))
 			{
 				freezeStatus=Constant.FreezeStatusType.PARTUNFREEZE.getName();
 			}
+			// 查询库存信息
+			Inventory inventoryForUpdate=inventoryMapper.selectByIdForUpdate(freezeItemVO.getInvId());
+			// 库存冻结量=库存冻结量-实际解冻量
+			BigDecimal freezeqty=inventoryForUpdate.getFreezeQty().subtract(unfreezeQty);
+			// 库存可售量=库存可售量+实际解冻量
+			BigDecimal usableQt=inventoryForUpdate.getUsableQty().add(unfreezeQty);
+			// 更新修改内容信息
+			Inventory inventoryUpdate = new Inventory();
+			// 赋值库存可售量、冻结量和库存ID值
+			inventoryUpdate.setInvId(freezeItemVO.getInvId()).setFreezeQty(freezeqty).setUsableQty(usableQt);
+			// 修改库存冻结量、可售量
+			inventoryService.update(inventoryUpdate, new UpdateWrapper<Inventory>().lambda().eq(Inventory::getInvId,
+					UUID.fromString(inventoryUpdate.getInvId())));
 		}
 		// 赋值冻结表状态和ID
-		freeze.setFreezeId(freezeVO.getFreezeId()).setFreezeStatus(freezeStatus);
+		freeze.setFreezeId(freezeVO.getFreezeId()).setFreezeStatus(freezeStatus).setRemarks(freezeVO.getRemarks());
 		// 更新主表冻结状态
 		return ResponseResultUtil.success(super.update(freeze, new UpdateWrapper<Freeze>().lambda().eq(Freeze::getFreezeId,
 				UUID.fromString(freeze.getFreezeId()))));

+ 66 - 54
src/main/java/com/dk/mdm/service/ivt/IntoReturnService.java

@@ -12,6 +12,7 @@ import com.dk.mdm.infrastructure.convert.ivt.IntoReturnItemConvert;
 import com.dk.mdm.infrastructure.util.AuthUtils;
 import com.dk.mdm.mapper.ivt.InboundItemMapper;
 import com.dk.mdm.mapper.ivt.InboundMapper;
+import com.dk.mdm.mapper.ivt.IntoReturnItemMapper;
 import com.dk.mdm.mapper.pur.PurchaseItemMapper;
 import com.dk.mdm.mapper.pur.PurchaseMapper;
 import com.dk.mdm.model.pojo.ivt.Inbound;
@@ -31,18 +32,18 @@ import com.dk.mdm.model.response.ivt.IntoReturnItemResponse;
 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.OutboundItemVO;
-import com.dk.mdm.model.vo.ivt.OutboundVO;
+import com.dk.mdm.model.vo.ivt.*;
 import com.dk.mdm.service.common.CommonService;
 import com.dk.mdm.service.ivt.inbound.InboundItemService;
+import com.dk.mdm.service.ivt.inbound.InboundPurchaseReturnService;
+import com.dk.mdm.service.ivt.inbound.InboundPurchaseService;
 import com.dk.mdm.service.ivt.outbound.OutboundService;
 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.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -74,6 +75,11 @@ public class IntoReturnService extends BaseService<IntoReturn> {
     @Autowired
     private IntoReturnItemService intoReturnItemService;
 
+
+    @Autowired
+    private IntoReturnItemMapper intoReturnItemMapper;
+
+
     @Autowired
     private CommonService commonService;
 
@@ -92,6 +98,9 @@ public class IntoReturnService extends BaseService<IntoReturn> {
     @Autowired
     private InboundItemService inboundItemService;
 
+    @Autowired
+    private InboundPurchaseReturnService inboundPurchaseReturnService;
+
     /**
      * @desc : 查询
      * @author : 于继渤
@@ -120,6 +129,8 @@ public class IntoReturnService extends BaseService<IntoReturn> {
         }
         //查询采购订单
         PurchaseResponse purchaseResponse = purchaseMapper.selectById(intoReturnVO.getPurId());
+        intoReturnVO.setSumQuantity(intoReturnVO.getSumQuantity().abs());
+        intoReturnVO.setSumAmount(intoReturnVO.getSumAmount().abs());
         //设置总单
         intoReturnVO = this.insertTotal(intoReturnVO, purchaseResponse);
         //设置明细
@@ -165,43 +176,41 @@ public class IntoReturnService extends BaseService<IntoReturn> {
 
             );
         }
-
-        //新建出库单
-        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.CHUKUZHONG.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;
+        //生成逆向  负数的 入库单
+
+
+        InboundVO inboundVO = new InboundVO();
+        //自动标识
+        inboundVO.setAutomaticFlg(intoReturnVO.getAutomaticFlg());
+
+        inboundVO.setFromId(intoReturnVO.getReturnId());
+        inboundVO.setFromNo(intoReturnVO.getReturnNo());
+        inboundVO.setStaffId(intoReturnVO.getStaffId());
+        inboundVO.setOrgId(intoReturnVO.getOrgId());
+        inboundVO.setMakeStaff(authUtils.getStaff().getStaffId());
+        inboundVO.setMakeTime(LocalDateTime.now());
+        inboundVO.setIntoingQty(intoReturnVO.getSumQuantity());
+        inboundVO.setIntoingAmt(intoReturnVO.getSumAmount());
+        List<InboundItemVO> list = new ArrayList<>();
         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);
+            System.out.println("'id==='"+intoReturnItemVO.getItemId());
+            InboundItemVO inboundItemVO = new InboundItemVO();
+            inboundItemVO.setIntoingQty(intoReturnItemVO.getItemQty());
+            inboundItemVO.setIntoingAmt(intoReturnItemVO.getItemAmt());
+            inboundItemVO.setPriceInto(intoReturnItemVO.getPriceReturn());
+            inboundItemVO.setFromItemId(intoReturnItemVO.getItemId());
+            inboundItemVO.setSkuId(intoReturnItemVO.getSkuId());
+            inboundItemVO.setItemIndex(intoReturnItemVO.getItemIndex());
+            inboundItemVO.setNonStdCode(intoReturnItemVO.getNonStdCode());
+            inboundItemVO.setReturnQty(intoReturnItemVO.getItemQty());
+            inboundItemVO.setReturnAmt(intoReturnItemVO.getItemAmt());
+            list.add(inboundItemVO);
         }
 
-        outboundVO.setItemList(itemList);
-        //新建出库单
-        outboundService.insertOutBound(outboundVO);
+        inboundVO.setItemList(list);
+
+        inboundPurchaseReturnService.purchaseReturnInboundInsert(inboundVO);
+
 
         return ResponseResultUtil.success();
     }
@@ -211,10 +220,10 @@ public class IntoReturnService extends BaseService<IntoReturn> {
      * @date : 2023/9/28 16:20
      * @author : 于继渤
      */
-    @Transactional(rollbackFor = {Exception.class})
+
     public IntoReturnVO insertTotal(IntoReturnVO intoReturnVO, PurchaseResponse purchaseResponse) {
         // 获取单号
-        Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.OUTBOUND.getName(), false);
+        Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.PURCHASEOUT.getName(), false);
         intoReturnVO.setReturnId(codeMap.get("outId").toString()).setReturnNo(codeMap.get("outNote").toString())
                 .setReturnType(Constant.returnType.PURRETURN.getName());
 
@@ -248,13 +257,15 @@ public class IntoReturnService extends BaseService<IntoReturn> {
      * @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());
+            intoReturnItemVO.setPriceReturn(intoReturnItemVO.getPriceReturn().abs());
+            intoReturnItemVO.setItemQty(intoReturnItemVO.getItemQty().abs());
             //根据分销订单明细Id查询数据
             //查询明细数据
             PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(intoReturnItemVO.getFromItemId());
@@ -262,7 +273,8 @@ public class IntoReturnService extends BaseService<IntoReturn> {
             intoReturnItemVO.setPurId(purchaseItemResponse.getPurId());
             intoReturnItemVO.setPurItemId(purchaseItemResponse.getItemId());
             intoReturnItemVO.setIntoItemId(intoReturnItemVO.getIntoItemId());
-           intoReturnItemVO.setItemId(null);
+            Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.PURCHASEOUT.getName(), false);
+            intoReturnItemVO.setItemId(codeMap.get("outId").toString());
             //标价
             intoReturnItemVO.setPriceStd(purchaseItemResponse.getPriceStd());
             //标价金额 (商品数量*标价)
@@ -272,20 +284,20 @@ public class IntoReturnService extends BaseService<IntoReturn> {
             //退货金额 (商品数量*退货价)
             intoReturnItemVO.setItemAmt(intoReturnItemVO.getItemQty().multiply(intoReturnItemVO.getPriceReturn()).setScale(2, BigDecimal.ROUND_HALF_UP));
             //自动]出库赋值  已入库数量、已入库金额
-            if (intoReturnVO.getFlgAutoIvt() != null && intoReturnVO.getFlgAutoIvt()) {
-                intoReturnItemVO.setOutQty(intoReturnItemVO.getItemQty().abs());
-                intoReturnItemVO.setOutAmt(intoReturnItemVO.getItemAmt().abs());
-                intoReturnItemVO.setOutStatus(Constant.OutStatus.YICHUKU.getName());
-
-
-            } else {
-                intoReturnItemVO.setOutingQty(intoReturnItemVO.getItemQty().abs());
-                intoReturnItemVO.setOutingAmt(intoReturnItemVO.getItemAmt().abs());
+//            if (intoReturnVO.getFlgAutoIvt() != null && intoReturnVO.getFlgAutoIvt()) {
+//                intoReturnItemVO.setOutQty(intoReturnItemVO.getItemQty().abs());
+//                intoReturnItemVO.setOutAmt(intoReturnItemVO.getItemAmt().abs());
+//                intoReturnItemVO.setOutStatus(Constant.OutStatus.YICHUKU.getName());
+//
+//
+//            } else {
+                intoReturnItemVO.setOutingQty(intoReturnItemVO.getItemQty());
+                intoReturnItemVO.setOutingAmt(intoReturnItemVO.getItemAmt());
                 intoReturnItemVO.setOutStatus(Constant.OutStatus.CHUKUZHONG.getName());
-            }
-            //新建明细
+//            }
+//            //新建明细
             IntoReturnItem intoReturnItem = intoReturnItemConvert.convertToPo(intoReturnItemVO);
-            intoReturnItemService.insert(intoReturnItem);
+            intoReturnItemMapper.insert(intoReturnItem);
 
         }
         return intoReturnItemVOList;

+ 296 - 46
src/main/java/com/dk/mdm/service/ivt/inventory/InventoryService.java

@@ -1,68 +1,318 @@
 package com.dk.mdm.service.ivt.inventory;
 
+import com.dk.common.infrastructure.annotaiton.Pagination;
+import com.dk.common.model.pojo.PageList;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.dk.common.exception.BaseBusinessException;
+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.ivt.InOutRecordConvert;
+import com.dk.mdm.mapper.ivt.InOutRecordMapper;
+import com.dk.mdm.model.pojo.ivt.InOutRecord;
 import com.dk.mdm.model.pojo.ivt.Inventory;
 import com.dk.mdm.mapper.ivt.InventoryMapper;
 import com.dk.common.service.BaseService;
 import com.dk.common.mapper.BaseMapper;
+import com.dk.mdm.model.query.ivt.InboundQuery;
+import com.dk.mdm.model.query.ivt.InventoryQuery;
+import com.dk.mdm.model.response.ivt.InboundResponse;
+import com.dk.mdm.model.response.ivt.InventoryResponse;
+import com.dk.mdm.model.query.ivt.InventoryQuery;
+import com.dk.mdm.model.response.ivt.InventoryResponse;
+import com.dk.mdm.model.vo.ivt.InOutRecordVO;
 import com.dk.mdm.model.vo.ivt.InventoryVO;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
+import com.dk.common.infrastructure.constant.Constant;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
 
 /**
- * @desc   : 库存明细
- * @date   : 2024/3/20 13:41
  * @author : 寇珊珊
+ * @desc : 库存明细
+ * @date : 2024/3/20 13:41
  */
 @Service
 @Transactional
 public class InventoryService extends BaseService<Inventory> {
 
-	@Override
-	public BaseMapper<Inventory> getRepository() {
-		return inventoryMapper;
-	}
-
-	@Autowired
-	private InventoryMapper inventoryMapper;
-	
-	
-	/**
-	 * @desc   : 新建
-	 * @date   : 2024/3/20 13:46
-	 * @author : 寇珊珊
-	 */
-	@Transactional(
-			rollbackFor = {Exception.class}
-	)
-	public ResponseResultVO<?> insertInbound(InventoryVO inventoryVO) {
-		//1.判断库存数据是否存在,存在更细,不存在新建
-		
-
-		//2,库存明细插入
-
-		//3.库存批次明细插入
-		
-		//4.存货流水插入
-		return ResponseResultUtil.success();
-	}
-
-	/**
-	 * @desc   : 校验库存是否存在数据
-	 * @date   : 2024/3/20 15:32
-	 * @author : 寇珊珊
-	 */
-	@Transactional(
-			rollbackFor = {Exception.class}
-	)
-	public Boolean checkInventory(InventoryVO inventoryVO) {
-		Boolean  flag = false;
-
-
-		return flag;
-		
-	}
+    @Override
+    public BaseMapper<Inventory> getRepository() {
+        return inventoryMapper;
+    }
+
+    @Autowired
+    private InventoryMapper inventoryMapper;
+
+    @Autowired
+    private InOutRecordMapper inOutRecordMapper;
+
+    @Autowired
+    private InOutRecordConvert inOutRecordConvert;
+    /**
+     * @desc   : 条件查询
+     * @author : 姜永辉
+     * @date   : 2024/3/8 10:58
+     */
+    @Pagination
+    public ResponseResultVO<PageList<InventoryResponse>> selectByCond(InventoryQuery inboundQuery) {
+        return super.mergeListWithCount(inboundQuery, inventoryMapper.selectByCond(inboundQuery), inventoryMapper.countByCond(inboundQuery));
+    }
+
+    /**
+     * @desc : 新建
+     * @date : 2024/3/20 13:46
+     * @author : 寇珊珊
+     */
+    @Transactional(
+            rollbackFor = {Exception.class}
+    )
+    public ResponseResultVO<?> insertInbound(Map<String, Object> map) {
+        //region map转json
+        JSONObject total = (JSONObject) JSON.toJSON(map.get("total"));
+        JSONArray intoDetail = new JSONArray();
+        JSONArray outDetail = new JSONArray();
+        //入库
+        if (map.get("intoDetail") != null) {
+            intoDetail = (JSONArray) JSON.toJSON(map.get("intoDetail"));
+        }
+        //出库
+        if (map.get("outDetail") != null) {
+            outDetail = (JSONArray) JSON.toJSON(map.get("outDetail"));
+        }
+        //endregion
+
+        //region json转实体
+        //入库集合
+        List<InOutRecordVO> intoList = new ArrayList<>();
+        //出库集合
+        List<InOutRecordVO> outList = new ArrayList<>();
+        //region   明细 取值
+        //入库操作库存
+        if (intoDetail.size() > 0 && outDetail.size() == 0) {
+            //赋值并校验库存流水数据
+            intoList = intoDetail.toJavaList(InOutRecordVO.class);
+            intoList = this.setInOutRecordMessageByInto(intoList);
+            //新建库存流水
+            this.insertInboundRecord(intoList);
+        }
+        //出库操作库存
+        else if (outDetail.size() > 0 && intoDetail.size() == 0) {
+            //赋值并校验库存流水数据
+            outList = outDetail.toJavaList(InOutRecordVO.class);
+            outList = this.setInOutRecordMessageByOut(outList);
+            //新建库存流水
+            this.insertInboundRecord(outList);
+        }
+        //库位移动操作库存
+        else if (intoDetail.size() > 0 && outDetail.size() > 0) {
+            //赋值并校验库存流水数据
+            intoList = intoDetail.toJavaList(InOutRecordVO.class);
+            intoList = this.setInOutRecordMessageByInto(intoList);
+            //赋值并校验库存流水数据
+            outList = outDetail.toJavaList(InOutRecordVO.class);
+            outList = this.setInOutRecordMessageByOut(outList);
+            //新建库存流水
+            this.insertInboundRecord(intoList);
+            this.insertInboundRecord(outList);
+        } else {
+            throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.NO_MESSAGE_OPERATE_INVENTORY.getMessage());
+        }
+        //endregion
+        //endregion
+
+
+        //region 操作库存
+
+        //endregion
+
+
+
+        //2,库存明细插入
+
+        //3.库存批次明细插入
+
+        //4.存货流水插入
+        return ResponseResultUtil.success();
+    }
+
+    /**
+     * @desc : 入库----赋值并校验库存流水数据
+     * @date : 2024/3/21 16:04
+     * @author : 寇珊珊
+     */
+    @Transactional(
+            rollbackFor = {Exception.class}
+    )
+    public List<InOutRecordVO> setInOutRecordMessageByInto(List<InOutRecordVO> inOutRecordVOList) {
+        //赋值
+        for (InOutRecordVO inOutRecordVO : inOutRecordVOList) {
+            //业务单据
+            inOutRecordVO.setBiznisType(Constant.InventoryDocCode.INTOBOUND.getValue());
+            //业务单ID
+            inOutRecordVO.setBiznisId(inOutRecordVO.getIntoId());
+            //业务单明细ID
+            inOutRecordVO.setBiznisItemId(inOutRecordVO.getItemId());
+            //入库价
+            inOutRecordVO.setPriceInto(inOutRecordVO.getPriceInto());
+            //入库日期
+            inOutRecordVO.setAccDate(inOutRecordVO.getIntoDate());
+        }
+        //region 校验是否传库存需要的数据
+        this.checkInventory(inOutRecordVOList);
+        //endregion
+
+        return inOutRecordVOList;
+    }
+
+    /**
+     * @desc : 出库----赋值并校验库存流水数据
+     * @date : 2024/3/21 16:06
+     * @author : 寇珊珊
+     */
+    @Transactional(
+            rollbackFor = {Exception.class}
+    )
+    public List<InOutRecordVO> setInOutRecordMessageByOut(List<InOutRecordVO> inOutRecordVOList) {
+        //赋值
+        for (InOutRecordVO inOutRecordVO : inOutRecordVOList) {
+            //业务单据
+            inOutRecordVO.setBiznisType(Constant.InventoryDocCode.OUTBOUND.getValue());
+            //业务单ID
+            inOutRecordVO.setBiznisId(inOutRecordVO.getOutId());
+            //业务单明细ID
+            inOutRecordVO.setBiznisItemId(inOutRecordVO.getItemId());
+            //入库价
+            inOutRecordVO.setPriceInto(inOutRecordVO.getPriceOut());
+            //入库数量
+            inOutRecordVO.setIntoQty(inOutRecordVO.getOutQty());
+            //入库金额
+            inOutRecordVO.setIntoAmt(inOutRecordVO.getOutAmt());
+            //入库日期
+            inOutRecordVO.setAccDate(inOutRecordVO.getOutDate());
+        }
+        //region 校验是否传库存需要的数据
+        this.checkInventory(inOutRecordVOList);
+        //endregion
+
+        return inOutRecordVOList;
+    }
+
+    /**
+     * @desc : 校验是否传库存需要的数据
+     * @date : 2024/3/20 15:32
+     * @author : 寇珊珊
+     */
+    @Transactional(
+            rollbackFor = {Exception.class}
+    )
+    public void checkInventory(List<InOutRecordVO> inOutRecordVOList) {
+        //校验明细中是否存在为空数据
+        if (inOutRecordVOList.size() == 0) {
+            throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.DETAIL_LIST_IS_NUL.getMessage());
+        }
+        for (InOutRecordVO inventoryBatchVO : inOutRecordVOList) {
+            //商品ID
+            if (inventoryBatchVO.getSkuId() == null || "".equals(inventoryBatchVO.getSkuId())) {
+                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.SKU_IS_NULL.getMessage());
+            }
+            //仓库ID
+            if (inventoryBatchVO.getWhId() == null || "".equals(inventoryBatchVO.getWhId())) {
+                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.WAREHOUSE_IS_NULL.getMessage());
+            }
+//			//单价不可为空
+//			if(inventoryBatchVO.getCostPrice()==null || inventoryBatchVO.getCostPrice().compareTo(BigDecimal.ZERO)==0 ){
+//				throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.COST_PRICE_IS_NULL.getMessage());
+//			}
+            //总单id不可为空
+            if (inventoryBatchVO.getBiznisId() == null || "".equals(inventoryBatchVO.getBiznisId())) {
+                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.FROM_ID_IS_NULL.getMessage());
+            }
+            //明细id不可为空
+            if (inventoryBatchVO.getBiznisItemId() == null || "".equals(inventoryBatchVO.getBiznisItemId())) {
+                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.FROM_ITEM_ID_IS_NULL.getMessage());
+            }
+            //入库价不为空
+            if (inventoryBatchVO.getPriceInto() == null) {
+                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.COST_PRICE_IS_NULL.getMessage());
+            }
+            //数量不为空
+            if (inventoryBatchVO.getIntoQty() == null) {
+                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.QTY_IS_NULL.getMessage());
+            }
+            //金额不为空
+            if (inventoryBatchVO.getIntoAmt() == null) {
+                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.AMT_IS_NULL.getMessage());
+            }
+        }
+        //endregion
+    }
+
+    /**
+     * @desc : 新建库存流水
+     * @date : 2024/3/21 14:47
+     * @author : 寇珊珊
+     */
+    @Transactional(
+            rollbackFor = {Exception.class}
+    )
+    public void insertInboundRecord(List<InOutRecordVO> inOutRecordVOList) {
+        //循环传入的明细
+        for (InOutRecordVO inventoryBatchVO : inOutRecordVOList) {
+            //实体转换
+            InOutRecord inOutRecord = inOutRecordConvert.convertToPo(inventoryBatchVO);
+            //新建
+            inOutRecordMapper.insert(inOutRecord);
+        }
+    }
+
+    /**
+     * @desc : 新建库存
+     * @date : 2024/3/21 14:47
+     * @author : 寇珊珊
+     */
+    @Transactional(
+            rollbackFor = {Exception.class}
+    )
+    public void insertInventory(List<InOutRecordVO> inOutRecordVOList) {
+        //判断库存数据是否存在,存在更细,不存在新建
+        for (InOutRecordVO inOutRecordVO : inOutRecordVOList) {
+            //根据sku,仓库,非标号查询
+            InventoryResponse inventoryResponse = inventoryMapper.selectByOther(new InventoryQuery()
+                    .setSkuId(inOutRecordVO.getSkuId())
+                    .setWhId(inOutRecordVO.getWhId())
+                    .setNonStdCode(inOutRecordVO.getNonStdCode()));
+            //不存在  新建
+            if (inventoryResponse == null) {
+
+            }
+            //存在 出库校验库存是否充足重写updateById,入库加入数据
+            else {
+
+            }
+        }
+
+
+    }
+
+    /**
+     * @desc : 新建库存批次明细
+     * @date : 2024/3/21 14:47
+     * @author : 寇珊珊
+     */
+    @Transactional(
+            rollbackFor = {Exception.class}
+    )
+    public void insertInventoryBatch(List<InOutRecordVO> inOutRecordVOList) {
+
+    }
 
 }

+ 1 - 1
src/main/java/com/dk/mdm/service/ivt/outbound/OutboundOtherService.java

@@ -163,7 +163,7 @@ public class OutboundOtherService extends BaseService<Outbound> {
                         .setOutAmt(BigDecimal.ZERO);
             }
             //入库状态
-            outboundItemVO.setOutStatus(outboundItemVO.getOutStatus());
+            outboundItemVO.setOutStatus(outboundVO.getOutStatus());
             //实体转换
             OutboundItem outboundItem = outboundItemConvert.convertToPo(outboundItemVO);
             outboundItemMapper.insert(outboundItem);

+ 101 - 2
src/main/java/com/dk/mdm/service/mac/RecPayService.java

@@ -1,9 +1,12 @@
 package com.dk.mdm.service.mac;
 
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.dk.common.exception.BaseBusinessException;
 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.mac.RecPayConvert;
@@ -33,6 +36,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
+import java.util.stream.Collectors;
 
 @Service
 @Transactional
@@ -106,14 +110,14 @@ public class RecPayService extends BaseService<RecPay> {
     }
 
     /**
-     * @desc : 新建方法
+     * @desc : 新建收款
      * @author : 付斌
      * @date : 2023/1/9 10:49
      */
     @Transactional(
             rollbackFor = {Exception.class}
     )
-    public ResponseResultVO<?> insert(RecPayVO recPayVO) {
+    public ResponseResultVO<?> insertReceipt(RecPayVO recPayVO) {
 
         // 获取单号
         Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.RECPAY.getName(), false);
@@ -167,6 +171,62 @@ public class RecPayService extends BaseService<RecPay> {
     }
 
     /**
+     * @desc : 新建退款
+     * @author : 付斌
+     * @date : 2023/1/9 10:49
+     */
+    @Transactional(
+            rollbackFor = {Exception.class}
+    )
+    public ResponseResultVO<?> insertRefund(RecPayVO recPayVO) {
+
+        // 查总账,看可退金额是否满足
+        Account accountForUpdate = accountMapper.selectByIdForUpdate(recPayVO.getObjectId());
+        if (accountForUpdate == null || accountForUpdate.getReceiptResidue().compareTo(recPayVO.getSumAmtRec().abs()) == -1) {
+            throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.RESIDUE_NO_LESS.getMessage());
+        }
+
+        // 获取单号
+        Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.RECPAY.getName(), false);
+        recPayVO.setRpId(codeMap.get("outId").toString()).setRpNo(codeMap.get("outNote").toString());
+        // 转化实体
+        RecPay recPay = recPayConvert.convertToPo(recPayVO);
+        // 总单保存
+        super.insert(recPay);
+
+        // 明细保存
+        if (recPayVO.getItemList() != null && recPayVO.getItemList().size() > 0) {
+            for (RecPayItemVO recPayItemVO : recPayVO.getItemList()) {
+                RecPayItem recPayItem = recPayItemConvert.convertToPo(recPayItemVO);
+                recPayItem.setRpId(recPay.getRpId()).setCpId(recPay.getCpId()).setMakeStaff(recPay.getMakeStaff()).setAccDate(recPay.getAccDate());
+                recPayItemMapper.insert(recPayItem);
+
+                // 插入账款明细
+                AccountItem accountItem = new AccountItem();
+                accountItem.setAccItemType(Constant.accItemType.SHOU_KUAN.getName())
+                        .setObjectId(recPayVO.getObjectId()).setOrgId(recPayVO.getOrgId()).setStaffId(recPayVO.getStaffId())
+                        .setAccDate(recPayVO.getAccDate()).setRecStatus(Constant.recStatuse.QUE_DING.getName()).setAmtRec(recPayItemVO.getAmtRec())
+                        .setBiznisType("t_mac_rec_pay_item").setBiznisId(recPayItem.getItemId()).setBiznisNo(recPayVO.getRpNo())
+                        .setMakeStaff(recPayVO.getMakeStaff()).setCpId(recPayVO.getCpId());
+                accountItemMapper.insert(accountItem);
+
+                // 更新收款单上的应收账款
+                RecPayItem recPayItemUpdate = new RecPayItem();
+                recPayItemUpdate.setAccItemId(accountItem.getItemId()).setRpId(recPayVO.getRpId());
+                recPayItemService.updateByUuid(recPayItemUpdate);
+            }
+        }
+
+        // 更新账款总表上收款的相关字段
+        Account accountUpdate = new Account();
+        accountUpdate.setReceipt(accountForUpdate.getReceipt().add(recPayVO.getSumAmtRec()))// 总收款金额
+                .setReceiptResidue(accountForUpdate.getReceiptResidue().add(recPayVO.getSumAmtRec()))//  可退金额
+                .setObjectId(accountForUpdate.getObjectId());
+        accountService.updateByUuid(accountUpdate);
+        return ResponseResultUtil.success();
+    }
+
+    /**
      * @desc : 编辑方法
      * @author : 付斌
      * @date : 2023/1/9 10:49
@@ -176,7 +236,46 @@ public class RecPayService extends BaseService<RecPay> {
     )
     public ResponseResultVO<?> update(RecPayVO recPayVO) {
         RecPay recPay = recPayConvert.convertToPo(recPayVO);
+
+        //删除的
+        List<RecPayItemVO> deleteRecPayItemVOList = recPayVO.getDeleteItemList().stream().filter(it -> it.getItemId() != null).collect(Collectors.toList());
+        if (deleteRecPayItemVOList.size() > 0) {
+            for (RecPayItemVO recPayItemVO : deleteRecPayItemVOList) {
+                recPayItemMapper.deleteById(recPayItemVO.getItemId());
+            }
+        }
+        // 新增的
+        List<RecPayItemVO> insertRecPayItemVOList = recPayVO.getItemList().stream().filter(it -> it.getItemId() == null).collect(Collectors.toList());
+        for (RecPayItemVO recPayItemVO : insertRecPayItemVOList) {
+            RecPayItem recPayItem = recPayItemConvert.convertToPo(recPayItemVO);
+            recPayItem.setRpId(recPay.getRpId()).setCpId(recPay.getCpId());
+            recPayItemMapper.insert(recPayItem);
+        }
+        // 编辑的
+        List<RecPayItemVO> editRecPayItemVOList = recPayVO.getItemList().stream().filter(it -> it.getItemId() != null).collect(Collectors.toList());
+        for (RecPayItemVO recPayItemVO : editRecPayItemVOList) {
+            RecPayItem recPayItem = recPayItemConvert.convertToPo(recPayItemVO);
+            recPayItemService.updateByUuid(recPayItem);
+        }
+        
         return ResponseResultUtil.success(super.update(recPay, new UpdateWrapper<RecPay>().lambda().eq(RecPay::getRpId,
                 UUID.fromString(recPay.getRpId()))));
     }
+
+    /**
+     * @desc : 获取订单信息(编辑用)
+     * @author : 付斌
+     * @date : 2024-03-02 17:27
+     */
+    public ResponseResultVO<?> getRpForUpdate(String id) {
+        Map<String, Object> dataInfo = new HashMap<>();
+        RecPayResponse recPayResponse = recPayMapper.selectById(id);
+        dataInfo.put("data", recPayResponse);
+
+        // 收款明细
+        List<RecPayItemResponse> recPayItemResponse = recPayItemMapper.selectByCond(new RecPayItemQuery().setRpId(id));
+        dataInfo.put("dataItem", recPayItemResponse);
+
+        return ResponseResultUtil.success(dataInfo);
+    }
 }

+ 74 - 3
src/main/java/com/dk/mdm/service/sale/OrderService.java

@@ -12,9 +12,11 @@ import com.dk.common.response.ResponseResultVO;
 import com.dk.mdm.infrastructure.convert.sale.OrderConvert;
 import com.dk.mdm.infrastructure.convert.sale.OrderItemConvert;
 import com.dk.mdm.mapper.mst.CustomerMapper;
+import com.dk.mdm.mapper.sale.MultiOwnerMapper;
 import com.dk.mdm.mapper.sale.OrderItemMapper;
 import com.dk.mdm.mapper.sale.OrderMapper;
 import com.dk.mdm.model.pojo.mst.Customer;
+import com.dk.mdm.model.pojo.sale.MultiOwner;
 import com.dk.mdm.model.pojo.sale.Order;
 import com.dk.common.service.BaseService;
 import com.dk.common.mapper.BaseMapper;
@@ -64,6 +66,9 @@ public class OrderService extends BaseService<Order> {
     private CustomerMapper customerMapper;
 
     @Autowired
+    MultiOwnerMapper multiOwnerMapper;
+
+    @Autowired
     private OrderConvert orderConvert;
 
     @Autowired
@@ -79,6 +84,7 @@ public class OrderService extends BaseService<Order> {
         return super.mergeListWithCount(orderQuery, orderMapper.selectByCond(orderQuery),
                 orderMapper.countByCond(orderQuery));
     }
+
     /**
      * @desc : 以销定采 查询
      * @author : 王英杰
@@ -89,6 +95,7 @@ public class OrderService extends BaseService<Order> {
         return super.mergeListWithCount(orderQuery, orderMapper.purSaleSelectByCond(orderQuery),
                 orderMapper.countByCond(orderQuery));
     }
+
     /**
      * @desc : 查询订单明细(货物、收款、附件)
      * @author : 付斌
@@ -146,6 +153,36 @@ public class OrderService extends BaseService<Order> {
         // 订单总单保存
         super.insert(order);
 
+        // 业务部门业绩保存
+        if (orderVO.getOrgList() != null && orderVO.getOrgList().size() > 0) {
+            for (Map<String, Object> map : orderVO.getOrgList()) {
+                MultiOwner multiOwner = new MultiOwner();
+                multiOwner.setOrderId(order.getOrderId()).setOwnerId(map.get("orgId").toString())
+                        .setAllocationRatio(new BigDecimal(map.get("allocationRatio").toString())).setCpId(order.getCpId());
+                if (Boolean.parseBoolean(map.get("ownerFlag").toString())) {
+                    multiOwner.setOwnerType(Constant.OwnerType.Z_ORG.getName());
+                } else {
+                    multiOwner.setOwnerType(Constant.OwnerType.C_ORG.getName());
+                }
+                multiOwnerMapper.insert(multiOwner);
+            }
+        }
+
+        // 业务员业绩保存
+        if (orderVO.getStaffList() != null && orderVO.getStaffList().size() > 0) {
+            for (Map<String, Object> map : orderVO.getStaffList()) {
+                MultiOwner multiOwner = new MultiOwner();
+                multiOwner.setOrderId(order.getOrderId()).setOwnerId(map.get("staffId").toString())
+                        .setAllocationRatio(new BigDecimal(map.get("allocationRatio").toString())).setCpId(order.getCpId());
+                if (Boolean.parseBoolean(map.get("ownerFlag").toString())) {
+                    multiOwner.setOwnerType(Constant.OwnerType.Z_STAFF.getName());
+                } else {
+                    multiOwner.setOwnerType(Constant.OwnerType.C_STAFF.getName());
+                }
+                multiOwnerMapper.insert(multiOwner);
+            }
+        }
+
         // 订单明细保存
         if (orderVO.getItemList() != null && orderVO.getItemList().size() > 0) {
             for (OrderItemVO orderItemVO : orderVO.getItemList()) {
@@ -202,6 +239,40 @@ public class OrderService extends BaseService<Order> {
             orderItemService.updateByUuid(orderItem);
         }
 
+        // 删除业绩信息
+        multiOwnerMapper.deleteByOrderId(order.getOrderId());
+
+        // 重新保存业绩信息
+        // 业务部门业绩保存
+        if (orderVO.getOrgList() != null && orderVO.getOrgList().size() > 0) {
+            for (Map<String, Object> map : orderVO.getOrgList()) {
+                MultiOwner multiOwner = new MultiOwner();
+                multiOwner.setOrderId(order.getOrderId()).setOwnerId(map.get("orgId").toString())
+                        .setAllocationRatio(new BigDecimal(map.get("allocationRatio").toString())).setCpId(order.getCpId());
+                if (Boolean.parseBoolean(map.get("ownerFlag").toString())) {
+                    multiOwner.setOwnerType(Constant.OwnerType.Z_ORG.getName());
+                } else {
+                    multiOwner.setOwnerType(Constant.OwnerType.C_ORG.getName());
+                }
+                multiOwnerMapper.insert(multiOwner);
+            }
+        }
+
+        // 业务员业绩保存
+        if (orderVO.getStaffList() != null && orderVO.getStaffList().size() > 0) {
+            for (Map<String, Object> map : orderVO.getStaffList()) {
+                MultiOwner multiOwner = new MultiOwner();
+                multiOwner.setOrderId(order.getOrderId()).setOwnerId(map.get("staffId").toString())
+                        .setAllocationRatio(new BigDecimal(map.get("allocationRatio").toString())).setCpId(order.getCpId());
+                if (Boolean.parseBoolean(map.get("ownerFlag").toString())) {
+                    multiOwner.setOwnerType(Constant.OwnerType.Z_STAFF.getName());
+                } else {
+                    multiOwner.setOwnerType(Constant.OwnerType.C_STAFF.getName());
+                }
+                multiOwnerMapper.insert(multiOwner);
+            }
+        }
+
         return ResponseResultUtil.success(super.update(order, new UpdateWrapper<Order>().lambda().eq(Order::getOrderId,
                 UUID.fromString(order.getOrderId()))));
     }
@@ -214,7 +285,7 @@ public class OrderService extends BaseService<Order> {
     public ResponseResultVO<?> invalid(String id) {
         Order orderForUpdate = orderMapper.selectByIdForUpdate(id);
         // 并发校验
-        if(!orderForUpdate.getFlgValid()){
+        if (!orderForUpdate.getFlgValid()) {
             throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISFLGVALID_FALSE.getMessage());
         }
 
@@ -241,8 +312,8 @@ public class OrderService extends BaseService<Order> {
         dataInfo.put("data", orderResponse);
 
         // 商品明细
-        List<OrderItemResponse> orderItem = orderItemMapper.selectByCond(new OrderItemQuery().setOrderId(id));
-        dataInfo.put("dataItem", orderItem);
+        List<OrderItemResponse> orderItemResponse = orderItemMapper.selectByCond(new OrderItemQuery().setOrderId(id));
+        dataInfo.put("dataItem", orderItemResponse);
         return ResponseResultUtil.success(dataInfo);
     }