ghj 1 жил өмнө
parent
commit
d3a70171ee
53 өөрчлөгдсөн 921 нэмэгдсэн , 1614 устгасан
  1. 2 2
      module-erp/src/main/java/com/hys/app/controller/erp/purchase/WarehouseEntryManagerController.java
  2. 21 8
      module-erp/src/main/java/com/hys/app/controller/erp/sale/OrderController.java
  3. 5 34
      module-erp/src/main/java/com/hys/app/controller/erp/sale/OrderReturnManagerController.java
  4. 11 8
      module-erp/src/main/java/com/hys/app/controller/erp/warehouse/StockDamageReportManagerController.java
  5. 16 8
      module-erp/src/main/java/com/hys/app/controller/erp/warehouse/StockInventoryManagerController.java
  6. 2 9
      module-erp/src/main/java/com/hys/app/controller/erp/warehouse/WarehouseOutManagerController.java
  7. 28 0
      module-erp/src/main/java/com/hys/app/converter/erp/OrderConverter.java
  8. 7 7
      module-erp/src/main/java/com/hys/app/converter/erp/OrderReturnConverter.java
  9. 0 15
      module-erp/src/main/java/com/hys/app/converter/erp/OrderReturnItemConverter.java
  10. 1 1
      module-erp/src/main/java/com/hys/app/mapper/erp/OrderMapper.java
  11. 151 7
      module-erp/src/main/java/com/hys/app/model/erp/dos/OrderDO.java
  12. 18 7
      module-erp/src/main/java/com/hys/app/model/erp/dos/OrderReturnDO.java
  13. 5 211
      module-erp/src/main/java/com/hys/app/model/erp/dos/StockInventory.java
  14. 2 1
      module-erp/src/main/java/com/hys/app/model/erp/dos/WarehouseOutDO.java
  15. 14 4
      module-erp/src/main/java/com/hys/app/model/erp/dto/OrderDTO.java
  16. 5 0
      module-erp/src/main/java/com/hys/app/model/erp/dto/OrderItemDTO.java
  17. 3 0
      module-erp/src/main/java/com/hys/app/model/erp/dto/OrderQueryParams.java
  18. 10 36
      module-erp/src/main/java/com/hys/app/model/erp/dto/OrderReturnDTO.java
  19. 0 3
      module-erp/src/main/java/com/hys/app/model/erp/dto/OrderReturnItemDTO.java
  20. 8 151
      module-erp/src/main/java/com/hys/app/model/erp/dto/StockDamageReportDTO.java
  21. 3 267
      module-erp/src/main/java/com/hys/app/model/erp/dto/StockDamageReportProductDTO.java
  22. 27 148
      module-erp/src/main/java/com/hys/app/model/erp/dto/StockInventoryDTO.java
  23. 5 80
      module-erp/src/main/java/com/hys/app/model/erp/dto/StockInventoryParam.java
  24. 6 151
      module-erp/src/main/java/com/hys/app/model/erp/dto/StockInventoryProductDTO.java
  25. 2 3
      module-erp/src/main/java/com/hys/app/model/erp/dto/WarehouseOutDTO.java
  26. 36 0
      module-erp/src/main/java/com/hys/app/model/erp/enums/ReturnOrderStatusEnum.java
  27. 19 16
      module-erp/src/main/java/com/hys/app/model/erp/enums/SaleOrderStatusEnum.java
  28. 37 0
      module-erp/src/main/java/com/hys/app/model/erp/enums/WarehouseOutTypeEnum.java
  29. 0 21
      module-erp/src/main/java/com/hys/app/model/erp/vo/OrderReturnAllowable.java
  30. 15 0
      module-erp/src/main/java/com/hys/app/model/erp/vo/OrderReturnItemVO.java
  31. 20 2
      module-erp/src/main/java/com/hys/app/model/erp/vo/OrderReturnVO.java
  32. 17 7
      module-erp/src/main/java/com/hys/app/model/erp/vo/OrderVO.java
  33. 49 19
      module-erp/src/main/java/com/hys/app/model/erp/vo/StockInventoryVO.java
  34. 2 1
      module-erp/src/main/java/com/hys/app/model/erp/vo/WarehouseOutVO.java
  35. 19 4
      module-erp/src/main/java/com/hys/app/service/erp/OrderManager.java
  36. 4 21
      module-erp/src/main/java/com/hys/app/service/erp/OrderReturnManager.java
  37. 11 3
      module-erp/src/main/java/com/hys/app/service/erp/StockInventoryManager.java
  38. 1 1
      module-erp/src/main/java/com/hys/app/service/erp/WarehouseEntryManager.java
  39. 2 6
      module-erp/src/main/java/com/hys/app/service/erp/WarehouseOutManager.java
  40. 119 21
      module-erp/src/main/java/com/hys/app/service/erp/impl/OrderManagerImpl.java
  41. 66 207
      module-erp/src/main/java/com/hys/app/service/erp/impl/OrderReturnManagerImpl.java
  42. 35 26
      module-erp/src/main/java/com/hys/app/service/erp/impl/StockDamageReportManagerImpl.java
  43. 66 56
      module-erp/src/main/java/com/hys/app/service/erp/impl/StockInventoryManagerImpl.java
  44. 4 12
      module-erp/src/main/java/com/hys/app/service/erp/impl/StockInventoryProductManagerImpl.java
  45. 0 2
      module-erp/src/main/java/com/hys/app/service/erp/impl/WarehouseAreaManagerImpl.java
  46. 2 1
      module-erp/src/main/java/com/hys/app/service/erp/impl/WarehouseEntryManagerImpl.java
  47. 3 7
      module-erp/src/main/java/com/hys/app/service/erp/impl/WarehouseOutManagerImpl.java
  48. 1 1
      module-erp/src/main/java/com/hys/app/service/kuaidiniao/KuaiDiNiaoService.java
  49. 8 6
      module-erp/src/main/java/com/hys/app/service/kuaidiniao/KuaiDiNiaoServiceImpl.java
  50. 1 1
      module-erp/src/main/java/com/hys/app/service/kuaidiniao/entity/KdGood.java
  51. 9 12
      module-erp/src/main/java/com/hys/app/service/kuaidiniao/entity/PreOrderModel.java
  52. 3 0
      module-erp/src/main/java/com/hys/app/service/kuaidiniao/entity/ReceiverSender.java
  53. 20 0
      server/src/main/java/com/hys/app/Application.java

+ 2 - 2
module-erp/src/main/java/com/hys/app/controller/erp/purchase/WarehouseEntryManagerController.java

@@ -61,8 +61,8 @@ public class WarehouseEntryManagerController {
     @ApiOperation(value = "添加")
     @PostMapping
     @Log(client = LogClient.admin, detail = "创建入库单")
-    public void add(@RequestBody @Valid WarehouseEntryDTO warehouseEntryDTO) {
-        warehouseEntryManager.add(warehouseEntryDTO);
+    public Long add(@RequestBody @Valid WarehouseEntryDTO warehouseEntryDTO) {
+      return   warehouseEntryManager.add(warehouseEntryDTO);
     }
 
     @ApiOperation(value = "修改")

+ 21 - 8
module-erp/src/main/java/com/hys/app/controller/erp/sale/OrderController.java

@@ -1,23 +1,22 @@
 package com.hys.app.controller.erp.sale;
 
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.hys.app.framework.database.WebPage;
 import com.hys.app.model.erp.dto.OrderDTO;
 import com.hys.app.model.erp.dto.OrderQueryParams;
-import com.hys.app.model.erp.enums.OrderStatusEnum;
 import com.hys.app.model.erp.vo.OrderVO;
 import com.hys.app.model.support.LogClient;
 import com.hys.app.model.support.validator.annotation.Log;
 import com.hys.app.service.erp.OrderManager;
+import com.hys.app.service.kuaidiniao.entity.PreOrderModel;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
-import java.util.List;
 
 /**
  * 订单 API
@@ -43,8 +42,8 @@ public class OrderController {
     @ApiOperation(value = "添加")
     @PostMapping
     @Log(client = LogClient.admin, detail = "创建订单")
-    public void add(@RequestBody @Valid OrderDTO orderDTO) {
-        orderManager.add(orderDTO);
+    public Long add(@RequestBody @Valid OrderDTO orderDTO) {
+        return orderManager.add(orderDTO);
     }
 
     @ApiOperation(value = "修改")
@@ -76,9 +75,23 @@ public class OrderController {
     }
 
     @ApiOperation(value = "已发货分页列表")
-    @GetMapping("hasSendOrder/list")
-    public WebPage<OrderVO> hasSendOrder(OrderQueryParams queryParams) {
+    @GetMapping("saleOrder/list")
+    public IPage<OrderVO> saleOrder(OrderQueryParams queryParams) {
         return orderManager.hasSendOrder(queryParams);
     }
+
+    @ApiOperation(value = "快递鸟发货获取单号")
+    @PostMapping("/kdShip/{orderId}")
+    @Log(client = LogClient.admin, detail = "出库单[${shipDTO.id}]发货")
+    public String kdShip(@PathVariable(value = "orderId") Long orderId ,@RequestBody @Valid PreOrderModel preOrderModel) {
+        return orderManager.kdShip(preOrderModel,orderId);
+    }
+
+    @ApiOperation(value = "发货")
+    @PostMapping("/orderSend/{orderId}")
+    @Log(client = LogClient.admin, detail = "销售列表发货")
+    public void orderSend(@PathVariable(value = "orderId") Long orderId) {
+         orderManager.orderSend(orderId);
+    }
 }
 

+ 5 - 34
module-erp/src/main/java/com/hys/app/controller/erp/sale/OrderReturnManagerController.java

@@ -48,26 +48,11 @@ public class OrderReturnManagerController {
         orderReturnManager.add(orderReturnDTO);
     }
 
-    @ApiOperation(value = "修改")
-    @PutMapping("/{id}")
-    @Log(client = LogClient.admin, detail = "修改ID为[${id}]的订单退货单")
-    public void edit(@PathVariable String id, @RequestBody @Valid OrderReturnDTO orderReturnDTO) {
-        orderReturnDTO.setId(id);
-        orderReturnManager.edit(orderReturnDTO);
-    }
-
-    @ApiOperation(value = "提交")
-    @PostMapping("/{id}/submit")
-    @Log(client = LogClient.admin, detail = "提交ID为[${id}]的订单退货单")
-    public void submit(@PathVariable Long id) {
-        orderReturnManager.submit(id);
-    }
-
-    @ApiOperation(value = "撤销提交")
-    @PostMapping("/{id}/withdraw")
-    @Log(client = LogClient.admin, detail = "撤销提交ID为[${id}]的订单退货单")
-    public void withdraw(@PathVariable Long id) {
-        orderReturnManager.withdraw(id);
+    @ApiOperation(value = "关闭订单/完成订单")
+    @PostMapping("/cancel/{edit}/{id}")
+    @Log(client = LogClient.admin, detail = "关闭ID为[${id}]的订单退货单")
+    public void withdraw(@PathVariable String edit,@PathVariable Long id) {
+        orderReturnManager.cancel(edit,id);
     }
 
     @ApiOperation(value = "查询")
@@ -76,20 +61,6 @@ public class OrderReturnManagerController {
         return orderReturnManager.getDetail(id);
     }
 
-    @ApiOperation(value = "删除")
-    @DeleteMapping("/{ids}")
-    @Log(client = LogClient.admin, detail = "删除ID为[${ids}]的订单退货单")
-    public void delete(@PathVariable List<String> ids) {
-        orderReturnManager.delete(ids);
-    }
-
-    @ApiOperation(value = "审核")
-    @PostMapping("/{ids}/audit")
-    @Log(client = LogClient.admin, detail = "审核ID为[${ids}]的订单退货单")
-    public void audit(@PathVariable List<Long> ids, @NotNull OrderReturnStatusEnum status, String remark) {
-        orderReturnManager.audit(ids, status, remark);
-    }
-
     @ApiOperation(value = "查询订单退货统计分页列表数据")
     @GetMapping("/statistics")
     public WebPage statistics(OrderReturnStatisticsQueryParam params) {

+ 11 - 8
module-erp/src/main/java/com/hys/app/controller/erp/warehouse/StockDamageReportManagerController.java

@@ -56,6 +56,16 @@ public class StockDamageReportManagerController {
         this.stockDamageReportManager.edit(id, stockDamageReportDTO);
     }
 
+    @ApiOperation(value = "查询库存报损单详细信息")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "库存报损单ID", required = true, dataType = "int", paramType = "path")
+    })
+    @GetMapping("/{id}")
+    public StockDamageReportVO getDetail(@PathVariable Long id) {
+        return stockDamageReportManager.getDetail(id);
+    }
+
+
     @ApiOperation(value = "批量删除库存报损单")
     @DeleteMapping("/{ids}")
     @ApiImplicitParams({
@@ -66,14 +76,7 @@ public class StockDamageReportManagerController {
         this.stockDamageReportManager.delete(ids);
     }
 
-    @ApiOperation(value = "查询库存报损单详细信息")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "id", value = "库存报损单ID", required = true, dataType = "int", paramType = "path")
-    })
-    @GetMapping("/{id}")
-    public StockDamageReportVO getDetail(@PathVariable Long id) {
-        return stockDamageReportManager.getDetail(id);
-    }
+
 
     @ApiOperation(value = "批量提交审核库存报损单")
     @PostMapping("/submit/{ids}")

+ 16 - 8
module-erp/src/main/java/com/hys/app/controller/erp/warehouse/StockInventoryManagerController.java

@@ -46,6 +46,20 @@ public class StockInventoryManagerController {
     public void add(@RequestBody @Valid StockInventoryDTO stockInventoryDTO) {
         this.stockInventoryManager.add(stockInventoryDTO);
     }
+    @ApiOperation(value = "查询库存盘点单详细信息")
+    @GetMapping("/{id}")
+    public StockInventoryVO getDetail(@PathVariable Long id) {
+        return stockInventoryManager.getDetail(id);
+    }
+
+    @ApiOperation(value = "同步库存")
+    @GetMapping("/syncStock/{id}")
+    public void syncStock(@PathVariable Long id) {
+         stockInventoryManager.syncStock(id);
+    }
+
+
+
 
     @ApiOperation(value = "修改库存盘点单")
     @PostMapping("/{id}")
@@ -64,14 +78,8 @@ public class StockInventoryManagerController {
         this.stockInventoryManager.delete(ids);
     }
 
-    @ApiOperation(value = "查询库存盘点单详细信息")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "id", value = "库存盘点单ID", required = true, dataType = "int", paramType = "path")
-    })
-    @GetMapping("/{id}")
-    public StockInventoryVO getDetail(@PathVariable Long id) {
-        return stockInventoryManager.getDetail(id);
-    }
+
+
 
     @ApiOperation(value = "批量提交审核库存盘点单")
     @PostMapping("/submit/{ids}")

+ 2 - 9
module-erp/src/main/java/com/hys/app/controller/erp/warehouse/WarehouseOutManagerController.java

@@ -52,8 +52,8 @@ public class WarehouseOutManagerController {
     @ApiOperation(value = "添加")
     @PostMapping
     @Log(client = LogClient.admin, detail = "创建出库单")
-    public void add(@RequestBody @Valid WarehouseOutDTO warehouseOutDTO) {
-        warehouseOutManager.add(warehouseOutDTO);
+    public Long add(@RequestBody @Valid WarehouseOutDTO warehouseOutDTO) {
+       return warehouseOutManager.add(warehouseOutDTO);
     }
 
     @ApiOperation(value = "编辑")
@@ -103,13 +103,6 @@ public class WarehouseOutManagerController {
         this.warehouseOutManager.export(response, params);
     }
 
-    @ApiOperation(value = "快递鸟发货")
-    @PostMapping("/kdShip")
-    @Log(client = LogClient.admin, detail = "出库单[${shipDTO.id}]发货")
-    public void kdShip(@RequestBody @Valid PreOrderModel preOrderModel) {
-        warehouseOutManager.kdShip(preOrderModel);
-    }
-
     @ApiOperation(value = "根据仓库找到所有库存大于0的商品")
     @GetMapping("/getGoodByWarehouse/{warehouseId}")
     @Log(client = LogClient.admin, detail = "根据仓库找到所有库存大于0的商品")

+ 28 - 0
module-erp/src/main/java/com/hys/app/converter/erp/OrderConverter.java

@@ -1,5 +1,6 @@
 package com.hys.app.converter.erp;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.hys.app.framework.database.WebPage;
 import com.hys.app.model.erp.dos.OrderDO;
 import com.hys.app.model.erp.dos.OrderItemDO;
@@ -11,9 +12,12 @@ import com.hys.app.model.erp.enums.OrderTypeEnum;
 import com.hys.app.model.erp.vo.OrderExcelVO;
 import com.hys.app.model.erp.vo.OrderItemVO;
 import com.hys.app.model.erp.vo.OrderVO;
+import com.hys.app.service.kuaidiniao.entity.PreOrderModel;
+import com.hys.app.service.kuaidiniao.entity.ReceiverSender;
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
 import org.mapstruct.MappingConstants;
+import org.mapstruct.MappingTarget;
 
 import java.util.List;
 import java.util.Map;
@@ -40,5 +44,29 @@ public interface OrderConverter {
             return OrderStatusEnum.AUDIT_REJECT;
         }
     }
+
+    @Mapping(target = "aDo.receiverProvinceName", source = "receiver.provinceName")
+    @Mapping(target = "aDo.receiverCityName", source = "receiver.cityName")
+    @Mapping(target = "aDo.receiverAreaName", source = "receiver.areaName")
+    @Mapping(target = "aDo.receiverAddress", source = "receiver.address")
+    @Mapping(target = "aDo.receiverName", source = "receiver.name")
+    @Mapping(target = "aDo.receiverPhone", source = "receiver.phone")
+    @Mapping(target = "aDo.receiverMobile", source = "receiver.mobile")
+    @Mapping(target = "aDo.receiverLatitude", source = "receiver.latitude")
+    @Mapping(target = "aDo.receiverLongitude", source = "receiver.longitude")
+    @Mapping(target = "aDo.senderProvinceName", source = "sender.provinceName")
+    @Mapping(target = "aDo.senderCityName", source = "sender.cityName")
+    @Mapping(target = "aDo.senderAreaName", source = "sender.areaName")
+    @Mapping(target = "aDo.senderAddress", source = "sender.address")
+    @Mapping(target = "aDo.senderName", source = "sender.name")
+    @Mapping(target = "aDo.senderMobile", source = "sender.mobile")
+    @Mapping(target = "aDo.senderPhone", source = "sender.phone")
+    @Mapping(target = "aDo.senderLatitude", source = "sender.latitude")
+    @Mapping(target = "aDo.senderLongitude", source = "sender.longitude")
+    @Mapping(target = "aDo.provinceCityAreaAddress", ignore = true)
+    @Mapping(target = "aDo.address", ignore = true)
+    @Mapping(target = "aDo.provinceCityArea", ignore = true)
+    @Mapping(target = "aDo.deleted", ignore = true)
+    void copyProperties(@MappingTarget OrderDO aDo, PreOrderModel preOrderModel, ReceiverSender receiver, ReceiverSender sender);
 }
 

+ 7 - 7
module-erp/src/main/java/com/hys/app/converter/erp/OrderReturnConverter.java

@@ -20,7 +20,7 @@ import java.util.Map;
 public interface OrderReturnConverter {
     OrderReturnDO convert(OrderReturnDTO orderReturnDTO);
 
-    @Mapping(target = "allowable", expression = "java(new com.hys.app.model.erp.vo.OrderReturnAllowable(orderReturnDO))")
+
     OrderReturnVO convert(OrderReturnDO orderReturnDO);
     
     List<OrderReturnVO> convert(List<OrderReturnDO> list);
@@ -41,12 +41,12 @@ public interface OrderReturnConverter {
     default OrderReturnDO combination(OrderReturnDTO orderReturnDTO){
         OrderReturnDO orderReturnDO = convert(orderReturnDTO);
 
-        orderReturnDO.setDistributionName(orderReturnDTO.getOrderDO().getMarketingName());
-        orderReturnDO.setDeptName(orderReturnDTO.getDeptDO().getName());
-        orderReturnDO.setWarehouseName(orderReturnDTO.getWarehouseDO().getName());
-        orderReturnDO.setHandleByName(orderReturnDTO.getHandleBy().getRealName());
-        orderReturnDO.setOrderSn(orderReturnDTO.getOrderDO().getSn());
-        orderReturnDO.setOrderType(orderReturnDTO.getOrderDO().getType());
+//        orderReturnDO.setDistributionName(orderReturnDTO.getOrderDO().getMarketingName());
+//        orderReturnDO.setDeptName(orderReturnDTO.getDeptDO().getName());
+//        orderReturnDO.setWarehouseName(orderReturnDTO.getWarehouseDO().getName());
+//        orderReturnDO.setHandleByName(orderReturnDTO.getHandleBy().getRealName());
+//        orderReturnDO.setOrderSn(orderReturnDTO.getOrderDO().getSn());
+//        orderReturnDO.setOrderType(orderReturnDTO.getOrderDO().getType());
 
         return orderReturnDO;
     }

+ 0 - 15
module-erp/src/main/java/com/hys/app/converter/erp/OrderReturnItemConverter.java

@@ -31,21 +31,6 @@ public interface OrderReturnItemConverter {
 
     WebPage<OrderReturnItemVO> convert(WebPage<OrderReturnItemDO> webPage);
 
-    default List<OrderReturnItemDO> combination(String orderReturnId, OrderReturnDTO orderReturnDTO) {
-        List<OrderReturnItemDTO> itemList = orderReturnDTO.getItemList();
-        boolean isToC = orderReturnDTO.getOrderDO().getType() == OrderTypeEnum.TO_C;
-        return itemList.stream().map(orderReturnItemDTO -> {
-            if (isToC) {
-                OrderItemDO orderItemDO = orderReturnDTO.getOrderItemMap().get(orderReturnItemDTO.getOrderItemId());
-                WarehouseEntryBatchDO batchDO = orderReturnDTO.getBatchMap().get(orderItemDO.getBatchId());
-                return convert(orderReturnItemDTO, orderItemDO, batchDO, orderReturnId);
-            } else {
-                WarehouseOutItemDO warehouseOutItemDO = orderReturnDTO.getWarehouseOutItemMap().get(orderReturnItemDTO.getWarehouseOutItemId());
-                return convert(warehouseOutItemDO, orderReturnItemDTO, orderReturnId);
-            }
-        }).collect(Collectors.toList());
-    }
-
     default OrderReturnItemDO convert(OrderReturnItemDTO orderReturnItemDTO, OrderItemDO orderItemDO, WarehouseEntryBatchDO batchDO, String orderReturnId) {
         OrderReturnItemDO orderReturnItemDO = new OrderReturnItemDO();
 

+ 1 - 1
module-erp/src/main/java/com/hys/app/mapper/erp/OrderMapper.java

@@ -30,7 +30,7 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
                 .eqIfPresent(OrderDO::getMarketingId, params.getMarketingId())
                 .likeIfPresent(OrderDO::getMarketingName, params.getMarketingName())
                 .likeIfPresent(OrderDO::getRemark, params.getRemark())
-                .eqIfPresent(OrderDO::getDeliveryType, params.getDeliveryType())
+//                .eqIfPresent(OrderDO::getDeliveryType, params.getDeliveryType())
                 .eqIfPresent(OrderDO::getStoreId, params.getStoreId())
                 .likeIfPresent(OrderDO::getStoreName, params.getStoreName())
                 .eqIfPresent(OrderDO::getWarehouseOutFlag, params.getWarehouseOutFlag())

+ 151 - 7
module-erp/src/main/java/com/hys/app/model/erp/dos/OrderDO.java

@@ -4,19 +4,26 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.hys.app.framework.database.mybatisplus.base.BaseDO;
 import com.hys.app.model.erp.enums.OrderDeliveryType;
 import com.hys.app.model.erp.enums.OrderStatusEnum;
 import com.hys.app.model.erp.enums.OrderTypeEnum;
 import com.hys.app.model.erp.enums.SaleOrderStatusEnum;
+import com.hys.app.service.kuaidiniao.entity.KdGood;
+import com.hys.app.service.kuaidiniao.entity.ReceiverSender;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
 
+import javax.validation.Valid;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
 
 /**
  * 订单 DO
@@ -107,8 +114,8 @@ public class OrderDO extends BaseDO {
 
     // ================== 配送相关 ==================
 
-    @ApiModelProperty(name = "delivery_type", value = "配送方式")
-    private OrderDeliveryType deliveryType;
+    @ApiModelProperty(name = "send_type", value = "配送方式")
+    private String sendType;
 
     @ApiModelProperty(name = "store_id", value = "自提门店id")
     private Long storeId;
@@ -150,12 +157,149 @@ public class OrderDO extends BaseDO {
     @ApiModelProperty(name = "province_city_area", value = "支付方式")
     private String  provinceCityArea;
 
-//    @ApiModelProperty(name = "end_time", value = "开始时间")
-//    private LocalDateTime endTime;
-//
-//    @ApiModelProperty(name = "start_time", value = "结束时间")
-//    private LocalDateTime startTime;
+    @ApiModelProperty(name = "end_time", value = "开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endTime;
+
+    @ApiModelProperty(name = "start_time", value = "结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date startTime;
 
     @ApiModelProperty(name = "start_time", value = "结束时间")
     private String hasSubmit;
+
+
+
+
+    @ApiModelProperty(value = "门店业务类型 1:商家门店  2:个人即时配")
+    private Integer storeBusinessType = 2;
+
+    @ApiModelProperty(value = "1、storeCode平台门店编码(商家自定义门店编码,唯一),个人即时配编码固定传storeCode;2、merchantCode快递鸟门店编码(商家门店编码映射KDN门店编码)个人即时配编码固传merchantCode”;3、平台门店编码和快递鸟门店编码必填一项,且两者只能同时填一项。")
+    private String storeCode ;
+
+    @ApiModelProperty(value = "(商家门店编码映射KDN门店编码)个人即时配编码固传merchantCode”;3、平台门店编码和快递鸟门店编码必填一项,且两者只能同时填一项。")
+    private String merchantCode = "merchantCode";
+
+    @ApiModelProperty(value = "商户名称")
+    private String merchantName = "上海瑞赢旷视科技";
+
+    @ApiModelProperty(value = "产品类型编码,默认:B")
+    private String productTypeCode = "B";
+
+    @ApiModelProperty(value = "即时配编码,多个即时配编码用逗号分隔。")
+    private String intraCode = "SFTC,";
+
+    @ApiModelProperty(value = "预约类型0:立即单、1:预约上门单")
+    private Integer appointmentType;
+
+    @ApiModelProperty(value = "预约上门单必填预约上门时间格式:YYYY-MM-DD  hh:mm:ss说明:当前时间+2小时,10分钟间隔向上取整。")
+//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+//    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private String appointmentTime;
+
+    @ApiModelProperty(value = "交通方式,默认0:未指定。指定交通方式会产生额外的费用。暂不支持")
+    private Integer travelWay = 0;
+
+    @ApiModelProperty(value = "下单类型1:帮我送 、2:帮我取;默认1")
+    private Integer deliveryType;
+
+    @ApiModelProperty(value = "坐标类型1:百度地图、 2:高德地图 、3:腾讯地图")
+    private Integer lbsType = 2;
+
+    @ApiModelProperty(value = "物品类型")
+    private String goodsType;
+
+    @ApiModelProperty(value = "物品数量1-99的整数")
+    private Integer goodsNum;
+
+    @ApiModelProperty(value = "物品总重量单位kg")
+    private Double totalWeight;
+
+    @ApiModelProperty(value = "物品总体积,单位立方厘米")
+    private Double totalVolume;
+
+    @ApiModelProperty(value = "物品声明价值,单位:元。去尾法,保留两位小数。所有物品总计声明价值。")
+    private Double declaredValue;
+
+    @ApiModelProperty(value = "是否保价  1:是 0:否 暂不支持保价,默认传0")
+    private Integer insured = 0;
+
+    @ApiModelProperty(value = "丢破损保障费用,单位:元。去尾法,保留两位小数。根据声明价值计算需要支付的保障用。暂不支持,默认传0")
+    private Double insuranceFee = 0.0;
+
+    @ApiModelProperty(value = "下单人姓名")
+    private String orderName;
+
+    @ApiModelProperty(value = "下单人手机号(下单人手机号和下单人座机二选一必填)")
+    private String orderMobile;
+
+    @ApiModelProperty(value = "下单人座机号(下单人手机号和下单人座机二选一必填)")
+    private String orderPhone;
+
+
+    @ApiModelProperty(value = "商家订单号 全局唯一")
+    private String orderCode;
+
+
+
+
+    @ApiModelProperty(name = "receiver_province_name", value = "收货人省")
+    private String receiverProvinceName;
+
+    @ApiModelProperty(name = "receiver_city_name", value = "收货人市")
+    private String receiverCityName;
+
+    @ApiModelProperty(name = "receiver_area_name", value = "收货人县")
+    private String receiverAreaName;
+
+    @ApiModelProperty(name = "receiver_address", value = "收货人地址")
+    private String receiverAddress;
+
+    @ApiModelProperty(name = "receiver_name", value = "收货人姓名")
+    private String receiverName;
+
+    @ApiModelProperty(name = "receiver_phone", value = "收货人电话")
+    private String receiverPhone;
+
+    @ApiModelProperty(name = "receiver_mobile", value = "收货人座机")
+    private String receiverMobile;
+
+    @ApiModelProperty(name = "receiver_latitude", value = "收货人纬度")
+    private String receiverLatitude;
+
+    @ApiModelProperty(name = "receiver_longitude", value = "收货人经度")
+    private String receiverLongitude;
+
+    @ApiModelProperty(name = "sender_province_name", value = "发货人省")
+    private String senderProvinceName;
+
+    @ApiModelProperty(name = "sender_city_name", value = "发货人市")
+    private String senderCityName;
+
+    @ApiModelProperty(name = "sender_area_name", value = "发货人县")
+    private String senderAreaName;
+
+    @ApiModelProperty(name = "sender_address", value = "发货人地址")
+    private String senderAddress;
+
+    @ApiModelProperty(name = "sender_name", value = "发货人姓名")
+    private String senderName;
+
+    @ApiModelProperty(name = "sender_mobile", value = "发货人座机")
+    private String senderMobile;
+
+    @ApiModelProperty(name = "sender_phone", value = "发货人电话")
+    private String senderPhone;
+
+    @ApiModelProperty(name = "sender_latitude", value = "发货人纬度")
+    private String senderLatitude;
+
+    @ApiModelProperty(name = "sender_longitude", value = "发货人经度")
+    private String senderLongitude;
+
+    @ApiModelProperty(name = "kdn_order_code", value = "快递鸟单号")
+    private String kdnOrderCode;
+
 }

+ 18 - 7
module-erp/src/main/java/com/hys/app/model/erp/dos/OrderReturnDO.java

@@ -3,13 +3,18 @@ package com.hys.app.model.erp.dos;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.hys.app.framework.database.mybatisplus.base.BaseDO;
 import com.hys.app.model.erp.enums.OrderReturnStatusEnum;
 import com.hys.app.model.erp.enums.OrderTypeEnum;
+import com.hys.app.model.erp.enums.ReturnOrderStatusEnum;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
 
 
 /**
@@ -36,6 +41,19 @@ public class OrderReturnDO extends BaseDO {
     @ApiModelProperty(name = "order_id", value = "要退货的订单id")
     private String orderId;
 
+    @ApiModelProperty(name = "return_time", value = "退货时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date returnTime;
+
+    @ApiModelProperty(name = "return_remark", value = "退货说明")
+    private String returnRemark;
+
+    @ApiModelProperty(name = "status", value = "状态")
+    private ReturnOrderStatusEnum status = ReturnOrderStatusEnum.SALE_AFTER_ING;
+
+
+
     @ApiModelProperty(name = "order_sn", value = "要退货的订单编号")
     private String orderSn;
 
@@ -63,11 +81,7 @@ public class OrderReturnDO extends BaseDO {
     @ApiModelProperty(name = "handle_by_name", value = "经手人名称")
     private String handleByName;
 
-    @ApiModelProperty(name = "status", value = "状态")
-    private OrderReturnStatusEnum status;
 
-    @ApiModelProperty(name = "return_time", value = "退货时间")
-    private Long returnTime;
 
     @ApiModelProperty(name = "audit_by_id", value = "审核人id")
     private Long auditById;
@@ -78,7 +92,4 @@ public class OrderReturnDO extends BaseDO {
     @ApiModelProperty(name = "audit_remark", value = "审核备注")
     private String auditRemark;
 
-    @ApiModelProperty(name = "return_remark", value = "退货说明")
-    private String returnRemark;
-
 }

+ 5 - 211
module-erp/src/main/java/com/hys/app/model/erp/dos/StockInventory.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.hys.app.model.erp.vo.StockInventoryAllowable;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import java.io.Serializable;
 import java.util.Objects;
@@ -19,6 +20,7 @@ import java.util.Objects;
  */
 @TableName("es_stock_inventory")
 @ApiModel
+@Data
 public class StockInventory implements Serializable {
 
     private static final long serialVersionUID = -6325801216669289202L;
@@ -91,6 +93,7 @@ public class StockInventory implements Serializable {
     private Long createTime;
     /**
      * 状态
+     *
      * @see com.hys.app.model.erp.enums.StockInventoryStatusEnum
      */
     @ApiModelProperty(name = "status", value = "状态")
@@ -122,215 +125,6 @@ public class StockInventory implements Serializable {
     @ApiModelProperty(name = "allowable", value = "库存盘点单允许进行的操作")
     private StockInventoryAllowable allowable;
 
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public String getSn() {
-        return sn;
-    }
-
-    public void setSn(String sn) {
-        this.sn = sn;
-    }
-
-    public Long getDeptId() {
-        return deptId;
-    }
-
-    public void setDeptId(Long deptId) {
-        this.deptId = deptId;
-    }
-
-    public String getDeptName() {
-        return deptName;
-    }
-
-    public void setDeptName(String deptName) {
-        this.deptName = deptName;
-    }
-
-    public Long getWarehouseId() {
-        return warehouseId;
-    }
-
-    public void setWarehouseId(Long warehouseId) {
-        this.warehouseId = warehouseId;
-    }
-
-    public String getWarehouseName() {
-        return warehouseName;
-    }
-
-    public void setWarehouseName(String warehouseName) {
-        this.warehouseName = warehouseName;
-    }
-
-    public Long getInventoryPersonId() {
-        return inventoryPersonId;
-    }
-
-    public void setInventoryPersonId(Long inventoryPersonId) {
-        this.inventoryPersonId = inventoryPersonId;
-    }
-
-    public String getInventoryPerson() {
-        return inventoryPerson;
-    }
-
-    public void setInventoryPerson(String inventoryPerson) {
-        this.inventoryPerson = inventoryPerson;
-    }
-
-    public Long getCreatorId() {
-        return creatorId;
-    }
-
-    public void setCreatorId(Long creatorId) {
-        this.creatorId = creatorId;
-    }
-
-    public String getCreator() {
-        return creator;
-    }
-
-    public void setCreator(String creator) {
-        this.creator = creator;
-    }
-
-    public Long getInventoryTime() {
-        return inventoryTime;
-    }
-
-    public void setInventoryTime(Long inventoryTime) {
-        this.inventoryTime = inventoryTime;
-    }
-
-    public String getInventoryDesc() {
-        return inventoryDesc;
-    }
-
-    public void setInventoryDesc(String inventoryDesc) {
-        this.inventoryDesc = inventoryDesc;
-    }
-
-    public Long getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Long createTime) {
-        this.createTime = createTime;
-    }
-
-    public String getStatus() {
-        return status;
-    }
-
-    public void setStatus(String status) {
-        this.status = status;
-    }
-
-    public String getRejectReason() {
-        return rejectReason;
-    }
-
-    public void setRejectReason(String rejectReason) {
-        this.rejectReason = rejectReason;
-    }
-
-    public Long getAuditTime() {
-        return auditTime;
-    }
-
-    public void setAuditTime(Long auditTime) {
-        this.auditTime = auditTime;
-    }
-
-    public Long getAuditPersonId() {
-        return auditPersonId;
-    }
-
-    public void setAuditPersonId(Long auditPersonId) {
-        this.auditPersonId = auditPersonId;
-    }
-
-    public String getAuditPersonName() {
-        return auditPersonName;
-    }
-
-    public void setAuditPersonName(String auditPersonName) {
-        this.auditPersonName = auditPersonName;
-    }
-
-    public StockInventoryAllowable getAllowable() {
-        return allowable;
-    }
-
-    public void setAllowable(StockInventoryAllowable allowable) {
-        this.allowable = allowable;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        StockInventory that = (StockInventory) o;
-        return Objects.equals(id, that.id) &&
-                Objects.equals(sn, that.sn) &&
-                Objects.equals(deptId, that.deptId) &&
-                Objects.equals(deptName, that.deptName) &&
-                Objects.equals(warehouseId, that.warehouseId) &&
-                Objects.equals(warehouseName, that.warehouseName) &&
-                Objects.equals(inventoryPersonId, that.inventoryPersonId) &&
-                Objects.equals(inventoryPerson, that.inventoryPerson) &&
-                Objects.equals(creatorId, that.creatorId) &&
-                Objects.equals(creator, that.creator) &&
-                Objects.equals(inventoryTime, that.inventoryTime) &&
-                Objects.equals(inventoryDesc, that.inventoryDesc) &&
-                Objects.equals(createTime, that.createTime) &&
-                Objects.equals(status, that.status) &&
-                Objects.equals(rejectReason, that.rejectReason) &&
-                Objects.equals(auditTime, that.auditTime) &&
-                Objects.equals(auditPersonId, that.auditPersonId) &&
-                Objects.equals(auditPersonName, that.auditPersonName) &&
-                Objects.equals(allowable, that.allowable);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(id, sn, deptId, deptName, warehouseId, warehouseName, inventoryPersonId, inventoryPerson, creatorId, creator, inventoryTime, inventoryDesc, createTime, status, rejectReason, auditTime, auditPersonId, auditPersonName, allowable);
-    }
-
-    @Override
-    public String toString() {
-        return "StockInventory{" +
-                "id=" + id +
-                ", sn='" + sn + '\'' +
-                ", deptId=" + deptId +
-                ", deptName='" + deptName + '\'' +
-                ", warehouseId=" + warehouseId +
-                ", warehouseName='" + warehouseName + '\'' +
-                ", inventoryPersonId=" + inventoryPersonId +
-                ", inventoryPerson='" + inventoryPerson + '\'' +
-                ", creatorId=" + creatorId +
-                ", creator='" + creator + '\'' +
-                ", inventoryTime=" + inventoryTime +
-                ", inventoryDesc='" + inventoryDesc + '\'' +
-                ", createTime=" + createTime +
-                ", status='" + status + '\'' +
-                ", rejectReason='" + rejectReason + '\'' +
-                ", auditTime=" + auditTime +
-                ", auditPersonId=" + auditPersonId +
-                ", auditPersonName='" + auditPersonName + '\'' +
-                ", allowable=" + allowable +
-                '}';
-    }
+    @ApiModelProperty(name = "reject_reason", value = "盘点类型")
+    private String inventoryType;
 }

+ 2 - 1
module-erp/src/main/java/com/hys/app/model/erp/dos/WarehouseOutDO.java

@@ -9,6 +9,7 @@ import com.hys.app.framework.database.mybatisplus.type.LongListTypeHandler;
 import com.hys.app.framework.database.mybatisplus.type.StringListTypeHandler;
 import com.hys.app.model.erp.enums.WarehouseOutStatusEnum;
 import com.hys.app.model.erp.enums.OrderDeliveryType;
+import com.hys.app.model.erp.enums.WarehouseOutTypeEnum;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -130,6 +131,6 @@ public class WarehouseOutDO extends BaseDO {
     private String hasSubmit;
 
     @ApiModelProperty(name = "type", value = "出库类型")
-    private String type;
+    private WarehouseOutTypeEnum type;
 
 }

+ 14 - 4
module-erp/src/main/java/com/hys/app/model/erp/dto/OrderDTO.java

@@ -1,5 +1,6 @@
 package com.hys.app.model.erp.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.hys.app.model.erp.dos.*;
 import com.hys.app.model.erp.enums.OrderPaymentStatusEnum;
@@ -11,10 +12,12 @@ import com.hys.app.model.erp.enums.OrderDeliveryType;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import javax.validation.Valid;
 import javax.validation.constraints.*;
 import java.time.LocalDateTime;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -61,8 +64,11 @@ public class OrderDTO {
     @ApiModelProperty(name = "remark", value = "备注")
     private String remark;
 
-    @ApiModelProperty(name = "delivery_type", value = "配送方式")
-    private OrderDeliveryType deliveryType;
+//    @ApiModelProperty(name = "delivery_type", value = "配送方式")
+//    private OrderDeliveryType deliveryType;
+
+    @ApiModelProperty(name = "send_type", value = "配送方式")
+    private String sendType;
 
     @ApiModelProperty(name = "item_list", value = "订单项列表")
     @NotEmpty(message = "订单项不能为空")
@@ -88,10 +94,14 @@ public class OrderDTO {
     private String  provinceCityArea;
 
     @ApiModelProperty(name = "end_time", value = "开始时间")
-    private LocalDateTime endTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endTime;
 
     @ApiModelProperty(name = "start_time", value = "结束时间")
-    private LocalDateTime startTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date startTime;
 
 }
 

+ 5 - 0
module-erp/src/main/java/com/hys/app/model/erp/dto/OrderItemDTO.java

@@ -17,11 +17,16 @@ import javax.validation.constraints.NotNull;
 @Data
 @ApiModel(value = "订单明细 新增|编辑 请求参数")
 public class OrderItemDTO {
+    private Long id;
 
     @ApiModelProperty(name = "goods_id", value = "商品id")
     @NotNull(message = "商品id不能为空")
     private Long goodsId;
 
+    @ApiModelProperty(name = "goods_name", value = "商品名称")
+    @NotNull(message = "商品id不能为空")
+    private String name;
+
     @ApiModelProperty(name = "num", value = "数量")
     @NotNull(message = "数量不能为空")
     @Min(value = 1, message = "数量必须大于0")

+ 3 - 0
module-erp/src/main/java/com/hys/app/model/erp/dto/OrderQueryParams.java

@@ -93,5 +93,8 @@ public class OrderQueryParams extends BaseQueryParam {
 //    @ApiModelProperty(name = "start_time", value = "结束时间")
 //    private LocalDateTime startTime;
 
+    @ApiModelProperty(name = "type", value = "订单类型")
+    private String selectType;
+
 }
 

+ 10 - 36
module-erp/src/main/java/com/hys/app/model/erp/dto/OrderReturnDTO.java

@@ -1,14 +1,18 @@
 package com.hys.app.model.erp.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.hys.app.model.erp.dos.*;
 import com.hys.app.model.system.dos.AdminUser;
 import com.hys.app.model.system.dos.DeptDO;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -27,52 +31,22 @@ public class OrderReturnDTO {
     @ApiModelProperty(name = "order_id", value = "要退货的订单")
     @NotNull(message = "要退货的订单不能为空")
     private String orderId;
-    
-    @ApiModelProperty(name = "dept_id", value = "部门id")
-    @NotNull(message = "部门id不能为空")
-    private Long deptId;
-    
-    @ApiModelProperty(name = "warehouse_id", value = "仓库id")
-    @NotNull(message = "仓库id不能为空")
-    private String warehouseId;
-    
-    @ApiModelProperty(name = "handle_by_id", value = "经手人id")
-    @NotNull(message = "经手人id不能为空")
-    private Long handleById;
+
 
     @ApiModelProperty(name = "return_time", value = "退货时间")
-    @NotNull(message = "退货时间不能为空")
-    private Long returnTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date returnTime;
 
     @ApiModelProperty(name = "return_remark", value = "退货说明")
     @NotBlank(message = "退货说明不能为空")
     private String returnRemark;
 
+
+
     @ApiModelProperty(name = "item_list", value = "退货项列表")
     @NotEmpty(message = "退货项列表不能为空")
     private List<OrderReturnItemDTO> itemList;
 
-
-    @JsonIgnore
-    private OrderDO orderDO;
-
-    @JsonIgnore
-    private Map<Long, WarehouseOutItemDO> warehouseOutItemMap;
-
-    @JsonIgnore
-    private Map<Long, OrderItemDO> orderItemMap;
-
-    @JsonIgnore
-    private Map<Long, WarehouseEntryBatchDO> batchMap;
-
-    @JsonIgnore
-    private DeptDO deptDO;
-
-    @JsonIgnore
-    private WarehouseDO warehouseDO;
-
-    @JsonIgnore
-    private AdminUser handleBy;
-
 }
 

+ 0 - 3
module-erp/src/main/java/com/hys/app/model/erp/dto/OrderReturnItemDTO.java

@@ -14,9 +14,6 @@ import javax.validation.constraints.NotNull;
 @Data
 public class OrderReturnItemDTO {
 
-    @ApiModelProperty(name = "warehouse_out_item_id", value = "出库单项的id(订单类型为ToB时必传)")
-    private Long warehouseOutItemId;
-
     @ApiModelProperty(name = "order_item_id", value = "订单项id(订单类型为ToC时必传)")
     private Long orderItemId;
 

+ 8 - 151
module-erp/src/main/java/com/hys/app/model/erp/dto/StockDamageReportDTO.java

@@ -1,6 +1,7 @@
 package com.hys.app.model.erp.dto;
 
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import javax.validation.Valid;
 import javax.validation.constraints.NotEmpty;
@@ -14,64 +15,25 @@ import java.util.List;
  * @author dmy
  * 2023-12-05
  */
+@Data
 public class StockDamageReportDTO implements Serializable {
 
     private static final long serialVersionUID = -2146175467517339422L;
 
-    /**
-     * 部门ID
-     */
-    @ApiModelProperty(name = "dept_id", value = "部门ID", required = true)
-    @NotNull(message = "部门ID不能为空")
-    private Long deptId;
-    /**
-     * 部门名称
-     */
-    @ApiModelProperty(name = "dept_name", value = "部门名称", required = true)
-    @NotEmpty(message = "部门名称不能为空")
-    private String deptName;
-    /**
-     * 仓库ID
-     */
-    @ApiModelProperty(name = "warehouse_id", value = "仓库ID", required = true)
-    @NotNull(message = "仓库ID不能为空")
-    private Long warehouseId;
-    /**
-     * 仓库名称
-     */
-    @ApiModelProperty(name = "warehouse_name", value = "仓库名称", required = true)
-    @NotEmpty(message = "仓库名称不能为空")
-    private String warehouseName;
-    /**
-     * 制单人ID
-     */
-    @ApiModelProperty(name = "creator_id", value = "制单人ID", required = true)
-    @NotNull(message = "制单人ID不能为空")
-    private Long creatorId;
-    /**
-     * 制单人
-     */
-    @ApiModelProperty(name = "creator", value = "制单人", required = true)
-    @NotEmpty(message = "制单人不能为空")
-    private String creator;
     /**
      * 报损时间
      */
     @ApiModelProperty(name = "report_time", value = "报损时间", required = true)
     @NotNull(message = "报损时间不能为空")
     private Long reportTime;
+
     /**
-     * 报损类型(键)
-     */
-    @ApiModelProperty(name = "damage_type_key", value = "报损类型(键)")
-    @NotEmpty(message = "报损类型(键)不能为空")
-    private String damageTypeKey;
-    /**
-     * 报损类型(值)
+     * 仓库ID
      */
-    @ApiModelProperty(name = "damage_type_value", value = "报损类型(值)")
-    @NotEmpty(message = "报损类型(值)不能为空")
-    private String damageTypeValue;
+    @ApiModelProperty(name = "warehouse_id", value = "仓库ID", required = true)
+    @NotNull(message = "仓库ID不能为空")
+    private Long warehouseId;
+
     /**
      * 报损说明
      */
@@ -85,109 +47,4 @@ public class StockDamageReportDTO implements Serializable {
     @NotNull(message = "库存报损单产品不能为空")
     @Valid
     private List<StockDamageReportProductDTO> productList;
-
-    public Long getDeptId() {
-        return deptId;
-    }
-
-    public void setDeptId(Long deptId) {
-        this.deptId = deptId;
-    }
-
-    public String getDeptName() {
-        return deptName;
-    }
-
-    public void setDeptName(String deptName) {
-        this.deptName = deptName;
-    }
-
-    public Long getWarehouseId() {
-        return warehouseId;
-    }
-
-    public void setWarehouseId(Long warehouseId) {
-        this.warehouseId = warehouseId;
-    }
-
-    public String getWarehouseName() {
-        return warehouseName;
-    }
-
-    public void setWarehouseName(String warehouseName) {
-        this.warehouseName = warehouseName;
-    }
-
-    public Long getCreatorId() {
-        return creatorId;
-    }
-
-    public void setCreatorId(Long creatorId) {
-        this.creatorId = creatorId;
-    }
-
-    public String getCreator() {
-        return creator;
-    }
-
-    public void setCreator(String creator) {
-        this.creator = creator;
-    }
-
-    public Long getReportTime() {
-        return reportTime;
-    }
-
-    public void setReportTime(Long reportTime) {
-        this.reportTime = reportTime;
-    }
-
-    public String getDamageTypeKey() {
-        return damageTypeKey;
-    }
-
-    public void setDamageTypeKey(String damageTypeKey) {
-        this.damageTypeKey = damageTypeKey;
-    }
-
-    public String getDamageTypeValue() {
-        return damageTypeValue;
-    }
-
-    public void setDamageTypeValue(String damageTypeValue) {
-        this.damageTypeValue = damageTypeValue;
-    }
-
-    public String getReportDesc() {
-        return reportDesc;
-    }
-
-    public void setReportDesc(String reportDesc) {
-        this.reportDesc = reportDesc;
-    }
-
-    public List<StockDamageReportProductDTO> getProductList() {
-        return productList;
-    }
-
-    public void setProductList(List<StockDamageReportProductDTO> productList) {
-        this.productList = productList;
-    }
-
-    @Override
-    public String toString() {
-        return "StockDamageReportDTO{" +
-                "deptId=" + deptId +
-                ", deptName='" + deptName + '\'' +
-                ", warehouseId=" + warehouseId +
-                ", warehouseName='" + warehouseName + '\'' +
-                ", creatorId=" + creatorId +
-                ", creator='" + creator + '\'' +
-                ", reportTime=" + reportTime +
-                ", damageTypeKey='" + damageTypeKey + '\'' +
-                ", damageTypeValue='" + damageTypeValue + '\'' +
-                ", reportDesc='" + reportDesc + '\'' +
-                ", productList=" + productList +
-                '}';
-    }
 }

+ 3 - 267
module-erp/src/main/java/com/hys/app/model/erp/dto/StockDamageReportProductDTO.java

@@ -1,6 +1,7 @@
 package com.hys.app.model.erp.dto;
 
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
@@ -12,280 +13,15 @@ import java.io.Serializable;
  * @author dmy
  * 2023-12-05
  */
+@Data
 public class StockDamageReportProductDTO implements Serializable {
 
     private static final long serialVersionUID = -1175913255503592167L;
-
-    /**
-     * 入库单编号
-     */
-    @ApiModelProperty(name = "stock_sn", value = "入库单编号", required = true)
-    @NotEmpty(message = "入库单编号不能为空")
-    private String stockSn;
-    /**
-     * 批次ID
-     */
-    @ApiModelProperty(name = "batch_id", value = "批次ID", required = true)
-    @NotNull(message = "批次ID不能为空")
-    private Long batchId;
-    /**
-     * 批次编号
-     */
-    @ApiModelProperty(name = "batch_sn", value = "批次编号", required = true)
-    @NotEmpty(message = "批次编号不能为空")
-    private String batchSn;
-    /**
-     * 商品ID
-     */
     @ApiModelProperty(name = "goods_id", value = "商品ID", required = true)
     @NotNull(message = "商品ID不能为空")
     private Long goodsId;
-    /**
-     * 产品ID
-     */
-    @ApiModelProperty(name = "product_id", value = "产品ID", required = true)
-    @NotNull(message = "产品ID不能为空")
-    private Long productId;
-    /**
-     * 产品名称
-     */
-    @ApiModelProperty(name = "product_name", value = "产品名称", required = true)
-    @NotEmpty(message = "产品名称不能为空")
-    private String productName;
-    /**
-     * 产品编号
-     */
-    @ApiModelProperty(name = "product_sn", value = "产品编号", required = true)
-    @NotEmpty(message = "产品编号不能为空")
-    private String productSn;
-    /**
-     * 产品规格
-     */
-    @ApiModelProperty(name = "specification", value = "产品规格", required = true)
-    @NotEmpty(message = "产品规格不能为空")
-    private String specification;
-    /**
-     * 分类id
-     */
-    @ApiModelProperty(name = "category_id", value = "分类id", required = true)
-    @NotNull(message = "分类id不能为空")
-    private Long categoryId;
-    /**
-     * 分类名称
-     */
-    @ApiModelProperty(name = "category_name", value = "分类名称", required = true)
-    @NotEmpty(message = "分类名称不能为空")
-    private String categoryName;
-    /**
-     * 产品单位
-     */
-    @ApiModelProperty(name = "unit", value = "产品单位", required = true)
-    private String unit;
-    /**
-     * 单价
-     */
-    @ApiModelProperty(name = "price", value = "单价", required = true)
-    @NotNull(message = "单价不能为空")
-    private Double price;
-    /**
-     * 成本价
-     */
-    @ApiModelProperty(name = "cost_price", value = "成本价")
-    @NotNull(message = "成本价不能为空")
-    private Double costPrice;
-    /**
-     * 税率
-     */
-    @ApiModelProperty(name = "tax_rate", value = "税率")
-    private Double taxRate;
-    /**
-     * 库存数量
-     */
-    @ApiModelProperty(name = "stock_num", value = "库存数量", required = true)
-    @NotNull(message = "库存数量不能为空")
-    private Integer stockNum;
-    /**
-     * 报损数量
-     */
+
     @ApiModelProperty(name = "report_num", value = "报损数量", required = true)
     @NotNull(message = "报损数量不能为空")
     private Integer reportNum;
-    /**
-     * 备注
-     */
-    @ApiModelProperty(name = "report_remark", value = "备注")
-    private String reportRemark;
-    /**
-     * 类型  0:增加,1:减少
-     */
-    @ApiModelProperty(name = "type", value = "类型 0:增加,1:减少", required = true, allowableValues = "0,1")
-    @NotNull(message = "类型不能为空")
-    private Integer type;
-
-    public String getStockSn() {
-        return stockSn;
-    }
-
-    public void setStockSn(String stockSn) {
-        this.stockSn = stockSn;
-    }
-
-    public Long getBatchId() {
-        return batchId;
-    }
-
-    public void setBatchId(Long batchId) {
-        this.batchId = batchId;
-    }
-
-    public String getBatchSn() {
-        return batchSn;
-    }
-
-    public void setBatchSn(String batchSn) {
-        this.batchSn = batchSn;
-    }
-
-    public Long getGoodsId() {
-        return goodsId;
-    }
-
-    public void setGoodsId(Long goodsId) {
-        this.goodsId = goodsId;
-    }
-
-    public Long getProductId() {
-        return productId;
-    }
-
-    public void setProductId(Long productId) {
-        this.productId = productId;
-    }
-
-    public String getProductName() {
-        return productName;
-    }
-
-    public void setProductName(String productName) {
-        this.productName = productName;
-    }
-
-    public String getProductSn() {
-        return productSn;
-    }
-
-    public void setProductSn(String productSn) {
-        this.productSn = productSn;
-    }
-
-    public String getSpecification() {
-        return specification;
-    }
-
-    public void setSpecification(String specification) {
-        this.specification = specification;
-    }
-
-    public Long getCategoryId() {
-        return categoryId;
-    }
-
-    public void setCategoryId(Long categoryId) {
-        this.categoryId = categoryId;
-    }
-
-    public String getCategoryName() {
-        return categoryName;
-    }
-
-    public void setCategoryName(String categoryName) {
-        this.categoryName = categoryName;
-    }
-
-    public String getUnit() {
-        return unit;
-    }
-
-    public void setUnit(String unit) {
-        this.unit = unit;
-    }
-
-    public Double getPrice() {
-        return price;
-    }
-
-    public void setPrice(Double price) {
-        this.price = price;
-    }
-
-    public Double getCostPrice() {
-        return costPrice;
-    }
-
-    public void setCostPrice(Double costPrice) {
-        this.costPrice = costPrice;
-    }
-
-    public Double getTaxRate() {
-        return taxRate;
-    }
-
-    public void setTaxRate(Double taxRate) {
-        this.taxRate = taxRate;
-    }
-
-    public Integer getStockNum() {
-        return stockNum;
-    }
-
-    public void setStockNum(Integer stockNum) {
-        this.stockNum = stockNum;
-    }
-
-    public Integer getReportNum() {
-        return reportNum;
-    }
-
-    public void setReportNum(Integer reportNum) {
-        this.reportNum = reportNum;
-    }
-
-    public String getReportRemark() {
-        return reportRemark;
-    }
-
-    public void setReportRemark(String reportRemark) {
-        this.reportRemark = reportRemark;
-    }
-
-    public Integer getType() {
-        return type;
-    }
-
-    public void setType(Integer type) {
-        this.type = type;
-    }
-
-    @Override
-    public String toString() {
-        return "StockDamageReportProductDTO{" +
-                "stockSn='" + stockSn + '\'' +
-                ", batchId=" + batchId +
-                ", batchSn='" + batchSn + '\'' +
-                ", goodsId=" + goodsId +
-                ", productId=" + productId +
-                ", productName='" + productName + '\'' +
-                ", productSn='" + productSn + '\'' +
-                ", specification='" + specification + '\'' +
-                ", categoryName='" + categoryName + '\'' +
-                ", unit='" + unit + '\'' +
-                ", price=" + price +
-                ", costPrice=" + costPrice +
-                ", taxRate=" + taxRate +
-                ", stockNum=" + stockNum +
-                ", reportNum=" + reportNum +
-                ", reportRemark='" + reportRemark + '\'' +
-                ", type=" + type +
-                '}';
-    }
 }

+ 27 - 148
module-erp/src/main/java/com/hys/app/model/erp/dto/StockInventoryDTO.java

@@ -1,10 +1,15 @@
 package com.hys.app.model.erp.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
+import javax.validation.Valid;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -13,178 +18,52 @@ import java.util.List;
  * @author dmy
  * 2023-12-05
  */
+
+@Data
 public class StockInventoryDTO implements Serializable {
 
     private static final long serialVersionUID = -158888827316508502L;
-
-    /**
-     * 部门ID
-     */
-    @ApiModelProperty(name = "dept_id", value = "部门ID", required = true)
-    @NotNull(message = "部门ID不能为空")
-    private Long deptId;
     /**
-     * 部门名称
+     * 盘点时间
      */
-    @ApiModelProperty(name = "dept_name", value = "部门名称", required = true)
-    @NotEmpty(message = "部门名称不能为空")
-    private String deptName;
+    @ApiModelProperty(name = "inventory_time", value = "盘点时间", required = true)
+    @NotNull(message = "盘点时间不能为空")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date inventoryTime;
+
     /**
      * 仓库ID
      */
     @ApiModelProperty(name = "warehouse_id", value = "仓库ID", required = true)
     @NotNull(message = "仓库ID不能为空")
     private Long warehouseId;
-    /**
-     * 仓库名称
-     */
-    @ApiModelProperty(name = "warehouse_name", value = "仓库名称", required = true)
-    @NotEmpty(message = "仓库名称不能为空")
-    private String warehouseName;
+
     /**
      * 盘点人ID
      */
     @ApiModelProperty(name = "inventory_person_id", value = "盘点人ID", required = true)
     @NotNull(message = "盘点人ID不能为空")
     private Long inventoryPersonId;
+
     /**
-     * 盘点人
-     */
-    @ApiModelProperty(name = "inventory_person", value = "盘点人", required = true)
-    @NotEmpty(message = "盘点人不能为空")
-    private String inventoryPerson;
-    /**
-     * 制单人ID
-     */
-    @ApiModelProperty(name = "creator_id", value = "制单人ID", required = true)
-    @NotNull(message = "制单人ID不能为空")
-    private Long creatorId;
-    /**
-     * 制单人
-     */
-    @ApiModelProperty(name = "creator", value = "制单人", required = true)
-    @NotEmpty(message = "制单人不能为空")
-    private String creator;
-    /**
-     * 盘点时间
+     * 库存盘点单产品集合
      */
-    @ApiModelProperty(name = "inventory_time", value = "盘点时间", required = true)
-    @NotNull(message = "盘点时间不能为空")
-    private Long inventoryTime;
+    @ApiModelProperty(name = "product_list", value = "库存盘点单产品集合", required = true)
+    @NotNull(message = "库存盘点单产品不能为空")
+    @Valid
+    private List<StockInventoryProductDTO> productList;
+
     /**
      * 盘点说明
      */
     @ApiModelProperty(name = "inventory_desc", value = "盘点说明")
     private String inventoryDesc;
+
     /**
-     * 库存盘点单产品集合
+     * 部门名称
      */
-    @ApiModelProperty(name = "product_list", value = "库存盘点单产品集合", required = true)
-    @NotNull(message = "库存盘点单产品不能为空")
-    private List<StockInventoryProductDTO> productList;
-
-    public Long getDeptId() {
-        return deptId;
-    }
-
-    public void setDeptId(Long deptId) {
-        this.deptId = deptId;
-    }
-
-    public String getDeptName() {
-        return deptName;
-    }
-
-    public void setDeptName(String deptName) {
-        this.deptName = deptName;
-    }
-
-    public Long getWarehouseId() {
-        return warehouseId;
-    }
-
-    public void setWarehouseId(Long warehouseId) {
-        this.warehouseId = warehouseId;
-    }
-
-    public String getWarehouseName() {
-        return warehouseName;
-    }
-
-    public void setWarehouseName(String warehouseName) {
-        this.warehouseName = warehouseName;
-    }
-
-    public Long getInventoryPersonId() {
-        return inventoryPersonId;
-    }
-
-    public void setInventoryPersonId(Long inventoryPersonId) {
-        this.inventoryPersonId = inventoryPersonId;
-    }
-
-    public String getInventoryPerson() {
-        return inventoryPerson;
-    }
-
-    public void setInventoryPerson(String inventoryPerson) {
-        this.inventoryPerson = inventoryPerson;
-    }
-
-    public Long getCreatorId() {
-        return creatorId;
-    }
-
-    public void setCreatorId(Long creatorId) {
-        this.creatorId = creatorId;
-    }
-
-    public String getCreator() {
-        return creator;
-    }
-
-    public void setCreator(String creator) {
-        this.creator = creator;
-    }
-
-    public Long getInventoryTime() {
-        return inventoryTime;
-    }
-
-    public void setInventoryTime(Long inventoryTime) {
-        this.inventoryTime = inventoryTime;
-    }
-
-    public String getInventoryDesc() {
-        return inventoryDesc;
-    }
-
-    public void setInventoryDesc(String inventoryDesc) {
-        this.inventoryDesc = inventoryDesc;
-    }
-
-    public List<StockInventoryProductDTO> getProductList() {
-        return productList;
-    }
-
-    public void setProductList(List<StockInventoryProductDTO> productList) {
-        this.productList = productList;
-    }
-
-    @Override
-    public String toString() {
-        return "StockInventoryDTO{" +
-                "deptId=" + deptId +
-                ", deptName='" + deptName + '\'' +
-                ", warehouseId=" + warehouseId +
-                ", warehouseName='" + warehouseName + '\'' +
-                ", inventoryPersonId=" + inventoryPersonId +
-                ", inventoryPerson='" + inventoryPerson + '\'' +
-                ", creatorId=" + creatorId +
-                ", creator='" + creator + '\'' +
-                ", inventoryTime=" + inventoryTime +
-                ", inventoryDesc='" + inventoryDesc + '\'' +
-                ", productList=" + productList +
-                '}';
-    }
+    @ApiModelProperty(name = "inventory_type", value = "盘点类型", required = true)
+    @NotEmpty(message = "盘点类型不能为空")
+    private String inventoryType;
 }

+ 5 - 80
module-erp/src/main/java/com/hys/app/model/erp/dto/StockInventoryParam.java

@@ -3,7 +3,9 @@ package com.hys.app.model.erp.dto;
 import com.hys.app.framework.database.BaseQueryParam;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 
 /**
@@ -12,17 +14,11 @@ import java.io.Serializable;
  * @author dmy
  * 2023-12-05
  */
-@ApiModel
+@Data
 public class StockInventoryParam extends BaseQueryParam implements Serializable {
 
     private static final long serialVersionUID = 8262063047050222023L;
 
-    @ApiModelProperty(name = "sn", value = "库存盘点单编号")
-    private String sn;
-
-    @ApiModelProperty(name = "dept_id", value = "部门ID")
-    private Long deptId;
-
     @ApiModelProperty(name = "start_time", value = "开始时间")
     private Long startTime;
 
@@ -32,78 +28,7 @@ public class StockInventoryParam extends BaseQueryParam implements Serializable
     @ApiModelProperty(name = "warehouse_id", value = "仓库ID")
     private Long warehouseId;
 
-    @ApiModelProperty(name = "status", value = "状态", allowableValues = "NEW,WAIT,PASS,REJECT")
-    private String status;
-
-    @ApiModelProperty(name = "inventory_person", value = "盘点人")
-    private String inventoryPerson;
-
-    public String getSn() {
-        return sn;
-    }
-
-    public void setSn(String sn) {
-        this.sn = sn;
-    }
-
-    public Long getDeptId() {
-        return deptId;
-    }
-
-    public void setDeptId(Long deptId) {
-        this.deptId = deptId;
-    }
-
-    public Long getStartTime() {
-        return startTime;
-    }
-
-    public void setStartTime(Long startTime) {
-        this.startTime = startTime;
-    }
-
-    public Long getEndTime() {
-        return endTime;
-    }
-
-    public void setEndTime(Long endTime) {
-        this.endTime = endTime;
-    }
-
-    public Long getWarehouseId() {
-        return warehouseId;
-    }
-
-    public void setWarehouseId(Long warehouseId) {
-        this.warehouseId = warehouseId;
-    }
-
-    public String getStatus() {
-        return status;
-    }
-
-    public void setStatus(String status) {
-        this.status = status;
-    }
-
-    public String getInventoryPerson() {
-        return inventoryPerson;
-    }
-
-    public void setInventoryPerson(String inventoryPerson) {
-        this.inventoryPerson = inventoryPerson;
-    }
+    @ApiModelProperty(name = "inventory_person_id", value = "盘点人ID", required = true)
+    private Long inventoryPersonId;
 
-    @Override
-    public String toString() {
-        return "StockInventoryParam{" +
-                "sn='" + sn + '\'' +
-                ", deptId=" + deptId +
-                ", startTime=" + startTime +
-                ", endTime=" + endTime +
-                ", warehouseId=" + warehouseId +
-                ", status='" + status + '\'' +
-                ", inventoryPerson='" + inventoryPerson + '\'' +
-                '}';
-    }
 }

+ 6 - 151
module-erp/src/main/java/com/hys/app/model/erp/dto/StockInventoryProductDTO.java

@@ -1,6 +1,8 @@
 package com.hys.app.model.erp.dto;
 
+import com.hys.app.model.erp.vo.GoodsVO;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
@@ -12,6 +14,7 @@ import java.io.Serializable;
  * @author dmy
  * 2023-12-05
  */
+@Data
 public class StockInventoryProductDTO implements Serializable {
 
     private static final long serialVersionUID = -6285460490304810323L;
@@ -22,168 +25,20 @@ public class StockInventoryProductDTO implements Serializable {
     @ApiModelProperty(name = "goods_id", value = "商品ID", required = true)
     @NotNull(message = "商品ID不能为空")
     private Long goodsId;
-    /**
-     * 产品ID
-     */
-    @ApiModelProperty(name = "product_id", value = "产品ID", required = true)
-    @NotNull(message = "产品ID不能为空")
-    private Long productId;
-    /**
-     * 产品名称
-     */
-    @ApiModelProperty(name = "product_name", value = "产品名称", required = true)
-    @NotEmpty(message = "产品名称不能为空")
-    private String productName;
-    /**
-     * 产品编号
-     */
-    @ApiModelProperty(name = "product_sn", value = "产品编号", required = true)
-    @NotEmpty(message = "产品编号不能为空")
-    private String productSn;
-    /**
-     * 产品规格
-     */
-    @ApiModelProperty(name = "specification", value = "产品规格", required = true)
-    @NotEmpty(message = "产品规格不能为空")
-    private String specification;
-    /**
-     * 分类名称
-     */
-    @ApiModelProperty(name = "category_name", value = "分类名称", required = true)
-    @NotEmpty(message = "分类名称不能为空")
-    private String categoryName;
-    /**
-     * 产品单位
-     */
-    @ApiModelProperty(name = "unit", value = "产品单位", required = true)
-    @NotEmpty(message = "产品单位不能为空")
-    private String unit;
-    /**
-     * 库存数量
-     */
-    @ApiModelProperty(name = "stock_num", value = "库存数量", required = true)
-    @NotNull(message = "库存数量不能为空")
-    private Integer stockNum;
+
     /**
      * 盘点数量
      */
     @ApiModelProperty(name = "inventory_num", value = "盘点数量", required = true)
     @NotNull(message = "盘点数量不能为空")
     private Integer inventoryNum;
+
     /**
      * 差异数量
      */
     @ApiModelProperty(name = "diff_num", value = "差异数量", required = true)
     @NotNull(message = "差异数量不能为空")
     private Integer diffNum;
-    /**
-     * 备注
-     */
-    @ApiModelProperty(name = "remark", value = "备注")
-    private String remark;
-
-    public Long getGoodsId() {
-        return goodsId;
-    }
-
-    public void setGoodsId(Long goodsId) {
-        this.goodsId = goodsId;
-    }
-
-    public Long getProductId() {
-        return productId;
-    }
-
-    public void setProductId(Long productId) {
-        this.productId = productId;
-    }
-
-    public String getProductName() {
-        return productName;
-    }
-
-    public void setProductName(String productName) {
-        this.productName = productName;
-    }
-
-    public String getProductSn() {
-        return productSn;
-    }
-
-    public void setProductSn(String productSn) {
-        this.productSn = productSn;
-    }
-
-    public String getSpecification() {
-        return specification;
-    }
-
-    public void setSpecification(String specification) {
-        this.specification = specification;
-    }
-
-    public String getCategoryName() {
-        return categoryName;
-    }
-
-    public void setCategoryName(String categoryName) {
-        this.categoryName = categoryName;
-    }
-
-    public String getUnit() {
-        return unit;
-    }
-
-    public void setUnit(String unit) {
-        this.unit = unit;
-    }
-
-    public Integer getStockNum() {
-        return stockNum;
-    }
-
-    public void setStockNum(Integer stockNum) {
-        this.stockNum = stockNum;
-    }
-
-    public Integer getInventoryNum() {
-        return inventoryNum;
-    }
-
-    public void setInventoryNum(Integer inventoryNum) {
-        this.inventoryNum = inventoryNum;
-    }
-
-    public Integer getDiffNum() {
-        return diffNum;
-    }
-
-    public void setDiffNum(Integer diffNum) {
-        this.diffNum = diffNum;
-    }
-
-    public String getRemark() {
-        return remark;
-    }
-
-    public void setRemark(String remark) {
-        this.remark = remark;
-    }
 
-    @Override
-    public String toString() {
-        return "StockInventoryProductDTO{" +
-                "goodsId=" + goodsId +
-                ", productId=" + productId +
-                ", productName='" + productName + '\'' +
-                ", productSn='" + productSn + '\'' +
-                ", specification='" + specification + '\'' +
-                ", categoryName='" + categoryName + '\'' +
-                ", unit='" + unit + '\'' +
-                ", stockNum=" + stockNum +
-                ", inventoryNum=" + inventoryNum +
-                ", diffNum=" + diffNum +
-                ", remark='" + remark + '\'' +
-                '}';
-    }
+    private GoodsVO goodsVO;
 }

+ 2 - 3
module-erp/src/main/java/com/hys/app/model/erp/dto/WarehouseOutDTO.java

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.hys.app.model.erp.dos.OrderDO;
 import com.hys.app.model.erp.dos.OrderItemDO;
 import com.hys.app.model.erp.dos.WarehouseEntryBatchDO;
+import com.hys.app.model.erp.enums.WarehouseOutTypeEnum;
 import com.hys.app.model.system.dos.AdminUser;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -39,7 +40,7 @@ public class WarehouseOutDTO {
     private String notes;
 
     @ApiModelProperty(name = "type", value = "出库类型")
-    private String type;
+    private WarehouseOutTypeEnum type;
 
     @ApiModelProperty(value = "操作類型")
     @NotBlank(message = "操作类型不能为空,save保存submit入库")
@@ -60,7 +61,5 @@ public class WarehouseOutDTO {
     private String address;
 
 
-
-
 }
 

+ 36 - 0
module-erp/src/main/java/com/hys/app/model/erp/enums/ReturnOrderStatusEnum.java

@@ -0,0 +1,36 @@
+package com.hys.app.model.erp.enums;
+
+import lombok.Getter;
+
+/**
+ * 订单状态枚举
+ *
+ * @author 张崧
+ * @since 2024-01-25
+ */
+@Getter
+public enum ReturnOrderStatusEnum {
+
+    SALE_AFTER_ING("SALE_AFTER_ING", "售后中"),
+    SALE_AFTER_END("SALE_AFTER_END", "售后完成"),
+    SALE_AFTER_CANCEL("SALE_AFTER_CANCEL", "售后关闭");
+
+    ReturnOrderStatusEnum(String value, String label) {
+        this.value = value;
+        this.label = label;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public String getLabel() {
+        return label;
+    }
+
+    private final String value;
+
+    private final String label;
+
+
+}

+ 19 - 16
module-erp/src/main/java/com/hys/app/model/erp/enums/SaleOrderStatusEnum.java

@@ -1,8 +1,8 @@
 package com.hys.app.model.erp.enums;
 
+import com.baomidou.mybatisplus.annotation.EnumValue;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
-import lombok.Setter;
 
 /**
  * 订单状态枚举
@@ -18,23 +18,26 @@ public enum SaleOrderStatusEnum {
     SENDING("sending", "配送中"),
     TO_BE_SINGE("to_be_singe", "待签收"),
     TO_BE_AFTER_SALE("to_be_after_sale", "待售后"),
-    END("end", "待售后"),
-    CANCEL("cancel", "关闭");
+    END("end", "完成"),
+    AFTER_SALE("after_sale", "售后"),
+    CANCEL("cancel", "关闭"),
+    SALE_AFTER_ING("SALE_AFTER_ING", "售后中"),
+    SALE_AFTER_END("SALE_AFTER_END", "售后完成"),
+    SALE_AFTER_CANCEL("SALE_AFTER_CANCEL", "售后关闭");
 
-    private final String name;
-    private final String age;
-
-    // 枚举的构造函数总是私有的
-    private SaleOrderStatusEnum(String name, String age) {
-        this.name = name;
-        this.age = age;
+    SaleOrderStatusEnum(String value, String label) {
+        this.value = value;
+        this.label = label;
     }
-
-    public String getName() {
-        return name;
+    public String getValue() {
+        return value;
     }
-
-    public String getAge() {
-        return age;
+    public String getLabel() {
+        return label;
     }
+    private final String value;
+
+    private final String label;
+
+
 }

+ 37 - 0
module-erp/src/main/java/com/hys/app/model/erp/enums/WarehouseOutTypeEnum.java

@@ -0,0 +1,37 @@
+package com.hys.app.model.erp.enums;
+
+import lombok.Getter;
+
+/**
+ * 订单状态枚举
+ *
+ * @author 张崧
+ * @since 2024-01-25
+ */
+@Getter
+public enum WarehouseOutTypeEnum {
+
+    SALE_OUT("SALE_OUT", "销售出库"),
+    HAIL_OUT("HAIL_OUT", "租赁出库"),
+    BORROW_OUT("BORROW_OUT", "借用出库"),
+    OTHER_OUT("OTHER_OUT", "其他出库");
+
+    WarehouseOutTypeEnum(String value, String label) {
+        this.value = value;
+        this.label = label;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public String getLabel() {
+        return label;
+    }
+
+    private final String value;
+
+    private final String label;
+
+
+}

+ 0 - 21
module-erp/src/main/java/com/hys/app/model/erp/vo/OrderReturnAllowable.java

@@ -34,26 +34,5 @@ public class OrderReturnAllowable {
     @ApiModelProperty(name = "delete", value = "是否允许删除")
     private Boolean delete;
 
-    public OrderReturnAllowable(OrderReturnDO orderReturnDO) {
-        OrderReturnStatusEnum status = orderReturnDO.getStatus();
-        if (status == null) {
-            return;
-        }
-
-        this.setEdit(status == OrderReturnStatusEnum.NotSubmit ||
-                status == OrderReturnStatusEnum.AuditReject);
-
-        this.setSubmit(status == OrderReturnStatusEnum.NotSubmit ||
-                status == OrderReturnStatusEnum.AuditReject);
-
-        this.setDelete(status == OrderReturnStatusEnum.NotSubmit ||
-                status == OrderReturnStatusEnum.AuditReject);
-
-        this.setWithdraw(status == OrderReturnStatusEnum.Submit &&
-                Objects.equals(AdminUserContext.getAdminUserName(), orderReturnDO.getCreator()));
-
-        this.setAudit(status == OrderReturnStatusEnum.Submit);
-    }
-
 }
 

+ 15 - 0
module-erp/src/main/java/com/hys/app/model/erp/vo/OrderReturnItemVO.java

@@ -1,10 +1,13 @@
 package com.hys.app.model.erp.vo;
 
 import com.hys.app.model.erp.dos.OrderReturnItemDO;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.ToString;
 
+import javax.validation.constraints.NotNull;
+
 /**
  * 订单退货项VO
  *
@@ -16,5 +19,17 @@ import lombok.ToString;
 @ToString(callSuper = true)
 public class OrderReturnItemVO extends OrderReturnItemDO {
 
+    @ApiModelProperty(name = "order_item_id", value = "订单项id(订单类型为ToC时必传)")
+    private Long orderItemId;
+
+    @ApiModelProperty(name = "num", value = "原订单数量")
+    private Integer num;
+
+    @ApiModelProperty(name = "return_num", value = "退货数量")
+    @NotNull(message = "退货数量不能为空")
+    private Integer returnNum;
+
+    private GoodsVO goodsVO;
+
 }
 

+ 20 - 2
module-erp/src/main/java/com/hys/app/model/erp/vo/OrderReturnVO.java

@@ -1,11 +1,19 @@
 package com.hys.app.model.erp.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.hys.app.model.erp.dos.OrderReturnDO;
+import com.hys.app.model.erp.dto.OrderReturnItemDTO;
+import com.hys.app.model.erp.enums.ReturnOrderStatusEnum;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
 
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -19,11 +27,21 @@ import java.util.List;
 @ToString(callSuper = true)
 public class OrderReturnVO extends OrderReturnDO {
 
-    @ApiModelProperty(name = "allowable", value = "允许的操作")
-    private OrderReturnAllowable allowable;
+
+    @ApiModelProperty(hidden = true)
+    private String id;
+
+    @ApiModelProperty(name = "order_id", value = "要退货的订单")
+    private String orderId;
+
+    @ApiModelProperty(name = "return_remark", value = "退货说明")
+    private String returnRemark;
 
     @ApiModelProperty(name = "item_list", value = "退货项列表")
     private List<OrderReturnItemVO> itemList;
 
+    @ApiModelProperty(name = "return_order_status", value = "售后状态")
+    private ReturnOrderStatusEnum status;
+
 }
 

+ 17 - 7
module-erp/src/main/java/com/hys/app/model/erp/vo/OrderVO.java

@@ -1,5 +1,6 @@
 package com.hys.app.model.erp.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.hys.app.model.erp.dos.OrderDO;
 import com.hys.app.model.erp.dos.OrderPaymentDO;
@@ -13,6 +14,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import javax.validation.Valid;
 import javax.validation.constraints.Min;
@@ -20,6 +22,7 @@ import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import java.time.LocalDateTime;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -72,8 +75,8 @@ public class OrderVO extends OrderDO {
     @ApiModelProperty(name = "remark", value = "备注")
     private String remark;
 
-    @ApiModelProperty(name = "delivery_type", value = "配送方式")
-    private OrderDeliveryType deliveryType;
+    @ApiModelProperty(name = "send_type", value = "配送方式")
+    private String sendType;
 
     @ApiModelProperty(name = "item_list", value = "订单项列表")
     @NotEmpty(message = "订单项不能为空")
@@ -101,13 +104,20 @@ public class OrderVO extends OrderDO {
     @ApiModelProperty(name = "status", value = "订单状态")
     private SaleOrderStatusEnum status;
 
-//    @ApiModelProperty(name = "end_time", value = "开始时间")
+    @ApiModelProperty(name = "end_time", value = "开始时间")
 //    @NotNull(message = "借用时间不能为空")
-//    private LocalDateTime  endTime;
-//
-//    @ApiModelProperty(name = "start_time", value = "结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date  endTime;
+
+    @ApiModelProperty(name = "start_time", value = "结束时间")
 //    @NotNull(message = "借用时间不能为空")
-//    private LocalDateTime startTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date startTime;
+
+    @ApiModelProperty(name = "kdn_order_code", value = "快递鸟单号")
+    private String kdnOrderCode;
 
 
 

+ 49 - 19
module-erp/src/main/java/com/hys/app/model/erp/vo/StockInventoryVO.java

@@ -1,11 +1,18 @@
 package com.hys.app.model.erp.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.hys.app.model.erp.dos.StockInventory;
 import com.hys.app.model.erp.dos.StockInventoryProduct;
+import com.hys.app.model.erp.dto.StockInventoryProductDTO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -15,28 +22,51 @@ import java.util.List;
  * 2023-12-05
  */
 @ApiModel
-public class StockInventoryVO extends StockInventory implements Serializable {
+@Data
+public class StockInventoryVO implements Serializable {
 
     private static final long serialVersionUID = 5362636527081818965L;
 
     /**
-     * 库存盘点单商品信息集合
+     * 盘点时间
      */
-    @ApiModelProperty(name = "product_list", value = "库存盘点单商品信息集合")
-    private List<StockInventoryProduct> productList;
-
-    public List<StockInventoryProduct> getProductList() {
-        return productList;
-    }
-
-    public void setProductList(List<StockInventoryProduct> productList) {
-        this.productList = productList;
-    }
-
-    @Override
-    public String toString() {
-        return "StockInventoryVO{" +
-                "productList=" + productList +
-                '}';
-    }
+    @ApiModelProperty(name = "inventory_time", value = "盘点时间", required = true)
+    @NotNull(message = "盘点时间不能为空")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date inventoryTime;
+
+    /**
+     * 仓库ID
+     */
+    @ApiModelProperty(name = "warehouse_id", value = "仓库ID", required = true)
+    @NotNull(message = "仓库ID不能为空")
+    private Long warehouseId;
+
+    /**
+     * 盘点人ID
+     */
+    @ApiModelProperty(name = "inventory_person_id", value = "盘点人ID", required = true)
+    @NotNull(message = "盘点人ID不能为空")
+    private Long inventoryPersonId;
+
+    /**
+     * 库存盘点单产品集合
+     */
+    @ApiModelProperty(name = "product_list", value = "库存盘点单产品集合", required = true)
+    @NotNull(message = "库存盘点单产品不能为空")
+    private List<StockInventoryProductDTO> productList;
+
+    /**
+     * 盘点说明
+     */
+    @ApiModelProperty(name = "inventory_desc", value = "盘点说明")
+    private String inventoryDesc;
+
+    /**
+     * 部门名称
+     */
+    @ApiModelProperty(name = "inventory_type", value = "盘点类型", required = true)
+    private String inventoryType;
+
 }

+ 2 - 1
module-erp/src/main/java/com/hys/app/model/erp/vo/WarehouseOutVO.java

@@ -3,6 +3,7 @@ package com.hys.app.model.erp.vo;
 import com.hys.app.model.erp.dos.WarehouseOutDO;
 import com.hys.app.model.erp.dos.WarehouseOutItemDO;
 import com.hys.app.model.erp.dto.WarehouseOutProductDTO;
+import com.hys.app.model.erp.enums.WarehouseOutTypeEnum;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -38,7 +39,7 @@ public class WarehouseOutVO extends WarehouseOutDO {
     private String notes;
 
     @ApiModelProperty(name = "type", value = "出库类型")
-    private String type;
+    private WarehouseOutTypeEnum type;
 
     @ApiModelProperty(value = "操作類型")
     private String saveOrSubmit;

+ 19 - 4
module-erp/src/main/java/com/hys/app/service/erp/OrderManager.java

@@ -1,5 +1,6 @@
 package com.hys.app.service.erp;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.hys.app.framework.database.WebPage;
 import com.hys.app.framework.database.mybatisplus.base.BaseService;
@@ -9,6 +10,7 @@ import com.hys.app.model.erp.dto.OrderQueryParams;
 import com.hys.app.model.erp.dto.WarehouseOutShipDTO;
 import com.hys.app.model.erp.enums.OrderStatusEnum;
 import com.hys.app.model.erp.vo.OrderVO;
+import com.hys.app.service.kuaidiniao.entity.PreOrderModel;
 
 import java.util.List;
 
@@ -32,7 +34,7 @@ public interface OrderManager extends BaseService<OrderDO> {
      *
      * @param orderDTO 新增数据
      */
-    void add(OrderDTO orderDTO);
+    Long add(OrderDTO orderDTO);
 
     /**
      * 编辑
@@ -57,8 +59,6 @@ public interface OrderManager extends BaseService<OrderDO> {
     void delete(Long id);
 
 
-
-
     /**
      * 订单发货
      *
@@ -79,7 +79,22 @@ public interface OrderManager extends BaseService<OrderDO> {
      *
      * @param queryParams
      */
-    WebPage<OrderVO> hasSendOrder(OrderQueryParams queryParams);
+    IPage<OrderVO> hasSendOrder(OrderQueryParams queryParams);
+
+    /**
+     * 快递鸟下单获取快递单号
+     *
+     * @param preOrderModel
+     */
+    String kdShip(PreOrderModel preOrderModel, Long orderId);
+
+
+    /**
+     * 发货 改变订单状态  生成出货单 扣减库存
+     *
+     * @param orderId
+     */
+    void orderSend(Long orderId);
 
 }
 

+ 4 - 21
module-erp/src/main/java/com/hys/app/service/erp/OrderReturnManager.java

@@ -28,7 +28,8 @@ public interface OrderReturnManager extends BaseService<OrderReturnDO> {
     WebPage<OrderReturnVO> list(OrderReturnQueryParams queryParams);
 
     /**
-     * 添加
+     * 添加  原订单状态改成售后订单
+     * 退貨的商品退货商品的数量加上
      * @param orderReturnDTO
      */
     void add(OrderReturnDTO orderReturnDTO);
@@ -47,30 +48,12 @@ public interface OrderReturnManager extends BaseService<OrderReturnDO> {
     OrderReturnVO getDetail(String id);
 
     /**
-     * 删除
-     * @param ids
-     */
-    void delete(List<String> ids);
-
-    /**
-     * 提交
+     * 关闭订单 更改原订单的状态
      * @param id
      */
-    void submit(Long id);
+    void cancel(String edit,Long id);
 
-    /**
-     * 撤销提交
-     * @param id
-     */
-    void withdraw(Long id);
 
-    /**
-     * 审核
-     * @param ids
-     * @param status
-     * @param remark
-     */
-    void audit(List<Long> ids, OrderReturnStatusEnum status, String remark);
 
     /**
      * 查询订单退货统计分页列表数据

+ 11 - 3
module-erp/src/main/java/com/hys/app/service/erp/StockInventoryManager.java

@@ -33,7 +33,7 @@ public interface StockInventoryManager {
     /**
      * 编辑库存盘点单
      *
-     * @param id 主键ID
+     * @param id                主键ID
      * @param stockInventoryDTO 库存盘点单信息
      */
     void edit(Long id, StockInventoryDTO stockInventoryDTO);
@@ -70,9 +70,17 @@ public interface StockInventoryManager {
     /**
      * 审核库存盘点单
      *
-     * @param ids 库存盘点单ID集合
-     * @param status 审核状态 PASS:审核通过,REJECT:审核驳回
+     * @param ids          库存盘点单ID集合
+     * @param status       审核状态 PASS:审核通过,REJECT:审核驳回
      * @param rejectReason 驳回原因
      */
     void audit(List<Long> ids, String status, String rejectReason);
+
+    /**
+     * 同步库存
+     *
+     * @param id
+     * @return
+     */
+    void syncStock(Long id);
 }

+ 1 - 1
module-erp/src/main/java/com/hys/app/service/erp/WarehouseEntryManager.java

@@ -32,7 +32,7 @@ public interface WarehouseEntryManager extends BaseService<WarehouseEntryDO> {
      *
      * @param warehouseEntryDTO
      */
-    void add(WarehouseEntryDTO warehouseEntryDTO);
+    Long add(WarehouseEntryDTO warehouseEntryDTO);
 
     /**
      * 编辑

+ 2 - 6
module-erp/src/main/java/com/hys/app/service/erp/WarehouseOutManager.java

@@ -34,7 +34,7 @@ public interface WarehouseOutManager extends BaseService<WarehouseOutDO> {
      *
      * @param warehouseOutDTO
      */
-    void add(WarehouseOutDTO warehouseOutDTO);
+    Long add(WarehouseOutDTO warehouseOutDTO);
 
     /**
      * 编辑
@@ -106,11 +106,7 @@ public interface WarehouseOutManager extends BaseService<WarehouseOutDO> {
      */
     void audit(List<Long> ids, WarehouseOutStatusEnum status, String remark);
 
-    /**
-     * 快递鸟下单获取快递单号
-     * @param preOrderModel
-     */
-    void kdShip(PreOrderModel preOrderModel);
+
 
     /**
      * 根据仓库找到所有库存大于0的商品

+ 119 - 21
module-erp/src/main/java/com/hys/app/service/erp/impl/OrderManagerImpl.java

@@ -1,35 +1,33 @@
 package com.hys.app.service.erp.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.hys.app.converter.erp.OrderConverter;
 import com.hys.app.framework.database.WebPage;
 import com.hys.app.framework.database.mybatisplus.base.BaseServiceImpl;
 import com.hys.app.framework.exception.ServiceException;
 import com.hys.app.framework.util.BeanUtils;
-import com.hys.app.framework.util.DateUtil;
 import com.hys.app.mapper.erp.OrderMapper;
+import com.hys.app.mapper.erp.WarehouseOutMapper;
 import com.hys.app.mapper.goods.GoodsMapper;
-import com.hys.app.model.erp.dos.GoodsDO;
-import com.hys.app.model.erp.dos.OrderDO;
-import com.hys.app.model.erp.dos.OrderItemDO;
-import com.hys.app.model.erp.dos.ProductStockDO;
+import com.hys.app.model.erp.dos.*;
 import com.hys.app.model.erp.dto.OrderDTO;
 import com.hys.app.model.erp.dto.OrderItemDTO;
 import com.hys.app.model.erp.dto.OrderQueryParams;
 import com.hys.app.model.erp.dto.WarehouseOutShipDTO;
-import com.hys.app.model.erp.enums.NoBusinessTypeEnum;
-import com.hys.app.model.erp.enums.OrderStatusEnum;
-import com.hys.app.model.erp.enums.OrderTypeEnum;
-import com.hys.app.model.erp.enums.SaleOrderStatusEnum;
+import com.hys.app.model.erp.enums.*;
 import com.hys.app.model.erp.vo.GoodsVO;
 import com.hys.app.model.erp.vo.OrderVO;
-import com.hys.app.service.erp.NoGenerateManager;
-import com.hys.app.service.erp.OrderItemManager;
-import com.hys.app.service.erp.OrderManager;
-import com.hys.app.service.erp.ProductStockManager;
+import com.hys.app.service.erp.*;
+import com.hys.app.service.kuaidiniao.KuaiDiNiaoService;
+import com.hys.app.service.kuaidiniao.entity.PreOrderModel;
 import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -51,6 +49,9 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
     private OrderItemManager orderItemManager;
     private ProductStockManager productStockManager;
     private NoGenerateManager noGenerateManager;
+    private KuaiDiNiaoService kuaiDiNiaoService;
+    private WarehouseOutMapper warehouseOutMapper;
+    private WarehouseOutItemManager warehouseOutItemManager;
 
     @Override
     public WebPage<OrderVO> list(OrderQueryParams queryParams) {
@@ -60,21 +61,37 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void add(OrderDTO orderDTO) {
+    public Long add(OrderDTO orderDTO) {
         if (OrderTypeEnum.TO_C.equals(orderDTO.getType())) {
             if (ObjectUtil.isNull(orderDTO.getStartTime()) || ObjectUtil.isNull(orderDTO.getEndTime())) {
                 throw new ServiceException("租用时间不能为空");
             }
         }
-
         OrderDO orderDO = BeanUtil.copyProperties(orderDTO, OrderDO.class);
         orderDO.setSn(noGenerateManager.generate(NoBusinessTypeEnum.Order, orderDO.getDeptId()));
         // 保存订单
         save(orderDO);
         // 保存订单项
         List<OrderItemDO> itemList = BeanUtils.toBean(orderDTO.getItemList(), OrderItemDO.class);
+        //校验库存
+        checkStock(orderDTO.getWarehouseId(), itemList);
         itemList.forEach(item -> item.setOrderId(orderDO.getId()));
         orderItemManager.saveBatch(itemList);
+        return orderDO.getId();
+    }
+
+    private void checkStock(Long warehouseId, List<OrderItemDO> itemList) {
+        //订单后面需要发货订单的数量不等你超过可用库存的数量
+        List<Long> goodsId = itemList.stream().map(OrderItemDO::getGoodsId).collect(Collectors.toList());
+        List<ProductStockDO> stockDOList = productStockManager.list(new LambdaQueryWrapper<ProductStockDO>()
+                .eq(ProductStockDO::getWarehouseId, warehouseId)
+                .in(ProductStockDO::getGoodsId, goodsId));
+        for (ProductStockDO stockDO : stockDOList) {
+            OrderItemDO dto = itemList.stream().filter(item -> item.getGoodsId().equals(stockDO.getGoodsId())).findFirst().get();
+            if (dto.getNum() > stockDO.getUsableStock()) {
+                throw new ServiceException(dto.getGoodsId() + "的可用库存数量不足");
+            }
+        }
     }
 
     @Override
@@ -90,6 +107,8 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
         updateById(orderDO);
         // 更新订单项
         List<OrderItemDO> itemList = BeanUtils.toBean(orderDTO.getItemList(), OrderItemDO.class);
+        //校验库存
+        checkStock(orderDTO.getWarehouseId(), itemList);
         itemList.forEach(item -> item.setOrderId(orderDO.getId()));
         orderItemManager.remove(new LambdaQueryWrapper<OrderItemDO>().eq(OrderItemDO::getOrderId, orderDTO.getId()));
         orderItemManager.saveBatch(itemList);
@@ -132,10 +151,6 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
     public void warehouseOutShip(WarehouseOutShipDTO shipDTO) {
         lambdaUpdate()
                 .set(OrderDO::getStatus, OrderStatusEnum.COMPLETE)
-                .set(OrderDO::getShipFlag, true)
-                .set(OrderDO::getShipTime, DateUtil.getDateline())
-                .set(OrderDO::getLogisticsCompanyId, shipDTO.getLogisticsCompanyId())
-                .set(OrderDO::getLogisticsCompanyName, shipDTO.getLogisticsCompanyName())
                 .set(OrderDO::getLogisticsTrackingNumber, shipDTO.getTrackingNumber())
                 .eq(OrderDO::getWarehouseOutId, shipDTO.getId())
                 .update();
@@ -152,8 +167,91 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
     }
 
     @Override
-    public WebPage<OrderVO> hasSendOrder(OrderQueryParams queryParams) {
-        return null;
+    public IPage<OrderVO> hasSendOrder(OrderQueryParams queryParams) {
+        Page<OrderDO> page = new Page<>(queryParams.getPageNo(), queryParams.getPageSize());
+        LambdaQueryWrapper<OrderDO> wrapper = new LambdaQueryWrapper<OrderDO>()
+                .eq(ObjectUtil.isNotNull(queryParams.getWarehouseId()), OrderDO::getWarehouseId, queryParams.getWarehouseId())
+                .eq(StrUtil.isNotEmpty(queryParams.getSn()), OrderDO::getSn, queryParams.getSn());
+        switch (queryParams.getSelectType()) {
+            case "to_be_send":
+                wrapper.in(OrderDO::getStatus, SaleOrderStatusEnum.TO_BE_SEND.getValue());
+                break;
+            case "sending":
+                wrapper.notIn(OrderDO::getStatus, ListUtil.toList(SaleOrderStatusEnum.TO_BE_COMMIT.getValue(), SaleOrderStatusEnum.TO_BE_SEND.getValue()));
+                break;
+        }
+        Page<OrderDO> doPage = page(page, wrapper);
+        IPage<OrderVO> voPage = new Page<>(queryParams.getPageNo(), queryParams.getPageSize());
+        voPage.setSize(doPage.getSize());
+        voPage.setPages(doPage.getPages());
+        voPage.setRecords(BeanUtils.toBean(doPage.getRecords(), OrderVO.class));
+        voPage.setTotal(doPage.getTotal());
+        return voPage;
+    }
+
+    @Override
+    public String kdShip(PreOrderModel preOrderModel, Long orderId) {
+        String kdnCode = kuaiDiNiaoService.preOrder(preOrderModel);
+        if (StrUtil.isNotEmpty(kdnCode)) {
+            //如果快递鸟下单成功保存 快递信息
+            OrderDO aDo = getById(orderId);
+            converter.copyProperties(aDo, preOrderModel, preOrderModel.getReceiver(), preOrderModel.getSender());
+            aDo.setKdnOrderCode(kdnCode);
+            updateById(aDo);
+        }
+        return kdnCode;
+    }
+
+    @Override
+    @Transactional
+    public void orderSend(Long orderId) {
+        OrderDO aDo = getById(orderId);
+        //根据订单查找到这个订单的所有货物扣减库存
+        List<OrderItemDO> goosList = orderItemManager.list(new LambdaQueryWrapper<OrderItemDO>().eq(OrderItemDO::getOrderId, orderId));
+        //校验库存
+        checkStock(aDo.getWarehouseId(), goosList);
+        List<Long> goodsId = goosList.stream().map(OrderItemDO::getGoodsId).collect(Collectors.toList());
+        //查找这些商品在指定仓库的库存,减去对应数量
+        List<ProductStockDO> stockDOList = productStockManager.list(new LambdaQueryWrapper<ProductStockDO>()
+                .eq(ProductStockDO::getWarehouseId, aDo.getWarehouseId()).in(ProductStockDO::getGoodsId, goodsId));
+        for (ProductStockDO stockDO : stockDOList) {
+            Integer num = goosList.stream().filter(item -> item.getGoodsId().equals(stockDO.getGoodsId())).findFirst().get().getNum();
+            if (num < stockDO.getUsableStock()) {
+                if (OrderTypeEnum.TO_B.equals(aDo.getType())) {
+                    //扣减可用库存
+                    stockDO.setUsableStock(stockDO.getUsableStock() - num);
+                    //扣减实际库存
+                    stockDO.setActualStock(stockDO.getActualStock() - num);
+                } else if (OrderTypeEnum.TO_C.equals(aDo.getType())) {
+                    //扣减可用库存
+                    stockDO.setUsableStock(stockDO.getUsableStock() - num);
+                    //增加在途库存
+                    stockDO.setTransitStock(stockDO.getTransitStock() + num);
+                }
+            } else {
+                throw new ServiceException(stockDO.getGoodsId() + "的库存不够");
+            }
+        }
+        productStockManager.updateBatchById(stockDOList);
+        //生成出库单
+        WarehouseOutDO outDO = new WarehouseOutDO();
+        outDO.setType(WarehouseOutTypeEnum.BORROW_OUT);
+        outDO.setWarehouseId(aDo.getWarehouseId());
+        outDO.setNotes("发货单生成的出货单");
+        outDO.setSn(noGenerateManager.generate(NoBusinessTypeEnum.WarehouseOut, 66L));
+        warehouseOutMapper.insert(outDO);
+        //保存出库单明细
+        List<WarehouseOutItemDO> beanList = BeanUtils.toBean(goosList, WarehouseOutItemDO.class);
+        beanList.forEach(item -> item.setWarehouseOutId(outDO.getId()));
+        warehouseOutItemManager.saveBatch(beanList);
+        //更改订单状态
+        if (SaleOrderStatusEnum.TO_BE_SEND.equals(aDo.getStatus())) {
+            aDo.setStatus(SaleOrderStatusEnum.SENDING);
+            aDo.setWarehouseId(outDO.getId());
+            updateById(aDo);
+        } else {
+            throw new ServiceException("订单状态错误,待发货的订单才能发货");
+        }
     }
 }
 

+ 66 - 207
module-erp/src/main/java/com/hys/app/service/erp/impl/OrderReturnManagerImpl.java

@@ -1,7 +1,9 @@
 package com.hys.app.service.erp.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.io.IoUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.poi.excel.ExcelUtil;
 import cn.hutool.poi.excel.ExcelWriter;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -13,6 +15,7 @@ import com.hys.app.framework.database.mybatisplus.base.BaseServiceImpl;
 import com.hys.app.framework.exception.ServiceException;
 import com.hys.app.framework.rabbitmq.MessageSender;
 import com.hys.app.framework.rabbitmq.MqMessage;
+import com.hys.app.framework.util.BeanUtils;
 import com.hys.app.framework.util.CurrencyUtil;
 import com.hys.app.framework.util.DateUtil;
 import com.hys.app.framework.util.PageConvert;
@@ -25,14 +28,13 @@ import com.hys.app.model.erp.dto.OrderReturnQueryParams;
 import com.hys.app.model.erp.dto.OrderReturnStatisticsQueryParam;
 import com.hys.app.model.erp.dto.message.OrderReturnAuditPassMessage;
 import com.hys.app.model.erp.enums.*;
-import com.hys.app.model.erp.vo.OrderReturnAllowable;
-import com.hys.app.model.erp.vo.OrderReturnStatistics;
-import com.hys.app.model.erp.vo.OrderReturnVO;
+import com.hys.app.model.erp.vo.*;
 import com.hys.app.model.system.dos.AdminUser;
 import com.hys.app.model.system.dos.DeptDO;
 import com.hys.app.service.erp.*;
 import com.hys.app.service.system.AdminUserManager;
 import com.hys.app.service.system.DeptManager;
+import lombok.AllArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -53,49 +55,21 @@ import static com.hys.app.framework.util.CollectionUtils.convertMap;
  * @since 2023-12-14 15:42:07
  */
 @Service
+@AllArgsConstructor
 public class OrderReturnManagerImpl extends BaseServiceImpl<OrderReturnMapper, OrderReturnDO> implements OrderReturnManager {
-
-    @Autowired
     private OrderReturnConverter converter;
-
-    @Autowired
     private OrderReturnItemConverter itemConverter;
-
-    @Autowired
     private OrderReturnItemManager orderReturnItemManager;
-
-    @Autowired
-    private DeptManager deptManager;
-
-    @Autowired
-    private WarehouseManager warehouseManager;
-
-    @Autowired
     private OrderManager orderManager;
-
-    @Autowired
+    private OrderItemManager orderItemManager;
     private WarehouseOutItemManager warehouseOutItemManager;
-
-    @Autowired
     private NoGenerateManager noGenerateManager;
-
-    @Autowired
     private OrderReturnMapper orderReturnMapper;
-
-    @Autowired
     private WarehouseEntryBatchManager batchManager;
-
-    @Autowired
     private MessageSender messageSender;
-
-    @Autowired
     private AdminUserManager adminUserManager;
-
-    @Autowired
     private FinanceItemManager financeItemManager;
-
-    @Autowired
-    private OrderItemManager orderItemManager;
+    private GoodsManager goodsManager;
 
     @Override
     public WebPage<OrderReturnVO> list(OrderReturnQueryParams queryParams) {
@@ -113,142 +87,88 @@ public class OrderReturnManagerImpl extends BaseServiceImpl<OrderReturnMapper, O
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void add(OrderReturnDTO orderReturnDTO) {
-        check(orderReturnDTO);
-
-        // 保存退货单
-        OrderReturnDO orderReturnDO = converter.combination(orderReturnDTO);
-        orderReturnDO.setSn(noGenerateManager.generate(NoBusinessTypeEnum.OrderReturn, orderReturnDTO.getDeptId()));
-        orderReturnDO.setStatus(OrderReturnStatusEnum.NotSubmit);
-        save(orderReturnDO);
+        OrderDO aDo = orderManager.getById(orderReturnDTO.getOrderId());
+        if (ObjectUtil.isNull(aDo)) {
+            throw new ServiceException("要发起售后的订单不存在");
+        }
+        if (SaleOrderStatusEnum.SALE_AFTER_END.equals(aDo.getStatus())){
+            throw new ServiceException("一个订单只能做一次售后");
+        }
+        //判断要退货的商品有没有超过订单数量的商品
+        for (OrderReturnItemDTO dto : orderReturnDTO.getItemList()) {
+            OrderItemDO itemDO = orderItemManager.getById(dto.getOrderItemId());
+            if (ObjectUtil.isNull(itemDO)) {
+                throw new ServiceException("退货的商品必须在订单里");
+            }
+            if (itemDO.getNum() < dto.getReturnNum()) {
+                throw new ServiceException("退貨的数量不能大于原订单的物品数量");
+            }
+            itemDO.setReturnNum(dto.getReturnNum());
+            orderItemManager.updateById(itemDO);
+        }
 
+        //更改订单的状态
+        aDo.setStatus(SaleOrderStatusEnum.AFTER_SALE);
+        orderManager.updateById(aDo);
+        //新增售后订单主题
+        OrderReturnDO returnDO = BeanUtil.copyProperties(orderReturnDTO, OrderReturnDO.class);
+        returnDO.setSn(noGenerateManager.generate(NoBusinessTypeEnum.OrderReturn, 66L));
+        save(returnDO);
         // 保存退货单明细
-        List<OrderReturnItemDO> itemList = itemConverter.combination(orderReturnDO.getId(), orderReturnDTO);
-        orderReturnItemManager.saveBatch(itemList);
+        List<OrderReturnItemDO> itemBean = BeanUtils.toBean(orderReturnDTO.getItemList(), OrderReturnItemDO.class);
+        itemBean.forEach(item ->item.setOrderReturnId(returnDO.getId()));
+        orderReturnItemManager.saveBatch(itemBean);
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void edit(OrderReturnDTO orderReturnDTO) {
+        //还原原订单的数据
         OrderReturnDO oldDO = getById(orderReturnDTO.getId());
-        if (!new OrderReturnAllowable(oldDO).getEdit()) {
-            throw new ServiceException("不能进行编辑操作");
-        }
-
-        check(orderReturnDTO);
-
         // 保存退货单
         OrderReturnDO orderReturnDO = converter.combination(orderReturnDTO);
         updateById(orderReturnDO);
-
         // 保存退货单明细
-        List<OrderReturnItemDO> itemList = itemConverter.combination(orderReturnDO.getId(), orderReturnDTO);
-        orderReturnItemManager.deleteByOrderReturnId(Collections.singletonList(orderReturnDTO.getId()));
-        orderReturnItemManager.saveBatch(itemList);
+//        List<OrderReturnItemDO> itemList = itemConverter.combination(orderReturnDO.getId(), orderReturnDTO);
+//        orderReturnItemManager.deleteByOrderReturnId(Collections.singletonList(orderReturnDTO.getId()));
+//        orderReturnItemManager.saveBatch(itemList);
     }
 
     @Override
     public OrderReturnVO getDetail(String id) {
         OrderReturnVO orderReturnVO = converter.convert(getById(id));
         List<OrderReturnItemDO> itemList = orderReturnItemManager.listByOrderReturnId(id);
-        orderReturnVO.setItemList(itemConverter.convert(itemList));
-        return orderReturnVO;
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void delete(List<String> ids) {
-        List<OrderReturnDO> orderReturnList = listByIds(ids);
-        for (OrderReturnDO orderReturnDO : orderReturnList) {
-            if (!new OrderReturnAllowable(orderReturnDO).getDelete()) {
-                throw new ServiceException(orderReturnDO.getSn() + "不允许进行删除操作");
-            }
+        List<OrderReturnItemVO> convert = itemConverter.convert(itemList);
+        for (OrderReturnItemVO vo : convert) {
+            OrderItemDO itemDO = orderItemManager.getById(vo.getOrderItemId());
+            GoodsDO goodsDO = goodsManager.getById(itemDO.getGoodsId());
+            vo.setGoodsVO(BeanUtil.copyProperties(goodsDO, GoodsVO.class));
+            vo.setNum(itemDO.getNum());
         }
-
-        removeBatchByIds(ids);
-        orderReturnItemManager.deleteByOrderReturnId(ids);
-    }
-
-    @Override
-    public void submit(Long id) {
-        // 校验
-        OrderReturnDO oldDO = getById(id);
-        if (!new OrderReturnAllowable(oldDO).getSubmit()) {
-            throw new ServiceException("不允许进行提交操作");
-        }
-
-        lambdaUpdate()
-                .set(OrderReturnDO::getStatus, OrderReturnStatusEnum.Submit)
-                .eq(OrderReturnDO::getId, id)
-                .update();
+        orderReturnVO.setItemList(convert);
+        return orderReturnVO;
     }
 
     @Override
-    public void withdraw(Long id) {
-        // 校验
+    @Transactional
+    public void cancel(String edit, Long id) {
+        // 更改原定单状态,更改售后订单状态
         OrderReturnDO oldDO = getById(id);
-        if (!new OrderReturnAllowable(oldDO).getWithdraw()) {
-            throw new ServiceException("不允许进行提交操作");
-        }
-
-        lambdaUpdate()
-                .set(OrderReturnDO::getStatus, OrderReturnStatusEnum.NotSubmit)
-                .eq(OrderReturnDO::getId, id)
-                .update();
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void audit(List<Long> ids, OrderReturnStatusEnum status, String remark) {
-        if (status != OrderReturnStatusEnum.AuditPass && status != OrderReturnStatusEnum.AuditReject) {
-            throw new ServiceException("审核参数错误");
-        }
-
-        List<OrderReturnDO> orderReturnList = listByIds(ids);
-        for (OrderReturnDO orderReturnDO : orderReturnList) {
-            // 校验
-            if (!new OrderReturnAllowable(orderReturnDO).getAudit()) {
-                throw new ServiceException(orderReturnDO.getSn() + "不能进行审核操作");
-            }
-        }
-
-        AdminUser currUser = adminUserManager.getCurrUser();
-        lambdaUpdate()
-                // 如果是驳回,状态改为未提交状态
-                .set(OrderReturnDO::getStatus, status == OrderReturnStatusEnum.AuditReject ? OrderReturnStatusEnum.NotSubmit : status)
-                .set(OrderReturnDO::getAuditRemark, remark)
-                .set(OrderReturnDO::getAuditById, currUser.getId())
-                .set(OrderReturnDO::getAuditBy, currUser.getRealName())
-                .in(OrderReturnDO::getId, ids)
-                .update();
-
-        // 如果审核通过
-        if (status == OrderReturnStatusEnum.AuditPass) {
-            for (OrderReturnDO orderReturnDO : orderReturnList) {
-                List<OrderReturnItemDO> returnItemList = orderReturnItemManager.listByOrderReturnId(orderReturnDO.getId());
-
-                // 因为不是退回原来的仓库,所以需要新创建批次
-                List<WarehouseEntryBatchDO> batchList = itemConverter.combination(returnItemList, orderReturnDO, noGenerateManager);
-                batchManager.create(StockChangeSourceEnum.ORDER_RETURN, orderReturnDO.getSn(), batchList);
-
-                // 更新已退货数量
-                for (OrderReturnItemDO orderReturnItemDO : returnItemList) {
-                    if (orderReturnDO.getOrderType() == OrderTypeEnum.TO_B) {
-                        warehouseOutItemManager.increaseReturnNum(orderReturnItemDO.getWarehouseOutItemId(), orderReturnItemDO.getReturnNum());
-                    } else {
-                        orderItemManager.increaseReturnNum(orderReturnItemDO.getOrderItemId(), orderReturnItemDO.getReturnNum());
-                    }
-                }
-
-                // 生成财务明细
-                Double totalPrice = CurrencyUtil.sum(returnItemList, itemDO -> CurrencyUtil.add(itemDO.getProductPrice(), itemDO.getReturnNum()));
-                financeItemManager.addExpand(FinanceExpandTypeEnum.OrderReturn, orderReturnDO.getSn(), totalPrice);
-            }
-
-            // 发送审核通过消息
-            OrderReturnAuditPassMessage message = new OrderReturnAuditPassMessage();
-            message.setList(orderReturnList);
-            this.messageSender.send(new MqMessage(AmqpExchange.ORDER_RETURN_AUDIT_PASS, AmqpExchange.ORDER_RETURN_AUDIT_PASS + "_ROUTING", message));
+        OrderDO orderDo = orderManager.getById(oldDO.getOrderId());
+        switch (edit) {
+            case "end":
+                orderDo.setStatus(SaleOrderStatusEnum.SALE_AFTER_END);
+                oldDO.setStatus(ReturnOrderStatusEnum.SALE_AFTER_END);
+                break;
+            case "cancel":
+                orderDo.setStatus(SaleOrderStatusEnum.SALE_AFTER_CANCEL);
+                oldDO.setStatus(ReturnOrderStatusEnum.SALE_AFTER_CANCEL);
+                break;
+            default:
+                throw new ServiceException("非法操作");
         }
+        updateById(oldDO);
+        orderManager.updateById(orderDo);
     }
 
     /**
@@ -309,67 +229,6 @@ public class OrderReturnManagerImpl extends BaseServiceImpl<OrderReturnMapper, O
         IoUtil.close(out);
     }
 
-    private void check(OrderReturnDTO orderReturnDTO) {
-        OrderDO orderDO = orderManager.getById(orderReturnDTO.getOrderId());
-        if (orderDO == null) {
-            throw new ServiceException("订单不存在");
-        }
-        boolean isToC = orderDO.getType() == OrderTypeEnum.TO_C;
-        if (!isToC && !orderDO.getShipFlag()) {
-            throw new ServiceException("只能选择已发货的订单");
-        }
-        if (isToC) {
-            // 零售订单校验订单项
-            Map<Long, OrderItemDO> orderItemMap = checkOrderItem(orderReturnDTO);
-            orderReturnDTO.setOrderItemMap(orderItemMap);
-            // 查询订单项的批次信息
-            List<Long> batchIds = convertList(orderItemMap.values(), OrderItemDO::getBatchId);
-            List<WarehouseEntryBatchDO> batchList = batchManager.listByIds(batchIds);
-            Map<Long, WarehouseEntryBatchDO> batchMap = convertMap(batchList, WarehouseEntryBatchDO::getId, Function.identity());
-            orderReturnDTO.setBatchMap(batchMap);
-        } else {
-            // 销售订单校验出库单项
-            Map<Long, WarehouseOutItemDO> warehouseOutItemMap = checkWarehouseOutItem(orderReturnDTO);
-            orderReturnDTO.setWarehouseOutItemMap(warehouseOutItemMap);
-        }
-
-//        DeptDO deptDO = deptManager.getDept(orderReturnDTO.getDeptId());
-//        if (deptDO == null) {
-//            throw new ServiceException("部门不存在");
-//        }
-
-        WarehouseDO warehouseDO = warehouseManager.getById(orderReturnDTO.getWarehouseId());
-        if (warehouseDO == null) {
-            throw new ServiceException("仓库不存在");
-        }
-
-        AdminUser handleBy = adminUserManager.getModel(orderReturnDTO.getHandleById());
-        if (handleBy == null) {
-            throw new ServiceException("经手人不存在");
-        }
-
-        orderReturnDTO.setOrderDO(orderDO);
-//        orderReturnDTO.setDeptDO(deptDO);
-        orderReturnDTO.setWarehouseDO(warehouseDO);
-        orderReturnDTO.setHandleBy(handleBy);
-    }
-
-    private Map<Long, WarehouseOutItemDO> checkWarehouseOutItem(OrderReturnDTO orderReturnDTO) {
-        List<Long> warehouseOutItemIdIds = convertList(orderReturnDTO.getItemList(), OrderReturnItemDTO::getWarehouseOutItemId);
-        Map<Long, WarehouseOutItemDO> warehouseOutItemMap = warehouseOutItemManager.listAndConvertMap(warehouseOutItemIdIds, WarehouseOutItemDO::getId);
-
-        for (OrderReturnItemDTO returnItemDTO : orderReturnDTO.getItemList()) {
-            WarehouseOutItemDO warehouseOutItemDO = warehouseOutItemMap.get(returnItemDTO.getWarehouseOutItemId());
-            if (warehouseOutItemDO == null) {
-                throw new ServiceException("出库单项:" + returnItemDTO.getWarehouseOutItemId() + "不存在");
-            }
-            if ((warehouseOutItemDO.getReturnNum() + returnItemDTO.getReturnNum()) > warehouseOutItemDO.getOutNum()) {
-                throw new ServiceException(warehouseOutItemDO.getProductName() + "可退货数量不足");
-            }
-        }
-
-        return warehouseOutItemMap;
-    }
 
     private Map<Long, OrderItemDO> checkOrderItem(OrderReturnDTO orderReturnDTO) {
         if (orderReturnDTO.getItemList().stream().anyMatch(orderReturnItemDTO -> orderReturnItemDTO.getOrderItemId() == null)) {

+ 35 - 26
module-erp/src/main/java/com/hys/app/service/erp/impl/StockDamageReportManagerImpl.java

@@ -1,9 +1,11 @@
 package com.hys.app.service.erp.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.io.IoUtil;
 import cn.hutool.poi.excel.ExcelUtil;
 import cn.hutool.poi.excel.ExcelWriter;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -11,18 +13,15 @@ import com.hys.app.framework.database.WebPage;
 import com.hys.app.framework.exception.ServiceException;
 import com.hys.app.framework.rabbitmq.MessageSender;
 import com.hys.app.framework.rabbitmq.MqMessage;
-import com.hys.app.framework.util.BeanUtil;
 import com.hys.app.framework.util.DateUtil;
 import com.hys.app.framework.util.PageConvert;
 import com.hys.app.framework.util.StringUtil;
 import com.hys.app.mapper.erp.StockDamageReportMapper;
 import com.hys.app.model.base.rabbitmq.AmqpExchange;
+import com.hys.app.model.erp.dos.ProductStockDO;
 import com.hys.app.model.erp.dos.StockDamageReport;
 import com.hys.app.model.erp.dos.StockDamageReportProduct;
-import com.hys.app.model.erp.dto.StockDamageReportDTO;
-import com.hys.app.model.erp.dto.StockDamageReportParam;
-import com.hys.app.model.erp.dto.StockDamageReportStatisticsParam;
-import com.hys.app.model.erp.dto.StockUpdateDTO;
+import com.hys.app.model.erp.dto.*;
 import com.hys.app.model.erp.dto.message.StockDamageAuditPassMessage;
 import com.hys.app.model.erp.enums.NoBusinessTypeEnum;
 import com.hys.app.model.erp.enums.StockChangeSourceEnum;
@@ -32,6 +31,7 @@ import com.hys.app.model.erp.vo.StockDamageReportAllowable;
 import com.hys.app.model.erp.vo.StockDamageReportStatistics;
 import com.hys.app.model.erp.vo.StockDamageReportVO;
 import com.hys.app.service.erp.*;
+import lombok.AllArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
@@ -44,6 +44,7 @@ import java.util.ArrayList;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 库存报损单业务接口实现类
@@ -52,22 +53,15 @@ import java.util.Map;
  * 2023-12-05
  */
 @Service
+@AllArgsConstructor
 public class StockDamageReportManagerImpl extends ServiceImpl<StockDamageReportMapper, StockDamageReport> implements StockDamageReportManager {
 
-    @Autowired
     private NoGenerateManager noGenerateManager;
-
-    @Autowired
     private StockDamageReportProductManager stockDamageReportProductManager;
-
-    @Autowired
     private StockDamageReportMapper stockDamageReportMapper;
-
-    @Autowired
     private MessageSender messageSender;
-
-    @Autowired
     private WarehouseEntryBatchManager warehouseEntryBatchManager;
+    private ProductStockManager productStockManager;
 
     /**
      * 查询库存报损单分页列表数据
@@ -102,22 +96,37 @@ public class StockDamageReportManagerImpl extends ServiceImpl<StockDamageReportM
     @Override
     @Transactional(value = "goodsTransactionManager", propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     public void add(StockDamageReportDTO stockDamageReportDTO) {
-        //构建报损单信息
-        StockDamageReport stockDamageReport = new StockDamageReport();
-        BeanUtil.copyProperties(stockDamageReportDTO, stockDamageReport);
+        //报损数量不能大于库存数量
+        List<Long> collect = stockDamageReportDTO.getProductList().stream().map(StockDamageReportProductDTO::getGoodsId).collect(Collectors.toList());
+        List<ProductStockDO> list = productStockManager.list(new LambdaQueryWrapper<ProductStockDO>()
+                .eq(ProductStockDO::getWarehouseId, stockDamageReportDTO.getWarehouseId())
+                .in(ProductStockDO::getGoodsId, collect));
+        for (StockDamageReportProductDTO dto : stockDamageReportDTO.getProductList()) {
+            ProductStockDO aDo = list.stream().filter(item -> item.getGoodsId().equals(dto.getGoodsId())).findFirst().get();
+            if (aDo.getUsableStock() < dto.getReportNum()) {
+                throw new ServiceException("报损数量不能能大于可用库存数量");
+            }
+        }
+        StockDamageReport report = BeanUtil.copyProperties(stockDamageReportDTO, StockDamageReport.class);
         //生成库存报损单编号
         String sn = noGenerateManager.generate(NoBusinessTypeEnum.StockDamageReport);
-        stockDamageReport.setSn(sn);
+        report.setSn(sn);
+        this.save(report);
+
+
+
+
+
         //设置创建时间
-        stockDamageReport.setCreateTime(DateUtil.getDateline());
-        //设置状态默认为未提交(待审核)
-        stockDamageReport.setStatus(StockDamageReportStatusEnum.NEW.name());
-        //入库
-        this.save(stockDamageReport);
-        //获取主键ID
-        Long id = stockDamageReport.getId();
+//        stockDamageReport.setCreateTime(DateUtil.getDateline());
+//        //设置状态默认为未提交(待审核)
+//        stockDamageReport.setStatus(StockDamageReportStatusEnum.NEW.name());
+//        //入库
+//
+//        //获取主键ID
+//        Long id = stockDamageReport.getId();
         //保存库存报损单商品信息
-        this.stockDamageReportProductManager.saveProduct(id, stockDamageReportDTO.getProductList());
+//        this.stockDamageReportProductManager.saveProduct(id, stockDamageReportDTO.getProductList());
     }
 
     /**

+ 66 - 56
module-erp/src/main/java/com/hys/app/service/erp/impl/StockInventoryManagerImpl.java

@@ -1,34 +1,43 @@
 package com.hys.app.service.erp.impl;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.hys.app.framework.database.WebPage;
 import com.hys.app.framework.exception.ServiceException;
-import com.hys.app.framework.util.BeanUtil;
+
+import com.hys.app.framework.util.BeanUtils;
 import com.hys.app.framework.util.DateUtil;
 import com.hys.app.framework.util.PageConvert;
 import com.hys.app.framework.util.StringUtil;
 import com.hys.app.mapper.erp.StockInventoryMapper;
+import com.hys.app.model.erp.dos.ProductStockDO;
 import com.hys.app.model.erp.dos.StockInventory;
 import com.hys.app.model.erp.dos.StockInventoryProduct;
 import com.hys.app.model.erp.dto.StockInventoryDTO;
 import com.hys.app.model.erp.dto.StockInventoryParam;
+import com.hys.app.model.erp.dto.StockInventoryProductDTO;
 import com.hys.app.model.erp.enums.NoBusinessTypeEnum;
 import com.hys.app.model.erp.enums.StockInventoryStatusEnum;
 import com.hys.app.model.erp.vo.StockInventoryAllowable;
 import com.hys.app.model.erp.vo.StockInventoryVO;
 import com.hys.app.model.system.dos.AdminUser;
 import com.hys.app.service.erp.NoGenerateManager;
+import com.hys.app.service.erp.ProductStockManager;
 import com.hys.app.service.erp.StockInventoryManager;
 import com.hys.app.service.erp.StockInventoryProductManager;
 import com.hys.app.service.system.AdminUserManager;
+import lombok.AllArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 库存盘点单业务接口实现
@@ -37,16 +46,14 @@ import java.util.List;
  * 2023-12-05
  */
 @Service
+@AllArgsConstructor
 public class StockInventoryManagerImpl extends ServiceImpl<StockInventoryMapper, StockInventory> implements StockInventoryManager {
 
-    @Autowired
     private NoGenerateManager noGenerateManager;
-
-    @Autowired
     private StockInventoryProductManager stockInventoryProductManager;
-
-    @Autowired
     private AdminUserManager adminUserManager;
+    private ProductStockManager productStockManager;
+
 
     /**
      * 查询库存盘点单分页列表数据
@@ -56,22 +63,11 @@ public class StockInventoryManagerImpl extends ServiceImpl<StockInventoryMapper,
      */
     @Override
     public WebPage list(StockInventoryParam params) {
-        IPage<StockInventory> iPage = this.lambdaQuery()
-                .like(StringUtil.notEmpty(params.getSn()), StockInventory::getSn, params.getSn())
-                .like(StringUtil.notEmpty(params.getInventoryPerson()), StockInventory::getInventoryPerson, params.getInventoryPerson())
-                .eq(params.getWarehouseId() != null, StockInventory::getWarehouseId, params.getWarehouseId())
-                .eq(StringUtil.notEmpty(params.getStatus()), StockInventory::getStatus, params.getStatus())
-                .eq(params.getDeptId() != null, StockInventory::getDeptId, params.getDeptId())
-                .gt(params.getStartTime() != null, StockInventory::getInventoryTime, params.getStartTime())
-                .lt(params.getEndTime() != null, StockInventory::getInventoryTime, params.getEndTime())
-                .orderByDesc(StockInventory::getCreateTime)
-                .page(new Page<>(params.getPageNo(), params.getPageSize()));
-
-        for (StockInventory record : iPage.getRecords()) {
-            StockInventoryAllowable allowable = new StockInventoryAllowable(record);
-            record.setAllowable(allowable);
-        }
-        return PageConvert.convert(iPage);
+        Page<StockInventory> page = page(new Page<>(params.getPageNo(), params.getPageSize()), new LambdaQueryWrapper<StockInventory>()
+                .eq(ObjectUtil.isNotNull(params.getWarehouseId()), StockInventory::getWarehouseId, params.getWarehouseId())
+                .eq(ObjectUtil.isNotNull(params.getInventoryPersonId()), StockInventory::getInventoryPersonId, params.getWarehouseId()));
+        Page<StockInventory> page1 = page;
+        return PageConvert.convert(page1);
     }
 
     /**
@@ -82,35 +78,63 @@ public class StockInventoryManagerImpl extends ServiceImpl<StockInventoryMapper,
     @Override
     @Transactional(value = "goodsTransactionManager", propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     public void add(StockInventoryDTO stockInventoryDTO) {
-        //构建盘点单信息
-        StockInventory stockInventory = new StockInventory();
-        BeanUtil.copyProperties(stockInventoryDTO, stockInventory);
+        StockInventory copied = BeanUtil.copyProperties(stockInventoryDTO, StockInventory.class);
         //生成库存盘点单编号
-        String sn = noGenerateManager.generate(NoBusinessTypeEnum.StockInventory);
-        stockInventory.setSn(sn);
-        //设置创建时间
-        stockInventory.setCreateTime(DateUtil.getDateline());
-        //设置状态默认为未提交(待审核)
-        stockInventory.setStatus(StockInventoryStatusEnum.NEW.name());
-        //入库
-        this.save(stockInventory);
-        //获取主键ID
-        Long id = stockInventory.getId();
+        copied.setSn(noGenerateManager.generate(NoBusinessTypeEnum.StockInventory));
         //保存库存盘点单商品信息
-        this.stockInventoryProductManager.saveProduct(id, stockInventoryDTO.getProductList());
+        save(copied);
+        List<StockInventoryProduct> list = BeanUtils.toBean(stockInventoryDTO.getProductList(), StockInventoryProduct.class);
+        list.forEach(item -> item.setInventoryId(copied.getId()));
+        this.stockInventoryProductManager.saveProduct(copied.getId(), stockInventoryDTO.getProductList());
+    }
+
+    @Override
+    @Transactional
+    public void syncStock(Long id) {
+        StockInventory stockInventory = getById(id);
+        List<StockInventoryProduct> goodsList = this.stockInventoryProductManager.list(id);
+        List<Long> collect = goodsList.stream().map(StockInventoryProduct::getGoodsId).collect(Collectors.toList());
+        List<ProductStockDO> list = productStockManager.list(new LambdaQueryWrapper<ProductStockDO>()
+                .eq(ProductStockDO::getWarehouseId, stockInventory.getWarehouseId())
+                .in(ProductStockDO::getGoodsId, collect));
+        for (ProductStockDO aDo : list) {
+            Integer inventoryNum = goodsList.stream().filter(item -> item.getGoodsId().equals(aDo.getGoodsId())).findAny().get().getInventoryNum();
+            aDo.setActualStock(inventoryNum);
+        }
+        productStockManager.updateBatchById(list);
     }
 
+
     /**
-     * 编辑库存盘点单
+     * 获取库存盘点单详情
      *
      * @param id 主键ID
+     * @return
+     */
+    @Override
+    public StockInventoryVO getDetail(Long id) {
+        StockInventory stockInventory = this.getById(id);
+        StockInventoryVO stockInventoryVO = BeanUtil.copyProperties(stockInventory, StockInventoryVO.class);
+        //获取库存盘点单商品信息
+        List<StockInventoryProduct> goodsList = this.stockInventoryProductManager.list(id);
+        List<StockInventoryProductDTO> beanList = BeanUtils.toBean(goodsList, StockInventoryProductDTO.class);
+        stockInventoryVO.setProductList(beanList);
+        return stockInventoryVO;
+    }
+
+
+
+    /**
+     * 编辑库存盘点单
+     *
+     * @param id                主键ID
      * @param stockInventoryDTO 库存盘点单信息
      */
     @Override
     @Transactional(value = "goodsTransactionManager", propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     public void edit(Long id, StockInventoryDTO stockInventoryDTO) {
         //获取库存盘点单旧数据
-        StockInventory stockInventory  = this.getById(id);
+        StockInventory stockInventory = this.getById(id);
         if (!StockInventoryStatusEnum.NEW.name().equals(stockInventory.getStatus())
                 && !StockInventoryStatusEnum.REJECT.name().equals(stockInventory.getStatus())) {
             throw new ServiceException("只有状态为未提交或审核驳回的库存盘点单才可以进行编辑操作");
@@ -152,23 +176,7 @@ public class StockInventoryManagerImpl extends ServiceImpl<StockInventoryMapper,
         this.stockInventoryProductManager.deleteProduct(ids);
     }
 
-    /**
-     * 获取库存盘点单详情
-     *
-     * @param id 主键ID
-     * @return
-     */
-    @Override
-    public StockInventoryVO getDetail(Long id) {
-        StockInventory stockInventory = this.getById(id);
-        StockInventoryVO stockInventoryVO = new StockInventoryVO();
-        BeanUtil.copyProperties(stockInventory, stockInventoryVO);
 
-        //获取库存盘点单商品信息
-        List<StockInventoryProduct> goodsList = this.stockInventoryProductManager.list(id);
-        stockInventoryVO.setProductList(goodsList);
-        return stockInventoryVO;
-    }
 
     /**
      * 库存盘点单提交审核
@@ -227,8 +235,8 @@ public class StockInventoryManagerImpl extends ServiceImpl<StockInventoryMapper,
     /**
      * 审核库存盘点单
      *
-     * @param ids 库存盘点单ID集合
-     * @param status 审核状态 PASS:审核通过,REJECT:审核驳回
+     * @param ids          库存盘点单ID集合
+     * @param status       审核状态 PASS:审核通过,REJECT:审核驳回
      * @param rejectReason 驳回原因
      */
     @Override
@@ -270,4 +278,6 @@ public class StockInventoryManagerImpl extends ServiceImpl<StockInventoryMapper,
                 .in(StockInventory::getId, ids)
                 .update();
     }
+
+
 }

+ 4 - 12
module-erp/src/main/java/com/hys/app/service/erp/impl/StockInventoryProductManagerImpl.java

@@ -3,6 +3,7 @@ package com.hys.app.service.erp.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.hys.app.framework.util.BeanUtil;
+import com.hys.app.framework.util.BeanUtils;
 import com.hys.app.mapper.erp.StockInventoryProductMapper;
 import com.hys.app.model.erp.dos.StockInventoryProduct;
 import com.hys.app.model.erp.dto.StockInventoryProductDTO;
@@ -36,18 +37,9 @@ public class StockInventoryProductManagerImpl extends ServiceImpl<StockInventory
     @Override
     @Transactional(value = "goodsTransactionManager", propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     public void saveProduct(Long inventoryId, List<StockInventoryProductDTO> productList) {
-        //先删除旧数据
-        List<Long> inventoryIds = new ArrayList<>();
-        inventoryIds.add(inventoryId);
-        this.deleteProduct(inventoryIds);
-
-        //再循环将商品信息入库
-        for (StockInventoryProductDTO productDTO : productList) {
-            StockInventoryProduct product = new StockInventoryProduct();
-            BeanUtil.copyProperties(productDTO, product);
-            product.setInventoryId(inventoryId);
-            this.save(product);
-        }
+        List<StockInventoryProduct> list = BeanUtils.toBean(productList, StockInventoryProduct.class);
+        list.forEach(item -> item.setInventoryId(inventoryId));
+        saveBatch(list);
     }
 
     /**

+ 0 - 2
module-erp/src/main/java/com/hys/app/service/erp/impl/WarehouseAreaManagerImpl.java

@@ -62,8 +62,6 @@ public class WarehouseAreaManagerImpl extends BaseServiceImpl<WarehouseAreaMappe
         return webPage1;
     }
 
-
-
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void add(WarehouseAreaDO warehouseAreaDO) {

+ 2 - 1
module-erp/src/main/java/com/hys/app/service/erp/impl/WarehouseEntryManagerImpl.java

@@ -129,7 +129,7 @@ public class WarehouseEntryManagerImpl extends BaseServiceImpl<WarehouseEntryMap
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void add(WarehouseEntryDTO warehouseEntryDTO) {
+    public Long add(WarehouseEntryDTO warehouseEntryDTO) {
         check(warehouseEntryDTO);
         // 保存入库单
         WarehouseEntryDO warehouseEntryDO =  BeanUtil.copyProperties(warehouseEntryDTO, WarehouseEntryDO.class);
@@ -151,6 +151,7 @@ public class WarehouseEntryManagerImpl extends BaseServiceImpl<WarehouseEntryMap
         if ("submit".equals(warehouseEntryDTO.getSaveOrSubmit())){
             updateStock(warehouseEntryDTO,warehouseEntryDO);
         }
+        return warehouseEntryDO.getId();
     }
 
     @Override

+ 3 - 7
module-erp/src/main/java/com/hys/app/service/erp/impl/WarehouseOutManagerImpl.java

@@ -90,8 +90,6 @@ public class WarehouseOutManagerImpl extends BaseServiceImpl<WarehouseOutMapper,
     @Autowired
     private FinanceItemManager financeItemManager;
 
-    @Autowired
-    private KuaiDiNiaoService kuaiDiNiaoService;
 
     @Autowired
     private ProductStockManager productStockManager;
@@ -106,7 +104,7 @@ public class WarehouseOutManagerImpl extends BaseServiceImpl<WarehouseOutMapper,
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void add(WarehouseOutDTO warehouseOutDTO) {
+    public Long add(WarehouseOutDTO warehouseOutDTO) {
         // 保存出库单
         WarehouseOutDO warehouseOutDO = BeanUtil.copyProperties(warehouseOutDTO, WarehouseOutDO.class);
         warehouseOutDO.setSn(noGenerateManager.generate(NoBusinessTypeEnum.WarehouseOut, warehouseOutDO.getDeptId()));
@@ -121,6 +119,7 @@ public class WarehouseOutManagerImpl extends BaseServiceImpl<WarehouseOutMapper,
         if ("submit".equals(warehouseOutDTO.getSaveOrSubmit())) {
             updateStock(warehouseOutDTO, warehouseOutDO);
         }
+        return warehouseOutDO.getId();
     }
 
 
@@ -334,10 +333,7 @@ public class WarehouseOutManagerImpl extends BaseServiceImpl<WarehouseOutMapper,
                 .update();
     }
 
-    @Override
-    public void kdShip(PreOrderModel preOrderModel) {
-        kuaiDiNiaoService.preOrder(preOrderModel);
-    }
+
 
     @Override
     public Page<GoodsVO> getGoodByWarehouse(Long warehouseId, BaseQueryParam queryParam) {

+ 1 - 1
module-erp/src/main/java/com/hys/app/service/kuaidiniao/KuaiDiNiaoService.java

@@ -10,5 +10,5 @@ public interface KuaiDiNiaoService {
      *
      * @param preOrderModel 接收参数
      */
-    void preOrder(PreOrderModel preOrderModel);
+    String preOrder(PreOrderModel preOrderModel);
 }

+ 8 - 6
module-erp/src/main/java/com/hys/app/service/kuaidiniao/KuaiDiNiaoServiceImpl.java

@@ -10,6 +10,7 @@ import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
 import com.hys.app.framework.context.user.AdminUserContext;
 import com.hys.app.framework.exception.ServiceException;
+import com.hys.app.framework.util.DateUtil;
 import com.hys.app.service.kuaidiniao.entity.LongitudeLatitude;
 import com.hys.app.service.kuaidiniao.entity.PreOrderModel;
 import org.springframework.beans.factory.annotation.Value;
@@ -40,11 +41,10 @@ public class KuaiDiNiaoServiceImpl implements KuaiDiNiaoService {
 
 
     @Override
-    public void preOrder(PreOrderModel preOrderModel) {
+    public String preOrder(PreOrderModel preOrderModel) {
         //填充参数
         fillParam(preOrderModel);
-        String resJson = sendUrl(JSONUtil.toJsonStr(preOrderModel), KdConstants.preOrder);
-        System.out.println(resJson);
+        return sendUrl(JSONUtil.toJsonStr(preOrderModel), KdConstants.preOrder);
     }
 
     /**
@@ -72,21 +72,23 @@ public class KuaiDiNiaoServiceImpl implements KuaiDiNiaoService {
                     Map mapData = JSON.parseObject(mapCreate.get("data").toString(), Map.class);
                     return mapData.get("kdnOrderCode").toString();
                 }
+            }else {
+                throw new ServiceException(map.get("reason").toString());
             }
         } catch (Exception e) {
             e.printStackTrace();
-            throw new ServiceException("请求快鸟发货异常,请联系客服");
+            throw new ServiceException("请求快鸟发货异常,请联系客服");
         }
         return null;
     }
 
     private void fillParam(PreOrderModel preOrderModel) {
         //填充送货人的经纬度
-        LongitudeLatitude longitudeLatitudeSender = GaoDeUtil.getLongitudeLatitude(preOrderModel.getSender().getAddress());
+        LongitudeLatitude longitudeLatitudeSender = GaoDeUtil.getLongitudeLatitude(preOrderModel.getSender().getProvinceCityAreaAddress());
         preOrderModel.getSender().setLongitude(longitudeLatitudeSender.getLongitude());
         preOrderModel.getSender().setLatitude(longitudeLatitudeSender.getLatitude());
         //填充收货人的经纬度
-        LongitudeLatitude longitudeLatitudeReceiver = GaoDeUtil.getLongitudeLatitude(preOrderModel.getSender().getAddress());
+        LongitudeLatitude longitudeLatitudeReceiver = GaoDeUtil.getLongitudeLatitude(preOrderModel.getSender().getProvinceCityAreaAddress());
         preOrderModel.getReceiver().setLongitude(longitudeLatitudeReceiver.getLongitude());
         preOrderModel.getReceiver().setLatitude(longitudeLatitudeReceiver.getLatitude());
         //获取下单人信息

+ 1 - 1
module-erp/src/main/java/com/hys/app/service/kuaidiniao/entity/KdGood.java

@@ -18,7 +18,7 @@ public class KdGood {
     private String goodsName;
 
     @ApiModelProperty(value = "物品价格")
-    private Double goodsPrice;
+    private Double goodsPrice=0.0;
 
     @Range(min = 1, max = 99)
     @ApiModelProperty(value = "数量")

+ 9 - 12
module-erp/src/main/java/com/hys/app/service/kuaidiniao/entity/PreOrderModel.java

@@ -9,6 +9,7 @@ import javax.validation.Valid;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import java.time.LocalDateTime;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -16,11 +17,12 @@ import java.util.List;
  */
 @Data
 public class PreOrderModel {
+
     @ApiModelProperty(value = "门店业务类型 1:商家门店  2:个人即时配")
     private Integer storeBusinessType = 2;
 
     @ApiModelProperty(value = "1、storeCode平台门店编码(商家自定义门店编码,唯一),个人即时配编码固定传storeCode;2、merchantCode快递鸟门店编码(商家门店编码映射KDN门店编码)个人即时配编码固传merchantCode”;3、平台门店编码和快递鸟门店编码必填一项,且两者只能同时填一项。")
-    private String storeCode ;
+    private String storeCode;
 
     @ApiModelProperty(value = "(商家门店编码映射KDN门店编码)个人即时配编码固传merchantCode”;3、平台门店编码和快递鸟门店编码必填一项,且两者只能同时填一项。")
     private String merchantCode = "merchantCode";
@@ -32,27 +34,27 @@ public class PreOrderModel {
     private String productTypeCode = "B";
 
     @ApiModelProperty(value = "即时配编码,多个即时配编码用逗号分隔。")
-    private String intraCode = "SFTC,";
+    private String intraCode = "SFTC";
 
     @ApiModelProperty(value = "预约类型0:立即单、1:预约上门单")
     private Integer appointmentType;
 
     @ApiModelProperty(value = "预约上门单必填预约上门时间格式:YYYY-MM-DD  hh:mm:ss说明:当前时间+2小时,10分钟间隔向上取整。")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private LocalDateTime appointmentTime;
+//    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private String appointmentTime;
 
     @ApiModelProperty(value = "交通方式,默认0:未指定。指定交通方式会产生额外的费用。暂不支持")
     private Integer travelWay = 0;
 
     @ApiModelProperty(value = "下单类型1:帮我送 、2:帮我取;默认1")
-    private Integer deliveryType;
+    private Integer deliveryType = 1;
 
     @ApiModelProperty(value = "坐标类型1:百度地图、 2:高德地图 、3:腾讯地图")
     private Integer lbsType = 2;
 
     @ApiModelProperty(value = "物品类型")
-    private String goodsType;
+    private String goodsType = "99";
 
     @ApiModelProperty(value = "物品数量1-99的整数")
     private Integer goodsNum;
@@ -95,11 +97,6 @@ public class PreOrderModel {
     @ApiModelProperty(value = "商家订单号 全局唯一")
     private String orderCode;
 
-    @ApiModelProperty(value = "取货码")
-    private String pickupCode;
-
     @ApiModelProperty(value = "备注")
     private String remark;
-
-
 }

+ 3 - 0
module-erp/src/main/java/com/hys/app/service/kuaidiniao/entity/ReceiverSender.java

@@ -22,6 +22,9 @@ public class ReceiverSender {
     @ApiModelProperty(value = "地址")
     private String address;
 
+    @ApiModelProperty(value = "拼接好的地址")
+    private String  provinceCityAreaAddress;
+
     @ApiModelProperty(value = "寄件人/收件人名称")
     private String name;
 

+ 20 - 0
server/src/main/java/com/hys/app/Application.java

@@ -1,15 +1,22 @@
 package com.hys.app;
 
+import com.fasterxml.jackson.annotation.JsonInclude;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
 import org.springframework.boot.web.servlet.ServletComponentScan;
 import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.FilterType;
 import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.scheduling.annotation.EnableScheduling;
 
+import java.time.ZoneId;
+import java.util.Locale;
+import java.util.TimeZone;
+
 /**
  * Created by kingapex on 2018/3/8.
  *
@@ -32,4 +39,17 @@ public class Application {
         SpringApplication.run(Application.class, args);
     }
 
+    @Bean
+    public Jackson2ObjectMapperBuilderCustomizer customizer()
+    {
+        return builder -> {
+            builder.locale(Locale.CHINA);
+            builder.timeZone(TimeZone.getTimeZone(ZoneId.systemDefault()));
+            //转换时间格式
+            builder.simpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            //为null的数据不返回给前端
+            builder.serializationInclusion(JsonInclude.Include.NON_NULL);
+        };
+    }
+
 }