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

Merge branch 'master' of http://git.dongkesoft.com:9001/iBOSS-2.0-Mini/iboss-server-mdm

changhaoning 2 лет назад
Родитель
Сommit
91d6de2fcf
25 измененных файлов с 753 добавлено и 150 удалено
  1. 21 0
      src/main/java/com/dk/mdm/controller/ivt/inventory/InventoryController.java
  2. 10 0
      src/main/java/com/dk/mdm/controller/mac/RecPayController.java
  3. 21 0
      src/main/java/com/dk/mdm/infrastructure/convert/ivt/InOutRecordConvert.java
  4. 21 0
      src/main/java/com/dk/mdm/infrastructure/convert/ivt/InventoryBatchConvert.java
  5. 2 20
      src/main/java/com/dk/mdm/mapper/ivt/FreezeItemMapper.java
  6. 37 24
      src/main/java/com/dk/mdm/mapper/ivt/FreezeItemMapper.xml
  7. 43 7
      src/main/java/com/dk/mdm/mapper/ivt/FreezeMapper.xml
  8. 8 1
      src/main/java/com/dk/mdm/mapper/ivt/InventoryMapper.java
  9. 31 1
      src/main/java/com/dk/mdm/mapper/ivt/InventoryMapper.xml
  10. 2 0
      src/main/java/com/dk/mdm/mapper/ivt/OutboundItemMapper.xml
  11. 5 0
      src/main/java/com/dk/mdm/mapper/mac/RecPayItemMapper.xml
  12. 41 6
      src/main/java/com/dk/mdm/mapper/mac/RecPayMapper.xml
  13. 6 1
      src/main/java/com/dk/mdm/mapper/mst/MoneyAccountMapper.xml
  14. 4 3
      src/main/java/com/dk/mdm/model/pojo/ivt/InOutRecord.java
  15. 4 4
      src/main/java/com/dk/mdm/model/query/ivt/InOutRecordQuery.java
  16. 4 3
      src/main/java/com/dk/mdm/model/response/ivt/InOutRecordResponse.java
  17. 30 0
      src/main/java/com/dk/mdm/model/response/ivt/InventoryResponse.java
  18. 50 12
      src/main/java/com/dk/mdm/model/vo/ivt/InOutRecordVO.java
  19. 21 0
      src/main/java/com/dk/mdm/model/vo/ivt/InventoryBatchVO.java
  20. 2 0
      src/main/java/com/dk/mdm/model/vo/ivt/InventoryVO.java
  21. 3 0
      src/main/java/com/dk/mdm/model/vo/mac/RecPayVO.java
  22. 49 20
      src/main/java/com/dk/mdm/service/ivt/FreezeService.java
  23. 296 46
      src/main/java/com/dk/mdm/service/ivt/inventory/InventoryService.java
  24. 40 0
      src/main/java/com/dk/mdm/service/mac/RecPayService.java
  25. 2 2
      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);
+    }
+
 }

+ 10 - 0
src/main/java/com/dk/mdm/controller/mac/RecPayController.java

@@ -89,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);
+}

+ 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 - 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>

+ 41 - 6
src/main/java/com/dk/mdm/mapper/mac/RecPayMapper.xml

@@ -202,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>
@@ -223,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的一行数据 -->

+ 6 - 1
src/main/java/com/dk/mdm/mapper/mst/MoneyAccountMapper.xml

@@ -53,6 +53,9 @@
             <if test="flgValidList != null and flgValidList.size>0">
                 AND ma.flg_valid  =any(#{flgValidList, typeHandler=BooleanListTypeHandler})
             </if>
+            <if test="flgValid != null ">
+                AND ma.flg_valid  = #{flgValid}
+            </if>
             <if test="macTypeList != null and macTypeList.size() > 0">
                 AND ma.mac_Type  =any(#{macTypeList, typeHandler=UuidListTypeHandler})
             </if>
@@ -87,11 +90,12 @@
         FROM
         (
         SELECT
+        tmdd.data_id AS "macId",
         null AS "macType",
         null AS  "macCode",
         tmdd.data_value AS  "macName",
         null	AS "Remarks",
-        null AS "flgValid",
+        'true' AS "flgValid",
         null AS "macTypeName",
         null AS  "macId",
         null	AS "balance",
@@ -101,6 +105,7 @@
         WHERE
         tmdd.dict_code = '账户类别' UNION ALL
         SELECT
+        ma.mac_id AS "macId",
         ma.mac_Type as "macType",
         ma.mac_code AS "macCode",
         ma.mac_name AS "macName",

+ 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;
 
 
     /**

+ 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:停用)

+ 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;

+ 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;
 
 }

+ 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;
 
 }

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

@@ -287,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()))));

+ 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) {
+
+    }
 
 }

+ 40 - 0
src/main/java/com/dk/mdm/service/mac/RecPayService.java

@@ -36,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
@@ -235,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);
+    }
 }

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

@@ -312,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);
     }