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

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/main/java/com/dk/mdm/model/response/mst/OrgResponse.java
#	src/main/java/com/dk/mdm/service/mst/OrgService.java
dongke 2 лет назад
Родитель
Сommit
4cbadaacbb
25 измененных файлов с 792 добавлено и 360 удалено
  1. 18 8
      src/main/java/com/dk/mdm/controller/mst/OrgController.java
  2. 20 3
      src/main/java/com/dk/mdm/controller/sale/OutReturnController.java
  3. 1 1
      src/main/java/com/dk/mdm/feign/CompanyFeign.java
  4. 39 37
      src/main/java/com/dk/mdm/mapper/common/CommonMapper.xml
  5. 1 1
      src/main/java/com/dk/mdm/mapper/ivt/OutboundItemMapper.xml
  6. 1 1
      src/main/java/com/dk/mdm/mapper/mst/DictionaryDataMapper.xml
  7. 0 12
      src/main/java/com/dk/mdm/mapper/mst/OrgMapper.java
  8. 21 162
      src/main/java/com/dk/mdm/mapper/mst/OrgMapper.xml
  9. 2 2
      src/main/java/com/dk/mdm/mapper/mst/SaleChannelMapper.xml
  10. 2 2
      src/main/java/com/dk/mdm/mapper/mst/WarehouseMapper.xml
  11. 1 1
      src/main/java/com/dk/mdm/mapper/sale/OrderItemMapper.xml
  12. 8 0
      src/main/java/com/dk/mdm/mapper/sale/OutReturnItemMapper.java
  13. 33 0
      src/main/java/com/dk/mdm/mapper/sale/OutReturnItemMapper.xml
  14. 58 5
      src/main/java/com/dk/mdm/mapper/sale/OutReturnMapper.xml
  15. 2 2
      src/main/java/com/dk/mdm/model/pojo/mst/Org.java
  16. 241 0
      src/main/java/com/dk/mdm/model/response/mst/OrgResponse.java
  17. 3 0
      src/main/java/com/dk/mdm/model/response/sale/OrderItemResponse.java
  18. 7 0
      src/main/java/com/dk/mdm/model/response/sale/OutReturnItemResponse.java
  19. 97 42
      src/main/java/com/dk/mdm/service/ivt/InboundPurchaseService.java
  20. 102 49
      src/main/java/com/dk/mdm/service/ivt/InboundSaleReturnService.java
  21. 8 9
      src/main/java/com/dk/mdm/service/ivt/OutboundService.java
  22. 5 9
      src/main/java/com/dk/mdm/service/mst/OrgService.java
  23. 1 1
      src/main/java/com/dk/mdm/service/mst/StaffService.java
  24. 12 12
      src/main/java/com/dk/mdm/service/sale/OrderService.java
  25. 109 1
      src/main/java/com/dk/mdm/service/sale/OutReturnService.java

+ 18 - 8
src/main/java/com/dk/mdm/controller/mst/OrgController.java

@@ -3,23 +3,18 @@ package com.dk.mdm.controller.mst;
 import com.dk.common.model.pojo.PageList;
 import com.dk.common.response.ResponseResultVO;
 import com.dk.mdm.model.pojo.mst.Org;
-import com.dk.common.controller.BaseController;
 import com.dk.common.service.BaseService;
-import com.dk.mdm.model.query.core.OrganizationQuery;
 import com.dk.mdm.model.query.mst.OrgQuery;
-import com.dk.mdm.model.response.core.OrganizationResponse;
-import com.dk.mdm.model.vo.core.OrganizationVO;
 import com.dk.mdm.model.vo.mst.OrgVO;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.transaction.annotation.Transactional;
-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.mst.OrgService;
 
+import java.util.List;
+
 @Api(tags = "组织机构API接口")
 @RestController
 @RequestMapping("/mst/org")
@@ -53,4 +48,19 @@ public class OrgController{
     public ResponseResultVO<?> insert(@RequestBody OrgVO orgVO) {
         return orgService.insert(orgVO);
     }
+
+    /**
+     * @desc   : 通过ID查询
+     * @author : 宋扬
+     * @date   : 2024/3/1 16:01
+     */
+    @PostMapping({"/{id}"})
+    public ResponseResultVO selectById(@PathVariable String id) {
+        return orgService.selectById(id);
+    }
+
+
+
+
+
 }

+ 20 - 3
src/main/java/com/dk/mdm/controller/sale/OutReturnController.java

@@ -18,7 +18,7 @@ import java.util.Map;
 @Api(tags = "出库退货API接口")
 @RestController
 @RequestMapping("/sale/outReturn")
-public class OutReturnController{
+public class OutReturnController {
 
     public BaseService<OutReturn> getService() {
         return outReturnService;
@@ -39,9 +39,9 @@ public class OutReturnController{
     }
 
     /**
-     * @desc   : 查询明细信息
+     * @desc : 查询明细信息
      * @author : 付斌
-     * @date   : 2024-03-07 16:36
+     * @date : 2024-03-07 16:36
      */
     @PostMapping({"select_out_return_info_by_id/{id}"})
     public ResponseResultVO<Map<String, Object>> selectOutReturnInfoById(@PathVariable String id) {
@@ -59,6 +59,12 @@ public class OutReturnController{
         return outReturnService.insert(outReturnVO);
     }
 
+    @ApiOperation(value = "编辑出库单", notes = "编辑出库单")
+    @PostMapping({"update"})
+    public ResponseResultVO<Boolean> update(@RequestBody OutReturnVO outReturnVO) {
+        return outReturnService.update(outReturnVO);
+    }
+
     /**
      * @desc : 作废
      * @author : 付斌
@@ -69,4 +75,15 @@ public class OutReturnController{
     public ResponseResultVO<?> invalid(@PathVariable String id) {
         return outReturnService.invalid(id);
     }
+
+    /**
+     * @desc : 获取退货信息(编辑用)
+     * @author : 付斌
+     * @date : 2024-03-12 13:16
+     */
+    @ApiOperation(value = "获取退货信息(编辑用)", notes = "获取退货信息(编辑用)")
+    @PostMapping({"get_out_return_for_update/{id}"})
+    public ResponseResultVO<?> getOutReturnForUpdate(@PathVariable String id) {
+        return outReturnService.getOutReturnForUpdate(id);
+    }
 }

+ 1 - 1
src/main/java/com/dk/mdm/feign/CompanyFeign.java

@@ -2,7 +2,6 @@ package com.dk.mdm.feign;
 
 
 import com.dk.common.infrastructure.constant.Constant;
-import com.dk.common.model.response.mst.StaffResponse;
 import com.dk.common.response.ResponseResultVO;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -24,4 +23,5 @@ public interface CompanyFeign {
      */
     @PostMapping({"/feign_update_wx_user_company"})
     ResponseResultVO<Boolean> updateWxUserCompany(@RequestBody Map<String, Object> collectQuery) ;
+
 }

+ 39 - 37
src/main/java/com/dk/mdm/mapper/common/CommonMapper.xml

@@ -862,42 +862,44 @@
 
     <!-- 查询库存 -->
     <select id="getInventory" resultType="java.util.Map">
-        select tpi.sku_id            as "skuId",
-        tmgs.sku_code          as "skuCode",
-        tmgs.sku_name          as "skuName",
-        tmgs.sku_model         as "skuModel",
-        tmgs.brand_id          as "brandId",
-        tmgb.brand_name        as "brandName",
-        tmgs.category_id       as "categoryId",
-        tmgc.cat_name          as "categoryName",
-        tmgs.unit_id           as "unitId",
-        tmgu.unit_name         as "unitName",
-        tmgs.sub_unit_id       as "subUnitId",
-        tmgs.conversion_factor as "conversionFactor",
-        tmgs.series_id         as "seriesId",
-        tmgseries.series_name  as "seriesName",
-        tmgs.sku_spec          as "skuSpec",
-        tmgs.price_purchase    as "pricePurchase",
-        tmgs.price_standard    as "priceStandard",
-        tmgs.price_wholesale   as "priceWholesale",
-        tmgs.price_limited     as "priceLimited",
-        tmgs.sku_images        as "skuImages",
-        tpi.non_std_code       as "nonStdCode",
-        tpi.inv_qty            as "invQty",
-        tpi.outing_qty         as "outingQty",
-        tpi.usable_qty         as "usableQty",
-        tmw.wh_code            as "whCode",
-        tmw.wh_name            as "whName",
-        tpi.remarks
+        select tpi.inv_id             as "invId",
+               tpi.sku_id             as "skuId",
+               tmgs.sku_code          as "skuCode",
+               tmgs.sku_name          as "skuName",
+               tmgs.sku_model         as "skuModel",
+               tmgs.brand_id          as "brandId",
+               tmgb.brand_name        as "brandName",
+               tmgs.category_id       as "categoryId",
+               tmgc.cat_name          as "categoryName",
+               tmgs.unit_id           as "unitId",
+               tmgu.unit_name         as "unitName",
+               tmgs.sub_unit_id       as "subUnitId",
+               tmgs.conversion_factor as "conversionFactor",
+               tmgs.series_id         as "seriesId",
+               tmgseries.series_name  as "seriesName",
+               tmgs.sku_spec          as "skuSpec",
+               tmgs.price_purchase    as "pricePurchase",
+               tmgs.price_standard    as "priceStandard",
+               tmgs.price_wholesale   as "priceWholesale",
+               tmgs.price_limited     as "priceLimited",
+               tmgs.sku_images        as "skuImages",
+               tpi.non_std_code       as "nonStdCode",
+               tpi.inv_qty            as "invQty",
+               tpi.outing_qty         as "outingQty",
+               tpi.usable_qty         as "usableQty",
+               tpi.wh_id              as "whId",
+               tmw.wh_code            as "whCode",
+               tmw.wh_name            as "whName",
+               tpi.remarks
         from dkic_b.t_psi_inventory as tpi
-        inner join dkic_b.t_mst_warehouse as tmw on tmw.wh_id = tpi.wh_id
-        inner join dkic_b.t_mst_goods_sku as tmgs on tmgs.sku_id = tpi.sku_id
-        left join dkic_b.t_mst_goods_brand as tmgb on tmgs.brand_id = tmgb.brand_id
-        left join dkic_b.t_mst_goods_category as tmgc on tmgs.category_id = tmgc.cat_id
-        left join dkic_b.t_mst_goods_series as tmgseries on tmgs.series_id = tmgseries.series_id
-        left join dkic_b.t_mst_unit as tmgu on tmgs.unit_id = tmgu.unit_id
+                 inner join dkic_b.t_mst_warehouse as tmw on tmw.wh_id = tpi.wh_id
+                 inner join dkic_b.t_mst_goods_sku as tmgs on tmgs.sku_id = tpi.sku_id
+                 left join dkic_b.t_mst_goods_brand as tmgb on tmgs.brand_id = tmgb.brand_id
+                 left join dkic_b.t_mst_goods_category as tmgc on tmgs.category_id = tmgc.cat_id
+                 left join dkic_b.t_mst_goods_series as tmgseries on tmgs.series_id = tmgseries.series_id
+                 left join dkic_b.t_mst_unit as tmgu on tmgs.unit_id = tmgu.unit_id
         where tpi.flg_valid
-        AND tpi.cp_id = #{cpId}
+          AND tpi.cp_id = #{cpId}
         <if test="skuId != null">
             AND tpi.sku_id = #{skuId} ::uuid
         </if>
@@ -905,13 +907,13 @@
             AND tpi.non_std_code = #{nonStdCode}
         </if>
         <if test="skuCode != null">
-            AND tmgs.sku_code = #{skuCode}
+            AND tmgs.sku_code LIKE concat('%',my_ex.likequery(#{skuCode}),'%')
         </if>
         <if test="skuName != null">
-            AND tmgs.sku_name = #{skuName}
+            AND tmgs.sku_name LIKE concat('%',my_ex.likequery(#{skuName}),'%')
         </if>
         <if test="whName != null">
-            AND tmgs.wh_name = #{whName}
+            AND tmgs.wh_name LIKE concat('%',my_ex.likequery(#{whName}),'%')
         </if>
     </select>
 

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

@@ -291,7 +291,7 @@
         </foreach>
     </insert>
 
-    <!-- 根据条件进行查询(出库用) -->
+    <!-- 根据条件进行查询(出库编辑用) -->
     <select id="selectByCondForOutEdit" resultMap="BaseResultMapResponse">
         SELECT t.item_id,
                t.out_id,

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

@@ -52,7 +52,7 @@
                 AND dict_code = #{dictCode}
             </if>
             <if test="dataValue != null and dataValue != ''">
-                AND data_value = #{dataValue}
+                AND data_value LIKE concat('%',my_ex.likequery(#{dataValue}),'%')
             </if>
             <if test="displayNo != null">
                 AND display_no = #{displayNo}

+ 0 - 12
src/main/java/com/dk/mdm/mapper/mst/OrgMapper.java

@@ -2,11 +2,7 @@ package com.dk.mdm.mapper.mst;
 
 import com.dk.mdm.model.pojo.mst.Org;
 import com.dk.common.mapper.BaseMapper;
-import com.dk.mdm.model.query.core.OrganizationQuery;
-import com.dk.mdm.model.query.mst.GoodsCategoryQuery;
 import com.dk.mdm.model.query.mst.OrgQuery;
-import com.dk.mdm.model.response.core.OrganizationResponse;
-import com.dk.mdm.model.vo.mst.OrgVO;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
@@ -33,12 +29,6 @@ public interface OrgMapper extends BaseMapper<Org>{
     Long countByCond(OrgQuery orgQuery);
 
     /**
-     * @desc   : 保存角色权限
-     * @author : 夏常明
-     * @date   : 2023/1/28 10:23
-     */
-    int insertBatch(Org org);
-    /**
      * @desc : 调用函数生成层级
      * @author : 王英杰
      * @date : 2024/2/26 10:36
@@ -46,7 +36,5 @@ public interface OrgMapper extends BaseMapper<Org>{
     Boolean resetLevelOrg(Org org);
 
 
-    Integer maxDisplayNo(String  parentID);
-
 
 }

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

@@ -5,13 +5,14 @@
     <!-- 通用设置 -->
     <!-- 通用查询列 -->
     <sql id="Base_Column_List">
-        org_id
-        , 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
+        org_id, 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">
-        parent.org_id
-        , parent.org_name, parent.parent_id, parent.display_no, parent.top_id    </sql>
-
+        parent.org_id,parent.flg_valid,parent.level_leaf,parent.org_code,parent.level_name
+        , parent.org_name, parent.parent_id, parent.display_no, parent.top_id
+    </sql>
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.dk.common.model.response.mst.OrgResponse">
         <id column="org_id" property="orgId"/>
@@ -46,129 +47,47 @@
     <sql id="Condition">
         <where>
             <if test="orgName != null and orgName != ''">
-                AND org_name = #{orgName}
-            </if>
-            <if test="parentId != null and parentId != ''">
-                AND parent_id = #{parentId}
-            </if>
-            <if test="displayNo != null">
-                AND display_no = #{displayNo}
-            </if>
-            <if test="topId != null and topId != ''">
-                AND top_id = #{topId}
-            </if>
-            <if test="levelUpper != null and levelUpper != ''">
-                AND level_upper = #{levelUpper}
-            </if>
-            <if test="levelLower != null and levelLower != ''">
-                AND level_lower = #{levelLower}
-            </if>
-            <if test="levelLeaf != null">
-                AND level_leaf = #{levelLeaf}
-            </if>
-            <if test="levelNo != null">
-                AND level_no = #{levelNo}
+                AND parent.org_name = #{orgName}
             </if>
-            <if test="levelCode != null and levelCode != ''">
-                AND level_code = #{levelCode}
-            </if>
-            <if test="levelName != null and levelName != ''">
-                AND level_name = #{levelName}
-            </if>
-            <if test="remarks != null and remarks != ''">
-                AND remarks = #{remarks}
-            </if>
-            <if test="flgValid != null">
-                AND 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 cp_id = #{cpId}
-            </if>
-            <if test="opCreateTime != null">
-                AND op_create_time = #{opCreateTime}
-            </if>
-            <if test="opCreateUserId != null and opCreateUserId != ''">
-                AND op_create_user_id = #{opCreateUserId}
+                AND parent.cp_id = #{cpId}
             </if>
-            <if test="opUpdateTime != null">
-                AND op_update_time = #{opUpdateTime}
-            </if>
-            <if test="opUpdateUserId != null and opUpdateUserId != ''">
-                AND op_update_user_id = #{opUpdateUserId}
-            </if>
-            <if test="opAppCode != null and opAppCode != ''">
-                AND op_app_code = #{opAppCode}
-            </if>
-            <if test="opTimestamp != null">
-                AND op_timestamp = #{opTimestamp}
+            <if test="parentId != null and parentId != ''">
+                AND parent.parent_id = #{parentId}
             </if>
-            <if test="opDbUser != null and opDbUser != ''">
-                AND op_db_user = #{opDbUser}
+            <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
+                limit #{end} offset #{start}
             </if>
-            <if test="orgCode != null and orgCode != ''">
-                AND org_code = #{orgCode}
+            <if test="searchText !=null">
+                AND ( parent.org_name LIKE concat('%', #{searchText}, '%')
             </if>
         </where>
     </sql>
 
-    <sql id="idsForeach">
-        <!-- 根据主键orgId批量操作 -->
-        WHERE org_id in
-        <foreach collection="ids" index="index" item="item" separator="," open="(" close=")">
-            #{item}
-        </foreach>
-    </sql>
-
     <!-- 查询表t_mst_org,(条件查询+分页)列表 -->
     <select id="selectByCond" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List_view"/>
         FROM
         dkic_b.t_mst_org AS parent
-        <where>
-        <if test="orgName != null and orgName != ''">
-            AND parent.org_name = #{orgName}
-        </if>
-        <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}
-        </if>
-        <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
-            limit #{end} offset #{start}
-        </if>
-        <if test="searchText !=null">
-            AND ( parent.org_name LIKE concat('%', #{searchText}, '%')
-        </if>
-        </where>
+        <include refid="Condition"/>
     </select>
+
     <select id="resetLevelOrg" resultType="java.lang.Boolean">
         select dkic_b.f_reset_level_org(#{cpId}, #{topId}::uuid)
     </select>
+
     <!-- 查询表t_mst_org,(条件查询)个数 -->
     <select id="countByCond" resultType="Long">
         SELECT
         count(1)
         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>
-        </where>
-    </select>
-    <!-- 查询同父级下 最大的 显示顺序 -->
-    <select id="maxDisplayNo" resultType="Integer">
-        SELECT MAX(display_no) AS max_display_no
-        FROM dkic_b.t_mst_org org
-        WHERE org.parent_id = #{parentID} ::uuid;
+        <include refid="Condition"/>
     </select>
+
     <!-- 根据主键查询表t_mst_org的一行数据 -->
     <select id="selectById" resultMap="BaseResultMap">
         SELECT
@@ -177,64 +96,4 @@
         WHERE org_id = #{orgId}::uuid
     </select>
 
-    <!-- 根据主键锁定表t_mst_org的一行数据 -->
-    <select id="selectByIdForUpdate" resultMap="BaseResultMap">
-        SELECT
-        <include refid="Base_Column_List"/>
-        FROM t_mst_org
-        WHERE org_id = #{orgId}
-        for update
-    </select>
-
-    <!-- 根据主键锁定表t_mst_org的多行数据 -->
-    <select id="selectByIdsForUpdate" resultMap="BaseResultMap">
-        SELECT
-        <include refid="Base_Column_List"/>
-        FROM t_mst_org
-        <include refid="idsForeach"/>
-        for update
-    </select>
-
-    <insert id="insertBatch">
-        insert into t_mst_org
-        (
-        <trim suffixOverrides=",">
-            org_name,
-            parent_id,
-            display_no,
-            top_id,
-            level_upper,
-            level_lower,
-            level_leaf,
-            level_no,
-            level_code,
-            level_name,
-            remarks,
-            cp_id,
-            op_app_code,
-            org_code,
-        </trim>
-        )
-        values
-        <foreach collection="list" index="index" item="item" separator=",">
-            (
-            <trim suffixOverrides=",">
-                #{item.orgName},
-                #{item.parentId}::uuid,
-                #{item.displayNo},
-                #{item.topId}::uuid,
-                #{item.levelUpper},
-                #{item.levelLower},
-                #{item.levelLeaf},
-                #{item.levelNo},
-                #{item.levelCode},
-                #{item.levelName},
-                #{item.remarks},
-                #{item.cpId},
-                #{item.opAppCode},
-                #{item.orgCode},
-            </trim>
-            )
-        </foreach>
-    </insert>
 </mapper>

+ 2 - 2
src/main/java/com/dk/mdm/mapper/mst/SaleChannelMapper.xml

@@ -43,10 +43,10 @@
     <sql id="Condition">
         <where>
             <if test="channelCode != null and channelCode != ''">
-                AND channel_code = #{channelCode}
+                AND channel_code LIKE concat('%',my_ex.likequery(#{channelCode}),'%')
             </if>
             <if test="channelName != null and channelName != ''">
-                AND channel_name = #{channelName}
+                AND channel_name LIKE concat('%',my_ex.likequery(#{channelName}),'%')
             </if>
             <if test="sysCode != null and sysCode != ''">
                 AND sys_code = #{sysCode}

+ 2 - 2
src/main/java/com/dk/mdm/mapper/mst/WarehouseMapper.xml

@@ -48,10 +48,10 @@
     <sql id="Condition">
         <where>
             <if test="whCode != null and whCode != ''">
-                AND wh_code = #{whCode}
+                AND wh_code LIKE concat('%',my_ex.likequery(#{whCode}),'%')
             </if>
             <if test="whName != null and whName != ''">
-                AND wh_name = #{whName}
+                AND wh_name LIKE concat('%',my_ex.likequery(#{whName}),'%')
             </if>
             <if test="displayNo != null">
                 AND display_no = #{displayNo}

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

@@ -338,7 +338,7 @@
                tmgs.sku_code                                        as "skuCode",
                tmgs.sku_model                                       as "skuModel",
                tmgs.sku_name                                        as "skuName",
-               tpobi.out_qty                                        as out_qty,
+               tpobi.out_qty                                        as "outboundOutQty",
                tpobi.out_qty - tpobi.return_qty                     as "canReturnQty",
                tpobi.out_qty - tpobi.return_qty                     as item_qty,
                t.price_std,

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

@@ -3,6 +3,7 @@ package com.dk.mdm.mapper.sale;
 import com.dk.mdm.model.pojo.sale.OutReturnItem;
 import com.dk.common.mapper.BaseMapper;
 import com.dk.mdm.model.query.sale.OutReturnItemQuery;
+import com.dk.mdm.model.response.ivt.OutboundItemResponse;
 import com.dk.mdm.model.response.sale.OutReturnItemResponse;
 import org.springframework.stereotype.Repository;
 
@@ -33,5 +34,12 @@ public interface OutReturnItemMapper extends BaseMapper<OutReturnItem>{
      * @date   : 2024-03-09 11:36
      */
     List<OutReturnItem> selectByZIdForUpdate(String id);
+
+    /**
+     * @desc   : 获取退货信息(编辑用)
+     * @author : 付斌
+     * @date   : 2024-03-12 11:07
+     */
+    List<OutReturnItemResponse> selectByCondForReturnEdit(String id);
 }
 

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

@@ -287,4 +287,37 @@
             )
         </foreach>
     </insert>
+
+    <!-- 根据条件进行查询(退货编辑用) -->
+    <select id="selectByCondForReturnEdit" resultMap="BaseResultMapResponse">
+        SELECT t.item_id,
+               t.return_id,
+               t.out_id,
+               t.out_item_id,
+               t.order_id,
+               t.order_item_id,
+               t.item_index,
+               t.sku_id,
+               tmgs.sku_code                                 as "skuCode",
+               tmgs.sku_model                                as "skuModel",
+               tmgs.sku_name                                 as "skuName",
+               tpobi.out_qty                                 as "outboundOutQty",
+               tpobi.out_qty - tpobi.return_qty + t.item_qty as "canReturnQty",
+               t.item_qty,
+               t.price_std,
+               t.amt_std,
+               t.price_return,
+               t.item_amt,
+               t.non_std_code,
+               t.remarks
+        FROM t_psi_out_return_item as t
+                 left join t_psi_outbound_item as tpobi on tpobi.item_id = t.out_item_id
+                 left join dkic_b.t_psi_order_item as tpoi on tpoi.item_id = tpobi.from_item_id
+                 left join dkic_b.t_mst_goods_sku tmgs on tpobi.sku_id = tmgs.sku_id
+                 left join dkic_b.t_psi_inventory as tpi on tpi.inv_id = tpobi.inv_id
+                 left join dkic_b.t_mst_warehouse as tmw on tmw.wh_id = tpi.wh_id
+        where t.flg_valid
+          and t.return_id = #{id}::uuid
+        order by t.item_index
+    </select>
 </mapper>

+ 58 - 5
src/main/java/com/dk/mdm/mapper/sale/OutReturnMapper.xml

@@ -309,11 +309,64 @@
     </select>
 
     <!-- 根据主键查询表t_psi_out_return的一行数据 -->
-    <select id="selectById" resultMap="BaseResultMap">
-        SELECT
-        <include refid="Base_Column_List"/>
-        FROM t_psi_out_return
-        WHERE return_id = #{returnId}::uuid
+    <select id="selectById" resultMap="BaseResultMapResponse">
+        SELECT t.return_id,
+               t.return_no,
+               t.return_type,
+               t.order_id,
+               t.order_no,
+               t.org_id,
+               tmo.org_name                                      as "orgName",
+               t.staff_id,
+               tms.staff_name                                    as "staffName",
+               t.cus_id,
+               tmc.cus_code                                      as "cusCode",
+               tmc.cus_name                                      as "cusName",
+               tmc.cus_phone                                     as "cusPhone",
+               tmc.cus_from                                      as "cusFrom",
+               tmdd.data_value                                   as "cusFromName",
+               t.address_area,
+               t.address_name,
+               t.address_no,
+               t.address_gcj02,
+               t.address_full,
+               t.contact_name,
+               t.contact_phone,
+               t.sales_channel,
+               tmsc.channel_name                                 as "channelName",
+               t.pickup_date,
+               t.sum_quantity,
+               t.sum_standard,
+               t.sum_amount,
+               t.sale_discount,
+               t.return_status,
+               sys.f_get_name_i18n(tdk1.kind_name_i18n, #{i18n}) as "returnStatusName",
+               t.into_status,
+               sys.f_get_name_i18n(tdk2.kind_name_i18n, #{i18n}) as "intoStatusName",
+               t.intoing_qty,
+               t.intoing_amt,
+               t.into_qty,
+               t.into_amt,
+               t.amt_receivable,
+               t.amt_handle,
+               t.amt_residue,
+               t.remarks,
+               t.annex_paths,
+               t.make_staff,
+               makestaff.staff_name                              as "makeStaffName",
+               t.make_time,
+               t.cp_id,
+               t.flg_valid
+        FROM t_psi_out_return as t
+                 left join dkic_b.t_mst_sale_channel tmsc on t.sales_channel = tmsc.channel_id
+                 left join dkic_b.t_mst_org tmo on t.org_id = tmo.org_id
+                 left join dkic_b.t_mst_staff tms on t.staff_id = tms.staff_id
+                 left join dkic_b.t_mst_staff as makestaff on t.make_staff = makestaff.staff_id
+                 left join dkic_b.t_mst_customer tmc on t.cus_id = tmc.cus_id
+                 left join dkic_b.t_mst_dictionary_data tmdd on tmc.cus_from = tmdd.data_id
+                 left join sys.t_data_kind as tdk1 on t.return_status = tdk1.kind_code
+                 left join sys.t_data_kind as tdk2 on t.into_status = tdk2.kind_code
+        WHERE t.return_id = #{id}::uuid
     </select>
 
     <!-- 根据主键锁定表t_psi_out_return的一行数据 -->

+ 2 - 2
src/main/java/com/dk/mdm/model/pojo/mst/Org.java

@@ -86,7 +86,7 @@ public class Org extends PageInfo<Org> implements Serializable {
     @Excel(name = "上层ID")
     @ApiModelProperty(value = "上层ID")
     @TableField(typeHandler = UuidListTypeHandler.class)
-    private String levelUpper;
+    private List<String> levelUpper;
 
 
     /**
@@ -95,7 +95,7 @@ public class Org extends PageInfo<Org> implements Serializable {
     @Excel(name = "下层ID")
     @ApiModelProperty(value = "下层ID")
     @TableField(typeHandler = UuidListTypeHandler.class)
-    private String levelLower;
+    private List<String> levelLower;
 
 
     /**

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

+ 3 - 0
src/main/java/com/dk/mdm/model/response/sale/OrderItemResponse.java

@@ -321,6 +321,9 @@ public class OrderItemResponse extends PageInfo<OrderItemResponse> implements Se
     @ApiModelProperty(value = "订单明细ID")
     private String orderItemId;
 
+    @ApiModelProperty(value = "已出库数量")
+    private BigDecimal outboundOutQty;
+
     @ApiModelProperty(value = "可退货数量")
     private BigDecimal canReturnQty;
 

+ 7 - 0
src/main/java/com/dk/mdm/model/response/sale/OutReturnItemResponse.java

@@ -295,6 +295,13 @@ public class OutReturnItemResponse extends PageInfo<OutReturnItemResponse> imple
     @ApiModelProperty(value = "出库单号")
     private String outNo;
 
+    @ApiModelProperty(value = "已出库数量")
+    private BigDecimal outboundOutQty;
+
+    @ApiModelProperty(value = "可退货数量")
+    private BigDecimal canReturnQty;
+
+
     /*
      * 相关属性
      * @TableField(exist = false)

+ 97 - 42
src/main/java/com/dk/mdm/service/ivt/InboundPurchaseService.java

@@ -1,10 +1,12 @@
 package com.dk.mdm.service.ivt;
 
+import com.dk.common.exception.BaseBusinessException;
 import com.dk.common.infrastructure.annotaiton.Pagination;
 import com.dk.common.infrastructure.constant.Constant;
 import com.dk.common.infrastructure.enums.ErrorCodeEnum;
 import com.dk.common.mapper.BaseMapper;
 import com.dk.common.model.pojo.PageList;
+import com.dk.common.response.ResponseCodeEnum;
 import com.dk.common.response.ResponseResultUtil;
 import com.dk.common.response.ResponseResultVO;
 import com.dk.common.service.BaseService;
@@ -125,18 +127,21 @@ public class InboundPurchaseService extends BaseService<Inbound> {
 
 		//region 采购总单
 		if(inboundVO.getFromId()!=null){
-			PurchaseResponse purchaseResponse = purchaseMapper.selectById(inboundVO.getFromId());
 			Purchase purchaseUpdate = new Purchase();
 			purchaseUpdate.setPurId(inboundVO.getFromId());
-			purchaseUpdate.setIntoingQty(purchaseResponse.getIntoingQty().subtract(inboundVO.getIntoingQty()));
-			purchaseUpdate.setIntoingAmt(purchaseResponse.getIntoingAmt().subtract(inboundVO.getIntoingAmt()));
-			purchaseUpdate.setIntoAmt(purchaseResponse.getIntoQty().add(inboundVO.getIntoAmt()));
-			purchaseUpdate.setIntoQty(purchaseResponse.getIntoAmt().add(inboundVO.getIntoQty()));
+			purchaseUpdate.setIntoingQty(inboundVO.getIntoingQty().negate());
+			purchaseUpdate.setIntoingAmt(inboundVO.getIntoingAmt().negate());
+			purchaseUpdate.setIntoAmt(inboundVO.getIntoAmt());
+			purchaseUpdate.setIntoQty(inboundVO.getIntoQty());
 			//入库状态
 			String intoStatus = this.setIntoStatus(purchaseUpdate.getIntoingQty(), purchaseUpdate.getIntoQty());
 			purchaseUpdate.setIntoStatus(intoStatus);
 			//修改
-			purchaseMapper.updateById(purchaseUpdate);
+			int countRow = purchaseMapper.updateById(purchaseUpdate);
+			//数量超出
+			if (countRow == 0) {
+				throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.INVENTORY_QUANTITY_EXCEEDED.getMessage());
+			}
 		}
 		//endregion
 
@@ -180,17 +185,25 @@ public class InboundPurchaseService extends BaseService<Inbound> {
 			//region 采购明细
 			if(inboundItemVO.getFromItemId()!=null){
 				//根据id查询
-				PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(inboundItemVO.getFromItemId());
+//				PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(inboundItemVO.getFromItemId());
 				PurchaseItem  purchaseItem = new PurchaseItem();
 				purchaseItem.setItemId(inboundItemVO.getFromItemId());
-				purchaseItem.setIntoingQty(purchaseItemResponse.getIntoingQty().add(inboundItemVO.getIntoingQty()));
-				purchaseItem.setIntoingAmt(purchaseItemResponse.getIntoingAmt().add(inboundItemVO.getIntoingAmt()));
-				purchaseItem.setIntoQty(purchaseItemResponse.getIntoQty().add(inboundItemVO.getIntoQty()));
-				purchaseItem.setIntoAmt(purchaseItemResponse.getIntoAmt().add(inboundItemVO.getIntoAmt()));
+//				purchaseItem.setIntoingQty(purchaseItemResponse.getIntoingQty().add(inboundItemVO.getIntoingQty()));
+//				purchaseItem.setIntoingAmt(purchaseItemResponse.getIntoingAmt().add(inboundItemVO.getIntoingAmt()));
+//				purchaseItem.setIntoQty(purchaseItemResponse.getIntoQty().add(inboundItemVO.getIntoQty()));
+//				purchaseItem.setIntoAmt(purchaseItemResponse.getIntoAmt().add(inboundItemVO.getIntoAmt()));
+				purchaseItem.setIntoingQty(inboundItemVO.getIntoingQty());
+				purchaseItem.setIntoingAmt(inboundItemVO.getIntoingAmt());
+				purchaseItem.setIntoQty(inboundItemVO.getIntoQty());
+				purchaseItem.setIntoAmt(inboundItemVO.getIntoAmt());
 				//入库状态
 				String intoStatus = this.setIntoStatus(purchaseItem.getIntoingQty(), purchaseItem.getIntoQty());
 				purchaseItem.setIntoStatus(intoStatus);
-				purchaseItemMapper.updateById(purchaseItem);
+				int countRow = purchaseItemMapper.updateById(purchaseItem);
+				//数量超出
+				if (countRow == 0) {
+					throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.INVENTORY_QUANTITY_EXCEEDED.getMessage());
+				}
 			}
 			//endregion
 		}
@@ -264,17 +277,25 @@ public class InboundPurchaseService extends BaseService<Inbound> {
 				//region  采购
 				//采购明细
 				if(inboundItemVO.getFromItemId()!=null){
-					PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(inboundItemVO.getFromItemId());
+//					PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(inboundItemVO.getFromItemId());
 					PurchaseItem  purchaseItem = new PurchaseItem();
-					purchaseItem.setItemId(purchaseItemResponse.getItemId());
-					purchaseItem.setIntoingQty(purchaseItemResponse.getIntoingQty().add(inboundItemVO.getIntoingQty()));
-					purchaseItem.setIntoingAmt(purchaseItemResponse.getIntoingAmt().add(inboundItemVO.getIntoingAmt()));
-					purchaseItem.setIntoQty(purchaseItemResponse.getIntoQty().add(inboundItemVO.getIntoQty()));
-					purchaseItem.setIntoAmt(purchaseItemResponse.getIntoAmt().add(inboundItemVO.getIntoAmt()));
+					purchaseItem.setItemId(inboundItemVO.getFromItemId());
+//					purchaseItem.setIntoingQty(purchaseItemResponse.getIntoingQty().add(inboundItemVO.getIntoingQty()));
+//					purchaseItem.setIntoingAmt(purchaseItemResponse.getIntoingAmt().add(inboundItemVO.getIntoingAmt()));
+//					purchaseItem.setIntoQty(purchaseItemResponse.getIntoQty().add(inboundItemVO.getIntoQty()));
+//					purchaseItem.setIntoAmt(purchaseItemResponse.getIntoAmt().add(inboundItemVO.getIntoAmt()));
+					purchaseItem.setIntoingQty(inboundItemVO.getIntoingQty());
+					purchaseItem.setIntoingAmt(inboundItemVO.getIntoingAmt());
+					purchaseItem.setIntoQty(inboundItemVO.getIntoQty());
+					purchaseItem.setIntoAmt(inboundItemVO.getIntoAmt());
 					//入库状态
 					String intoStatus = this.setIntoStatus(purchaseItem.getIntoingQty(), purchaseItem.getIntoQty());
 					purchaseItem.setIntoStatus(intoStatus);
-					purchaseItemMapper.updateById(purchaseItem);
+					int countRow = purchaseItemMapper.updateById(purchaseItem);
+					//数量超出
+					if (countRow == 0) {
+						throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.INVENTORY_QUANTITY_EXCEEDED.getMessage());
+					}
 				}
 				//endregion
 			}
@@ -299,17 +320,25 @@ public class InboundPurchaseService extends BaseService<Inbound> {
 					//region  采购
 					if(inboundItemVO.getFromItemId()!=null){
 						//region 采购订单明细
-						PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(inboundItemVO.getFromItemId());
+//						PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(inboundItemVO.getFromItemId());
 						PurchaseItem  purchaseItem = new PurchaseItem();
-							purchaseItem.setItemId(purchaseItemResponse.getItemId());
-							purchaseItem.setIntoingQty(purchaseItemResponse.getIntoingQty().subtract(inboundItemVO.getIntoingQty()));
-							purchaseItem.setIntoingAmt(purchaseItemResponse.getIntoingAmt().subtract(inboundItemVO.getIntoingAmt()));
-							purchaseItem.setIntoQty(purchaseItemResponse.getIntoQty().subtract(inboundItemVO.getIntoQty()));
-							purchaseItem.setIntoAmt(purchaseItemResponse.getIntoAmt().subtract(inboundItemVO.getIntoAmt()));
+							purchaseItem.setItemId(inboundItemVO.getFromItemId());
+//							purchaseItem.setIntoingQty(purchaseItemResponse.getIntoingQty().subtract(inboundItemVO.getIntoingQty()));
+//							purchaseItem.setIntoingAmt(purchaseItemResponse.getIntoingAmt().subtract(inboundItemVO.getIntoingAmt()));
+//							purchaseItem.setIntoQty(purchaseItemResponse.getIntoQty().subtract(inboundItemVO.getIntoQty()));
+//							purchaseItem.setIntoAmt(purchaseItemResponse.getIntoAmt().subtract(inboundItemVO.getIntoAmt()));
+							purchaseItem.setIntoingQty(inboundItemVO.getIntoingQty().negate());
+							purchaseItem.setIntoingAmt(inboundItemVO.getIntoingAmt().negate());
+							purchaseItem.setIntoQty(inboundItemVO.getIntoQty().negate());
+							purchaseItem.setIntoAmt(inboundItemVO.getIntoAmt().negate());
 							//入库状态
 							String intoStatus = this.setIntoStatus(purchaseItem.getIntoingQty(), purchaseItem.getIntoQty());
 							purchaseItem.setIntoStatus(intoStatus);
-							purchaseItemMapper.updateById(purchaseItem);
+							int countRow = purchaseItemMapper.updateById(purchaseItem);
+							//数量超出
+							if (countRow == 0) {
+								throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.INVENTORY_QUANTITY_EXCEEDED.getMessage());
+							}
 						//endregion
 					}
 					//endregion
@@ -346,15 +375,23 @@ public class InboundPurchaseService extends BaseService<Inbound> {
 				PurchaseResponse purchaseResponse = purchaseMapper.selectById(inboundVO.getFromId());
 				Purchase  purchase = new Purchase();
 				purchase.setPurId(purchaseResponse.getPurId());
-				purchase.setIntoQty(purchaseResponse.getIntoQty().add(sumIntoQty).subtract(sumDelIntoQty));
-				purchase.setIntoAmt(purchaseResponse.getIntoAmt().add(sumIntoAmt).subtract(sumDelIntoAmt));
-				purchase.setIntoingQty(purchaseResponse.getIntoingQty().subtract(sumIntoingQty).subtract(sumDelIntoingQty));
-				purchase.setIntoingAmt(purchaseResponse.getIntoingAmt().subtract(sumIntoingAmt).subtract(sumDelIntoingAmt));
+//				purchase.setIntoQty(purchaseResponse.getIntoQty().add(sumIntoQty).subtract(sumDelIntoQty));
+//				purchase.setIntoAmt(purchaseResponse.getIntoAmt().add(sumIntoAmt).subtract(sumDelIntoAmt));
+//				purchase.setIntoingQty(purchaseResponse.getIntoingQty().subtract(sumIntoingQty).subtract(sumDelIntoingQty));
+//				purchase.setIntoingAmt(purchaseResponse.getIntoingAmt().subtract(sumIntoingAmt).subtract(sumDelIntoingAmt));
+				purchase.setIntoQty(sumIntoQty.subtract(sumDelIntoQty));
+				purchase.setIntoAmt(sumIntoAmt.subtract(sumDelIntoAmt));
+				purchase.setIntoingQty((sumIntoingQty.add(sumDelIntoingQty)).negate());
+				purchase.setIntoingAmt((sumIntoingAmt.add(sumDelIntoingAmt)).negate());
 				//入库状态
 				String intoStatus = this.setIntoStatus(purchase.getIntoingQty(), purchase.getIntoQty());
 				purchase.setIntoStatus(intoStatus);
 				//修改
-				purchaseMapper.updateById(purchase);
+				int countRow = purchaseMapper.updateById(purchase);
+				//数量超出
+				if (countRow == 0) {
+					throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.INVENTORY_QUANTITY_EXCEEDED.getMessage());
+				}
 			}
 			//endregion
 
@@ -380,17 +417,25 @@ public class InboundPurchaseService extends BaseService<Inbound> {
 
 		//region 修改订单数据信息
 		if (inboundVO.getFromId() != null) {
-			PurchaseResponse purchaseResponse = purchaseMapper.selectById(inboundResponse.getFromId());
+//			PurchaseResponse purchaseResponse = purchaseMapper.selectById(inboundResponse.getFromId());
 			Purchase purchase = new Purchase();
 			purchase.setPurId(inboundResponse.getFromId());
-			purchase.setIntoQty(purchaseResponse.getIntoQty().subtract(inboundResponse.getIntoQty()));
-			purchase.setIntoAmt(purchaseResponse.getIntoAmt().subtract(inboundResponse.getIntoAmt()));
-			purchase.setIntoingQty(purchaseResponse.getIntoingQty().add(inboundResponse.getIntoQty()));
-			purchase.setIntoingAmt(purchaseResponse.getIntoingAmt().add(inboundResponse.getIntoAmt()));
+//			purchase.setIntoQty(purchaseResponse.getIntoQty().subtract(inboundResponse.getIntoQty()));
+//			purchase.setIntoAmt(purchaseResponse.getIntoAmt().subtract(inboundResponse.getIntoAmt()));
+//			purchase.setIntoingQty(purchaseResponse.getIntoingQty().add(inboundResponse.getIntoQty()));
+//			purchase.setIntoingAmt(purchaseResponse.getIntoingAmt().add(inboundResponse.getIntoAmt()));
+			purchase.setIntoQty(inboundResponse.getIntoQty().negate());
+			purchase.setIntoAmt(inboundResponse.getIntoAmt().negate());
+			purchase.setIntoingQty(inboundResponse.getIntoQty());
+			purchase.setIntoingAmt(inboundResponse.getIntoAmt());
 			//入库状态
 			String intoStatus = this.setIntoStatus(purchase.getIntoingQty(), purchase.getIntoQty());
 			purchase.setIntoStatus(intoStatus);
-			purchaseMapper.updateById(purchase);
+			int countRow =  purchaseMapper.updateById(purchase);
+			//数量超出
+			if (countRow == 0) {
+				throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.INVENTORY_QUANTITY_EXCEEDED.getMessage());
+			}
 		}
 		//endregion
 
@@ -415,14 +460,24 @@ public class InboundPurchaseService extends BaseService<Inbound> {
 				//查询
 				PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(inboundItemResponse.getFromItemId());
 				PurchaseItem  purchaseItem = new PurchaseItem();
-				purchaseItem.setItemId(purchaseItemResponse.getItemId());
-				purchaseItem.setIntoQty(purchaseItemResponse.getIntoQty().subtract(inboundItemResponse.getIntoQty()));
-				purchaseItem.setIntoAmt(purchaseItemResponse.getIntoAmt().subtract(inboundItemResponse.getIntoAmt()));
-				purchaseItem.setIntoingQty(purchaseItemResponse.getIntoingQty().add(inboundItemResponse.getIntoQty()));
-				purchaseItem.setIntoingAmt(purchaseItemResponse.getIntoingAmt().add(inboundItemResponse.getIntoAmt()));
+				purchaseItem.setItemId(inboundItemResponse.getFromItemId());
+//				purchaseItem.setIntoQty(purchaseItemResponse.getIntoQty().subtract(inboundItemResponse.getIntoQty()));
+//				purchaseItem.setIntoAmt(purchaseItemResponse.getIntoAmt().subtract(inboundItemResponse.getIntoAmt()));
+//				purchaseItem.setIntoingQty(purchaseItemResponse.getIntoingQty().add(inboundItemResponse.getIntoQty()));
+//				purchaseItem.setIntoingAmt(purchaseItemResponse.getIntoingAmt().add(inboundItemResponse.getIntoAmt()));
+				purchaseItem.setIntoQty(inboundItemResponse.getIntoQty().negate());
+				purchaseItem.setIntoAmt(inboundItemResponse.getIntoAmt().negate());
+				purchaseItem.setIntoingQty(inboundItemResponse.getIntoQty());
+				purchaseItem.setIntoingAmt(inboundItemResponse.getIntoAmt());
 				//入库状态
 				String intoStatus= this.setIntoStatus(purchaseItem.getIntoingQty(), purchaseItem.getIntoQty());
 				purchaseItem.setIntoStatus(intoStatus);
+				//修改
+				int countRow = purchaseItemMapper.updateById(purchaseItem);
+				//数量超出
+				if (countRow == 0) {
+					throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.INVENTORY_QUANTITY_EXCEEDED.getMessage());
+				}
 			}
 			//endregion
 

+ 102 - 49
src/main/java/com/dk/mdm/service/ivt/InboundSaleReturnService.java

@@ -1,10 +1,12 @@
 package com.dk.mdm.service.ivt;
 
+import com.dk.common.exception.BaseBusinessException;
 import com.dk.common.infrastructure.annotaiton.Pagination;
 import com.dk.common.infrastructure.constant.Constant;
 import com.dk.common.infrastructure.enums.ErrorCodeEnum;
 import com.dk.common.mapper.BaseMapper;
 import com.dk.common.model.pojo.PageList;
+import com.dk.common.response.ResponseCodeEnum;
 import com.dk.common.response.ResponseResultUtil;
 import com.dk.common.response.ResponseResultVO;
 import com.dk.common.service.BaseService;
@@ -76,16 +78,9 @@ public class InboundSaleReturnService extends BaseService<Inbound> {
     private IntoReturnMapper intoReturnMapper;
 
     @Autowired
-    private IntoReturnConvert intoReturnConvert;
-
-    @Autowired
     private IntoReturnItemMapper intoReturnItemMapper;
 
     @Autowired
-    private IntoReturnItemConvert intoReturnItemConvert;
-
-
-    @Autowired
     private CommonService commonService;
 
 
@@ -144,17 +139,25 @@ public class InboundSaleReturnService extends BaseService<Inbound> {
         //region 销售退货
         if (inboundVO.getFromId() != null) {
             IntoReturn intoReturn = new IntoReturn();
-            IntoReturnResponse intoReturnResponse = intoReturnMapper.selectById(inboundVO.getFromId());
+//            IntoReturnResponse intoReturnResponse = intoReturnMapper.selectById(inboundVO.getFromId());
             intoReturn.setReturnId(inboundVO.getFromId());
-            intoReturn.setOutingQty(intoReturnResponse.getOutingQty().subtract(inboundVO.getIntoingQty()));
-            intoReturn.setOutingAmt(intoReturnResponse.getOutingAmt().subtract(inboundVO.getIntoingAmt()));
-            intoReturn.setOutQty(intoReturnResponse.getOutQty().add(inboundVO.getIntoAmt()));
-            intoReturn.setOutAmt(intoReturnResponse.getOutAmt().add(inboundVO.getIntoQty()));
+//            intoReturn.setOutingQty(intoReturnResponse.getOutingQty().subtract(inboundVO.getIntoingQty()));
+//            intoReturn.setOutingAmt(intoReturnResponse.getOutingAmt().subtract(inboundVO.getIntoingAmt()));
+//            intoReturn.setOutQty(intoReturnResponse.getOutQty().add(inboundVO.getIntoAmt()));
+//            intoReturn.setOutAmt(intoReturnResponse.getOutAmt().add(inboundVO.getIntoQty()));
+            intoReturn.setOutingQty(inboundVO.getIntoingQty().negate());
+            intoReturn.setOutingAmt(inboundVO.getIntoingAmt().negate());
+            intoReturn.setOutQty(inboundVO.getIntoAmt());
+            intoReturn.setOutAmt(inboundVO.getIntoQty());
             //出库状态
             String outStatus = this.setOutStatus(intoReturn.getOutingQty(), intoReturn.getOutQty());
             intoReturn.setOutStatus(outStatus);
             //修改
-            intoReturnMapper.updateById(intoReturn);
+            int countRow = intoReturnMapper.updateById(intoReturn);
+            //数量超出
+            if (countRow == 0) {
+                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.INVENTORY_QUANTITY_EXCEEDED.getMessage());
+            }
         }
         //endregion
 
@@ -198,18 +201,26 @@ public class InboundSaleReturnService extends BaseService<Inbound> {
 
             //region 销售退货明细
             if (inboundItemVO.getFromItemId() != null) {
-                IntoReturnItemResponse intoReturnItemResponse = intoReturnItemMapper.selectById(inboundItemVO.getFromItemId());
+//                IntoReturnItemResponse intoReturnItemResponse = intoReturnItemMapper.selectById(inboundItemVO.getFromItemId());
                 IntoReturnItem intoReturnItem = new IntoReturnItem();
                 intoReturnItem.setItemId(inboundItemVO.getFromItemId());
-                intoReturnItem.setOutQty(intoReturnItemResponse.getOutQty().add(inboundItemVO.getIntoQty()));
-                intoReturnItem.setOutAmt(intoReturnItemResponse.getOutAmt().add(inboundItemVO.getIntoAmt()));
-                intoReturnItem.setOutingQty(intoReturnItemResponse.getOutingQty().add(inboundItemVO.getIntoingQty()));
-                intoReturnItem.setOutingAmt(intoReturnItemResponse.getOutingAmt().add(inboundItemVO.getIntoingAmt()));
+//                intoReturnItem.setOutQty(intoReturnItemResponse.getOutQty().add(inboundItemVO.getIntoQty()));
+//                intoReturnItem.setOutAmt(intoReturnItemResponse.getOutAmt().add(inboundItemVO.getIntoAmt()));
+//                intoReturnItem.setOutingQty(intoReturnItemResponse.getOutingQty().add(inboundItemVO.getIntoingQty()));
+//                intoReturnItem.setOutingAmt(intoReturnItemResponse.getOutingAmt().add(inboundItemVO.getIntoingAmt()));
+                intoReturnItem.setOutQty(inboundItemVO.getIntoQty());
+                intoReturnItem.setOutAmt(inboundItemVO.getIntoAmt());
+                intoReturnItem.setOutingQty(inboundItemVO.getIntoingQty());
+                intoReturnItem.setOutingAmt(inboundItemVO.getIntoingAmt());
                 //出库状态
                 String outStatus = this.setOutStatus(intoReturnItem.getOutingQty(), intoReturnItem.getOutQty());
                 intoReturnItem.setOutStatus(outStatus);
                 //修改
-                intoReturnItemMapper.updateById(intoReturnItem);
+                int countRow = intoReturnItemMapper.updateById(intoReturnItem);
+                //数量超出
+                if (countRow == 0) {
+                    throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.INVENTORY_QUANTITY_EXCEEDED.getMessage());
+                }
             }
             //endregion
 
@@ -281,18 +292,26 @@ public class InboundSaleReturnService extends BaseService<Inbound> {
 
                 //region  销售退货明细
                 if (inboundItemVO.getFromItemId() != null) {
-                    IntoReturnItemResponse intoReturnItemResponse = intoReturnItemMapper.selectById(inboundItemVO.getFromItemId());
+//                    IntoReturnItemResponse intoReturnItemResponse = intoReturnItemMapper.selectById(inboundItemVO.getFromItemId());
                     IntoReturnItem intoReturnItem = new IntoReturnItem();
                     intoReturnItem.setItemId(inboundItemVO.getFromItemId());
-                    intoReturnItem.setOutQty(intoReturnItemResponse.getOutQty().add(inboundItemVO.getIntoQty()));
-                    intoReturnItem.setOutAmt(intoReturnItemResponse.getOutAmt().add(inboundItemVO.getIntoAmt()));
-                    intoReturnItem.setOutingQty(intoReturnItemResponse.getOutingQty().add(inboundItemVO.getIntoingQty()));
-                    intoReturnItem.setOutingAmt(intoReturnItemResponse.getOutingAmt().add(inboundItemVO.getIntoingAmt()));
+//                    intoReturnItem.setOutQty(intoReturnItemResponse.getOutQty().add(inboundItemVO.getIntoQty()));
+//                    intoReturnItem.setOutAmt(intoReturnItemResponse.getOutAmt().add(inboundItemVO.getIntoAmt()));
+//                    intoReturnItem.setOutingQty(intoReturnItemResponse.getOutingQty().add(inboundItemVO.getIntoingQty()));
+//                    intoReturnItem.setOutingAmt(intoReturnItemResponse.getOutingAmt().add(inboundItemVO.getIntoingAmt()));
+                    intoReturnItem.setOutQty(inboundItemVO.getIntoQty());
+                    intoReturnItem.setOutAmt(inboundItemVO.getIntoAmt());
+                    intoReturnItem.setOutingQty(inboundItemVO.getIntoingQty());
+                    intoReturnItem.setOutingAmt(inboundItemVO.getIntoingAmt());
                     //出库状态
                     String outStatus = this.setOutStatus(intoReturnItem.getOutingQty(), intoReturnItem.getOutQty());
                     intoReturnItem.setOutStatus(outStatus);
                     //修改
-                    intoReturnItemMapper.updateById(intoReturnItem);
+                    int countRow = intoReturnItemMapper.updateById(intoReturnItem);
+                    //数量超出
+                    if (countRow == 0) {
+                        throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.INVENTORY_QUANTITY_EXCEEDED.getMessage());
+                    }
                 }
                 //endregion
             }
@@ -317,18 +336,26 @@ public class InboundSaleReturnService extends BaseService<Inbound> {
                     //region  销售退货明细
                     if (inboundItemVO.getFromItemId() != null) {
                         //region 销售退货订单明细
-                        IntoReturnItemResponse intoReturnItemResponse = intoReturnItemMapper.selectById(inboundItemVO.getFromItemId());
+//                        IntoReturnItemResponse intoReturnItemResponse = intoReturnItemMapper.selectById(inboundItemVO.getFromItemId());
                         IntoReturnItem intoReturnItem = new IntoReturnItem();
                         intoReturnItem.setItemId(inboundItemVO.getFromItemId());
-                        intoReturnItem.setOutQty(intoReturnItemResponse.getOutQty().subtract(inboundItemVO.getIntoQty()));
-                        intoReturnItem.setOutAmt(intoReturnItemResponse.getOutAmt().subtract(inboundItemVO.getIntoAmt()));
-                        intoReturnItem.setOutingQty(intoReturnItemResponse.getOutingQty().subtract(inboundItemVO.getIntoingQty()));
-                        intoReturnItem.setOutingAmt(intoReturnItemResponse.getOutingAmt().subtract(inboundItemVO.getIntoingAmt()));
+//                        intoReturnItem.setOutQty(intoReturnItemResponse.getOutQty().subtract(inboundItemVO.getIntoQty()));
+//                        intoReturnItem.setOutAmt(intoReturnItemResponse.getOutAmt().subtract(inboundItemVO.getIntoAmt()));
+//                        intoReturnItem.setOutingQty(intoReturnItemResponse.getOutingQty().subtract(inboundItemVO.getIntoingQty()));
+//                        intoReturnItem.setOutingAmt(intoReturnItemResponse.getOutingAmt().subtract(inboundItemVO.getIntoingAmt()));
+                        intoReturnItem.setOutQty(inboundItemVO.getIntoQty().negate());
+                        intoReturnItem.setOutAmt(inboundItemVO.getIntoAmt().negate());
+                        intoReturnItem.setOutingQty(inboundItemVO.getIntoingQty().negate());
+                        intoReturnItem.setOutingAmt(inboundItemVO.getIntoingAmt().negate());
                         //出库状态
                         String outStatus = this.setOutStatus(intoReturnItem.getOutingQty(), intoReturnItem.getOutQty());
                         intoReturnItem.setOutStatus(outStatus);
                         //修改
-                        intoReturnItemMapper.updateById(intoReturnItem);
+                        int countRow = intoReturnItemMapper.updateById(intoReturnItem);
+                        //数量超出
+                        if (countRow == 0) {
+                            throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.INVENTORY_QUANTITY_EXCEEDED.getMessage());
+                        }
                         //endregion
                     }
                     //endregion
@@ -362,18 +389,28 @@ public class InboundSaleReturnService extends BaseService<Inbound> {
 
             //region  修改销售退货订单
             if (inboundVO.getFromId() != null) {
-                IntoReturnResponse intoReturnResponse = intoReturnMapper.selectById(inboundVO.getFromId());
+                //查询
+//                IntoReturnResponse intoReturnResponse = intoReturnMapper.selectById(inboundVO.getFromId());
                 IntoReturn intoReturn = new IntoReturn();
                 intoReturn.setReturnId(inboundVO.getFromId());
-                intoReturn.setOutQty(intoReturnResponse.getOutQty().add(sumOutQty).subtract(sumDelOutQty));
-                intoReturn.setOutAmt(intoReturnResponse.getOutAmt().add(sumOutAmt).subtract(sumDelOutAmt));
-                intoReturn.setOutingQty(intoReturnResponse.getOutingQty().subtract(sumOutQty).subtract(sumDelOutingQty));
-                intoReturn.setOutingAmt(intoReturnResponse.getOutingAmt().subtract(sumOutAmt).subtract(sumDelOutingAmt));
+//                intoReturn.setOutQty(intoReturnResponse.getOutQty().add(sumOutQty).subtract(sumDelOutQty));
+//                intoReturn.setOutAmt(intoReturnResponse.getOutAmt().add(sumOutAmt).subtract(sumDelOutAmt));
+//                intoReturn.setOutingQty(intoReturnResponse.getOutingQty().subtract(sumOutQty).subtract(sumDelOutingQty));
+//                intoReturn.setOutingAmt(intoReturnResponse.getOutingAmt().subtract(sumOutAmt).subtract(sumDelOutingAmt));
+                intoReturn.setOutQty(sumOutQty.subtract(sumDelOutQty));
+                intoReturn.setOutAmt(sumOutAmt.subtract(sumDelOutAmt));
+                intoReturn.setOutingQty((sumOutQty.add(sumDelOutingQty)).negate());
+                intoReturn.setOutingAmt((sumOutAmt.add(sumDelOutingAmt)).negate());
                 //入库状态
                 String outStatus = this.setOutStatus(intoReturn.getOutingQty(), intoReturn.getOutQty());
                 intoReturn.setOutStatus(outStatus);
                 //修改
-                intoReturnMapper.updateById(intoReturn);
+                int countRow = intoReturnMapper.updateById(intoReturn);
+                //数量超出
+                if (countRow == 0) {
+                    throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.INVENTORY_QUANTITY_EXCEEDED.getMessage());
+                }
+
             }
             //endregion
 
@@ -400,19 +437,27 @@ public class InboundSaleReturnService extends BaseService<Inbound> {
         //region 修改订单数据信息
         if (inboundVO.getFromId() != null) {
             //查询
-            IntoReturnResponse intoReturnResponse = intoReturnMapper.selectById(inboundVO.getFromId());
+//            IntoReturnResponse intoReturnResponse = intoReturnMapper.selectById(inboundVO.getFromId());
             //赋值
             IntoReturn intoReturn = new IntoReturn();
             intoReturn.setReturnId(inboundVO.getFromId());
-            intoReturn.setOutQty(intoReturnResponse.getOutQty().add(inboundResponse.getIntoQty()));
-            intoReturn.setOutAmt(intoReturnResponse.getOutAmt().add(inboundResponse.getIntoAmt()));
-            intoReturn.setOutingQty(intoReturnResponse.getOutingQty().subtract(inboundResponse.getIntoQty()));
-            intoReturn.setOutingAmt(intoReturnResponse.getOutingAmt().subtract(inboundResponse.getIntoAmt()));
+//            intoReturn.setOutQty(intoReturnResponse.getOutQty().add(inboundResponse.getIntoQty()));
+//            intoReturn.setOutAmt(intoReturnResponse.getOutAmt().add(inboundResponse.getIntoAmt()));
+//            intoReturn.setOutingQty(intoReturnResponse.getOutingQty().subtract(inboundResponse.getIntoQty()));
+//            intoReturn.setOutingAmt(intoReturnResponse.getOutingAmt().subtract(inboundResponse.getIntoAmt()));
+            intoReturn.setOutQty(inboundResponse.getIntoQty());
+            intoReturn.setOutAmt(inboundResponse.getIntoAmt());
+            intoReturn.setOutingQty(inboundResponse.getIntoQty().negate());
+            intoReturn.setOutingAmt(inboundResponse.getIntoAmt().negate());
             //出库状态
             String outStatus = this.setOutStatus(intoReturn.getOutingQty(), intoReturn.getOutQty());
             intoReturn.setOutStatus(outStatus);
             //修改
-            intoReturnMapper.updateById(intoReturn);
+            int countRow = intoReturnMapper.updateById(intoReturn);
+            //数量超出
+            if (countRow == 0) {
+                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.INVENTORY_QUANTITY_EXCEEDED.getMessage());
+            }
         }
         //endregion
 
@@ -433,18 +478,26 @@ public class InboundSaleReturnService extends BaseService<Inbound> {
             //region 修改销售退货明细数据信息
             if (inboundItemResponse.getFromItemId() != null) {
                 //查询
-                IntoReturnItemResponse intoReturnItemResponse = intoReturnItemMapper.selectById(inboundItemResponse.getFromItemId());
+//                IntoReturnItemResponse intoReturnItemResponse = intoReturnItemMapper.selectById(inboundItemResponse.getFromItemId());
                 IntoReturnItem intoReturnItem = new IntoReturnItem();
                 intoReturnItem.setItemId(inboundItemResponse.getFromItemId());
-                intoReturnItem.setOutQty(intoReturnItemResponse.getOutQty().subtract(inboundItemResponse.getIntoQty()));
-                intoReturnItem.setOutAmt(intoReturnItemResponse.getOutAmt().subtract(inboundItemResponse.getIntoAmt()));
-                intoReturnItem.setOutingQty(intoReturnItemResponse.getOutingQty().add(inboundItemResponse.getIntoQty()));
-                intoReturnItem.setOutingAmt(intoReturnItemResponse.getOutingAmt().add(inboundItemResponse.getIntoAmt()));
+//                intoReturnItem.setOutQty(intoReturnItemResponse.getOutQty().subtract(inboundItemResponse.getIntoQty()));
+//                intoReturnItem.setOutAmt(intoReturnItemResponse.getOutAmt().subtract(inboundItemResponse.getIntoAmt()));
+//                intoReturnItem.setOutingQty(intoReturnItemResponse.getOutingQty().add(inboundItemResponse.getIntoQty()));
+//                intoReturnItem.setOutingAmt(intoReturnItemResponse.getOutingAmt().add(inboundItemResponse.getIntoAmt()));
+                intoReturnItem.setOutQty(inboundItemResponse.getIntoQty().negate());
+                intoReturnItem.setOutAmt(inboundItemResponse.getIntoAmt().negate());
+                intoReturnItem.setOutingQty(inboundItemResponse.getIntoQty());
+                intoReturnItem.setOutingAmt(inboundItemResponse.getIntoAmt());
                 //出库状态
                 String outStatus = this.setOutStatus(intoReturnItem.getOutingQty(), intoReturnItem.getOutQty());
                 intoReturnItem.setOutStatus(outStatus);
                 //修改
-                intoReturnItemMapper.updateById(intoReturnItem);
+                int countRow = intoReturnItemMapper.updateById(intoReturnItem);
+                //数量超出
+                if (countRow == 0) {
+                    throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.INVENTORY_QUANTITY_EXCEEDED.getMessage());
+                }
             }
             //endregion
 

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

@@ -187,18 +187,17 @@ public class OutboundService extends BaseService<Outbound> {
     public ResponseResultVO<Boolean> update(OutboundVO outboundVO) {
         // 订单明细实体
         OrderItem orderItemForUpdate;
-        // 订单明细实体
+        // 出库明细实体
         OutboundItem outboundItemForUpdate;
 
         // 编辑出库明细
         List<OutboundItemVO> editOutboundItemVOList = outboundVO.getItemList();
         for (OutboundItemVO outboundItemVO : editOutboundItemVOList) {
+            outboundItemForUpdate = outboundItemMapper.selectByIdForUpdate(outboundItemVO.getItemId());
             // 出库中数量不能小于出库数量
-            if (outboundItemVO.getOutingQty().compareTo(outboundItemVO.getOutQty()) == -1) {
+            if (outboundItemForUpdate.getOutingQty().compareTo(outboundItemVO.getOutQty()) == -1) {
                 throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.OUTINGQTY_NO_LESS_OUTQTY.getMessage());
             }
-
-            outboundItemForUpdate = outboundItemMapper.selectByIdForUpdate(outboundItemVO.getItemId());
             orderItemForUpdate = orderItemMapper.selectByIdForUpdate(outboundItemVO.getFromItemId());
 
             // 订单的商品数量不能小于(订单之前的出库中数量 - 出库明细之前的出库中数量 + 出库明细现在的出库中数量)
@@ -298,14 +297,14 @@ public class OutboundService extends BaseService<Outbound> {
      * @date : 2024-03-02 17:27
      */
     public ResponseResultVO<?> getOutboundForUpdate(String id) {
-        Map<String, Object> outboundInfo = new HashMap<>();
+        Map<String, Object> dataInfo = new HashMap<>();
         OutboundResponse outboundResponse = outboundMapper.selectById(id);
-        outboundInfo.put("outbound", outboundResponse);
+        dataInfo.put("data", outboundResponse);
 
         // 商品明细
-        List<OutboundItemResponse> outboundItemResponse = outboundItemMapper.selectByCondForOutEdit(id);
-        outboundInfo.put("outboundItem", outboundItemResponse);
-        return ResponseResultUtil.success(outboundInfo);
+        List<OutboundItemResponse> outboundItemResponseList = outboundItemMapper.selectByCondForOutEdit(id);
+        dataInfo.put("dataItem", outboundItemResponseList);
+        return ResponseResultUtil.success(dataInfo);
     }
 
     /**

+ 5 - 9
src/main/java/com/dk/mdm/service/mst/OrgService.java

@@ -3,21 +3,14 @@ package com.dk.mdm.service.mst;
 import com.dk.common.infrastructure.annotaiton.Pagination;
 import com.dk.common.infrastructure.constant.Constant;
 import com.dk.common.model.pojo.PageList;
-import com.dk.common.response.ResponseCodeEnum;
 import com.dk.common.response.ResponseResultUtil;
 import com.dk.common.response.ResponseResultVO;
-import com.dk.mdm.infrastructure.convert.core.OrganizationConvert;
 import com.dk.mdm.infrastructure.convert.mst.OrgConvert;
-import com.dk.mdm.model.pojo.core.Organization;
 import com.dk.mdm.model.pojo.mst.Org;
 import com.dk.mdm.mapper.mst.OrgMapper;
 import com.dk.common.service.BaseService;
 import com.dk.common.mapper.BaseMapper;
-import com.dk.mdm.model.query.core.OrganizationQuery;
-import com.dk.mdm.model.query.mst.GoodsCategoryQuery;
 import com.dk.mdm.model.query.mst.OrgQuery;
-import com.dk.mdm.model.response.core.OrganizationResponse;
-import com.dk.mdm.model.vo.core.OrganizationVO;
 import com.dk.mdm.model.vo.mst.OrgVO;
 import com.dk.mdm.service.common.CommonService;
 import org.springframework.stereotype.Service;
@@ -72,8 +65,11 @@ public class OrgService extends BaseService<Org> {
     public ResponseResultVO<?> insert(OrgVO orgVO) {
         // 转化实体
         Org organization = orgConvert.convertToPo(orgVO);
-        Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.ORG.getName(), false);
-
+        // 获取显示顺序
+        Integer displayNo = commonService.getMaxDisplayNo(Constant.DisplayNoTable.ORG);
+        Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.ORG.getName(), true);
+        // 获取编码和主键UuId
+        organization.setDisplayNo(displayNo);
         organization.setOrgId(codeMap.get("outId").toString());
 //        organization.setOrgCode(codeMap.get("outNote").toString());
 

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

@@ -131,7 +131,7 @@ public class StaffService extends BaseService<Staff> {
         staff.setStaffCode(codeMap.get("outNote").toString());
         // 更新 被邀人员的cpid
         if (staff.getWxUserId()!=null){
-            // 更新邀请人员的微信用户的cpid 加入公司
+            // 更新邀请人员的微信用户的cpid 加入公司
             Map<String, Object> collectQuery = new HashMap<>();
             collectQuery.put("cpId", staff.getCpId());
             collectQuery.put("userId", staff.getWxUserId());

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

@@ -227,14 +227,14 @@ public class OrderService extends BaseService<Order> {
      * @date : 2024-03-02 17:27
      */
     public ResponseResultVO<?> getOrderForUpdate(String id) {
-        Map<String, Object> orderInfo = new HashMap<>();
+        Map<String, Object> dataInfo = new HashMap<>();
         OrderResponse orderResponse = orderMapper.selectById(id);
-        orderInfo.put("order", orderResponse);
+        dataInfo.put("data", orderResponse);
 
         // 商品明细
         List<OrderItemResponse> orderItem = orderItemMapper.selectByCond(new OrderItemQuery().setOrderId(id));
-        orderInfo.put("orderItem", orderItem);
-        return ResponseResultUtil.success(orderInfo);
+        dataInfo.put("dataItem", orderItem);
+        return ResponseResultUtil.success(dataInfo);
     }
 
     /**
@@ -243,14 +243,14 @@ public class OrderService extends BaseService<Order> {
      * @date : 2024-03-02 17:27
      */
     public ResponseResultVO<?> getOrderForOut(String id) {
-        Map<String, Object> orderInfo = new HashMap<>();
+        Map<String, Object> dataInfo = new HashMap<>();
         OrderResponse orderResponse = orderMapper.selectById(id);
-        orderInfo.put("order", orderResponse);
+        dataInfo.put("data", orderResponse);
 
         // 商品明细
         List<OrderItemResponse> orderItem = orderItemMapper.selectByCondForOut(new OrderItemQuery().setOrderId(id));
-        orderInfo.put("orderItem", orderItem);
-        return ResponseResultUtil.success(orderInfo);
+        dataInfo.put("dataItem", orderItem);
+        return ResponseResultUtil.success(dataInfo);
     }
 
     /**
@@ -259,13 +259,13 @@ public class OrderService extends BaseService<Order> {
      * @date : 2024-03-02 17:27
      */
     public ResponseResultVO<?> getOrderForReturn(String id) {
-        Map<String, Object> orderInfo = new HashMap<>();
+        Map<String, Object> dataInfo = new HashMap<>();
         OrderResponse orderResponse = orderMapper.selectById(id);
-        orderInfo.put("order", orderResponse);
+        dataInfo.put("data", orderResponse);
 
         // 商品明细
         List<OrderItemResponse> orderItem = orderItemMapper.selectByCondForReturn(new OrderItemQuery().setOrderId(id));
-        orderInfo.put("orderItem", orderItem);
-        return ResponseResultUtil.success(orderInfo);
+        dataInfo.put("dataItem", orderItem);
+        return ResponseResultUtil.success(dataInfo);
     }
 }

+ 109 - 1
src/main/java/com/dk/mdm/service/sale/OutReturnService.java

@@ -214,6 +214,98 @@ public class OutReturnService extends BaseService<OutReturn> {
     }
 
     /**
+     * @desc : 编辑方法
+     * @author : 付斌
+     * @date : 2023/1/9 10:49
+     */
+    @Transactional(
+            rollbackFor = {Exception.class}
+    )
+    public ResponseResultVO<Boolean> update(OutReturnVO outReturnVO) {
+        // 订单明细实体
+        OrderItem orderItemForUpdate;
+        // 出库明细实体
+        OutboundItem outboundItemForUpdate;
+        // 退货明细实体
+        OutReturnItem outReturnItemForUpdate;
+        // 出库IdList,一个退货单可能有多个出库单
+        List<String> outIdList = new ArrayList<>();
+
+        // 编辑退货明细
+        List<OutReturnItemVO> editOutReturnItemVOList = outReturnVO.getItemList();
+        for (OutReturnItemVO outReturnItemVO : editOutReturnItemVOList) {
+            // 把出库Id存起来
+            if (!outIdList.contains(outReturnItemVO.getOutId())) {
+                outIdList.add(outReturnItemVO.getOutId());
+            }
+
+            outReturnItemForUpdate = outReturnItemMapper.selectByIdForUpdate(outReturnItemVO.getItemId());
+            // 退货数量不能小于入库中数量
+            if (outReturnItemVO.getItemQty().compareTo(outReturnItemForUpdate.getIntoingQty()) == -1) {
+                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.RETURNQTY_NO_LESS_INTOINGQTY.getMessage());
+            }
+
+            outboundItemForUpdate = outboundItemMapper.selectByIdForUpdate(outReturnItemVO.getOutItemId());
+            // 出库数量不能小于(出库明细的退货数量 - 退货明细之前的退货数量 + 退货明细现在的退货数量)
+            if (outboundItemForUpdate.getOutQty().compareTo(outboundItemForUpdate.getReturnQty().subtract(outReturnItemForUpdate.getItemQty()).add(outReturnItemVO.getItemQty())) == -1) {
+                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.OUTQTY_NO_LESS_RETURNQTY.getMessage());
+            }
+            // 更新出库明细退货数量
+            OutboundItem outboundItemUpdate = new OutboundItem();
+            outboundItemUpdate.setReturnQty(outboundItemForUpdate.getReturnQty().subtract(outReturnItemForUpdate.getItemQty()).add(outReturnItemVO.getItemQty()))
+                    .setReturnAmt(outboundItemForUpdate.getReturnAmt().subtract(outReturnItemForUpdate.getItemAmt()).add(outReturnItemVO.getItemAmt()))
+                    .setItemId(outboundItemForUpdate.getItemId());
+            outboundItemService.updateByUuid(outboundItemUpdate);
+
+            // 更新订单明细退货数量
+            orderItemForUpdate = orderItemMapper.selectByIdForUpdate(outReturnItemVO.getOrderItemId());
+            OrderItem orderItemUpdate = new OrderItem();
+            orderItemUpdate.setReturnQty(orderItemForUpdate.getReturnQty().subtract(outReturnItemForUpdate.getItemQty()).add(outReturnItemVO.getItemQty()))
+                    .setReturnAmt(orderItemForUpdate.getReturnAmt().subtract(outReturnItemForUpdate.getItemAmt()).add(outReturnItemVO.getItemAmt()))
+                    .setItemId(orderItemForUpdate.getItemId());
+            orderItemService.updateByUuid(orderItemUpdate);
+
+            // 更新退货明细
+            OutReturnItem outReturnItem = outReturnItemConvert.convertToPo(outReturnItemVO);
+            outReturnItemService.updateByUuid(outReturnItem);
+        }
+
+        // 可能有多个出库单,所以要循环更新总单
+        for (String outId : outIdList) {
+            // 计算出库明细的退货数量,金额合计
+            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 orderUpdate = new Order();
+        orderUpdate.setReturnQty(orderItem.getReturnQty()).setReturnAmt(orderItem.getReturnAmt()).setOrderId(outReturnVO.getOrderId());
+        orderService.updateByUuid(orderUpdate);
+
+        // 转化实体、更新退货单总表
+        OutReturn outReturn = outReturnConvert.convertToPo(outReturnVO);
+        return ResponseResultUtil.success(super.update(outReturn, new UpdateWrapper<OutReturn>().lambda().eq(OutReturn::getReturnId,
+                UUID.fromString(outReturn.getReturnId()))));
+    }
+
+    /**
      * @desc : 作废
      * @author : 付斌
      * @date : 2024-03-08 16:38
@@ -221,7 +313,7 @@ public class OutReturnService extends BaseService<OutReturn> {
     public ResponseResultVO<?> invalid(String id) {
         OutReturn outReturnForUpdate = outReturnMapper.selectByIdForUpdate(id);
         // 并发校验
-        if(!outReturnForUpdate.getFlgValid()){
+        if (!outReturnForUpdate.getFlgValid()) {
             throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISFLGVALID_FALSE.getMessage());
         }
 
@@ -289,4 +381,20 @@ public class OutReturnService extends BaseService<OutReturn> {
                 UUID.fromString(outReturnForUpdate.getReturnId())));
         return ResponseResultUtil.success();
     }
+
+    /**
+     * @desc : 获取退货信息(编辑用)
+     * @author : 付斌
+     * @date : 2024-03-02 17:27
+     */
+    public ResponseResultVO<?> getOutReturnForUpdate(String id) {
+        Map<String, Object> dataInfo = new HashMap<>();
+        OutReturnResponse outReturnResponse = outReturnMapper.selectById(id);
+        dataInfo.put("data", outReturnResponse);
+
+        // 商品明细
+        List<OutReturnItemResponse> outReturnItemResponseList = outReturnItemMapper.selectByCondForReturnEdit(id);
+        dataInfo.put("dataItem", outReturnItemResponseList);
+        return ResponseResultUtil.success(dataInfo);
+    }
 }