Browse Source

提交代码

fgd 1 year ago
parent
commit
dcc12dffdb

+ 5 - 0
sd-business/src/main/java/com/sd/business/entity/order/bo/OrderExchangeAccountBo.java

@@ -23,6 +23,11 @@ public class OrderExchangeAccountBo {
     private BigDecimal returnAmount;
 
     /**
+     * 质检费
+     */
+    private BigDecimal checkFee;
+
+    /**
      * 订单sku退货数量
      */
     private Integer orderSkuNum;

+ 55 - 47
sd-business/src/main/java/com/sd/business/service/order/impl/OrderExchangeServiceImpl.java

@@ -203,6 +203,10 @@ public class OrderExchangeServiceImpl extends ServiceImpl<OrderExchangeMapper, O
 
         for (OrderExchangeDetail orderExchangeDetail : orderExchangeDetailList) {
 
+            if (orderExchangeDetail.getQuantity().compareTo(BigDecimal.ZERO) == 0) {
+                continue;
+            }
+
             Long orderSkuId = orderExchangeDetail.getOrderSkuId();
 
             // 数量为空,没找到订单sku id
@@ -232,6 +236,8 @@ public class OrderExchangeServiceImpl extends ServiceImpl<OrderExchangeMapper, O
             orderExchangeDetail.setOrderExchangeId(orderExchangeDto.getId());
             orderExchangeDetail.setReturnStatus(StatusConstant.NO);
             orderExchangeDetail.setExchangeStatus(StatusConstant.NO);
+            orderExchangeDetail.setCheckPassesQuantity(orderExchangeDetail.getQuantity());
+            orderExchangeDetail.setMeshBagDamageQuantity(BigDecimal.ZERO);
 
             BigDecimal packagingMaterialCost = orderSkuBomMap.getOrDefault(orderSkuId, Collections.emptyList()).stream()
                     .map(item -> item.getUnitPrice().multiply(item.getQuantity()))
@@ -256,55 +262,57 @@ public class OrderExchangeServiceImpl extends ServiceImpl<OrderExchangeMapper, O
         StatementOfAccount statementOfAccount = this.getStatementOfAccount(orderInfo.getDepartmentId());
         orderExchangeDto.setStatementOfAccountId(statementOfAccount.getId());
 
-        // 售后商品入库
-        if (Objects.equals(orderExchangeDto.getWarehouseId(), WarehouseConstant.PRODUCTION_DEFECTIVE)) {
-            List<InOutStorageBom> tempInOutStorageBomList = tempOrderSkuList.stream().map(item -> {
-                InOutStorageBom inStorageBom = new InOutStorageBom();
-                inStorageBom.setBomSpecId(item.getBomSpecId());
-                inStorageBom.setQuantity(item.getQuantity());
-                return inStorageBom;
-            }).collect(Collectors.toList());
+        if (!tempOrderSkuList.isEmpty()) {
+            // 售后商品入库
+            if (Objects.equals(orderExchangeDto.getWarehouseId(), WarehouseConstant.PRODUCTION_DEFECTIVE)) {
+                List<InOutStorageBom> tempInOutStorageBomList = tempOrderSkuList.stream().map(item -> {
+                    InOutStorageBom inStorageBom = new InOutStorageBom();
+                    inStorageBom.setBomSpecId(item.getBomSpecId());
+                    inStorageBom.setQuantity(item.getQuantity());
+                    return inStorageBom;
+                }).collect(Collectors.toList());
 
-            // 合并相同bom规格出库数量
-            List<InOutStorageBom> inOutStorageBomList = new ArrayList<>(tempInOutStorageBomList.stream()
-                    .collect(Collectors.toMap(
-                        InOutStorageBom::getBomSpecId,
-                        Function.identity(),
-                        (v1, v2) -> {
-                            v1.setQuantity(v1.getQuantity().add(v2.getQuantity()));
-                            return v1;
-                        })).values());
+                // 合并相同bom规格出库数量
+                List<InOutStorageBom> inOutStorageBomList = new ArrayList<>(tempInOutStorageBomList.stream()
+                        .collect(Collectors.toMap(
+                                InOutStorageBom::getBomSpecId,
+                                Function.identity(),
+                                (v1, v2) -> {
+                                    v1.setQuantity(v1.getQuantity().add(v2.getQuantity()));
+                                    return v1;
+                                })).values());
 
-            InOutStorageDto inOutStorageDto = new InOutStorageDto();
-            inOutStorageDto.setType(InOutTypeEnum.IN.getKey());
-            inOutStorageDto.setDetailType(InDetailTypeEnum.ABANDON.getKey());
-            inOutStorageDto.setWarehouseId(orderExchangeDto.getWarehouseId());
-            inOutStorageDto.setDepartmentId(DepartmentConstant.SD_SPORTS);
-            inOutStorageDto.setApplicant(SecurityUtils.getLoginUser().getUser().getNickName());
-            inOutStorageDto.setRemark("订单:" + orderInfo.getCode() + "订单售后报废入库");
-            inOutStorageDto.setInOutStorageBomList(inOutStorageBomList);
-            inOutStorageService.add(inOutStorageDto);
-        } else {
-            // 成品质检通过后出库包材,重新包装
-            Map<Long, OrderSku> finishedOrderSkuMap = tempOrderSkuList.stream().collect(Collectors.toMap(BaseIdPo::getId, Function.identity()));
-            orderSkuBomList.removeAll(tempOrderSkuBomList);
-            List<InOutStorageBom> outStorageBomList = orderSkuBomList.stream().map(item -> {
-                InOutStorageBom inOutStorageBom = new InOutStorageBom();
-                inOutStorageBom.setBomSpecId(item.getBomSpecId());
-                inOutStorageBom.setQuantity(item.getQuantity().multiply(finishedOrderSkuMap.get(item.getOrderSkuId()).getQuantity()));
-                return inOutStorageBom;
-            }).collect(Collectors.toList());
-            InOutStorageDto inOutStorageDto = new InOutStorageDto();
-            inOutStorageDto.setType(InOutTypeEnum.OUT.getKey());
-            inOutStorageDto.setDetailType(OutDetailTypeEnum.PRODUCTION.getKey());
-            inOutStorageDto.setWarehouseId(WarehouseConstant.PACKAGING_MATERIAL);
-            inOutStorageDto.setDepartmentId(DepartmentConstant.SD_SPORTS);
-            inOutStorageDto.setApplicant(SecurityUtils.getLoginUser().getUser().getNickName());
-            inOutStorageDto.setInOutStorageBomList(outStorageBomList);
-            inOutStorageDto.setLockStorage(StatusConstant.NO);
-            inOutStorageService.add(inOutStorageDto);
-            // 入成品库
-            inventoryFinishedService.noSourceInWarehousing(tempOrderSkuList);
+                InOutStorageDto inOutStorageDto = new InOutStorageDto();
+                inOutStorageDto.setType(InOutTypeEnum.IN.getKey());
+                inOutStorageDto.setDetailType(InDetailTypeEnum.ABANDON.getKey());
+                inOutStorageDto.setWarehouseId(orderExchangeDto.getWarehouseId());
+                inOutStorageDto.setDepartmentId(DepartmentConstant.SD_SPORTS);
+                inOutStorageDto.setApplicant(SecurityUtils.getLoginUser().getUser().getNickName());
+                inOutStorageDto.setRemark("订单:" + orderInfo.getCode() + "订单售后报废入库");
+                inOutStorageDto.setInOutStorageBomList(inOutStorageBomList);
+                inOutStorageService.add(inOutStorageDto);
+            } else {
+                // 成品质检通过后出库包材,重新包装
+                Map<Long, OrderSku> finishedOrderSkuMap = tempOrderSkuList.stream().collect(Collectors.toMap(BaseIdPo::getId, Function.identity()));
+                orderSkuBomList.removeAll(tempOrderSkuBomList);
+                List<InOutStorageBom> outStorageBomList = orderSkuBomList.stream().map(item -> {
+                    InOutStorageBom inOutStorageBom = new InOutStorageBom();
+                    inOutStorageBom.setBomSpecId(item.getBomSpecId());
+                    inOutStorageBom.setQuantity(item.getQuantity().multiply(finishedOrderSkuMap.get(item.getOrderSkuId()).getQuantity()));
+                    return inOutStorageBom;
+                }).collect(Collectors.toList());
+                InOutStorageDto inOutStorageDto = new InOutStorageDto();
+                inOutStorageDto.setType(InOutTypeEnum.OUT.getKey());
+                inOutStorageDto.setDetailType(OutDetailTypeEnum.PRODUCTION.getKey());
+                inOutStorageDto.setWarehouseId(WarehouseConstant.PACKAGING_MATERIAL);
+                inOutStorageDto.setDepartmentId(DepartmentConstant.SD_SPORTS);
+                inOutStorageDto.setApplicant(SecurityUtils.getLoginUser().getUser().getNickName());
+                inOutStorageDto.setInOutStorageBomList(outStorageBomList);
+                inOutStorageDto.setLockStorage(StatusConstant.NO);
+                inOutStorageService.add(inOutStorageDto);
+                // 入成品库
+                inventoryFinishedService.noSourceInWarehousing(tempOrderSkuList);
+            }
         }
 
         // 保存数据

+ 1 - 1
sd-business/src/main/java/com/sd/business/service/order/impl/OrderSalesShipmentStatisticsServiceImpl.java

@@ -59,7 +59,7 @@ public class OrderSalesShipmentStatisticsServiceImpl implements OrderSalesShipme
     @Override
     public Map<Long, OrderSalesShipmentStatisticsBo> getSalesShipmentStatisticsByDate(List<Long> bomSpecIds) {
         IWrapper<OrderSku> wrapper = IWrapper.getWrapper();
-        wrapper.orderByDesc("os", OrderSku::getId);
+        wrapper.orderByDesc("bs", BomSpec::getId);
         wrapper.in("bs", BomSpec::getId, bomSpecIds);
         wrapper.groupBy("bs.id");
         List<OrderSalesShipmentStatisticsBo> list = orderSalesShipmentStatisticsMapper.getOrderSalesShipmentStatisticsList(wrapper);

+ 8 - 0
sd-business/src/main/java/com/sd/business/service/order/impl/OrderServiceImpl.java

@@ -784,6 +784,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
             BigDecimal chargePrice = ObjectUtil.defaultIfNull(priceBillingStandardDetail.getChargePrice(), BigDecimal.ZERO);
             switch (chargeItem) {
                 case "40":
+                    if (bomSpec.getName().contains("支撑垫")) {
+                        skuSpecPriceVo.setPackingLabor(new BigDecimal("0.1"));
+                        break;
+                    }
                     if (bomSpec.getWidth().compareTo(BigDecimal.valueOf(90)) > 0) {
                         skuSpecPriceVo.setPackingLabor(new BigDecimal("1.5"));
                     } else {
@@ -797,6 +801,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
                     skuSpecPriceVo.setDeliveryMaterialsFee(chargePrice);
                     break;
                 case "70":
+                    if (bomSpec.getName().contains("支撑垫")) {
+                        skuSpecPriceVo.setManagementFee(new BigDecimal("0.05"));
+                        break;
+                    }
                     skuSpecPriceVo.setManagementFee(chargePrice);
                     break;
                 default:

+ 9 - 1
sd-business/src/main/java/com/sd/business/service/sku/impl/SkuSpecServiceImpl.java

@@ -227,7 +227,7 @@ public class SkuSpecServiceImpl extends ServiceImpl<SkuSpecMapper, SkuSpec> impl
                 machinedPanelStr = machinedPanelStr.replace(" ", "");
                 if (machinedPanelStr.startsWith("激光体位线") || machinedPanelStr.startsWith("激光图案")) {
                     skuSpec.setMachinedPanel("10");
-                } else if (machinedPanelStr.startsWith("激光logo")) {
+                } else if (machinedPanelStr.startsWith("激光logo") || machinedPanelStr.startsWith("激光LOGO") ) {
                     skuSpec.setMachinedPanel("20");
                 }
             }
@@ -440,6 +440,10 @@ public class SkuSpecServiceImpl extends ServiceImpl<SkuSpecMapper, SkuSpec> impl
                         vo.setLogoProcessingFee(chargePrice);
                         break;
                     case "40":
+                        if (bomSpecBo.getBomSpecName().contains("支撑垫")) {
+                            vo.setPackingLabor(new BigDecimal("0.1"));
+                            break;
+                        }
                         if (bomSpecBo.getWidth().compareTo(BigDecimal.valueOf(90)) > 0) {
                             vo.setPackingLabor(new BigDecimal("1.5"));
                         } else {
@@ -450,6 +454,10 @@ public class SkuSpecServiceImpl extends ServiceImpl<SkuSpecMapper, SkuSpec> impl
                         vo.setIssueFee(chargePrice);
                         break;
                     case "70":
+                        if (bomSpecBo.getBomSpecName().contains("支撑垫")) {
+                            vo.setManagementFee(new BigDecimal("0.05"));
+                            break;
+                        }
                         vo.setManagementFee(chargePrice);
                         break;
                 }

+ 1 - 1
sd-business/src/main/java/com/sd/business/service/statement/impl/StatementOfAccountMergeServiceImpl.java

@@ -202,7 +202,7 @@ public class StatementOfAccountMergeServiceImpl implements StatementOfAccountMer
                     record.setOrderQuantity(record.getOrderQuantity() + orderExchangeAccountBo.getOrderNum());
                     record.setReconcilingAmount(record.getReconcilingAmount()
                             .subtract(orderExchangeAccountBo.getReturnAmount())
-                            .add(BigDecimal.valueOf(orderExchangeAccountBo.getOrderSkuNum()).multiply(BigDecimal.valueOf(2))));
+                            .add(orderExchangeAccountBo.getCheckFee()));
                 }
 
                 if (ObjectUtil.isEmpty(tempOrderInfoList)) {

+ 31 - 5
sd-business/src/main/java/com/sd/business/service/statement/impl/StatementOfAccountServiceImpl.java

@@ -159,7 +159,7 @@ public class StatementOfAccountServiceImpl extends ServiceImpl<StatementOfAccoun
                 record.setOrderNum(record.getOrderNum() + orderExchangeAccountBo.getOrderNum());
                 record.setAmount(record.getAmount()
                         .subtract(orderExchangeAccountBo.getReturnAmount())
-                        .add(BigDecimal.valueOf(orderExchangeAccountBo.getOrderSkuNum()).multiply(BigDecimal.valueOf(2))));
+                        .add(orderExchangeAccountBo.getCheckFee()));
             }
         }
 
@@ -875,10 +875,18 @@ public class StatementOfAccountServiceImpl extends ServiceImpl<StatementOfAccoun
         // 获取订单sku
         List<DocumentByOrderVo.SkuSpec> skuSpecList = skuSpecListCompletableFuture.join();
 
+        // 查询出瑜伽砖的bom,质检费为1
+        List<Long> bomSpecIds = orderSkuList.stream().map(OrderSku::getBomSpecId).collect(Collectors.toList());
+        Map<Long, BomSpecBo> bomSpecBoMap = skuSpecService.getBomSpecBoByIdList(bomSpecIds);
+        Map<Long, BigDecimal> yjzMap = bomSpecBoMap.values().stream()
+                .filter(item -> Objects.equals(item.getClassifyId(), 1682221078014943234L))
+                .collect(Collectors.toMap(BomSpecBo::getBomSpecId, item -> BigDecimal.ONE));
+        Map<Long, Long> orderSkuBomSpecIdMap = orderSkuList.stream().collect(Collectors.toMap(BaseIdPo::getId, OrderSku::getBomSpecId));
+
         for (DocumentByOrderVo.SkuSpec skuSpec : skuSpecList) {
             skuSpec.setBomSpecList(bomSpecMap.getOrDefault(skuSpec.getOrderSkuId(), Collections.emptyList()));
             // 保存质检费,sku小计增加质检费
-            skuSpec.setCheckFee(BigDecimal.valueOf(2).multiply(skuSpec.getQuantity()));
+            skuSpec.setCheckFee(yjzMap.getOrDefault(orderSkuBomSpecIdMap.get(skuSpec.getOrderSkuId()), BigDecimal.valueOf(2)).multiply(skuSpec.getQuantity()));
             skuSpec.setSubtotal(skuSpec.getSubtotal()
                     .add(skuSpec.getCheckFee()));
         }
@@ -928,6 +936,13 @@ public class StatementOfAccountServiceImpl extends ServiceImpl<StatementOfAccoun
         // 获取订单sku
         List<OrderSku> orderSkuList = orderSkuService.list(q -> q.in(BaseIdPo::getId, exchangeDetailMap.keySet()));
 
+        // 查询出瑜伽砖的bom,质检费为1
+        List<Long> bomSpecIds = orderSkuList.stream().map(OrderSku::getBomSpecId).collect(Collectors.toList());
+        Map<Long, BomSpecBo> bomSpecBoMap = skuSpecService.getBomSpecBoByIdList(bomSpecIds);
+        Map<Long, BigDecimal> yjzMap = bomSpecBoMap.values().stream()
+                .filter(item -> Objects.equals(item.getClassifyId(), 1682221078014943234L))
+                .collect(Collectors.toMap(BomSpecBo::getBomSpecId, item -> BigDecimal.ONE));
+
         // 主材bom
         List<DocumentByBomVo> result = orderSkuList.stream()
                 .map(item -> DocumentByBomVo.builder()
@@ -941,7 +956,7 @@ public class StatementOfAccountServiceImpl extends ServiceImpl<StatementOfAccoun
                         .deliveryMaterialsFeeSummary(BigDecimal.ZERO)
                         .packingLaborSummary(BigDecimal.ZERO)
                         .managementFeeSummary(BigDecimal.ZERO)
-                        .checkFeeSummary(BigDecimal.valueOf(2).multiply(exchangeDetailMap.get(item.getId())))
+                        .checkFeeSummary(yjzMap.getOrDefault(item.getBomSpecId(), BigDecimal.valueOf(2)).multiply(exchangeDetailMap.get(item.getId())))
                         .build())
                 .peek(item -> item.setSubtotal(
                         item.getUnitPrice()
@@ -1068,6 +1083,13 @@ public class StatementOfAccountServiceImpl extends ServiceImpl<StatementOfAccoun
         // 获取订单sku
         List<OrderSku> orderSkuList = orderSkuService.list(q -> q.in(BaseIdPo::getId, exchangeDetailMap.keySet()));
 
+        // 查询出瑜伽砖的bom,质检费为1
+        List<Long> bomSpecIds = orderSkuList.stream().map(OrderSku::getBomSpecId).collect(Collectors.toList());
+        Map<Long, BomSpecBo> bomSpecBoMap = skuSpecService.getBomSpecBoByIdList(bomSpecIds);
+        Map<Long, BigDecimal> yjzMap = bomSpecBoMap.values().stream()
+                .filter(item -> Objects.equals(item.getClassifyId(), 1682221078014943234L))
+                .collect(Collectors.toMap(BomSpecBo::getBomSpecId, item -> BigDecimal.ONE));
+
         // 生成结果集
         List<DocumentBySkuVo> documentBySkuVoList = orderSkuList.stream()
                 .map(item -> DocumentBySkuVo.builder()
@@ -1078,9 +1100,9 @@ public class StatementOfAccountServiceImpl extends ServiceImpl<StatementOfAccoun
                                 .divide(exchangeDetailMap.get(item.getId()), 2, RoundingMode.HALF_UP)
                                 .negate()
                         )
-                        .checkFee(BigDecimal.valueOf(2).multiply(exchangeDetailMap.get(item.getId())))
+                        .checkFee(yjzMap.getOrDefault(item.getBomSpecId(), BigDecimal.valueOf(2)).multiply(exchangeDetailMap.get(item.getId())))
                         .subtotal(exchangeReturnAmountMap.get(item.getId()).negate()
-                                .add(BigDecimal.valueOf(2).multiply(exchangeDetailMap.get(item.getId()))))
+                                .add(yjzMap.getOrDefault(item.getBomSpecId(), BigDecimal.valueOf(2)).multiply(exchangeDetailMap.get(item.getId()))))
                         .build())
                 .peek(item -> item.setTotal(item.getSubtotal()))
                 .collect(Collectors.toList());
@@ -1138,6 +1160,10 @@ public class StatementOfAccountServiceImpl extends ServiceImpl<StatementOfAccoun
                 })
                 .peek(item -> {
                     OrderExchangeDetail orderExchangeDetail = exchangeDetailMap.get(item.getOrderSkuId());
+                    if (orderExchangeDetail.getMeshBagDamageQuantity() == null) {
+                        orderExchangeDetail.setMeshBagDamageQuantity(BigDecimal.ZERO);
+                    }
+
                     item.setQuantity(item.getQuantity()
                         .multiply(orderExchangeDetail.getQuantity())
                         .subtract(orderExchangeDetail.getMeshBagDamageQuantity()));

+ 5 - 1
sd-business/src/main/resources/mapper/order/OrderExchangeMapper.xml

@@ -33,9 +33,13 @@
         select oe.statement_of_account_id,
                count(DISTINCT oe.id) orderNum,
                sum(oed.quantity) orderSkuNum,
-               ifnull(sum(oed.return_amount), 0) returnAmount
+               ifnull(sum(oed.return_amount), 0) returnAmount,
+               ifnull(sum(if(b.bom_classify_id = 1682221078014943234, 1, 2)  * oed.quantity), 0) checkFee
         from order_exchange oe
                  left join order_exchange_detail oed on oe.id = oed.order_exchange_id
+                 left join order_sku os on oed.order_sku_id = os.id
+                 left join bom_spec bs on os.bom_spec_id = bs.id
+                 left join bom b on bs.bom_id = b.id
             ${ew.customSqlSegment}
     </select>
 

+ 3 - 3
sd-business/src/main/resources/mapper/order/OrderSalesShipmentStatisticsMapper.xml

@@ -15,9 +15,9 @@
             b.reverse_grain,
             b.chromatophore,
             bs.colour,
-            sum(oq.ninetyDaysSalesQuantity),
-            sum(oq.sixtyDaysSalesQuantity),
-            sum(oq.thirtyDaysSalesQuantity)
+            ifnull(sum(oq.ninetyDaysSalesQuantity), 0) ninetyDaysSalesQuantity,
+            ifnull(sum(oq.sixtyDaysSalesQuantity), 0) sixtyDaysSalesQuantity,
+            ifnull(sum(oq.thirtyDaysSalesQuantity), 0) thirtyDaysSalesQuantity
         from
             bom_spec bs
                 inner join bom b on bs.bom_id = b.id

+ 8 - 0
sd-wln/src/main/java/com/sd/wln/service/impl/WlnOrderServiceImpl.java

@@ -706,6 +706,10 @@ public class WlnOrderServiceImpl implements WlnOrderService {
 
             switch (chargeItem) {
                 case "40":
+                    if (bomSpecBo.getBomSpecName().contains("支撑垫")) {
+                        orderSku.setPackingLabor(new BigDecimal("0.1"));
+                        break;
+                    }
                     if (bomSpecBo.getWidth().compareTo(BigDecimal.valueOf(90)) > 0) {
                         orderSku.setPackingLabor(new BigDecimal("1.5"));
                     } else {
@@ -716,6 +720,10 @@ public class WlnOrderServiceImpl implements WlnOrderService {
                     orderSku.setLssueFee(chargePrice);
                     break;
                 case "70":
+                    if (bomSpecBo.getBomSpecName().contains("支撑垫")) {
+                        orderSku.setManagementFee(new BigDecimal("0.05"));
+                        break;
+                    }
                     orderSku.setManagementFee(chargePrice);
                     break;
                 default: