Преглед изворни кода

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

songyang пре 2 година
родитељ
комит
98c3d8a7a8
26 измењених фајлова са 858 додато и 194 уклоњено
  1. 1 1
      src/main/java/com/dk/mdm/feign/CompanyFeign.java
  2. 39 37
      src/main/java/com/dk/mdm/mapper/common/CommonMapper.xml
  3. 8 1
      src/main/java/com/dk/mdm/mapper/ivt/IntoReturnItemMapper.java
  4. 80 32
      src/main/java/com/dk/mdm/mapper/ivt/IntoReturnItemMapper.xml
  5. 8 0
      src/main/java/com/dk/mdm/mapper/ivt/IntoReturnMapper.java
  6. 103 0
      src/main/java/com/dk/mdm/mapper/ivt/IntoReturnMapper.xml
  7. 7 0
      src/main/java/com/dk/mdm/mapper/ivt/OutboundItemMapper.java
  8. 35 0
      src/main/java/com/dk/mdm/mapper/ivt/OutboundItemMapper.xml
  9. 57 5
      src/main/java/com/dk/mdm/mapper/ivt/OutboundMapper.xml
  10. 1 1
      src/main/java/com/dk/mdm/mapper/mst/DictionaryDataMapper.xml
  11. 2 2
      src/main/java/com/dk/mdm/mapper/mst/SaleChannelMapper.xml
  12. 2 2
      src/main/java/com/dk/mdm/mapper/mst/WarehouseMapper.xml
  13. 9 0
      src/main/java/com/dk/mdm/mapper/pur/PurchaseItemMapper.java
  14. 70 0
      src/main/java/com/dk/mdm/mapper/pur/PurchaseItemMapper.xml
  15. 7 0
      src/main/java/com/dk/mdm/mapper/pur/PurchaseMapper.java
  16. 100 0
      src/main/java/com/dk/mdm/mapper/pur/PurchaseMapper.xml
  17. 8 0
      src/main/java/com/dk/mdm/mapper/sale/OutReturnItemMapper.java
  18. 35 0
      src/main/java/com/dk/mdm/mapper/sale/OutReturnItemMapper.xml
  19. 21 0
      src/main/java/com/dk/mdm/model/response/ivt/OutboundItemResponse.java
  20. 19 8
      src/main/java/com/dk/mdm/model/response/ivt/OutboundResponse.java
  21. 97 42
      src/main/java/com/dk/mdm/service/ivt/InboundPurchaseService.java
  22. 102 55
      src/main/java/com/dk/mdm/service/ivt/InboundSaleReturnService.java
  23. 18 7
      src/main/java/com/dk/mdm/service/ivt/OutboundService.java
  24. 1 1
      src/main/java/com/dk/mdm/service/mst/StaffService.java
  25. 5 0
      src/main/java/com/dk/mdm/service/sale/OrderService.java
  26. 23 0
      src/main/java/com/dk/mdm/service/sale/OutReturnService.java

+ 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

@@ -830,42 +830,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>
@@ -873,13 +875,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>
 

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

@@ -2,6 +2,7 @@ package com.dk.mdm.mapper.ivt;
 
 import com.dk.mdm.model.pojo.ivt.IntoReturnItem;
 import com.dk.common.mapper.BaseMapper;
+import com.dk.mdm.model.pojo.pur.PurchaseItem;
 import com.dk.mdm.model.query.ivt.IntoReturnItemQuery;
 import com.dk.mdm.model.response.ivt.IntoReturnItemResponse;
 import com.dk.mdm.model.response.pur.PurchaseResponse;
@@ -35,7 +36,13 @@ public interface IntoReturnItemMapper extends BaseMapper<IntoReturnItem>{
      * @author : 寇珊珊
      */
     IntoReturnItemResponse selectById(@Param("itemId") String itemId);
-    
+
+    /**
+     * @desc   : 根据Id修改
+     * @date   : 2024/3/12 9:32
+     * @author : 寇珊珊
+     */
+    int updateById(IntoReturnItem intoReturnItem);
     
 }
 

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

@@ -128,20 +128,8 @@
             <if test="nonStdCode != null and nonStdCode != ''">
                 AND non_std_code = #{nonStdCode}
             </if>
-            <if test="intoStatus != null and intoStatus != ''">
-                AND into_status = #{intoStatus}
-            </if>
-            <if test="intoingQty != null">
-                AND intoing_qty = #{intoingQty}
-            </if>
-            <if test="intoingAmt != null">
-                AND intoing_amt = #{intoingAmt}
-            </if>
-            <if test="intoQty != null">
-                AND into_qty = #{intoQty}
-            </if>
-            <if test="intoAmt != null">
-                AND into_amt = #{intoAmt}
+            <if test="outStatus != null and outStatus != ''">
+                AND out_status = #{outStatus}
             </if>
             <if test="remarks != null and remarks != ''">
                 AND remarks = #{remarks}
@@ -217,20 +205,8 @@
             <if test="nonStdCode != null and nonStdCode != ''">
                 AND tpiri.non_std_code = #{nonStdCode}
             </if>
-            <if test="intoStatus != null and intoStatus != ''">
-                AND tpiri.into_status = #{intoStatus}
-            </if>
-            <if test="intoingQty != null">
-                AND tpiri.intoing_qty = #{intoingQty}
-            </if>
-            <if test="intoingAmt != null">
-                AND tpiri.intoing_amt = #{intoingAmt}
-            </if>
-            <if test="intoQty != null">
-                AND tpiri.into_qty = #{intoQty}
-            </if>
-            <if test="intoAmt != null">
-                AND tpiri.into_amt = #{intoAmt}
+            <if test="outStatus != null and outStatus != ''">
+                AND tpiri.out_status = #{outStatus}
             </if>
             <if test="remarks != null and remarks != ''">
                 AND tpiri.remarks = #{remarks}
@@ -241,7 +217,6 @@
             <if test="cpId != null">
                 AND tpiri.cp_id = #{cpId}
             </if>
-
         </where>
     </sql>
 
@@ -281,7 +256,7 @@
     <select id="selectById" resultMap="BaseResultMapResponse">
         SELECT
         <include refid="Base_Column_List_Join"/>
-        FROM t_psi_into_return_item tpiri
+        FROM dkic_b.t_psi_into_return_item tpiri
         WHERE tpiri.item_id = #{itemId}::uuid
     </select>
 
@@ -289,7 +264,7 @@
     <select id="selectByIdForUpdate" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List"/>
-        FROM t_psi_into_return_item
+        FROM dkic_b.t_psi_into_return_item
         WHERE item_id = #{id}
         for update
     </select>
@@ -298,7 +273,7 @@
     <select id="selectByIdsForUpdate" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List"/>
-        FROM t_psi_into_return_item
+        FROM dkic_b.t_psi_into_return_item
         <include refid="idsForeach"/>
         for update
     </select>
@@ -361,4 +336,77 @@
             )
         </foreach>
     </insert>
+
+    <!-- 根据id修改-->
+    <update id="updateById" parameterType="com.dk.mdm.model.pojo.ivt.IntoReturnItem">
+        update dkic_b.t_psi_into_return_item
+        <set>
+            <if test=" et!=null and et.returnId != null">
+                return_id = #{et.returnId,typeHandler=UuidTypeHandler},
+            </if>
+            <if test=" et!=null and et.intoId != null">
+                into_id = #{et.intoId,typeHandler=UuidTypeHandler},
+            </if>
+            <if test=" et!=null and et.intoItemId != null">
+                into_item_id = #{et.intoItemId,typeHandler=UuidTypeHandler},
+            </if>
+            <if test=" et!=null and et.purId != null">
+                pur_id = #{et.purId,typeHandler=UuidTypeHandler},
+            </if>
+            <if test=" et!=null and et.purItemId != null">
+                pur_item_id = #{et.purItemId,typeHandler=UuidTypeHandler},
+            </if>
+            <if test=" et!=null and et.itemIndex != null">
+                item_index = #{et.itemIndex,jdbcType=INTEGER},
+            </if>
+            <if test=" et!=null and et.skuId != null">
+                sku_id = #{et.skuId,typeHandler=UuidTypeHandler},
+            </if>
+            <if test=" et!=null and et.itemQty != null">
+                item_qty = #{et.itemQty,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.priceStd != null">
+                price_std = #{et.priceStd,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.amtStd != null">
+                amt_std = #{et.amtStd,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.priceReturn != null">
+                price_return = #{et.priceReturn,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.itemAmt != null">
+                item_amt = #{et.itemAmt,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.nonStdCode != null">
+                non_std_code = #{et.nonStdCode,jdbcType=VARCHAR},
+            </if>
+            <if test=" et!=null and et.intoStatus != null">
+                into_status = #{et.intoStatus,jdbcType=VARCHAR},
+            </if>
+            <if test=" et!=null and et.outoingQty != null">
+                outoing_qty = outoing_qty + #{et.outoingQty,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.outoingAmt != null">
+                outoing_amt = outoing_amt + #{et.outoingAmt,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.outQty != null">
+                out_qty = out_qty + #{outQty,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.outAmt != null">
+                out_amt = out_amt + #{et.outAmt,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.remarks != null">
+                remarks = #{et.remarks,jdbcType=VARCHAR},
+            </if>
+            <if test=" et!=null and et.flgValid != null">
+                flg_valid = #{et.flgValid,jdbcType=BOOLEAN},
+            </if>
+            <if test=" et!=null and et.cpId != null">
+                cp_id = #{et.cpId,jdbcType=INTEGER},
+            </if>
+        </set>
+        where item_id = #{et.itemId,typeHandler=UuidTypeHandler}
+        and  item_qty >= (out_qty + outoing_qty)
+    </update>
+
 </mapper>

+ 8 - 0
src/main/java/com/dk/mdm/mapper/ivt/IntoReturnMapper.java

@@ -2,6 +2,7 @@ package com.dk.mdm.mapper.ivt;
 
 import com.dk.mdm.model.pojo.ivt.IntoReturn;
 import com.dk.common.mapper.BaseMapper;
+import com.dk.mdm.model.pojo.pur.Purchase;
 import com.dk.mdm.model.query.ivt.IntoReturnQuery;
 import com.dk.mdm.model.query.pur.PurchaseQuery;
 import com.dk.mdm.model.response.ivt.IntoReturnItemResponse;
@@ -41,5 +42,12 @@ public interface IntoReturnMapper extends BaseMapper<IntoReturn>{
      * @author : 寇珊珊
      */
     IntoReturnResponse selectById(@Param("returnId") String returnId);
+
+    /**
+     * @desc   : 根据Id修改
+     * @date   : 2024/3/12 9:32
+     * @author : 寇珊珊
+     */
+    int updateById(IntoReturn intoReturn);
 }
 

+ 103 - 0
src/main/java/com/dk/mdm/mapper/ivt/IntoReturnMapper.xml

@@ -495,4 +495,107 @@
         FROM dkic_b.t_psi_into_return
         where return_id =#{returnId}::uuid
     </select>
+
+    <!-- 根据id修改-->
+    <update id="updateById" parameterType="com.dk.mdm.model.pojo.ivt.IntoReturn">
+        update dkic_b.t_psi_into_return
+        <set>
+            <if test=" et!=null and et.returnNo != null">
+                return_no = #{et.returnNo,jdbcType=VARCHAR},
+            </if>
+            <if test=" et!=null and et.returnType != null">
+                return_type = #{et.returnType,jdbcType=VARCHAR},
+            </if>
+            <if test=" et!=null and et.intoId != null">
+                into_id = #{et.intoId,typeHandler=UuidTypeHandler},
+            </if>
+            <if test=" et!=null and et.purId != null">
+                pur_id = #{et.purId,typeHandler=UuidTypeHandler},
+            </if>
+            <if test=" et!=null and et.intoNo != null">
+                into_no = #{et.intoNo,jdbcType=VARCHAR},
+            </if>
+            <if test=" et!=null and et.purNo != null">
+                pur_no = #{et.purNo,jdbcType=VARCHAR},
+            </if>
+            <if test=" et!=null and et.orgId != null">
+                org_id = #{et.orgId,typeHandler=UuidTypeHandler},
+            </if>
+            <if test=" et!=null and et.staffId != null">
+                staff_id = #{et.staffId,typeHandler=UuidTypeHandler},
+            </if>
+            <if test=" et!=null and et.supId != null">
+                sup_id = #{et.supId,typeHandler=UuidTypeHandler},
+            </if>
+            <if test=" et!=null and et.contactName != null">
+                contact_name = #{et.contactName,jdbcType=VARCHAR},
+            </if>
+            <if test=" et!=null and et.contactPhone != null">
+                contact_phone = #{et.contactPhone,jdbcType=VARCHAR},
+            </if>
+            <if test=" et!=null and et.deliveryDate != null">
+                delivery_date = #{et.deliveryDate,jdbcType=DATE},
+            </if>
+            <if test=" et!=null and et.sumQuantity != null">
+                sum_quantity = #{et.sumQuantity,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.sumStandard != null">
+                sum_standard = #{et.sumStandard,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.sumAmount != null">
+                sum_amount = #{et.sumAmount,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.saleDiscount != null">
+                sale_discount = #{et.saleDiscount,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.returnStatus != null">
+                return_status = #{et.returnStatus,jdbcType=VARCHAR},
+            </if>
+            <if test=" et!=null and et.outStatus != null">
+                out_status = #{et.outStatus,jdbcType=VARCHAR},
+            </if>
+            <if test=" et!=null and et.outingQty != null">
+                outing_qty = outing_qty + #{et.outingQty,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.outingAmt != null">
+                outing_amt = outing_amt + #{et.outingAmt,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.outQty != null">
+                out_qty = out_qty + #{et.outQty,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.outAmt != null">
+                out_amt = out_amt + #{et.outAmt,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.amtPayable != null">
+                amt_payable = #{et.amtPayable,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.amtHandle != null">
+                amt_handle = #{et.amtHandle,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.amtResidue != null">
+                amt_residue = #{et.amtResidue,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.remarks != null">
+                remarks = #{et.remarks,jdbcType=VARCHAR},
+            </if>
+            <if test=" et!=null and et.annexPaths != null">
+                annex_paths = #{et.annexPaths,typeHandler=JsonTypeHandler},
+            </if>
+            <if test=" et!=null and et.makeStaff != null">
+                make_staff = #{et.makeStaff,jdbcType=OTHER},
+            </if>
+            <if test=" et!=null and et.makeTime != null">
+                make_time = #{et.makeTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test=" et!=null and et.flgValid != null">
+                flg_valid = #{et.flgValid,jdbcType=BOOLEAN},
+            </if>
+            <if test=" et!=null and et.cpId != null">
+                cp_id = #{et.cpId,jdbcType=INTEGER},
+            </if>
+        </set>
+        where return_id = #{et.returnId,typeHandler=UuidTypeHandler}
+        and  sum_quantity >= (out_qty + outing_qty)
+    </update>
+
 </mapper>

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

@@ -33,5 +33,12 @@ public interface OutboundItemMapper extends BaseMapper<OutboundItem>{
      * @date   : 2024-03-09 11:36
      */
     List<OutboundItem> selectByZIdForUpdate(String id);
+
+    /**
+     * @desc   : 根据条件进行查询(出库编辑用)
+     * @author : 付斌
+     * @date   : 2024-03-12 9:36
+     */
+    List<OutboundItemResponse> selectByCondForOutEdit(String id);
 }
 

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

@@ -290,4 +290,39 @@
             )
         </foreach>
     </insert>
+
+    <!-- 根据条件进行查询(出库编辑用) -->
+    <select id="selectByCondForOutEdit" resultMap="BaseResultMapResponse">
+        SELECT t.item_id,
+               t.out_id,
+               t.from_item_id,
+               t.from_id,
+               t.item_index,
+               t.sku_id,
+               tmgs.sku_code                                  as "skuCode",
+               tmgs.sku_model                                 as "skuModel",
+               tmgs.sku_name                                  as "skuName",
+               tpoi.item_qty                                  as "orderQty",
+               tpoi.item_qty - tpoi.outing_qty + t.outing_qty as "canOutingQty",
+               t.outing_qty,
+               t.price_out,
+               t.outing_amt,
+               t.out_qty,
+               t.out_amt,
+               t.non_std_code,
+               t.remarks,
+               t.inv_id,
+               tpi.wh_id                                      as "whId",
+               tpi.inv_qty                                    as "invQty",
+               tpi.usable_qty                                 as "usableQty",
+               tmw.wh_name                                    as "whName"
+        FROM t_psi_outbound_item as t
+                 left join dkic_b.t_psi_order_item as tpoi on tpoi.item_id = t.from_item_id
+                 left join dkic_b.t_mst_goods_sku tmgs on tpoi.sku_id = tmgs.sku_id
+                 left join dkic_b.t_psi_inventory as tpi on tpi.inv_id = t.inv_id
+                 left join dkic_b.t_mst_warehouse as tmw on tmw.wh_id = tpi.wh_id
+        where t.flg_valid
+          and t.out_id = #{id}::uuid
+        order by t.item_index
+    </select>
 </mapper>

+ 57 - 5
src/main/java/com/dk/mdm/mapper/ivt/OutboundMapper.xml

@@ -248,11 +248,63 @@
     </select>
 
     <!-- 根据主键查询表t_psi_outbound的一行数据 -->
-    <select id="selectById" resultMap="BaseResultMap">
-        SELECT
-        <include refid="Base_Column_List"/>
-        FROM t_psi_outbound
-        WHERE out_id = #{outId}::uuid
+    <select id="selectById" resultMap="BaseResultMapResponse">
+        SELECT t.out_id,
+               t.out_no,
+               t.out_type,
+               t.from_id,
+               t.from_no,
+               t.from_no                                         as "orderNo",
+               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",
+               tmc.contact_phone                                 as "contactPhone",
+               tmc.address_full                                  as "addressFull",
+               tmdd.data_value                                   as "cusFromName",
+               tpo.address_area,
+               tpo.address_name,
+               tpo.address_no,
+               tpo.address_gcj02,
+               tpo.address_full,
+               tpo.contact_name,
+               tpo.contact_phone,
+               tpo.sales_channel,
+               tmsc.channel_name                                 as "channelName",
+               t.sup_id,
+               t.out_status,
+               sys.f_get_name_i18n(tdk1.kind_name_i18n, #{i18n}) as "outStatusName",
+               t.outing_qty,
+               t.outing_amt,
+               t.out_qty,
+               t.out_amt,
+               t.return_qty,
+               t.return_amt,
+               t.out_date,
+               t.remarks,
+               t.annex_paths,
+               t.make_staff,
+               makestaff.staff_name                              as "makeStaffName",
+               t.make_time,
+               t.receivable_id,
+               t.payable_id,
+               t.cp_id,
+               t.flg_valid
+        FROM t_psi_outbound as t
+                 left join dkic_b.t_psi_order as tpo on tpo.order_id = t.from_id
+                 left join dkic_b.t_mst_sale_channel tmsc on tmsc.channel_id = tpo.sales_channel
+                 left join dkic_b.t_mst_org tmo on tmo.org_id = t.org_id
+                 left join dkic_b.t_mst_staff tms on tms.staff_id = t.staff_id
+                 left join dkic_b.t_mst_staff as makestaff on makestaff.staff_id = t.make_staff
+                 left join dkic_b.t_mst_customer tmc on tmc.cus_id = t.cus_id
+                 left join dkic_b.t_mst_dictionary_data tmdd on tmdd.data_id = tmc.cus_from
+                 left join sys.t_data_kind as tdk1 on tdk1.kind_code = t.out_status
+        WHERE t.out_id = #{id}::uuid
     </select>
 
     <!-- 根据主键锁定表t_psi_outbound的一行数据 -->

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

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

+ 9 - 0
src/main/java/com/dk/mdm/mapper/pur/PurchaseItemMapper.java

@@ -1,6 +1,7 @@
 package com.dk.mdm.mapper.pur;
 
 import com.dk.mdm.model.pojo.ivt.InboundItem;
+import com.dk.mdm.model.pojo.pur.Purchase;
 import com.dk.mdm.model.pojo.pur.PurchaseItem;
 import com.dk.common.mapper.BaseMapper;
 import com.dk.mdm.model.query.pur.PurchaseItemQuery;
@@ -47,5 +48,13 @@ public interface PurchaseItemMapper extends BaseMapper<PurchaseItem>{
      */
     int  updateAmount(PurchaseItem purchaseItem);
 
+
+    /**
+     * @desc   : 根据Id修改
+     * @date   : 2024/3/12 9:32
+     * @author : 寇珊珊
+     */
+    int updateById(PurchaseItem purchaseItem);
+
 }
 

+ 70 - 0
src/main/java/com/dk/mdm/mapper/pur/PurchaseItemMapper.xml

@@ -357,4 +357,74 @@
         </set>
         where item_id = #{itemId}::uuid
     </update>
+
+    <!-- 根据id修改-->
+    <update id="updateById" parameterType="com.dk.mdm.model.pojo.pur.PurchaseItem">
+        update dkic_b.t_psi_purchase_item
+        <set>
+            <if test=" et!=null and et.purId != null">
+                pur_id = #{et.purId,typeHandler=UuidTypeHandler},
+            </if>
+            <if test=" et!=null and et.itemIndex != null">
+                item_index = #{et.itemIndex,jdbcType=INTEGER},
+            </if>
+            <if test=" et!=null and et.skuId != null">
+                sku_id = #{et.skuId,typeHandler=UuidTypeHandler},
+            </if>
+            <if test=" et!=null and et.itemQty != null">
+                item_qty = #{et.itemQty,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.priceStd != null">
+                price_std = #{et.priceStd,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.amtStd != null">
+                amt_std = #{et.amtStd,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.pricePur != null">
+                price_pur = #{et.pricePur,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.itemAmt != null">
+                item_amt = #{et.itemAmt,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.priceDiscount != null">
+                price_discount = #{et.priceDiscount,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.nonStdCode != null">
+                non_std_code = #{et.nonStdCode,jdbcType=VARCHAR},
+            </if>
+            <if test=" et!=null and et.intoStatus != null">
+                into_status = #{et.intoStatus,jdbcType=VARCHAR},
+            </if>
+            <if test=" et!=null and et.intoingQty != null">
+                intoing_qty = intoing_qty +  #{et.intoingQty,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.intoingAmt != null">
+                intoing_amt = intoing_amt + #{et.intoingAmt,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.intoQty != null">
+                into_qty = into_qty + #{et.intoQty,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.intoAmt != null">
+                into_amt = into_amt + #{et.intoAmt,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.returnQty != null">
+                return_qty = #{et.returnQty,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.returnAmt != null">
+                return_amt = #{et.returnAmt,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.remarks != null">
+                remarks = #{et.remarks,jdbcType=VARCHAR},
+            </if>
+            <if test=" et!=null and et.flgValid != null">
+                flg_valid = #{et.flgValid,jdbcType=BOOLEAN},
+            </if>
+            <if test=" et!=null and et.cpId != null">
+                cp_id = #{et.cpId,jdbcType=INTEGER},
+            </if>
+        </set>
+        where item_id = #{et.itemId,typeHandler=UuidTypeHandler}
+        and  item_qty >= (into_qty + intoing_qty)
+    </update>
+
 </mapper>

+ 7 - 0
src/main/java/com/dk/mdm/mapper/pur/PurchaseMapper.java

@@ -60,5 +60,12 @@ public interface PurchaseMapper extends BaseMapper<Purchase>{
     int updateAmount(Purchase purchase);
 
     Purchase selectPurchaseByRighting(PurchaseQuery purchaseQuery);
+
+    /**
+     * @desc   : 根据Id修改
+     * @date   : 2024/3/12 9:32
+     * @author : 寇珊珊
+     */
+    int updateById(Purchase purchase);
 }
 

+ 100 - 0
src/main/java/com/dk/mdm/mapper/pur/PurchaseMapper.xml

@@ -523,4 +523,104 @@
         </where>
     </select>
 
+    <!-- 根据id修改-->
+    <update id="updateById" parameterType="com.dk.mdm.model.pojo.pur.Purchase">
+        update dkic_b.t_psi_purchase
+        <set>
+            <if test=" et!=null and et.purNo != null">
+                pur_no = #{et.purNo,jdbcType=VARCHAR},
+            </if>
+            <if test=" et!=null and et.purType != null">
+                pur_type = #{et.purType,jdbcType=VARCHAR},
+            </if>
+            <if test=" et!=null and et.orgId != null">
+                org_id = #{et.orgId,typeHandler=UuidTypeHandler},
+            </if>
+            <if test=" et!=null and et.staffId != null">
+                staff_id = #{et.staffId,typeHandler=UuidTypeHandler},
+            </if>
+            <if test=" et!=null and et.supId != null">
+                sup_id = #{et.supId,typeHandler=UuidTypeHandler},
+            </if>
+            <if test=" et!=null and et.contactName != null">
+                contact_name = #{et.contactName,jdbcType=VARCHAR},
+            </if>
+            <if test=" et!=null and et.contactPhone != null">
+                contact_phone = #{et.contactPhone,jdbcType=VARCHAR},
+            </if>
+            <if test=" et!=null and et.pickupDate != null">
+                pickup_date = #{et.pickupDate,jdbcType=DATE},
+            </if>
+            <if test=" et!=null and et.sumQuantity != null">
+                sum_quantity = #{et.sumQuantity,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.sumStandard != null">
+                sum_standard = #{et.sumStandard,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.sumAmount != null">
+                sum_amount = #{et.sumAmount,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.purDiscount != null">
+                pur_discount = #{et.purDiscount,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.purStatus != null">
+                pur_status = #{et.purStatus,jdbcType=VARCHAR},
+            </if>
+            <if test=" et!=null and et.intoStatus != null">
+                into_status = #{et.intoStatus,jdbcType=VARCHAR},
+            </if>
+            <if test=" et!=null and et.intoingQty != null">
+                intoing_qty = intoing_qty +  #{et.intoingQty,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.intoingAmt != null">
+                intoing_amt = intoing_amt + #{et.intoingAmt,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.intoQty != null">
+                into_qty = into_qty +  #{et.intoQty,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.intoAmt != null">
+                into_amt = into_amt +  #{et.intoAmt,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.returnQty != null">
+                return_qty = #{et.returnQty,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.returnAmt != null">
+                return_amt = #{et.returnAmt,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.amtPayable != null">
+                amt_payable = #{et.amtPayable,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.amtHandle != null">
+                amt_handle = #{et.amtHandle,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.amtResidue != null">
+                amt_residue = #{et.amtResidue,jdbcType=NUMERIC},
+            </if>
+            <if test=" et!=null and et.remarks != null">
+                remarks = #{et.remarks,jdbcType=VARCHAR},
+            </if>
+            <if test=" et!=null and et.annexPaths != null">
+                annex_paths = #{et.annexPaths,typeHandler=JsonTypeHandler},
+            </if>
+            <if test=" et!=null and et.makeStaff != null">
+                make_staff = #{et.makeStaff,jdbcType=OTHER},
+            </if>
+            <if test=" et!=null and et.makeTime != null">
+                make_time = #{et.makeTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test=" et!=null and et.flgValid != null">
+                flg_valid = #{et.flgValid,jdbcType=BOOLEAN},
+            </if>
+            <if test=" et!=null and et.cpId != null">
+                cp_id = #{et.cpId,jdbcType=INTEGER},
+            </if>
+            <if test=" et!=null and et.whId != null">
+                wh_id = #{et.whId,typeHandler=UuidTypeHandler},
+            </if>
+        </set>
+        where pur_id = #{et.purId,typeHandler=UuidTypeHandler}
+        and  sum_quantity >= (into_qty + intoing_qty)
+    </update>
+
+
 </mapper>

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

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

@@ -287,4 +287,39 @@
             )
         </foreach>
     </insert>
+
+    <!-- 根据条件进行查询(退货编辑用) -->
+    <select id="selectByCondForReturnEdit" resultMap="BaseResultMapResponse">
+        SELECT t.item_id,
+               t.out_id,
+               t.from_item_id,
+               t.from_id,
+               t.item_index,
+               t.sku_id,
+               tmgs.sku_code                                  as "skuCode",
+               tmgs.sku_model                                 as "skuModel",
+               tmgs.sku_name                                  as "skuName",
+               tpoi.item_qty                                  as "orderQty",
+               tpoi.item_qty - tpoi.outing_qty + t.outing_qty as "canOutingQty",
+               t.outing_qty,
+               t.price_out,
+               t.outing_amt,
+               t.out_qty,
+               t.out_amt,
+               t.non_std_code,
+               t.remarks,
+               t.inv_id,
+               tpi.wh_id                                      as "whId",
+               tpi.inv_qty                                    as "invQty",
+               tpi.usable_qty                                 as "usableQty",
+               tmw.wh_name                                    as "whName"
+        FROM t_psi_outbound_item as t
+                 left join dkic_b.t_psi_order_item as tpoi on tpoi.item_id = t.from_item_id
+                 left join dkic_b.t_mst_goods_sku tmgs on tpoi.sku_id = tmgs.sku_id
+                 left join dkic_b.t_psi_inventory as tpi on tpi.inv_id = t.inv_id
+                 left join dkic_b.t_mst_warehouse as tmw on tmw.wh_id = tpi.wh_id
+        where t.flg_valid
+          and t.out_id = #{id}::uuid
+        order by t.item_index
+    </select>
 </mapper>

+ 21 - 0
src/main/java/com/dk/mdm/model/response/ivt/OutboundItemResponse.java

@@ -296,6 +296,27 @@ public class OutboundItemResponse extends PageInfo<OutboundItemResponse> impleme
 
     @ApiModelProperty(value = "出库状态")
     private String outStatusName;
+
+    @ApiModelProperty(value = "订单数量")
+    private BigDecimal orderQty;
+
+    @ApiModelProperty(value = "可出库数量")
+    private BigDecimal canOutingQty;
+
+    @ApiModelProperty(value = "仓库ID")
+    private String whId;
+
+    @ApiModelProperty(value = "库存数量")
+    private BigDecimal invQty;
+
+    @ApiModelProperty(value = "可用量")
+    private BigDecimal usableQty;
+
+    @ApiModelProperty(value = "出库明细ID")
+    private String outItemId;
+
+    @ApiModelProperty(value = "订单明细ID")
+    private String orderItemId;
     /*
      * 相关属性
      * @TableField(exist = false)

+ 19 - 8
src/main/java/com/dk/mdm/model/response/ivt/OutboundResponse.java

@@ -347,21 +347,32 @@ public class OutboundResponse extends PageInfo<OutboundResponse> implements Seri
     @ApiModelProperty(value = "客户来源名称")
     private String cusFromName;
 
+    @ApiModelProperty(value = "销售渠道")
+    private String channelName;
+
     @ApiModelProperty(value = "制单员")
     private String makeStaffName;
 
     @ApiModelProperty(value = "出库状态")
     private String outStatusName;
 
-    /*
-     * 相关属性
-     * @TableField(exist = false)
-     */
+    @ApiModelProperty(value = "行政区划 (a1:省 a2:市 a3:区)")
+    private JSONObject addressArea;
 
-    /*
-     * 关联属性 + 查询条件
-     * @TableField(exist = false)
-     */
+    @ApiModelProperty(value = "小区或POI")
+    private String addressName;
+
+    @ApiModelProperty(value = "门牌号")
+    private String addressNo;
+
+    @ApiModelProperty(value = "地址坐标(gcj02) (LAT:纬度的值 LON:经度的值)")
+    private JSONObject addressGcj02;
+
+    @ApiModelProperty(value = "联系人")
+    private String contactName;
+
+    @ApiModelProperty(value = "销售渠道")
+    private String salesChannel;
 
 
     private static final long serialVersionUID = 1L;

+ 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 - 55
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;
@@ -73,25 +75,12 @@ public class InboundSaleReturnService extends BaseService<Inbound> {
     private InboundItemConvert inboundItemConvert;
 
     @Autowired
-    private PurchaseMapper purchaseMapper;
-
-    @Autowired
-    private PurchaseItemMapper purchaseItemMapper;
-
-    @Autowired
     private IntoReturnMapper intoReturnMapper;
 
     @Autowired
-    private IntoReturnConvert intoReturnConvert;
-
-    @Autowired
     private IntoReturnItemMapper intoReturnItemMapper;
 
     @Autowired
-    private IntoReturnItemConvert intoReturnItemConvert;
-
-
-    @Autowired
     private CommonService commonService;
 
 
@@ -150,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
 
@@ -204,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
 
@@ -287,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
             }
@@ -323,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
@@ -368,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
 
@@ -406,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
 
@@ -439,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
 

+ 18 - 7
src/main/java/com/dk/mdm/service/ivt/OutboundService.java

@@ -191,7 +191,7 @@ public class OutboundService extends BaseService<Outbound> {
         OutboundItem outboundItemForUpdate;
 
         // 编辑出库明细
-        List<OutboundItemVO> editOutboundItemVOList = outboundVO.getItemList().stream().filter(it -> it.getItemId() != null).collect(Collectors.toList());
+        List<OutboundItemVO> editOutboundItemVOList = outboundVO.getItemList();
         for (OutboundItemVO outboundItemVO : editOutboundItemVOList) {
             // 出库中数量不能小于出库数量
             if (outboundItemVO.getOutingQty().compareTo(outboundItemVO.getOutQty()) == -1) {
@@ -241,9 +241,13 @@ public class OutboundService extends BaseService<Outbound> {
      * @date : 2024-03-08 16:38
      */
     public ResponseResultVO<?> invalid(String id) {
-        Outbound outbound = outboundMapper.selectByIdForUpdate(id);
+        Outbound outboundForUpdate  = outboundMapper.selectByIdForUpdate(id);
+        // 并发校验
+        if(!outboundForUpdate.getFlgValid()){
+            throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISFLGVALID_FALSE.getMessage());
+        }
         // 如果退货数量不是0,不能作废
-        if (outbound.getReturnQty().compareTo(BigDecimal.ZERO) != 0) {
+        if (outboundForUpdate.getReturnQty().compareTo(BigDecimal.ZERO) != 0) {
             throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISEXISTS_AFTER_OPERATE.getMessage());
         }
 
@@ -257,11 +261,14 @@ public class OutboundService extends BaseService<Outbound> {
             orderItemUpdate.setOutingQty(orderItemForUpdate.getOutingQty().subtract(outboundItemForUpdate.getOutingQty()))
                     .setOutingAmt(orderItemForUpdate.getOutingAmt().subtract(outboundItemForUpdate.getOutingAmt()))
                     .setItemId(orderItemForUpdate.getItemId());
+            if(orderItemUpdate.getOutingQty().compareTo(BigDecimal.ZERO) == 0){
+                orderItemUpdate.setOutStatus(Constant.OutStatus.DAICHUKU.getName());
+            }
             orderItemService.updateByUuid(orderItemUpdate);
         }
 
         // 计算订单明细的出库中数量,金额合计
-        List<OrderItem> orderItemList = orderItemMapper.selectByZIdForUpdate(outbound.getFromId());
+        List<OrderItem> orderItemList = orderItemMapper.selectByZIdForUpdate(outboundForUpdate.getFromId());
         OrderItem orderItem = orderItemList.stream().reduce((x, y) -> {
             OrderItem item = new OrderItem();
             item.setOutingQty(x.getOutingQty().add(y.getOutingQty()));
@@ -270,7 +277,11 @@ public class OutboundService extends BaseService<Outbound> {
         }).get();
         // 更新订单上的出库中数量,金额
         Order orderUpdate = new Order();
-        orderUpdate.setOutingQty(orderItem.getOutingQty()).setOutingAmt(orderItem.getOutingAmt()).setOrderId(outbound.getFromId());
+        orderUpdate.setOutingQty(orderItem.getOutingQty()).setOutingAmt(orderItem.getOutingAmt()).setOrderId(outboundForUpdate.getFromId());
+        if(orderUpdate.getOutingQty().compareTo(BigDecimal.ZERO) == 0){
+            orderUpdate.setOutStatus(Constant.OutStatus.DAICHUKU.getName());
+        }
+
         orderService.updateByUuid(orderUpdate);
 
         // 作废
@@ -292,8 +303,8 @@ public class OutboundService extends BaseService<Outbound> {
         outboundInfo.put("outbound", outboundResponse);
 
         // 商品明细
-        List<OutboundItemResponse> outboundItemResponse = outboundItemMapper.selectByCond(new OutboundItemQuery().setOutId(id));
-        outboundInfo.put("outboundItem", outboundItemResponse);
+        List<OutboundItemResponse> outboundItemResponseList = outboundItemMapper.selectByCondForOutEdit(id);
+        outboundInfo.put("outboundItem", outboundItemResponseList);
         return ResponseResultUtil.success(outboundInfo);
     }
 

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

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

@@ -204,6 +204,11 @@ public class OrderService extends BaseService<Order> {
      */
     public ResponseResultVO<?> invalid(String id) {
         Order orderForUpdate = orderMapper.selectByIdForUpdate(id);
+        // 并发校验
+        if(!orderForUpdate.getFlgValid()){
+            throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISFLGVALID_FALSE.getMessage());
+        }
+
         // 如果出库中数量不是0,不能作废
         if (orderForUpdate.getOutingQty().compareTo(BigDecimal.ZERO) != 0) {
             throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISEXISTS_AFTER_OPERATE.getMessage());

+ 23 - 0
src/main/java/com/dk/mdm/service/sale/OutReturnService.java

@@ -27,6 +27,8 @@ import com.dk.common.service.BaseService;
 import com.dk.common.mapper.BaseMapper;
 import com.dk.mdm.model.query.sale.OutReturnItemQuery;
 import com.dk.mdm.model.query.sale.OutReturnQuery;
+import com.dk.mdm.model.response.ivt.OutboundItemResponse;
+import com.dk.mdm.model.response.ivt.OutboundResponse;
 import com.dk.mdm.model.response.sale.OutReturnItemResponse;
 import com.dk.mdm.model.response.sale.OutReturnResponse;
 import com.dk.mdm.model.vo.sale.OutReturnItemVO;
@@ -220,6 +222,11 @@ public class OutReturnService extends BaseService<OutReturn> {
      */
     public ResponseResultVO<?> invalid(String id) {
         OutReturn outReturnForUpdate = outReturnMapper.selectByIdForUpdate(id);
+        // 并发校验
+        if(!outReturnForUpdate.getFlgValid()){
+            throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISFLGVALID_FALSE.getMessage());
+        }
+
         // 如果入库数量不是0,不能作废
         if (outReturnForUpdate.getIntoQty().compareTo(BigDecimal.ZERO) != 0) {
             throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISEXISTS_AFTER_OPERATE.getMessage());
@@ -284,4 +291,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> outReturnInfo = new HashMap<>();
+        OutReturnResponse outReturnResponse = outReturnMapper.selectById(id);
+        outReturnInfo.put("outReturn", outReturnResponse);
+
+        // 商品明细
+        List<OutReturnItemResponse> outReturnItemResponseList = outReturnItemMapper.selectByCondForReturnEdit(id);
+        outReturnInfo.put("outReturnItem", outReturnItemResponseList);
+        return ResponseResultUtil.success(outReturnInfo);
+    }
 }