xuhy
2025-04-24 641ad2ace982eece2637c6a79d46094b3cb0d4ea
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/large/controller/AnalysisOrderDataController.java
@@ -1,24 +1,40 @@
package com.ruoyi.admin.large.controller;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.admin.large.model.AnalysisOrderData;
import com.ruoyi.admin.large.model.query.OrderDataQuery;
import com.ruoyi.admin.large.service.AnalysisOrderDataService;
import com.ruoyi.admin.service.SysUserService;
import com.ruoyi.admin.utils.ImportExcelUtil;
import com.ruoyi.admin.utils.WebUtils;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.order.api.entity.Order;
import com.ruoyi.order.api.feignClient.OrderClient;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.*;
/**
 * <p>
@@ -35,12 +51,14 @@
    private final AnalysisOrderDataService analysisOrderDataService;
    private final TokenService tokenService;
    private final SysUserService sysUserService;
    private final OrderClient orderClient;
    @Autowired
    public AnalysisOrderDataController(AnalysisOrderDataService analysisOrderDataService, TokenService tokenService, SysUserService sysUserService) {
    public AnalysisOrderDataController(AnalysisOrderDataService analysisOrderDataService, TokenService tokenService, SysUserService sysUserService, OrderClient orderClient) {
        this.analysisOrderDataService = analysisOrderDataService;
        this.tokenService = tokenService;
        this.sysUserService = sysUserService;
        this.orderClient = orderClient;
    }
    /**
@@ -94,5 +112,93 @@
    public R<Boolean> deleteById(@RequestParam("id") Integer id) {
        return R.ok(analysisOrderDataService.removeById(id));
    }
    @ApiOperation(value = "回收订单导入模板下载")
    @GetMapping("/import-template")
    public void importTemplate() {
        List<AnalysisOrderData> contractList = new ArrayList<>();
        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), AnalysisOrderData.class, contractList);
        HttpServletResponse response = WebUtils.response();
        ServletOutputStream outputStream = null;
        try {
            String fileName = URLEncoder.encode("回收订单导入模板.xls", "utf-8");
            response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
            response.setHeader("content-Type", "application/vnd.ms-excel");
            response.setHeader("Pragma", "no-cache");
            response.setHeader("Cache-Control", "no-cache");
            outputStream = response.getOutputStream();
            workbook.write(outputStream);
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("回收订单导入模板下载失败!");
        } finally {
            try {
                outputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    @ApiOperation(value = "回收订单导入")
    @PostMapping("/importAnalysisOrder")
    @ApiImplicitParam(paramType = "form", name = "file", value = "文件对象", required = true, dataType = "__file")
    public R<String> importAnalysisOrder(@RequestPart("file") MultipartFile file) {
        ImportParams params = new ImportParams();
//        params.setTitleRows(1);//标题行数
        params.setHeadRows(1); //表头行数
        try {
            InputStream inputStream = file.getInputStream();
            List<AnalysisOrderData> analysisOrderDataList = ExcelImportUtil.importExcel(inputStream, AnalysisOrderData.class, params);
            List<String> errors = new ArrayList<>();
            Iterator<AnalysisOrderData> iterator = analysisOrderDataList.iterator();
            while (iterator.hasNext()){
                AnalysisOrderData analysisOrderData = iterator.next();
                try {
                    analysisOrderData.setOrderDate(new SimpleDateFormat("yyyy-MM-dd").parse(analysisOrderData.getOrderDateStr()));
                }catch (Exception e){
                    errors.add("回收订单编号:["+analysisOrderData.getOrderNum()+"],时间格式化错误,忽略导入");
                    iterator.remove();
                }
            }
            analysisOrderDataService.saveBatch(analysisOrderDataList);
            Integer errorLines = 0;
            Integer successLines = 0;
            errorLines += errors.size();
            successLines += (analysisOrderDataList.size() - errorLines);
            R<String> stringApiResult = ImportExcelUtil.importReturnMsg(errorLines, successLines, errors);
            return stringApiResult;
        } catch (Exception e) {
            System.out.println("回收订单导入失败!" + e.getMessage());
            e.printStackTrace();
        }
        return R.ok();
    }
    @ApiOperation(value = "同步家电回收哥当日订单数据")
    @PostMapping("/synchronousOrder")
    public R<String> synchronousOrder() {
        // 查询家电回收哥今日订单数据
        List<Order> orders = orderClient.getTodayOrderData().getData();
        if(!CollectionUtils.isEmpty(orders)){
            List<AnalysisOrderData> analysisOrderDataList = new ArrayList<>();
            orders.forEach(order -> {
                AnalysisOrderData analysisOrderData = new AnalysisOrderData();
                analysisOrderData.setOrderNum(order.getOrderNumber());
                analysisOrderData.setOrderDate(analysisOrderData.getOrderDate());
//                analysisOrderData.setOrderChannel(order.getOrderChannel());
                analysisOrderData.setCity(order.getCity());
                analysisOrderData.setOrderCategory(order.getServeName());
                analysisOrderData.setUserName(order.getReservationName());
                analysisOrderData.setUserPhone(order.getReservationPhone());
                analysisOrderData.setRecyclePerson(order.getServerName());
                analysisOrderData.setState(order.getState());
                analysisOrderDataList.add(analysisOrderData);
            });
            analysisOrderDataService.saveBatch(analysisOrderDataList);
        }
        return R.ok();
    }
}