Commit d1779a75 authored by lcl's avatar lcl

u

parent f8301c9e
package com.dsk.component; package com.dsk.component;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dsk.common.excel.ExcelUtils; import com.dsk.common.excel.ExcelUtils;
import com.dsk.common.exception.ServiceException; import com.dsk.common.exception.ServiceException;
...@@ -8,16 +9,20 @@ import com.dsk.cscec.domain.CbProjectFile; ...@@ -8,16 +9,20 @@ import com.dsk.cscec.domain.CbProjectFile;
import com.dsk.cscec.domain.CbQuantitySummary; import com.dsk.cscec.domain.CbQuantitySummary;
import com.dsk.cscec.domain.bo.CbProjectBaseBo; import com.dsk.cscec.domain.bo.CbProjectBaseBo;
import com.dsk.cscec.service.CbProjectFileService; import com.dsk.cscec.service.CbProjectFileService;
import com.dsk.cscec.service.ICbQuantitySummaryActualService;
import com.dsk.cscec.service.ICbQuantitySummaryService; import com.dsk.cscec.service.ICbQuantitySummaryService;
import com.dsk.oss.factory.OssFactory;
import com.dsk.system.domain.vo.SysOssVo;
import com.dsk.system.service.ISysOssService;
import org.apache.el.stream.Stream;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.support.TransactionTemplate;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import java.io.FileInputStream; import javax.annotation.Resource;
import java.io.InputStream;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -32,6 +37,12 @@ public class DataAnalysisComponent { ...@@ -32,6 +37,12 @@ public class DataAnalysisComponent {
@Autowired @Autowired
private ICbQuantitySummaryService quantitySummaryService; private ICbQuantitySummaryService quantitySummaryService;
@Autowired
private CbProjectFileService projectFileService;
@Autowired
private ISysOssService ossService;
@Resource
private TransactionTemplate transactionTemplate;
/** /**
* 工料汇总数据解析 * 工料汇总数据解析
...@@ -42,52 +53,70 @@ public class DataAnalysisComponent { ...@@ -42,52 +53,70 @@ public class DataAnalysisComponent {
List<CbProjectFile> fileList = projectFileService.list(Wrappers.<CbProjectFile>lambdaQuery() List<CbProjectFile> fileList = projectFileService.list(Wrappers.<CbProjectFile>lambdaQuery()
.eq(CbProjectFile::getProjectId, bo.getProjectId()) .eq(CbProjectFile::getProjectId, bo.getProjectId())
.eq(CbProjectFile::getCbType, CbProjectConstants.CB_TYPE_QUANTITY_SUMMARY) .eq(CbProjectFile::getCbType, CbProjectConstants.CB_TYPE_QUANTITY_SUMMARY)
.eq(CbProjectFile::getCbStage, bo.getCbStage())); .eq(CbProjectFile::getCbStage, bo.getCbStage())
.in(CbProjectFile::getFileParseStatus, Arrays.asList(1, 3)));
if (ObjectUtils.isEmpty(fileList)) return; if (ObjectUtils.isEmpty(fileList)) return;
//文件处理 //文件处理
for (CbProjectFile file : fileList) { for (CbProjectFile file : fileList) {
if (file.getDelFlag() == 0) { if (file.getDelFlag() == 0) {
if (file.getFileParseStatus() == 3) break;
//文件下载 //文件下载
InputStream inputStream = ossService.downFileIO(file.getFileOssId());
if (ObjectUtil.isNull(inputStream)) {
file.setFailRemark("文件数据不存在");
file.setFileParseStatus(3);
projectFileService.updateById(file);
break;
}
//解析数据 //解析数据
List<CbQuantitySummary> importList = new ExcelUtils<>(CbQuantitySummary.class).importExcelAllSheet(new FileInputStream(""), 1); List<CbQuantitySummary> importList = new ExcelUtils<>(CbQuantitySummary.class).importExcelAllSheet(inputStream, 1);
if (importList.isEmpty()) { if (importList.isEmpty()) {
throw new ServiceException("表格中不存在待导入数据!"); file.setFailRemark("表格中不存在待导入数据!");
file.setFileParseStatus(3);
projectFileService.updateById(file);
break;
} }
importList = importList.stream().parallel() List<CbQuantitySummary> quantitySummaryList = importList.stream().parallel()
.filter(item -> !ObjectUtils.isEmpty(item.getCbName())) .filter(item -> !ObjectUtils.isEmpty(item.getCbName()))
.peek(item -> { .peek(item -> {
item.setProjectId(1L); item.setProjectId(1L);
item.setCbStage(0); item.setCbStage(0);
item.setCbProjectFileId(1L); item.setCbProjectFileId(1L);
}).collect(Collectors.toList()); }).collect(Collectors.toList());
if (importList.isEmpty()) { if (quantitySummaryList.isEmpty()) {
throw new ServiceException("表格中不存在有效数据数据!"); throw new ServiceException("表格中不存在有效数据数据!");
} }
//分批次插入 transactionTemplate.execute(status -> {
if (importList.size() > 1000) { try {
int index = 0; //分批次插入
int sum = importList.size(); if (quantitySummaryList.size() > 1000) {
while (index < sum) { int index = 0;
List<CbQuantitySummary> divideList = importList.subList(index, Math.max((index + 1) * 1000, sum)); int sum = quantitySummaryList.size();
boolean b = quantitySummaryService.saveBatch(divideList); while (index < sum) {
if (!b) { List<CbQuantitySummary> divideList = quantitySummaryList.subList(index, Math.max((index + 1) * 1000, sum));
throw new ServiceException("数据插入失败!"); boolean b = quantitySummaryService.saveBatch(divideList);
if (!b) {
throw new ServiceException("数据插入失败!");
}
index += 1000;
}
} else {
boolean b = quantitySummaryService.saveBatch(quantitySummaryList);
if (!b) {
throw new ServiceException("数据插入失败!");
}
} }
index += 1000; file.setFileParseStatus(2);
} projectFileService.updateById(file);
} else { }catch (Exception e){
boolean b = quantitySummaryService.saveBatch(importList); status.setRollbackOnly();
if (!b) {
throw new ServiceException("数据插入失败!");
} }
} return Boolean.TRUE;
});
} else { } else {
quantitySummaryService.remove(Wrappers.<CbQuantitySummary>lambdaQuery().eq(CbQuantitySummary::getCbProjectFileId, file.getId())); quantitySummaryService.remove(Wrappers.<CbQuantitySummary>lambdaQuery().eq(CbQuantitySummary::getCbProjectFileId, file.getId()));
projectFileService.removeById(file);
} }
} }
} }
@Autowired
private CbProjectFileService projectFileService;
} }
...@@ -11,7 +11,6 @@ import com.dsk.cscec.domain.vo.CbQuantitySummaryListVo; ...@@ -11,7 +11,6 @@ import com.dsk.cscec.domain.vo.CbQuantitySummaryListVo;
import com.dsk.cscec.service.ICbQuantitySummaryService; import com.dsk.cscec.service.ICbQuantitySummaryService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
......
...@@ -2,31 +2,23 @@ package com.dsk.cscec.service.impl; ...@@ -2,31 +2,23 @@ package com.dsk.cscec.service.impl;
import cn.hutool.crypto.SecureUtil; import cn.hutool.crypto.SecureUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.common.excel.ExcelUtils;
import com.dsk.common.exception.ServiceException; import com.dsk.common.exception.ServiceException;
import com.dsk.cscec.constant.CbProjectConstants;
import com.dsk.cscec.domain.CbProjectFile;
import com.dsk.cscec.domain.CbQuantitySummary; import com.dsk.cscec.domain.CbQuantitySummary;
import com.dsk.cscec.domain.CbQuantitySummaryActual; import com.dsk.cscec.domain.CbQuantitySummaryActual;
import com.dsk.cscec.domain.bo.CbProjectBaseBo; import com.dsk.cscec.domain.bo.CbProjectBaseBo;
import com.dsk.cscec.domain.bo.CbQuantitySummaryListBo; import com.dsk.cscec.domain.bo.CbQuantitySummaryListBo;
import com.dsk.cscec.domain.vo.CbQuantitySummaryListVo; import com.dsk.cscec.domain.vo.CbQuantitySummaryListVo;
import com.dsk.cscec.mapper.CbQuantitySummaryMapper; import com.dsk.cscec.mapper.CbQuantitySummaryMapper;
import com.dsk.cscec.service.CbProjectFileService;
import com.dsk.cscec.service.ICbQuantitySummaryActualService; import com.dsk.cscec.service.ICbQuantitySummaryActualService;
import com.dsk.cscec.service.ICbQuantitySummaryService; import com.dsk.cscec.service.ICbQuantitySummaryService;
import jodd.bean.BeanException; import jodd.bean.BeanException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
......
...@@ -10,6 +10,7 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -10,6 +10,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
...@@ -37,4 +38,6 @@ public interface ISysOssService { ...@@ -37,4 +38,6 @@ public interface ISysOssService {
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
InputStream downFileIO(Long ossId);
} }
...@@ -177,6 +177,16 @@ public class SysOssServiceImpl implements ISysOssService, OssService { ...@@ -177,6 +177,16 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
return baseMapper.deleteBatchIds(ids) > 0; return baseMapper.deleteBatchIds(ids) > 0;
} }
@Override
public InputStream downFileIO(Long ossId) {
//文件下载
SysOss sysOss = baseMapper.selectById(ossId);
if (ObjectUtil.isNull(sysOss)) {
throw new ServiceException("文件数据不存在!");
}
return OssFactory.instance(sysOss.getService()).getObjectContent(sysOss.getUrl());
}
/** /**
* 匹配Url * 匹配Url
* *
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment