Browse Source

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

changhaoning 2 years ago
parent
commit
537a8cc92e
26 changed files with 958 additions and 231 deletions
  1. 23 4
      src/main/java/com/dk/mdm/controller/ivt/CheckController.java
  2. 23 1
      src/main/java/com/dk/mdm/controller/ivt/CheckItemController.java
  3. 0 2
      src/main/java/com/dk/mdm/controller/mst/OrgController.java
  4. 28 0
      src/main/java/com/dk/mdm/mapper/ivt/CheckItemMapper.java
  5. 63 5
      src/main/java/com/dk/mdm/mapper/ivt/CheckItemMapper.xml
  6. 9 3
      src/main/java/com/dk/mdm/mapper/ivt/CheckMapper.java
  7. 79 11
      src/main/java/com/dk/mdm/mapper/ivt/CheckMapper.xml
  8. 2 2
      src/main/java/com/dk/mdm/mapper/ivt/FreezeMapper.xml
  9. 9 0
      src/main/java/com/dk/mdm/mapper/ivt/InboundItemMapper.xml
  10. 3 2
      src/main/java/com/dk/mdm/mapper/mac/AccountItemMapper.xml
  11. 3 3
      src/main/java/com/dk/mdm/model/pojo/ivt/Check.java
  12. 17 2
      src/main/java/com/dk/mdm/model/pojo/ivt/CheckItem.java
  13. 17 2
      src/main/java/com/dk/mdm/model/query/ivt/CheckItemQuery.java
  14. 36 2
      src/main/java/com/dk/mdm/model/query/ivt/CheckQuery.java
  15. 115 2
      src/main/java/com/dk/mdm/model/response/ivt/CheckItemResponse.java
  16. 38 2
      src/main/java/com/dk/mdm/model/response/ivt/CheckResponse.java
  17. 31 0
      src/main/java/com/dk/mdm/model/response/ivt/InboundItemResponse.java
  18. 3 0
      src/main/java/com/dk/mdm/model/response/mac/AccountItemResponse.java
  19. 68 2
      src/main/java/com/dk/mdm/model/vo/ivt/CheckItemVO.java
  20. 7 2
      src/main/java/com/dk/mdm/model/vo/ivt/CheckVO.java
  21. 28 0
      src/main/java/com/dk/mdm/service/ivt/CheckItemService.java
  22. 142 15
      src/main/java/com/dk/mdm/service/ivt/CheckService.java
  23. 2 1
      src/main/java/com/dk/mdm/service/ivt/FreezeItemService.java
  24. 201 162
      src/main/java/com/dk/mdm/service/ivt/InboundReturnService.java
  25. 3 2
      src/main/java/com/dk/mdm/service/ivt/inventory/InventoryService.java
  26. 8 4
      src/main/java/com/dk/mdm/service/ivt/outbound/OutboundSaleOrderService.java

+ 23 - 4
src/main/java/com/dk/mdm/controller/ivt/CheckController.java

@@ -12,11 +12,8 @@ import com.dk.mdm.model.response.ivt.FreezeResponse;
 import com.dk.mdm.model.vo.ivt.CheckVO;
 import com.dk.mdm.model.vo.ivt.FreezeVO;
 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.web.bind.annotation.*;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RestController;
 import io.swagger.annotations.Api;
 import com.dk.mdm.service.ivt.CheckService;
 
@@ -54,4 +51,26 @@ public class CheckController{
         return checkService.insert(checkVO);
     }
 
+    /**
+     * @desc   : 通过ID获取编辑盘点单信息
+     * @author : 宋扬
+     * @date   : 2024/3/28 15:34
+     */
+    @ApiOperation(value = "获取盘点单信息", notes = "获取盘点单信息")
+    @PostMapping({"get_check_for_update/{id}"})
+    public ResponseResultVO getCheckForUpdate(@PathVariable String id) {
+        return checkService.getCheckForUpdate(id);
+    }
+
+    /**
+     * @desc   : 编辑盘点单
+     * @author : 宋扬
+     * @date   : 2024/3/28 16:50
+     */
+    @ApiOperation(value = "盘点", notes = "盘点")
+    @PostMapping({"update"})
+    public ResponseResultVO<?> update(@RequestBody CheckVO checkVO) {
+        return checkService.update(checkVO);
+    }
+
 }

+ 23 - 1
src/main/java/com/dk/mdm/controller/ivt/CheckItemController.java

@@ -1,8 +1,17 @@
 package com.dk.mdm.controller.ivt;
 
+import com.dk.common.model.pojo.PageList;
+import com.dk.common.response.ResponseResultVO;
 import com.dk.mdm.model.pojo.ivt.CheckItem;
 import com.dk.common.controller.BaseController;
 import com.dk.common.service.BaseService;
+import com.dk.mdm.model.query.ivt.CheckItemQuery;
+import com.dk.mdm.model.query.ivt.FreezeItemQuery;
+import com.dk.mdm.model.response.ivt.CheckItemResponse;
+import com.dk.mdm.model.response.ivt.FreezeItemResponse;
+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;
@@ -11,7 +20,7 @@ import com.dk.mdm.service.ivt.CheckItemService;
 
 @Api(tags = "盘点单明细API接口")
 @RestController
-@RequestMapping("/checkItem")
+@RequestMapping("/ivt/checkItem")
 public class CheckItemController{
 
     public BaseService<CheckItem> getService() {
@@ -21,4 +30,17 @@ public class CheckItemController{
     @Autowired
     private CheckItemService checkItemService;
 
+    /**
+     * @desc   : desc
+     * @author : 宋扬
+     * @date   : 2024/3/28 13:58
+     */
+    @ApiOperation(
+            value = "分页、关联、条件查询",
+            notes = "分页、关联、条件查询"
+    )
+    @PostMapping({"list_by"})
+    public ResponseResultVO<PageList<CheckItemResponse>> selectByCond(@RequestBody CheckItemQuery checkItemQuery) {
+        return checkItemService.selectByCond(checkItemQuery);
+    }
 }

+ 0 - 2
src/main/java/com/dk/mdm/controller/mst/OrgController.java

@@ -43,7 +43,6 @@ public class OrgController{
        */
     @ApiOperation( value = "新建组织部门", notes = "新建组织部门" )
     @PostMapping({"insert"})
-    @Transactional(rollbackFor = Exception.class)
     public ResponseResultVO<?> insert(@RequestBody OrgVO orgVO) {
         return orgService.insert(orgVO);
     }
@@ -56,7 +55,6 @@ public class OrgController{
      */
     @ApiOperation( value = "新建组织部门", notes = "新建组织部门" )
     @PostMapping({"insert_feign_org"})
-    @Transactional(rollbackFor = Exception.class)
     public ResponseResultVO<?> insertFeignOrg(@RequestBody OrgVO orgVO) {
         return orgService.insertFeignOrg(orgVO);
     }

+ 28 - 0
src/main/java/com/dk/mdm/mapper/ivt/CheckItemMapper.java

@@ -2,13 +2,41 @@ package com.dk.mdm.mapper.ivt;
 
 import com.dk.mdm.model.pojo.ivt.CheckItem;
 import com.dk.common.mapper.BaseMapper;
+import com.dk.mdm.model.query.ivt.CheckItemQuery;
+import com.dk.mdm.model.query.ivt.FreezeItemQuery;
+import com.dk.mdm.model.response.ivt.CheckItemResponse;
+import com.dk.mdm.model.response.ivt.FreezeItemResponse;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 /**
 *  盘点单明细 Mapper
 */
 @Repository
 public interface CheckItemMapper extends BaseMapper<CheckItem>{
+
+    /**
+     * @desc   : 查询盘点信息
+     * @author : 宋扬
+     * @date   : 2024/3/15 16:42
+     */
+    List<CheckItemResponse> selectByCond(CheckItemQuery checkItemQuery);
+
+
+    /**
+     * @desc   : 根据Id进行查询
+     * @author : 宋扬
+     * @date   : 2024/3/19 16:15
+     */
+    CheckItemResponse selectById(String id);
+
+    /**
+     * @desc   : 根据条件进行查询(数量)
+     * @author : 宋扬
+     * @date   : 2024/3/18 17:09
+     */
+    Long countByCond(CheckItemQuery checkItemQuery);
 	
 }
 

+ 63 - 5
src/main/java/com/dk/mdm/mapper/ivt/CheckItemMapper.xml

@@ -8,6 +8,19 @@
         item_id, check_id, item_index, sku_id, inv_id, inv_qty, check_qty, balance_qty, staff_id, loss_reason, check_date, remarks, 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, o_inv_qty
     </sql>
 
+    <!-- 盘点一览通用查询列 -->
+    <sql id="Base_Column_List_Response">
+        item.item_id,item.check_id,item.inv_id
+        ,item.inv_qty,item.o_inv_qty
+        ,item.check_qty,item.balance_qty,item.staff_id
+        ,item.loss_reason,item.check_date,item.remarks,item.flg_valid,item.cp_id
+        ,sku.sku_code,sku.sku_name,sku.sku_model,brand.short_name,wh.wh_name
+        ,dd.data_value AS "lossReasonName",staff.staff_name AS "dutyStaff"
+        ,item.sku_id,inv.wh_id,inv.non_std_code,item.item_id AS "fromItemId"
+        ,item.check_id AS "fromId",item.item_index,item.balance_qty AS "intoingQty"
+        ,item.balance_qty AS "outingQty",item.price_into,item.intoing_amt
+    </sql>
+
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.dk.mdm.model.pojo.ivt.CheckItem">
         <id column="item_id" property="itemId"/>
@@ -18,6 +31,8 @@
                 <result column="inv_qty" property="invQty"/>
                 <result column="check_qty" property="checkQty"/>
                 <result column="balance_qty" property="balanceQty"/>
+                <result column="price_into" property="priceInto"/>
+                <result column="intoing_amt" property="intoingAmt"/>
                 <result column="staff_id" property="staffId" typeHandler="UuidTypeHandler"/>
                 <result column="loss_reason" property="lossReason" typeHandler="UuidTypeHandler"/>
             <result column="check_date" property="checkDate" typeHandler="TimestampTypeHandler"/>
@@ -34,11 +49,39 @@
                 <result column="o_inv_qty" property="oInvQty"/>
     </resultMap>
 
+    <!-- 盘点一览查询映射结果 -->
+    <resultMap id="BaseResultMapResponse" type="com.dk.mdm.model.response.ivt.CheckItemResponse">
+        <id column="item_id" property="itemId"/>
+        <result column="check_id" property="checkId" typeHandler="UuidTypeHandler"/>
+        <result column="item_index" property="itemIndex"/>
+        <result column="sku_id" property="skuId" typeHandler="UuidTypeHandler"/>
+        <result column="inv_id" property="invId" typeHandler="UuidTypeHandler"/>
+        <result column="inv_qty" property="invQty"/>
+        <result column="check_qty" property="checkQty"/>
+        <result column="balance_qty" property="balanceQty"/>
+        <result column="price_into" property="priceInto"/>
+        <result column="intoing_amt" property="intoingAmt"/>
+        <result column="staff_id" property="staffId" typeHandler="UuidTypeHandler"/>
+        <result column="loss_reason" property="lossReason" typeHandler="UuidTypeHandler"/>
+        <result column="check_date" property="checkDate" typeHandler="TimestampTypeHandler"/>
+        <result column="remarks" property="remarks"/>
+        <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"/>
+        <result column="o_inv_qty" property="oInvQty"/>
+    </resultMap>
+
     <!-- 通用条件列 -->
     <sql id="Condition">
         <where>
             <if test="checkId != null and checkId != ''">
-                AND check_id = #{checkId}
+                AND check_id = #{checkId}::uuid
             </if>
             <if test="itemIndex != null">
                 AND item_index = #{itemIndex}
@@ -103,6 +146,15 @@
         </where>
     </sql>
 
+    <!-- 盘点一览条件列 -->
+    <sql id="Condition_Response">
+        <where>
+            <if test="checkId != null and checkId != ''">
+                AND item.check_id = #{checkId}::uuid
+            </if>
+        </where>
+    </sql>
+
     <sql id="idsForeach">
         <!-- 根据主键itemId批量操作 -->
         WHERE item_id in
@@ -112,11 +164,17 @@
     </sql>
 
     <!-- 查询表t_psi_check_item,(条件查询+分页)列表 -->
-    <select id="selectByCond" resultMap="BaseResultMap">
+    <select id="selectByCond" resultMap="BaseResultMapResponse">
         SELECT
-        <include refid="Base_Column_List"/>
-        FROM t_psi_check_item
-        <include refid="Condition"/>
+        <include refid="Base_Column_List_Response"/>
+        FROM t_psi_check_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
+        LEFT JOIN dkic_b.t_mst_warehouse AS wh ON wh.wh_id=inv.wh_id
+        LEFT JOIN dkic_b.t_mst_goods_brand AS brand ON brand.brand_id=sku.brand_id
+        LEFT JOIN dkic_b.t_mst_staff AS staff ON staff.staff_id=item.staff_id
+        left join t_mst_dictionary_data AS dd ON dd.data_id=item.loss_reason
+        <include refid="Condition_Response"/>
         <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
             limit #{end} offset #{start}
         </if>

+ 9 - 3
src/main/java/com/dk/mdm/mapper/ivt/CheckMapper.java

@@ -3,8 +3,7 @@ package com.dk.mdm.mapper.ivt;
 import com.dk.mdm.model.pojo.ivt.Check;
 import com.dk.common.mapper.BaseMapper;
 import com.dk.mdm.model.query.ivt.CheckQuery;
-import com.dk.mdm.model.query.ivt.FreezeQuery;
-import com.dk.mdm.model.response.ivt.FreezeResponse;
+import com.dk.mdm.model.response.ivt.CheckResponse;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
@@ -20,7 +19,7 @@ public interface CheckMapper extends BaseMapper<Check>{
      * @author : 宋扬
      * @date   : 2024/3/26 10:42
      */
-    List<FreezeResponse> selectByCond(CheckQuery checkQuery);
+    List<CheckResponse> selectByCond(CheckQuery checkQuery);
 
 
     /**
@@ -29,6 +28,13 @@ public interface CheckMapper extends BaseMapper<Check>{
      * @date   : 2024/3/26 10:42
      */
     Long countByCond(CheckQuery checkQuery);
+
+    /**
+     * @desc   : 根据Id进行查询
+     * @author : 宋扬
+     * @date   : 2024/3/26 10:42
+     */
+    CheckResponse selectById(String id);
 	
 }
 

+ 79 - 11
src/main/java/com/dk/mdm/mapper/ivt/CheckMapper.xml

@@ -7,6 +7,16 @@
     <sql id="Base_Column_List">
         check_id, check_no, org_id, staff_id, check_date, wh_id, make_staff, make_time, flg_valid, remarks, cp_id, op_create_time, op_create_user_id, op_update_time, op_update_user_id, op_app_code, op_timestamp, op_db_user, flg_lock, check_status
     </sql>
+    <!-- 盘点查询一览 -->
+    <sql id="Base_Column_List_Respons">
+        ck.check_id, ck.check_no, ck.org_id, ck.staff_id, ck.check_date, ck.wh_id, ck.make_staff, ck.make_time, ck.flg_valid
+    , ck.remarks, ck.flg_lock,ck.check_status
+    ,sys.f_get_name_i18n(tdk.kind_name_i18n,'zh_CN' ) AS "checkStatusName"
+    ,staff.staff_name AS "checkStaff"
+    ,org.org_name AS "checkOrg"
+    ,mstaff.staff_name AS "makeStaffName"
+    ,wh.wh_name AS "whName"
+    </sql>
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.dk.mdm.model.pojo.ivt.Check">
@@ -119,6 +129,54 @@
         </where>
     </sql>
 
+    <!-- 盘点一览查询条件 -->
+    <sql id="Condition_Respons">
+        <where>
+            <if test="checkNo != null and checkNo != ''">
+                AND ck.check_no = LIKE concat('%',my_ex.likequery(#{checkNo}),'%')
+            </if>
+            <if test="orgId != null and orgId != ''">
+                AND ck.org_id = #{orgId}
+            </if>
+            <if test="staffId != null and staffId != ''">
+                AND ck.staff_id = #{staffId}
+            </if>
+            <if test="checkDate != null">
+                AND ck.check_date = #{checkDate}
+            </if>
+            <if test="whId != null and whId != ''">
+                AND ck.wh_id = #{whId}
+            </if>
+            <if test="flgValid != null">
+                AND ck.flg_valid = #{flgValid}
+            </if>
+            <if test="remarks != null and remarks != ''">
+                AND ck.remarks = #{remarks}
+            </if>
+            <if test="cpId != null">
+                AND ck.cp_id = #{cpId}
+            </if>
+            <if test="flgLock != null">
+                AND ck.flg_lock = #{flgLock}
+            </if>
+            <if test="checkStatus != null and checkStatus != ''">
+                AND ck.check_status = #{checkStatus}
+            </if>
+            <if test="flgValidList != null and flgValidList.size>0">
+                AND ck.flg_valid  =any(#{flgValidList, typeHandler=BooleanListTypeHandler})
+            </if>
+            <if test="orgIdList != null and orgIdList.size>0">
+                AND ck.org_id = any(#{orgIdList, typeHandler=UuidListTypeHandler})
+            </if>
+            <if test="staffIdList != null and staffIdList.size>0">
+                AND ck.staff_id = any(#{staffIdList, typeHandler=UuidListTypeHandler})
+            </if>
+            <if test="checkStatusList != null and checkStatusList.size() > 0">
+                AND ck.check_status = any(#{checkStatusList, typeHandler=UuidListTypeHandler})
+            </if>
+        </where>
+    </sql>
+
     <sql id="idsForeach">
         <!-- 根据主键checkId批量操作 -->
         WHERE check_id in
@@ -128,11 +186,16 @@
     </sql>
 
     <!-- 查询表t_psi_check,(条件查询+分页)列表 -->
-    <select id="selectByCond" resultMap="BaseResultMap">
+    <select id="selectByCond" resultMap="BaseResultMapResponse">
         SELECT
-        <include refid="Base_Column_List"/>
-        FROM t_psi_check
-        <include refid="Condition"/>
+        <include refid="Base_Column_List_Respons"/>
+        FROM dkic_b.t_psi_check AS ck
+        lEFT JOIN dkic_b.t_mst_staff AS staff ON  staff.staff_id=ck.staff_id
+        lEFT JOIN dkic_b.t_mst_org AS org ON org.org_id=ck.org_id
+        lEFT JOIN dkic_b.t_mst_staff AS mstaff ON mstaff.staff_id=ck.make_staff
+        LEFT JOIN sys.t_data_kind AS tdk  ON tdk.kind_code = ck.check_status
+        lEFT JOIN dkic_b.t_mst_warehouse AS wh ON wh.wh_id=ck.wh_id
+        <include refid="Condition_Respons"/>
         <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
             limit #{end} offset #{start}
         </if>
@@ -142,23 +205,28 @@
     <select id="countByCond" resultType="Long">
         SELECT
         count(1)
-        FROM t_psi_check
+        FROM dkic_b.t_psi_check
         <include refid="Condition"/>
     </select>
 
     <!-- 根据主键查询表t_psi_check的一行数据 -->
-    <select id="selectById" resultMap="BaseResultMap">
+    <select id="selectById" resultMap="BaseResultMapResponse">
         SELECT
-        <include refid="Base_Column_List"/>
-        FROM t_psi_check
-        WHERE check_id = #{checkId}::uuid
+        <include refid="Base_Column_List_Respons"/>
+        FROM dkic_b.t_psi_check AS ck
+        lEFT JOIN dkic_b.t_mst_staff AS staff ON  staff.staff_id=ck.staff_id
+        lEFT JOIN dkic_b.t_mst_org AS org ON org.org_id=ck.org_id
+        lEFT JOIN dkic_b.t_mst_staff AS mstaff ON mstaff.staff_id=ck.make_staff
+        LEFT JOIN sys.t_data_kind AS tdk  ON tdk.kind_code = ck.check_status
+        lEFT JOIN dkic_b.t_mst_warehouse AS wh ON wh.wh_id=ck.wh_id
+        WHERE ck.check_id = #{checkId}::uuid
     </select>
 
     <!-- 根据主键锁定表t_psi_check的一行数据 -->
     <select id="selectByIdForUpdate" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List"/>
-        FROM t_psi_check
+        FROM dkic_b.t_psi_check
         WHERE check_id = #{checkId}
         for update
     </select>
@@ -167,7 +235,7 @@
     <select id="selectByIdsForUpdate" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List"/>
-        FROM t_psi_check
+        FROM dkic_b.t_psi_check
         <include refid="idsForeach"/>
         for update
     </select>

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

@@ -10,7 +10,7 @@
 
     <!-- 冻结一览查询列 -->
     <sql id="Base_Column_List_Respons">
-        fre.freeze_id,fre.freeze_no,fre.cus_id,fre.org_id,fre.staff_id
+        fre.freeze_id,fre.freeze_no,fre.cus_id,fre.org_id,fre.staff_id,fre.freeze_status
         ,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
         , fre.make_time, fre.flg_valid,fre.cp_id,cus.cus_phone
@@ -123,7 +123,7 @@
         lEFT JOIN dkic_b.t_mst_staff AS staff ON  staff.staff_id=fre.staff_id
         lEFT JOIN dkic_b.t_mst_org AS org ON org.org_id=fre.org_id
         lEFT JOIN dkic_b.t_mst_staff AS mstaff ON mstaff.staff_id=fre.make_staff
-        LEFT JOIN sys.t_data_kind AS tdk   ON tdk.kind_code = fre.freeze_status
+        LEFT JOIN sys.t_data_kind AS tdk  ON tdk.kind_code = fre.freeze_status
         <include refid="Condition"/>
         <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
             limit #{end} offset #{start}

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

@@ -203,7 +203,16 @@
         ,tmw.wh_id as "whId"
         ,tmw.wh_code as "whCode"
         ,tmw.wh_name as "whName"
+        ,tpp.pur_id as "purId"
+        ,tpp.pur_no as "purNo"
+        ,tppi.item_qty as "purItemQty"
+        ,tppi.intoing_qty as "purItemIntoingQty"
+        ,tppi.into_qty as "purItemIntoQty"
+        ,tpiv.inv_qty
         FROM dkic_b.t_psi_inbound_item tpii
+        left join dkic_b.t_psi_inventory tpiv on tpiv.inv_id = tpii.inv_id
+        left join dkic_b.t_psi_purchase_item tppi on tppi.item_id = tpii.from_item_id
+        left join dkic_b.t_psi_purchase tpp on tpp.pur_id = tpii.from_id
         left join dkic_b.t_mst_goods_sku tmgs on tmgs.sku_id = tpii.sku_id
         left join dkic_b.t_mst_goods_brand tmgb on tmgb.brand_id = tmgs.brand_id
         left join dkic_b.t_psi_inventory tpi on tpi.inv_id = tpii.inv_id

+ 3 - 2
src/main/java/com/dk/mdm/mapper/mac/AccountItemMapper.xml

@@ -180,12 +180,13 @@
                t.amt_should,
                t.amt_handle,
                t.amt_waive,
-               t.amt_residue,
+               0                                                 as amt_residue,
                t.remarks,
                t.make_staff,
                t.make_time,
                t.flg_valid,
-               t.cp_id
+               t.cp_id,
+               t.amt_residue as "amtReceivableHandle"
         FROM dkic_b.t_mac_account_item as t
                  left join dkic_b.t_mst_customer tmc on tmc.cus_id = t.object_id
                  left join dkic_b.t_mst_org tmo on tmo.org_id = t.org_id

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

@@ -17,6 +17,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import com.alibaba.fastjson.JSONObject;
 
+import java.time.LocalDate;
 import java.util.List;
 import java.time.LocalDateTime;
 
@@ -40,7 +41,6 @@ public class Check extends PageInfo<Check> implements Serializable {
     /**
      * 盘点ID
      */
-    @TableId(value = "check_id", type = IdType.AUTO)
     @ApiModelProperty(value = "盘点ID")
     @TableField(typeHandler = UuidTypeHandler.class)
     private String checkId;
@@ -77,9 +77,9 @@ public class Check extends PageInfo<Check> implements Serializable {
      */
     @Excel(name = "盘点日期")
     @ApiModelProperty(value = "盘点日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime checkDate;
+    private LocalDate checkDate;
 
 
     /**

+ 17 - 2
src/main/java/com/dk/mdm/model/pojo/ivt/CheckItem.java

@@ -17,6 +17,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 /**
@@ -127,9 +128,9 @@ public class CheckItem extends PageInfo<CheckItem> implements Serializable {
      */
     @Excel(name = "盘点日期")
     @ApiModelProperty(value = "盘点日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime checkDate;
+    private LocalDate checkDate;
 
 
     /**
@@ -229,6 +230,20 @@ public class CheckItem extends PageInfo<CheckItem> implements Serializable {
     private BigDecimal oInvQty;
 
 
+    /**
+     * 入库价
+     */
+    @Excel(name = "入库价")
+    @ApiModelProperty(value = "入库价")
+    private BigDecimal priceInto;
+
+    /**
+     * 入库中金额
+     */
+    @Excel(name = "入库中金额")
+    @ApiModelProperty(value = "入库中金额")
+    private BigDecimal intoingAmt;
+
     /*
      * 相关属性
      * @TableField(exist = false)

+ 17 - 2
src/main/java/com/dk/mdm/model/query/ivt/CheckItemQuery.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;
 
 /**
@@ -127,9 +128,9 @@ public class CheckItemQuery extends PageInfo<CheckItemQuery> implements Serializ
      */
     @Excel(name = "盘点日期")
     @ApiModelProperty(value = "盘点日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime checkDate;
+    private LocalDate checkDate;
 
 
     /**
@@ -228,6 +229,20 @@ public class CheckItemQuery extends PageInfo<CheckItemQuery> implements Serializ
     @ApiModelProperty(value = "原库存数量")
     private BigDecimal oInvQty;
 
+    /**
+     * 入库价
+     */
+    @Excel(name = "入库价")
+    @ApiModelProperty(value = "入库价")
+    private BigDecimal priceInto;
+
+    /**
+     * 入库中金额
+     */
+    @Excel(name = "入库中金额")
+    @ApiModelProperty(value = "入库中金额")
+    private BigDecimal intoingAmt;
+
 
     /*
      * 相关属性

+ 36 - 2
src/main/java/com/dk/mdm/model/query/ivt/CheckQuery.java

@@ -16,7 +16,9 @@ import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  *  盘点单
@@ -75,9 +77,9 @@ public class CheckQuery extends PageInfo<CheckQuery> implements Serializable {
      */
     @Excel(name = "盘点日期")
     @ApiModelProperty(value = "盘点日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime checkDate;
+    private LocalDate checkDate;
 
 
     /**
@@ -213,6 +215,38 @@ public class CheckQuery extends PageInfo<CheckQuery> implements Serializable {
     private String checkStatus;
 
 
+    /**
+     * @desc   : 有效标识List
+     * @author : 宋扬
+     * @date   : 2024/3/19 10:37
+     */
+    @Excel(name = "有效标识 (1:正常 0:停用)")
+    @ApiModelProperty(value = "有效标识 (1:正常 0:停用)")
+    private List<Boolean> flgValidList;
+
+    /**
+     * @desc   : 组织名称
+     * @author : 宋扬
+     * @date   : 2024/3/19 10:44
+     */
+    @ApiModelProperty(value = "组织名称")
+    private List<String> orgIdList;
+
+    /**
+     * @desc   : 员工
+     * @author : 宋扬
+     * @date   : 2024/3/19 10:46
+     */
+    @ApiModelProperty(value = "员工姓名")
+    private List<String> staffIdList;
+
+    /**
+     * @desc   : 盘点状态
+     * @author : 宋扬
+     * @date   : 2024/3/19 11:08
+     */
+    @ApiModelProperty(value = "盘点状态")
+    private List<String> checkStatusList;
     /*
      * 相关属性
      * @TableField(exist = false)

+ 115 - 2
src/main/java/com/dk/mdm/model/response/ivt/CheckItemResponse.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;
 
 /**
@@ -127,9 +128,9 @@ public class CheckItemResponse extends PageInfo<CheckItemResponse> implements Se
      */
     @Excel(name = "盘点日期")
     @ApiModelProperty(value = "盘点日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime checkDate;
+    private LocalDate checkDate;
 
 
     /**
@@ -228,6 +229,118 @@ public class CheckItemResponse extends PageInfo<CheckItemResponse> implements Se
     @ApiModelProperty(value = "原库存数量")
     private BigDecimal oInvQty;
 
+    /**
+     * 商品名称
+     */
+    @Excel(name = "商品名称")
+    @ApiModelProperty(value = "商品名称")
+    private String skuName;
+
+    /**
+     * 商品编码
+     */
+    @Excel(name = "商品编码")
+    @ApiModelProperty(value = "商品编码")
+    private String skuCode;
+
+    /**
+     * 商品型号
+     */
+    @Excel(name = "商品型号")
+    @ApiModelProperty(value = "商品型号")
+    private String skuModel;
+
+    /**
+     * 品牌简称
+     */
+    @Excel(name = "品牌简称")
+    @ApiModelProperty(value = "品牌简称")
+    private String shortName;
+
+
+    /**
+     * 仓库名称
+     */
+    @Excel(name = "仓库名称")
+    @ApiModelProperty(value = "仓库名称")
+    private String whName;
+
+    /**
+     * 责任人
+     */
+    @Excel(name = "责任人")
+    @ApiModelProperty(value = "责任人")
+    private String dutyStaff;
+
+    /**
+     * 盘亏原因名称
+     */
+    @Excel(name = "盘亏原因名称")
+    @ApiModelProperty(value = "盘亏原因名称")
+    private String lossReasonName;
+
+    /**
+     * 入库中数量
+     */
+    @ApiModelProperty(value = "入库中数量")
+    private BigDecimal intoingQty;
+
+
+    /**
+     * 出库数量
+     */
+    @Excel(name = "出库中数量")
+    @ApiModelProperty(value = "出库中数量")
+    private BigDecimal outingQty;
+
+    /**
+     * 来源单明细ID
+     */
+    @Excel(name = "来源单明细ID")
+    @ApiModelProperty(value = "来源单明细ID")
+    private String fromitemId;
+
+
+    /**
+     * 来源单ID
+     */
+    @Excel(name = "来源单ID")
+    @ApiModelProperty(value = "来源单ID")
+    private String fromId;
+
+    /**
+     * 来源单ID
+     */
+    @Excel(name = "非标号")
+    @ApiModelProperty(value = "非标号")
+    private String nonStdCode;
+
+    /**
+     * 仓库ID
+     */
+    @Excel(name = "仓库ID")
+    @ApiModelProperty(value = "仓库ID")
+    private String whId;
+
+    /**
+     * 入库价
+     */
+    @ApiModelProperty(value = "入库价")
+    private BigDecimal priceInto;
+
+
+    /**
+     * 入库中金额
+     */
+    @ApiModelProperty(value = "入库中金额")
+    private BigDecimal intoingAmt;
+
+
+    /**
+     * 出库中金额
+     */
+    @ApiModelProperty(value = "出库中金额")
+    private BigDecimal outingAmt;
 
     /*
      * 相关属性

+ 38 - 2
src/main/java/com/dk/mdm/model/response/ivt/CheckResponse.java

@@ -16,6 +16,7 @@ import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 /**
@@ -75,9 +76,9 @@ public class CheckResponse extends PageInfo<CheckResponse> implements Serializab
      */
     @Excel(name = "盘点日期")
     @ApiModelProperty(value = "盘点日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime checkDate;
+    private LocalDate checkDate;
 
 
     /**
@@ -212,6 +213,41 @@ public class CheckResponse extends PageInfo<CheckResponse> implements Serializab
     @ApiModelProperty(value = "盘点状态(系统字典)")
     private String checkStatus;
 
+    /**
+     * 盘点状态
+     */
+    @Excel(name = "盘点状态")
+    @ApiModelProperty(value = "盘点状态")
+    private String checkStatusName;
+
+
+    /**
+     * 组织部门
+     */
+    @Excel(name = "盘点部门")
+    @ApiModelProperty(value = "盘点部门")
+    private String checkOrg;
+
+    /**
+     * 业务员
+     */
+    @Excel(name = "盘点员")
+    @ApiModelProperty(value = "盘点员")
+    private String checkStaff;
+
+    /**
+     * 制单人
+     */
+    @Excel(name = "制单人")
+    @ApiModelProperty(value = "制单人")
+    private String makeStaffName;
+
+    /**
+     * 仓库
+     */
+    @Excel(name = "仓库")
+    @ApiModelProperty(value = "仓库")
+    private String whName;
 
     /*
      * 相关属性

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

@@ -41,6 +41,17 @@ public class InboundItemResponse  {
     private String intoId;
 
     /**
+     * 采购订单
+     */
+    @ApiModelProperty(value = "采购订单")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String purId;
+    /**
+     * 采购订单号
+     */
+    @ApiModelProperty(value = "采购订单号")
+    private String purNo;
+    /**
      * 商品规格
      */
     @Excel(name = "商品规格")
@@ -119,6 +130,26 @@ public class InboundItemResponse  {
     @ApiModelProperty(value = "入库中数量")
     private BigDecimal intoingQty;
 
+    /**
+     * 入库明细 对应来源订单明细中的商品数量
+     */
+    @Excel(name = "入库明细 对应来源订单明细中的商品数量")
+    @ApiModelProperty(value = "入库明细 对应来源订单明细中的商品数量")
+    private BigDecimal purItemQty;
+
+    /**
+     * 入库明细 对应来源订单明细中的商品数量
+     */
+    @Excel(name = "入库明细 对应来源订单明细中的入库中数量")
+    @ApiModelProperty(value = "入库明细 对应来源订单明细中的入库中数量")
+    private BigDecimal purItemIntoingQty;
+
+    /**
+     * 入库明细 对应来源订单明细中的商品数量
+     */
+    @Excel(name = "入库明细 对应来源订单明细中的已入库数量")
+    @ApiModelProperty(value = "入库明细 对应来源订单明细中的已入库数量")
+    private BigDecimal purItemIntoQty;
 
     /**
      * 入库中金额

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

@@ -240,6 +240,9 @@ public class AccountItemResponse extends PageInfo<AccountItemResponse> implement
     @ApiModelProperty(value = "账务状态")
     private String recStatusName;
 
+    @ApiModelProperty(value = "本次核销金额")
+    private BigDecimal amtReceivableHandle;
+
     private static final long serialVersionUID = 1L;
 
 }

+ 68 - 2
src/main/java/com/dk/mdm/model/vo/ivt/CheckItemVO.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;
 
 /**
@@ -127,9 +128,9 @@ public class CheckItemVO extends PageInfo<CheckItemVO> implements Serializable {
      */
     @Excel(name = "盘点日期")
     @ApiModelProperty(value = "盘点日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime checkDate;
+    private LocalDate checkDate;
 
 
     /**
@@ -228,6 +229,71 @@ public class CheckItemVO extends PageInfo<CheckItemVO> implements Serializable {
     @ApiModelProperty(value = "原库存数量")
     private BigDecimal oInvQty;
 
+    /**
+     * 入库中数量
+     */
+    @ApiModelProperty(value = "入库中数量")
+    private BigDecimal intoingQty;
+
+
+    /**
+     * 出库数量
+     */
+    @Excel(name = "出库中数量")
+    @ApiModelProperty(value = "出库中数量")
+    private BigDecimal outingQty;
+
+    /**
+     * 来源单明细ID
+     */
+    @Excel(name = "来源单明细ID")
+    @ApiModelProperty(value = "来源单明细ID")
+    private String fromitemId;
+
+
+    /**
+     * 来源单ID
+     */
+    @Excel(name = "来源单ID")
+    @ApiModelProperty(value = "来源单ID")
+    private String fromId;
+
+    /**
+     * 来源单ID
+     */
+    @Excel(name = "非标号")
+    @ApiModelProperty(value = "非标号")
+    private String nonStdCode;
+
+    /**
+     * 仓库ID
+     */
+    @Excel(name = "仓库ID")
+    @ApiModelProperty(value = "仓库ID")
+    private String whId;
+
+    /**
+     * 入库价
+     */
+    @ApiModelProperty(value = "入库价")
+    private BigDecimal priceInto;
+
+
+    /**
+     * 入库中金额
+     */
+    @ApiModelProperty(value = "入库中金额")
+    private BigDecimal intoingAmt;
+
+
+    /**
+     * 出库中金额
+     */
+    @ApiModelProperty(value = "出库中金额")
+    private BigDecimal outingAmt;
+
+
+
 
     /*
      * 相关属性

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

@@ -6,6 +6,7 @@ import com.dk.common.infrastructure.annotaiton.ExportTitle;
 import com.dk.common.infrastructure.handler.TimestampTypeHandler;
 import com.dk.common.infrastructure.handler.UuidTypeHandler;
 import com.dk.common.model.pojo.PageInfo;
+import com.dk.mdm.model.vo.sale.OrderItemVO;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -16,6 +17,7 @@ import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.List;
 
@@ -75,9 +77,9 @@ public class CheckVO extends PageInfo<CheckVO> implements Serializable {
      */
     @Excel(name = "盘点日期")
     @ApiModelProperty(value = "盘点日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime checkDate;
+    private LocalDate checkDate;
 
 
     /**
@@ -215,6 +217,9 @@ public class CheckVO extends PageInfo<CheckVO> implements Serializable {
     @ApiModelProperty(value = "明细")
     private List<CheckItemVO> itemList;
 
+    @ApiModelProperty(value = "删除明细")
+    private List<CheckItemVO> deleteItemList;
+
     /*
      * 相关属性
      * @TableField(exist = false)

+ 28 - 0
src/main/java/com/dk/mdm/service/ivt/CheckItemService.java

@@ -1,9 +1,16 @@
 package com.dk.mdm.service.ivt;
 
+import com.dk.common.infrastructure.annotaiton.Pagination;
+import com.dk.common.model.pojo.PageList;
+import com.dk.common.response.ResponseResultVO;
 import com.dk.mdm.model.pojo.ivt.CheckItem;
 import com.dk.mdm.mapper.ivt.CheckItemMapper;
 import com.dk.common.service.BaseService;
 import com.dk.common.mapper.BaseMapper;
+import com.dk.mdm.model.query.ivt.CheckItemQuery;
+import com.dk.mdm.model.query.ivt.FreezeItemQuery;
+import com.dk.mdm.model.response.ivt.CheckItemResponse;
+import com.dk.mdm.model.response.ivt.FreezeItemResponse;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
@@ -20,4 +27,25 @@ public class CheckItemService extends BaseService<CheckItem> {
 	@Autowired
 	private CheckItemMapper checkItemMapper;
 
+	/**
+	 * @desc   : 重新主键
+	 * @author : 宋扬
+	 * @date   : 2024/3/28 14:00
+	 */
+	@Override
+	public String getPrimaryKey() {
+		return "item_id";
+	}
+
+	/**
+	 * @desc   : 盘点明细
+	 * @author : 宋扬
+	 * @date   : 2024/3/28 14:00
+	 */
+	@Pagination
+	public ResponseResultVO<PageList<CheckItemResponse>> selectByCond(CheckItemQuery checkItemQuery) {
+		return super.mergeListWithCount(checkItemMapper, checkItemMapper.selectByCond(checkItemQuery)
+				, checkItemMapper.countByCond(checkItemQuery));
+	}
+
 }

+ 142 - 15
src/main/java/com/dk/mdm/service/ivt/CheckService.java

@@ -11,19 +11,21 @@ import com.dk.common.response.ResponseResultVO;
 import com.dk.mdm.infrastructure.convert.ivt.CheckConvert;
 import com.dk.mdm.infrastructure.convert.ivt.CheckItemConvert;
 import com.dk.mdm.mapper.ivt.CheckItemMapper;
-import com.dk.mdm.model.pojo.ivt.Check;
+import com.dk.mdm.mapper.ivt.InventoryMapper;
+import com.dk.mdm.model.pojo.ivt.*;
 import com.dk.mdm.mapper.ivt.CheckMapper;
 import com.dk.common.service.BaseService;
 import com.dk.common.mapper.BaseMapper;
-import com.dk.mdm.model.pojo.ivt.CheckItem;
-import com.dk.mdm.model.pojo.ivt.FreezeItem;
-import com.dk.mdm.model.pojo.ivt.Inventory;
+import com.dk.mdm.model.pojo.sale.OrderItem;
+import com.dk.mdm.model.query.ivt.CheckItemQuery;
 import com.dk.mdm.model.query.ivt.CheckQuery;
-import com.dk.mdm.model.response.ivt.CheckResponse;
-import com.dk.mdm.model.vo.ivt.CheckItemVO;
-import com.dk.mdm.model.vo.ivt.CheckVO;
-import com.dk.mdm.model.vo.ivt.FreezeItemVO;
+import com.dk.mdm.model.query.ivt.FreezeItemQuery;
+import com.dk.mdm.model.query.ivt.InventoryQuery;
+import com.dk.mdm.model.response.ivt.*;
+import com.dk.mdm.model.vo.ivt.*;
+import com.dk.mdm.model.vo.sale.OrderItemVO;
 import com.dk.mdm.service.common.CommonService;
+import com.dk.mdm.service.ivt.inbound.InboundCheckService;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
@@ -32,7 +34,11 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 @Service
 @Transactional
@@ -58,6 +64,15 @@ public class CheckService extends BaseService<Check> {
 	@Autowired
 	private CheckItemMapper checkItemMapper;
 
+	@Autowired
+	private CheckItemService checkItemService;
+
+    @Autowired
+    private InventoryMapper inventoryMapper;
+
+	@Autowired
+	private InboundCheckService inboundCheckService;
+
 
 
 	/**
@@ -91,23 +106,65 @@ public class CheckService extends BaseService<Check> {
 		// 转化实体
 		Check check = checkConvert.convertToPo(checkVO);
 		try {
+			// 定义入库Map
+			Map<String, Object> inboundCheckMap= new HashMap<>();
+			// 定义出库Map
+			Map<String, Object> outboundCheckMap= new HashMap<>();
+
 			Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.Check.getName(), true);
 			// 获取冻结状态 获取冻结日期(当前日期) 插入冻结表的实体
 			check.setMakeTime(LocalDateTime.now()).setStaffId(checkVO.getStaffId()).setCheckId(codeMap.get("outId").toString())
-					.setRemarks(checkVO.getRemarks()).setCheckNo(codeMap.get("outNote").toString()).setCheckDate(LocalDateTime.now())
-					.setOrgId(checkVO.getOrgId()).setFlgLock(checkVO.getFlgLock()).setCheckStatus(checkVO.getCheckStatus());
-			// 先插入冻结单主表数据
+					.setRemarks(checkVO.getRemarks()).setCheckNo(codeMap.get("outNote").toString()).setCheckDate(LocalDate.now())
+					.setOrgId(checkVO.getOrgId()).setFlgLock(checkVO.getFlgLock()).setCheckStatus(checkVO.getCheckStatus())
+					.setRemarks(checkVO.getRemarks()).setStaffId(checkVO.getStaffId());
+			// 先插入盘点单主表数据
 			super.insert(check);
-			// 插入冻结明细
+			// 插入盘点明细
 			if (checkVO.getItemList() != null && checkVO.getItemList().size() > 0) {
 				for (CheckItemVO checkItemVO : checkVO.getItemList()) {
 					CheckItem checkItem = checkItemConvert.convertToPo(checkItemVO);
-					// 获取冻结主表uuid
-					checkItem.setCheckId(check.getCheckId()).setCheckDate(LocalDateTime.now());
-					// 插入冻结单明细数据
+					// 获取盘点主表uuid
+					checkItem.setCheckId(check.getCheckId()).setCheckDate(LocalDate.now())
+					.setOInvQty(checkItemVO.getInvQty());
+					// 插入盘点单明细数据
 					checkItemMapper.insert(checkItem);
 				}
 			}
+			// 判断盘点点状态,如果是完成,需要生成出入库数据
+			if(checkVO.getCheckStatus().equals(Constant.CheckkStatus.CHECK_STATUS_DONE.getName())){
+				// 获取入库明细实体
+				List<CheckItemVO> inCheckItemVOList = checkVO.getItemList().stream().filter(it -> it.getBalanceQty().compareTo(BigDecimal.ZERO) > 0).collect(Collectors.toList());
+				// 计算总入库量
+				BigDecimal intoQtySum = inCheckItemVOList.stream().map(CheckItemVO::getBalanceQty).reduce(BigDecimal.ZERO, BigDecimal::add)
+						.setScale(6, BigDecimal.ROUND_HALF_UP);
+				// 计算总入库金额
+				BigDecimal intoingAmtSum = inCheckItemVOList.stream().map(CheckItemVO::getIntoingAmt).reduce(BigDecimal.ZERO, BigDecimal::add)
+						.setScale(6, BigDecimal.ROUND_HALF_UP);
+				// 获取入库总表实体
+				InboundVO inboundVO = new InboundVO();
+				inboundVO.setOrgId(checkVO.getOrgId()).setStaffId(checkVO.getStaffId()).setMakeStaff(checkVO.getMakeStaff())
+						.setIntoingQty(intoQtySum).setFromId(checkVO.getCheckId()).setFromNo(checkVO.getCheckNo())
+						.setMakeTime(LocalDateTime.now()).setIntoDate(LocalDate.now()).setWhId(checkVO.getWhId())
+						.setFlgAutoHandle(true).setIntoingAmt(intoingAmtSum);
+				// 赋值入库接口参数
+				inboundCheckMap.put("total",inboundVO);
+				inboundCheckMap.put("detail",inCheckItemVOList);
+				// 调用入库接口
+				inboundCheckService.checkInboundInsert(inboundCheckMap);
+				// 获取出库明细实体
+				List<CheckItemVO> outCheckItemVOList = checkVO.getItemList().stream().filter(it -> it.getBalanceQty().compareTo(BigDecimal.ZERO) < 0).collect(Collectors.toList());
+				// 计算总出库量
+				BigDecimal outtoQtySum = outCheckItemVOList.stream().map(CheckItemVO::getBalanceQty).reduce(BigDecimal.ZERO, BigDecimal::add)
+						.setScale(6, BigDecimal.ROUND_HALF_UP);
+				// 获取出库总表实体
+				OutboundVO outboundVO = new OutboundVO();
+				outboundVO.setOrgId(checkVO.getOrgId()).setStaffId(checkVO.getStaffId()).setMakeStaff(checkVO.getMakeStaff())
+						.setOutingQty(outtoQtySum.abs()).setFromId(checkVO.getCheckId()).setFromNo(checkVO.getCheckNo())
+						.setMakeTime(LocalDateTime.now()).setOutDate(LocalDate.now()).setOutingAmt(BigDecimal.ZERO);
+				// 赋值入库接口参数
+				outboundCheckMap.put("total",inboundVO);
+				outboundCheckMap.put("detail",inCheckItemVOList);
+			}
 			return ResponseResultUtil.success();
 		} catch (Exception e) {
 			TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); // 手动回滚事务
@@ -116,4 +173,74 @@ public class CheckService extends BaseService<Check> {
 
 	}
 
+
+	/**
+	 * @desc   : 通过ID获取编辑盘点单信息
+	 * @author : 宋扬
+	 * @date   : 2024/3/28 15:38
+	 */
+	public ResponseResultVO<?> getCheckForUpdate(String id) {
+		Map<String, Object> dataInfo = new HashMap<>();
+		CheckResponse checkResponse = checkMapper.selectById(id);
+		dataInfo.put("data", checkResponse);
+		// 商品明细
+		List<CheckItemResponse> checkItem = checkItemMapper.selectByCond(new CheckItemQuery().setCheckId(id));
+		dataInfo.put("dataItem", checkItem);
+		return ResponseResultUtil.success(dataInfo);
+	}
+
+	/**
+	 * @desc   : 编辑盘点单
+	 * @author : 宋扬
+	 * @date   : 2024/3/28 16:51
+	 */
+	@Transactional(
+			rollbackFor = {Exception.class}
+	)
+	public ResponseResultVO<?> update(CheckVO checkVO) {
+		// 明细实体(避免并发,需要再查一遍)
+		CheckItem checkItemForUpdate;
+		// 转化实体
+		Check check = checkConvert.convertToPo(checkVO);
+		// 存货实体
+		InventoryQuery query;
+
+		//删除的
+        List<CheckItemVO> deleteCheckItemVOList = checkVO.getDeleteItemList().stream().filter(it -> it.getItemId() != null).collect(Collectors.toList());
+        if (deleteCheckItemVOList.size() > 0) {
+            for (CheckItemVO checkItemVO : deleteCheckItemVOList) {
+                checkItemForUpdate = checkItemMapper.selectByIdForUpdate(checkItemVO.getItemId());
+                checkItemMapper.deleteById(checkItemVO.getItemId());
+            }
+        }
+		//新建
+        List<CheckItemVO> insertCheckItemVOList = checkVO.getItemList().stream().filter(it -> it.getItemId() == null).collect(Collectors.toList());
+        for (CheckItemVO checkItemVO : insertCheckItemVOList) {
+            CheckItem checkItem = checkItemConvert.convertToPo(checkItemVO);
+            // 获取盘点主表uuid
+            checkItem.setCheckId(check.getCheckId()).setCheckDate(LocalDate.now())
+                    .setOInvQty(checkItemVO.getInvQty());
+            // 插入盘点单明细数据
+            checkItemMapper.insert(checkItem);
+        }
+		// 编辑
+        List<CheckItemVO> editCheckItemVOList = checkVO.getItemList().stream().filter(it -> it.getItemId() != null).collect(Collectors.toList());
+		for (CheckItemVO checkItemVO : editCheckItemVOList) {
+			// 查询锁表
+			checkItemForUpdate = checkItemMapper.selectByIdForUpdate(checkItemVO.getItemId());
+			// 转化实体
+			CheckItem checkItem = checkItemConvert.convertToPo(checkItemVO);
+			// 获取存货明细里的存货数量
+            InventoryResponse inventoryResponse  = inventoryMapper.selectById(checkItemVO.getInvId());
+            // 赋值库存数量
+            checkItem.setInvQty(inventoryResponse.getInvQty());
+			// 修改盘点明细
+			checkItemService.updateByUuid(checkItem);
+		}
+		// 赋值盘点状态、ID和备注
+		check.setCheckId(checkVO.getCheckId()).setCheckStatus(checkVO.getCheckStatus()).setRemarks(checkVO.getRemarks());
+		// 更新盘点总单
+		return ResponseResultUtil.success(super.updateByUuid(check));
+	}
+
 }

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

@@ -43,6 +43,7 @@ public class FreezeItemService extends BaseService<FreezeItem> {
 	 */
 	@Pagination
 	public ResponseResultVO<PageList<FreezeItemResponse>> selectByCond(FreezeItemQuery freezeItemQuery) {
-		return super.mergeListWithCount(freezeItemMapper, freezeItemMapper.selectByCond(freezeItemQuery), freezeItemMapper.countByCond(freezeItemQuery));
+		return super.mergeListWithCount(freezeItemMapper, freezeItemMapper.selectByCond(freezeItemQuery)
+				, freezeItemMapper.countByCond(freezeItemQuery));
 	}
 }

+ 201 - 162
src/main/java/com/dk/mdm/service/ivt/InboundReturnService.java

@@ -79,6 +79,7 @@ public class InboundReturnService extends BaseService<Inbound> {
 
     @Autowired
     private CommonMapper commonMapper;
+
     @Pagination
     public ResponseResultVO<PageList<InboundResponse>> selectByCond(InboundQuery inboundQuery) {
         return super.mergeListWithCount(inboundQuery, inboundMapper.selectByInboundReturnCond(inboundQuery), inboundMapper.countByInboundReturnCond(inboundQuery));
@@ -119,47 +120,57 @@ public class InboundReturnService extends BaseService<Inbound> {
             //返回 采购退货明细不可为空,请重新操作
             return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.PURCHASE_RETURN_DETAIL_NOT_EXIST.getMessage());
         }
-        //查询采购订单
-        PurchaseResponse purchaseResponse = purchaseMapper.selectById(inboundVO.getFromId()); //采购订单id
-
         inboundVO.setReturnQty(inboundVO.getReturnQty().abs());
         inboundVO.setReturnAmt(inboundVO.getReturnAmt().abs());
-        //反写采购订单已入库退货数量、金额
-        purchaseMapper.updateAmount(new Purchase().setPurId(inboundVO.getFromId())
-                .setReturnQty(purchaseResponse.getReturnQty().add(inboundVO.getReturnQty()))
-                .setReturnAmt(purchaseResponse.getReturnAmt().add(inboundVO.getReturnAmt()))
-        );
+        if (inboundVO.getFromId() != null) {
+            //查询采购订单
+            PurchaseResponse purchaseResponse = purchaseMapper.selectById(inboundVO.getFromId()); //采购订单id
+
+
+            //反写采购订单已入库退货数量、金额
+            purchaseMapper.updateAmount(new Purchase().setPurId(inboundVO.getFromId())
+                    .setReturnQty(purchaseResponse.getReturnQty().add(inboundVO.getReturnQty()))
+                    .setReturnAmt(purchaseResponse.getReturnAmt().add(inboundVO.getReturnAmt()))
+            );
+        }
+
 
         //反写入库订单明细、反写订单明细
         for (InboundItemVO inboundItemVO : itemList) {
+
             inboundItemVO.setReturnQty(inboundItemVO.getReturnQty().abs());
             inboundItemVO.setReturnAmt(inboundItemVO.getReturnAmt().abs());
-            //根据退货明细中入库明细id查询入库明细数据
-            InboundItemResponse inboundItemResponse = inboundItemMapper.selectById(inboundItemVO.getItemId()); //原入库单明细id
-            BigDecimal returnQty = inboundItemResponse.getReturnQty().add(inboundItemVO.getReturnQty().setScale(6, BigDecimal.ROUND_HALF_UP));
-            BigDecimal returnAmt = inboundItemResponse.getReturnAmt().add(inboundItemVO.getReturnAmt().setScale(6, BigDecimal.ROUND_HALF_UP));
-
-            //反写入库单退货数量金额
-            InboundResponse inboundResponse = inboundMapper.selectById(inboundItemVO.getIntoId()); //原入库单id
-            inboundMapper.updateAmount(new Inbound().setIntoId(inboundItemVO.getIntoId())
-                    .setReturnQty(inboundResponse.getReturnQty().add(returnQty))
-                    .setReturnAmt(inboundResponse.getReturnAmt().add(returnAmt)));
-            inboundItemMapper.updateAmount(
-                    new InboundItem()
-                            .setItemId(inboundItemResponse.getItemId())
-                            .setReturnQty(returnQty)
-                            .setReturnAmt(returnAmt)
-            );
-            //反写订单出库明细 退货数量和退货金额
-            //查询采购订单明细数据
-            PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(inboundItemVO.getFromItemId());
-            //反写订单明细退货数量和退货金额
-            purchaseItemMapper.updateAmount(
-                    new PurchaseItem()
-                            .setItemId(inboundItemVO.getFromItemId())
-                            .setReturnQty(purchaseItemResponse.getReturnQty().add(inboundItemVO.getReturnQty().setScale(6, BigDecimal.ROUND_HALF_UP)))
-                            .setReturnAmt(purchaseItemResponse.getReturnAmt().add(inboundItemVO.getReturnAmt().setScale(6, BigDecimal.ROUND_HALF_UP)))
-            );
+            if (inboundItemVO.getItemId() != null) {
+                //根据退货明细中入库明细id查询入库明细数据
+                InboundItemResponse inboundItemResponse = inboundItemMapper.selectById(inboundItemVO.getItemId()); //原入库单明细id
+                BigDecimal returnQty = inboundItemResponse.getReturnQty().add(inboundItemVO.getReturnQty().setScale(6, BigDecimal.ROUND_HALF_UP));
+                BigDecimal returnAmt = inboundItemResponse.getReturnAmt().add(inboundItemVO.getReturnAmt().setScale(6, BigDecimal.ROUND_HALF_UP));
+
+                //反写入库单退货数量金额
+                InboundResponse inboundResponse = inboundMapper.selectById(inboundItemVO.getIntoId()); //原入库单id
+                inboundMapper.updateAmount(new Inbound().setIntoId(inboundItemVO.getIntoId())
+                        .setReturnQty(inboundResponse.getReturnQty().add(returnQty))
+                        .setReturnAmt(inboundResponse.getReturnAmt().add(returnAmt)));
+                inboundItemMapper.updateAmount(
+                        new InboundItem()
+                                .setItemId(inboundItemResponse.getItemId())
+                                .setReturnQty(returnQty)
+                                .setReturnAmt(returnAmt)
+                );
+            }
+            if (inboundItemVO.getFromItemId() != null) {
+                //反写订单出库明细 退货数量和退货金额
+                //查询采购订单明细数据
+                PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(inboundItemVO.getFromItemId());
+                //反写订单明细退货数量和退货金额
+                purchaseItemMapper.updateAmount(
+                        new PurchaseItem()
+                                .setItemId(inboundItemVO.getFromItemId())
+                                .setReturnQty(purchaseItemResponse.getReturnQty().add(inboundItemVO.getReturnQty().setScale(6, BigDecimal.ROUND_HALF_UP)))
+                                .setReturnAmt(purchaseItemResponse.getReturnAmt().add(inboundItemVO.getReturnAmt().setScale(6, BigDecimal.ROUND_HALF_UP)))
+                );
+            }
+
         }
         inboundVO.setIntoingQty(inboundVO.getReturnQty().multiply(new BigDecimal(-1)));
         inboundVO.setIntoingAmt(inboundVO.getReturnAmt().multiply(new BigDecimal(-1)));
@@ -207,57 +218,67 @@ public class InboundReturnService extends BaseService<Inbound> {
         inboundReturnResponse.setReturnAmt(inboundReturnResponse.getReturnAmt().abs());
 
         inboundVO.setReturnAmt(inboundVO.getReturnAmt().abs());
-        //查询采购订单
-        PurchaseResponse purchaseResponse = purchaseMapper.selectById(inboundVO.getFromId());
-        //采购订单原始退货数量 - 原始退货单退货数量
-        BigDecimal purchaseReturnQty = purchaseResponse.getReturnQty().subtract(inboundReturnResponse.getReturnQty());
-        BigDecimal purchaseReturnAmt = purchaseResponse.getReturnAmt().subtract(inboundReturnResponse.getReturnAmt());
-        //反写采购订单已入库退货数量、金额
-        purchaseMapper.updateAmount(new Purchase().setPurId(inboundVO.getFromId())
-                .setReturnQty(purchaseReturnQty.add(inboundVO.getReturnAmt()))
-                .setReturnAmt(purchaseReturnAmt.add(inboundVO.getReturnQty()))
-        );
+        if(inboundVO.getFromId() != null ){
+            //查询采购订单
+            PurchaseResponse purchaseResponse = purchaseMapper.selectById(inboundVO.getFromId());
+            //采购订单原始退货数量 - 原始退货单退货数量
+            BigDecimal purchaseReturnQty = purchaseResponse.getReturnQty().subtract(inboundReturnResponse.getReturnQty());
+            BigDecimal purchaseReturnAmt = purchaseResponse.getReturnAmt().subtract(inboundReturnResponse.getReturnAmt());
+            //反写采购订单已入库退货数量、金额
+            purchaseMapper.updateAmount(new Purchase().setPurId(inboundVO.getFromId())
+                    .setReturnQty(purchaseReturnQty.add(inboundVO.getReturnAmt()))
+                    .setReturnAmt(purchaseReturnAmt.add(inboundVO.getReturnQty()))
+            );
+        }
+
         //校验明细
-        if(inboundVO.getItemList() != null &&  inboundVO.getItemList().size() > 0){
+        if (inboundVO.getItemList() != null && inboundVO.getItemList().size() > 0) {
             for (InboundItemVO inboundItemVO : inboundVO.getItemList()) {
-                InboundItemResponse inboundItemReturnResponse = inboundItemMapper.selectById(inboundItemVO.getSIntoItemId());
-                inboundItemReturnResponse.setReturnQty(inboundItemReturnResponse.getReturnQty().abs());
-                inboundItemReturnResponse.setReturnAmt(inboundItemReturnResponse.getReturnAmt().abs());
                 inboundItemVO.setReturnQty(inboundItemVO.getReturnQty().abs());
                 inboundItemVO.setReturnAmt(inboundItemVO.getReturnAmt().abs());
-                //查询采购订单明细数据
-                PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(inboundItemVO.getSPurItemId());
-                BigDecimal purchaseItemReturnQty = purchaseItemResponse.getReturnQty().subtract(inboundItemReturnResponse.getReturnQty());
-                BigDecimal purchaseItemReturnAmt = purchaseItemResponse.getReturnAmt().subtract(inboundItemReturnResponse.getReturnAmt());
-                //反写采购订单明细退货数量和退货金额
-                purchaseItemMapper.updateAmount(
-                        new PurchaseItem()
-                                .setItemId(inboundItemVO.getSPurItemId())
-                                .setReturnQty(purchaseItemReturnQty.add(inboundItemVO.getReturnQty().setScale(6, BigDecimal.ROUND_HALF_UP)))
-                                .setReturnAmt(purchaseItemReturnAmt.add(inboundItemVO.getReturnAmt().setScale(6, BigDecimal.ROUND_HALF_UP)))
-                );
-                //根据退货明细中入库明细id查询入库明细数据
-                InboundItemResponse inboundItemResponse = inboundItemMapper.selectById(inboundItemVO.getSIntoItemId());
-                BigDecimal inboundItemReturnQty = inboundItemResponse.getReturnQty().subtract(inboundItemReturnResponse.getReturnQty());
-                BigDecimal inboundItemReturnAmt = inboundItemResponse.getReturnAmt().subtract(inboundItemReturnResponse.getReturnAmt());
+                if(inboundItemVO.getSIntoItemId() != null ){
+                    InboundItemResponse inboundItemReturnResponse = inboundItemMapper.selectById(inboundItemVO.getSIntoItemId());
+                    inboundItemReturnResponse.setReturnQty(inboundItemReturnResponse.getReturnQty().abs());
+                    inboundItemReturnResponse.setReturnAmt(inboundItemReturnResponse.getReturnAmt().abs());
+
+
+                    //查询采购订单明细数据
+                    PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(inboundItemVO.getSPurItemId());
+                    BigDecimal purchaseItemReturnQty = purchaseItemResponse.getReturnQty().subtract(inboundItemReturnResponse.getReturnQty());
+                    BigDecimal purchaseItemReturnAmt = purchaseItemResponse.getReturnAmt().subtract(inboundItemReturnResponse.getReturnAmt());
+                    //反写采购订单明细退货数量和退货金额
+                    purchaseItemMapper.updateAmount(
+                            new PurchaseItem()
+                                    .setItemId(inboundItemVO.getSPurItemId())
+                                    .setReturnQty(purchaseItemReturnQty.add(inboundItemVO.getReturnQty().setScale(6, BigDecimal.ROUND_HALF_UP)))
+                                    .setReturnAmt(purchaseItemReturnAmt.add(inboundItemVO.getReturnAmt().setScale(6, BigDecimal.ROUND_HALF_UP)))
+                    );
+                    //根据退货明细中入库明细id查询入库明细数据
+                    InboundItemResponse inboundItemResponse = inboundItemMapper.selectById(inboundItemVO.getSIntoItemId());
+                    BigDecimal inboundItemReturnQty = inboundItemResponse.getReturnQty().subtract(inboundItemReturnResponse.getReturnQty());
+                    BigDecimal inboundItemReturnAmt = inboundItemResponse.getReturnAmt().subtract(inboundItemReturnResponse.getReturnAmt());
+
+
+                    BigDecimal ReturnQty = inboundItemReturnQty.add(inboundItemVO.getReturnQty().setScale(6, BigDecimal.ROUND_HALF_UP));
+                    BigDecimal ReturnAm = inboundItemReturnAmt.add(inboundItemVO.getReturnAmt().setScale(6, BigDecimal.ROUND_HALF_UP));
+                    //反写原始入库单明细 不是负向的入库单
+                    inboundItemMapper.updateAmount(
+                            new InboundItem()
+                                    .setItemId(inboundItemResponse.getItemId())
+                                    .setReturnQty(ReturnQty)
+                                    .setReturnAmt(ReturnAm)
+                    );
+                    //反写原始入库单
+                    InboundResponse inboundResponse = inboundMapper.selectById(inboundItemVO.getSIntoId());
+                    BigDecimal inboundReturnQty = inboundResponse.getReturnQty().subtract(inboundItemReturnResponse.getReturnQty());
+                    BigDecimal inboundReturnAmt = inboundResponse.getReturnAmt().subtract(inboundItemReturnResponse.getReturnAmt());
+                    inboundMapper.updateAmount(new Inbound().setIntoId(inboundItemVO.getSIntoId())
+                            .setReturnQty(inboundReturnQty.add(inboundItemVO.getReturnQty()))
+                            .setReturnAmt(inboundReturnAmt.add(inboundItemVO.getReturnAmt())));
+                }
+
 
 
-                BigDecimal ReturnQty = inboundItemReturnQty.add(inboundItemVO.getReturnQty().setScale(6, BigDecimal.ROUND_HALF_UP));
-                BigDecimal ReturnAm = inboundItemReturnAmt.add(inboundItemVO.getReturnAmt().setScale(6, BigDecimal.ROUND_HALF_UP));
-                //反写原始入库单明细 不是负向的入库单
-                inboundItemMapper.updateAmount(
-                        new InboundItem()
-                                .setItemId(inboundItemResponse.getItemId())
-                                .setReturnQty(ReturnQty)
-                                .setReturnAmt(ReturnAm)
-                );
-                //反写原始入库单
-                InboundResponse inboundResponse = inboundMapper.selectById(inboundItemVO.getSIntoId());
-                BigDecimal inboundReturnQty = inboundResponse.getReturnQty().subtract(inboundItemReturnResponse.getReturnQty());
-                BigDecimal inboundReturnAmt = inboundResponse.getReturnAmt().subtract(inboundItemReturnResponse.getReturnAmt());
-                inboundMapper.updateAmount(new Inbound().setIntoId(inboundItemVO.getSIntoId())
-                        .setReturnQty(inboundReturnQty.add(inboundItemVO.getReturnQty()))
-                        .setReturnAmt(inboundReturnAmt.add(inboundItemVO.getReturnAmt())));
 
                 //修改采退明细
                 InboundItem inboundItem = new InboundItem();
@@ -273,7 +294,7 @@ public class InboundReturnService extends BaseService<Inbound> {
         }
 
         //删除 采退入库明细
-        if(inboundVO.getDeleteItemList() != null  && inboundVO.getDeleteItemList().size() > 0){
+        if (inboundVO.getDeleteItemList() != null && inboundVO.getDeleteItemList().size() > 0) {
             for (InboundItemVO inboundItemVO : inboundVO.getDeleteItemList()) {
                 if (inboundItemVO.getItemId() != null) {
                     //修改 采退明细 状态
@@ -302,6 +323,7 @@ public class InboundReturnService extends BaseService<Inbound> {
         inboundPurchaseReturnService.purchaseReturnInboundUpdate(inboundVO);
         return ResponseResultUtil.success();
     }
+
     /**
      * @desc : 作废
      * @date : 2022/6/28 16:58
@@ -325,13 +347,13 @@ public class InboundReturnService extends BaseService<Inbound> {
         //自动办理标识
         String flgHandleSetting = commonMapper.getSettingValue(map);
         //自动办理标识为1 自动办理入库
-        if(Constant.FlgAutoHandleStringType.ONE.getValue().equals(flgHandleSetting)){
+        if (Constant.FlgAutoHandleStringType.ONE.getValue().equals(flgHandleSetting)) {
             inboundVO.setFlgHandleSetting(Constant.FlgHandleSetting.TRUE.getValue());
             inboundVO.setFlgAutoHandle(Constant.FlgAutoHandle.TRUE.getValue());
         }
 
         //TODO  //系统参数自动出入库办理 已出库(未退款)可以作废,已出库(已退款)不可以作废
-        if(inboundResponse.getFlgHandleSetting() &&  inboundResponse.getIntoStatus().equals(Constant.IntoStatus.YIRUKU.getName())){
+        if (inboundResponse.getFlgHandleSetting() && inboundResponse.getIntoStatus().equals(Constant.IntoStatus.YIRUKU.getName())) {
             return ResponseResultUtil.error(ErrorCodeEnum.NO_WAIT_INTO_RETURN_CANCEL.getCode(),
                     ErrorCodeEnum.NO_WAIT_INTO_RETURN_CANCEL.getMessage());
         }
@@ -340,62 +362,71 @@ public class InboundReturnService extends BaseService<Inbound> {
             return ResponseResultUtil.error(ErrorCodeEnum.NO_WAIT_INTO_RETURN_CANCEL.getCode(),
                     ErrorCodeEnum.NO_WAIT_INTO_RETURN_CANCEL.getMessage());
         }
-        //查询采购单
-        PurchaseResponse purchaseResponse = purchaseMapper.selectById(inboundResponse.getFromId());
-        if (purchaseResponse == null) {
-            //返回 单据所对应的原始单据不存在,请重新操作
-            return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ORIGINAL_DOCUMENT_ABSENT.getMessage());
+        if(inboundResponse.getFromId()!=null){
+            //查询采购单
+            PurchaseResponse purchaseResponse = purchaseMapper.selectById(inboundResponse.getFromId());
+            if (purchaseResponse == null) {
+                //返回 单据所对应的原始单据不存在,请重新操作
+                return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ORIGINAL_DOCUMENT_ABSENT.getMessage());
+            }
+            //修改采购单 已入库数量/金额
+            //TODO 如果 退货存的 退货数量是负数的话
+            System.out.println(purchaseResponse.getReturnQty().subtract(inboundResponse.getReturnQty()));
+
+            purchaseMapper.updateAmount(
+                    new Purchase().setReturnQty(purchaseResponse.getReturnQty().subtract(inboundResponse.getReturnQty().abs()))
+                            .setReturnAmt(purchaseResponse.getReturnAmt().subtract(inboundResponse.getReturnAmt().abs())).setPurId(purchaseResponse.getPurId())
+            );
         }
-        //修改采购单 已入库数量/金额
-        //TODO 如果 退货存的 退货数量是负数的话
-        System.out.println(purchaseResponse.getReturnQty().subtract(inboundResponse.getReturnQty()));
 
-        purchaseMapper.updateAmount(
-                new Purchase().setReturnQty(purchaseResponse.getReturnQty().subtract(inboundResponse.getReturnQty().abs()))
-                        .setReturnAmt(purchaseResponse.getReturnAmt().subtract(inboundResponse.getReturnAmt().abs())).setPurId(purchaseResponse.getPurId())
-        );
         //查询退货明细
         List<InboundItemResponse> inboundItemResponses = inboundItemMapper.selectByCond(new InboundItemQuery().setIntoId(inboundResponse.getIntoId()));
         for (InboundItemResponse inboundItemRespons : inboundItemResponses) {
+            if(inboundItemRespons.getSIntoItemId() != null){
+                //查询源入库单明细
+                InboundItemResponse inboundItem = inboundItemMapper.selectById(inboundItemRespons.getSIntoItemId());
+                if (inboundItem == null) {
+                    //返回 单据所对应的原始单据不存在,请重新操作
+                    return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ORIGINAL_DOCUMENT_ABSENT.getMessage());
+                }
+                //修改入库单明细 已入库退货数量/金额
+                inboundItemMapper.updateAmount(new InboundItem()
+                        .setItemId(inboundItem.getItemId())
+                        .setReturnQty(inboundItem.getReturnQty().subtract(inboundItemRespons.getReturnQty().abs()))
+                        .setReturnAmt(inboundItem.getReturnAmt().subtract(inboundItemRespons.getReturnAmt().abs()))
+                );
+            }
 
-            //查询源入库单明细
-            InboundItemResponse inboundItem = inboundItemMapper.selectById(inboundItemRespons.getSIntoItemId());
-            if (inboundItem == null) {
-                //返回 单据所对应的原始单据不存在,请重新操作
-                return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ORIGINAL_DOCUMENT_ABSENT.getMessage());
+            if(inboundItemRespons.getSIntoId() != null){
+                //查询源入库单 修改 已入库退货数量/金额
+                InboundResponse inboundRes = inboundMapper.selectById(inboundItemRespons.getSIntoId());
+                if (inboundRes == null) {
+                    //返回 单据所对应的原始单据不存在,请重新操作
+                    return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ORIGINAL_DOCUMENT_ABSENT.getMessage());
+                }
+                inboundMapper.updateAmount(new Inbound().setIntoId(inboundRes.getIntoId())
+                        .setReturnQty(inboundRes.getReturnQty().subtract(inboundItemRespons.getReturnQty().abs()))
+                        .setReturnAmt(inboundRes.getReturnAmt().subtract(inboundItemRespons.getReturnAmt().abs())));
             }
-            //修改入库单明细 已入库退货数量/金额
-            inboundItemMapper.updateAmount(new InboundItem()
-                    .setItemId(inboundItem.getItemId())
-                    .setReturnQty(inboundItem.getReturnQty().subtract(inboundItemRespons.getReturnQty().abs()))
-                    .setReturnAmt(inboundItem.getReturnAmt().subtract(inboundItemRespons.getReturnAmt().abs()))
-            );
 
 
-            //查询源入库单 修改 已入库退货数量/金额
-            InboundResponse inboundRes = inboundMapper.selectById(inboundItemRespons.getSIntoId());
-            if (inboundRes == null) {
-                //返回 单据所对应的原始单据不存在,请重新操作
-                return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ORIGINAL_DOCUMENT_ABSENT.getMessage());
+            if(inboundItemRespons.getSPurItemId()!=null){
+                //查询采购单明细
+                PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(inboundItemRespons.getSPurItemId());
+                if (purchaseItemResponse == null) {
+                    //返回 单据所对应的原始单据不存在,请重新操作
+                    return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ORIGINAL_DOCUMENT_ABSENT.getMessage());
+                }
+                //修改采购单明细 已入库退货数量/金额
+                purchaseItemMapper.updateAmount(
+                        new PurchaseItem()
+                                .setItemId(purchaseItemResponse.getItemId())
+                                .setReturnQty(purchaseItemResponse.getReturnQty().subtract(inboundItemRespons.getReturnQty().abs()))
+                                .setReturnAmt(purchaseItemResponse.getReturnAmt().subtract(inboundItemRespons.getReturnAmt().abs()))
+                );
             }
-            inboundMapper.updateAmount(new Inbound().setIntoId(inboundRes.getIntoId())
-                    .setReturnQty(inboundRes.getReturnQty().subtract(inboundItemRespons.getReturnQty().abs()))
-                    .setReturnAmt(inboundRes.getReturnAmt().subtract(inboundItemRespons.getReturnAmt().abs())));
 
 
-            //查询采购单明细
-            PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(inboundItemRespons.getSPurItemId());
-            if (purchaseItemResponse == null) {
-                //返回 单据所对应的原始单据不存在,请重新操作
-                return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ORIGINAL_DOCUMENT_ABSENT.getMessage());
-            }
-            //修改采购单明细 已入库退货数量/金额
-            purchaseItemMapper.updateAmount(
-                    new PurchaseItem()
-                            .setItemId(purchaseItemResponse.getItemId())
-                            .setReturnQty(purchaseItemResponse.getReturnQty().subtract(inboundItemRespons.getReturnQty().abs()))
-                            .setReturnAmt(purchaseItemResponse.getReturnAmt().subtract(inboundItemRespons.getReturnAmt().abs()))
-            );
         }
         //修改 负向入库单 状态为作废
         inboundMapper.updateIntoStatus(new Inbound()
@@ -412,14 +443,13 @@ public class InboundReturnService extends BaseService<Inbound> {
     }
 
 
-
     /**
      * @desc : 办理
      * @date : 2022/6/28 16:58
      * @author : 于继渤
      */
     @Transactional(rollbackFor = {Exception.class})
-    public ResponseResultVO<String> returnHandle(InboundVO inboundVO){
+    public ResponseResultVO<String> returnHandle(InboundVO inboundVO) {
         //校验明细长度
         List<InboundItemVO> itemList = inboundVO.getItemList();
         //明细不存在
@@ -427,47 +457,55 @@ public class InboundReturnService extends BaseService<Inbound> {
             //返回 采购退货明细不可为空,请重新操作
             return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.PURCHASE_RETURN_DETAIL_NOT_EXIST.getMessage());
         }
-        //查询采购订单
-        PurchaseResponse purchaseResponse = purchaseMapper.selectById(inboundVO.getFromId()); //采购订单id
-
         inboundVO.setReturnQty(inboundVO.getReturnQty().abs());
         inboundVO.setReturnAmt(inboundVO.getReturnAmt().abs());
-        //反写采购订单已入库退货数量、金额
-        purchaseMapper.updateAmount(new Purchase().setPurId(inboundVO.getFromId())
-                .setReturnQty(purchaseResponse.getReturnQty().add(inboundVO.getReturnQty()))
-                .setReturnAmt(purchaseResponse.getReturnAmt().add(inboundVO.getReturnAmt()))
-        );
+        if(inboundVO.getFromId() != null){
+            //查询采购订单
+            PurchaseResponse purchaseResponse = purchaseMapper.selectById(inboundVO.getFromId()); //采购订单id
+
+            //反写采购订单已入库退货数量、金额
+            purchaseMapper.updateAmount(new Purchase().setPurId(inboundVO.getFromId())
+                    .setReturnQty(purchaseResponse.getReturnQty().add(inboundVO.getReturnQty()))
+                    .setReturnAmt(purchaseResponse.getReturnAmt().add(inboundVO.getReturnAmt()))
+            );
+        }
+
 
         //反写入库订单明细、反写订单明细
         for (InboundItemVO inboundItemVO : itemList) {
             inboundItemVO.setReturnQty(inboundItemVO.getReturnQty().abs());
             inboundItemVO.setReturnAmt(inboundItemVO.getReturnAmt().abs());
             //根据退货明细中入库明细id查询入库明细数据
-            InboundItemResponse inboundItemResponse = inboundItemMapper.selectById(inboundItemVO.getSIntoItemId()); //原入库单明细id
-            BigDecimal returnQty = inboundItemResponse.getReturnQty().add(inboundItemVO.getReturnQty().setScale(6, BigDecimal.ROUND_HALF_UP));
-            BigDecimal returnAmt = inboundItemResponse.getReturnAmt().add(inboundItemVO.getReturnAmt().setScale(6, BigDecimal.ROUND_HALF_UP));
-
-            //反写入库单退货数量金额
-            InboundResponse inboundResponse = inboundMapper.selectById(inboundItemVO.getSIntoId()); //原入库单id
-            inboundMapper.updateAmount(new Inbound().setIntoId(inboundItemVO.getSIntoId())
-                    .setReturnQty(inboundResponse.getReturnQty().add(returnQty))
-                    .setReturnAmt(inboundResponse.getReturnAmt().add(returnAmt)));
-            inboundItemMapper.updateAmount(
-                    new InboundItem()
-                            .setItemId(inboundItemResponse.getSIntoItemId())
-                            .setReturnQty(returnQty)
-                            .setReturnAmt(returnAmt)
-            );
-            //反写订单出库明细 退货数量和退货金额
-            //查询采购订单明细数据
-            PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(inboundItemVO.getSPurItemId());
-            //反写订单明细退货数量和退货金额
-            purchaseItemMapper.updateAmount(
-                    new PurchaseItem()
-                            .setItemId(inboundItemVO.getSPurItemId())
-                            .setReturnQty(purchaseItemResponse.getReturnQty().add(inboundItemVO.getReturnQty().setScale(6, BigDecimal.ROUND_HALF_UP)))
-                            .setReturnAmt(purchaseItemResponse.getReturnAmt().add(inboundItemVO.getReturnAmt().setScale(6, BigDecimal.ROUND_HALF_UP)))
-            );
+            if(inboundItemVO.getSIntoItemId() != null){
+                InboundItemResponse inboundItemResponse = inboundItemMapper.selectById(inboundItemVO.getSIntoItemId()); //原入库单明细id
+                BigDecimal returnQty = inboundItemResponse.getReturnQty().add(inboundItemVO.getReturnQty().setScale(6, BigDecimal.ROUND_HALF_UP));
+                BigDecimal returnAmt = inboundItemResponse.getReturnAmt().add(inboundItemVO.getReturnAmt().setScale(6, BigDecimal.ROUND_HALF_UP));
+
+                //反写入库单退货数量金额
+                InboundResponse inboundResponse = inboundMapper.selectById(inboundItemVO.getSIntoId()); //原入库单id
+                inboundMapper.updateAmount(new Inbound().setIntoId(inboundItemVO.getSIntoId())
+                        .setReturnQty(inboundResponse.getReturnQty().add(returnQty))
+                        .setReturnAmt(inboundResponse.getReturnAmt().add(returnAmt)));
+                inboundItemMapper.updateAmount(
+                        new InboundItem()
+                                .setItemId(inboundItemResponse.getSIntoItemId())
+                                .setReturnQty(returnQty)
+                                .setReturnAmt(returnAmt)
+                );
+            }
+            if(inboundItemVO.getSPurItemId() != null){
+                //反写订单出库明细 退货数量和退货金额
+                //查询采购订单明细数据
+                PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(inboundItemVO.getSPurItemId());
+                //反写订单明细退货数量和退货金额
+                purchaseItemMapper.updateAmount(
+                        new PurchaseItem()
+                                .setItemId(inboundItemVO.getSPurItemId())
+                                .setReturnQty(purchaseItemResponse.getReturnQty().add(inboundItemVO.getReturnQty().setScale(6, BigDecimal.ROUND_HALF_UP)))
+                                .setReturnAmt(purchaseItemResponse.getReturnAmt().add(inboundItemVO.getReturnAmt().setScale(6, BigDecimal.ROUND_HALF_UP)))
+                );
+            }
+
 
             inboundItemVO.setIntoingQty(inboundItemVO.getReturnQty().abs());
             inboundItemVO.setIntoingAmt(inboundItemVO.getReturnAmt().abs());
@@ -481,13 +519,14 @@ public class InboundReturnService extends BaseService<Inbound> {
         inboundPurchaseReturnService.saleReturnHandleInbound(inboundVO);
         return ResponseResultUtil.success();
     }
+
     /**
      * @desc : 采购退货入库撤销
      * @date : 2022/6/28 16:58
      * @author : 于继渤
      */
     @Transactional(rollbackFor = {Exception.class})
-    public ResponseResultVO<String> inboundReturnCancel(InboundVO inboundVO){
+    public ResponseResultVO<String> inboundReturnCancel(InboundVO inboundVO) {
         inboundPurchaseReturnService.saleReturnInboundCancel(inboundVO);
         return ResponseResultUtil.success();
     }

+ 3 - 2
src/main/java/com/dk/mdm/service/ivt/inventory/InventoryService.java

@@ -116,6 +116,8 @@ public class InventoryService extends BaseService<Inventory> {
         List<InOutRecordVO> intoList = new ArrayList<>();
         //出库集合
         List<InOutRecordVO> outList = new ArrayList<>();
+        //endregion
+
         //region   明细 取值
         //入库操作库存
         if (intoDetail.size() > 0 && outDetail.size() == 0) {
@@ -148,7 +150,6 @@ public class InventoryService extends BaseService<Inventory> {
             throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.NO_MESSAGE_OPERATE_INVENTORY.getMessage());
         }
         //endregion
-        //endregion
         return ResponseResultUtil.success();
     }
 
@@ -386,7 +387,7 @@ public class InventoryService extends BaseService<Inventory> {
 
    /*
     * @desc   : 判断是新建还是更新库存流水
-    * @date   : 2024/3/22 11:49
+    * @date   : 2024/3/29 16:32
     * @author : 寇珊珊
     */
     @Transactional(

+ 8 - 4
src/main/java/com/dk/mdm/service/ivt/outbound/OutboundSaleOrderService.java

@@ -518,8 +518,10 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
                     //根据id查询
                     OrderItem orderItem = new OrderItem();
                     orderItem.setItemId(outboundItemResponse.getFromItemId());
-                    orderItem.setOutQty(outboundItemResponse.getOutQty().negate());
-                    orderItem.setOutAmt(outboundItemResponse.getOutAmt().negate());
+//                    orderItem.setOutQty(outboundItemResponse.getOutQty().negate());
+//                    orderItem.setOutAmt(outboundItemResponse.getOutAmt().negate());
+                    orderItem.setOutQty(BigDecimal.ZERO);
+                    orderItem.setOutAmt(BigDecimal.ZERO);
                     int countRow = orderItemMapper.updateById(orderItem);
                     //数量超出
                     if (countRow == 0) {
@@ -543,8 +545,10 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
             //region 修改销售总单
             Order order = new Order();
             order.setOrderId(outboundResponse.getFromId());
-            order.setOutQty(outboundResponse.getOutQty().negate());
-            order.setOutAmt(outboundResponse.getOutAmt().negate());
+//            order.setOutQty(outboundResponse.getOutQty().negate());
+//            order.setOutAmt(outboundResponse.getOutAmt().negate());
+            order.setOutQty(BigDecimal.ZERO);
+            order.setOutAmt(BigDecimal.ZERO);
             //修改
             int countRow = orderMapper.updateById(order);
             //数量超出