Jelajahi Sumber

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

# Conflicts:
#	src/main/java/com/dk/mdm/mapper/ivt/InboundItemMapper.xml
#	src/main/java/com/dk/mdm/mapper/ivt/InboundMapper.xml
#	src/main/java/com/dk/mdm/model/pojo/ivt/OutboundItem.java
#	src/main/java/com/dk/mdm/model/vo/ivt/InboundItemVO.java
#	src/main/java/com/dk/mdm/model/vo/ivt/OutboundItemVO.java
koushanshan 2 tahun lalu
induk
melakukan
c41ce73d43
28 mengubah file dengan 1673 tambahan dan 632 penghapusan
  1. 70 0
      src/main/java/com/dk/mdm/controller/ivt/inboundReturnController.java
  2. 116 79
      src/main/java/com/dk/mdm/controller/ivt/outBound/OutboundController.java
  3. 74 30
      src/main/java/com/dk/mdm/controller/ivt/outBound/OutboundSaleOrderController.java
  4. 63 30
      src/main/java/com/dk/mdm/controller/ivt/outBound/OutboundSaleReturnController.java
  5. 12 0
      src/main/java/com/dk/mdm/controller/pur/PurchaseController.java
  6. 8 0
      src/main/java/com/dk/mdm/mapper/ivt/InboundItemMapper.xml
  7. 21 0
      src/main/java/com/dk/mdm/mapper/ivt/InboundMapper.java
  8. 104 1
      src/main/java/com/dk/mdm/mapper/ivt/InboundMapper.xml
  9. 7 0
      src/main/java/com/dk/mdm/mapper/ivt/OutboundItemMapper.java
  10. 28 0
      src/main/java/com/dk/mdm/mapper/ivt/OutboundItemMapper.xml
  11. 4 0
      src/main/java/com/dk/mdm/mapper/mac/RecPayMapper.xml
  12. 5 5
      src/main/java/com/dk/mdm/mapper/sale/OrderItemMapper.xml
  13. 14 8
      src/main/java/com/dk/mdm/model/pojo/ivt/InboundItem.java
  14. 15 8
      src/main/java/com/dk/mdm/model/pojo/ivt/OutboundItem.java
  15. 14 8
      src/main/java/com/dk/mdm/model/query/ivt/InboundItemQuery.java
  16. 9 8
      src/main/java/com/dk/mdm/model/query/ivt/OutboundItemQuery.java
  17. 16 0
      src/main/java/com/dk/mdm/model/response/ivt/InboundItemResponse.java
  18. 2 5
      src/main/java/com/dk/mdm/model/response/ivt/InboundResponse.java
  19. 16 8
      src/main/java/com/dk/mdm/model/response/ivt/OutboundItemResponse.java
  20. 3 0
      src/main/java/com/dk/mdm/model/response/mac/RecPayResponse.java
  21. 9 8
      src/main/java/com/dk/mdm/model/response/sale/OrderItemResponse.java
  22. 0 6
      src/main/java/com/dk/mdm/model/vo/ivt/InboundItemVO.java
  23. 0 10
      src/main/java/com/dk/mdm/model/vo/ivt/OutboundItemVO.java
  24. 258 0
      src/main/java/com/dk/mdm/service/ivt/InboundReturnService.java
  25. 90 30
      src/main/java/com/dk/mdm/service/ivt/outbound/OutboundSaleOrderService.java
  26. 86 43
      src/main/java/com/dk/mdm/service/ivt/outbound/OutboundSaleReturnService.java
  27. 601 343
      src/main/java/com/dk/mdm/service/ivt/outbound/OutboundService.java
  28. 28 2
      src/main/java/com/dk/mdm/service/pur/PurchaseService.java

+ 70 - 0
src/main/java/com/dk/mdm/controller/ivt/inboundReturnController.java

@@ -0,0 +1,70 @@
+package com.dk.mdm.controller.ivt;
+
+
+import com.dk.common.model.pojo.PageList;
+import com.dk.common.response.ResponseResultVO;
+import com.dk.common.service.BaseService;
+import com.dk.mdm.model.pojo.ivt.Inbound;
+import com.dk.mdm.model.query.ivt.InboundQuery;
+import com.dk.mdm.model.response.ivt.InboundResponse;
+import com.dk.mdm.model.vo.ivt.InboundVO;
+import com.dk.mdm.service.ivt.InboundReturnService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+
+@Api(tags = "采购退货API接口")
+@RestController
+@RequestMapping("/ivt/inbound_return")
+public class inboundReturnController {
+
+    public BaseService<Inbound> getService() {
+        return inboundReturnService;
+    }
+
+    @Autowired
+    private InboundReturnService inboundReturnService;
+    
+    /**
+     * @desc   : 条件查询
+     * @author : 于继渤
+     * @date   : 2024/3/8 10:58
+     */
+    @ApiOperation(
+            value = "分页、关联、条件查询",
+            notes = "分页、关联、条件查询"
+    )
+    @PostMapping({"list_by"})
+    public ResponseResultVO<PageList<InboundResponse>> selectByCond(@RequestBody InboundQuery inboundQuery) {
+        return inboundReturnService.selectByCond(inboundQuery);
+    }
+
+    /**
+     * @desc : 查看来源单据,总单加明细  采购退货用
+     * @author : 于继渤
+     * @date : 2024/3/6 10:36
+     */
+    @PostMapping({"/{id}"})
+    public ResponseResultVO<?> selectById(@PathVariable String id) {
+        return inboundReturnService.selectInboundReturnById(id);
+    }
+
+
+
+    /**
+     * @desc : 新建采购退货
+     * @author : 于继渤
+     * @date : 2023/1/5 9:39
+     */
+    @ApiOperation(value = "新建", notes = "新建")
+    @PostMapping({"insert"})
+    public ResponseResultVO<?> insert(@RequestBody InboundVO inboundVO) {
+        return inboundReturnService.insert(inboundVO);
+    }
+
+
+
+
+}

+ 116 - 79
src/main/java/com/dk/mdm/controller/ivt/outBound/OutboundController.java

@@ -1,24 +1,17 @@
 package com.dk.mdm.controller.ivt.outBound;
 
-import com.dk.common.model.pojo.PageList;
-import com.dk.common.response.ResponseResultVO;
 import com.dk.mdm.model.pojo.ivt.Outbound;
 import com.dk.common.service.BaseService;
-import com.dk.mdm.model.query.ivt.OutboundQuery;
-import com.dk.mdm.model.response.ivt.OutboundResponse;
-import com.dk.mdm.model.vo.ivt.OutboundVO;
-import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import io.swagger.annotations.Api;
 import com.dk.mdm.service.ivt.outbound.OutboundService;
 
-import java.util.Map;
 
 @Api(tags = "出库单API接口")
 @RestController
 @RequestMapping("/ivt/outbound")
-public class OutboundController{
+public class OutboundController {
 
     public BaseService<Outbound> getService() {
         return outboundService;
@@ -27,79 +20,123 @@ public class OutboundController{
     @Autowired
     private OutboundService outboundService;
 
-    /**
-     * @desc : 条件查询
-     * @author : 付斌
-     * @date : 2023/1/9 10:36
-     */
-    @ApiOperation(value = "分页、关联、条件查询", notes = "分页、关联、条件查询")
-    @PostMapping({"list_by"})
-    public ResponseResultVO<PageList<OutboundResponse>> selectByCond(@RequestBody OutboundQuery outboundQuery) {
-        return outboundService.selectByCond(outboundQuery);
-    }
-
-    /**
-     * @desc   : 查询明细信息
-     * @author : 付斌
-     * @date   : 2024-03-07 16:36
-     */
-    @PostMapping({"select_outbound_info_by_id/{id}"})
-    public ResponseResultVO<Map<String, Object>> selectOutboundInfoById(@PathVariable String id) {
-        return outboundService.selectOutboundInfoById(id);
-    }
-
-
-    /**
-     * @desc : 查询明细信息
-     * @author : 付斌
-     * @date : 2024/3/6 10:36
-     */
-    @PostMapping({"/{id}"})
-    public ResponseResultVO selectById(@PathVariable String id) {
-        return outboundService.selectById(id);
-    }
+//    /**
+//     * @desc : 一览页销售出库
+//     * @author : 付斌
+//     * @date : 2023/1/9 10:36
+//     */
+//    @ApiOperation(value = "分页、关联、条件查询", notes = "分页、关联、条件查询")
+//    @PostMapping({"list_by"})
+//    public ResponseResultVO<PageList<OutboundResponse>> selectByCond(@RequestBody OutboundQuery outboundQuery) {
+//        return outboundService.selectByCond(outboundQuery);
+//    }
+//
+//    /**
+//     * @desc : 一览页销售出库明细(货物、附件)
+//     * @author : 付斌
+//     * @date : 2024-03-07 16:36
+//     */
+//    @PostMapping({"select_outbound_info_by_id/{id}"})
+//    public ResponseResultVO<Map<String, Object>> selectOutboundInfoById(@PathVariable String id) {
+//        return outboundService.selectOutboundInfoById(id);
+//    }
+//
+//
+//    /**
+//     * @desc : 查询出库明细(货物、附件)
+//     * @author : 付斌
+//     * @date : 2024/3/6 10:36
+//     */
+//    @PostMapping({"/{id}"})
+//    public ResponseResultVO selectById(@PathVariable String id) {
+//        return outboundService.selectById(id);
+//    }
+//
+//    /**
+//     * @desc : 获取销售出库信息(编辑用)
+//     * @author : 付斌
+//     * @date : 2024-03-03 9:28
+//     */
+//    @ApiOperation(value = "编辑出库单", notes = "编辑出库单")
+//    @PostMapping({"get_outbound_for_update/{id}"})
+//    public ResponseResultVO<?> getOutboundForUpdate(@PathVariable String id) {
+//        return outboundService.getOutboundForUpdate(id);
+//    }
+//
+//    /**
+//     * @desc : 获取销售退货信息(编辑用)
+//     * @author : 付斌
+//     * @date : 2024-03-03 9:28
+//     */
+//    @ApiOperation(value = "编辑出库单", notes = "编辑出库单")
+//    @PostMapping({"get_out_return_for_update/{id}"})
+//    public ResponseResultVO<?> getOutReturnForUpdate(@PathVariable String id) {
+//        return outboundService.getOutReturnForUpdate(id);
+//    }
 
-    /**
-     * @desc : 新建出库单
-     * @author : 付斌
-     * @date : 2023/1/9 10:48
-     */
-    @ApiOperation(value = "新建出库单", notes = "新建出库单")
-    @PostMapping({"insert"})
-    public ResponseResultVO<?> insert(@RequestBody OutboundVO outboundVO) {
-        return outboundService.insert(outboundVO);
-    }
+//    /**
+//     * @desc : 新建销售出库单
+//     * @author : 付斌
+//     * @date : 2023/1/9 10:48
+//     */
+//    @ApiOperation(value = "新建出库单", notes = "新建出库单")
+//    @PostMapping({"insert"})
+//    public ResponseResultVO<?> insert(@RequestBody OutboundVO outboundVO) {
+//        return outboundService.insert(outboundVO);
+//    }
 
-    /**
-     * @desc : 编辑出库单
-     * @author : 付斌
-     * @date : 2023/1/9 10:49
-     */
-    @ApiOperation(value = "编辑出库单", notes = "编辑出库单")
-    @PostMapping({"update"})
-    public ResponseResultVO<Boolean> update(@RequestBody OutboundVO outboundVO) {
-        return outboundService.update(outboundVO);
-    }
+//    /**
+//     * @desc : 编辑销售出库单
+//     * @author : 付斌
+//     * @date : 2023/1/9 10:49
+//     */
+//    @ApiOperation(value = "编辑出库单", notes = "编辑出库单")
+//    @PostMapping({"update"})
+//    public ResponseResultVO<Boolean> update(@RequestBody OutboundVO outboundVO) {
+//        return outboundService.update(outboundVO);
+//    }
 
-    /**
-     * @desc : 作废
-     * @author : 付斌
-     * @date : 2024-03-08 16:36
-     */
-    @ApiOperation(value = "作废", notes = "作废")
-    @PostMapping({"invalid/{id}"})
-    public ResponseResultVO<?> invalid(@PathVariable String id) {
-        return outboundService.invalid(id);
-    }
+//    /**
+//     * @desc : 作废销售出库单
+//     * @author : 付斌
+//     * @date : 2024-03-08 16:36
+//     */
+//    @ApiOperation(value = "作废", notes = "作废")
+//    @PostMapping({"invalid/{id}"})
+//    public ResponseResultVO<?> invalid(@PathVariable String id) {
+//        return outboundService.invalid(id);
+//    }
 
-    /**
-     * @desc   : 获取出库单信息(编辑用)
-     * @author : 付斌
-     * @date   : 2024-03-03 9:28
-     */
-    @ApiOperation(value = "编辑出库单", notes = "编辑出库单")
-    @PostMapping({"get_outbound_for_update/{id}"})
-    public ResponseResultVO<?> getOutboundForUpdate(@PathVariable String id) {
-        return outboundService.getOutboundForUpdate(id);
-    }
+//    /**
+//     * @desc : 新建销售退货出库单
+//     * @author : 付斌
+//     * @date : 2023/1/9 10:48
+//     */
+//    @ApiOperation(value = "新建出库单", notes = "新建出库单")
+//    @PostMapping({"insert_out_return"})
+//    public ResponseResultVO<?> insertOutReturn(@RequestBody OutboundVO outboundVO) {
+//        return outboundService.insertOutReturn(outboundVO);
+//    }
+//
+//    /**
+//     * @desc : 编辑销售退货出库单
+//     * @author : 付斌
+//     * @date : 2023/1/9 10:49
+//     */
+//    @ApiOperation(value = "编辑出库单", notes = "编辑出库单")
+//    @PostMapping({"update_out_return"})
+//    public ResponseResultVO<Boolean> updateOutReturn(@RequestBody OutboundVO outboundVO) {
+//        return outboundService.updateOutReturn(outboundVO);
+//    }
+//
+//    /**
+//     * @desc : 作废销售退货出库单
+//     * @author : 付斌
+//     * @date : 2024-03-08 16:36
+//     */
+//    @ApiOperation(value = "作废", notes = "作废")
+//    @PostMapping({"invalid_out_return/{id}"})
+//    public ResponseResultVO<?> invalidOutReturn(@PathVariable String id) {
+//        return outboundService.invalidOutReturn(id);
+//    }
 }

+ 74 - 30
src/main/java/com/dk/mdm/controller/ivt/outBound/OutboundSaleOrderController.java

@@ -7,6 +7,7 @@ import com.dk.common.service.BaseService;
 import com.dk.mdm.model.pojo.ivt.Outbound;
 import com.dk.mdm.model.query.ivt.OutboundQuery;
 import com.dk.mdm.model.response.ivt.InboundResponse;
+import com.dk.mdm.model.response.ivt.OutboundResponse;
 import com.dk.mdm.model.vo.ivt.OutboundVO;
 import com.dk.mdm.service.ivt.outbound.OutboundSaleOrderService;
 import io.swagger.annotations.Api;
@@ -30,29 +31,6 @@ public class OutboundSaleOrderController {
     @Autowired
     private OutboundSaleOrderService outboundSaleOrderService;
 
-
-    /**
-     * @desc : 条件查询
-     * @date : 2024/3/18 15:23
-     * @author : 寇珊珊
-     */
-    @ApiOperation(value = "条件查询", notes = "条件查询")
-    @PostMapping({"list_by"})
-    public ResponseResultVO<PageList<InboundResponse>> selectByCond(@RequestBody OutboundQuery outboundQuery) {
-        return outboundSaleOrderService.selectByCond(outboundQuery);
-    }
-
-    /**
-     * @desc : 明细信息条件查询
-     * @date : 2024/3/18 15:23
-     * @author : 寇珊珊
-     */
-    @ApiOperation(value = "明细信息条件查询", notes = "明细信息条件查询")
-    @PostMapping({"select_item_info_by_id/{id}"})
-    public ResponseResultVO<Map<String, Object>> selectOutBoundSaleOrderItemInfoById(@PathVariable String id) {
-        return outboundSaleOrderService.selectOutBoundSaleOrderItemInfoById(id);
-    }
-
     /**
      * @desc :  销售出库新建
      * @date : 2024/3/18 15:22
@@ -95,15 +73,81 @@ public class OutboundSaleOrderController {
         return outboundSaleOrderService.saleOrderOutboundCancel(outboundVO);
     }
 
+    /********************************************** 销售出库查询相关方法begin *************************************/
     /**
-     * @desc : 获取单据信息(编辑用)
-     * @date : 2024/3/18 15:22
-     * @author : 寇珊珊
+     * @desc : 一览页销售出库
+     * @author : 付斌
+     * @date : 2023/1/9 10:36
      */
-    @ApiOperation(value = "获取单据信息(编辑用)", notes = "获取单据信息(编辑用)")
-    @PostMapping({"select_by_update/{id}"})
-    public ResponseResultVO<?> selectByUpdate(@PathVariable String id) {
-        return outboundSaleOrderService.selectByUpdate(id);
+    @ApiOperation(value = "分页、关联、条件查询", notes = "分页、关联、条件查询")
+    @PostMapping({"list_by"})
+    public ResponseResultVO<PageList<OutboundResponse>> selectByCond(@RequestBody OutboundQuery outboundQuery) {
+        return outboundSaleOrderService.selectByCond(outboundQuery);
+    }
+
+    /**
+     * @desc : 一览页销售出库明细(货物、附件)
+     * @author : 付斌
+     * @date : 2024-03-07 16:36
+     */
+    @PostMapping({"select_outbound_info_by_id/{id}"})
+    public ResponseResultVO<Map<String, Object>> selectOutboundInfoById(@PathVariable String id) {
+        return outboundSaleOrderService.selectOutboundInfoById(id);
     }
 
+    /**
+     * @desc : 获取销售出库信息(编辑用)
+     * @author : 付斌
+     * @date : 2024-03-03 9:28
+     */
+    @ApiOperation(value = "编辑出库单", notes = "编辑出库单")
+    @PostMapping({"get_outbound_for_update/{id}"})
+    public ResponseResultVO<?> getOutboundForUpdate(@PathVariable String id) {
+        return outboundSaleOrderService.getOutboundForUpdate(id);
+    }
+
+    /**
+     * @desc : 查询出库明细(货物、附件)
+     * @author : 付斌
+     * @date : 2024/3/6 10:36
+     */
+    @PostMapping({"/{id}"})
+    public ResponseResultVO selectById(@PathVariable String id) {
+        return outboundSaleOrderService.selectById(id);
+    }
+    /********************************************** 销售出库查询相关方法end *************************************/
+
+
+//    /**
+//     * @desc : 条件查询
+//     * @date : 2024/3/18 15:23
+//     * @author : 寇珊珊
+//     */
+//    @ApiOperation(value = "条件查询", notes = "条件查询")
+//    @PostMapping({"list_by"})
+//    public ResponseResultVO<PageList<InboundResponse>> selectByCond(@RequestBody OutboundQuery outboundQuery) {
+//        return outboundSaleOrderService.selectByCond(outboundQuery);
+//    }
+//
+//    /**
+//     * @desc : 明细信息条件查询
+//     * @date : 2024/3/18 15:23
+//     * @author : 寇珊珊
+//     */
+//    @ApiOperation(value = "明细信息条件查询", notes = "明细信息条件查询")
+//    @PostMapping({"select_item_info_by_id/{id}"})
+//    public ResponseResultVO<Map<String, Object>> selectOutBoundSaleOrderItemInfoById(@PathVariable String id) {
+//        return outboundSaleOrderService.selectOutBoundSaleOrderItemInfoById(id);
+//    }
+//    /**
+//     * @desc : 获取单据信息(编辑用)
+//     * @date : 2024/3/18 15:22
+//     * @author : 寇珊珊
+//     */
+//    @ApiOperation(value = "获取单据信息(编辑用)", notes = "获取单据信息(编辑用)")
+//    @PostMapping({"select_by_update/{id}"})
+//    public ResponseResultVO<?> selectByUpdate(@PathVariable String id) {
+//        return outboundSaleOrderService.selectByUpdate(id);
+//    }
+
 }

+ 63 - 30
src/main/java/com/dk/mdm/controller/ivt/outBound/OutboundSaleReturnController.java

@@ -7,6 +7,7 @@ import com.dk.common.service.BaseService;
 import com.dk.mdm.model.pojo.ivt.Outbound;
 import com.dk.mdm.model.query.ivt.OutboundQuery;
 import com.dk.mdm.model.response.ivt.InboundResponse;
+import com.dk.mdm.model.response.ivt.OutboundResponse;
 import com.dk.mdm.model.vo.ivt.OutboundVO;
 import com.dk.mdm.service.ivt.outbound.OutboundSaleReturnService;
 import io.swagger.annotations.Api;
@@ -30,29 +31,6 @@ public class OutboundSaleReturnController {
     @Autowired
     private OutboundSaleReturnService outboundSaleReturnService;
 
-
-    /**
-     * @desc : 条件查询
-     * @date : 2024/3/18 15:23
-     * @author : 寇珊珊
-     */
-    @ApiOperation(value = "条件查询", notes = "条件查询")
-    @PostMapping({"list_by"})
-    public ResponseResultVO<PageList<InboundResponse>> selectByCond(@RequestBody OutboundQuery outboundQuery) {
-        return outboundSaleReturnService.selectByCond(outboundQuery);
-    }
-
-    /**
-     * @desc : 明细信息条件查询
-     * @date : 2024/3/18 15:23
-     * @author : 寇珊珊
-     */
-    @ApiOperation(value = "明细信息条件查询", notes = "明细信息条件查询")
-    @PostMapping({"select_item_info_by_id/{id}"})
-    public ResponseResultVO<Map<String, Object>> selectOutBoundSaleReturnItemInfoById(@PathVariable String id) {
-        return outboundSaleReturnService.selectOutBoundSaleReturnItemInfoById(id);
-    }
-
     /**
      * @desc :  销售退货出库新建
      * @date : 2024/3/18 15:22
@@ -95,15 +73,70 @@ public class OutboundSaleReturnController {
         return outboundSaleReturnService.saleReturnOutboundCancel(outboundVO);
     }
 
+    /********************************************** 销售退货查询相关方法begin *************************************/
     /**
-     * @desc : 获取单据信息(编辑用)
-     * @date : 2024/3/18 15:22
-     * @author : 寇珊珊
+     * @desc : 一览页退货出库
+     * @author : 付斌
+     * @date : 2023/1/9 10:36
+     */
+    @ApiOperation(value = "分页、关联、条件查询", notes = "分页、关联、条件查询")
+    @PostMapping({"list_by"})
+    public ResponseResultVO<PageList<OutboundResponse>> selectByCond(@RequestBody OutboundQuery outboundQuery) {
+        return outboundSaleReturnService.selectByCond(outboundQuery);
+    }
+
+    /**
+     * @desc : 一览页销售退货明细(货物、附件)
+     * @author : 付斌
+     * @date : 2024-03-07 16:36
+     */
+    @PostMapping({"select_outbound_info_by_id/{id}"})
+    public ResponseResultVO<Map<String, Object>> selectOutboundInfoById(@PathVariable String id) {
+        return outboundSaleReturnService.selectOutboundInfoById(id);
+    }
+    /**
+     * @desc : 获取销售退货信息(编辑用)
+     * @author : 付斌
+     * @date : 2024-03-03 9:28
      */
-    @ApiOperation(value = "获取单据信息(编辑用)", notes = "获取单据信息(编辑用)")
-    @PostMapping({"select_by_update/{id}"})
-    public ResponseResultVO<?> selectByUpdate(@PathVariable String id) {
-        return outboundSaleReturnService.selectByUpdate(id);
+    @ApiOperation(value = "编辑出库单", notes = "编辑出库单")
+    @PostMapping({"get_out_return_for_update/{id}"})
+    public ResponseResultVO<?> getOutReturnForUpdate(@PathVariable String id) {
+        return outboundSaleReturnService.getOutReturnForUpdate(id);
     }
+    /********************************************** 销售退货查询相关方法end *************************************/
+
+//    /**
+//     * @desc : 条件查询
+//     * @date : 2024/3/18 15:23
+//     * @author : 寇珊珊
+//     */
+//    @ApiOperation(value = "条件查询", notes = "条件查询")
+//    @PostMapping({"list_by"})
+//    public ResponseResultVO<PageList<InboundResponse>> selectByCond(@RequestBody OutboundQuery outboundQuery) {
+//        return outboundSaleReturnService.selectByCond(outboundQuery);
+//    }
+//
+//    /**
+//     * @desc : 明细信息条件查询
+//     * @date : 2024/3/18 15:23
+//     * @author : 寇珊珊
+//     */
+//    @ApiOperation(value = "明细信息条件查询", notes = "明细信息条件查询")
+//    @PostMapping({"select_item_info_by_id/{id}"})
+//    public ResponseResultVO<Map<String, Object>> selectOutBoundSaleReturnItemInfoById(@PathVariable String id) {
+//        return outboundSaleReturnService.selectOutBoundSaleReturnItemInfoById(id);
+//    }
+//
+//    /**
+//     * @desc : 获取单据信息(编辑用)
+//     * @date : 2024/3/18 15:22
+//     * @author : 寇珊珊
+//     */
+//    @ApiOperation(value = "获取单据信息(编辑用)", notes = "获取单据信息(编辑用)")
+//    @PostMapping({"select_by_update/{id}"})
+//    public ResponseResultVO<?> selectByUpdate(@PathVariable String id) {
+//        return outboundSaleReturnService.selectByUpdate(id);
+//    }
 
 }

+ 12 - 0
src/main/java/com/dk/mdm/controller/pur/PurchaseController.java

@@ -94,6 +94,18 @@ public class PurchaseController{
     public ResponseResultVO<Boolean> update(@RequestBody  PurchaseVO Purchasevo) {
         return purchaseService.update(Purchasevo);
     }
+
+    /**
+     * @desc : 作废
+     * @author : 常皓宁
+     * @date : 2024-03-08 16:36
+     */
+    @ApiOperation(value = "作废", notes = "作废")
+    @PostMapping({"invalid/{id}"})
+    public ResponseResultVO<?> invalid(@PathVariable String id) {
+        return purchaseService.invalid(id);
+    }
+
     /**
      * @desc   : 采购订单 转 采购入库   (目前废弃)
      * @author : 王英杰

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

@@ -230,6 +230,10 @@
             inv_qty,
             cp_id,
             op_app_code,
+            s_into_id,
+            s_into_item_id,
+            s_pur_id,
+            s_pur_item_id,
         </trim>
         )
         values
@@ -259,6 +263,10 @@
                 #{item.invQty},
                 #{item.cpId},
                 #{item.opAppCode},
+                #{item.sIntoId}::uuid,
+                #{item.sIntoItemId}::uuid,
+                #{item.sPurId}::uuid,
+                #{item.sPurItemId}::uuid,
             </trim>
             )
         </foreach>

+ 21 - 0
src/main/java/com/dk/mdm/mapper/ivt/InboundMapper.java

@@ -87,5 +87,26 @@ public interface InboundMapper extends BaseMapper<Inbound>{
     Long selectInboundCond(InboundQuery inboundQuery);
 
     int updateIntoStatus(Inbound inbound);
+
+
+    /**
+     * @desc   : 条件查询 (采购退货用)
+     * @author : 于继渤
+     * @date   : 2024/3/8 10:58
+     */
+    List<InboundResponse> selectByInboundReturnCond(InboundQuery inboundQuery);
+
+    /**
+     * @desc   : 条件查询个数 (采购退货用)
+     * @author : 于继渤
+     * @date   : 2024/3/8 10:58
+     */
+    Long countByInboundReturnCond(InboundQuery inboundQuery);
+    /**
+     * @desc : 查看来源单据,总单加明细 采购退货用
+     * @author : 于继渤
+     * @date : 2024/3/6 10:36
+     */
+    InboundResponse selectInboundReturnById(@Param("intoId") String intoId);
 }
 

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

@@ -113,7 +113,6 @@
         <result column="return_contact_phone" property="returnContactPhone" />
         <result column="flg_auto_handle" property="flgAutoHandle"/>
         <result column="flg_handle_setting" property="flgHandleSetting"/>
-
     </resultMap>
 
 
@@ -213,6 +212,7 @@
             <if test="searchText !=null and searchText != ''">
                 AND (
                     tpi.into_no   LIKE concat('%',my_ex.likequery(#{searchText}),'%')
+                    or tpi.from_no LIKE concat('%',my_ex.likequery(#{searchText}),'%')
                     or tmc.cus_phone LIKE concat('%',my_ex.likequery(#{searchText}),'%')
                     or tmc.cus_name LIKE concat('%',my_ex.likequery(#{searchText}),'%')
                     or tmo.org_name LIKE concat('%',my_ex.likequery(#{searchText}),'%')
@@ -821,4 +821,107 @@
         </set>
         where into_id = #{intoId}::uuid
     </update>
+
+<!--    采购退货用-->
+    <resultMap id="BaseResultMapInboundReturnResponse" type="com.dk.mdm.model.response.ivt.InboundResponse">
+        <id column="into_id" property="intoId" typeHandler="UuidTypeHandler"/>
+        <result column="into_no" property="intoNo"/>
+        <result column="into_type" property="intoType"/>
+        <result column="from_id" property="fromId" typeHandler="UuidTypeHandler"/>
+        <result column="from_no" property="fromNo"/>
+        <result column="org_id" property="orgId" typeHandler="UuidTypeHandler"/>
+        <result column="staff_id" property="staffId" typeHandler="UuidTypeHandler"/>
+        <result column="sup_id" property="supId" typeHandler="UuidTypeHandler"/>
+        <result column="into_status" property="intoStatus"/>
+        <result column="intoing_qty" property="intoingQty"/>
+        <result column="intoing_amt" property="intoingAmt"/>
+        <result column="into_qty" property="intoQty"/>
+        <result column="into_amt" property="intoAmt"/>
+        <result column="wh_id" property="whId" typeHandler="UuidTypeHandler"/>
+        <result column="return_qty" property="returnQty"/>
+        <result column="return_amt" property="returnAmt"/>
+        <result column="into_date" property="intoDate" typeHandler="TimestampTypeHandler"/>
+        <result column="remarks" property="remarks"/>
+        <result column="annex_paths" property="annexPaths" typeHandler="JsonTypeHandler"/>
+        <result column="make_staff" property="makeStaff" typeHandler="UuidTypeHandler"/>
+        <result column="make_time" property="makeTime" typeHandler="TimestampTypeHandler"/>
+        <result column="receivable_id" property="receivableId" typeHandler="UuidTypeHandler"/>
+        <result column="payable_id" property="payableId" typeHandler="UuidTypeHandler"/>
+        <result column="flg_valid" property="flgValid"/>
+        <result column="cp_id" property="cpId"/>
+        <result column="sup_name" property="supName"/>
+        <result column="into_reason" property="intoReason" typeHandler="UuidTypeHandler"/>
+        <result column="into_reason_name" property="intoReasonName" />
+        <result column="org_name" property="orgName" />
+        <result column="staff_name" property="staffName" />
+        <result column="contact_phone" property="contactPhone" />
+        <result column="contact_name" property="contactName" />
+        <result column="channel_name" property="channelName" />
+        <result column="cus_from_name" property="cusFromName" />
+        <result column="return_address" property="returnAddress" />
+    </resultMap>
+
+    <sql id="Join_Table_Return">
+        Left join dkic_b.t_mst_org tmo on tmo.org_id = tpi.org_id
+        Left join dkic_b.t_mst_supplier tmp on tmp.sup_id = tpi.sup_id
+        Left join dkic_b.t_mst_staff tms on tms.staff_id = tpi.staff_id
+        Left join dkic_b.t_mst_staff tms1 on tms1.staff_id = tpi.make_staff
+        LEFT JOIN sys.t_data_kind tdk   ON tdk.kind_code = tpi.into_status
+        LEFT JOIN sys.t_data_kind tdktype   ON tdktype.kind_code = tpi.into_type
+        Left join dkic_b.t_mst_warehouse tmw on tmw.wh_id = tpi.wh_id
+        left join dkic_b.t_mst_dictionary_data tmd on tmd.data_id = tpi.into_reason
+    </sql>
+<!--    采购退货用-->
+    <select id="selectByInboundReturnCond" resultMap="BaseResultMapInboundReturnResponse">
+        SELECT
+        <include refid="Base_Column_List_Response"/>
+        ,tmo.org_name
+        ,tmp.sup_name
+        ,tms.staff_name
+        ,tmw.wh_name
+        ,tms1.staff_name as make_staff_name
+        ,sys.f_get_name_i18n(tdktype.kind_name_i18n, 'zh_CN') AS  into_type_name
+        ,sys.f_get_name_i18n(tdk.kind_name_i18n, 'zh_CN') AS into_status_name
+        ,tmd.data_value as into_reason_name
+        ,tmp.return_address
+        ,tmp.contact_name
+        ,tmp.contact_phone
+        FROM dkic_b.t_psi_inbound tpi
+        <include refid="Join_Table_Return"/>
+        <include refid="Condition"/>
+        ORDER BY tpi.op_create_time DESC
+        <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
+            limit #{end} offset #{start}
+        </if>
+    </select>
+    <!--采购退货用 查询表t_psi_inbound,(条件查询)个数 -->
+    <select id="countByInboundReturnCond" resultType="Long">
+        SELECT
+        count(1)
+        FROM dkic_b.t_psi_inbound tpi
+        <include refid="Join_Table_Return"/>
+        <include refid="Condition"/>
+    </select>
+    <!--    查看来源单据,总单加明细  采购退货用-->
+    <select id="selectInboundReturnById" resultMap="BaseResultMapInboundReturnResponse">
+        SELECT
+        <include refid="Base_Column_List_Response"/>
+        ,tmo.org_name
+        ,tms.staff_name as staff_name
+        ,tms1.staff_name as make_staff_name
+        ,tmp.sup_name
+        ,tmw.wh_name
+        ,tmd.data_value  as into_reason_name
+        ,tmp.return_address
+        ,tmp.contact_name
+        ,tmp.contact_phone
+        FROM dkic_b.t_psi_inbound tpi
+        Left join dkic_b.t_mst_org tmo on tmo.org_id = tpi.org_id
+        Left join dkic_b.t_mst_supplier tmp on tmp.sup_id = tpi.sup_id
+        Left join dkic_b.t_mst_staff tms on tms.staff_id = tpi.staff_id
+        Left join dkic_b.t_mst_staff tms1 on tms1.staff_id = tpi.make_staff
+        Left join dkic_b.t_mst_warehouse tmw on tmw.wh_id = tpi.wh_id
+        left join dkic_b.t_mst_dictionary_data tmd on tmd.data_id = tpi.into_reason
+        WHERE tpi.into_id = #{intoId}::uuid
+    </select>
 </mapper>

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

@@ -5,6 +5,7 @@ import com.dk.common.mapper.BaseMapper;
 import com.dk.mdm.model.query.ivt.OutboundItemQuery;
 import com.dk.mdm.model.response.ivt.InboundItemResponse;
 import com.dk.mdm.model.response.ivt.OutboundItemResponse;
+import com.dk.mdm.model.response.sale.OutReturnItemResponse;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
@@ -43,6 +44,12 @@ public interface OutboundItemMapper extends BaseMapper<OutboundItem>{
      */
     List<OutboundItemResponse> selectByCondForOutEdit(String id);
 
+    /**
+     * @desc   : 获取退货信息(退货编辑用)
+     * @author : 付斌
+     * @date   : 2024-03-12 11:07
+     */
+    List<OutboundItemResponse> selectByCondForReturnEdit(String id);
 
     /**
      * @desc   : 根据id查询

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

@@ -342,4 +342,32 @@
           and tpoi.out_id = #{id}::uuid
         order by tpoi.item_index
     </select>
+
+    <!-- 根据条件进行查询(退货编辑用) -->
+    <select id="selectByCondForReturnEdit" resultMap="BaseResultMapResponse">
+        SELECT t.item_id,
+               t.out_id,
+               t.s_out_id,
+               t.s_out_item_id,
+               t.s_order_id,
+               t.s_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.outing_qty as "canReturnQty",
+               t.outing_qty,
+               t.price_out,
+               t.outing_amt,
+               t.non_std_code,
+               t.remarks
+        FROM dkic_b.t_psi_outbound_item as t
+                 left join dkic_b.t_psi_outbound_item as tpobi on tpobi.item_id = t.s_out_item_id
+                 left join dkic_b.t_mst_goods_sku tmgs on tmgs.sku_id = t.sku_id
+        where t.flg_valid
+          and t.out_id = #{id}::uuid
+        order by t.item_index
+    </select>
 </mapper>

+ 4 - 0
src/main/java/com/dk/mdm/mapper/mac/RecPayMapper.xml

@@ -174,6 +174,7 @@
                t.rp_type,
                sys.f_get_name_i18n(tdk1.kind_name_i18n, #{i18n}) as "rpTypeName",
                t.object_id,
+                tmp.sup_name                                     AS "supplierName",
                tmc.cus_code                                      as "cusCode",
                tmc.cus_name                                      as "cusName",
                tmc.cus_phone                                     as "cusPhone",
@@ -202,6 +203,7 @@
         from dkic_b.t_mac_rec_pay as t
                  left join dkic_b.t_mst_customer tmc
                            on tmc.cus_id = t.object_id and t.rp_type in ('收付款类型-收款', '收付款类型-退收款')
+                 Left join dkic_b.t_mst_supplier tmp on tmp.sup_id = t.object_id
                  left join sys.t_data_kind as tdk1 on tdk1.kind_code = t.rp_type
                  left join dkic_b.t_mst_org tmo on tmo.org_id = t.org_id
                  left join dkic_b.t_mst_staff tms on tms.staff_id = t.staff_id
@@ -230,6 +232,7 @@
                t.rp_type,
                sys.f_get_name_i18n(tdk1.kind_name_i18n, #{i18n}) as "rpTypeName",
                t.object_id,
+               tmp.sup_name          AS "supplierName",
                tmc.cus_code           as "cusCode",
                tmc.cus_name           as "cusName",
                tmc.cus_phone          as "cusPhone",
@@ -266,6 +269,7 @@
         from dkic_b.t_mac_rec_pay as t
                  left join dkic_b.t_mst_customer tmc
                            on tmc.cus_id = t.object_id and t.rp_type in ('收付款类型-收款', '收付款类型-退收款')
+                 Left join dkic_b.t_mst_supplier tmp on tmp.sup_id = t.object_id
                  left join sys.t_data_kind as tdk1 on tdk1.kind_code = t.rp_type
                  left join dkic_b.t_mst_org tmo on tmo.org_id = t.org_id
                  left join dkic_b.t_mst_staff tms on tms.staff_id = t.staff_id

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

@@ -332,12 +332,12 @@
         order by t.item_index
     </select>
 
-    <!-- 根据条件进行查询(出库用) -->
+    <!-- 根据条件进行查询(退货用) -->
     <select id="selectByCondForReturn" resultMap="BaseResultMapResponse">
-        SELECT tpobi.out_id                                         as "outId",
-               tpobi.item_id                                        as "outItemId",
-               t.order_id                                        as order_id,
-               t.item_id                                         as "orderItemId",
+        SELECT tpobi.out_id                                         as "sOutId",
+               tpobi.item_id                                        as "sOutItemId",
+               t.order_id                                           as "sOrderId",
+               t.item_id                                            as "sOrderItemId",
                t.sku_id,
                tmgs.sku_code                                        as "skuCode",
                tmgs.sku_model                                       as "skuModel",

+ 14 - 8
src/main/java/com/dk/mdm/model/pojo/ivt/InboundItem.java

@@ -327,15 +327,21 @@ public class InboundItem  extends PageInfo<InboundItem> implements Serializable
     private String whId;
 
 
-    /*
-     * 相关属性
-     * @TableField(exist = false)
-     */
+    @ApiModelProperty(value = "源入库单ID(采购退货时记录)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String sIntoId;
 
-    /*
-     * 关联属性 + 查询条件
-     * @TableField(exist = false)
-     */
+    @ApiModelProperty(value = "源入库单明细ID(采购退货时记录)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String sIntoItemId;
+
+    @ApiModelProperty(value = "源采购订单ID(采购退货时记录)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String sPurId;
+
+    @ApiModelProperty(value = "源采购明细ID(采购退货时记录)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String sPurItemId;
 
 
     private static final long serialVersionUID = 1L;

+ 15 - 8
src/main/java/com/dk/mdm/model/pojo/ivt/OutboundItem.java

@@ -286,6 +286,7 @@ public class OutboundItem extends PageInfo<OutboundItem> implements Serializable
     private String opDbUser;
 
     @ApiModelProperty(value = "源出库单ID")
+<<<<<<< HEAD
     @JsonProperty(value = "sOutId")
     @TableField(typeHandler = UuidTypeHandler.class)
     private String sOutId;
@@ -305,16 +306,22 @@ public class OutboundItem extends PageInfo<OutboundItem> implements Serializable
     @TableField(typeHandler = UuidTypeHandler.class)
     private String sOrderItemId;
 
+=======
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String sOutId;
+>>>>>>> 7e9e0188d981cf9811cfa58100ee8a187827e9a8
 
-    /*
-     * 相关属性
-     * @TableField(exist = false)
-     */
+    @ApiModelProperty(value = "源出库单明细ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String sOutItemId;
 
-    /*
-     * 关联属性 + 查询条件
-     * @TableField(exist = false)
-     */
+    @ApiModelProperty(value = "源销售订单ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String sOrderId;
+
+    @ApiModelProperty(value = "源销售明细ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String sOrderItemId;
 
 
     private static final long serialVersionUID = 1L;

+ 14 - 8
src/main/java/com/dk/mdm/model/query/ivt/InboundItemQuery.java

@@ -254,15 +254,21 @@ public class InboundItemQuery extends PageInfo<InboundItemQuery>  {
     private String opDbUser;
 
 
-    /*
-     * 相关属性
-     * @TableField(exist = false)
-     */
+    @ApiModelProperty(value = "源入库单ID(采购退货时记录)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String sIntoId;
 
-    /*
-     * 关联属性 + 查询条件
-     * @TableField(exist = false)
-     */
+    @ApiModelProperty(value = "源入库单明细ID(采购退货时记录)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String sIntoItemId;
+
+    @ApiModelProperty(value = "源采购订单ID(采购退货时记录)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String sPurId;
+
+    @ApiModelProperty(value = "源采购明细ID(采购退货时记录)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String sPurItemId;
 
 
     private static final long serialVersionUID = 1L;

+ 9 - 8
src/main/java/com/dk/mdm/model/query/ivt/OutboundItemQuery.java

@@ -190,16 +190,17 @@ public class OutboundItemQuery extends PageInfo<OutboundItemQuery>{
     @ApiModelProperty(value = "企业ID")
     private Integer cpId;
 
+    @ApiModelProperty(value = "源出库单ID")
+    private String sOutId;
 
-    /*
-     * 相关属性
-     * @TableField(exist = false)
-     */
+    @ApiModelProperty(value = "源出库单明细ID")
+    private String sOutItemId;
 
-    /*
-     * 关联属性 + 查询条件
-     * @TableField(exist = false)
-     */
+    @ApiModelProperty(value = "源销售订单ID")
+    private String sOrderId;
+
+    @ApiModelProperty(value = "源销售明细ID")
+    private String sOrderItemId;
 
 
     private static final long serialVersionUID = 1L;

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

@@ -317,6 +317,22 @@ public class InboundItemResponse  {
     @ApiModelProperty(value = "库存业务类型(入库4种,出库4中)")
     private String inventoryDocCode;
 
+    @ApiModelProperty(value = "源入库单ID(采购退货时记录)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String sIntoId;
+
+    @ApiModelProperty(value = "源入库单明细ID(采购退货时记录)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String sIntoItemId;
+
+    @ApiModelProperty(value = "源采购订单ID(采购退货时记录)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String sPurId;
+
+    @ApiModelProperty(value = "源采购明细ID(采购退货时记录)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String sPurItemId;
+
     private static final long serialVersionUID = 1L;
 
 }

+ 2 - 5
src/main/java/com/dk/mdm/model/response/ivt/InboundResponse.java

@@ -399,11 +399,8 @@ public class InboundResponse  {
     @ApiModelProperty(value = "供应商退货地址")
     private String returnAddress;
 
-    @ApiModelProperty(value = "供应商退货联系人")
-    private String returnContactName;
-
-    @ApiModelProperty(value = "供应商退货联系电话")
-    private String returnContactPhone;
+    @ApiModelProperty(value = "供应商")
+    private String supName;
 
 
 

+ 16 - 8
src/main/java/com/dk/mdm/model/response/ivt/OutboundItemResponse.java

@@ -274,16 +274,24 @@ public class OutboundItemResponse {
 
     @ApiModelProperty(value = "订单明细ID")
     private String orderItemId;
-    /*
-     * 相关属性
-     * @TableField(exist = false)
-     */
 
-    /*
-     * 关联属性 + 查询条件
-     * @TableField(exist = false)
-     */
+    @ApiModelProperty(value = "源出库单ID")
+    private String sOutId;
+
+    @ApiModelProperty(value = "源出库单明细ID")
+    private String sOutItemId;
+
+    @ApiModelProperty(value = "源销售订单ID")
+    private String sOrderId;
+
+    @ApiModelProperty(value = "源销售明细ID")
+    private String sOrderItemId;
+
+    @ApiModelProperty(value = "已出库数量")
+    private BigDecimal outboundOutQty;
 
+    @ApiModelProperty(value = "可退货数量")
+    private BigDecimal canReturnQty;
 
     private static final long serialVersionUID = 1L;
 

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

@@ -233,6 +233,9 @@ public class RecPayResponse extends PageInfo<RecPayResponse> implements Serializ
     @ApiModelProperty(value = "组织名称")
     private String orgName;
 
+    @ApiModelProperty(value = "供应商")
+    private String supplierName;
+
     @ApiModelProperty(value = "员工姓名")
     private String staffName;
 

+ 9 - 8
src/main/java/com/dk/mdm/model/response/sale/OrderItemResponse.java

@@ -330,16 +330,17 @@ public class OrderItemResponse extends PageInfo<OrderItemResponse> implements Se
     @ApiModelProperty(value = "退货价")
     private BigDecimal priceReturn;
 
-    /*
-     * 相关属性
-     * @TableField(exist = false)
-     */
+    @ApiModelProperty(value = "源出库单ID")
+    private String sOutId;
 
-    /*
-     * 关联属性 + 查询条件
-     * @TableField(exist = false)
-     */
+    @ApiModelProperty(value = "源出库单明细ID")
+    private String sOutItemId;
+
+    @ApiModelProperty(value = "源销售订单ID")
+    private String sOrderId;
 
+    @ApiModelProperty(value = "源销售明细ID")
+    private String sOrderItemId;
 
     private static final long serialVersionUID = 1L;
 

+ 0 - 6
src/main/java/com/dk/mdm/model/vo/ivt/InboundItemVO.java

@@ -198,7 +198,6 @@ public class InboundItemVO  {
     @ApiModelProperty(value = "入库仓库")
     private String whId;
 
-
     @ApiModelProperty(value = "源入库单ID")
     @JsonProperty(value = "sIntoId")
     @TableField(typeHandler = UuidTypeHandler.class)
@@ -225,11 +224,6 @@ public class InboundItemVO  {
      * @TableField(exist = false)
      */
 
-    /*
-     * 关联属性 + 查询条件
-     * @TableField(exist = false)
-     */
-
     @ApiModelProperty(value = "库存类型(入库,出库)")
     private String inventoryType;
 

+ 0 - 10
src/main/java/com/dk/mdm/model/vo/ivt/OutboundItemVO.java

@@ -212,16 +212,6 @@ public class OutboundItemVO {
     private String sOrderItemId;
 
 
-    /*
-     * 相关属性
-     * @TableField(exist = false)
-     */
-
-    /*
-     * 关联属性 + 查询条件
-     * @TableField(exist = false)
-     */
-
 
     private static final long serialVersionUID = 1L;
 

+ 258 - 0
src/main/java/com/dk/mdm/service/ivt/InboundReturnService.java

@@ -0,0 +1,258 @@
+package com.dk.mdm.service.ivt;
+
+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;
+import com.dk.mdm.infrastructure.convert.ivt.InboundConvert;
+import com.dk.mdm.infrastructure.convert.ivt.InboundItemConvert;
+import com.dk.mdm.mapper.ivt.InboundItemMapper;
+import com.dk.mdm.mapper.ivt.InboundMapper;
+import com.dk.mdm.mapper.pur.PurchaseItemMapper;
+import com.dk.mdm.mapper.pur.PurchaseMapper;
+import com.dk.mdm.model.pojo.ivt.Inbound;
+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.mdm.model.query.ivt.InboundItemQuery;
+import com.dk.mdm.model.query.ivt.InboundQuery;
+import com.dk.mdm.model.response.ivt.InboundItemResponse;
+import com.dk.mdm.model.response.ivt.InboundResponse;
+import com.dk.mdm.model.response.pur.PurchaseItemResponse;
+import com.dk.mdm.model.response.pur.PurchaseResponse;
+import com.dk.mdm.model.vo.ivt.InboundItemVO;
+import com.dk.mdm.model.vo.ivt.InboundVO;
+import com.dk.mdm.service.common.CommonService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+@Service("inboundReturn")
+@Transactional
+public class InboundReturnService extends BaseService<Inbound> {
+
+    @Override
+    public BaseMapper<Inbound> getRepository() {
+        return inboundMapper;
+    }
+
+    @Resource
+    private InboundMapper inboundMapper;
+
+    @Autowired
+    private InboundItemMapper inboundItemMapper;
+
+    @Autowired
+    private PurchaseMapper purchaseMapper;
+
+    @Autowired
+    private PurchaseItemMapper purchaseItemMapper;
+
+    @Autowired
+    private CommonService commonService;
+
+    @Autowired
+    private InboundConvert inboundConvert;
+
+    @Autowired
+    private InboundItemConvert inboundItemConvert;
+
+
+    @Pagination
+    public ResponseResultVO<PageList<InboundResponse>> selectByCond(InboundQuery inboundQuery) {
+        return super.mergeListWithCount(inboundQuery, inboundMapper.selectByInboundReturnCond(inboundQuery), inboundMapper.countByInboundReturnCond(inboundQuery));
+    }
+
+    /**
+     * @desc : 查看来源单据,总单加明细  采购退货用
+     * @author : 于继渤
+     * @date : 2024/3/6 10:36
+     */
+    public ResponseResultVO<?> selectInboundReturnById(String intoId) {
+        //根据id查询
+        InboundResponse inboundResponse = inboundMapper.selectInboundReturnById(intoId);
+        //不存在
+        if (inboundResponse == null) {
+            return ResponseResultUtil.error(ErrorCodeEnum.INBOUND_CANNOT_BE_EMPTY.getCode(),
+                    ErrorCodeEnum.INBOUND_CANNOT_BE_EMPTY.getMessage());
+        }
+        //查询明细
+        List<InboundItemResponse> inboundItemResponselist = inboundItemMapper.selectByCond(new InboundItemQuery().setIntoId(intoId));
+        inboundResponse.setGoodsList(inboundItemResponselist);
+        return ResponseResultUtil.success(inboundResponse);
+    }
+
+    /**
+     * @desc : 新建采购退货
+     * @author : 于继渤
+     * @date : 2023/1/5 9:39
+     */
+    @Transactional(
+            rollbackFor = {Exception.class}
+    )
+    public ResponseResultVO<?> insert(InboundVO inboundVO) {
+        //校验明细长度
+        List<InboundItemVO> itemList = inboundVO.getItemList();
+        //明细不存在
+        if (itemList == null || itemList.size() == 0) {
+            //返回 采购退货明细不可为空,请重新操作
+            return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.PURCHASE_RETURN_DETAIL_NOT_EXIST.getMessage());
+        }
+        //查询采购订单
+        PurchaseResponse purchaseResponse = purchaseMapper.selectById(inboundVO.getFromId()); //采购订单id
+
+        inboundVO.setReturnQty(inboundVO.getReturnQty().abs());
+        inboundVO.setReturnAmt(inboundVO.getReturnAmt().abs());
+        //反写采购订单已入库退货数量、金额
+        purchaseMapper.updateAmount(new Purchase().setPurId(inboundVO.getFromId())
+                .setReturnQty(purchaseResponse.getReturnQty().add(inboundVO.getReturnQty()))
+                .setReturnAmt(purchaseResponse.getReturnAmt().add(inboundVO.getReturnAmt()))
+        );
+        BigDecimal sumReturnQty = BigDecimal.ZERO;
+        BigDecimal sumReturnAmt = BigDecimal.ZERO;
+        //反写入库订单明细、反写订单明细
+        for (InboundItemVO inboundItemVO : itemList) {
+            //根据退货明细中入库明细id查询入库明细数据
+            InboundItemResponse inboundItemResponse = inboundItemMapper.selectById(inboundItemVO.getItemId()); //原入库单明细id
+            BigDecimal returnQty = inboundItemResponse.getReturnQty().add(inboundItemVO.getReturnQty().setScale(6, BigDecimal.ROUND_HALF_UP));
+            BigDecimal returnAmt = inboundItemResponse.getReturnAmt().add(inboundItemVO.getReturnAmt().setScale(6, BigDecimal.ROUND_HALF_UP));
+            sumReturnQty = sumReturnQty.add(returnQty);
+            sumReturnAmt = sumReturnAmt.add(returnAmt);
+            //反写入库单退货数量金额 todo
+            InboundResponse inboundResponse = inboundMapper.selectById(inboundItemVO.getIntoId()); //原入库单id
+            inboundMapper.updateAmount(new Inbound().setIntoId(inboundItemVO.getIntoId())
+                    .setReturnQty(inboundResponse.getReturnQty().add(sumReturnQty))
+                    .setReturnAmt(inboundResponse.getReturnAmt().add(sumReturnAmt)));
+            inboundItemMapper.updateAmount(
+                    new InboundItem()
+                            .setItemId(inboundItemResponse.getItemId())
+                            .setReturnQty(returnQty)
+                            .setReturnAmt(returnAmt)
+            );
+            //反写订单出库明细 退货数量和退货金额
+            //查询采购订单明细数据
+            PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(inboundItemVO.getFromItemId());
+            //反写订单明细退货数量和退货金额
+            purchaseItemMapper.updateAmount(
+                    new PurchaseItem()
+                            .setItemId(inboundItemVO.getFromItemId())
+                            .setReturnQty(purchaseItemResponse.getReturnQty().add(inboundItemVO.getReturnQty().setScale(6, BigDecimal.ROUND_HALF_UP)))
+                            .setReturnAmt(purchaseItemResponse.getReturnAmt().add(inboundItemVO.getReturnAmt().setScale(6, BigDecimal.ROUND_HALF_UP)))
+
+            );
+        }
+        inboundVO.setFromId(inboundVO.getIntoId());
+        inboundVO.setFromNo(inboundVO.getIntoNo());
+        inboundVO.setIntoingQty(inboundVO.getReturnQty().multiply(new BigDecimal(-1)));
+        inboundVO.setIntoingAmt(inboundVO.getReturnAmt().multiply(new BigDecimal(-1)));
+        List<InboundItemVO> list = new ArrayList<>();
+        for (InboundItemVO inboundItemVO : inboundVO.getItemList()) {
+
+            inboundItemVO.setIntoingQty(inboundItemVO.getReturnQty().multiply(new BigDecimal(-1)));
+            inboundItemVO.setIntoingAmt(inboundItemVO.getReturnAmt().multiply(new BigDecimal(-1)));
+            inboundItemVO.setPriceInto(inboundItemVO.getPriceInto());
+            inboundItemVO.setFromItemId(inboundItemVO.getItemId());
+            inboundItemVO.setSkuId(inboundItemVO.getSkuId());
+            inboundItemVO.setItemIndex(inboundItemVO.getItemIndex());
+            inboundItemVO.setNonStdCode(inboundItemVO.getNonStdCode());
+            inboundItemVO.setReturnQty(inboundItemVO.getReturnQty());
+            inboundItemVO.setReturnAmt(inboundItemVO.getReturnAmt());
+
+            //源入库单ID(采购退货时记录)
+            inboundItemVO.setSIntoId(inboundItemVO.getIntoId());
+            //源入库单明细ID(采购退货时记录)
+            inboundItemVO.setSIntoItemId(inboundItemVO.getItemId());
+            //源采购订单ID(采购退货时记录)
+            inboundItemVO.setSPurId(inboundItemVO.getFromId());
+            //源采购明细ID(采购退货时记录)
+            inboundItemVO.setSPurItemId(inboundItemVO.getFromItemId());
+            inboundItemVO.setItemId(null);
+            list.add(inboundItemVO);
+        }
+
+        inboundVO.setItemList(list);
+        //获取 id/单号
+        Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.SALERETURN.getName(), false);
+        inboundVO.setIntoId(codeMap.get("outId").toString()).
+                setIntoNo(codeMap.get("outNote").toString());
+        //入库类型
+        inboundVO.setIntoType(Constant.IntoType.PURRETURN_RETURN.getName());
+        //自动入库标识
+        if (inboundVO.getAutomaticFlg()) {
+            //已入库
+            inboundVO.setIntoStatus(Constant.IntoStatus.YIRUKU.getName());
+        } else {
+            //入库中
+            inboundVO.setIntoStatus(Constant.IntoStatus.RUKUZHONG.getName());
+        }
+        //退货数量
+        inboundVO.setReturnQty(inboundVO.getIntoingQty());
+        //退货金额
+        inboundVO.setReturnAmt(inboundVO.getIntoingAmt());
+        //入库状态等于已入库 更新合计入库数量/金额 = 入库中数量/入库中金额
+        if (Constant.IntoStatus.YIRUKU.getName().equals(inboundVO.getIntoStatus())) {
+            inboundVO
+                    .setIntoQty(inboundVO.getIntoingQty())
+                    .setIntoAmt(inboundVO.getIntoingAmt())
+                    .setIntoingQty(BigDecimal.ZERO)
+                    .setIntoingAmt(BigDecimal.ZERO)
+            ;
+        } else {
+            inboundVO
+                    .setIntoQty(BigDecimal.ZERO)
+                    .setIntoAmt(BigDecimal.ZERO)
+            ;
+        }
+
+        //实体转换
+        Inbound inbound = inboundConvert.convertToPo(inboundVO);
+        inboundMapper.insert(inbound);
+        //endregion
+
+        //region 明细
+        //校验明细
+        if (inboundVO.getItemList().size() == 0) {
+            return ResponseResultUtil.error(ErrorCodeEnum.INBOUND_ITEM_NOT_EXIST.getCode(),
+                    ErrorCodeEnum.INBOUND_ITEM_NOT_EXIST.getMessage());
+        }
+        for (InboundItemVO inboundItemVO : inboundVO.getItemList()) {
+            //总单id
+            inboundItemVO.setIntoId(inboundVO.getIntoId());
+            //入库类型
+            inboundItemVO.setIntoType(inboundVO.getIntoType());
+            //入库状态等于已入库 更新合计入库数量/金额 = 入库中数量/入库中金额
+            if (Constant.IntoStatus.YIRUKU.getName().equals(inboundVO.getIntoStatus())) {
+                inboundItemVO
+                        .setIntoQty(inboundItemVO.getIntoingQty())
+                        .setIntoAmt(inboundItemVO.getIntoingAmt())
+                        .setIntoingQty(BigDecimal.ZERO)
+                        .setIntoingAmt(BigDecimal.ZERO)
+                        .setCostPrice(inboundItemVO.getPriceInto())
+                        .setCostAmt(inboundItemVO.getIntoQty().multiply(inboundItemVO.getPriceInto()).setScale(2, BigDecimal.ROUND_HALF_UP))
+                ;
+            } else {
+                inboundItemVO
+                        .setIntoQty(BigDecimal.ZERO)
+                        .setIntoAmt(BigDecimal.ZERO);
+            }
+            //入库状态
+            inboundItemVO.setIntoStatus(inboundVO.getIntoStatus());
+            //实体转换
+            InboundItem inboundItem = inboundItemConvert.convertToPo(inboundItemVO);
+            inboundItemMapper.insert(inboundItem);
+
+        }
+        return ResponseResultUtil.success();
+    }
+}

+ 90 - 30
src/main/java/com/dk/mdm/service/ivt/outbound/OutboundSaleOrderService.java

@@ -76,36 +76,6 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
     @Autowired
     private OrderItemMapper  orderItemMapper;
 
-
-    /**
-     * @desc : 条件查询
-     * @date : 2024/3/18 11:20
-     * @author : 寇珊珊
-     */
-    @Pagination
-    public ResponseResultVO<PageList<InboundResponse>> selectByCond(OutboundQuery outboundQuery) {
-        return super.mergeListWithCount(outboundQuery, outboundMapper.selectByCond(outboundQuery),
-                outboundMapper.countByCond(outboundQuery));
-    }
-
-    /**
-     * @desc : 查询明细
-     * @date : 2024/3/15 16:43
-     * @author : 寇珊珊
-     */
-    @Pagination
-    public ResponseResultVO<Map<String, Object>> selectOutBoundSaleOrderItemInfoById(String id) {
-        Map<String, Object> result = new HashMap<>();
-        // 商品明细
-        List<OutboundItemResponse> outboundItemResponseList = outboundItemMapper.selectByCond(new OutboundItemQuery().setOutId(id));
-        result.put("itemList", outboundItemResponseList);
-        // 收款
-
-        // 附件
-        return ResponseResultUtil.success(result);
-    }
-
-
     /**
      * @desc : 销售出库新建
      * @date : 2024/3/7 14:13
@@ -649,5 +619,95 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
         return ResponseResultUtil.success(dataInfo);
     }
 
+    /********************************************** 销售出库查询相关方法begin *************************************/
+    /**
+     * @desc : 一览页销售出库
+     * @author : 付斌
+     * @date : 2023/1/9 10:40
+     */
+    @Pagination
+    public ResponseResultVO<PageList<OutboundResponse>> selectByCond(OutboundQuery outboundQuery) {
+        outboundQuery.setOutType(Constant.OutType.SALE.getName());
+        return super.mergeListWithCount(outboundQuery, outboundMapper.selectByCond(outboundQuery),
+                outboundMapper.countByCond(outboundQuery));
+    }
+
+    /**
+     * @desc : 一览页销售出库明细(货物、附件)
+     * @author : 付斌
+     * @date : 2024-02-28 13:25
+     */
+    @Pagination
+    public ResponseResultVO<Map<String, Object>> selectOutboundInfoById(String id) {
+        Map<String, Object> result = new HashMap<>();
+        // 商品明细
+        List<OutboundItemResponse> outboundItem = outboundItemMapper.selectByCond(new OutboundItemQuery().setOutId(id));
+        result.put("outboundItem", outboundItem);
+
+        // 附件
+        return ResponseResultUtil.success(result);
+    }
+
+    /**
+     * @desc : 获取销售出库信息(编辑用)
+     * @author : 付斌
+     * @date : 2024-03-02 17:27
+     */
+    public ResponseResultVO<?> getOutboundForUpdate(String id) {
+        Map<String, Object> dataInfo = new HashMap<>();
+        OutboundResponse outboundResponse = outboundMapper.selectById(id);
+        dataInfo.put("data", outboundResponse);
+
+        // 商品明细
+        List<OutboundItemResponse> outboundItemResponseList = outboundItemMapper.selectByCondForOutEdit(id);
+        dataInfo.put("dataItem", outboundItemResponseList);
+        return ResponseResultUtil.success(dataInfo);
+    }
+
+    /**
+     * @desc : 查询出库明细(货物、附件)
+     * @author : 付斌
+     * @date : 2024-02-28 13:25
+     */
+    @Pagination
+    public ResponseResultVO selectById(String id) {
+
+        OutboundResponse outboundResponse = outboundMapper.selectById(id);
+        // 商品明细
+        List<OutboundItemResponse> outboundItem = outboundItemMapper.selectByCond(new OutboundItemQuery().setOutId(id));
+        outboundResponse.setGoodsList(outboundItem);
+
+        // 附件
+        return ResponseResultUtil.success(outboundResponse);
+    }
+    /********************************************** 销售出库查询相关方法end *************************************/
+
+//    /**
+//     * @desc : 条件查询
+//     * @date : 2024/3/18 11:20
+//     * @author : 寇珊珊
+//     */
+//    @Pagination
+//    public ResponseResultVO<PageList<InboundResponse>> selectByCond(OutboundQuery outboundQuery) {
+//        return super.mergeListWithCount(outboundQuery, outboundMapper.selectByCond(outboundQuery),
+//                outboundMapper.countByCond(outboundQuery));
+//    }
+//
+//    /**
+//     * @desc : 查询明细
+//     * @date : 2024/3/15 16:43
+//     * @author : 寇珊珊
+//     */
+//    @Pagination
+//    public ResponseResultVO<Map<String, Object>> selectOutBoundSaleOrderItemInfoById(String id) {
+//        Map<String, Object> result = new HashMap<>();
+//        // 商品明细
+//        List<OutboundItemResponse> outboundItemResponseList = outboundItemMapper.selectByCond(new OutboundItemQuery().setOutId(id));
+//        result.put("itemList", outboundItemResponseList);
+//        // 收款
+//
+//        // 附件
+//        return ResponseResultUtil.success(result);
+//    }
 
 }

+ 86 - 43
src/main/java/com/dk/mdm/service/ivt/outbound/OutboundSaleReturnService.java

@@ -78,35 +78,6 @@ public class OutboundSaleReturnService extends BaseService<Outbound> {
 
 
     /**
-     * @desc : 条件查询
-     * @date : 2024/3/18 11:20
-     * @author : 寇珊珊
-     */
-    @Pagination
-    public ResponseResultVO<PageList<InboundResponse>> selectByCond(OutboundQuery outboundQuery) {
-        return super.mergeListWithCount(outboundQuery, outboundMapper.selectByCond(outboundQuery),
-                outboundMapper.countByCond(outboundQuery));
-    }
-
-    /**
-     * @desc : 查询明细
-     * @date : 2024/3/15 16:43
-     * @author : 寇珊珊
-     */
-    @Pagination
-    public ResponseResultVO<Map<String, Object>> selectOutBoundSaleReturnItemInfoById(String id) {
-        Map<String, Object> result = new HashMap<>();
-        // 商品明细
-        List<OutboundItemResponse> outboundItemResponseList = outboundItemMapper.selectByCond(new OutboundItemQuery().setOutId(id));
-        result.put("itemList", outboundItemResponseList);
-        // 收款
-
-        // 附件
-        return ResponseResultUtil.success(result);
-    }
-
-
-    /**
      * @desc : 销售退货出库新建
      * @date : 2024/3/7 14:13
      * @author : 寇珊珊
@@ -636,27 +607,99 @@ public class OutboundSaleReturnService extends BaseService<Outbound> {
         return outStatus;
     }
 
+    /********************************************** 销售退货查询相关方法begin *************************************/
+    /**
+     * @desc : 一览页销售退货
+     * @author : 付斌
+     * @date : 2023/1/9 10:40
+     */
+    @Pagination
+    public ResponseResultVO<PageList<OutboundResponse>> selectByCond(OutboundQuery outboundQuery) {
+        outboundQuery.setOutType(Constant.OutType.SALE_RETURN.getName());
+        return super.mergeListWithCount(outboundQuery, outboundMapper.selectByCond(outboundQuery),
+                outboundMapper.countByCond(outboundQuery));
+    }
 
     /**
-     * @desc : 获取单据信息(编辑用)
-     * @date : 2024/3/16 16:28
-     * @author : 寇珊珊
+     * @desc : 一览页销售退货明细(货物、附件
+     * @author : 付斌
+     * @date : 2024-02-28 13:25
      */
-    public ResponseResultVO<?> selectByUpdate(String id) {
+    @Pagination
+    public ResponseResultVO<Map<String, Object>> selectOutboundInfoById(String id) {
+        Map<String, Object> result = new HashMap<>();
+        // 商品明细
+        List<OutboundItemResponse> outboundItem = outboundItemMapper.selectByCond(new OutboundItemQuery().setOutId(id));
+        result.put("outboundItem", outboundItem);
+
+        // 附件
+        return ResponseResultUtil.success(result);
+    }
+    /**
+     * @desc : 获取销售退货信息(编辑用)
+     * @author : 付斌
+     * @date : 2024-03-02 17:27
+     */
+    public ResponseResultVO<?> getOutReturnForUpdate(String id) {
         Map<String, Object> dataInfo = new HashMap<>();
-        //总单
-        OutboundResponse outboundResponse = outboundMapper.selectMessageByOtherQuery(new OutboundQuery().setOutId(id).setOutStatus(Constant.OutStatus.CHUKUZHONG.getName()));
-        //单据不存在
-        if (outboundResponse == null) {
-            return ResponseResultUtil.error(ErrorCodeEnum.THERE_ORDER_IS_NOT_CAN_OUTBOUND_QUANTITY.getCode(),
-                    ErrorCodeEnum.THERE_ORDER_IS_NOT_CAN_OUTBOUND_QUANTITY.getMessage());
-        }
+        OutboundResponse outboundResponse = outboundMapper.selectById(id);
         dataInfo.put("data", outboundResponse);
-        // 明细
-        List<OutboundItemResponse> outboundItemResponseList = outboundItemMapper.selectByCond(new OutboundItemQuery().setOutId(outboundResponse.getOutId()));
-        dataInfo.put("dataItem", outboundItemResponseList);
+
+        // 商品明细
+        List<OutboundItemResponse> outboundItemResponse = outboundItemMapper.selectByCondForReturnEdit(id);
+        dataInfo.put("dataItem", outboundItemResponse);
         return ResponseResultUtil.success(dataInfo);
     }
+    /********************************************** 销售退货查询相关方法end *************************************/
+
+//    /**
+//     * @desc : 条件查询
+//     * @date : 2024/3/18 11:20
+//     * @author : 寇珊珊
+//     */
+//    @Pagination
+//    public ResponseResultVO<PageList<InboundResponse>> selectByCond(OutboundQuery outboundQuery) {
+//        return super.mergeListWithCount(outboundQuery, outboundMapper.selectByCond(outboundQuery),
+//                outboundMapper.countByCond(outboundQuery));
+//    }
+//
+//    /**
+//     * @desc : 查询明细
+//     * @date : 2024/3/15 16:43
+//     * @author : 寇珊珊
+//     */
+//    @Pagination
+//    public ResponseResultVO<Map<String, Object>> selectOutBoundSaleReturnItemInfoById(String id) {
+//        Map<String, Object> result = new HashMap<>();
+//        // 商品明细
+//        List<OutboundItemResponse> outboundItemResponseList = outboundItemMapper.selectByCond(new OutboundItemQuery().setOutId(id));
+//        result.put("itemList", outboundItemResponseList);
+//        // 收款
+//
+//        // 附件
+//        return ResponseResultUtil.success(result);
+//    }
+//
+//    /**
+//     * @desc : 获取单据信息(编辑用)
+//     * @date : 2024/3/16 16:28
+//     * @author : 寇珊珊
+//     */
+//    public ResponseResultVO<?> selectByUpdate(String id) {
+//        Map<String, Object> dataInfo = new HashMap<>();
+//        //总单
+//        OutboundResponse outboundResponse = outboundMapper.selectMessageByOtherQuery(new OutboundQuery().setOutId(id).setOutStatus(Constant.OutStatus.CHUKUZHONG.getName()));
+//        //单据不存在
+//        if (outboundResponse == null) {
+//            return ResponseResultUtil.error(ErrorCodeEnum.THERE_ORDER_IS_NOT_CAN_OUTBOUND_QUANTITY.getCode(),
+//                    ErrorCodeEnum.THERE_ORDER_IS_NOT_CAN_OUTBOUND_QUANTITY.getMessage());
+//        }
+//        dataInfo.put("data", outboundResponse);
+//        // 明细
+//        List<OutboundItemResponse> outboundItemResponseList = outboundItemMapper.selectByCond(new OutboundItemQuery().setOutId(outboundResponse.getOutId()));
+//        dataInfo.put("dataItem", outboundItemResponseList);
+//        return ResponseResultUtil.success(dataInfo);
+//    }
 
 
 }

+ 601 - 343
src/main/java/com/dk/mdm/service/ivt/outbound/OutboundService.java

@@ -1,46 +1,17 @@
 package com.dk.mdm.service.ivt.outbound;
 
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-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.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.ivt.OutboundConvert;
 import com.dk.mdm.infrastructure.convert.ivt.OutboundItemConvert;
 import com.dk.mdm.mapper.ivt.OutboundItemMapper;
-import com.dk.mdm.mapper.pur.PurchaseItemMapper;
-import com.dk.mdm.mapper.sale.OrderItemMapper;
-import com.dk.mdm.mapper.sale.OrderMapper;
 import com.dk.mdm.model.pojo.ivt.Outbound;
 import com.dk.mdm.mapper.ivt.OutboundMapper;
 import com.dk.common.service.BaseService;
 import com.dk.common.mapper.BaseMapper;
-import com.dk.mdm.model.pojo.ivt.OutboundItem;
-import com.dk.mdm.model.pojo.sale.Order;
-import com.dk.mdm.model.pojo.sale.OrderItem;
-import com.dk.mdm.model.query.ivt.OutboundItemQuery;
-import com.dk.mdm.model.query.ivt.OutboundQuery;
-import com.dk.mdm.model.response.ivt.OutboundItemResponse;
-import com.dk.mdm.model.response.ivt.OutboundResponse;
-import com.dk.mdm.model.vo.ivt.OutboundItemVO;
-import com.dk.mdm.model.vo.ivt.OutboundVO;
 import com.dk.mdm.service.common.CommonService;
-import com.dk.mdm.service.sale.OrderItemService;
-import com.dk.mdm.service.sale.OrderService;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.math.BigDecimal;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
 @Service
 @Transactional
 public class OutboundService extends BaseService<Outbound> {
@@ -59,24 +30,9 @@ public class OutboundService extends BaseService<Outbound> {
     private OutboundMapper outboundMapper;
 
     @Autowired
-    private OutboundItemService outboundItemService;
-
-    @Autowired
     private OutboundItemMapper outboundItemMapper;
 
     @Autowired
-    private OrderService orderService;
-
-    @Autowired
-    private OrderMapper orderMapper;
-
-    @Autowired
-    private OrderItemService orderItemService;
-
-    @Autowired
-    private OrderItemMapper orderItemMapper;
-
-    @Autowired
     private CommonService commonService;
 
     @Autowired
@@ -85,304 +41,606 @@ public class OutboundService extends BaseService<Outbound> {
     @Autowired
     private OutboundItemConvert outboundItemConvert;
 
-    @Autowired
-    private PurchaseItemMapper purchaseItemMapper;
-
-    /**
-     * @desc : 条件查询
-     * @author : 付斌
-     * @date : 2023/1/9 10:40
-     */
-    @Pagination
-    public ResponseResultVO<PageList<OutboundResponse>> selectByCond(OutboundQuery outboundQuery) {
-        return super.mergeListWithCount(outboundQuery, outboundMapper.selectByCond(outboundQuery),
-                outboundMapper.countByCond(outboundQuery));
-    }
-
-    /**
-     * @desc : 查询订单明细(货物、收款、附件)
-     * @author : 付斌
-     * @date : 2024-02-28 13:25
-     */
-    @Pagination
-    public ResponseResultVO<Map<String, Object>> selectOutboundInfoById(String id) {
-        Map<String, Object> result = new HashMap<>();
-        // 商品明细
-        List<OutboundItemResponse> outboundItem = outboundItemMapper.selectByCond(new OutboundItemQuery().setOutId(id));
-        result.put("outboundItem", outboundItem);
-
-        // 收款
-
-        // 附件
-        return ResponseResultUtil.success(result);
-    }
-
-    /**
-     * @desc : 查询订单明细(货物、收款、附件)
-     * @author : 付斌
-     * @date : 2024-02-28 13:25
-     */
-    @Pagination
-    public ResponseResultVO selectById(String id) {
-
-        OutboundResponse outboundResponse = outboundMapper.selectById(id);
-        // 商品明细
-        List<OutboundItemResponse> outboundItem = outboundItemMapper.selectByCond(new OutboundItemQuery().setOutId(id));
-        outboundResponse.setGoodsList(outboundItem);
-
-        // 收款
-
-        // 附件
-        return ResponseResultUtil.success(outboundResponse);
-    }
-
-    /**
-     * @desc : 新建方法
-     * @author : 付斌
-     * @date : 2023/1/9 10:49
-     */
-    @Transactional(
-            rollbackFor = {Exception.class}
-    )
-    public ResponseResultVO<?> insert(OutboundVO outboundVO) {
-
-        // 获取单号
-        Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.OUTBOUND.getName(), false);
-        outboundVO.setOutId(codeMap.get("outId").toString()).setOutNo(codeMap.get("outNote").toString())
-                .setOutType(Constant.OutType.SALE.getName());
-        // 转化实体
-        Outbound outbound = outboundConvert.convertToPo(outboundVO);
-        // 总单保存
-        super.insert(outbound);
-
-        // 明细保存
-        if (outboundVO.getItemList() != null && outboundVO.getItemList().size() > 0) {
-            double sumOutingQty = 0;    // 合计出库中数量
-            double sumOutingAmt = 0;    // 合计出库中金额
-            OrderItem orderItemForUpdate;
-            for (OutboundItemVO outboundItemVO : outboundVO.getItemList()) {
-                OutboundItem outboundItem = outboundItemConvert.convertToPo(outboundItemVO);
-                outboundItem.setOutId(outbound.getOutId()).setCpId(outbound.getCpId()).setOutStatus(Constant.OutStatus.CHUKUZHONG.getName())
-                        .setOutType(Constant.OutType.SALE.getName());
-                outboundItemMapper.insert(outboundItem);
-
-                // 反写订单出库中数量、金额
-                orderItemForUpdate = orderItemMapper.selectByIdForUpdate(outboundItem.getFromItemId());
-                // 如果(商品数量-已出库数量) 小于(订单出库中数量+本次出库单出库中数量)
-                if ((orderItemForUpdate.getItemQty().subtract(orderItemForUpdate.getOutQty())).compareTo(orderItemForUpdate.getOutingQty().add(outboundItem.getOutingQty())) == -1) {
-                    throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ITEMQTY_NO_LESS_OUTQTY.getMessage());
-                }
-                OrderItem orderItemUpdate = new OrderItem();
-                orderItemUpdate.setOutingQty(orderItemForUpdate.getOutingQty().add(outboundItem.getOutingQty()))
-                        .setOutingAmt(orderItemForUpdate.getOutingAmt().add(outboundItem.getOutingAmt()))
-                        .setItemId(orderItemForUpdate.getItemId());
-                orderItemService.updateByUuid(orderItemUpdate);
-                // 累加出库中数量,金额
-                sumOutingQty += outboundItem.getOutingQty().doubleValue();
-                sumOutingAmt += outboundItem.getOutingAmt().doubleValue();
-
-            }
-            // 更新订单上的出库中数量,金额,状态
-            Order orderForUpdate = orderMapper.selectByIdForUpdate(outboundVO.getFromId());
-            Order orderUpdate = new Order();
-            orderUpdate.setOutingQty(orderForUpdate.getOutingQty().add(new BigDecimal(sumOutingQty)))
-                    .setOutingAmt(orderForUpdate.getOutingAmt().add(new BigDecimal(sumOutingAmt)))
-                    .setOutStatus(Constant.OutStatus.CHUKUZHONG.getName())
-                    .setOrderId(outboundVO.getFromId());
-            orderService.updateByUuid(orderUpdate);
-        }
-        return ResponseResultUtil.success();
-    }
-
-    /**
-     * @desc : 编辑方法
-     * @author : 付斌
-     * @date : 2023/1/9 10:49
-     */
-    @Transactional(
-            rollbackFor = {Exception.class}
-    )
-    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 (outboundItemForUpdate.getOutingQty().compareTo(outboundItemVO.getOutQty()) == -1) {
-                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.OUTINGQTY_NO_LESS_OUTQTY.getMessage());
-            }
-            orderItemForUpdate = orderItemMapper.selectByIdForUpdate(outboundItemVO.getFromItemId());
-
-            // (订单的商品数量-订单已出库数量)不能小于(订单之前的出库中数量 - 出库明细之前的出库中数量 + 出库明细现在的出库中数量)
-            if ((orderItemForUpdate.getItemQty().subtract(orderItemForUpdate.getOutQty())).compareTo(orderItemForUpdate.getOutingQty().subtract(outboundItemForUpdate.getOutingQty()).add(outboundItemVO.getOutingQty())) == -1) {
-                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ITEMQTY_NO_LESS_OUTQTY.getMessage());
-            }
-            // 更新订单明细出库中数量
-            OrderItem orderItemUpdate = new OrderItem();
-            orderItemUpdate.setOutingQty(orderItemForUpdate.getOutingQty().subtract(outboundItemForUpdate.getOutingQty()).add(outboundItemVO.getOutingQty()))
-                    .setOutingAmt(orderItemForUpdate.getOutingAmt().subtract(outboundItemForUpdate.getOutingAmt()).add(outboundItemVO.getOutingAmt()))
-                    .setItemId(orderItemForUpdate.getItemId());
-            orderItemService.updateByUuid(orderItemUpdate);
-            // 更新出库明细
-            OutboundItem outboundItem = outboundItemConvert.convertToPo(outboundItemVO);
-            outboundItemService.updateByUuid(outboundItem);
-        }
-
-        // 计算订单明细的出库中数量,金额合计
-        List<OrderItem> orderItemList = orderItemMapper.selectByZIdForUpdate(outboundVO.getFromId());
-        OrderItem orderItem = orderItemList.stream().reduce((x, y) -> {
-            OrderItem item = new OrderItem();
-            item.setOutingQty(x.getOutingQty().add(y.getOutingQty()));
-            item.setOutingAmt(x.getOutingAmt().add(y.getOutingAmt()));
-            return item;
-        }).get();
-        // 更新订单上的出库中数量,金额
-        Order orderUpdate = new Order();
-        orderUpdate.setOutingQty(orderItem.getOutingQty()).setOutingAmt(orderItem.getOutingAmt()).setOrderId(outboundVO.getFromId());
-        orderService.updateByUuid(orderUpdate);
-
-        // 转化实体、更新出库单总表
-        Outbound outbound = outboundConvert.convertToPo(outboundVO);
-        return ResponseResultUtil.success(super.update(outbound, new UpdateWrapper<Outbound>().lambda().eq(Outbound::getOutId,
-                UUID.fromString(outbound.getOutId()))));
-    }
-
-    /**
-     * @desc : 作废
-     * @author : 付斌
-     * @date : 2024-03-08 16:38
-     */
-    public ResponseResultVO<?> invalid(String id) {
-        Outbound outboundForUpdate  = outboundMapper.selectByIdForUpdate(id);
-        // 并发校验
-        if(!outboundForUpdate.getFlgValid()){
-            throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISFLGVALID_FALSE.getMessage());
-        }
-        // 如果出库数量或退货数量不是0,不能作废
-        if (outboundForUpdate.getOutQty().compareTo(BigDecimal.ZERO) != 0 || outboundForUpdate.getReturnQty().compareTo(BigDecimal.ZERO) != 0) {
-            throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISEXISTS_AFTER_OPERATE.getMessage());
-        }
-
-        // 查出并锁定所有的出库明细
-        List<OutboundItem> outboundItemList = outboundItemMapper.selectByZIdForUpdate(id);
-        OrderItem orderItemForUpdate;
-        for (OutboundItem outboundItemForUpdate : outboundItemList) {
-            orderItemForUpdate = orderItemMapper.selectByIdForUpdate(outboundItemForUpdate.getFromItemId());
-            // 更新订单明细出库中数量
-            OrderItem orderItemUpdate = new OrderItem();
-            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(outboundForUpdate.getFromId());
-        OrderItem orderItem = orderItemList.stream().reduce((x, y) -> {
-            OrderItem item = new OrderItem();
-            item.setOutingQty(x.getOutingQty().add(y.getOutingQty()));
-            item.setOutingAmt(x.getOutingAmt().add(y.getOutingAmt()));
-            return item;
-        }).get();
-        // 更新订单上的出库中数量,金额
-        Order orderUpdate = new Order();
-        orderUpdate.setOutingQty(orderItem.getOutingQty()).setOutingAmt(orderItem.getOutingAmt()).setOrderId(outboundForUpdate.getFromId());
-        if(orderUpdate.getOutingQty().compareTo(BigDecimal.ZERO) == 0){
-            orderUpdate.setOutStatus(Constant.OutStatus.DAICHUKU.getName());
-        }
-
-        orderService.updateByUuid(orderUpdate);
-
-        // 作废
-        Outbound outboundUpdate = new Outbound();
-        outboundUpdate.setFlgValid(false).setOutId(id);
-        super.update(outboundUpdate, new UpdateWrapper<Outbound>().lambda().eq(Outbound::getOutId,
-                UUID.fromString(outboundUpdate.getOutId())));
-        return ResponseResultUtil.success();
-    }
-
-    /**
-     * @desc : 获取订单信息(编辑用)
-     * @author : 付斌
-     * @date : 2024-03-02 17:27
-     */
-    public ResponseResultVO<?> getOutboundForUpdate(String id) {
-        Map<String, Object> dataInfo = new HashMap<>();
-        OutboundResponse outboundResponse = outboundMapper.selectById(id);
-        dataInfo.put("data", outboundResponse);
-
-        // 商品明细
-        List<OutboundItemResponse> outboundItemResponseList = outboundItemMapper.selectByCondForOutEdit(id);
-        dataInfo.put("dataItem", outboundItemResponseList);
-        return ResponseResultUtil.success(dataInfo);
-    }
-
-    /**
-     * @desc : 采购退货出库
-     * @author : 于继渤
-     * @date : 2023/1/9 10:49
-     */
-    @Transactional(
-            rollbackFor = {Exception.class}
-    )
-    public ResponseResultVO<?> insertOutBound(OutboundVO outboundVO) {
-
-        // 获取单号
-        Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.OUTBOUND.getName(), false);
-        outboundVO.setOutId(codeMap.get("outId").toString()).setOutNo(codeMap.get("outNote").toString())
-                .setOutType(Constant.OutType.PURRETURN.getName());
-        // 转化实体
-        Outbound outbound = outboundConvert.convertToPo(outboundVO);
-        // 总单保存
-        super.insert(outbound);
-
-        // 明细保存
-        if (outboundVO.getItemList() != null && outboundVO.getItemList().size() > 0) {
-            double sumOutingQty = 0;    // 合计出库中数量
-            double sumOutingAmt = 0;    // 合计出库中金额
-            for (OutboundItemVO outboundItemVO : outboundVO.getItemList()) {
-                OutboundItem outboundItem = outboundItemConvert.convertToPo(outboundItemVO);
-                outboundItem
-                        .setOutId(outbound.getOutId())
-                        .setCpId(outbound.getCpId())
-                        .setOutStatus(Constant.OutStatus.CHUKUZHONG.getName())
-                        .setOutType(Constant.OutType.PURRETURN.getName());
-                outboundItemMapper.insert(outboundItem);
-
-//				PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(outboundItem.getFromItemId());
-
-                // 如果商品数量小于订单+本次出库单上的出库中数量
-//				if(orderItem.getItemQty().compareTo(orderItem.getOutingQty().add(outboundItem.getOutingQty())) == -1){
-//					throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ITEMQTY_NO_LESS_OUTQTY.getMessage());
-//				}else{
-//					OrderItem orderItemUpdate = new OrderItem();
-//					orderItemUpdate.setOutingQty(orderItem.getOutingQty().add(outboundItem.getOutingQty()))
-//							.setOutingAmt(orderItem.getOutingAmt().add(outboundItem.getOutingAmt()))
-//							.setItemId(orderItem.getItemId());
-//					orderItemService.updateByUuid(orderItemUpdate);
-//					// 累加出库中数量,金额
-//					sumOutingQty += outboundItem.getOutingQty().doubleValue();
-//					sumOutingAmt += outboundItem.getOutingAmt().doubleValue();
-//				}
-            }
-//			// 更新订单上的出库中数量,金额,状态
-//			OrderResponse orderResponse = orderMapper.selectById(outboundVO.getFromId());
-//			Order orderUpdate = new Order();
-//			orderUpdate.setOutingQty(orderResponse.getOutingQty().add(new BigDecimal(sumOutingQty)))
-//					.setOutingAmt(orderResponse.getOutingAmt().add(new BigDecimal(sumOutingAmt)))
-//					.setOutStatus(Constant.OutStatus.CHUKUZHONG.getName())
-//					.setOrderId(outboundVO.getFromId());
-//			orderService.updateByUuid(orderUpdate);
-        }
-        return ResponseResultUtil.success();
-    }
 
+//    /**
+//     * @desc : 一览页销售出库
+//     * @author : 付斌
+//     * @date : 2023/1/9 10:40
+//     */
+//    @Pagination
+//    public ResponseResultVO<PageList<OutboundResponse>> selectByCond(OutboundQuery outboundQuery) {
+//        return super.mergeListWithCount(outboundQuery, outboundMapper.selectByCond(outboundQuery),
+//                outboundMapper.countByCond(outboundQuery));
+//    }
+//
+//    /**
+//     * @desc : 一览页销售出库明细(货物、附件)
+//     * @author : 付斌
+//     * @date : 2024-02-28 13:25
+//     */
+//    @Pagination
+//    public ResponseResultVO<Map<String, Object>> selectOutboundInfoById(String id) {
+//        Map<String, Object> result = new HashMap<>();
+//        // 商品明细
+//        List<OutboundItemResponse> outboundItem = outboundItemMapper.selectByCond(new OutboundItemQuery().setOutId(id));
+//        result.put("outboundItem", outboundItem);
+//
+//
+//        // 附件
+//        return ResponseResultUtil.success(result);
+//    }
+//
+//    /**
+//     * @desc : 查询出库明细(货物、附件)
+//     * @author : 付斌
+//     * @date : 2024-02-28 13:25
+//     */
+//    @Pagination
+//    public ResponseResultVO selectById(String id) {
+//
+//        OutboundResponse outboundResponse = outboundMapper.selectById(id);
+//        // 商品明细
+//        List<OutboundItemResponse> outboundItem = outboundItemMapper.selectByCond(new OutboundItemQuery().setOutId(id));
+//        outboundResponse.setGoodsList(outboundItem);
+//
+//        // 附件
+//        return ResponseResultUtil.success(outboundResponse);
+//    }
+//
+//    /**
+//     * @desc : 获取销售出库信息(编辑用)
+//     * @author : 付斌
+//     * @date : 2024-03-02 17:27
+//     */
+//    public ResponseResultVO<?> getOutboundForUpdate(String id) {
+//        Map<String, Object> dataInfo = new HashMap<>();
+//        OutboundResponse outboundResponse = outboundMapper.selectById(id);
+//        dataInfo.put("data", outboundResponse);
+//
+//        // 商品明细
+//        List<OutboundItemResponse> outboundItemResponseList = outboundItemMapper.selectByCondForOutEdit(id);
+//        dataInfo.put("dataItem", outboundItemResponseList);
+//        return ResponseResultUtil.success(dataInfo);
+//    }
+//
+//    /**
+//     * @desc : 获取销售退货信息(编辑用)
+//     * @author : 付斌
+//     * @date : 2024-03-02 17:27
+//     */
+//    public ResponseResultVO<?> getOutReturnForUpdate(String id) {
+//        Map<String, Object> dataInfo = new HashMap<>();
+//        OutboundResponse outboundResponse = outboundMapper.selectById(id);
+//        dataInfo.put("data", outboundResponse);
+//
+//        // 商品明细
+//        List<OutboundItemResponse> outboundItemResponse = outboundItemMapper.selectByCondForReturnEdit(id);
+//        dataInfo.put("dataItem", outboundItemResponse);
+//        return ResponseResultUtil.success(dataInfo);
+//    }
+
+
+//    /**
+//     * @desc : 新建方法
+//     * @author : 付斌
+//     * @date : 2023/1/9 10:49
+//     */
+//    @Transactional(
+//            rollbackFor = {Exception.class}
+//    )
+//    public ResponseResultVO<?> insert(OutboundVO outboundVO) {
+//
+//        // 获取单号
+//        Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.OUTBOUND.getName(), false);
+//        outboundVO.setOutId(codeMap.get("outId").toString()).setOutNo(codeMap.get("outNote").toString())
+//                .setOutType(Constant.OutType.SALE.getName());
+//        // 转化实体
+//        Outbound outbound = outboundConvert.convertToPo(outboundVO);
+//        // 总单保存
+//        super.insert(outbound);
+//
+//        // 明细保存
+//        if (outboundVO.getItemList() != null && outboundVO.getItemList().size() > 0) {
+//            double sumOutingQty = 0;    // 合计出库中数量
+//            double sumOutingAmt = 0;    // 合计出库中金额
+//            OrderItem orderItemForUpdate;
+//            for (OutboundItemVO outboundItemVO : outboundVO.getItemList()) {
+//                OutboundItem outboundItem = outboundItemConvert.convertToPo(outboundItemVO);
+//                outboundItem.setOutId(outbound.getOutId()).setCpId(outbound.getCpId()).setOutStatus(Constant.OutStatus.CHUKUZHONG.getName())
+//                        .setOutType(Constant.OutType.SALE.getName());
+//                outboundItemMapper.insert(outboundItem);
+//
+//                // 反写订单出库中数量、金额
+//                orderItemForUpdate = orderItemMapper.selectByIdForUpdate(outboundItem.getFromItemId());
+//                // 如果(商品数量-已出库数量) 小于(订单出库中数量+本次出库单出库中数量)
+//                if ((orderItemForUpdate.getItemQty().subtract(orderItemForUpdate.getOutQty())).compareTo(orderItemForUpdate.getOutingQty().add(outboundItem.getOutingQty())) == -1) {
+//                    throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ITEMQTY_NO_LESS_OUTQTY.getMessage());
+//                }
+//                OrderItem orderItemUpdate = new OrderItem();
+//                orderItemUpdate.setOutingQty(orderItemForUpdate.getOutingQty().add(outboundItem.getOutingQty()))
+//                        .setOutingAmt(orderItemForUpdate.getOutingAmt().add(outboundItem.getOutingAmt()))
+//                        .setItemId(orderItemForUpdate.getItemId());
+//                orderItemService.updateByUuid(orderItemUpdate);
+//                // 累加出库中数量,金额
+//                sumOutingQty += outboundItem.getOutingQty().doubleValue();
+//                sumOutingAmt += outboundItem.getOutingAmt().doubleValue();
+//
+//            }
+//            // 更新订单上的出库中数量,金额,状态
+//            Order orderForUpdate = orderMapper.selectByIdForUpdate(outboundVO.getFromId());
+//            Order orderUpdate = new Order();
+//            orderUpdate.setOutingQty(orderForUpdate.getOutingQty().add(new BigDecimal(sumOutingQty)))
+//                    .setOutingAmt(orderForUpdate.getOutingAmt().add(new BigDecimal(sumOutingAmt)))
+//                    .setOutStatus(Constant.OutStatus.CHUKUZHONG.getName())
+//                    .setOrderId(outboundVO.getFromId());
+//            orderService.updateByUuid(orderUpdate);
+//        }
+//        return ResponseResultUtil.success();
+//    }
+//
+//    /**
+//     * @desc : 编辑方法
+//     * @author : 付斌
+//     * @date : 2023/1/9 10:49
+//     */
+//    @Transactional(
+//            rollbackFor = {Exception.class}
+//    )
+//    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 (outboundItemForUpdate.getOutingQty().compareTo(outboundItemVO.getOutQty()) == -1) {
+//                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.OUTINGQTY_NO_LESS_OUTQTY.getMessage());
+//            }
+//            orderItemForUpdate = orderItemMapper.selectByIdForUpdate(outboundItemVO.getFromItemId());
+//
+//            // (订单的商品数量-订单已出库数量)不能小于(订单之前的出库中数量 - 出库明细之前的出库中数量 + 出库明细现在的出库中数量)
+//            if ((orderItemForUpdate.getItemQty().subtract(orderItemForUpdate.getOutQty())).compareTo(orderItemForUpdate.getOutingQty().subtract(outboundItemForUpdate.getOutingQty()).add(outboundItemVO.getOutingQty())) == -1) {
+//                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ITEMQTY_NO_LESS_OUTQTY.getMessage());
+//            }
+//            // 更新订单明细出库中数量
+//            OrderItem orderItemUpdate = new OrderItem();
+//            orderItemUpdate.setOutingQty(orderItemForUpdate.getOutingQty().subtract(outboundItemForUpdate.getOutingQty()).add(outboundItemVO.getOutingQty()))
+//                    .setOutingAmt(orderItemForUpdate.getOutingAmt().subtract(outboundItemForUpdate.getOutingAmt()).add(outboundItemVO.getOutingAmt()))
+//                    .setItemId(orderItemForUpdate.getItemId());
+//            orderItemService.updateByUuid(orderItemUpdate);
+//            // 更新出库明细
+//            OutboundItem outboundItem = outboundItemConvert.convertToPo(outboundItemVO);
+//            outboundItemService.updateByUuid(outboundItem);
+//        }
+//
+//        // 计算订单明细的出库中数量,金额合计
+//        List<OrderItem> orderItemList = orderItemMapper.selectByZIdForUpdate(outboundVO.getFromId());
+//        OrderItem orderItem = orderItemList.stream().reduce((x, y) -> {
+//            OrderItem item = new OrderItem();
+//            item.setOutingQty(x.getOutingQty().add(y.getOutingQty()));
+//            item.setOutingAmt(x.getOutingAmt().add(y.getOutingAmt()));
+//            return item;
+//        }).get();
+//        // 更新订单上的出库中数量,金额
+//        Order orderUpdate = new Order();
+//        orderUpdate.setOutingQty(orderItem.getOutingQty()).setOutingAmt(orderItem.getOutingAmt()).setOrderId(outboundVO.getFromId());
+//        orderService.updateByUuid(orderUpdate);
+//
+//        // 转化实体、更新出库单总表
+//        Outbound outbound = outboundConvert.convertToPo(outboundVO);
+//        return ResponseResultUtil.success(super.update(outbound, new UpdateWrapper<Outbound>().lambda().eq(Outbound::getOutId,
+//                UUID.fromString(outbound.getOutId()))));
+//    }
+//
+//    /**
+//     * @desc : 作废
+//     * @author : 付斌
+//     * @date : 2024-03-08 16:38
+//     */
+//    public ResponseResultVO<?> invalid(String id) {
+//        Outbound outboundForUpdate = outboundMapper.selectByIdForUpdate(id);
+//        // 并发校验
+//        if (!outboundForUpdate.getFlgValid()) {
+//            throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISFLGVALID_FALSE.getMessage());
+//        }
+//        // 如果出库数量或退货数量不是0,不能作废
+//        if (outboundForUpdate.getOutQty().compareTo(BigDecimal.ZERO) != 0 || outboundForUpdate.getReturnQty().compareTo(BigDecimal.ZERO) != 0) {
+//            throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISEXISTS_AFTER_OPERATE.getMessage());
+//        }
+//
+//        // 查出并锁定所有的出库明细
+//        List<OutboundItem> outboundItemList = outboundItemMapper.selectByZIdForUpdate(id);
+//        OrderItem orderItemForUpdate;
+//        for (OutboundItem outboundItemForUpdate : outboundItemList) {
+//            orderItemForUpdate = orderItemMapper.selectByIdForUpdate(outboundItemForUpdate.getFromItemId());
+//            // 更新订单明细出库中数量
+//            OrderItem orderItemUpdate = new OrderItem();
+//            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(outboundForUpdate.getFromId());
+//        OrderItem orderItem = orderItemList.stream().reduce((x, y) -> {
+//            OrderItem item = new OrderItem();
+//            item.setOutingQty(x.getOutingQty().add(y.getOutingQty()));
+//            item.setOutingAmt(x.getOutingAmt().add(y.getOutingAmt()));
+//            return item;
+//        }).get();
+//        // 更新订单上的出库中数量,金额
+//        Order orderUpdate = new Order();
+//        orderUpdate.setOutingQty(orderItem.getOutingQty()).setOutingAmt(orderItem.getOutingAmt()).setOrderId(outboundForUpdate.getFromId());
+//        if (orderUpdate.getOutingQty().compareTo(BigDecimal.ZERO) == 0) {
+//            orderUpdate.setOutStatus(Constant.OutStatus.DAICHUKU.getName());
+//        }
+//
+//        orderService.updateByUuid(orderUpdate);
+//
+//        // 作废
+//        Outbound outboundUpdate = new Outbound();
+//        outboundUpdate.setFlgValid(false).setOutId(id);
+//        super.update(outboundUpdate, new UpdateWrapper<Outbound>().lambda().eq(Outbound::getOutId,
+//                UUID.fromString(outboundUpdate.getOutId())));
+//        return ResponseResultUtil.success();
+//    }
+
+
+//    /**
+//     * @desc : 新建销售出库退货
+//     * @author : 付斌
+//     * @date : 2023/1/9 10:49
+//     */
+//    @Transactional(
+//            rollbackFor = {Exception.class}
+//    )
+//    public ResponseResultVO<?> insertOutReturn(OutboundVO outboundVO) {
+//
+//        // 获取单号
+//        Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.OUTBOUND.getName(), false);
+//        outboundVO.setOutId(codeMap.get("outId").toString()).setOutNo(codeMap.get("outNote").toString())
+//                .setOutType(Constant.OutType.SALE.getName());
+//        // 转化实体
+//        Outbound outbound = outboundConvert.convertToPo(outboundVO);
+//        // 总单保存
+//        super.insert(outbound);
+//
+//        // 明细保存
+//        if (outboundVO.getItemList() != null && outboundVO.getItemList().size() > 0) {
+//            OrderItem orderItemForUpdate;
+//            OutboundItem outboundItemForUpdate;
+//            String sOrderId = null;
+//
+//            // 出库IdList,一个退货单可能有多个出库单
+//            List<String> outIdList = new ArrayList<>();
+//            for (OutboundItemVO outboundItemVO : outboundVO.getItemList()) {
+//                // 把出库Id存起来
+//                if (!outIdList.contains(outboundItemVO.getSOutId())) {
+//                    outIdList.add(outboundItemVO.getSOutId());
+//                }
+//                OutboundItem outboundItem = outboundItemConvert.convertToPo(outboundItemVO);
+//                outboundItem.setOutId(outbound.getOutId()).setCpId(outbound.getCpId()).setOutStatus(Constant.OutStatus.CHUKUZHONG.getName())
+//                        .setOutType(Constant.OutType.SALE.getName());
+//                outboundItemMapper.insert(outboundItem);
+//
+//                /*********************  反写出库明细退货数量、金额 begin **********************/
+//                outboundItemForUpdate = outboundItemMapper.selectByIdForUpdate(outboundItemVO.getSOutItemId());
+//                // 如果出库数量小于订单上已退货+本次退货数量
+//                if (outboundItemForUpdate.getOutQty().compareTo(outboundItemForUpdate.getReturnQty().add(outboundItemVO.getOutingQty().abs())) == -1) {
+//                    throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.OUTQTY_NO_LESS_RETURNQTY.getMessage());
+//                }
+//                OutboundItem outboundItemUpdate = new OutboundItem();
+//                outboundItemUpdate.setReturnQty(outboundItemForUpdate.getReturnQty().add(outboundItemVO.getOutingQty().abs()))
+//                        .setReturnAmt(outboundItemForUpdate.getReturnAmt().add(outboundItemVO.getOutingAmt().abs()))
+//                        .setItemId(outboundItemForUpdate.getItemId());
+//                outboundItemService.updateByUuid(outboundItemUpdate);
+//                /*********************  反写出库明细退货数量、金额 end **********************/
+//
+//
+//                /*********************  反写订单明细退货数量、金额 begin **********************/
+//                // 没有订单的化,不需要更新
+//                if (outboundItemVO.getSOrderItemId() != null) {
+//                    sOrderId = outboundItemVO.getSOrderId();
+//                    orderItemForUpdate = orderItemMapper.selectByIdForUpdate(outboundItemVO.getSOrderItemId());
+//                    // 如果出库数量小于订单上已退货+本次退货数量
+//                    if (orderItemForUpdate.getOutQty().compareTo(orderItemForUpdate.getReturnQty().add(outboundItemVO.getOutingQty().abs())) == -1) {
+//                        throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.OUTQTY_NO_LESS_RETURNQTY.getMessage());
+//                    }
+//                    OrderItem orderItemUpdate = new OrderItem();
+//                    orderItemUpdate.setReturnQty(orderItemForUpdate.getReturnQty().add(outboundItemVO.getOutingQty().abs()))
+//                            .setReturnAmt(orderItemForUpdate.getReturnAmt().add(outboundItemVO.getOutingAmt().abs()))
+//                            .setItemId(orderItemForUpdate.getItemId());
+//                    orderItemService.updateByUuid(orderItemUpdate);
+//                }
+//                /*********************  反写订单明细退货数量、金额 end **********************/
+//
+//            }
+//            // 可能有多个出库单,所以要循环更新总单
+//            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);
+//                super.updateByUuid(outboundUpdate);
+//            }
+//
+//            // 如果有订单,更新订单总单
+//            if (sOrderId != null) {
+//                // 计算订单明细的退货数量,金额合计
+//                List<OrderItem> orderItemList = orderItemMapper.selectByZIdForUpdate(sOrderId);
+//                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(sOrderId);
+//                orderService.updateByUuid(orderUpdate);
+//            }
+//        }
+//        return ResponseResultUtil.success();
+//    }
+//
+//    /**
+//     * @desc : 编辑方法
+//     * @author : 付斌
+//     * @date : 2023/1/9 10:49
+//     */
+//    @Transactional(
+//            rollbackFor = {Exception.class}
+//    )
+//    public ResponseResultVO<Boolean> updateOutReturn(OutboundVO outboundVO) {
+//        // 订单明细实体
+//        OrderItem orderItemForUpdate;
+//        // 出库明细实体
+//        OutboundItem outboundItemForUpdate;// 出库退货明细
+//        OutboundItem outboundItemSourceForUpdate;// 源出库明细
+//        // 源出库IdList,一个退货单可能有多个出库单
+//        List<String> outIdList = new ArrayList<>();
+//        String sOrderId = null;
+//
+//        // 编辑退货明细
+//        List<OutboundItemVO> editOutboundItemVOList = outboundVO.getItemList();
+//        for (OutboundItemVO outboundItemVO : editOutboundItemVOList) {
+//            // 把源出库Id存起来
+//            if (!outIdList.contains(outboundItemVO.getSOutId())) {
+//                outIdList.add(outboundItemVO.getSOutId());
+//            }
+//
+//            outboundItemForUpdate = outboundItemMapper.selectByIdForUpdate(outboundItemVO.getItemId());
+//            outboundItemSourceForUpdate = outboundItemMapper.selectByIdForUpdate(outboundItemVO.getSOutItemId());
+//
+//            // |出库退货明细出库中数量|不能小于|出库退货明细已出库中数量|
+//            if (outboundItemForUpdate.getOutQty().compareTo(outboundItemSourceForUpdate.getReturnQty().subtract(outboundItemForUpdate.getOutingQty().abs()).add(outboundItemVO.getOutingQty().abs())) == -1) {
+//                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.OUTQTY_NO_LESS_RETURNQTY.getMessage());
+//            }
+//
+//            // 源入库明细已出库数量不能小于|出库退货明细数量|
+//            if (outboundItemSourceForUpdate.getOutQty().compareTo(outboundItemVO.getOutingQty().abs()) == -1) {
+//                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.RETURNQTY_NO_LESS_INTOINGQTY.getMessage());
+//            }
+//            // 更新出库明细退货数量
+//            OutboundItem outboundItemUpdate = new OutboundItem();
+//            outboundItemUpdate.setReturnQty(outboundItemSourceForUpdate.getReturnQty().subtract(outboundItemForUpdate.getOutingQty().abs()).add(outboundItemVO.getOutingQty().abs()))
+//                    .setReturnAmt(outboundItemSourceForUpdate.getReturnAmt().subtract(outboundItemForUpdate.getOutingAmt().abs()).add(outboundItemVO.getOutingAmt().abs()))
+//                    .setItemId(outboundItemSourceForUpdate.getItemId());
+//            outboundItemService.updateByUuid(outboundItemUpdate);
+//
+//            // 没有订单的化,不需要更新
+//            if (outboundItemVO.getSOrderItemId() != null) {
+//                sOrderId = outboundItemVO.getSOrderId();
+//                // 更新订单明细退货数量
+//                orderItemForUpdate = orderItemMapper.selectByIdForUpdate(outboundItemVO.getSOrderItemId());
+//                OrderItem orderItemUpdate = new OrderItem();
+//                orderItemUpdate.setReturnQty(orderItemForUpdate.getReturnQty().subtract(outboundItemForUpdate.getOutingQty().abs()).add(outboundItemVO.getOutingQty().abs()))
+//                        .setReturnAmt(orderItemForUpdate.getReturnAmt().subtract(outboundItemForUpdate.getOutingAmt().abs()).add(outboundItemVO.getOutingAmt().abs()))
+//                        .setItemId(orderItemForUpdate.getItemId());
+//                orderItemService.updateByUuid(orderItemUpdate);
+//            }
+//
+//            // 更新出库明细
+//            OutboundItem outboundItem = outboundItemConvert.convertToPo(outboundItemVO);
+//            outboundItemService.updateByUuid(outboundItem);
+//        }
+//
+//        // 可能有多个出库单,所以要循环更新总单
+//        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);
+//            super.updateByUuid(outboundUpdate);
+//        }
+//
+//        // 如果有订单,更新订单总单
+//        if (sOrderId != null) {
+//            // 计算订单明细的退货数量,金额合计
+//            List<OrderItem> orderItemList = orderItemMapper.selectByZIdForUpdate(sOrderId);
+//            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(sOrderId);
+//            orderService.updateByUuid(orderUpdate);
+//        }
+//
+//        // 转化实体、更新出库单总表
+//        Outbound outbound = outboundConvert.convertToPo(outboundVO);
+//        return ResponseResultUtil.success(super.update(outbound, new UpdateWrapper<Outbound>().lambda().eq(Outbound::getOutId,
+//                UUID.fromString(outbound.getOutId()))));
+//    }
+//
+//    /**
+//     * @desc : 作废
+//     * @author : 付斌
+//     * @date : 2024-03-08 16:38
+//     */
+//    public ResponseResultVO<?> invalidOutReturn(String id) {
+//        Outbound outboundForUpdate = outboundMapper.selectByIdForUpdate(id);
+//        // 并发校验
+//        if (!outboundForUpdate.getFlgValid()) {
+//            throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISFLGVALID_FALSE.getMessage());
+//        }
+//        // 如果出库数量或退货数量不是0,不能作废
+//        if (outboundForUpdate.getOutQty().compareTo(BigDecimal.ZERO) != 0 || outboundForUpdate.getReturnQty().compareTo(BigDecimal.ZERO) != 0) {
+//            throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISEXISTS_AFTER_OPERATE.getMessage());
+//        }
+//
+//        // 查出并锁定所有的出库明细
+//        List<OutboundItem> outboundItemForUpdateList = outboundItemMapper.selectByZIdForUpdate(id);
+//        // 出库IdList,一个退货单可能有多个出库单
+//        List<String> outIdList = new ArrayList<>();
+//        OrderItem orderItemForUpdate;
+//        String sOrderId = null;
+//
+//        for (OutboundItem outboundItemForUpdate : outboundItemForUpdateList) {
+//            // 把出库Id存起来
+//            if (!outIdList.contains(outboundItemForUpdate.getSOutId())) {
+//                outIdList.add(outboundItemForUpdate.getSOutId());
+//            }
+//            sOrderId = outboundItemForUpdate.getSOrderId();
+//
+//            // 更新出库明细退货数量
+//            outboundItemForUpdate = outboundItemMapper.selectByIdForUpdate(outboundItemForUpdate.getSOutItemId());
+//            OutboundItem outboundItemUpdate = new OutboundItem();
+//            outboundItemUpdate.setReturnQty(outboundItemForUpdate.getReturnQty().subtract(outboundItemForUpdate.getOutingQty()))
+//                    .setReturnAmt(outboundItemForUpdate.getReturnAmt().subtract(outboundItemForUpdate.getOutAmt()))
+//                    .setItemId(outboundItemForUpdate.getItemId());
+//            outboundItemService.updateByUuid(outboundItemUpdate);
+//
+//            // 更新订单明细退货数量
+//            orderItemForUpdate = orderItemMapper.selectByIdForUpdate(outboundItemForUpdate.getSOrderItemId());
+//            OrderItem orderItemUpdate = new OrderItem();
+//            orderItemUpdate.setReturnQty(orderItemForUpdate.getReturnQty().subtract(outboundItemForUpdate.getOutingQty()))
+//                    .setReturnAmt(orderItemForUpdate.getReturnAmt().subtract(outboundItemForUpdate.getOutAmt()))
+//                    .setItemId(orderItemForUpdate.getItemId());
+//            orderItemService.updateByUuid(orderItemUpdate);
+//        }
+//
+//        // 可能有多个出库单,所以要循环更新总单
+//        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);
+//            super.updateByUuid(outboundUpdate);
+//        }
+//
+//        if (sOrderId != null) {
+//            // 计算订单明细的退货数量,金额合计
+//            List<OrderItem> orderItemList = orderItemMapper.selectByZIdForUpdate(sOrderId);
+//            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(sOrderId);
+//            orderService.updateByUuid(orderUpdate);
+//        }
+//
+//        // 作废
+//        Outbound outboundUpdate = new Outbound();
+//        outboundUpdate.setFlgValid(false).setOutId(id);
+//        super.update(outboundUpdate, new UpdateWrapper<Outbound>().lambda().eq(Outbound::getOutId,
+//                UUID.fromString(outboundUpdate.getOutId())));
+//        return ResponseResultUtil.success();
+//    }
+
+//    /**
+//     * @desc : 采购退货出库
+//     * @author : 于继渤
+//     * @date : 2023/1/9 10:49
+//     */
+//    @Transactional(
+//            rollbackFor = {Exception.class}
+//    )
+//    public ResponseResultVO<?> insertOutBound(OutboundVO outboundVO) {
+//
+//        // 获取单号
+//        Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.OUTBOUND.getName(), false);
+//        outboundVO.setOutId(codeMap.get("outId").toString()).setOutNo(codeMap.get("outNote").toString())
+//                .setOutType(Constant.OutType.PURRETURN.getName());
+//        // 转化实体
+//        Outbound outbound = outboundConvert.convertToPo(outboundVO);
+//        // 总单保存
+//        super.insert(outbound);
+//
+//        // 明细保存
+//        if (outboundVO.getItemList() != null && outboundVO.getItemList().size() > 0) {
+//            double sumOutingQty = 0;    // 合计出库中数量
+//            double sumOutingAmt = 0;    // 合计出库中金额
+//            for (OutboundItemVO outboundItemVO : outboundVO.getItemList()) {
+//                OutboundItem outboundItem = outboundItemConvert.convertToPo(outboundItemVO);
+//                outboundItem
+//                        .setOutId(outbound.getOutId())
+//                        .setCpId(outbound.getCpId())
+//                        .setOutStatus(Constant.OutStatus.CHUKUZHONG.getName())
+//                        .setOutType(Constant.OutType.PURRETURN.getName());
+//                outboundItemMapper.insert(outboundItem);
+//
+////				PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(outboundItem.getFromItemId());
+//
+//                // 如果商品数量小于订单+本次出库单上的出库中数量
+////				if(orderItem.getItemQty().compareTo(orderItem.getOutingQty().add(outboundItem.getOutingQty())) == -1){
+////					throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ITEMQTY_NO_LESS_OUTQTY.getMessage());
+////				}else{
+////					OrderItem orderItemUpdate = new OrderItem();
+////					orderItemUpdate.setOutingQty(orderItem.getOutingQty().add(outboundItem.getOutingQty()))
+////							.setOutingAmt(orderItem.getOutingAmt().add(outboundItem.getOutingAmt()))
+////							.setItemId(orderItem.getItemId());
+////					orderItemService.updateByUuid(orderItemUpdate);
+////					// 累加出库中数量,金额
+////					sumOutingQty += outboundItem.getOutingQty().doubleValue();
+////					sumOutingAmt += outboundItem.getOutingAmt().doubleValue();
+////				}
+//            }
+////			// 更新订单上的出库中数量,金额,状态
+////			OrderResponse orderResponse = orderMapper.selectById(outboundVO.getFromId());
+////			Order orderUpdate = new Order();
+////			orderUpdate.setOutingQty(orderResponse.getOutingQty().add(new BigDecimal(sumOutingQty)))
+////					.setOutingAmt(orderResponse.getOutingAmt().add(new BigDecimal(sumOutingAmt)))
+////					.setOutStatus(Constant.OutStatus.CHUKUZHONG.getName())
+////					.setOrderId(outboundVO.getFromId());
+////			orderService.updateByUuid(orderUpdate);
+//        }
+//        return ResponseResultUtil.success();
+//    }
 }

+ 28 - 2
src/main/java/com/dk/mdm/service/pur/PurchaseService.java

@@ -18,6 +18,7 @@ import com.dk.mdm.mapper.pur.PurchaseMapper;
 import com.dk.common.service.BaseService;
 import com.dk.common.mapper.BaseMapper;
 import com.dk.mdm.model.pojo.pur.PurchaseItem;
+import com.dk.mdm.model.pojo.sale.Order;
 import com.dk.mdm.model.query.pur.PurchaseItemQuery;
 import com.dk.mdm.model.query.pur.PurchaseQuery;
 import com.dk.mdm.model.response.pur.PurchaseItemResponse;
@@ -33,6 +34,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
@@ -236,8 +238,8 @@ public class PurchaseService extends BaseService<Purchase> {
         // 编辑的
         List<PurchaseItemVO> editPurchaseItemVOList = purchasevo.getEditPurchaseItemList().stream().filter(it -> it.getItemId() != null).collect(Collectors.toList());
         for (PurchaseItemVO purchaseItemVO : editPurchaseItemVOList) {
-            // 商品数量不能小于入库中数量
-            if (purchaseItemVO.getItemQty().compareTo(purchaseItemVO.getIntoQty()) == -1) {
+            // 商品数量不能小于可转入库数量数量(入库中+已入库)
+            if (purchaseItemVO.getItemQty().compareTo(purchaseItemVO.getIntoQty().add(purchaseItemVO.getIntoingQty())) == -1) {
                 throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ITEMQTY_NO_LESS_INTOQTY.getMessage());
             } else {
                 PurchaseItem purchaseItem = purchaseItemConvert.convertToPo(purchaseItemVO);
@@ -249,6 +251,30 @@ public class PurchaseService extends BaseService<Purchase> {
     }
 
     /**
+     * @desc : 作废
+     * @author : 常皓宁
+     * @date : 2024-03-08 16:38
+     */
+    public ResponseResultVO<?> invalid(String id) {
+        Purchase purForUpdate = purchaseMapper.selectByIdForUpdate(id);
+        // 并发校验
+        if (!purForUpdate.getFlgValid()) {
+            throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISFLGVALID_FALSE.getMessage());
+        }
+
+        // 如果入库中数量或已入库数量不是0,不能作废
+        if (purForUpdate.getIntoQty().compareTo(BigDecimal.ZERO) != 0 || purForUpdate.getIntoingQty().compareTo(BigDecimal.ZERO) != 0) {
+            throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISEXISTS_AFTER_OPERATE.getMessage());
+        }
+        // 作废
+        Purchase purUpdate = new Purchase();
+        purUpdate.setFlgValid(false).setPurId(id);
+        super.update(purUpdate, new UpdateWrapper<Purchase>().lambda().eq(Purchase::getPurId,
+                UUID.fromString(purUpdate.getPurId ())));
+        return ResponseResultUtil.success();
+    }
+
+    /**
      * @desc : 采购订单 转 采购入库   (目前废弃)
      * @author : 王英杰
      * @date : 2024年3月11日