From 07c83c163675e24252de05d029cef2eab046e583 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期二, 09 七月 2024 19:32:40 +0800 Subject: [PATCH] 完成基础数据导入 --- finance-system/src/main/java/com/finance/system/service/impl/TbBasicDataServiceImpl.java | 53 +++++++++++++++++++++++++++++------------------------ 1 files changed, 29 insertions(+), 24 deletions(-) diff --git a/finance-system/src/main/java/com/finance/system/service/impl/TbBasicDataServiceImpl.java b/finance-system/src/main/java/com/finance/system/service/impl/TbBasicDataServiceImpl.java index 66e852c..6c97002 100644 --- a/finance-system/src/main/java/com/finance/system/service/impl/TbBasicDataServiceImpl.java +++ b/finance-system/src/main/java/com/finance/system/service/impl/TbBasicDataServiceImpl.java @@ -48,6 +48,7 @@ import com.finance.system.query.CurrentFieldsQuery; import com.finance.system.query.ScoreCalculateQuery; import com.finance.system.query.ScoreQuery; +import com.finance.system.service.AsyncService; import com.finance.system.service.ISysUserService; import com.finance.system.service.TbBasicDataConfigDetailService; import com.finance.system.service.TbBasicDataConfigService; @@ -114,7 +115,7 @@ private final TbOperLogService tbOperLogService; private final TbDataScreenScoreService tbDataScreenScoreService; private final TbDataScreenConfigService tbDataScreenConfigService; - + private final AsyncService asyncService; public static void setFieldValues( List<FieldsTreeVO> fields, Map<Long, TbBasicDataField> fieldMap) { @@ -231,7 +232,7 @@ tbBasicData.setId(basicDataOpt.get().getId()); tbBasicData.setDeptAreaCode(areaCode); this.updateById(tbBasicData); - //查询该基础数据的动态字端 + // 查询该基础数据的动态字端 List<TbBasicDataField> originFields = tbBasicDataFieldService.lambdaQuery() .eq(TbBasicDataField::getBasicDataId, tbBasicData.getId()).list(); CompletableFuture.runAsync( @@ -468,12 +469,13 @@ LocalDate quarterStartLocalDate = instant.atZone(ZoneId.systemDefault()).toLocalDate(); LocalDate fifteenDaysLimit = quarterStartLocalDate.plusDays(14); LocalDate now = LocalDate.now(); - //TODO + // TODO /* if (now.isBefore(quarterStartLocalDate) || now.isAfter(fifteenDaysLimit)) { throw new ServiceException("请于季度初1-15号上传季度数据。"); }*/ LoginUser loginUser = SecurityUtils.getLoginUser(); String areaCode = loginUser.getUser().getAreaCode(); + String nowQuarter = DateUtils.getNowQuarter(); EasyExcel.read( file.getInputStream(), new BasicDataListener( @@ -483,7 +485,9 @@ tbBasicDataFieldService, tbBasicDataConfigService, tbBasicDataConfigDetailService, - tbScoreService, tbDataScreenScoreService, tbDataScreenConfigService)) + tbScoreService, tbDataScreenScoreService, nowQuarter, + tbDataScreenConfigService, + asyncService)) .sheet() .headRowNumber(0) .doRead(); @@ -880,7 +884,7 @@ @Override @Transactional(rollbackFor = Exception.class) public void importData(MultipartFile file, String quarter) throws IOException { - //校验季度 + // 校验季度 Date quarterDate = DateUtils.getQuarterDate(quarter); Map<String, Date> quarterMap = DateUtils.getQuarterDate(new Date()); @@ -900,8 +904,9 @@ tbBasicDataConfigService, tbBasicDataConfigDetailService, tbScoreService, sysUserService, quarter, tbDataScreenScoreService, - tbDataScreenConfigService)) + tbDataScreenConfigService, asyncService)) .sheet() + .headRowNumber(0) .doRead(); } @@ -913,49 +918,49 @@ response.setHeader( "Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xlsx"); - //季度数据,用于反查字段 + // 季度数据,用于反查字段 List<TbBasicData> tbBasicDataList = this.lambdaQuery() .in(TbBasicData::getQuarter, quarterList) .eq(TbBasicData::getStatus, ReportingStatusEnum.FILLED) .groupBy(TbBasicData::getQuarter).list(); - //符合导出条件的基础数据 + // 符合导出条件的基础数据 List<TbBasicData> tbBasicDataListAll = this.lambdaQuery() .in(TbBasicData::getQuarter, quarterList) .eq(TbBasicData::getStatus, ReportingStatusEnum.FILLED) .list(); - //基础数据id列表 + // 基础数据id列表 Set<Long> basicDataIdList = tbBasicDataListAll.stream().map(TbBasicData::getId) .collect(Collectors.toSet()); - //涉及到的部门编码 + // 涉及到的部门编码 Set<String> userAreaCodeList = tbBasicDataListAll.stream().map(TbBasicData::getDeptAreaCode) .collect(Collectors.toSet()); - //用户信息map + // 用户信息map Map<String, SysUser> userMap = sysUserService.lambdaQuery() .in(SysUser::getAreaCode, userAreaCodeList).list().stream() .collect(Collectors.toMap(SysUser::getAreaCode, e -> e)); - //基础数据对应的字段值列表 + // 基础数据对应的字段值列表 List<TbBasicDataField> tbBasicDataFieldList = tbBasicDataFieldService.lambdaQuery() .in(TbBasicDataField::getBasicDataId, basicDataIdList) .list(); - //构建Excel写对象 + // 构建Excel写对象 try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()) .registerWriteHandler(new CustomCellWriteHandler()) .registerWriteHandler(EasyExcelUtil.getStyleStrategy()).build()) { WriteSheet writeSheet; - //遍历季度基础数据 + // 遍历季度基础数据 for (TbBasicData tbBasicData : tbBasicDataList) { - //该季度的动态字段id列表 + // 该季度的动态字段id列表 Set<Long> fieldIdList = tbBasicDataFieldList.stream() .filter(item -> tbBasicData.getId().equals(item.getBasicDataId())) .map(TbBasicDataField::getFieldId) .collect(Collectors.toSet()); - //字段列表 + // 字段列表 List<TbField> fieldList = tbFieldService.lambdaQuery() .in(TbField::getId, fieldIdList) .list(); - //表头 + // 表头 List<List<String>> head = head(fieldList); - //过滤基础数据为遍历元素的季度 + // 过滤基础数据为遍历元素的季度 List<TbBasicData> list = tbBasicDataListAll.stream() .filter(item -> tbBasicData.getQuarter().equals(item.getQuarter())) .collect(Collectors.toList()); @@ -973,17 +978,17 @@ private List<List<Object>> dataList(List<TbField> fieldList, List<TbBasicData> list, List<TbBasicDataField> tbBasicDataFieldList, Map<String, SysUser> userMap, List<List<String>> head) { - //所有数据集合 + // 所有数据集合 List<List<Object>> excellist = new ArrayList<>(); - //构建栏号行 + // 构建栏号行 List<Object> columnNo = Lists.newArrayList("栏号"); for (int i = 1; i < head.size(); i++) { columnNo.add(String.valueOf(i)); } excellist.add(columnNo); - //动态字段数据行 + // 动态字段数据行 for (TbBasicData tbBasicData : list) { - //转换为map,方便遍历的时候取 + // 转换为map,方便遍历的时候取 Map<Long, TbBasicDataField> basicDataFieldMap = tbBasicDataFieldList.stream() .filter(item -> tbBasicData.getId().equals(item.getBasicDataId())) .collect(Collectors.toMap(TbBasicDataField::getFieldId, e -> e)); @@ -1069,14 +1074,14 @@ if (Objects.isNull(dto)) { return; } - //查询基础数据 + // 查询基础数据 TbBasicData basicData = this.getById(dto.getId()); if (Objects.isNull(basicData)) { throw new ServiceException("非法参数"); } String nowQuarter = DateUtils.getNowQuarter(); this.updateById(basicData); - //查询该基础数据的动态字端 + // 查询该基础数据的动态字端 List<TbBasicDataField> originFields = tbBasicDataFieldService.lambdaQuery() .eq(TbBasicDataField::getBasicDataId, basicData.getId()).list(); Set<Long> fieldIdList = originFields.stream().map(TbBasicDataField::getFieldId) -- Gitblit v1.7.1