XiaoRuby
2023-09-24 20956b0f05f81ca47cf6c3e8f9b3b426e9cfd035
inventory-server/src/main/java/com/yuanchu/mom/service/impl/SaleServiceImpl.java
@@ -1,6 +1,8 @@
package com.yuanchu.mom.service.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -10,20 +12,25 @@
import com.yuanchu.mom.pojo.Sale;
import com.yuanchu.mom.mapper.SaleMapper;
import com.yuanchu.mom.pojo.SaleMaterial;
import com.yuanchu.mom.pojo.dto.ConsignmentDto1;
import com.yuanchu.mom.pojo.dto.ConsignmentDto2;
import com.yuanchu.mom.pojo.dto.SaleDto;
import com.yuanchu.mom.pojo.dto.SaleMaterialDto;
import com.yuanchu.mom.pojo.dto.*;
import com.yuanchu.mom.pojo.vo.SaleVo;
import com.yuanchu.mom.service.SaleMaterialService;
import com.yuanchu.mom.service.SaleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.utils.easyexcel.CustemHandler;
import com.yuanchu.mom.utils.easyexcel.EasyExcelUtils;
import com.yuanchu.mom.utils.easyexcel.LocalDateConverter;
import com.yuanchu.mom.utils.easyexcel.template.ExportSaleTemplate;
import com.yuanchu.mom.vo.Result;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
@@ -63,6 +70,7 @@
        Sale sale = new Sale();
        BeanUtils.copyProperties(saleDto, sale);
        sale.setSaleman(saleman);
        sale.setOrderType("手工订单");
        saleMapper.insert(sale);
        //添加销售产品单
        List<SaleMaterialDto> saleMaterialDtoList = saleDto.getSaleMaterialList();
@@ -186,9 +194,6 @@
                .orderCode(orderNumber)
                .customerCode(sale.getCode())
                .proname(sale.getProname())
                //.adress(sale.getAdress())
                //.username(sale.getUsername())
                //.phone(sale.getPhone())
                .messages(dto2List)
                .build();
        return consignmentDto1;
@@ -215,6 +220,8 @@
            sale.setDelTime(DateUtil.parseDate(orde.get("wantedDeliveryDate").toString()));//交货日期
            sale.setCreateTime(DateUtil.parseDate(orde.get("orderDate").toString()));//下单日期
            sale.setNote(String.valueOf(orde.get("comment")));//备注
            sale.setOrderId((Integer) orde.get("id"));  //otc订单id
            sale.setOrderType(orde.get("orderClassification").toString()); //订单类型
            return sale;
        }).collect(Collectors.toList());
        //去重
@@ -239,4 +246,58 @@
        }
        return "同步成功!";
    }
    //下载附件
    @Override
    public List<String> download(Integer id) {
        Integer orderId = saleMapper.selectById(id).getOrderId();
        List<Map<String, Object>> attachment = SyncOrder.getAttachmentByOrderId(orderId);
        List<String> list = new ArrayList<>();
        if (ObjectUtils.isEmpty(attachment)) {
            list.add("该订单没有附件");
            return list;
        }
        for (Map<String, Object> attch : attachment) {
            String path = attch.get("path").toString();
            list.add(path);
        }
        return list;
    }
    @Override
    public void exportSale(ExportSaleDto dto, HttpServletResponse response) {
        try{
            List<ExportSaleTemplate> exportSaleTemplates = saleMapper.selectSaleListByExport(dto.getOrderNumber(), dto.getName(), dto.getType(), dto.getDelTime());
            for (int i = 0; i < exportSaleTemplates.size(); i++) {
                exportSaleTemplates.get(i).setId(i+1);
            }
            String fileName = String.valueOf(new StringBuilder()
                    .append("销售订单_")
                    .append(DateUtil.today())
                    .append(ExcelTypeEnum.XLS.getValue()));
            fileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.toString());
            response.setContentType("application/octet-stream");
            response.setHeader("Cache-Control", "no-cache");
            response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
            response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
            EasyExcel.write(response.getOutputStream())
                    .head(ExportSaleTemplate.class)
                    .registerConverter(new LocalDateConverter())
                    .autoCloseStream(true)
                    .excelType(ExcelTypeEnum.XLS)
                    .registerWriteHandler(new CustemHandler())
                    .registerWriteHandler(EasyExcelUtils.getStyleStrategy())
                    .sheet("Sheet1")
                    .doWrite(exportSaleTemplates);
        }catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                response.getOutputStream().close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}