Browse Source

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/main/java/com/dk/mdm/mapper/ivt/InboundMapper.xml
dongke 2 years ago
parent
commit
1d8e1a9c1e
32 changed files with 684 additions and 413 deletions
  1. 0 26
      src/main/java/com/dk/mdm/controller/common/CommonController.java
  2. 26 9
      src/main/java/com/dk/mdm/controller/ivt/InboundOtherController.java
  3. 2 2
      src/main/java/com/dk/mdm/controller/mst/CustomerController.java
  4. 0 23
      src/main/java/com/dk/mdm/controller/mst/MoneyAccountController.java
  5. 11 0
      src/main/java/com/dk/mdm/controller/mst/StaffController.java
  6. 12 10
      src/main/java/com/dk/mdm/controller/mst/SupplierController.java
  7. 5 14
      src/main/java/com/dk/mdm/mapper/common/CommonMapper.java
  8. 37 10
      src/main/java/com/dk/mdm/mapper/ivt/InboundMapper.xml
  9. 1 1
      src/main/java/com/dk/mdm/mapper/ivt/OutboundItemMapper.xml
  10. 14 14
      src/main/java/com/dk/mdm/mapper/mst/OrgMapper.xml
  11. 11 3
      src/main/java/com/dk/mdm/mapper/mst/StaffMapper.xml
  12. 22 20
      src/main/java/com/dk/mdm/mapper/mst/StaffPurviewMapper.xml
  13. 29 24
      src/main/java/com/dk/mdm/mapper/mst/StaffRightMapper.xml
  14. 20 13
      src/main/java/com/dk/mdm/mapper/sale/OrderItemMapper.java
  15. 9 0
      src/main/java/com/dk/mdm/mapper/sale/OrderItemMapper.xml
  16. 7 0
      src/main/java/com/dk/mdm/mapper/sale/OutReturnItemMapper.java
  17. 9 0
      src/main/java/com/dk/mdm/mapper/sale/OutReturnItemMapper.xml
  18. 24 138
      src/main/java/com/dk/mdm/model/query/ivt/InboundQuery.java
  19. 9 0
      src/main/java/com/dk/mdm/model/query/mst/OrgQuery.java
  20. 1 18
      src/main/java/com/dk/mdm/model/query/mst/StaffQuery.java
  21. 241 0
      src/main/java/com/dk/mdm/model/response/mst/OrgResponse.java
  22. 1 1
      src/main/java/com/dk/mdm/model/response/mst/SpplierResponse.java
  23. 7 1
      src/main/java/com/dk/mdm/model/vo/mst/StaffVO.java
  24. 1 22
      src/main/java/com/dk/mdm/service/common/CommonService.java
  25. 20 0
      src/main/java/com/dk/mdm/service/ivt/InboundOtherService.java
  26. 23 24
      src/main/java/com/dk/mdm/service/ivt/OutboundService.java
  27. 16 0
      src/main/java/com/dk/mdm/service/mst/CustomerService.java
  28. 0 1
      src/main/java/com/dk/mdm/service/mst/StaffPurviewService.java
  29. 0 1
      src/main/java/com/dk/mdm/service/mst/StaffRightService.java
  30. 37 0
      src/main/java/com/dk/mdm/service/mst/StaffService.java
  31. 3 10
      src/main/java/com/dk/mdm/service/sale/OrderService.java
  32. 86 28
      src/main/java/com/dk/mdm/service/sale/OutReturnService.java

+ 0 - 26
src/main/java/com/dk/mdm/controller/common/CommonController.java

@@ -529,32 +529,6 @@ public class CommonController extends BaseController<Map<String, Object>> {
     }
 
     /**
-     * @desc : 供应商类别
-     * @author : 宋扬
-     * @date : 2024/3/6 10:28
-     */
-    @ApiOperation(value = "获取供应商类别", notes = "获取供应商类别")
-    @PostMapping({"get_supType"})
-    public ResponseResultVO<List<Map<String, Object>>> getSupType(@RequestBody Map<String, Object> param) {
-        return commonService.getSupType(param);
-    }
-
-    /**
-     * @desc : 供应商服务类别
-     * @author : 宋扬
-     * @date : 2024/3/6 10:29
-     */
-    @ApiOperation(value = "获取供应商服务类别", notes = "获取供应商服务类别")
-    @PostMapping({"get_serviceCategories"})
-    public ResponseResultVO<List<Map<String, Object>>> getServiceCategories(@RequestBody Map<String, Object> param) {
-        return commonService.getServiceCategories(param);
-    }
-
-
-
-
-
-    /**
      * @desc : 获取页面数据源集合 (小程序用)
      * @author : 于继渤
      * @date : 2024/2/26 10:36

+ 26 - 9
src/main/java/com/dk/mdm/controller/ivt/InboundOtherController.java

@@ -1,21 +1,27 @@
 package com.dk.mdm.controller.ivt;
 
 
+import com.dk.common.infrastructure.annotaiton.Pagination;
 import com.dk.common.model.pojo.PageList;
+import com.dk.common.response.ResponseResultUtil;
 import com.dk.common.response.ResponseResultVO;
 import com.dk.common.service.BaseService;
 import com.dk.mdm.model.pojo.ivt.Inbound;
 import com.dk.mdm.model.query.ivt.InboundQuery;
+import com.dk.mdm.model.query.sale.OutReturnItemQuery;
 import com.dk.mdm.model.response.ivt.InboundResponse;
+import com.dk.mdm.model.response.sale.OutReturnItemResponse;
 import com.dk.mdm.model.vo.ivt.InboundVO;
 import com.dk.mdm.service.ivt.InboundOtherService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-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.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 
 @Api(tags = "其他入库单API接口")
@@ -39,11 +45,22 @@ public class InboundOtherController {
      * @author : 寇珊珊
      */
     @ApiOperation(value = "条件查询", notes = "条件查询")
-    @PostMapping({"select_inbound_and_item"})
-    public ResponseResultVO<PageList<InboundResponse>> selectInboundAndItem(@RequestBody InboundQuery inboundQuery) {
+    @PostMapping({"list_by"})
+    public ResponseResultVO<PageList<InboundResponse>> selectInboundAndItem(@Valid @RequestBody InboundQuery inboundQuery) {
         return inboundOtherService.selectInboundAndItem(inboundQuery);
     }
 
+    /**
+     * @desc   : 查询明细信息
+     * @date   : 2024/3/9 15:45
+     * @author : 寇珊珊
+     */
+    @ApiOperation(value = "明细信息条件查询", notes = "明细信息条件查询")
+    @PostMapping({"select_other_inbound_item_info_by_id/{id}"})
+    public ResponseResultVO<Map<String, Object>> selectOtherInboundItemInfoById(@PathVariable String id) {
+        return inboundOtherService.selectOtherInboundItemInfoById(id);
+    }
+
 
     /**
      * @desc   : 其他入库新建
@@ -55,7 +72,7 @@ public class InboundOtherController {
             notes = "其他入库新建"
     )
     @PostMapping({"other_inbound_insert"})
-    public ResponseResultVO<?> otherInboundInsert(@RequestBody InboundVO inboundVO) {
+    public ResponseResultVO<?> otherInboundInsert(@Valid @RequestBody InboundVO inboundVO) {
         return inboundOtherService.otherInboundInsert(inboundVO);
     }
 
@@ -70,7 +87,7 @@ public class InboundOtherController {
             notes = "其他入库办理"
     )
     @PostMapping({"other_handle_inbound"})
-    public ResponseResultVO<?> otherHandleInbound(@RequestBody InboundVO inboundVO) {
+    public ResponseResultVO<?> otherHandleInbound(@Valid @RequestBody InboundVO inboundVO) {
         return inboundOtherService.otherHandleInbound(inboundVO);
     }
 
@@ -86,7 +103,7 @@ public class InboundOtherController {
             notes = "其它入库撤销"
     )
     @PostMapping({"other_inbound_cancel"})
-    public ResponseResultVO<?> otherInboundCancel(@RequestBody InboundVO inboundVO) {
+    public ResponseResultVO<?> otherInboundCancel(@Valid @RequestBody InboundVO inboundVO) {
         return inboundOtherService.otherInboundCancel(inboundVO);
     }
 

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

@@ -45,7 +45,7 @@ public class CustomerController{
      * @author : 于继渤
      * @date : 2023/1/5 9:39
      */
-    @ApiOperation( value = "新建角色(权限)", notes = "新建角色权限" )
+    @ApiOperation( value = "新建", notes = "v" )
     @PostMapping({"insert"})
     public ResponseResultVO<?> insert(@RequestBody CustomerVO customerVO) {
         return customerService.insert(customerVO);
@@ -56,7 +56,7 @@ public class CustomerController{
      * @author : 于继渤
      * @date : 2023/1/5 9:39
      */
-    @ApiOperation( value = "编辑角色权限(编辑角色权限)", notes = "编辑角色权限" )
+    @ApiOperation( value = "编辑", notes = "编辑" )
     @PostMapping({"update"})
     public ResponseResultVO<?> update(@RequestBody CustomerVO customerVO) {
         return customerService.update(customerVO);

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

@@ -82,29 +82,6 @@ public class MoneyAccountController{
         return moneyAccountService.update(moneyAccountVO);
     }
 
-
-    /**
-     * @desc : 停用
-     * @author : 宋扬
-     * @date : 2023/2/29 10:34
-     */
-    @ApiOperation(value = "停用", notes = "停用")
-    @PostMapping("disable/{id}")
-    public ResponseResultVO<Boolean> disable(@PathVariable String id) {
-        return this.getService().disable(id);
-    }
-
-    /**
-     * @desc : 启用
-     * @author : 宋扬
-     * @date : 2023/2/29 10:34
-     */
-    @ApiOperation(value = "启用", notes = "启用")
-    @PostMapping("enable/{id}")
-    public ResponseResultVO<Boolean> enable(@PathVariable String id) {
-        return this.getService().enable(id);
-    }
-
     /**
      * @desc : 批量启用
      * @author : 周兴

+ 11 - 0
src/main/java/com/dk/mdm/controller/mst/StaffController.java

@@ -95,6 +95,17 @@ public class StaffController{
     }
 
     /**
+     * @desc : 新建员工--邀请员工的确定
+     * @author : 姜永辉
+     * @date : 2023/1/9 10:48
+     */
+    @ApiOperation(value = "邀请员工的确定", notes = "邀请员工的确定")
+    @PostMapping({"insert_request"})
+    public ResponseResultVO<?> insertRequestStaff(@RequestBody StaffVO staffVO) {
+        return staffService.insertRequestStaff(staffVO);
+    }
+
+    /**
      * @desc : 编辑员工
      * @author : 姜永辉
      * @date : 2023/1/9 10:49

+ 12 - 10
src/main/java/com/dk/mdm/controller/mst/SupplierController.java

@@ -16,6 +16,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import io.swagger.annotations.Api;
 import com.dk.mdm.service.mst.SupplierService;
 
+import java.util.List;
+
 @Api(tags = "供应商API接口")
 @RestController
 @RequestMapping("/mst/supplier")
@@ -73,25 +75,25 @@ public class SupplierController{
     }
 
     /**
-     * @desc : 停用
+     * @desc : 停用批量
      * @author : songy
      * @date : 2023/2/29 10:34
      */
-    @ApiOperation(value = "停用", notes = "停用")
-    @PostMapping("disable/{id}")
-    public ResponseResultVO<Boolean> disable(@PathVariable String id) {
-        return this.getService().disable(id);
+    @ApiOperation(value = "批量停用", notes = "批量停用")
+    @PostMapping("disable_batch")
+    public ResponseResultVO<Boolean> disableBatch(@RequestBody List<String> ids) {
+        return this.getService().disableBatch(ids);
     }
 
     /**
-     * @desc : 启用
+     * @desc : 启用批量
      * @author : songy
      * @date : 2023/2/29 10:34
      */
-    @ApiOperation(value = "启用", notes = "启用")
-    @PostMapping("enable/{id}")
-    public ResponseResultVO<Boolean> enable(@PathVariable String id) {
-        return this.getService().enable(id);
+    @ApiOperation(value = "批量启用", notes = "批量启用")
+    @PostMapping("enable_batch")
+    public ResponseResultVO<Boolean> enableBatch(@RequestBody List<String> ids) {
+        return this.getService().enableBatch(ids);
     }
 
     /**

+ 5 - 14
src/main/java/com/dk/mdm/mapper/common/CommonMapper.java

@@ -378,21 +378,12 @@ public interface CommonMapper extends BaseMapper<Map<String, Object>> {
      */
     Long getInventoryCountByPage(Map param);
 
-    /**
-     * @desc   : 供应商类别
-     * @author : 宋扬
-     * @date   : 2024/3/6 10:45
-     */
-    List<Map<String, Object>> getSupType(Map param);
-
-    /**
-     * @desc   : 供应商服务类别
-     * @author : 宋扬
-     * @date   : 2024/3/6 10:45
+     /**
+     * @desc : 获取账户类别
+     * @author : 王英杰
+     * @date : 2024/3/1 9:21
      */
-    List<Map<String, Object>> getServiceCategories(Map param);
-
-
+    List<Map<String, Object>> getDictionaryDataByPage(Map param);
 
     List<Map<String, Object>> getSaleChannel(Map param);
     List<Map<String, Object>> getStaff(Map param);

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

@@ -197,9 +197,6 @@
             <if test="supId != null and supId != ''">
                 AND tpi.sup_id = #{supId}::uuid
             </if>
-            <if test="intoDate != null">
-                AND tpi.into_date = #{intoDate}
-            </if>
             <if test="makeStaff != null and makeStaff != ''">
                 AND tpi.make_staff = #{makeStaff}
             </if>
@@ -218,7 +215,26 @@
             <if test="cpId != null">
                 AND tpi.cp_id = #{cpId}
             </if>
-
+            <if test="cusPhone != null and cusPhone != ''">
+                AND tmc.cus_phone LIKE concat('%',my_ex.likequery(#{cusPhone}),'%')
+            </if>
+            <if test="cusName != null and cusName != ''">
+                AND tmc.cus_name LIKE concat('%',my_ex.likequery(#{cusName}),'%')
+            </if>
+            <if test="orgIdList != null and orgIdList.size() > 0">
+                AND tmo.org_id  =any(#{orgIdList, typeHandler=uuidListTypeHandler})
+            </if>
+            <if test="staffIdList != null and staffIdList.size() > 0">
+                AND tms.staff_id  =any(#{staffIdList, typeHandler=uuidListTypeHandler})
+            </if>
+            <if test="intoDateStart != null and intoDateEnd != null">
+                AND tpi.make_time &gt;= #{intoDateStart}::timestamp with time zone
+                AND tpi.make_time &lt; #{intoDateEnd}::timestamp with time zone + interval '1 day'
+            </if>
+            <if test="intoStatusList != null and intoStatusList.size()>0">
+                AND tpi.into_status =
+                any(#{intoStatusList, typeHandler= StringListTypeHandler})
+            </if>
         </where>
     </sql>
 
@@ -240,14 +256,13 @@
         tms.staff_name AS "makeStaffName",
         tmw.wh_name as "whName",
         tpi.sum_quantity, tpi.sum_amount,
+        tmc.cus_name                                      as "cusName",
+        tmc.cus_phone                                     as "cusPhone",
+        tmc.cus_from                                      as "cusFrom",
+        makestaff.staff_name                              as "makeStaffName",
         sys.f_get_name_i18n(tdk.kind_name_i18n, 'zh_CN') AS  "intoStatusName"
         FROM dkic_b.t_psi_inbound tpi
-        Left join dkic_b.t_mst_org tmo on tmo.org_id = tpi.org_id
-        Left join dkic_b.t_mst_supplier tmp on tmp.sup_id = tpi.sup_id
-        Left join dkic_b.t_mst_staff tms on tms.staff_id = tpi.staff_id
-        Left join dkic_b.t_mst_staff tms1 on tms1.staff_id = tpi.make_staff
-        LEFT JOIN sys.t_data_kind tdk   ON tdk.kind_code = tpi.into_status
-        Left join dkic_b.t_mst_warehouse tmw on tmw.wh_id = tpi.wh_id
+        <include refid="Join_Table"/>
         <include refid="Condition"/>
         <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
             limit #{end} offset #{start}
@@ -259,9 +274,21 @@
         SELECT
         count(1)
         FROM dkic_b.t_psi_inbound tpi
+        <include refid="Join_Table"/>
         <include refid="Condition"/>
     </select>
 
+    <sql id="Join_Table">
+        Left join dkic_b.t_mst_org tmo on tmo.org_id = tpi.org_id
+        Left join dkic_b.t_mst_supplier tmp on tmp.sup_id = tpi.sup_id
+        Left join dkic_b.t_mst_staff tms on tms.staff_id = tpi.staff_id
+        Left join dkic_b.t_mst_staff makestaff on makestaff.staff_id = tpi.make_staff
+        LEFT JOIN sys.t_data_kind tdk   ON tdk.kind_code = tpi.into_status
+        Left join dkic_b.t_mst_warehouse tmw on tmw.wh_id = tpi.wh_id
+        left join dkic_b.t_mst_customer tmc on t.cus_id = tmc.cus_id
+    </sql>
+
+
     <!-- 根据主键查询表t_psi_inbound的一行数据 -->
     <select id="selectById" resultMap="BaseResultMapResponse">
         SELECT

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

@@ -230,7 +230,7 @@
         SELECT
         <include refid="Base_Column_List"/>
         FROM t_psi_outbound_item
-        WHERE outId = #{id}::uuid
+        WHERE out_id = #{id}::uuid
         for update
     </select>
 

+ 14 - 14
src/main/java/com/dk/mdm/mapper/mst/OrgMapper.xml

@@ -9,11 +9,11 @@
         , org_name, parent_id, display_no, top_id, level_upper, level_lower, level_leaf, level_no, level_code, level_name, 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, org_code
     </sql>
     <sql id="Base_Column_List_view">
-        org_id
-        , org_name, parent_id, display_no, top_id    </sql>
+        parent.org_id
+        , parent.org_name, parent.parent_id, parent.display_no, parent.top_id    </sql>
 
     <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.dk.mdm.model.pojo.mst.Org">
+    <resultMap id="BaseResultMap" type="com.dk.mdm.model.response.mst.OrgResponse">
         <id column="org_id" property="orgId"/>
         <result column="org_name" property="orgName"/>
         <result column="parent_id" property="parentId" typeHandler="UuidTypeHandler"/>
@@ -124,14 +124,13 @@
         SELECT
         <include refid="Base_Column_List_view"/>
         FROM
-        dkic_b.t_mst_org
-        WHERE
-        flg_valid = true
+        dkic_b.t_mst_org AS parent
+        <where>
         <if test="orgName != null and orgName != ''">
             AND parent.org_name = #{orgName}
         </if>
-        <if test="flgValid != null">
-            AND parent.flg_valid = #{flgValid}
+        <if test="flgValidList != null and flgValidList.size>0">
+            AND parent.flg_valid  =any(#{flgValidList, typeHandler=BooleanListTypeHandler})
         </if>
         <if test="cpId != null">
             AND parent.cp_id = #{cpId}
@@ -142,6 +141,7 @@
         <if test="searchText !=null">
             AND ( parent.org_name LIKE concat('%', #{searchText}, '%')
         </if>
+        </where>
     </select>
     <select id="resetLevelOrg" resultType="java.lang.Boolean">
         select dkic_b.f_reset_level_org(#{cpId}, #{topId}::uuid)
@@ -150,18 +150,18 @@
     <select id="countByCond" resultType="Long">
         SELECT
         count(1)
-        FROM  dkic_b.t_mst_org
-        WHERE
-        flg_valid = true
+        FROM  dkic_b.t_mst_org parent
+        <where>
+        <if test="cpId != null">
+            AND parent.cp_id = #{cpId}
+        </if>
         <if test="orgName != null and orgName != ''">
             AND parent.org_name = #{orgName}
         </if>
         <if test="flgValid != null">
             AND parent.flg_valid = #{flgValid}
         </if>
-        <if test="cpId != null">
-            AND parent.cp_id = #{cpId}
-        </if>
+        </where>
     </select>
     <!-- 查询同父级下 最大的 显示顺序 -->
     <select id="maxDisplayNo" resultType="Integer">

+ 11 - 3
src/main/java/com/dk/mdm/mapper/mst/StaffMapper.xml

@@ -44,13 +44,13 @@
                 AND t.staff_id = #{staffId}
             </if>
             <if test="staffCode != null and staffCode != ''">
-                AND position (#{staffCode} in t.staff_code ) >0
+                AND t.staff_code LIKE concat('%', my_ex.likequery(#{staffCode}), '%')
             </if>
             <if test="staffName != null and staffName != ''">
-                AND position (#{staffName} in t.staff_name ) >0
+                AND t.staff_name LIKE concat('%', my_ex.likequery(#{staffName}), '%')
             </if>
             <if test="staffPhone != null and staffPhone != ''">
-                AND position (#{staffPhone} in t.staff_phone ) >0
+                AND t.staff_phone LIKE concat('%', my_ex.likequery(#{staffPhone}), '%')
             </if>
 
             <if test="orgId != null">
@@ -138,6 +138,14 @@
         WHERE t.wx_user_id = #{userId}::uuid
     </select>
 
+    <!-- 根据用户Id更新dkic_a.t_wx_user的cpid-->
+<!--    <update id="updateWxInfoByUserId">-->
+<!--        update dkic_a.t_wx_user -->
+<!--        set current_cp = #{currentCp},joined_cps = #{currentCp}-->
+<!--        where user_id = #{userId}::uuid-->
+<!--    </update>-->
+
+    <!-- 批量插入数 -->
     <insert id="insertBatch">
         insert into dkic_b.t_mst_staff
         (

+ 22 - 20
src/main/java/com/dk/mdm/mapper/mst/StaffPurviewMapper.xml

@@ -5,23 +5,24 @@
     <!-- 通用设置 -->
     <!-- 通用查询列 -->
     <sql id="Base_Column_List">
-        staff_id, purview_code, flg_nolimit, data_ids, cp_id, op_create_time, op_create_user_id, op_update_time, op_update_user_id, op_app_code, op_timestamp, op_db_user
+        staff_id
+        , purview_code, flg_nolimit, data_ids, 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>
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.dk.mdm.model.pojo.mst.StaffPurview">
         <id column="staff_id" property="staffId"/>
-                <result column="purview_code" property="purviewCode"/>
-                <result column="flg_nolimit" property="flgNolimit"/>
-                <result column="data_ids" property="dataIds" typeHandler="UuidListTypeHandler"/>
-                <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="purview_code" property="purviewCode"/>
+        <result column="flg_nolimit" property="flgNolimit"/>
+        <result column="data_ids" property="dataIds" typeHandler="UuidListTypeHandler"/>
+        <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>
 
     <!-- 通用条件列 -->
@@ -142,21 +143,22 @@
 
     <!-- 获取范围权限 -->
     <select id="getStaffPurview" resultType="java.util.Map">
-        SELECT  org.org_id    AS "id",
-                org.org_name    AS "orgName",
-                org.parent_id  AS "parentId",
-               orgb.org_id   AS "orgId",
-               org.level_no AS "levelNo",
-               org.level_code as "levelCode",
-               CASE WHEN orgb.org_id IS NULL THEN FALSE ELSE TRUE END    AS "checked"
+        SELECT org.org_id                                             AS "id",
+               org.org_name                                           AS "orgName",
+               org.parent_id                                          AS "parentId",
+               orgb.org_id                                            AS "orgId",
+               org.level_no                                           AS "levelNo",
+               org.level_code                                         as "levelCode",
+               CASE WHEN orgb.org_id IS NULL THEN FALSE ELSE TRUE END AS "checked"
         FROM dkic_b.t_mst_org org
-                 left JOIN dkic_b.t_mst_org orgb ON orgb.org_id = org.org_id  and org.org_id::uuid =  any ( (
+                 left JOIN dkic_b.t_mst_org orgb ON orgb.org_id = org.org_id and org.org_id::uuid =  any ( (
                  select  data_ids from dkic_b.t_mst_staff_purview where staff_id = #{staffId}::uuid)::uuid[])
         WHERE org.flg_valid
           AND org.cp_id = #{cpId}
         ORDER BY org.level_code;
     </select>
 
+    <!-- 批量插入   -->
     <insert id="insertOrUpdateCondition">
         insert into t_mst_staff_purview
         (

+ 29 - 24
src/main/java/com/dk/mdm/mapper/mst/StaffRightMapper.xml

@@ -113,6 +113,7 @@
         for update
     </select>
 
+    <!--    批量插入-->
     <insert id="insertBatch">
         insert into t_mst_staff_right
         (
@@ -137,26 +138,29 @@
     </insert>
 
     <!-- 删除功能权限 -->
-    <delete id="deleteById" >
-        DELETE FROM dkic_b.t_mst_staff_right   WHERE staff_id = #{staffId}::uuid;
+    <delete id="deleteById">
+        DELETE
+        FROM dkic_b.t_mst_staff_right
+        WHERE staff_id = #{staffId}::uuid;
     </delete>
 
 
     <!-- 获取功能权限 -->
     <select id="getStaffRight" resultType="java.util.Map">
-        SELECT menu.menu_uuid    AS "menuUuid",
-               menu.menu_uuid    AS "id",
-               menu.menu_name    AS "menuName",
-               menu.app_code     AS "appCode",
-               menu.parent_uuid  AS "parentId",
-               menu.flg_menu     AS "flgMenu",
-               staffRight.staff_id   AS "staffId",
-               menu.fun_uuid     AS "funUuid",
-               CASE WHEN staffRight.staff_id IS NULL THEN FALSE ELSE TRUE END    AS "checked"
+        SELECT menu.menu_uuid                                                 AS "menuUuid",
+               menu.menu_uuid                                                 AS "id",
+               menu.menu_name                                                 AS "menuName",
+               menu.app_code                                                  AS "appCode",
+               menu.parent_uuid                                               AS "parentId",
+               menu.flg_menu                                                  AS "flgMenu",
+               staffRight.staff_id                                            AS "staffId",
+               menu.fun_uuid                                                  AS "funUuid",
+               CASE WHEN staffRight.staff_id IS NULL THEN FALSE ELSE TRUE END AS "checked"
         FROM sys.t_app_menu menu
-             inner JOIN dkic_b.t_mst_role_fun roleFun ON menu.fun_uuid = roleFun.fun_uuid  and roleFun.role_id::uuid =  any ( (
+                 inner JOIN dkic_b.t_mst_role_fun roleFun ON menu.fun_uuid = roleFun.fun_uuid and roleFun.role_id::uuid =  any ( (
                  select  role_ids from dkic_b.t_mst_staff where staff_id = #{staffId}::uuid)::uuid[])
-             left JOIN   dkic_b.t_mst_staff_right staffRight ON menu.fun_uuid = staffRight.fun_uuid  and staffRight.staff_id = #{staffId}::uuid
+            left JOIN dkic_b.t_mst_staff_right staffRight
+        ON menu.fun_uuid = staffRight.fun_uuid and staffRight.staff_id = #{staffId}::uuid
 
         WHERE menu.flg_valid
           AND menu.flg_right
@@ -166,19 +170,20 @@
 
     <!-- WEB获取功能权限 -->
     <select id="getStaffRightWeb" resultType="java.util.Map">
-        SELECT menu.menu_uuid    AS "menuUuid",
-               menu.menu_uuid    AS "id",
-               menu.menu_name    AS "menuName",
-               menu.app_code     AS "appCode",
-               menu.parent_uuid  AS "parentId",
-               menu.flg_menu     AS "flgMenu",
-               staffRight.staff_id   AS "staffId",
-               menu.fun_uuid     AS "funUuid",
-               CASE WHEN staffRight.staff_id IS NULL THEN FALSE ELSE TRUE END    AS "checked"
+        SELECT menu.menu_uuid                                                 AS "menuUuid",
+               menu.menu_uuid                                                 AS "id",
+               menu.menu_name                                                 AS "menuName",
+               menu.app_code                                                  AS "appCode",
+               menu.parent_uuid                                               AS "parentId",
+               menu.flg_menu                                                  AS "flgMenu",
+               staffRight.staff_id                                            AS "staffId",
+               menu.fun_uuid                                                  AS "funUuid",
+               CASE WHEN staffRight.staff_id IS NULL THEN FALSE ELSE TRUE END AS "checked"
         FROM sys.t_app_menu menu
-                 left JOIN dkic_b.t_mst_role_fun roleFun ON menu.fun_uuid = roleFun.fun_uuid  and roleFun.role_id::uuid =  any ( (
+                 left JOIN dkic_b.t_mst_role_fun roleFun ON menu.fun_uuid = roleFun.fun_uuid and roleFun.role_id::uuid =  any ( (
                  select  role_ids from dkic_b.t_mst_staff where staff_id = #{staffId}::uuid)::uuid[])
-            left JOIN   dkic_b.t_mst_staff_right staffRight ON menu.fun_uuid = staffRight.fun_uuid  and staffRight.staff_id = #{staffId}::uuid
+            left JOIN dkic_b.t_mst_staff_right staffRight
+        ON menu.fun_uuid = staffRight.fun_uuid and staffRight.staff_id = #{staffId}::uuid
 
         WHERE menu.flg_valid
           AND menu.flg_right

+ 20 - 13
src/main/java/com/dk/mdm/mapper/sale/OrderItemMapper.java

@@ -10,43 +10,50 @@ import org.springframework.stereotype.Repository;
 import java.util.List;
 
 /**
-*  销售明细 Mapper
-*/
+ * 销售明细 Mapper
+ */
 @Repository
-public interface OrderItemMapper extends BaseMapper<OrderItem>{
+public interface OrderItemMapper extends BaseMapper<OrderItem> {
     /**
-     * @desc   : 根据条件进行查询
+     * @desc : 根据条件进行查询
      * @author : 付斌
-     * @date   : 2024-02-28 10:18
+     * @date : 2024-02-28 10:18
      */
     List<OrderItemResponse> selectByCond(OrderItemQuery orderQuery);
 
     /**
-     * @desc   : 根据条件进行查询(数量)
+     * @desc : 根据条件进行查询(数量)
      * @author : 付斌
-     * @date   : 2024-02-28 10:19
+     * @date : 2024-02-28 10:19
      */
     Long countByCond(OrderItemQuery orderQuery);
 
     /**
-     * @desc   : 删除明细
+     * @desc : 删除明细
      * @author : 付斌
-     * @date   : 2024-03-03 14:17
+     * @date : 2024-03-03 14:17
      */
     int deleteById(@Param("id") String id);
 
     /**
-     * @desc   : 根据条件进行查询(出库用)
+     * @desc : 根据条件进行查询(出库用)
      * @author : 付斌
-     * @date   : 2024-03-06 12:59
+     * @date : 2024-03-06 12:59
      */
     List<OrderItemResponse> selectByCondForOut(OrderItemQuery orderQuery);
 
     /**
-     * @desc   : 根据条件进行查询(退货用)
+     * @desc : 根据条件进行查询(退货用)
      * @author : 付斌
-     * @date   : 2024-03-06 12:59
+     * @date : 2024-03-06 12:59
      */
     List<OrderItemResponse> selectByCondForReturn(OrderItemQuery orderQuery);
+
+    /**
+     * @desc :根据主表主键锁定表t_psi_order_item的一行数据
+     * @author : 付斌
+     * @date : 2024-03-09 15:44
+     */
+    List<OrderItem> selectByZIdForUpdate(String id);
 }
 

+ 9 - 0
src/main/java/com/dk/mdm/mapper/sale/OrderItemMapper.xml

@@ -205,6 +205,15 @@
         for update
     </select>
 
+    <!-- 根据主表主键锁定表t_psi_order_item的一行数据 -->
+    <select id="selectByZIdForUpdate" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM t_psi_order_item
+        WHERE order_id = #{id}::uuid
+        for update
+    </select>
+
     <!-- 根据主键锁定表t_psi_order_item的多行数据 -->
     <select id="selectByIdsForUpdate" resultMap="BaseResultMap">
         SELECT

+ 7 - 0
src/main/java/com/dk/mdm/mapper/sale/OutReturnItemMapper.java

@@ -26,5 +26,12 @@ public interface OutReturnItemMapper extends BaseMapper<OutReturnItem>{
      * @date   : 2024-02-28 10:19
      */
     Long countByCond(OutReturnItemQuery outReturnItemQuery);
+
+    /**
+     * @desc   : 根据主表主键锁定表t_psi_out_return_item的多行数据
+     * @author : 付斌
+     * @date   : 2024-03-09 11:36
+     */
+    List<OutReturnItem> selectByZIdForUpdate(String id);
 }
 

+ 9 - 0
src/main/java/com/dk/mdm/mapper/sale/OutReturnItemMapper.xml

@@ -222,6 +222,15 @@
         for update
     </select>
 
+    <!-- 根据主键锁定表t_psi_out_return_item的多行数据 -->
+    <select id="selectByZIdForUpdate" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM t_psi_out_return_item
+        WHERE return_id = #{id}::uuid
+        for update
+    </select>
+
     <insert id="insertBatch">
         insert into t_psi_out_return_item
         (

+ 24 - 138
src/main/java/com/dk/mdm/model/query/ivt/InboundQuery.java

@@ -24,6 +24,7 @@ import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  *  入库单
@@ -128,53 +129,6 @@ public class InboundQuery extends PageInfo<InboundQuery> implements Serializable
     private String intoStatus;
 
 
-    /**
-     * 入库中数量
-     */
-    @Excel(name = "入库中数量")
-    @ApiModelProperty(value = "入库中数量")
-    private BigDecimal intoingQty;
-
-
-    /**
-     * 入库中金额
-     */
-    @Excel(name = "入库中金额")
-    @ApiModelProperty(value = "入库中金额")
-    private BigDecimal intoingAmt;
-
-
-    /**
-     * 已入库数量
-     */
-    @Excel(name = "已入库数量")
-    @ApiModelProperty(value = "已入库数量")
-    private BigDecimal intoQty;
-
-
-    /**
-     * 已入库金额
-     */
-    @Excel(name = "已入库金额")
-    @ApiModelProperty(value = "已入库金额")
-    private BigDecimal intoAmt;
-
-
-    /**
-     * 已入库退货数量
-     */
-    @Excel(name = "已入库退货数量")
-    @ApiModelProperty(value = "已入库退货数量")
-    private BigDecimal returnQty;
-
-
-    /**
-     * 已入库退货金额
-     */
-    @Excel(name = "已入库退货金额")
-    @ApiModelProperty(value = "已入库退货金额")
-    private BigDecimal returnAmt;
-
 
     /**
      * 入库日期
@@ -187,23 +141,6 @@ public class InboundQuery extends PageInfo<InboundQuery> implements Serializable
 
 
     /**
-     * 备注
-     */
-    @Excel(name = "备注")
-    @ApiModelProperty(value = "备注")
-    private String remarks;
-
-
-    /**
-     * 附件 (index(显示顺序)、name(文件名)、path(路径)、type(类型)、time(上传时间)...)
-     */
-    @Excel(name = "附件 (index(显示顺序)、name(文件名)、path(路径)、type(类型)、time(上传时间)...)")
-    @ApiModelProperty(value = "附件 (index(显示顺序)、name(文件名)、path(路径)、type(类型)、time(上传时间)...)")
-    @TableField(typeHandler = JsonTypeHandler.class)
-    private JSONObject annexPaths;
-
-
-    /**
      * 制单员
      */
     @Excel(name = "制单员")
@@ -222,23 +159,6 @@ public class InboundQuery extends PageInfo<InboundQuery> implements Serializable
     private LocalDateTime makeTime;
 
 
-    /**
-     * 应收款单
-     */
-    @Excel(name = "应收款单")
-    @ApiModelProperty(value = "应收款单")
-    @TableField(typeHandler = UuidTypeHandler.class)
-    private String receivableId;
-
-
-    /**
-     * 应付款单
-     */
-    @Excel(name = "应付款单")
-    @ApiModelProperty(value = "应付款单")
-    @TableField(typeHandler = UuidTypeHandler.class)
-    private String payableId;
-
 
     /**
      * 有效标识 (1:正常 0:停用)
@@ -256,79 +176,45 @@ public class InboundQuery extends PageInfo<InboundQuery> implements Serializable
     private Integer cpId;
 
 
-    /**
-     * 创建时间 (触发器自动处理)
-     */
-    @Excel(name = "创建时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
-    @ApiModelProperty(value = "创建时间 (触发器自动处理)")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime opCreateTime;
 
 
-    /**
-     * 创建用户 (触发器自动处理)
-     */
-    @Excel(name = "创建用户 (触发器自动处理)")
-    @ApiModelProperty(value = "创建用户 (触发器自动处理)")
-    @TableField(typeHandler = UuidTypeHandler.class)
-    private String opCreateUserId;
 
+    /*
+     * 相关属性
+     * @TableField(exist = false)
+     */
 
-    /**
-     * 修改时间 (触发器自动处理)
+    /*
+     * 关联属性 + 查询条件
+     * @TableField(exist = false)
      */
-    @Excel(name = "修改时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
-    @ApiModelProperty(value = "修改时间 (触发器自动处理)")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime opUpdateTime;
 
 
-    /**
-     * 修改用户 (触发器自动处理)
-     */
-    @Excel(name = "修改用户 (触发器自动处理)")
-    @ApiModelProperty(value = "修改用户 (触发器自动处理)")
-    @TableField(typeHandler = UuidTypeHandler.class)
-    private String opUpdateUserId;
+    @ApiModelProperty(value = "客户电话")
+    private String cusPhone;
 
+    @ApiModelProperty(value = "客户名称")
+    private String cusName;
 
-    /**
-     * 数据操作应用 (触发器自动处理)
-     */
-    @Excel(name = "数据操作应用 (触发器自动处理)")
-    @ApiModelProperty(value = "数据操作应用 (触发器自动处理)")
-    private String opAppCode;
+    @ApiModelProperty(value = "部门List")
+    private List<String> orgIdList;
 
+    @ApiModelProperty(value = "业务员List")
+    private List<String> staffIdList;
 
-    /**
-     * 数据时间戳 (触发器自动处理)
-     */
-    @Excel(name = "数据时间戳 (触发器自动处理)")
-    @ApiModelProperty(value = "数据时间戳 (触发器自动处理)")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime opTimestamp;
+    @ApiModelProperty(value = "入库状态List")
+    private List<String> intoStatusList;
 
 
-    /**
-     * 数据操作数据库用户 (触发器自动处理)
-     */
-    @Excel(name = "数据操作数据库用户 (触发器自动处理)")
-    @ApiModelProperty(value = "数据操作数据库用户 (触发器自动处理)")
-    private String opDbUser;
+    @ApiModelProperty(value = "入库时间开始")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDate intoDateStart;
 
+    @ApiModelProperty(value = "入库时间结束")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDate intoDateEnd;
 
-    /*
-     * 相关属性
-     * @TableField(exist = false)
-     */
 
-    /*
-     * 关联属性 + 查询条件
-     * @TableField(exist = false)
-     */
 
 
     private static final long serialVersionUID = 1L;

+ 9 - 0
src/main/java/com/dk/mdm/model/query/mst/OrgQuery.java

@@ -78,6 +78,15 @@ public class OrgQuery extends PageInfo<com.dk.mdm.model.query.mst.OrgQuery> impl
     @ApiModelProperty(value = "显示顺序")
     private Integer displayNo;
 
+    /**
+     * @desc   : 有效标识List
+     * @author : 宋扬
+     * @date   : 2024/3/2 9:31
+     */
+    @Excel(name = "有效标识 (1:正常 0:停用)")
+    @ApiModelProperty(value = "有效标识 (1:正常 0:停用)")
+    private List<Boolean> flgValidList;
+
 
 
     private static final long serialVersionUID = 1L;

+ 1 - 18
src/main/java/com/dk/mdm/model/query/mst/StaffQuery.java

@@ -71,23 +71,6 @@ public class StaffQuery extends PageInfo<StaffQuery> implements Serializable {
     @ApiModelProperty(value = "员工电话")
     private String staffPhone;
 
-
-    /**
-     * 员工工种
-     */
-    @Excel(name = "员工工种")
-    @ApiModelProperty(value = "员工工种")
-    private Integer jobId;
-
-
-    /**
-     * 员工职务
-     */
-    @Excel(name = "员工职务")
-    @ApiModelProperty(value = "员工职务")
-    private Integer postId;
-
-
     /**
      * 组织部门
      */
@@ -132,7 +115,7 @@ public class StaffQuery extends PageInfo<StaffQuery> implements Serializable {
      */
     @Excel(name = "工厂ID")
     @ApiModelProperty(value = "工厂ID")
-    private Integer ftyId;
+    private Integer cpId;
 
 
     /**

+ 241 - 0
src/main/java/com/dk/mdm/model/response/mst/OrgResponse.java

@@ -0,0 +1,241 @@
+package com.dk.mdm.model.response.mst;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dk.common.infrastructure.annotaiton.ExportTitle;
+import com.dk.common.infrastructure.handler.TimestampTypeHandler;
+import com.dk.common.infrastructure.handler.UuidListTypeHandler;
+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.time.LocalDateTime;
+import java.util.List;
+
+/**
+ *  组织机构
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@ExportTitle("组织机构")
+@TableName(value = "t_mst_org", autoResultMap = true, schema =  "dkic_b")
+@ApiModel(value="实体类:组织机构", description="表名:t_mst_org")
+public class OrgResponse extends PageInfo<OrgResponse> implements Serializable {
+
+    /*
+     * 数据库字段
+     */
+
+    /**
+     * 组织ID
+     */
+//    @TableId(value = "org_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "组织ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String orgId;
+
+
+    /**
+     * 组织名称
+     */
+    @Excel(name = "组织名称")
+    @ApiModelProperty(value = "组织名称")
+    private String orgName;
+
+
+    /**
+     * 父级ID
+     */
+    @Excel(name = "父级ID")
+    @ApiModelProperty(value = "父级ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String parentId;
+
+
+    /**
+     * 显示顺序 (【1 ~ 46655】)
+     */
+    @Excel(name = "显示顺序 (【1 ~ 46655】)")
+    @ApiModelProperty(value = "显示顺序 (【1 ~ 46655】)")
+    private Integer displayNo;
+
+
+    /**
+     * 顶层ID
+     */
+    @Excel(name = "顶层ID")
+    @ApiModelProperty(value = "顶层ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String topId;
+
+
+    /**
+     * 上层ID
+     */
+    @Excel(name = "上层ID")
+    @ApiModelProperty(value = "上层ID")
+    @TableField(typeHandler = UuidListTypeHandler.class)
+    private String levelUpper;
+
+
+    /**
+     * 下层ID
+     */
+    @Excel(name = "下层ID")
+    @ApiModelProperty(value = "下层ID")
+    @TableField(typeHandler = UuidListTypeHandler.class)
+    private String levelLower;
+
+
+    /**
+     * 末级标识
+     */
+    @Excel(name = "末级标识")
+    @ApiModelProperty(value = "末级标识")
+    private Boolean levelLeaf;
+
+
+    /**
+     * 层级序号
+     */
+    @Excel(name = "层级序号")
+    @ApiModelProperty(value = "层级序号")
+    private Integer levelNo;
+
+
+    /**
+     * 层级代码
+     */
+    @Excel(name = "层级代码")
+    @ApiModelProperty(value = "层级代码")
+    private String levelCode;
+
+
+    /**
+     * 层级全称 (【 / 】)
+     */
+    @Excel(name = "层级全称 (【 / 】)")
+    @ApiModelProperty(value = "层级全称 (【 / 】)")
+    private String levelName;
+
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+
+
+    /**
+     * 有效标识 (1:正常 0:停用)
+     */
+    @Excel(name = "有效标识 (1:正常 0:停用)")
+    @ApiModelProperty(value = "有效标识 (1:正常 0:停用)")
+    private Boolean flgValid;
+
+
+    /**
+     * 企业ID
+     */
+    @Excel(name = "企业ID")
+    @ApiModelProperty(value = "企业ID")
+    private Integer cpId;
+
+
+    /**
+     * 创建时间 (触发器自动处理)
+     */
+    @Excel(name = "创建时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
+    @ApiModelProperty(value = "创建时间 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opCreateTime;
+
+
+    /**
+     * 创建用户 (触发器自动处理)
+     */
+    @Excel(name = "创建用户 (触发器自动处理)")
+    @ApiModelProperty(value = "创建用户 (触发器自动处理)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String opCreateUserId;
+
+
+    /**
+     * 修改时间 (触发器自动处理)
+     */
+    @Excel(name = "修改时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
+    @ApiModelProperty(value = "修改时间 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opUpdateTime;
+
+
+    /**
+     * 修改用户 (触发器自动处理)
+     */
+    @Excel(name = "修改用户 (触发器自动处理)")
+    @ApiModelProperty(value = "修改用户 (触发器自动处理)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String opUpdateUserId;
+
+
+    /**
+     * 数据操作应用 (触发器自动处理)
+     */
+    @Excel(name = "数据操作应用 (触发器自动处理)")
+    @ApiModelProperty(value = "数据操作应用 (触发器自动处理)")
+    private String opAppCode;
+
+
+    /**
+     * 数据时间戳 (触发器自动处理)
+     */
+    @Excel(name = "数据时间戳 (触发器自动处理)")
+    @ApiModelProperty(value = "数据时间戳 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opTimestamp;
+
+
+    /**
+     * 数据操作数据库用户 (触发器自动处理)
+     */
+    @Excel(name = "数据操作数据库用户 (触发器自动处理)")
+    @ApiModelProperty(value = "数据操作数据库用户 (触发器自动处理)")
+    private String opDbUser;
+
+
+    @ApiModelProperty(value = "")
+    private String orgCode;
+
+    @TableField(exist = false)
+    private List<OrgResponse> itemData;
+
+    /*
+     * 相关属性
+     * @TableField(exist = false)
+     */
+
+    /*
+     * 关联属性 + 查询条件
+     * @TableField(exist = false)
+     */
+
+
+    private static final long serialVersionUID = 1L;
+
+}

+ 1 - 1
src/main/java/com/dk/mdm/model/response/mst/SpplierResponse.java

@@ -252,7 +252,7 @@ public class SpplierResponse extends PageInfo<SpplierResponse> implements Serial
 
     @TableField(exist = false)
     @ApiModelProperty(value = "供应商类别")
-    private String serviceCategoriesNames;
+    private String serviceCategoriesName;
     /*
      * 相关属性
      * @TableField(exist = false)

+ 7 - 1
src/main/java/com/dk/mdm/model/vo/mst/StaffVO.java

@@ -70,7 +70,13 @@ public class StaffVO extends PageInfo<StaffVO> implements Serializable {
     @ApiModelProperty(value = "员工电话")
     private String staffPhone;
 
-
+    /**
+     * 微信用户
+     */
+    @Excel(name = "微信用户")
+    @ApiModelProperty(value = "微信用户")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String wxUserId;
 
     /**
      * 组织部门

+ 1 - 22
src/main/java/com/dk/mdm/service/common/CommonService.java

@@ -670,27 +670,6 @@ public class CommonService extends BaseService<Map<String, Object>> {
                 commonMapper.getInventoryCountByPage(param));
     }
 
-    /**
-     * @desc   : 供应商类别
-     * @author : 宋扬
-     * @date   : 2024/3/6 10:41
-     */
-    public ResponseResultVO<List<Map<String, Object>>> getSupType(Map<String, Object> param) {
-        // 获取系统基础数据
-        List<Map<String, Object>> list = commonMapper.getSupType(param);
-        return ResponseResultUtil.success(list);
-    }
-
-    /**
-     * @desc   : 供应商服务类别
-     * @author : 宋扬
-     * @date   : 2024/3/6 10:43
-     */
-    public ResponseResultVO<List<Map<String, Object>>> getServiceCategories(Map<String, Object> param) {
-        // 获取系统基础数据
-        List<Map<String, Object>> list = commonMapper.getServiceCategories(param);
-        return ResponseResultUtil.success(list);
-    }
 
 
     /**
@@ -711,7 +690,7 @@ public class CommonService extends BaseService<Map<String, Object>> {
         map.put("cpId",cpId);
         //客户来源
         if (dataSourceCode.equals("customerFrom")) {
-            map.put("dictCode","客户来源");
+            map.put("dictCode","基础资料-来源");
             list = commonMapper.getDictionaryData(map);
         }
         //销售渠道

+ 20 - 0
src/main/java/com/dk/mdm/service/ivt/InboundOtherService.java

@@ -16,8 +16,10 @@ import com.dk.mdm.model.pojo.ivt.Inbound;
 import com.dk.mdm.model.pojo.ivt.InboundItem;
 import com.dk.mdm.model.query.ivt.InboundItemQuery;
 import com.dk.mdm.model.query.ivt.InboundQuery;
+import com.dk.mdm.model.query.sale.OutReturnItemQuery;
 import com.dk.mdm.model.response.ivt.InboundItemResponse;
 import com.dk.mdm.model.response.ivt.InboundResponse;
+import com.dk.mdm.model.response.sale.OutReturnItemResponse;
 import com.dk.mdm.model.vo.ivt.InboundItemVO;
 import com.dk.mdm.model.vo.ivt.InboundVO;
 import com.dk.mdm.service.common.CommonService;
@@ -26,6 +28,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -71,6 +74,23 @@ public class InboundOtherService extends BaseService<Inbound> {
 				inboundMapper.selectInboundAndItemCountByCond(inboundQuery));
 	}
 
+	/**
+	 * @desc   : 查询明细
+	 * @date   : 2024/3/9 15:43
+	 * @author : 寇珊珊
+	 */
+	@Pagination
+	public ResponseResultVO<Map<String, Object>> selectOtherInboundItemInfoById(String id) {
+		Map<String, Object> result = new HashMap<>();
+		// 商品明细
+		List<InboundItemResponse> inboundItemResponses = inboundItemMapper.selectByCond(new InboundItemQuery().setIntoId(id));
+		result.put("itemList", inboundItemResponses);
+		// 收款
+
+		// 附件
+		return ResponseResultUtil.success(result);
+	}
+
 
 	/**
 	 * @desc   : 其他入库新建

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

@@ -189,8 +189,6 @@ public class OutboundService extends BaseService<Outbound> {
         OrderItem orderItemForUpdate;
         // 订单明细实体
         OutboundItem outboundItemForUpdate;
-        // 转化实体
-        Outbound outbound = outboundConvert.convertToPo(outboundVO);
 
         // 编辑出库明细
         List<OutboundItemVO> editOutboundItemVOList = outboundVO.getItemList().stream().filter(it -> it.getItemId() != null).collect(Collectors.toList());
@@ -218,16 +216,21 @@ public class OutboundService extends BaseService<Outbound> {
             outboundItemService.updateByUuid(outboundItem);
         }
 
-        Outbound outboundForUpdate = outboundMapper.selectByIdForUpdate(outboundVO.getOutId());
-
-        // 更新订单上的退货数量,金额
-        Order orderForUpdate = orderMapper.selectByIdForUpdate(outboundVO.getFromId());
+        // 计算订单明细的出库中数量,金额合计
+        List<OrderItem> orderItemList = orderItemMapper.selectByZIdForUpdate(outboundVO.getFromId());
+        OrderItem orderItem = orderItemList.stream().reduce((x, y) -> {
+            OrderItem item = new OrderItem();
+            item.setOutingQty(x.getOutingQty().add(y.getOutingQty()));
+            item.setOutingAmt(x.getOutingAmt().add(y.getOutingAmt()));
+            return item;
+        }).get();
+        // 更新订单上的出库中数量,金额
         Order orderUpdate = new Order();
-        orderUpdate.setOutingQty(orderForUpdate.getOutingQty().subtract(outboundForUpdate.getOutingQty()).add(outboundForUpdate.getOutingQty()))
-                .setOutingAmt(orderForUpdate.getOutingAmt().subtract(outboundForUpdate.getOutingAmt()).add(outboundForUpdate.getOutingAmt()))
-                .setOrderId(outboundVO.getFromId());
+        orderUpdate.setOutingQty(orderItem.getOutingQty()).setOutingAmt(orderItem.getOutingAmt()).setOrderId(outboundVO.getFromId());
         orderService.updateByUuid(orderUpdate);
 
+        // 转化实体、更新出库单总表
+        Outbound outbound = outboundConvert.convertToPo(outboundVO);
         return ResponseResultUtil.success(super.update(outbound, new UpdateWrapper<Outbound>().lambda().eq(Outbound::getOutId,
                 UUID.fromString(outbound.getOutId()))));
     }
@@ -244,8 +247,7 @@ public class OutboundService extends BaseService<Outbound> {
             throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISEXISTS_AFTER_OPERATE.getMessage());
         }
 
-        double sumOutingQty = 0;    // 合计出库中数量
-        double sumOutingAmt = 0;    // 合计出库中金额
+        // 查出并锁定所有的出库明细
         List<OutboundItem> outboundItemList = outboundItemMapper.selectByZIdForUpdate(id);
         OrderItem orderItemForUpdate;
         for (OutboundItem outboundItemForUpdate : outboundItemList) {
@@ -256,22 +258,19 @@ public class OutboundService extends BaseService<Outbound> {
                     .setOutingAmt(orderItemForUpdate.getOutingAmt().subtract(outboundItemForUpdate.getOutingAmt()))
                     .setItemId(orderItemForUpdate.getItemId());
             orderItemService.updateByUuid(orderItemUpdate);
-
-            // 累加出库中数量,金额
-            sumOutingQty += outboundItemForUpdate.getOutingQty().doubleValue();
-            sumOutingAmt += outboundItemForUpdate.getOutingAmt().doubleValue();
         }
 
-        // 更新订单上的出库中数量,金额,状态
-        Order orderForUpdate = orderMapper.selectByIdForUpdate(outbound.getFromId());
+        // 计算订单明细的出库中数量,金额合计
+        List<OrderItem> orderItemList = orderItemMapper.selectByZIdForUpdate(outbound.getFromId());
+        OrderItem orderItem = orderItemList.stream().reduce((x, y) -> {
+            OrderItem item = new OrderItem();
+            item.setOutingQty(x.getOutingQty().add(y.getOutingQty()));
+            item.setOutingAmt(x.getOutingAmt().add(y.getOutingAmt()));
+            return item;
+        }).get();
+        // 更新订单上的出库中数量,金额
         Order orderUpdate = new Order();
-        orderUpdate.setOutingQty(orderForUpdate.getOutingQty().subtract(new BigDecimal(sumOutingQty)))
-                .setOutingAmt(orderForUpdate.getOutingAmt().subtract(new BigDecimal(sumOutingAmt)))
-                .setOrderId(outbound.getFromId());
-        // 如果出库中数量为0了,更新状态为待出库
-        if (orderUpdate.getOutingQty().compareTo(BigDecimal.ZERO) == 0) {
-            orderUpdate.setOutStatus(Constant.OutStatus.DAICHUKU.getName());
-        }
+        orderUpdate.setOutingQty(orderItem.getOutingQty()).setOutingAmt(orderItem.getOutingAmt()).setOrderId(outbound.getFromId());
         orderService.updateByUuid(orderUpdate);
 
         // 作废

+ 16 - 0
src/main/java/com/dk/mdm/service/mst/CustomerService.java

@@ -2,10 +2,12 @@ package com.dk.mdm.service.mst;
 
 import com.dk.common.infrastructure.annotaiton.Pagination;
 import com.dk.common.infrastructure.constant.Constant;
+import com.dk.common.infrastructure.util.LocalDateTimeUtils;
 import com.dk.common.model.pojo.PageList;
 import com.dk.common.response.ResponseResultUtil;
 import com.dk.common.response.ResponseResultVO;
 import com.dk.mdm.infrastructure.convert.mst.CustomerConvert;
+import com.dk.mdm.infrastructure.util.AuthUtils;
 import com.dk.mdm.model.pojo.mst.Customer;
 import com.dk.mdm.mapper.mst.CustomerMapper;
 import com.dk.common.service.BaseService;
@@ -18,6 +20,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalDateTime;
+import java.util.Date;
 import java.util.Map;
 
 @Service
@@ -39,6 +43,10 @@ public class CustomerService extends BaseService<Customer> {
     @Autowired
     private CommonService commonService;
 
+
+    @Autowired
+    private AuthUtils authUtils;
+
     /**
      * @desc : 重写主键
      * @author : 于继渤
@@ -75,6 +83,14 @@ public class CustomerService extends BaseService<Customer> {
         Map<String, Object> uniqueNoteCode = commonService.getUniqueNoteCode(Constant.docNameConstant.CUSTOMER.getName(), true);
         customer.setCusId(uniqueNoteCode.get("outId").toString());
         customer.setCusCode(uniqueNoteCode.get("outNote").toString());
+        //设置公司id
+        customer.setCpId(authUtils.getStaff().getCpId());
+        //设置报备人
+        customer.setReportStaff(authUtils.getStaff().getStaffId());
+        //报备日期
+        customer.setReportTime(LocalDateTime.now());
+        //销售状态 (【系统字典】客销状态:公海、潜客、成
+        customer.setSaleStatus(Constant.SaleStatus.QIANKE.getName());
         customerMapper.insert(customer);
         return ResponseResultUtil.success();
     }

+ 0 - 1
src/main/java/com/dk/mdm/service/mst/StaffPurviewService.java

@@ -16,7 +16,6 @@ import java.util.List;
 import java.util.Map;
 
 @Service
-@Transactional
 public class StaffPurviewService extends BaseService<StaffPurview> {
 
 	@Override

+ 0 - 1
src/main/java/com/dk/mdm/service/mst/StaffRightService.java

@@ -21,7 +21,6 @@ import java.util.Map;
  * @date : 2024/2/26 10:36
  */
 @Service
-@Transactional
 public class StaffRightService extends BaseService<StaffRight> {
 
     @Override

+ 37 - 0
src/main/java/com/dk/mdm/service/mst/StaffService.java

@@ -91,6 +91,14 @@ public class StaffService extends BaseService<Staff> {
     public ResponseResultVO<?> insert(StaffVO staffVO) {
         // 转化实体
         Staff staff = staffConvert.convertToPo(staffVO);
+        // 校验同一个公司的电话不能重复
+        StaffQuery staffQuery = new StaffQuery();
+        staffQuery.setCpId(staff.getCpId());
+        staffQuery.setStaffPhone(staff.getStaffPhone());
+        List<StaffResponse> staffResponses = staffMapper.selectByCond(staffQuery);
+        if (staffResponses!=null && staffResponses.size() > 0){
+            return ResponseResultUtil.error(ResponseCodeEnum.ERROR_STAFF_PHONE_EXIST);
+        }
         // 获取编码和主键UuId
         Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.STAFF.getName(), true);
         staff.setStaffId(codeMap.get("outId").toString());
@@ -99,6 +107,35 @@ public class StaffService extends BaseService<Staff> {
     }
 
     /**
+     * @desc : 保存方法-邀请员工的确定
+     * @author : 姜永辉
+     * @date : 2023/1/9 10:49
+     */
+    @Transactional( rollbackFor = {Exception.class} )
+    public ResponseResultVO<?> insertRequestStaff(StaffVO staffVO) {
+        // 转化实体
+        Staff staff = staffConvert.convertToPo(staffVO);
+        // 校验同一个公司的电话不能重复
+        StaffQuery staffQuery = new StaffQuery();
+        staffQuery.setCpId(staff.getCpId());
+        staffQuery.setStaffPhone(staff.getStaffPhone());
+        List<StaffResponse> staffResponses = staffMapper.selectByCond(staffQuery);
+        if (staffResponses!=null && staffResponses.size() > 0){
+            return ResponseResultUtil.error(ResponseCodeEnum.ERROR_STAFF_PHONE_EXIST);
+        }
+        // 获取编码和主键UuId
+        Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.STAFF.getName(), true);
+        staff.setStaffId(codeMap.get("outId").toString());
+        staff.setStaffCode(codeMap.get("outNote").toString());
+        // 更新 被邀人员的cpid
+        if (staff.getWxUserId()!=null){
+
+        }
+        // 插入员工
+        return super.insert(staff);
+    }
+
+    /**
      * @desc : 编辑方法
      * @author : 姜永辉
      * @date : 2023/1/9 10:49

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

@@ -137,13 +137,6 @@ public class OrderService extends BaseService<Order> {
         // 订单总单保存
         super.insert(order);
 
-//        // 更新单号
-//        Order updateOrder = new Order();
-//        updateOrder.setOrderNo(commonMapper.getDocNo(order.getCpId(), order.getOrderId(), Constant.DocumentType.ORDER_CHASE.getName()));
-//        updateOrder.setOrderId(order.getOrderId());
-//        super.update(updateOrder,new UpdateWrapper<Order>().lambda().eq(Order::getOrderId,
-//                UUID.fromString(updateOrder.getOrderId())));
-
         // 订单明细保存
         if (orderVO.getItemList() != null && orderVO.getItemList().size() > 0) {
             for (OrderItemVO orderItemVO : orderVO.getItemList()) {
@@ -210,9 +203,9 @@ public class OrderService extends BaseService<Order> {
      * @date : 2024-03-08 16:38
      */
     public ResponseResultVO<?> invalid(String id) {
-        Order order = orderMapper.selectByIdForUpdate(id);
-        // 如果状态不是待出库,出库中数量不是0,不能作废
-        if (!order.getOutStatus().equals(Constant.OutStatus.DAICHUKU.getName()) || order.getOutingQty().compareTo(BigDecimal.ZERO) != 0) {
+        Order orderForUpdate = orderMapper.selectByIdForUpdate(id);
+        // 如果出库中数量不是0,不能作废
+        if (orderForUpdate.getOutingQty().compareTo(BigDecimal.ZERO) != 0) {
             throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISEXISTS_AFTER_OPERATE.getMessage());
         }
         // 作废

+ 86 - 28
src/main/java/com/dk/mdm/service/sale/OutReturnService.java

@@ -39,11 +39,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import java.util.stream.Collectors;
+import java.util.*;
 
 @Service
 @Transactional
@@ -151,16 +147,16 @@ public class OutReturnService extends BaseService<OutReturn> {
 
         // 明细保存
         if (outReturnVO.getItemList() != null && outReturnVO.getItemList().size() > 0) {
-            double sumReturnQty = 0;    // 合计已出库退货数量
-            double sumReturnAmt = 0;    // 合计已出库退货金额
             OrderItem orderItemForUpdate;
             OutboundItem outboundItemForUpdate;
+            String outId = "";
             for (OutReturnItemVO outReturnItemVO : outReturnVO.getItemList()) {
+                outId = outReturnItemVO.getOutId();
                 OutReturnItem outReturnItem = outReturnItemConvert.convertToPo(outReturnItemVO);
                 outReturnItem.setReturnId(outReturn.getReturnId()).setCpId(outReturn.getCpId()).setIntoStatus(Constant.IntoStatus.DAIRUKU.getName());
                 outReturnItemMapper.insert(outReturnItem);
 
-                /*********************  反写出库已出库退货数量、金额 begin **********************/
+                /*********************  反写出库明细退货数量、金额 begin **********************/
                 outboundItemForUpdate = outboundItemMapper.selectByIdForUpdate(outReturnItem.getOutItemId());
                 // 如果出库数量小于订单上已退货+本次退货数量
                 if (outboundItemForUpdate.getOutQty().compareTo(outboundItemForUpdate.getReturnQty().add(outReturnItem.getItemQty())) == -1) {
@@ -171,17 +167,10 @@ public class OutReturnService extends BaseService<OutReturn> {
                         .setReturnAmt(outboundItemForUpdate.getReturnAmt().add(outReturnItem.getItemAmt()))
                         .setItemId(outboundItemForUpdate.getItemId());
                 outboundItemService.updateByUuid(outboundItemUpdate);
+                /*********************  反写出库明细退货数量、金额 end **********************/
 
-                // 更新出库单上的退货数量,金额
-                Outbound outboundForUpdate = outboundMapper.selectByIdForUpdate(outReturnItem.getOutId());
-                Outbound outboundUpdate = new Outbound();
-                outboundUpdate.setReturnQty(outboundForUpdate.getReturnQty().add(outReturnItem.getItemQty()))
-                        .setReturnAmt(outboundForUpdate.getReturnAmt().add(outReturnItem.getItemAmt()))
-                        .setOutId(outReturnItem.getOutId());
-                outboundService.updateByUuid(outboundUpdate);
-                /*********************  反写出库已出库退货数量、金额 end **********************/
 
-                /*********************  反写订单明细已出库退货数量、金额 begin **********************/
+                /*********************  反写订单明细退货数量、金额 begin **********************/
                 orderItemForUpdate = orderItemMapper.selectByIdForUpdate(outReturnItem.getOrderItemId());
                 // 如果出库数量小于订单上已退货+本次退货数量
                 if (orderItemForUpdate.getOutQty().compareTo(orderItemForUpdate.getReturnQty().add(outReturnItem.getItemQty())) == -1) {
@@ -192,33 +181,102 @@ public class OutReturnService extends BaseService<OutReturn> {
                         .setReturnAmt(orderItemForUpdate.getReturnAmt().add(outReturnItem.getItemAmt()))
                         .setItemId(orderItemForUpdate.getItemId());
                 orderItemService.updateByUuid(orderItemUpdate);
-                // 累加退货数量,金额
-                sumReturnQty += outReturnItem.getItemQty().doubleValue();
-                sumReturnAmt += outReturnItem.getItemAmt().doubleValue();
-                /*********************  反写订单明细已出库退货数量、金额 end **********************/
+                /*********************  反写订单明细退货数量、金额 end **********************/
             }
+
+            // 计算出库明细的退货数量,金额合计
+            List<OutboundItem> outboundItemList = outboundItemMapper.selectByZIdForUpdate(outId);
+            OutboundItem outboundItem = outboundItemList.stream().reduce((x, y) -> {
+                OutboundItem item = new OutboundItem();
+                item.setReturnQty(x.getReturnQty().add(y.getReturnQty()));
+                item.setReturnAmt(x.getReturnAmt().add(y.getReturnAmt()));
+                return item;
+            }).get();
+            // 更新出库单上的退货数量,金额
+            Outbound outboundUpdate = new Outbound();
+            outboundUpdate.setReturnQty(outboundItem.getReturnQty()).setReturnAmt(outboundItem.getReturnAmt()).setOutId(outId);
+            outboundService.updateByUuid(outboundUpdate);
+
+            // 计算订单明细的退货数量,金额合计
+            List<OrderItem> orderItemList = orderItemMapper.selectByZIdForUpdate(outReturnVO.getOrderId());
+            OrderItem orderItem = orderItemList.stream().reduce((x, y) -> {
+                OrderItem item = new OrderItem();
+                item.setReturnQty(x.getReturnQty().add(y.getReturnQty()));
+                item.setReturnAmt(x.getReturnAmt().add(y.getReturnAmt()));
+                return item;
+            }).get();
             // 更新订单上的退货数量,金额
-            Order orderForUpdate = orderMapper.selectByIdForUpdate(outReturnVO.getOrderId());
             Order orderUpdate = new Order();
-            orderUpdate.setReturnQty(orderForUpdate.getReturnQty().add(new BigDecimal(sumReturnQty)))
-                    .setReturnAmt(orderForUpdate.getReturnAmt().add(new BigDecimal(sumReturnAmt)))
-                    .setOrderId(outReturnVO.getOrderId());
+            orderUpdate.setReturnQty(orderItem.getReturnQty()).setReturnAmt(orderItem.getReturnAmt()).setOrderId(outReturnVO.getOrderId());
             orderService.updateByUuid(orderUpdate);
         }
         return ResponseResultUtil.success();
     }
 
     /**
-     * @desc   : 作废
+     * @desc : 作废
      * @author : 付斌
-     * @date   : 2024-03-08 16:38
+     * @date : 2024-03-08 16:38
      */
     public ResponseResultVO<?> invalid(String id) {
         OutReturn outReturnForUpdate = outReturnMapper.selectByIdForUpdate(id);
-        // 如果数量不是0,不能作废
+        // 如果入库数量不是0,不能作废
         if (outReturnForUpdate.getIntoQty().compareTo(BigDecimal.ZERO) != 0) {
             throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISEXISTS_AFTER_OPERATE.getMessage());
         }
+
+        // 查出并锁定所有的退货明细
+        List<OutReturnItem> outReturnItemList = outReturnItemMapper.selectByZIdForUpdate(id);
+        OutboundItem outboundItemForUpdate;
+        OrderItem orderItemForUpdate;
+        String outId = "";
+        String orderId = "";
+        for (OutReturnItem outReturnItemForUpdate : outReturnItemList) {
+            outId = outReturnItemForUpdate.getOutId();
+            orderId = outReturnItemForUpdate.getOrderId();
+            outboundItemForUpdate = outboundItemMapper.selectByIdForUpdate(outReturnItemForUpdate.getOutItemId());
+            // 更新出库明细退货数量
+            OutboundItem outboundItemUpdate = new OutboundItem();
+            outboundItemUpdate.setReturnQty(outboundItemForUpdate.getReturnQty().subtract(outReturnItemForUpdate.getItemQty()))
+                    .setReturnAmt(outboundItemForUpdate.getReturnAmt().subtract(outReturnItemForUpdate.getItemAmt()))
+                    .setItemId(outboundItemForUpdate.getItemId());
+            outboundItemService.updateByUuid(outboundItemUpdate);
+
+            orderItemForUpdate = orderItemMapper.selectByIdForUpdate(outReturnItemForUpdate.getOrderItemId());
+            // 更新订单明细退货数量
+            OrderItem orderItemUpdate = new OrderItem();
+            orderItemUpdate.setReturnQty(orderItemForUpdate.getReturnQty().subtract(outReturnItemForUpdate.getItemQty()))
+                    .setReturnAmt(orderItemForUpdate.getReturnAmt().subtract(outReturnItemForUpdate.getItemAmt()))
+                    .setItemId(orderItemForUpdate.getItemId());
+            orderItemService.updateByUuid(orderItemUpdate);
+        }
+
+        // 计算出库明细的退货数量,金额合计
+        List<OutboundItem> outboundItemList = outboundItemMapper.selectByZIdForUpdate(outId);
+        OutboundItem outboundItem = outboundItemList.stream().reduce((x, y) -> {
+            OutboundItem item = new OutboundItem();
+            item.setReturnQty(x.getReturnQty().add(y.getReturnQty()));
+            item.setReturnAmt(x.getReturnAmt().add(y.getReturnAmt()));
+            return item;
+        }).get();
+        // 更新出库单上的退货数量,金额
+        Outbound outboundUpdate = new Outbound();
+        outboundUpdate.setReturnQty(outboundItem.getReturnQty()).setReturnAmt(outboundItem.getReturnAmt()).setOutId(outId);
+        outboundService.updateByUuid(outboundUpdate);
+
+        // 计算订单明细的退货数量,金额合计
+        List<OrderItem> orderItemList = orderItemMapper.selectByZIdForUpdate(orderId);
+        OrderItem orderItem = orderItemList.stream().reduce((x, y) -> {
+            OrderItem item = new OrderItem();
+            item.setReturnQty(x.getReturnQty().add(y.getReturnQty()));
+            item.setReturnAmt(x.getReturnAmt().add(y.getReturnAmt()));
+            return item;
+        }).get();
+        // 更新订单上的退货数量,金额
+        Order orderUpdate = new Order();
+        orderUpdate.setReturnQty(orderItem.getReturnQty()).setReturnAmt(orderItem.getReturnAmt()).setOrderId(orderId);
+        orderService.updateByUuid(orderUpdate);
+
         // 作废
         OutReturn outReturnUpdate = new OutReturn();
         outReturnUpdate.setFlgValid(false).setReturnId(id);