| | |
| | | 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; |
| | |
| | | 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) { |
| | |
| | | tbBasicData.setId(basicDataOpt.get().getId()); |
| | | tbBasicData.setDeptAreaCode(areaCode); |
| | | this.updateById(tbBasicData); |
| | | //查询该基础数据的动态字端 |
| | | // 查询该基础数据的动态字端 |
| | | List<TbBasicDataField> originFields = tbBasicDataFieldService.lambdaQuery() |
| | | .eq(TbBasicDataField::getBasicDataId, tbBasicData.getId()).list(); |
| | | CompletableFuture.runAsync( |
| | |
| | | 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( |
| | |
| | | tbBasicDataFieldService, |
| | | tbBasicDataConfigService, |
| | | tbBasicDataConfigDetailService, |
| | | tbScoreService, tbDataScreenScoreService, tbDataScreenConfigService)) |
| | | tbScoreService, tbDataScreenScoreService, nowQuarter, |
| | | tbDataScreenConfigService, |
| | | asyncService)) |
| | | .sheet() |
| | | .headRowNumber(0) |
| | | .doRead(); |
| | |
| | | @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()); |
| | |
| | | tbBasicDataConfigService, |
| | | tbBasicDataConfigDetailService, |
| | | tbScoreService, sysUserService, quarter, tbDataScreenScoreService, |
| | | tbDataScreenConfigService)) |
| | | tbDataScreenConfigService, asyncService)) |
| | | .sheet() |
| | | .headRowNumber(0) |
| | | .doRead(); |
| | | } |
| | | |
| | |
| | | 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()); |
| | |
| | | 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)); |
| | |
| | | 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) |