Bladeren bron

改动过的

huanglizhi 1 jaar geleden
bovenliggende
commit
7c5c702205

+ 0 - 6
module-erp/src/main/java/com/hys/app/controller/erp/use/StockDamageReportManagerController.java

@@ -49,12 +49,6 @@ public class StockDamageReportManagerController {
         this.stockDamageReportManager.add(stockDamageReportDTO);
     }
 
-    @ApiOperation(value = "修改库存报损单")
-    @PostMapping("/{id}")
-    @Log(client = LogClient.admin, detail = "修改id为[${id}]的库存报损单")
-    public void edit(@PathVariable Long id, @RequestBody @Valid StockDamageReportDTO stockDamageReportDTO) {
-        this.stockDamageReportManager.edit(id, stockDamageReportDTO);
-    }
 
     @ApiOperation(value = "确认报损单")
     @PostMapping("/submit/{id}")

+ 4 - 0
module-erp/src/main/java/com/hys/app/model/erp/dos/OrderSendDO.java

@@ -69,6 +69,8 @@ public class OrderSendDO extends BaseDO {
     @ApiModelProperty(value = "备注")
     private String remark;
 
+    @ApiModelProperty(value = "发货次数,如果发货次数大于0,发货所有的逻辑都不要再走一遍")
+    private Integer sendNo=0;
 
     @ApiModelProperty(value = "门店业务类型 1:商家门店  2:个人即时配")
     private Integer storeBusinessType = 2;
@@ -262,4 +264,6 @@ public class OrderSendDO extends BaseDO {
     @ApiModelProperty("快递员电话后4位")
     private String logisticsPhone;
 
+    @ApiModelProperty("客户名称")
+    private String customerName;
 }

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

@@ -97,5 +97,7 @@ public class OrderQueryParams extends BaseQueryParam {
     @ApiModelProperty(name = "type", value = "订单类型")
     private String selectType;
 
+    @ApiModelProperty("客户名称")
+    private String customerName;
 }
 

+ 0 - 7
module-erp/src/main/java/com/hys/app/service/erp/StockDamageReportManager.java

@@ -35,13 +35,6 @@ public interface StockDamageReportManager  extends BaseService<StockDamageReport
      */
     void add(StockDamageReportDTO stockDamageReportDTO);
 
-    /**
-     * 编辑库存报损单
-     *
-     * @param id 主键ID
-     * @param stockDamageReportDTO 库存报损单信息
-     */
-    void edit(Long id, StockDamageReportDTO stockDamageReportDTO);
 
     /**
      * 删除库存报损单

+ 9 - 2
module-erp/src/main/java/com/hys/app/service/erp/impl/OrderManagerImpl.java

@@ -283,7 +283,8 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
         Page<OrderSendDO> page = new Page<>(queryParams.getPageNo(), queryParams.getPageSize());
         LambdaQueryWrapper<OrderSendDO> wrapper = new LambdaQueryWrapper<OrderSendDO>()
                 .eq(ObjectUtil.isNotNull(queryParams.getWarehouseId()), OrderSendDO::getWarehouseId, queryParams.getWarehouseId())
-                .like(StrUtil.isNotEmpty(queryParams.getSn()), OrderSendDO::getSn, queryParams.getSn());
+                .like(StrUtil.isNotEmpty(queryParams.getSn()), OrderSendDO::getSn, queryParams.getSn())
+                .like(StrUtil.isNotEmpty(queryParams.getCustomerName()), OrderSendDO::getCustomerName, queryParams.getCustomerName());
         switch (queryParams.getSelectType()) {
             case "to_be_send":
                 wrapper.in(OrderSendDO::getStatus, SaleOrderSendStatusEnum.TO_BE_SEND);
@@ -311,8 +312,10 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
     @Transactional(rollbackFor = Exception.class)
     public void orderSend(Long sendOrderId, PreOrderModelDTO orderSendDO) {
         OrderSendDO aDo = orderSendManager.getById(sendOrderId);
+        if (aDo.getSendNo()>0){
+            return;
+        }
         OrderDO orderDO = getById(aDo.getOrderId());
-
         converter.copyProperties(aDo, orderSendDO, orderSendDO.getReceiver(), orderSendDO.getSender());
         //根据订单查找到这个订单的所有货物扣减库存
         List<OrderSendItemVO> list = orderSendDO.getOrderItemVOS();
@@ -421,6 +424,10 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
                 if (sendItemVO.getSnCodeList().size() != sendItemVO.getNum()) {
                     throw new ServiceException("录入的序列号数量和发货数量必须一样多");
                 }
+                Set<Long> set = sendItemVO.getSnCodeList().stream().map(GoodsSnDO::getId).collect(Collectors.toSet());
+                if (set.size() != sendItemVO.getSnCodeList().size()){
+                    throw new ServiceException("序列号重复");
+                }
             }
             if (CollUtil.isNotEmpty(sendItemVO.getSnCodeList())) {
                 snDOS.addAll(sendItemVO.getSnCodeList());

+ 40 - 50
module-erp/src/main/java/com/hys/app/service/erp/impl/StockDamageReportManagerImpl.java

@@ -100,6 +100,21 @@ public class StockDamageReportManagerImpl extends ServiceImpl<StockDamageReportM
             if (aDo.getActualStock() < dto.getReportNum()) {
                 throw new ServiceException("报损数量不能能大于库存数量");
             }
+
+            ProductDO manager = productManager.getById(dto.getProductId());
+            if (manager.getHaveSn()) {
+                if (CollUtil.isEmpty(dto.getSnCodeList())) {
+                    throw new ServiceException(manager.getId() + ":有序列号的商品出库需要录入序列号");
+                }
+                if (dto.getReportNum() != dto.getSnCodeList().size()) {
+                    throw new ServiceException(manager.getId() + ":出库的数量须和序列号的个数相等");
+                }
+                Set<Long> set = dto.getSnCodeList().stream().map(GoodsSnDO::getId).collect(Collectors.toSet());
+                if (set.size() != dto.getSnCodeList().size()){
+                    throw new ServiceException("序列号重复");
+                }
+
+            }
         }
         //生成库存报损单编号
         String sn = noGenerateManager.generate(NoBusinessTypeEnum.StockDamageReport);
@@ -108,6 +123,30 @@ public class StockDamageReportManagerImpl extends ServiceImpl<StockDamageReportM
         List<StockDamageReportProduct> bean = BeanUtils.toBean(stockDamageReportDTO.getProductList(), StockDamageReportProduct.class);
         bean.forEach(item -> item.setReportId(report.getId()));
         stockDamageReportProductManager.saveBatch(bean);
+
+        List<ItemSnCodeDO> itemSnCodeDOS = new ArrayList<>();
+        //更爱序列号的状态
+        List<GoodsSnDO> snList = new ArrayList<>();
+        //如果有序列号,保存序列号和入库单的关系,更爱序列号的状态
+        for (StockDamageReportProductDTO aDo : stockDamageReportDTO.getProductList()) {
+            if (CollUtil.isNotEmpty(aDo.getSnCodeList())) {
+                aDo.getSnCodeList().forEach(item -> {
+                    ItemSnCodeDO itemSnCodeDO = new ItemSnCodeDO();
+                    itemSnCodeDO.setItemId(aDo.getId());
+                    itemSnCodeDO.setEntryOutHouseId(report.getWarehouseId());
+                    itemSnCodeDO.setType("damage");
+                    itemSnCodeDO.setSnCodeId(item.getId());
+                    itemSnCodeDOS.add(itemSnCodeDO);
+                    item.setStatus(SnCodeStatusEnum.DISABLE_USE);
+                    item.setOutHouseId(null);
+                    item.setEntryHouseId(null);
+                    snList.add(item);
+                });
+            }
+        }
+        //保存序列号和子表的关系
+        itemSnCodeManager.saveBatch(itemSnCodeDOS);
+        goodsSnManager.updateBatchById(snList);
     }
 
 
@@ -166,22 +205,6 @@ public class StockDamageReportManagerImpl extends ServiceImpl<StockDamageReportM
         productStockManager.updateBatchById(list);
     }
 
-
-    /**
-     * 编辑库存报损单
-     *
-     * @param id                   主键ID
-     * @param stockDamageReportDTO 库存报损单信息
-     */
-    @Override
-    @Transactional(value = "goodsTransactionManager", propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
-    public void edit(Long id, StockDamageReportDTO stockDamageReportDTO) {
-        //获取库存报损单旧数据
-        StockDamageReport stockDamageReport = this.getById(id);
-        //复制修改后的数据
-        //修改库存报损单信息
-    }
-
     /**
      * 删除库存报损单
      *
@@ -221,17 +244,7 @@ public class StockDamageReportManagerImpl extends ServiceImpl<StockDamageReportM
         }
         report.setStatus(DamageinventoryEnum.HAS_HANDLE);
         updateById(report);
-        for (StockDamageReportProductDTO aDo : stockDamageReportDTO.getProductList()) {
-            ProductDO manager = productManager.getById(aDo.getProductId());
-            if (manager.getHaveSn()) {
-                if (CollUtil.isEmpty(aDo.getSnCodeList())) {
-                    throw new ServiceException(manager.getId() + ":有序列号的商品出库需要录入序列号");
-                }
-                if (aDo.getReportNum() != aDo.getSnCodeList().size()) {
-                    throw new ServiceException(manager.getId() + ":出库的数量须和序列号的个数相等");
-                }
-            }
-        }
+
         List<StockDTO> arrayList = new ArrayList<>();
         //减实际库存
         for (StockDamageReportProductDTO dto : stockDamageReportDTO.getProductList()) {
@@ -260,29 +273,6 @@ public class StockDamageReportManagerImpl extends ServiceImpl<StockDamageReportM
             item.setOutNum(num);
         });
         warehouseOutItemManager.saveBatch(beanList);
-        List<ItemSnCodeDO> itemSnCodeDOS = new ArrayList<>();
-        //更爱序列号的状态
-        List<GoodsSnDO> list = new ArrayList<>();
-        //如果有序列号,保存序列号和入库单的关系,更爱序列号的状态
-        for (StockDamageReportProductDTO aDo : stockDamageReportDTO.getProductList()) {
-            if (CollUtil.isNotEmpty(aDo.getSnCodeList())) {
-                aDo.getSnCodeList().forEach(item -> {
-                    ItemSnCodeDO itemSnCodeDO = new ItemSnCodeDO();
-                    itemSnCodeDO.setItemId(aDo.getId());
-                    itemSnCodeDO.setEntryOutHouseId(report.getWarehouseId());
-                    itemSnCodeDO.setType("damage");
-                    itemSnCodeDO.setSnCodeId(item.getId());
-                    itemSnCodeDOS.add(itemSnCodeDO);
-                    item.setStatus(SnCodeStatusEnum.DISABLE_USE);
-                    item.setOutHouseId(outDO.getId());
-                    item.setEntryHouseId(null);
-                    list.add(item);
-                });
-            }
-        }
-        //保存序列号和子表的关系
-        itemSnCodeManager.saveBatch(itemSnCodeDOS);
-        goodsSnManager.updateBatchById(list);
         redisTemplate.delete(id.toString());
     }
 

+ 4 - 0
module-erp/src/main/java/com/hys/app/service/erp/impl/WarehouseEntryManagerImpl.java

@@ -200,6 +200,10 @@ public class WarehouseEntryManagerImpl extends BaseServiceImpl<WarehouseEntryMap
                 if (aDo.getNum() != aDo.getSnCodeList().size()) {
                     throw new ServiceException(manager.getId() + ":入库的数量须和序列号的个数相等");
                 }
+                Set<Long> set = aDo.getSnCodeList().stream().map(GoodsSnDO::getId).collect(Collectors.toSet());
+                if (set.size() != aDo.getSnCodeList().size()){
+                    throw new ServiceException("序列号重复");
+                }
             }
         }
 

+ 4 - 0
module-erp/src/main/java/com/hys/app/service/erp/impl/WarehouseOutManagerImpl.java

@@ -153,6 +153,10 @@ public class WarehouseOutManagerImpl extends BaseServiceImpl<WarehouseOutMapper,
                 if (aDo.getOutNum() != aDo.getSnCodeList().size()) {
                     throw new ServiceException(manager.getId() + ":出库的数量须和序列号的个数相等");
                 }
+                Set<Long> set = aDo.getSnCodeList().stream().map(GoodsSnDO::getId).collect(Collectors.toSet());
+                if (set.size() != aDo.getSnCodeList().size()){
+                    throw new ServiceException("序列号重复");
+                }
             }
         }
 

+ 2 - 0
module-erp/src/main/java/com/hys/app/service/kuaidiniao/KuaiDiNiaoServiceImpl.java

@@ -381,11 +381,13 @@ public class KuaiDiNiaoServiceImpl implements KuaiDiNiaoService {
                 //如果推送取消状态,需要重新下单
                 aDo.setKdnOrderCode("");
                 aDo.setStatus(SaleOrderSendStatusEnum.TO_BE_SEND);
+                aDo.setSendNo(aDo.getSendNo()+1);
                 break;
             case KdConstants.callBackCreateOrderFail:
                 //如果下单失败更爱订单状态,清空快递鸟单号,让用户可以重新下单
                 aDo.setKdnOrderCode("");
                 aDo.setStatus(SaleOrderSendStatusEnum.TO_BE_SEND);
+                aDo.setSendNo(aDo.getSendNo()+1);
                 break;
             case KdConstants.callBackFeeStatus:
                 aDo.setOrderFee(map);