Commit eb061346 authored by tanyang's avatar tanyang

措施费相关导入优化

parent c303d8bd
...@@ -38,8 +38,10 @@ import java.io.File; ...@@ -38,8 +38,10 @@ import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 措施费导入 * 措施费导入
...@@ -150,7 +152,24 @@ public class CbCostMeasureController { ...@@ -150,7 +152,24 @@ public class CbCostMeasureController {
// @SaCheckPermission("system:user:import") // @SaCheckPermission("system:user:import")
@PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> importData(@RequestPart("file") MultipartFile file, Long projectId) throws Exception { public R<Void> importData(@RequestPart("file") MultipartFile file, Long projectId) throws Exception {
cbCostMeasureService.importExcelData(file,projectId); String name = file.getOriginalFilename();
cbCostMeasureService.importExcelData(file.getInputStream(),name,null,projectId);
return R.ok();
}
/**
* 措施费导入数据
*
* @param projectFileIds 导入文件
* @param projectId 项目id
*/
@SaIgnore
@Log(title = "措施费导入", businessType = BusinessType.IMPORT)
@PostMapping(value = "/parseCbCostMeasureFile")
public R<Void> parseCbCostMeasureFile(Long projectId,@RequestParam("projectFileIds") Long[] projectFileIds) throws Exception {
List<Long> fileIds = Arrays.stream(projectFileIds).collect(Collectors.toList());
cbCostMeasureService.parseCbCostMeasureFile(projectId,fileIds);
return R.ok(); return R.ok();
} }
...@@ -168,7 +187,7 @@ public class CbCostMeasureController { ...@@ -168,7 +187,7 @@ public class CbCostMeasureController {
@PostMapping(value = "/summary/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @PostMapping(value = "/summary/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> importSummaryData(@RequestPart("file") MultipartFile file, Long projectId) throws Exception { public R<Void> importSummaryData(@RequestPart("file") MultipartFile file, Long projectId) throws Exception {
Integer dataType=2; Integer dataType=2;
cbCostMeasureService.importExcelSummaryData(file,projectId,dataType); cbCostMeasureService.importExcelSummaryData(file.getInputStream(),projectId,dataType);
return R.ok(); return R.ok();
} }
......
...@@ -28,7 +28,7 @@ public class CbCostMeasure { ...@@ -28,7 +28,7 @@ public class CbCostMeasure {
/** /**
* 成本阶段( 0:标前成本、1:标后成本、2:转固成本) * 成本阶段( 0:标前成本、1:标后成本、2:转固成本)
*/ */
private Integer cbStage; private Long projectFileId;
/** /**
* 父项id * 父项id
......
...@@ -40,6 +40,8 @@ public class ProjectCostMeasureImportListener extends AnalysisEventListener<CbCo ...@@ -40,6 +40,8 @@ public class ProjectCostMeasureImportListener extends AnalysisEventListener<CbCo
private List<CbCostMeasuresImportVo> dataList = new ArrayList<>(); private List<CbCostMeasuresImportVo> dataList = new ArrayList<>();
private List<String> errList = new ArrayList<>();
// private final String operName; // private final String operName;
private int successNum = 0; private int successNum = 0;
...@@ -62,11 +64,14 @@ public class ProjectCostMeasureImportListener extends AnalysisEventListener<CbCo ...@@ -62,11 +64,14 @@ public class ProjectCostMeasureImportListener extends AnalysisEventListener<CbCo
if (StrUtil.isEmpty(importVo.getItemContent())) { if (StrUtil.isEmpty(importVo.getItemContent())) {
failureNum++; failureNum++;
failureMsg.append("<br/>" + rowIndex + "行 解析失败:清单内容不能为空"); failureMsg.append("<br/>" + rowIndex + "行 解析失败:清单内容不能为空");
errList.add(failureMsg.toString());
return;
} }
String number = importVo.getNumber(); String number = importVo.getNumber();
if (StrUtil.isEmpty(number)) { if (StrUtil.isEmpty(number)) {
failureNum++; failureNum++;
failureMsg.append("<br/>" + rowIndex + "行 解析失败:序号不能为空"); failureMsg.append("<br/>" + rowIndex + "行 解析失败:序号不能为空");
errList.add(failureMsg.toString());
} }
Boolean numberMatch = false; Boolean numberMatch = false;
...@@ -79,6 +84,7 @@ public class ProjectCostMeasureImportListener extends AnalysisEventListener<CbCo ...@@ -79,6 +84,7 @@ public class ProjectCostMeasureImportListener extends AnalysisEventListener<CbCo
} else { } else {
failureNum++; failureNum++;
failureMsg.append("<br/>" + rowIndex + "行 解析失败:序号格式错误"); failureMsg.append("<br/>" + rowIndex + "行 解析失败:序号格式错误");
errList.add(failureMsg.toString());
} }
...@@ -186,7 +192,7 @@ public class ProjectCostMeasureImportListener extends AnalysisEventListener<CbCo ...@@ -186,7 +192,7 @@ public class ProjectCostMeasureImportListener extends AnalysisEventListener<CbCo
public String getAnalysis() { public String getAnalysis() {
if (failureNum > 0) { if (failureNum > 0) {
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
throw new ServiceException(failureMsg.toString()); // throw new ServiceException(failureMsg.toString());
} else { } else {
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
} }
...@@ -200,7 +206,7 @@ public class ProjectCostMeasureImportListener extends AnalysisEventListener<CbCo ...@@ -200,7 +206,7 @@ public class ProjectCostMeasureImportListener extends AnalysisEventListener<CbCo
@Override @Override
public List<String> getErrorList() { public List<String> getErrorList() {
return null; return errList;
} }
}; };
} }
......
...@@ -39,6 +39,7 @@ public class ProjectCostMeasureSummaryImportListener extends AnalysisEventListen ...@@ -39,6 +39,7 @@ public class ProjectCostMeasureSummaryImportListener extends AnalysisEventListen
private final Integer dataType; private final Integer dataType;
private List<CbProjectExpenseSummaryImportVo> dataList = new ArrayList<>(); private List<CbProjectExpenseSummaryImportVo> dataList = new ArrayList<>();
private List<String> errorList = new ArrayList<>();
// private final String operName; // private final String operName;
...@@ -62,8 +63,15 @@ public class ProjectCostMeasureSummaryImportListener extends AnalysisEventListen ...@@ -62,8 +63,15 @@ public class ProjectCostMeasureSummaryImportListener extends AnalysisEventListen
cbProjectExpenseSummary.setProjectId(projectId); cbProjectExpenseSummary.setProjectId(projectId);
cbProjectExpenseSummary.setCbStage(cbStage); cbProjectExpenseSummary.setCbStage(cbStage);
cbProjectExpenseSummary.setDataType(dataType); cbProjectExpenseSummary.setDataType(dataType);
cbProjectExpenseSummary.setCreateBy(LoginHelper.getUsername()); // cbProjectExpenseSummary.setCreateBy(LoginHelper.getUsername());
cbProjectExpenseSummaryService.save(cbProjectExpenseSummary); boolean save = cbProjectExpenseSummaryService.save(cbProjectExpenseSummary);
if(!save){
String errmsg = context.readRowHolder().getRowIndex() + " error";
log.debug("ProjectCostMeasureSummaryImportListener.invoke() "+errmsg);
errorList.add(errmsg);
}
successNum+=1;
dataList.add(importVo);
} }
...@@ -94,7 +102,7 @@ public class ProjectCostMeasureSummaryImportListener extends AnalysisEventListen ...@@ -94,7 +102,7 @@ public class ProjectCostMeasureSummaryImportListener extends AnalysisEventListen
@Override @Override
public List<String> getErrorList() { public List<String> getErrorList() {
return null; return errorList;
} }
}; };
} }
......
...@@ -56,4 +56,15 @@ public interface CbProjectFileService extends IService<CbProjectFile> { ...@@ -56,4 +56,15 @@ public interface CbProjectFileService extends IService<CbProjectFile> {
*/ */
List<CbProjectFile> selectAnalysisList(Long projectId, Integer cbType, Integer cbStage); List<CbProjectFile> selectAnalysisList(Long projectId, Integer cbType, Integer cbStage);
/**
* 更新项目文件状态
*
* @param projectId 项目ID
* @param cbType CB型
* @param fileId 文件ID文件ID
* @param errmsg RMSG
* @return boolean
*/
boolean UpdateProjectFileStatus(Long fileId,String errmsg,Integer status);
} }
...@@ -12,6 +12,7 @@ import com.dsk.cscec.domain.vo.CbCostMeasureActualVo; ...@@ -12,6 +12,7 @@ import com.dsk.cscec.domain.vo.CbCostMeasureActualVo;
import com.dsk.cscec.domain.vo.CbCostMeasuresItemVo; import com.dsk.cscec.domain.vo.CbCostMeasuresItemVo;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -23,7 +24,7 @@ import java.util.Map; ...@@ -23,7 +24,7 @@ import java.util.Map;
*/ */
public interface ICbCostMeasureService extends IService<CbCostMeasure> { public interface ICbCostMeasureService extends IService<CbCostMeasure> {
void importExcelData(MultipartFile file, Long projectId); void importExcelData(InputStream inputStream, String fileName,Long fileId, Long projectId);
List<Map<String, Object>> listByLevel(Long projectId, int i); List<Map<String, Object>> listByLevel(Long projectId, int i);
...@@ -33,6 +34,12 @@ public interface ICbCostMeasureService extends IService<CbCostMeasure> { ...@@ -33,6 +34,12 @@ public interface ICbCostMeasureService extends IService<CbCostMeasure> {
void pushCostMeasureActual(CbCostMeasureActualPushBo pushBo); void pushCostMeasureActual(CbCostMeasureActualPushBo pushBo);
void importExcelSummaryData(MultipartFile file, Long projectId,Integer dataType); List<String> importExcelSummaryData(InputStream inputStream, Long projectId,Integer dataType);
void parseCbCostMeasureFile(Long projectId);
void parseCbCostMeasureFile(Long projectId, List<Long> projectFileIds);
boolean reparseCbCostMeasureFile(Long projectId,Long projectFileId);
} }
...@@ -6,45 +6,36 @@ import cn.hutool.core.io.file.FileNameUtil; ...@@ -6,45 +6,36 @@ import cn.hutool.core.io.file.FileNameUtil;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReUtil; import cn.hutool.core.util.ReUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.domain.entity.SysDictData;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.excel.ExcelResult; import com.dsk.common.excel.ExcelResult;
import com.dsk.common.helper.LoginHelper; import com.dsk.common.helper.LoginHelper;
import com.dsk.common.utils.JsonUtils; import com.dsk.common.utils.JsonUtils;
import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.poi.ExcelUtil; import com.dsk.common.utils.poi.ExcelUtil;
import com.dsk.cscec.domain.CbCostMeasureActual; import com.dsk.cscec.constant.CbProjectConstants;
import com.dsk.cscec.domain.CbProjectRecord; import com.dsk.cscec.domain.*;
import com.dsk.cscec.domain.DCustomer;
import com.dsk.cscec.domain.bo.CbCostMeasureActualBo; import com.dsk.cscec.domain.bo.CbCostMeasureActualBo;
import com.dsk.cscec.domain.bo.CbCostMeasureActualPushBo; import com.dsk.cscec.domain.bo.CbCostMeasureActualPushBo;
import com.dsk.cscec.domain.bo.CbCostMeasureActualSaveBo; import com.dsk.cscec.domain.bo.CbCostMeasureActualSaveBo;
import com.dsk.cscec.domain.vo.CbCostMeasureActualVo; import com.dsk.cscec.domain.vo.CbCostMeasureActualVo;
import com.dsk.cscec.domain.vo.CbCostMeasuresImportVo; import com.dsk.cscec.domain.vo.CbCostMeasuresImportVo;
import com.dsk.cscec.domain.vo.CbCostMeasuresItemVo;
import com.dsk.cscec.domain.vo.CbProjectExpenseSummaryImportVo; import com.dsk.cscec.domain.vo.CbProjectExpenseSummaryImportVo;
import com.dsk.cscec.listener.ProjectCostMeasureImportListener; import com.dsk.cscec.listener.ProjectCostMeasureImportListener;
import com.dsk.cscec.listener.ProjectCostMeasureSummaryImportListener; import com.dsk.cscec.listener.ProjectCostMeasureSummaryImportListener;
import com.dsk.cscec.mapper.CbCostMeasureActualMapper; import com.dsk.cscec.service.*;
import com.dsk.cscec.service.CbProjectRecordService;
import com.dsk.cscec.service.ICbCostMeasureActualService;
import com.dsk.cscec.service.ICbCostMeasureService;
import lombok.SneakyThrows; import lombok.SneakyThrows;
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 com.dsk.cscec.mapper.CbCostMeasureMapper; import com.dsk.cscec.mapper.CbCostMeasureMapper;
import com.dsk.cscec.domain.CbCostMeasure;
import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -67,35 +58,52 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C ...@@ -67,35 +58,52 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C
@Autowired @Autowired
private ICbCostMeasureActualService cbCostMeasureActualService; private ICbCostMeasureActualService cbCostMeasureActualService;
@Autowired
private CbProjectFileService cbProjectFileService;
@Autowired
private CbProjectExpenseSummaryService cbProjectExpenseSummaryService;
@SneakyThrows @SneakyThrows
@Override @Override
public void importExcelData(MultipartFile file, Long projectId) { public void importExcelData(InputStream inputStream, String fileName, Long fileId, Long projectId) {
String name = file.getOriginalFilename();
name = FileNameUtil.getPrefix(name); String name = FileNameUtil.getPrefix(fileName);
CbProjectRecord byId = cbProjectRecordService.getById(projectId); CbProjectRecord byId = cbProjectRecordService.getById(projectId);
Assert.notNull(byId, "项目信息不能为空"); Assert.notNull(byId, "项目信息不能为空");
Integer cbStage = byId.getCbStage(); Integer cbStage = byId.getCbStage();
ProjectCostMeasureImportListener importListener = new ProjectCostMeasureImportListener(projectId, cbStage); ProjectCostMeasureImportListener importListener = new ProjectCostMeasureImportListener(projectId, cbStage);
EasyExcel.read(file.getInputStream(), CbCostMeasuresImportVo.class, importListener).sheet().doRead(); EasyExcel.read(inputStream, CbCostMeasuresImportVo.class, importListener).sheet().doRead();
ExcelResult<CbCostMeasuresImportVo> result = importListener.getExcelResult(); ExcelResult<CbCostMeasuresImportVo> result = importListener.getExcelResult();
String analysis = result.getAnalysis(); String analysis = result.getAnalysis();
List<CbCostMeasuresImportVo> list = result.getList(); List<CbCostMeasuresImportVo> list = result.getList();
if (CollectionUtil.isEmpty(list)) { List<String> errorList = result.getErrorList();
if (CollectionUtil.isNotEmpty(errorList)||CollectionUtil.isEmpty(list)) {
//解析失败 //解析失败
log.debug(">>>>解析失败" + list.size()); log.debug(">>>>解析失败" + list.size());
//todo 解析失败更新文件备注 //todo 解析失败更新文件备注
cbProjectFileService.UpdateProjectFileStatus(fileId,analysis,CbProjectConstants.PROJECT_FILE_STATUS_PARSE_FAIL);
return; return;
} }
log.debug(">>>>" + list.size()); log.debug(">>>>" + list.size());
//删除 该项目历史解析数据
LambdaQueryWrapper<CbCostMeasure> summaryLambdaQueryWrapper = Wrappers.lambdaQuery();
summaryLambdaQueryWrapper.eq(CbCostMeasure::getProjectId, projectId);
summaryLambdaQueryWrapper.eq(ObjectUtil.isNotEmpty(fileId), CbCostMeasure::getProjectFileId, fileId);
this.remove(summaryLambdaQueryWrapper);
CbCostMeasure rootCbCostMeasure = new CbCostMeasure(); CbCostMeasure rootCbCostMeasure = new CbCostMeasure();
rootCbCostMeasure.setItemContent(name); rootCbCostMeasure.setItemContent(name);
rootCbCostMeasure.setLevel(0); rootCbCostMeasure.setLevel(0);
rootCbCostMeasure.setParentId(0L); rootCbCostMeasure.setParentId(0L);
rootCbCostMeasure.setProjectId(projectId); rootCbCostMeasure.setProjectId(projectId);
rootCbCostMeasure.setCbStage(cbStage); if (ObjectUtil.isNotEmpty(fileId)) {
rootCbCostMeasure.setProjectFileId(fileId);
}
LambdaQueryWrapper<CbCostMeasure> tWrapper = Wrappers.lambdaQuery(rootCbCostMeasure); LambdaQueryWrapper<CbCostMeasure> tWrapper = Wrappers.lambdaQuery(rootCbCostMeasure);
CbCostMeasure rootMeasure = this.getOne(tWrapper); CbCostMeasure rootMeasure = this.getOne(tWrapper);
...@@ -112,7 +120,7 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C ...@@ -112,7 +120,7 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C
CbCostMeasure cbCostMeasure = new CbCostMeasure(); CbCostMeasure cbCostMeasure = new CbCostMeasure();
cbCostMeasure.setProjectId(projectId); cbCostMeasure.setProjectId(projectId);
cbCostMeasure.setCbStage(cbStage); cbCostMeasure.setProjectFileId(fileId);
//保存一级节点 //保存一级节点
if (ReUtil.isMatch(firstPattern, number) || ReUtil.isMatch(pattern3, number)) { if (ReUtil.isMatch(firstPattern, number) || ReUtil.isMatch(pattern3, number)) {
BeanUtil.copyProperties(importVo, cbCostMeasure); BeanUtil.copyProperties(importVo, cbCostMeasure);
...@@ -131,6 +139,8 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C ...@@ -131,6 +139,8 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C
cbCostMeasure.setNo(newNo); cbCostMeasure.setNo(newNo);
this.save(cbCostMeasure); this.save(cbCostMeasure);
} }
cbProjectFileService.UpdateProjectFileStatus(fileId,null,CbProjectConstants.PROJECT_FILE_STATUS_PARSE_SUCCESS);
} }
} }
...@@ -144,10 +154,9 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C ...@@ -144,10 +154,9 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C
CbCostMeasure rootCbCostMeasure = new CbCostMeasure(); CbCostMeasure rootCbCostMeasure = new CbCostMeasure();
rootCbCostMeasure.setParentId(0L); rootCbCostMeasure.setParentId(0L);
rootCbCostMeasure.setProjectId(projectId); rootCbCostMeasure.setProjectId(projectId);
rootCbCostMeasure.setCbStage(byId.getCbStage());
QueryWrapper<CbCostMeasure> tWrapper = Wrappers.query(rootCbCostMeasure); QueryWrapper<CbCostMeasure> tWrapper = Wrappers.query(rootCbCostMeasure);
tWrapper.select("id","item_content as itemContent"); tWrapper.select("id", "item_content as itemContent");
tWrapper.orderByAsc("id"); tWrapper.orderByAsc("id");
List<Map<String, Object>> mapList = this.listMaps(tWrapper); List<Map<String, Object>> mapList = this.listMaps(tWrapper);
...@@ -182,10 +191,10 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C ...@@ -182,10 +191,10 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C
@Override @Override
public void saveBatchCostMeasureActual(List<CbCostMeasureActualSaveBo> boList) { public void saveBatchCostMeasureActual(List<CbCostMeasureActualSaveBo> boList) {
List<CbCostMeasureActual> saveList=new ArrayList<>(); List<CbCostMeasureActual> saveList = new ArrayList<>();
for (CbCostMeasureActualSaveBo cbCostMeasureActualSaveBo : boList) { for (CbCostMeasureActualSaveBo cbCostMeasureActualSaveBo : boList) {
CbCostMeasureActual cbCostMeasureActual =new CbCostMeasureActual(); CbCostMeasureActual cbCostMeasureActual = new CbCostMeasureActual();
BeanUtil.copyProperties(cbCostMeasureActualSaveBo,cbCostMeasureActual); BeanUtil.copyProperties(cbCostMeasureActualSaveBo, cbCostMeasureActual);
cbCostMeasureActual.setDelFlag(0); cbCostMeasureActual.setDelFlag(0);
cbCostMeasureActual.setUpdateId(LoginHelper.getUserId()); cbCostMeasureActual.setUpdateId(LoginHelper.getUserId());
cbCostMeasureActual.setUpdateUser(LoginHelper.getUsername()); cbCostMeasureActual.setUpdateUser(LoginHelper.getUsername());
...@@ -199,8 +208,7 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C ...@@ -199,8 +208,7 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C
//todo 推送到Ipm系统 //todo 推送到Ipm系统
CbCostMeasureActual cbCostMeasureActual = new CbCostMeasureActual();
CbCostMeasureActual cbCostMeasureActual =new CbCostMeasureActual();
cbCostMeasureActual.setId(pushBo.getId()); cbCostMeasureActual.setId(pushBo.getId());
cbCostMeasureActual.setPushTime(new Date()); cbCostMeasureActual.setPushTime(new Date());
cbCostMeasureActual.setPushDataJson(JsonUtils.toJsonString(pushBo)); cbCostMeasureActual.setPushDataJson(JsonUtils.toJsonString(pushBo));
...@@ -209,12 +217,120 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C ...@@ -209,12 +217,120 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C
@SneakyThrows @SneakyThrows
@Override @Override
public void importExcelSummaryData(MultipartFile file, Long projectId,Integer dataType) { public List<String> importExcelSummaryData(InputStream inputStream, Long projectId, Integer dataType) {
CbProjectRecord byId = cbProjectRecordService.getById(projectId); CbProjectRecord byId = cbProjectRecordService.getById(projectId);
Assert.notNull(byId, "项目信息不能为空"); Assert.notNull(byId, "项目信息不能为空");
Integer cbStage = byId.getCbStage(); Integer cbStage = byId.getCbStage();
ExcelUtil.importExcel(file.getInputStream(), CbProjectExpenseSummaryImportVo.class,new ProjectCostMeasureSummaryImportListener(projectId,cbStage,dataType));
// 删除历史数据
LambdaUpdateWrapper<CbProjectExpenseSummary> summaryLambdaQueryWrapper = Wrappers.lambdaUpdate();
summaryLambdaQueryWrapper.eq(CbProjectExpenseSummary::getProjectId, projectId);
summaryLambdaQueryWrapper.eq( CbProjectExpenseSummary::getDataType, 2);
cbProjectExpenseSummaryService.remove(summaryLambdaQueryWrapper);
ExcelResult<CbProjectExpenseSummaryImportVo> excelResult = ExcelUtil.importExcel(inputStream, CbProjectExpenseSummaryImportVo.class, new ProjectCostMeasureSummaryImportListener(projectId, cbStage, dataType));
List<String> errorList = excelResult.getErrorList();
if(CollectionUtil.isNotEmpty(errorList)||CollectionUtil.isEmpty(excelResult.getList())){
return errorList;
}
return null;
}
@Override
public void parseCbCostMeasureFile(Long projectId) {
// 查询项目
CbProjectRecord byId = cbProjectRecordService.getById(projectId);
Assert.notNull(byId, "项目信息不能为空");
parseCbCostMeasureFile(projectId,null);
}
@Override
public void parseCbCostMeasureFile(Long projectId,List<Long> projectFileIds) {
List<CbProjectFile> cbProjectFiles = new ArrayList<>();
if(CollectionUtil.isNotEmpty(projectFileIds)){
LambdaQueryWrapper<CbProjectFile> lambdaQueryWrapper = Wrappers.lambdaQuery();
lambdaQueryWrapper.in(CbProjectFile::getId,projectFileIds);
cbProjectFiles = cbProjectFileService.list(lambdaQueryWrapper);
}else{
//获取文件信息
cbProjectFiles = cbProjectFileService.list(new LambdaQueryWrapper<CbProjectFile>()
.eq(CbProjectFile::getProjectId, projectId)
.eq(CbProjectFile::getCbType, CbProjectConstants.CB_TYPE_MEASURE_PROJECT)
);
}
if (CollectionUtil.isEmpty(cbProjectFiles)) {
log.debug("措施费数据文件不存在");
return;
}
for (CbProjectFile cbProjectFile : cbProjectFiles) {
String fileName = cbProjectFile.getFileName();
String prefix = FileNameUtil.getPrefix(fileName);
// 解析汇总
if ("措施费".equals(prefix)) {
byte[] bytes = HttpUtil.downloadBytes(cbProjectFile.getFileOssUrl());
InputStream inputStream = new ByteArrayInputStream(bytes);
List<String> errlist = importExcelSummaryData(inputStream, projectId, 2);
if(CollectionUtil.isNotEmpty(errlist)){
cbProjectFile.setFileParseStatus(CbProjectConstants.PROJECT_FILE_STATUS_PARSE_FAIL);
}else {
// 修改文件解析状态
cbProjectFile.setFileParseStatus(CbProjectConstants.PROJECT_FILE_STATUS_PARSE_SUCCESS);
}
cbProjectFileService.updateById(cbProjectFile);
} else {
byte[] bytes = HttpUtil.downloadBytes(cbProjectFile.getFileOssUrl());
InputStream inputStream = new ByteArrayInputStream(bytes);
importExcelData(inputStream, fileName, cbProjectFile.getId(), projectId);
}
}
}
@Override
public boolean reparseCbCostMeasureFile(Long projectId,Long projectFileId) {
// 查询项目
CbProjectRecord byId = cbProjectRecordService.getById(projectId);
Assert.notNull(byId, "项目信息不能为空");
List<CbProjectFile> cbProjectFiles = new ArrayList<>();
Assert.notNull(projectFileId,"措施费文件ID不能为空");
if(ObjectUtil.isNotEmpty(projectFileId)){
CbProjectFile cbProjectFile = cbProjectFileService.getById(projectFileId);
Assert.notNull(cbProjectFile,"措施费导入文件不存在");
String fileName = cbProjectFile.getFileName();
String prefix = FileNameUtil.getPrefix(fileName);
// 解析汇总
if ("措施费".equals(prefix)) {
byte[] bytes = HttpUtil.downloadBytes(cbProjectFile.getFileOssUrl());
InputStream inputStream = new ByteArrayInputStream(bytes);
List<String> errlist = importExcelSummaryData(inputStream, projectId, 2);
if(CollectionUtil.isNotEmpty(errlist)){
cbProjectFile.setFileParseStatus(CbProjectConstants.PROJECT_FILE_STATUS_PARSE_FAIL);
}else {
// 修改文件解析状态
cbProjectFile.setFileParseStatus(CbProjectConstants.PROJECT_FILE_STATUS_PARSE_SUCCESS);
}
} else {
byte[] bytes = HttpUtil.downloadBytes(cbProjectFile.getFileOssUrl());
InputStream inputStream = new ByteArrayInputStream(bytes);
importExcelData(inputStream, fileName, cbProjectFile.getId(), projectId);
}
//更新
return true;
}
return false;
} }
...@@ -232,7 +348,6 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C ...@@ -232,7 +348,6 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C
CbCostMeasure rootCbCostMeasure = new CbCostMeasure(); CbCostMeasure rootCbCostMeasure = new CbCostMeasure();
rootCbCostMeasure.setNo(parentNo); rootCbCostMeasure.setNo(parentNo);
rootCbCostMeasure.setProjectId(projectId); rootCbCostMeasure.setProjectId(projectId);
rootCbCostMeasure.setCbStage(cbStage);
LambdaQueryWrapper<CbCostMeasure> tWrapper = Wrappers.lambdaQuery(rootCbCostMeasure); LambdaQueryWrapper<CbCostMeasure> tWrapper = Wrappers.lambdaQuery(rootCbCostMeasure);
CbCostMeasure rootMeasure = this.getOne(tWrapper); CbCostMeasure rootMeasure = this.getOne(tWrapper);
return rootMeasure; return rootMeasure;
......
...@@ -167,6 +167,16 @@ public class CbProjectFileServiceImpl extends ServiceImpl<CbProjectFileMapper, C ...@@ -167,6 +167,16 @@ public class CbProjectFileServiceImpl extends ServiceImpl<CbProjectFileMapper, C
return baseMapper.selectAnalysisList(projectId, cbType, cbStage); return baseMapper.selectAnalysisList(projectId, cbType, cbStage);
} }
@Override
public boolean UpdateProjectFileStatus(Long fileId, String errmsg,Integer status) {
CbProjectFile cbProjectFile=new CbProjectFile();
cbProjectFile.setId(fileId);
cbProjectFile.setFailRemark(errmsg);
cbProjectFile.setFileParseStatus(status);
boolean b = this.updateById(cbProjectFile);
return b;
}
/** /**
* 校验项目是否存在 * 校验项目是否存在
* *
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<!--@Table cb_cost_measure--> <!--@Table cb_cost_measure-->
<id column="id" jdbcType="BIGINT" property="id" /> <id column="id" jdbcType="BIGINT" property="id" />
<result column="project_id" jdbcType="BIGINT" property="projectId" /> <result column="project_id" jdbcType="BIGINT" property="projectId" />
<result column="cb_stage" jdbcType="INTEGER" property="cbStage" /> <result column="cb_stage" jdbcType="INTEGER" property="projectFileId" />
<result column="parent_id" jdbcType="BIGINT" property="parentId" /> <result column="parent_id" jdbcType="BIGINT" property="parentId" />
<result column="level" jdbcType="INTEGER" property="level" /> <result column="level" jdbcType="INTEGER" property="level" />
<result column="number" jdbcType="VARCHAR" property="number" /> <result column="number" jdbcType="VARCHAR" property="number" />
......
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