24282 před 1 rokem
rodič
revize
0214ed7944

+ 63 - 0
sd-business/src/main/java/com/sd/business/controller/order/IssueBillController.java

@@ -0,0 +1,63 @@
+package com.sd.business.controller.order;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sd.business.entity.order.dto.IssueBillSelectDto;
+import com.sd.business.entity.order.dto.OrderInfoDto;
+import com.sd.business.entity.order.po.OrderInfo;
+import com.sd.business.entity.order.vo.IssueBillVO;
+import com.sd.business.service.order.IssueBillService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/issueBill")
+public class IssueBillController {
+
+    @Autowired
+    private IssueBillService issueBillService;
+
+    /**
+     * 打单分页
+     */
+    @PostMapping("/page")
+    public Page<IssueBillVO> page(@RequestBody IssueBillSelectDto dto) {
+        return issueBillService.getPage(dto);
+    }
+
+    /**
+     * 编辑地址
+     */
+    @PostMapping("/editAddress")
+    public void editAddress(@RequestBody OrderInfo orderInfo) {
+        issueBillService.editAddress(orderInfo);
+    }
+
+    /**
+     * 编辑快递信息
+     */
+    @PostMapping("/editExpressDeliveryId")
+    public void editExpressDeliveryId(@RequestBody OrderInfo orderInfo) {
+        issueBillService.editExpressDeliveryId(orderInfo);
+    }
+
+    /**
+     * 编辑快递单号
+     */
+    @PostMapping("/editExpressDeliveryCode")
+    public void editExpressDeliveryCode(@RequestBody OrderInfo orderInfo) {
+        issueBillService.editExpressDeliveryCode(orderInfo);
+    }
+
+    /**
+     * 编辑包裹图片
+     */
+    @PostMapping("/editPackagePicture")
+    public void editPackagePicture(@RequestBody OrderInfoDto dto) {
+        issueBillService.editPackagePicture(dto);
+    }
+
+
+}

+ 31 - 0
sd-business/src/main/java/com/sd/business/entity/order/dto/IssueBillSelectDto.java

@@ -0,0 +1,31 @@
+package com.sd.business.entity.order.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class IssueBillSelectDto extends BaseSelectDto {
+
+    /**
+     * 订单号
+     */
+    private String code;
+
+    /**
+     * 事业部id
+     */
+    private Long departmentId;
+
+    /**
+     * 快递单号
+     */
+    private String expressDeliveryCode;
+
+    /**
+     * 打印状态 1是 0否
+     */
+    private Integer printStatus;
+
+}

+ 6 - 0
sd-business/src/main/java/com/sd/business/entity/order/dto/OrderInfoDto.java

@@ -47,4 +47,10 @@ public class OrderInfoDto extends OrderInfo {
      * 外箱不干胶文件
      */
     private ObsFile outerBoxSelfAdhesiveStickerFile;
+
+    /**
+     * 包裹图片
+     */
+    private List<ObsFile> packagePictureList;
+
 }

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

@@ -288,6 +288,11 @@ public class OrderInfo extends BasePo {
     private String remark;
 
     /**
+     * 主订单id
+     */
+    private Long masterOrderId;
+
+    /**
      * 订单删除标记
      */
     private Integer delFlag;

+ 103 - 0
sd-business/src/main/java/com/sd/business/entity/order/vo/IssueBillVO.java

@@ -0,0 +1,103 @@
+package com.sd.business.entity.order.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+import java.util.List;
+
+@Getter
+@Setter
+public class IssueBillVO {
+
+    /**
+     * 订单id
+     */
+    private Long id;
+
+    /**
+     * 订单号
+     */
+    private String code;
+
+    /**
+     * 交期
+     */
+    private Date deliveryTime;
+
+    /**
+     * 店铺来源
+     */
+    private String sourcePlatform;
+
+    /**
+     * 店铺名称
+     */
+    private String shopName;
+
+    /**
+     * 收货人
+     */
+    private String consignee;
+
+    /**
+     * 收货人电话
+     */
+    private String consigneeNumber;
+
+    /**
+     * 省
+     */
+    private String province;
+
+    /**
+     * 市
+     */
+    private String city;
+
+    /**
+     * 县
+     */
+    private String county;
+
+    /**
+     * 详细地址
+     */
+    private String detailedAddress;
+
+    /**
+     * 快递网点id
+     */
+    private String expressDeliveryId;
+
+    /**
+     * 快递单号
+     */
+    private String expressDeliveryCode;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建时间
+     */
+    private String createTime;
+
+    /**
+     * 部门名称
+     */
+    private String departmentName;
+
+    /**
+     * 快递名称
+     */
+    private String expressDeliveryName;
+
+    /**
+     * 合并订单列表
+     */
+    private List<String> groupOrderCodeList;
+
+}

+ 12 - 0
sd-business/src/main/java/com/sd/business/mapper/order/IssueBillMapper.java

@@ -0,0 +1,12 @@
+package com.sd.business.mapper.order;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.sd.business.entity.order.vo.IssueBillVO;
+import org.apache.ibatis.annotations.Param;
+
+public interface IssueBillMapper {
+
+    Page<IssueBillVO> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Object> wrapper);
+
+}

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

@@ -0,0 +1,36 @@
+package com.sd.business.service.order;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sd.business.entity.order.dto.IssueBillSelectDto;
+import com.sd.business.entity.order.dto.OrderInfoDto;
+import com.sd.business.entity.order.po.OrderInfo;
+import com.sd.business.entity.order.vo.IssueBillVO;
+
+public interface IssueBillService {
+
+    /**
+     * 打单分页
+     */
+    Page<IssueBillVO> getPage(IssueBillSelectDto dto);
+
+    /**
+     * 编辑地址
+     */
+    void editAddress(OrderInfo orderInfo);
+
+    /**
+     * 编辑快递信息
+     */
+    void editExpressDeliveryId(OrderInfo orderInfo);
+
+    /**
+     * 编辑快递单号
+     */
+    void editExpressDeliveryCode(OrderInfo orderInfo);
+
+    /**
+     * 编辑包裹图片
+     */
+    void editPackagePicture(OrderInfoDto dto);
+
+}

+ 120 - 0
sd-business/src/main/java/com/sd/business/service/order/impl/IssueBillServiceImpl.java

@@ -0,0 +1,120 @@
+package com.sd.business.service.order.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.file.utils.ObsFileUtil;
+import com.ruoyi.common.core.domain.BaseIdPo;
+import com.ruoyi.common.core.domain.BasePo;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.sd.business.entity.order.dto.IssueBillSelectDto;
+import com.sd.business.entity.order.dto.OrderInfoDto;
+import com.sd.business.entity.order.enums.OrderStatusEnum;
+import com.sd.business.entity.order.po.OrderInfo;
+import com.sd.business.entity.order.vo.IssueBillVO;
+import com.sd.business.mapper.order.IssueBillMapper;
+import com.sd.business.service.order.IssueBillService;
+import com.sd.business.service.order.OrderService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Service
+public class IssueBillServiceImpl implements IssueBillService {
+
+    @Resource
+    private IssueBillMapper mapper;
+
+    @Autowired
+    private OrderService orderService;
+
+    @Override
+    public Page<IssueBillVO> getPage(IssueBillSelectDto dto) {
+        IWrapper<Object> wrapper = IWrapper.getWrapper();
+        wrapper.orderByDesc("oi", OrderInfo::getWlnCreateTime);
+
+        wrapper.eq("oi", OrderInfo::getSource, 1);
+        wrapper.eq("oi", OrderInfo::getStatus, OrderStatusEnum.COMPLETION_PRODUCTION.getKey());
+
+        wrapper.like("oi", OrderInfo::getCode, dto.getCode());
+        wrapper.eq("oi", OrderInfo::getDepartmentId, dto.getDepartmentId());
+        wrapper.like("oi", OrderInfo::getExpressDeliveryCode, dto.getExpressDeliveryCode());
+
+        wrapper.ge("ab", OrderInfo::getDeliveryTime, dto.getBeginTime());
+        wrapper.le("ab", OrderInfo::getDeliveryTime, dto.getEndTime());
+
+        if (dto.getPrintStatus() != null) {
+            if (dto.getPrintStatus() == 1) {
+                wrapper.isNotNull("oi.wln_print_time");
+            } else {
+                wrapper.isNull("oi.wln_print_time");
+            }
+        }
+
+        Page<IssueBillVO> page = mapper.getPage(dto.getPage(), wrapper);
+        List<IssueBillVO> records = page.getRecords();
+
+        if (records.size() == 0) {
+            return page;
+        }
+
+        // 查询合并订单code
+        List<Long> orderIdList = records.stream().map(IssueBillVO::getId).collect(Collectors.toList());
+        List<OrderInfo> orderInfoList = orderService.list(q -> q.in(OrderInfo::getMasterOrderId, orderIdList));
+
+        Map<Long, List<String>> map = orderInfoList.stream().collect(
+                Collectors.groupingBy(OrderInfo::getMasterOrderId, Collectors.mapping(OrderInfo::getCode, Collectors.toList())));
+        records.forEach(item -> {
+            item.setGroupOrderCodeList(map.getOrDefault(item.getId(), Collections.emptyList()));
+        });
+
+        return page;
+
+    }
+
+    @Override
+    public void editAddress(OrderInfo orderInfo) {
+        orderService.update(q -> q
+                .eq(BaseIdPo::getId, orderInfo.getId())
+                .set(OrderInfo::getConsignee, orderInfo.getConsignee())
+                .set(OrderInfo::getConsigneeNumber, orderInfo.getConsigneeNumber())
+                .set(OrderInfo::getProvince, orderInfo.getProvince())
+                .set(OrderInfo::getCity, orderInfo.getCity())
+                .set(OrderInfo::getCounty, orderInfo.getCounty())
+                .set(BasePo::getUpdateTime, new Date())
+                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+        );
+    }
+
+    @Override
+    public void editExpressDeliveryId(OrderInfo orderInfo) {
+        orderService.update(q -> q
+                .eq(BaseIdPo::getId, orderInfo.getId())
+                .set(OrderInfo::getExpressDeliveryId, orderInfo.getExpressDeliveryId())
+                .set(BasePo::getUpdateTime, new Date())
+                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+        );
+    }
+
+    @Override
+    public void editExpressDeliveryCode(OrderInfo orderInfo) {
+        orderService.update(q -> q
+                .eq(BaseIdPo::getId, orderInfo.getId())
+                .set(OrderInfo::getExpressDeliveryCode, orderInfo.getExpressDeliveryCode())
+                .set(BasePo::getUpdateTime, new Date())
+                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+        );
+    }
+
+    @Override
+    public void editPackagePicture(OrderInfoDto dto) {
+        ObsFileUtil.editFile(dto.getPackagePictureList(), dto.getId(), 2);
+    }
+
+
+}

+ 29 - 0
sd-business/src/main/resources/mapper/order/IssueBillMapper.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sd.business.mapper.order.IssueBillMapper">
+
+    <select id="getPage" resultType="com.sd.business.entity.order.vo.IssueBillVO">
+        select oi.id,
+               oi.code,
+               d.name  departmentName,
+               ed.name expressDeliveryName,
+               oi.express_delivery_code,
+               oi.source_platform,
+               oi.shop_name,
+               oi.create_time,
+               oi.delivery_time,
+               oi.consignee,
+               oi.consignee_number,
+               oi.province,
+               oi.city,
+               oi.county,
+               oi.detailed_address,
+               oi.remark
+        from order_info oi
+                 left join department d on oi.department_id = d.id
+                 left join express_delivery ed on oi.express_delivery_id = ed.id
+            ${ew.customSqlSegment}
+    </select>
+
+
+</mapper>

+ 19 - 0
sd-cainiao/src/main/java/com/sd/cainiao/entity/dto/ItemParamDto.java

@@ -0,0 +1,19 @@
+package com.sd.cainiao.entity.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class ItemParamDto {
+
+    /**
+     * 商品名称
+     */
+    private String itemName;
+
+    /**
+     * 商品数量
+     */
+    private Integer itemCount;
+}

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

@@ -0,0 +1,125 @@
+package com.sd.cainiao.entity.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 取号参数
+ */
+@Getter
+@Setter
+public class TakeNumParamDto {
+
+    /**
+     * 快递ID
+     */
+    private String id;
+
+    /**
+     * 快递网点ID
+     */
+    private String addressId;
+
+    /**
+     * 配送公司编码
+     */
+    private String cpCode;
+
+    /**
+     * 发件人名称
+     */
+    private String name;
+
+    /**
+     * 发件人固定电话
+     */
+    private String phone;
+
+    /**
+     * 发件人手机号
+     */
+    private String mobile;
+
+    /**
+     * 发件人省
+     */
+    private String province;
+
+    /**
+     * 发件人市
+     */
+    private String city;
+
+    /**
+     * 发件人区
+     */
+    private String district;
+
+    /**
+     * 发件人详细地址
+     */
+    private String detail;
+
+    /**
+     * 打印模板的url,参见白皮书
+     */
+    private String emsTemplateUrl;
+
+    /**
+     * 商品信息
+     */
+    private List<ItemParamDto> items;
+
+    /**
+     * 收件人名称
+     */
+    private String receiveName;
+
+    /**
+     * 收件人手机号
+     */
+    private String receiveMobile;
+
+    /**
+     * 收件人省
+     */
+    private String receiveProvince;
+
+    /**
+     * 收件人市
+     */
+    private String receiveCity;
+
+    /**
+     * 收件人区
+     */
+    private String receiveDistrict;
+
+    /**
+     * 收件人详细地址
+     */
+    private String receiveDetail;
+
+    /**
+     * 重量,单位 g
+     */
+    private Long weight;
+
+    /**
+     * 体积, 单位 ml
+     */
+    private Long volume;
+
+    /**
+     * 订单号
+     */
+    private String orderNum;
+
+    /**
+     * 对象ID
+     */
+    private String objectId;
+
+}

+ 15 - 0
sd-cainiao/src/main/java/com/sd/cainiao/service/IsticeService.java

@@ -0,0 +1,15 @@
+package com.sd.cainiao.service;
+
+import com.sd.cainiao.entity.dto.TakeNumParamDto;
+
+import java.util.List;
+import java.util.Map;
+
+public interface IsticeService {
+
+    /**
+     * 通过物流云获取电子面单--批量取号
+     */
+    List<Map<String, Object>> takeNumBatch(List<TakeNumParamDto> dto);
+
+}

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

@@ -0,0 +1,104 @@
+package com.sd.cainiao.service.impl;
+
+import com.sd.cainiao.entity.dto.TakeNumParamDto;
+import com.sd.cainiao.service.IsticeService;
+
+import java.util.List;
+import java.util.Map;
+
+public class IsticeServiceImpl implements IsticeService {
+
+    @Override
+    public List<Map<String, Object>> takeNumBatch(List<TakeNumParamDto> dto) {
+
+        // 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.setWeight(Long.parseLong(e.getNetWeight().toString()));
+        //         //                takeNumParam.setVolume(Long.parseLong(e.getBulking().toString()));
+        //         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;
+    }
+
+}