From ba421d977e745d18a6264353c739bcaaf44c40d6 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期一, 08 四月 2024 18:39:41 +0800 Subject: [PATCH] 历史数据模块接口 --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java | 242 +++++++++++++++++++++++++++++++----------------- 1 files changed, 156 insertions(+), 86 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java index cbb4220..0100e39 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java @@ -15,12 +15,13 @@ import com.ruoyi.common.utils.*; import com.ruoyi.system.domain.*; import com.ruoyi.system.dto.BasicDataDTO; -import com.ruoyi.system.dto.CurrentFieldsQueryDTO; import com.ruoyi.system.handler.CustomerHandler; import com.ruoyi.system.handler.SelectedSheetWriteHandler; import com.ruoyi.system.listener.BasicDataListener; import com.ruoyi.system.mapper.TbBasicDataMapper; import com.ruoyi.system.mapper.TbDeptMapper; +import com.ruoyi.system.query.CurrentFieldsQuery; +import com.ruoyi.system.query.ScoreCalculateQuery; import com.ruoyi.system.query.ScoreQuery; import com.ruoyi.system.service.*; import com.ruoyi.system.utils.FieldBuildUtil; @@ -84,10 +85,7 @@ if (Objects.isNull(dept)) { throw new ServiceException(String.format("区划代码%s不存在", deptAreaCode)); } - //当前所在季度 Date date = new Date(); - int quarterOfYear = DateUtils.getQuarterOfYear(date); - String quarterOfYearStr = NumberDisplaceChineseUtil.numberToChinese(quarterOfYear); Map<String, Date> quarterDate = DateUtils.getQuarterDate(date); //当前季度开始 Date quarterStart = quarterDate.get("first"); @@ -98,16 +96,16 @@ LocalDate quarterStartLocalDate = instant.atZone(ZoneId.systemDefault()).toLocalDate(); LocalDate fifteenDaysLimit = quarterStartLocalDate.plusDays(15); LocalDate now = LocalDate.now(); - vo.setQuarter(String.format("%s年%s季度",now.getYear(),quarterOfYearStr)); + vo.setQuarter(DateUtils.getNowQuarter()); vo.setStatus(ReportingStatusEnum.UNFILLED); //如果当前时间不在规定范围内:季度初1-15号 if (now.isBefore(quarterStartLocalDate) || now.isAfter(fifteenDaysLimit)) { - return R.ok(vo,"请于季度初1-15号上传季度数据。"); + return R.ok(vo, "请于季度初1-15号上传季度数据。"); } //查询是否有当前季度的填报记录 TbBasicData basicData = this.getOne(Wrappers.<TbBasicData>lambdaQuery() .eq(TbBasicData::getDeptAreaCode, dept.getAreaCode()) - .between(TbBasicData::getCreateTime, quarterStart,quarterEnd)); + .between(TbBasicData::getCreateTime, quarterStart, quarterEnd)); //查询需要填写的字段 List<TbField> list = tbFieldService.lambdaQuery().eq(TbField::getStatus, ShowStatusEnum.SHOW).list(); List<FieldsTreeVO> roots = new ArrayList<>(); @@ -122,7 +120,7 @@ roots.add(fieldsTreeVO); roots.add(fieldsTreeVO2); if (CollUtils.isNotEmpty(list)) { - FieldBuildUtil.buildTreeFromTbFieldList(list,roots); + FieldBuildUtil.buildTreeFromTbFieldList(list, roots); FieldsTreeVO remark = new FieldsTreeVO(); remark.setId(-3L); remark.setName("备注"); @@ -130,10 +128,10 @@ vo.setFields(roots); } if (Objects.isNull(basicData)) { - vo.setQuarter(String.format("%s年%s季度",now.getYear(),quarterOfYearStr)); + vo.setQuarter(DateUtils.getNowQuarter()); vo.setStatus(ReportingStatusEnum.UNFILLED); return R.ok(vo); - }else { + } else { vo.setStatus(basicData.getStatus()); //查询已填报数据 包含数据缺失和已填报 List<TbBasicDataField> basicDataFields = tbBasicDataFieldService.lambdaQuery() @@ -197,7 +195,7 @@ Set<Long> fieldIds = fieldList.stream().map(TbField::getId).collect(Collectors.toSet()); //用户填写的动态字段 Set<Long> deptFieldIds = tbBasicDataFields.stream().map(TbBasicDataField::getFieldId).collect(Collectors.toSet()); - boolean flag = deptFieldIds.containsAll(fieldIds) && (StringUtils.isNotEmpty(dto.getTransferPaymentScale())&& StringUtils.isNotEmpty(dto.getCurrentGdp())); + boolean flag = deptFieldIds.containsAll(fieldIds) && (StringUtils.isNotEmpty(dto.getTransferPaymentScale()) && StringUtils.isNotEmpty(dto.getCurrentGdp())); if (flag) { tbBasicData.setStatus(ReportingStatusEnum.FILLED); this.updateById(tbBasicData); @@ -241,7 +239,8 @@ /** * 根据字段名获取该字段下标 - * @param list 表头 + * + * @param list 表头 * @param value 字段名 * @return 下标 */ @@ -257,10 +256,6 @@ private List<List<Object>> dataList(List<TbField> list) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); String areaName = loginUser.getUser().getAreaName(); - - //当前所在季度 - int quarterOfYear = DateUtils.getQuarterOfYear(new Date()); - String quarterOfYearStr = NumberDisplaceChineseUtil.numberToChinese(quarterOfYear); List<List<Object>> excellist = new ArrayList<List<Object>>(); List<List<String>> head = head(list); List<Object> columnNo = Lists.newArrayList("栏号"); @@ -268,7 +263,7 @@ columnNo.add(String.valueOf(i)); } excellist.add(columnNo); - excellist.add(Lists.newArrayList(areaName, String.format("%s季度",quarterOfYearStr))); + excellist.add(Lists.newArrayList(areaName, DateUtils.getNowQuarter())); return excellist; } @@ -279,12 +274,12 @@ headTitles.add(Lists.newArrayList("填报季度")); headTitles.add(Lists.newArrayList("转移支付规模")); headTitles.add(Lists.newArrayList("当期GDP")); - list.forEach(item ->{ + list.forEach(item -> { String levelOneCategory = item.getLevelOneCategory(); String levelTwoCategory = item.getLevelTwoCategory(); String levelThreeCategory = item.getLevelThreeCategory(); String fieldName = item.getFieldName(); - headTitles.add(Lists.newArrayList(levelOneCategory,StringUtils.isBlank(levelTwoCategory) ? fieldName : levelTwoCategory, StringUtils.isBlank(levelThreeCategory) ? fieldName : levelThreeCategory, fieldName)); + headTitles.add(Lists.newArrayList(levelOneCategory, StringUtils.isBlank(levelTwoCategory) ? fieldName : levelTwoCategory, StringUtils.isBlank(levelThreeCategory) ? fieldName : levelThreeCategory, fieldName)); }); headTitles.add(Lists.newArrayList("备注")); return headTitles; @@ -297,9 +292,9 @@ String areaCode = loginUser.getUser().getAreaCode(); //查询需要填写的动态字段 List<TbField> fieldList = tbFieldService.lambdaQuery().eq(TbField::getStatus, ShowStatusEnum.SHOW).list(); - EasyExcel.read(file.getInputStream(), new BasicDataListener(this,fieldList, - tbFieldService,areaCode,tbBasicDataFieldService,tbBasicDataConfigService, - tbBasicDataConfigDetailService,tbScoreService)).sheet().doRead(); + EasyExcel.read(file.getInputStream(), new BasicDataListener(this, fieldList, + tbFieldService, areaCode, tbBasicDataFieldService, tbBasicDataConfigService, + tbBasicDataConfigDetailService, tbScoreService)).sheet().doRead(); } private void calculateScore(TbBasicData tbBasicData) { @@ -388,13 +383,13 @@ //查询是否有当前季度的填报记录 TbBasicData basicData = this.getOne(Wrappers.<TbBasicData>lambdaQuery() .eq(TbBasicData::getDeptAreaCode, areaCode) - .between(TbBasicData::getCreateTime, quarterStart,quarterEnd)); + .between(TbBasicData::getCreateTime, quarterStart, quarterEnd)); if (Objects.isNull(basicData)) { return PageDTO.empty(page); } query.setBasicDataId(basicData.getId()); //查询对应的基础数据配置 - Page<ScoreVO> pageVO = tbScoreService.pageScore(query,page); + Page<ScoreVO> pageVO = tbScoreService.pageScore(query, page); return PageDTO.of(pageVO); } @@ -457,25 +452,14 @@ } @Override - public R<PageDTO<CurrentFieldsVO>> fieldsStatics(CurrentFieldsQueryDTO dto) { + public R<PageDTO<CurrentFieldsVO>> fieldsStatics(CurrentFieldsQuery dto) throws Exception { Page<CurrentFieldsVO> page = new Page<>(dto.getPageNum(), dto.getPageSize()); - //当前所在季度 - Date date = new Date(); - int quarterOfYear = DateUtils.getQuarterOfYear(date); - String quarterOfYearStr = null; - try { - quarterOfYearStr = NumberDisplaceChineseUtil.numberToChinese(quarterOfYear); - LocalDate now = LocalDate.now(); - String nowQuarter = String.format("%s年%s季度", now.getYear(), quarterOfYearStr); - return R.ok(PageDTO.of(baseMapper.fieldsStatics(page, dto, nowQuarter))); - } catch (Exception e) { - log.error("查询失败", e); - return R.fail("查询失败"); - } + String nowQuarter = DateUtils.getNowQuarter(); + return R.ok(PageDTO.of(baseMapper.fieldsStatics(page, dto))); } @Override - public CurrentFieldsAllVO fieldsStaticsAll() { + public CurrentFieldsAllVO fieldsStaticsAll() throws Exception { CurrentFieldsAllVO vo = new CurrentFieldsAllVO(); List<FieldsTreeVO> roots = new ArrayList<>(); //获取表头 @@ -492,61 +476,147 @@ currentGdp.setName("当期GDP"); roots.add(area); roots.add(quarter); + roots.add(transferPaymentScale); roots.add(currentGdp); + //查询当前季度填写字段 + List<TbField> fieldList = tbFieldService.lambdaQuery().eq(TbField::getStatus, ShowStatusEnum.SHOW).list(); + FieldBuildUtil.buildTreeFromTbFieldList(fieldList, roots); + FieldsTreeVO remark = new FieldsTreeVO(); + remark.setCategory(Boolean.FALSE); + remark.setName("备注"); + roots.add(remark); + vo.setFields(roots); + String nowQuarter = DateUtils.getNowQuarter(); + //查询上报的基础数据 + List<TbBasicData> basicDataList = this.lambdaQuery() + .eq(TbBasicData::getQuarter, nowQuarter) + .eq(TbBasicData::getStatus, ReportingStatusEnum.FILLED) + .list(); + if (CollUtils.isNotEmpty(basicDataList)) { + Set<String> areaCodeList = basicDataList.stream() + .map(TbBasicData::getDeptAreaCode) + .collect(Collectors.toSet()); + Map<String, SysUser> userMap = sysUserService.lambdaQuery() + .in(SysUser::getAreaCode, areaCodeList) + .list() + .stream() + .collect(Collectors.toMap(SysUser::getAreaCode, e -> e)); + Set<Long> basicDataIds = basicDataList.stream().map(TbBasicData::getId).collect(Collectors.toSet()); + Map<Long, TbBasicDataField> basicDataFieldMap = tbBasicDataFieldService.lambdaQuery() + .in(TbBasicDataField::getBasicDataId, basicDataIds).list().stream() + .collect(Collectors.toMap(TbBasicDataField::getFieldId, e -> e)); + //值 + List<Object> result = new ArrayList<>(); + for (TbBasicData tbBasicData : basicDataList) { + SysUser user = userMap.get(tbBasicData.getDeptAreaCode()); + List<String> item = new ArrayList<>(); + item.add(Objects.nonNull(user) ? user.getAreaName() : ""); + item.add(tbBasicData.getQuarter()); + item.add(tbBasicData.getTransferPaymentScale()); + item.add(tbBasicData.getCurrentGdp()); + for (TbField tbField : fieldList) { + TbBasicDataField tbBasicDataField = basicDataFieldMap.get(tbField.getId()); + item.add(Objects.nonNull(tbBasicDataField) ? FieldBuildUtil.formatNumberWithCommas(tbBasicDataField.getFieldValue()) : ""); + } + item.add(tbBasicData.getRemark()); + result.add(item); + } + vo.setValue(result); + } + return vo; + } + + @Override + public R<PageDTO<CurrentFieldsVO>> historyFieldsStatics(CurrentFieldsQuery dto) { + Page<CurrentFieldsVO> page = new Page<>(dto.getPageNum(), dto.getPageSize()); //当前所在季度 - Date date = new Date(); - int quarterOfYear = DateUtils.getQuarterOfYear(date); - try { - //查询当前季度填写字段 - List<TbField> fieldList = tbFieldService.lambdaQuery().eq(TbField::getStatus, ShowStatusEnum.SHOW).list(); - FieldBuildUtil.buildTreeFromTbFieldList(fieldList, roots); + return R.ok(PageDTO.of(baseMapper.fieldsStatics(page, dto))); + } + + @Override + public PageDTO<ScoreCalculateVO> scoreCalculatePage(ScoreCalculateQuery query) { + Page<ScoreCalculateVO> page = new Page<>(query.getPageNum(), query.getPageSize()); + Page<ScoreCalculateVO> pageVO = tbBasicDataConfigService.scoreCalculatePage(query, page); + return PageDTO.of(pageVO); + } + + @Override + public CurrentFieldsAllVO fieldsStaticsAll(String quarterStr) { + CurrentFieldsAllVO vo = new CurrentFieldsAllVO(); + List<FieldsTreeVO> roots = new ArrayList<>(); + //获取表头 + FieldsTreeVO area = new FieldsTreeVO(); + area.setCategory(Boolean.FALSE); + area.setName("地区"); + FieldsTreeVO quarter = new FieldsTreeVO(); + quarter.setCategory(Boolean.FALSE); + quarter.setName("填报季度"); + FieldsTreeVO transferPaymentScale = new FieldsTreeVO(); + transferPaymentScale.setName("转移支付规模"); + FieldsTreeVO currentGdp = new FieldsTreeVO(); + currentGdp.setCategory(Boolean.FALSE); + currentGdp.setName("当期GDP"); + roots.add(area); + roots.add(quarter); + roots.add(transferPaymentScale); + roots.add(currentGdp); + List<TbBasicData> basicDataList = this.lambdaQuery() + .eq(TbBasicData::getQuarter, quarterStr) + .eq(TbBasicData::getStatus, ReportingStatusEnum.FILLED) + .list(); + if (CollUtils.isNotEmpty(basicDataList)) { + throw new ServiceException("非法参数"); + } + Long basicDataId = basicDataList.get(0).getId(); + Set<Long> fieldIds = tbBasicDataFieldService.lambdaQuery() + .eq(TbBasicDataField::getBasicDataId, basicDataId) + .ne(TbBasicDataField::getFieldId, -1L) + .ne(TbBasicDataField::getFieldId, -2L) + .list().stream().map(TbBasicDataField::getFieldId).collect(Collectors.toSet()); + List<TbField> fieldList = tbFieldService.lambdaQuery().in(TbField::getId, fieldIds).list(); + if (CollUtils.isEmpty(fieldList)) { FieldsTreeVO remark = new FieldsTreeVO(); remark.setCategory(Boolean.FALSE); remark.setName("备注"); roots.add(remark); vo.setFields(roots); - String quarterOfYearStr = NumberDisplaceChineseUtil.numberToChinese(quarterOfYear); - String nowQuarter = String.format("%s年%s季度", LocalDate.now().getYear(), quarterOfYearStr); - //查询上报的基础数据 - List<TbBasicData> basicDataList = this.lambdaQuery() - .eq(TbBasicData::getQuarter, nowQuarter) - .eq(TbBasicData::getStatus, ReportingStatusEnum.FILLED) - .list(); - if (CollUtils.isNotEmpty(basicDataList)) { - Set<String> areaCodeList = basicDataList.stream() - .map(TbBasicData::getDeptAreaCode) - .collect(Collectors.toSet()); - Map<String, SysUser> userMap = sysUserService.lambdaQuery() - .in(SysUser::getAreaCode, areaCodeList) - .list() - .stream() - .collect(Collectors.toMap(SysUser::getAreaCode, e -> e)); - Set<Long> basicDataIds = basicDataList.stream().map(TbBasicData::getId).collect(Collectors.toSet()); - Map<Long, TbBasicDataField> basicDataFieldMap = tbBasicDataFieldService.lambdaQuery() - .in(TbBasicDataField::getBasicDataId, basicDataIds).list().stream() - .collect(Collectors.toMap(TbBasicDataField::getFieldId, e -> e)); - //值 - List<Object> result = new ArrayList<>(); - for (TbBasicData tbBasicData : basicDataList) { - SysUser user = userMap.get(tbBasicData.getDeptAreaCode()); - List<String> item = new ArrayList<>(); - item.add(Objects.nonNull(user) ? user.getAreaName() : ""); - item.add(tbBasicData.getQuarter()); - item.add(tbBasicData.getTransferPaymentScale()); - item.add(tbBasicData.getCurrentGdp()); - for (TbField tbField : fieldList) { - TbBasicDataField tbBasicDataField = basicDataFieldMap.get(tbField.getId()); - item.add(Objects.nonNull(tbBasicDataField) ? FieldBuildUtil.formatNumberWithCommas(tbBasicDataField.getFieldValue()) : ""); - } - item.add(tbBasicData.getRemark()); - result.add(item); - } - vo.setValue(result); - } return vo; - } catch (Exception e) { - log.error("查询失败", e); - throw new ServiceException("查询失败"); } + FieldBuildUtil.buildTreeFromTbFieldList(fieldList, roots); + FieldsTreeVO remark = new FieldsTreeVO(); + remark.setCategory(Boolean.FALSE); + remark.setName("备注"); + roots.add(remark); + vo.setFields(roots); + Set<String> areaCodeList = basicDataList.stream() + .map(TbBasicData::getDeptAreaCode) + .collect(Collectors.toSet()); + Map<String, SysUser> userMap = sysUserService.lambdaQuery() + .in(SysUser::getAreaCode, areaCodeList) + .list() + .stream() + .collect(Collectors.toMap(SysUser::getAreaCode, e -> e)); + Set<Long> basicDataIds = basicDataList.stream().map(TbBasicData::getId).collect(Collectors.toSet()); + Map<Long, TbBasicDataField> basicDataFieldMap = tbBasicDataFieldService.lambdaQuery() + .in(TbBasicDataField::getBasicDataId, basicDataIds).list().stream() + .collect(Collectors.toMap(TbBasicDataField::getFieldId, e -> e)); + //值 + List<Object> result = new ArrayList<>(); + for (TbBasicData tbBasicData : basicDataList) { + SysUser user = userMap.get(tbBasicData.getDeptAreaCode()); + List<String> item = new ArrayList<>(); + item.add(Objects.nonNull(user) ? user.getAreaName() : ""); + item.add(tbBasicData.getQuarter()); + item.add(tbBasicData.getTransferPaymentScale()); + item.add(tbBasicData.getCurrentGdp()); + for (TbField tbField : fieldList) { + TbBasicDataField tbBasicDataField = basicDataFieldMap.get(tbField.getId()); + item.add(Objects.nonNull(tbBasicDataField) ? FieldBuildUtil.formatNumberWithCommas(tbBasicDataField.getFieldValue()) : ""); + } + item.add(tbBasicData.getRemark()); + result.add(item); + } + vo.setValue(result); + return vo; } } -- Gitblit v1.7.1