| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- package com.ydtech.modules.fnc.service.impl;
- import com.alibaba.excel.EasyExcel;
- import com.alipay.api.domain.TakeAwayScopeInfo;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.ydtech.constants.enums.dict.InsOrderStatusAllEnum;
- import com.ydtech.modules.admin.model.SysUser;
- import com.ydtech.modules.admin.model.dto.OrdersDataExcel;
- import com.ydtech.modules.admin.model.report.company.OrdersDataDto;
- import com.ydtech.modules.base.controller.BaseController;
- import com.ydtech.modules.console.dto.BigOrderUploadDto;
- import com.ydtech.modules.fnc.dao.ImportAsyncMapper;
- import com.ydtech.modules.fnc.dao.InsExcelTaskAsyncMapper;
- import com.ydtech.modules.fnc.dto.InsExcelTaskDto;
- import com.ydtech.modules.fnc.entity.ImportResult;
- import com.ydtech.modules.fnc.entity.InsExcelTaskEntity;
- import com.ydtech.modules.fnc.service.InsExcelTaskAsyncService;
- import com.ydtech.modules.inv.model.dto.InsImportResult;
- import com.ydtech.modules.inv.utils.EasyExcelUtils;
- import com.ydtech.modules.inv.utils.excel.CustomMultiFieldMergeStrategy;
- import com.ydtech.modules.order.dao.InsAreaCompanyMapper;
- import com.ydtech.modules.order.entity.BasePageResult;
- import com.ydtech.utils.SnowFlakeUtil;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.scheduling.annotation.Async;
- import org.springframework.stereotype.Service;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.util.CollectionUtils;
- import java.io.File;
- import java.io.IOException;
- import java.math.BigDecimal;
- import java.math.RoundingMode;
- import java.nio.file.Files;
- import java.nio.file.Path;
- import java.nio.file.Paths;
- import java.text.SimpleDateFormat;
- import java.time.LocalDateTime;
- import java.time.format.DateTimeFormatter;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.stream.Collectors;
- import java.util.stream.Stream;
- @Service
- public class InsExcelTaskAsyncServiceImpl extends ServiceImpl<InsExcelTaskAsyncMapper, InsExcelTaskEntity> implements InsExcelTaskAsyncService {
- @Autowired
- private InsAreaCompanyMapper insAreaCompanyMapper;
- @Value("${upload.file.path}")
- private String uploadFilePath;
- @Value("${upload.file.path}")
- private String uploadPath;
- @Async
- @Override
- public void importasync(List<OrdersDataExcel> resultSubOrder, HashMap<String, String> dateMapByType,String beginDate,String endDate) {
- InsExcelTaskEntity insExcelTaskEntity = new InsExcelTaskEntity();
- String taskId = String.valueOf(new SnowFlakeUtil().nextId());
- insExcelTaskEntity.setId(taskId);
- insExcelTaskEntity.setStatus("ready");
- insExcelTaskEntity.setUserId(dateMapByType.get("userLoginId"));
- insExcelTaskEntity.setCreateTime(LocalDateTime.now());
- insExcelTaskEntity.setCreatedAt(LocalDateTime.now());
- insExcelTaskEntity.setType("1");
- this.constructionDate(beginDate,endDate,insExcelTaskEntity);
- baseMapper.insert(insExcelTaskEntity);
- if (!resultSubOrder.isEmpty()) {
- OrdersDataDto ordersDataDto = new OrdersDataDto();
- ordersDataDto.setBeginDate(dateMapByType.get("startDate"));
- ordersDataDto.setEndDate(dateMapByType.get("endDate"));
- ordersDataDto.setUserId(dateMapByType.get("userId"));
- ordersDataDto.setUserName(dateMapByType.get("userName"));
- ordersDataDto.setMobile(dateMapByType.get("mobile"));
- for (OrdersDataExcel record : resultSubOrder) {
- String licenseno = record.getLicenseno(); //车牌号
- String frameno = record.getFrameno(); //车牌号
- ordersDataDto.setLicenseno(licenseno);
- ordersDataDto.setFrameno(frameno);
- OrdersDataDto dto = insAreaCompanyMapper.getSumBigOrderCount(ordersDataDto);
- String orderNumber = dto.getOrderNumber();
- BigDecimal num1 = new BigDecimal(orderNumber);
- BigDecimal num2 = new BigDecimal(record.getOrderNumber());
- BigDecimal result = num1.divide(num2, 2, RoundingMode.HALF_UP);
- record.setCloseRate(result.toString());
- record.setNamesimple(dto.getNamesimple());
- }
- }
- String uploadPath = this.uploadFilePath + "/excel/" + taskId + "/";
- File folder = new File(uploadPath);
- // 路劲不存在创建目录
- if (!folder.isDirectory()) {
- folder.mkdirs();
- }
- String fileName = EasyExcelUtils.downExcel(uploadPath, "控制台大订单导出", OrdersDataExcel.class, resultSubOrder);
- InsExcelTaskEntity insExcelTaskEntity1 = new InsExcelTaskEntity();
- insExcelTaskEntity1.setId(taskId);
- insExcelTaskEntity1.setCompletedAt(LocalDateTime.now());
- insExcelTaskEntity1.setStatus("complete");
- if (!CollectionUtils.isEmpty(resultSubOrder)) {
- insExcelTaskEntity1.setUploadUrl("/upload/excel/" + taskId + "/" + fileName);
- }
- baseMapper.updateById(insExcelTaskEntity1);
- }
- /**
- *
- * @param beginDate
- * @param endDate
- * @param insExcelTaskEntity
- * 添加查询时间 如果是当前日期 则时分秒取当前时分秒 如果不是则在结束日期 + 23:59:59
- */
- private void constructionDate(String beginDate, String endDate, InsExcelTaskEntity insExcelTaskEntity) {
- String[] parts = beginDate.split(" ");
- beginDate = parts[0];
- String[] parts1 = endDate.split(" ");
- endDate = parts1[0];
- // 定义时间格式的常量
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
- // 构建开始时间
- LocalDateTime startTime = LocalDateTime.parse(beginDate + " 00:00:00", formatter);
- // 这里的 insExcelTaskEntity 假设为某个对象,用于存储时间信息,这里仅作示例
- insExcelTaskEntity.setStartTime(startTime);
- // 结束时间与当前日期做比较
- Date currentDate = new Date();
- // 创建 SimpleDateFormat 对象,用于格式化日期
- SimpleDateFormat formatterYyyyMMM = new SimpleDateFormat("yyyy-MM-dd");
- String formattedDate = formatterYyyyMMM.format(currentDate);
- if (endDate.equals(formattedDate)) {
- // 构建结束时间
- LocalDateTime endTime = LocalDateTime.parse(endDate + " " + LocalDateTime.now().format(DateTimeFormatter.ofPattern("HH:mm:ss")), formatter);
- insExcelTaskEntity.setEndTime(endTime);
- } else {
- endDate = endDate + " 23:59:59";
- // 使用指定的日期时间格式解析 endDate
- insExcelTaskEntity.setEndTime(LocalDateTime.parse(endDate, formatter));
- }
- }
- @Override
- @Async
- public void importasyncBigOrder(List<BigOrderUploadDto> list,String userId,String beginDate,String endDate) {
- InsExcelTaskEntity insExcelTaskEntity = new InsExcelTaskEntity();
- String taskId = String.valueOf(new SnowFlakeUtil().nextId());
- insExcelTaskEntity.setId(taskId);
- insExcelTaskEntity.setStatus("ready");
- insExcelTaskEntity.setUserId(userId);
- insExcelTaskEntity.setCreateTime(LocalDateTime.now());
- insExcelTaskEntity.setCreatedAt(LocalDateTime.now());
- this.constructionDate(beginDate,endDate,insExcelTaskEntity);
- insExcelTaskEntity.setType("0");
- baseMapper.insert(insExcelTaskEntity);
- if (list != null && !list.isEmpty()) {
- for (BigOrderUploadDto bigOrderUploadDto : list) {
- String orderStatus = "";
- if (InsOrderStatusAllEnum.matchKey(bigOrderUploadDto.getOrderStatus()) != null) {
- orderStatus = InsOrderStatusAllEnum.matchKey(bigOrderUploadDto.getOrderStatus()).getDesc();
- }
- String subOrderStatus = "";
- if (InsOrderStatusAllEnum.matchKey(bigOrderUploadDto.getSubOrderStatus()) != null) {
- subOrderStatus = InsOrderStatusAllEnum.matchKey(bigOrderUploadDto.getSubOrderStatus()).getDesc();
- }
- bigOrderUploadDto.setOrderStatus(orderStatus);
- bigOrderUploadDto.setSubOrderStatus(subOrderStatus);
- }
- }
- String uploadPath = this.uploadFilePath + "/excel/" + taskId + "/";
- File folder = new File(uploadPath);
- // 路劲不存在创建目录
- if (!folder.isDirectory()) {
- folder.mkdirs();
- }
- String fileName = EasyExcelUtils.downExcel(uploadPath, "控制台大订单明细导出", BigOrderUploadDto.class, list);
- InsExcelTaskEntity insExcelTaskEntity1 = new InsExcelTaskEntity();
- insExcelTaskEntity1.setId(taskId);
- insExcelTaskEntity1.setCompletedAt(LocalDateTime.now());
- insExcelTaskEntity1.setStatus("complete");
- if (!CollectionUtils.isEmpty(list)) {
- insExcelTaskEntity1.setUploadUrl("/upload/excel/" + taskId + "/" + fileName);
- }
- baseMapper.updateById(insExcelTaskEntity1);
- }
- /**
- *
- * @param insExcelTaskDto
- * @return 控制台导出任务分页
- */
- @Override
- public BasePageResult<InsExcelTaskEntity> queryPage(InsExcelTaskDto insExcelTaskDto) {
- Page<InsExcelTaskEntity> page = new Page<>(insExcelTaskDto.getPageNum(), insExcelTaskDto.getPageSize());
- Page<InsExcelTaskEntity> resultPage = baseMapper.queryPage(insExcelTaskDto, page);
- return new BasePageResult<>(insExcelTaskDto.getPageNum(), page.getSize(), resultPage.getTotal(), page.getPages(),
- resultPage.getRecords());
- }
- /**
- * @version
- * @author: whp
- * @Description: 任务中心的数据保留7天,7天后删除任务中心数据以及任务中心列表。
- */
- @Override
- @Transactional
- public void batchDelete(String nowTime) {
- InsExcelTaskDto insExcelTaskDto = new InsExcelTaskDto();
- insExcelTaskDto.setNowTime(nowTime);
- // 如果与当前时间差大于等于7则删除
- List<InsExcelTaskEntity> list = baseMapper.selectAllList(insExcelTaskDto);
- List<String> idList = list.stream()
- .map(InsExcelTaskEntity::getId)
- .filter(id -> id!= null)
- .collect(Collectors.toList());
- this.removeByIds(idList);
- }
- }
|