瀏覽代碼

打单配置

24282 1 年之前
父節點
當前提交
819e3cd408

+ 1 - 1
sd-business/src/main/java/com/sd/business/entity/order/po/OrderInfo.java

@@ -250,7 +250,7 @@ public class OrderInfo extends BasePo {
     /**
      * 快递网点id
      */
-    private String expressDeliveryId;
+    private Long expressDeliveryId;
 
     /**
      * 快递单号

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

@@ -50,7 +50,7 @@ public interface IssueBillService {
     /**
      * 装箱明细
      */
-    AssemblyDetailVo assemblyDetail(Long id);
+    AssemblyDetailVo assemblyDetail(Long orderId);
 
     /**
      * 删除包裹

+ 82 - 62
sd-business/src/main/java/com/sd/business/service/order/impl/IssueBillServiceImpl.java

@@ -1,8 +1,10 @@
 package com.sd.business.service.order.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.file.utils.ObsFileUtil;
 import com.ruoyi.common.core.domain.BaseIdPo;
@@ -71,7 +73,7 @@ public class IssueBillServiceImpl implements IssueBillService {
         wrapper.orderByDesc("oi", OrderInfo::getWlnCreateTime);
 
         wrapper.eq("oi", OrderInfo::getSource, 1);
-        wrapper.eq("oi", OrderInfo::getStatus, OrderStatusEnum.IN_PRODUCTION.getKey());
+        wrapper.in("oi", OrderInfo::getStatus, OrderStatusEnum.IN_PRODUCTION.getKey(), OrderStatusEnum.COMPLETION_PRODUCTION.getKey());
 
         wrapper.like("oi", OrderInfo::getCode, dto.getCode());
         wrapper.eq("oi", OrderInfo::getDepartmentId, dto.getDepartmentId());
@@ -105,7 +107,6 @@ public class IssueBillServiceImpl implements IssueBillService {
                 Collectors.groupingBy(OrderInfo::getMasterOrderId, Collectors.mapping(OrderInfo::getCode, Collectors.toList())));
         records.forEach(item -> item.setGroupOrderCodeList(map.getOrDefault(item.getId(), Collections.emptyList())));
 
-
         QueryWrapper<OrderEncasement> orderEncasementWrapper = new QueryWrapper<>();
         orderEncasementWrapper.select(
                 "order_id as orderId",
@@ -124,7 +125,7 @@ public class IssueBillServiceImpl implements IssueBillService {
             if (itemMap != null) {
                 record.setTotalNetWeight((BigDecimal) itemMap.get("totalNetWeight"));
                 record.setTotalVolume((BigDecimal) itemMap.get("totalVolume"));
-                record.setTotal((Integer) itemMap.get("total"));
+                record.setTotal((Convert.toInt(itemMap.get("total"))));
             } else {
                 record.setTotalNetWeight(BigDecimal.ZERO);
                 record.setTotalVolume(BigDecimal.ZERO);
@@ -192,18 +193,88 @@ public class IssueBillServiceImpl implements IssueBillService {
     }
 
     @Override
-    public AssemblyDetailVo assemblyDetail(Long id) {
+    public AssemblyDetailVo assemblyDetail(Long orderId) {
         AssemblyDetailVo result = new AssemblyDetailVo();
 
+        List<AssemblyDetailVo.SkuInfo> skuInfoList = getSkuInfoList(orderId);
+
+        List<OrderEncasement> tempOrderEncasementList = orderEncasementService.list(q -> q.eq(OrderEncasement::getOrderId, orderId));
+        if (tempOrderEncasementList.size() == 0) {
+            result.setSkuInfoList(skuInfoList);
+            result.setOrderEncasementList(Collections.emptyList());
+            return result;
+        }
+        List<OrderEncasementVo> orderEncasementList = getOrderEncasementVoList(tempOrderEncasementList, skuInfoList);
+
+        result.setSkuInfoList(skuInfoList);
+        result.setOrderEncasementList(orderEncasementList);
+        return result;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void deleteAllowance(Long id) {
+        orderEncasementService.delete(id);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public AssemblyDetailVo copyAllowance(OrderEncasement dto) {
+        OrderEncasement orderEncasement = orderEncasementService.getById(dto.getId());
+        orderEncasement.setTotal(orderEncasement.getTotal() + dto.getTotal());
+        orderEncasementService.updateById(dto);
+        return verifiedQuantityAndGetDetail(orderEncasement.getOrderId());
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public AssemblyDetailVo addAllowance(OrderEncasementDto dto) {
+        dto.setId(IdWorker.getId());
+        dto.setNetWeight(BigDecimal.ZERO);
+
+        List<OrderEncasementDetail> orderEncasementDetailList = dto.getOrderEncasementDetailList();
+        List<Long> bomSpecIdList = orderEncasementDetailList.stream().map(OrderEncasementDetail::getBomSpecId).collect(Collectors.toList());
+        Map<Long, BomSpec> bomSpecMap = bomSpecService.mapKEntity(BaseIdPo::getId, q -> q.in(BaseIdPo::getId, bomSpecIdList));
+        orderEncasementDetailList.forEach(item -> {
+            BomSpec bomSpec = bomSpecMap.get(item.getBomSpecId());
+            BigDecimal netWeight = ObjectUtil.defaultIfNull(bomSpec.getNetWeight(), BigDecimal.ZERO);
+            dto.setNetWeight(dto.getNetWeight().add(netWeight));
+
+            item.setOrderEncasementId(dto.getId());
+        });
+
+        orderEncasementService.save(dto);
+        orderEncasementDetailService.saveBatch(orderEncasementDetailList);
+
+        return verifiedQuantityAndGetDetail(dto.getOrderId());
+    }
+
+    /**
+     * 验证数量并获取明细
+     */
+    private AssemblyDetailVo verifiedQuantityAndGetDetail(Long orderId) {
+        AssemblyDetailVo assemblyDetailVo = assemblyDetail(orderId);
+        List<AssemblyDetailVo.SkuInfo> skuInfoList = assemblyDetailVo.getSkuInfoList();
+        for (AssemblyDetailVo.SkuInfo skuInfo : skuInfoList) {
+            if (skuInfo.getSurplusQuantity().compareTo(BigDecimal.ZERO) < 0) {
+                throw new ServiceException("数量不足:装箱数量大于被装箱数量");
+            }
+        }
+        return assemblyDetailVo;
+    }
+
+    private List<AssemblyDetailVo.SkuInfo> getSkuInfoList(Long orderId) {
+
         // 获取合并订单
-        List<OrderInfo> mergeOrderList = orderService.list(q -> q.eq(OrderInfo::getMasterOrderId, id));
+        List<OrderInfo> mergeOrderList = orderService.list(q -> q.eq(OrderInfo::getMasterOrderId, orderId));
 
         // 订单id列表
         List<Long> orderIdList = mergeOrderList.stream().map(BaseIdPo::getId).collect(Collectors.toList());
-        orderIdList.add(id);
+        orderIdList.add(orderId);
 
         // 赋值产品清单
         List<OrderSku> list = orderSkuService.list(q -> q.in(OrderSku::getOrderId, orderIdList));
+
         List<AssemblyDetailVo.SkuInfo> skuInfoList = list.stream().map(item -> {
             AssemblyDetailVo.SkuInfo skuInfo = new AssemblyDetailVo.SkuInfo();
             skuInfo.setOrderSkuId(item.getId());
@@ -219,14 +290,11 @@ public class IssueBillServiceImpl implements IssueBillService {
             item.setSkuSpecCode(skuSpec.getCode());
             item.setSkuSpecName(skuSpec.getName());
         });
-        result.setSkuInfoList(skuInfoList);
 
-        // 包裹规格数
-        List<OrderEncasement> tempOrderEncasementList = orderEncasementService.list(q -> q.eq(OrderEncasement::getOrderId, id));
-        if (tempOrderEncasementList.size() == 0) {
-            result.setOrderEncasementList(Collections.emptyList());
-            return result;
-        }
+        return skuInfoList;
+    }
+
+    private List<OrderEncasementVo> getOrderEncasementVoList(List<OrderEncasement> tempOrderEncasementList, List<AssemblyDetailVo.SkuInfo> skuInfoList) {
 
         List<OrderEncasementVo> orderEncasementList = BeanUtil.copyToList(tempOrderEncasementList, OrderEncasementVo.class);
         Map<Long, OrderEncasementVo> orderEncasementVoMap = orderEncasementList.stream().collect(Collectors.toMap(BaseIdPo::getId, Function.identity()));
@@ -258,55 +326,7 @@ public class IssueBillServiceImpl implements IssueBillService {
             });
         }
 
-        result.setOrderEncasementList(orderEncasementList);
-        return result;
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void deleteAllowance(Long id) {
-        orderEncasementService.delete(id);
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public AssemblyDetailVo copyAllowance(OrderEncasement dto) {
-        OrderEncasement orderEncasement = orderEncasementService.getById(dto.getId());
-        orderEncasement.setTotal(orderEncasement.getTotal() + dto.getTotal());
-        orderEncasementService.updateById(dto);
-        return verifiedQuantityAndGetDetail(orderEncasement.getOrderId());
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public AssemblyDetailVo addAllowance(OrderEncasementDto dto) {
-        dto.setNetWeight(BigDecimal.ZERO);
-        orderEncasementService.save(dto);
-        List<OrderEncasementDetail> orderEncasementDetailList = dto.getOrderEncasementDetailList();
-        List<Long> bomSpecIdList = orderEncasementDetailList.stream().map(OrderEncasementDetail::getBomSpecId).collect(Collectors.toList());
-        List<BomSpec> bomSpecList = bomSpecService.listByIds(bomSpecIdList);
-        Map<Long, BomSpec> bomSpecMap = bomSpecList.stream().collect(Collectors.toMap(BaseIdPo::getId, Function.identity()));
-
-        orderEncasementDetailList.forEach(item -> {
-            item.setOrderEncasementId(dto.getId());
-            BigDecimal netWeight = ObjectUtil.defaultIfNull(bomSpecMap.get(item.getBomSpecId()).getNetWeight(), BigDecimal.ZERO);
-            dto.setNetWeight(dto.getNetWeight().add(netWeight));
-        });
-        return verifiedQuantityAndGetDetail(dto.getOrderId());
-    }
-
-    /**
-     * 验证数量并获取明细
-     */
-    private AssemblyDetailVo verifiedQuantityAndGetDetail(Long orderId) {
-        AssemblyDetailVo assemblyDetailVo = assemblyDetail(orderId);
-        List<AssemblyDetailVo.SkuInfo> skuInfoList = assemblyDetailVo.getSkuInfoList();
-        for (AssemblyDetailVo.SkuInfo skuInfo : skuInfoList) {
-            if (skuInfo.getSurplusQuantity().compareTo(BigDecimal.ZERO) < 0) {
-                throw new ServiceException("数量不足:装箱数量大于被装箱数量");
-            }
-        }
-        return assemblyDetailVo;
+        return orderEncasementList;
     }
 
 }

+ 0 - 9
sd-cainiao/src/main/java/com/sd/cainiao/entity/dto/TakeNumParamDto.java

@@ -12,15 +12,6 @@ import java.util.List;
 @Setter
 public class TakeNumParamDto {
 
-    /**
-     * 快递ID
-     */
-    private String id;
-
-    /**
-     * 快递网点ID
-     */
-    private String addressId;
 
     /**
      * 配送公司编码

+ 55 - 104
sd-cainiao/src/main/java/com/sd/cainiao/service/impl/IsticeServiceImpl.java

@@ -6,9 +6,13 @@ import com.sd.business.entity.express.po.ExpressDelivery;
 import com.sd.business.entity.order.enums.OrderStatusEnum;
 import com.sd.business.entity.order.po.OrderInfo;
 import com.sd.business.entity.order.vo.AssemblyDetailVo;
+import com.sd.business.entity.order.vo.OrderEncasementDetailVo;
+import com.sd.business.entity.order.vo.OrderEncasementVo;
 import com.sd.business.service.express.ExpressDeliveryService;
-import com.sd.business.service.order.*;
+import com.sd.business.service.order.IssueBillService;
+import com.sd.business.service.order.OrderService;
 import com.sd.cainiao.entity.bo.BasicKeyBo;
+import com.sd.cainiao.entity.dto.ItemParamDto;
 import com.sd.cainiao.entity.dto.TakeNumParamDto;
 import com.sd.cainiao.service.IsticeService;
 import com.taobao.pac.sdk.cp.PacClient;
@@ -21,10 +25,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -41,15 +42,6 @@ public class IsticeServiceImpl implements IsticeService {
     private OrderService orderService;
 
     @Autowired
-    private OrderSkuService orderSkuService;
-
-    @Autowired
-    private OrderEncasementService orderEncasementService;
-
-    @Autowired
-    private OrderEncasementDetailService orderEncasementDetailService;
-
-    @Autowired
     private ExpressDeliveryService expressDeliveryService;
 
     @Transactional(rollbackFor = Exception.class)
@@ -62,14 +54,22 @@ public class IsticeServiceImpl implements IsticeService {
 
         List<OrderInfo> orderInfoList = orderService.list(q -> q
                 .in(BaseIdPo::getId, orderIdList)
-                .eq(OrderInfo::getStatus, OrderStatusEnum.IN_PRODUCTION.getKey())
+                .in(OrderInfo::getStatus, OrderStatusEnum.IN_PRODUCTION.getKey(), OrderStatusEnum.COMPLETION_PRODUCTION.getKey())
         );
 
-        List<String> expressDeliveryIdList = orderInfoList.stream().map(OrderInfo::getExpressDeliveryId).collect(Collectors.toList());
+        List<Long> expressDeliveryIdList = orderInfoList.stream().map(OrderInfo::getExpressDeliveryId).collect(Collectors.toList());
         List<ExpressDelivery> expressDeliveries = expressDeliveryService.listByIds(expressDeliveryIdList);
-        Map<Long, ExpressDelivery> collect = expressDeliveries.stream().collect(Collectors.toMap(BaseIdPo::getId, Function.identity()));
+        Map<Long, ExpressDelivery> expressDeliveriesMap = expressDeliveries.stream().collect(Collectors.toMap(BaseIdPo::getId, Function.identity()));
+
+        Map<Long, AssemblyDetailVo> map = new HashMap<>();
 
         for (OrderInfo orderInfo : orderInfoList) {
+
+            ExpressDelivery expressDelivery = expressDeliveriesMap.get(orderInfo.getExpressDeliveryId());
+            if (expressDelivery == null) {
+                throw new ServiceException("订单 " + orderInfo.getCode() + " 没有找到快递网点信息,打印快递单失败");
+            }
+
             AssemblyDetailVo assemblyDetailVo = issueBillService.assemblyDetail(orderInfo.getId());
 
             for (AssemblyDetailVo.SkuInfo skuInfo : assemblyDetailVo.getSkuInfoList()) {
@@ -78,97 +78,48 @@ public class IsticeServiceImpl implements IsticeService {
                 }
             }
 
+            map.put(orderInfo.getId(), assemblyDetailVo);
 
         }
 
+        for (OrderInfo orderInfo : orderInfoList) {
+            ExpressDelivery expressDelivery = expressDeliveriesMap.get(orderInfo.getExpressDeliveryId());
+
+            TakeNumParamDto takeNumParam = new TakeNumParamDto();
+            takeNumParam.setCpCode(expressDelivery.getExpressageCode());
+            takeNumParam.setName(expressDelivery.getName());
+            takeNumParam.setPhone(expressDelivery.getPhone());
+            takeNumParam.setMobile(expressDelivery.getPhone());
+            takeNumParam.setProvince(expressDelivery.getProvince());
+            takeNumParam.setCity(expressDelivery.getCity());
+            takeNumParam.setDistrict(expressDelivery.getDistrict());
+            takeNumParam.setDetail(expressDelivery.getAddress());
+            takeNumParam.setEmsTemplateUrl(expressDelivery.getTemplateUrl());
+
+            takeNumParam.setReceiveName(orderInfo.getConsignee());
+            takeNumParam.setReceiveMobile(orderInfo.getConsigneeNumber());
+            takeNumParam.setReceiveProvince(orderInfo.getProvince());
+            takeNumParam.setReceiveCity(orderInfo.getCity());
+            takeNumParam.setReceiveDistrict(orderInfo.getCounty());
+            takeNumParam.setReceiveDetail(orderInfo.getDetailedAddress());
+
+            AssemblyDetailVo assemblyDetailVo = map.get(orderInfo.getId());
+
+            for (OrderEncasementVo orderEncasementVo : assemblyDetailVo.getOrderEncasementList()) {
+                List<OrderEncasementDetailVo> orderEncasementDetailList = orderEncasementVo.getOrderEncasementDetailList();
+                List<ItemParamDto> itemParamList = orderEncasementDetailList.stream().map(item -> {
+                    ItemParamDto itemParam = new ItemParamDto();
+                    itemParam.setItemName(item.getSkuSpecName());
+                    itemParam.setItemCount(item.getQuantity().intValue());
+                    return itemParam;
+                }).collect(Collectors.toList());
+                takeNumParam.setItems(itemParamList);
+                List<WaybillCloudPrintResponse> waybillCloudPrintResponses = takeNum(takeNumParam);
+
+            }
+
+        }
 
-        // List<Map<String, Object>> resultList = new ArrayList<>();
-        //
-        // for (TakeNumParamDto takeNumParam : dto) {
-        //     if (StringUtils.isEmpty(takeNumParam.getId()) || StringUtils.isEmpty(takeNumParam.getAddressId())) {
-        //         throw new ServiceException("参数异常");
-        //     }
-        //
-        //     // 根据快递ID去除所有包裹得运单号
-        //     UpdateWrapper<ExpressPacking> updateWrapper = new UpdateWrapper<>();
-        //     updateWrapper.set("waybill_no", null);
-        //     updateWrapper.eq("express_id", takeNumParam.getId());
-        //     iExpressPackingService.update(updateWrapper);
-        //
-        //     Map<String, Object> result = new HashMap<>();
-        //
-        //     // 查询发货模板
-        //     Address address = addressService.getById(takeNumParam.getAddressId());
-        //     takeNumParam.setCpCode(address.getExpressageCode());
-        //     takeNumParam.setPhone(address.getPhone());
-        //     takeNumParam.setMobile(address.getPhone());
-        //     takeNumParam.setProvince(address.getProvince());
-        //     takeNumParam.setName(address.getName());
-        //     takeNumParam.setCity(address.getCity());
-        //     takeNumParam.setDetail(address.getAddress());
-        //     takeNumParam.setDistrict(address.getDistrict());
-        //     takeNumParam.setEmsTemplateUrl(address.getTemplateUrl());
-        //     // 查询装箱数
-        //     List<ExpressPacking> expressPackingList = iExpressPackingService.list(Wrappers.<ExpressPacking>query().lambda().
-        //             eq(ExpressPacking::getExpressId, takeNumParam.getId()));
-        //     // 取出所有装箱ID
-        //     List<String> expressPackingIds = expressPackingList.stream().map(ExpressPacking::getId).collect(Collectors.toList());
-        //     // 查询装箱商品信息
-        //     List<ExpressPackingProduct> packingProductList = iExpressPackingProductService.getContractProductData(expressPackingIds);
-        //     Map<String, List<ExpressPackingProduct>> map = packingProductList.stream().collect(Collectors.groupingBy(ExpressPackingProduct::getExpressPackingId));
-        //     // 处理装箱数量.重新计算箱子数
-        //     List<ExpressPacking> newExpressPackingList = new ArrayList<>();
-        //     for (ExpressPacking packing : expressPackingList) {
-        //         for (int i = 0; i < packing.getTotal(); i++) {
-        //             newExpressPackingList.add(packing);
-        //         }
-        //     }
-        //     // 批量取号
-        //     List<JSONObject> list = new ArrayList<>();
-        //     for (ExpressPacking e : newExpressPackingList) {
-        //
-        //         takeNumParam.setOrderNum(IdUtils.dateUUID());
-        //         takeNumParam.setObjectId(IdUtils.dateUUID());
-        //         // 赋值产品信息
-        //         if (MapUtils.isNotEmpty(map)) {
-        //             List<ExpressPackingProduct> productList = map.get(e.getId());
-        //             StringBuilder builder = new StringBuilder();
-        //             for (ExpressPackingProduct p : productList) {
-        //                 List<ItemParam> itemParamList = new ArrayList<>();
-        //                 builder.append(p.getProductColorName()).append("*").append(p.getQuantity()).append("\n");
-        //                 ItemParam itemParam = new ItemParam();
-        //                 itemParam.setItemName(p.getContractProductName() + p.getProductColorName());
-        //                 itemParam.setItemCount(p.getContractProductQuantity());
-        //                 itemParamList.add(itemParam);
-        //                 takeNumParam.setItems(itemParamList);
-        //             }
-        //
-        //             TmsWaybillGetResponse response = this.takeNum(takeNumParam);
-        //             WaybillCloudPrintResponse printResponse = response.getWaybillCloudPrintResponseList().get(0);
-        //             String re = printResponse.getPrintData();
-        //             JSONObject jsonObject = JSONObject.parseObject(re);
-        //
-        //             // 赋值订单号
-        //             List<String> stringList = new ArrayList<>();
-        //             ExpressPacking dataPack = iExpressPackingService.getById(e.getId());
-        //             if (StringUtils.isNotEmpty(dataPack.getWaybillNo())) {
-        //                 stringList.add(dataPack.getWaybillNo());
-        //             }
-        //             stringList.add(printResponse.getWaybillCode());
-        //             ExpressPacking packing = new ExpressPacking();
-        //             packing.setWaybillNo(StringUtils.join(stringList, ","));
-        //             packing.setId(e.getId());
-        //             iExpressPackingService.updateById(packing);
-        //             // 拼接模板
-        //             jsonObject.put("detail", builder.toString());
-        //             jsonObject.put("customTemplateUrl", address.getCustomTemplateUrl());
-        //             list.add(jsonObject);
-        //         }
-        //     }
-        //     result.put("packingList", list);
-        //     resultList.add(result);
-        // }
-        // return resultList;
         return null;
     }