From 5980a5fed8092f9866cb2f6a8b74abb7d631c018 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期日, 07 四月 2024 18:26:47 +0800 Subject: [PATCH] 平台端 当前季度数据接口 --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java | 198 +++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 180 insertions(+), 18 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 301ee1b..cbb4220 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,6 +15,7 @@ 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; @@ -23,9 +24,7 @@ import com.ruoyi.system.query.ScoreQuery; import com.ruoyi.system.service.*; import com.ruoyi.system.utils.FieldBuildUtil; -import com.ruoyi.system.vo.BasicDataReportingVO; -import com.ruoyi.system.vo.FieldsTreeVO; -import com.ruoyi.system.vo.ScoreVO; +import com.ruoyi.system.vo.*; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -61,6 +60,19 @@ private final TbBasicDataConfigService tbBasicDataConfigService; private final TbBasicDataConfigDetailService tbBasicDataConfigDetailService; private final TbScoreService tbScoreService; + private final ISysUserService sysUserService; + + public static void setFieldValues(List<FieldsTreeVO> fields, Map<Long, TbBasicDataField> fieldMap) { + for (FieldsTreeVO field : fields) { + TbBasicDataField tbBasicDataField = fieldMap.get(field.getId()); + if (tbBasicDataField != null) { + field.setValue(FieldBuildUtil.formatNumberWithCommas(tbBasicDataField.getFieldValue())); + } + if (field.getChildren() != null && !field.getChildren().isEmpty()) { + setFieldValues(field.getChildren(), fieldMap); + } + } + } @Override public R<BasicDataReportingVO> getBasicFields() throws Exception { @@ -72,8 +84,8 @@ if (Objects.isNull(dept)) { throw new ServiceException(String.format("区划代码%s不存在", deptAreaCode)); } - Date date = new Date(); //当前所在季度 + Date date = new Date(); int quarterOfYear = DateUtils.getQuarterOfYear(date); String quarterOfYearStr = NumberDisplaceChineseUtil.numberToChinese(quarterOfYear); Map<String, Date> quarterDate = DateUtils.getQuarterDate(date); @@ -111,6 +123,10 @@ roots.add(fieldsTreeVO2); if (CollUtils.isNotEmpty(list)) { FieldBuildUtil.buildTreeFromTbFieldList(list,roots); + FieldsTreeVO remark = new FieldsTreeVO(); + remark.setId(-3L); + remark.setName("备注"); + roots.add(remark); vo.setFields(roots); } if (Objects.isNull(basicData)) { @@ -131,17 +147,6 @@ } } return R.ok(vo); - } - public static void setFieldValues(List<FieldsTreeVO> fields, Map<Long, TbBasicDataField> fieldMap) { - for (FieldsTreeVO field : fields) { - TbBasicDataField tbBasicDataField = fieldMap.get(field.getId()); - if (tbBasicDataField != null) { - field.setValue(tbBasicDataField.getFieldValue()); - } - if (field.getChildren() != null && !field.getChildren().isEmpty()) { - setFieldValues(field.getChildren(), fieldMap); - } - } } @Override @@ -176,10 +181,15 @@ transferPaymentScale.setFieldValue(tbBasicData.getTransferPaymentScale()); tbBasicDataFields.add(transferPaymentScale); TbBasicDataField currentGdp = new TbBasicDataField(); - transferPaymentScale.setBasicDataId(tbBasicData.getId()); - transferPaymentScale.setFieldId(-2L); - transferPaymentScale.setFieldValue(tbBasicData.getCurrentGdp()); + currentGdp.setBasicDataId(tbBasicData.getId()); + currentGdp.setFieldId(-2L); + currentGdp.setFieldValue(tbBasicData.getCurrentGdp()); tbBasicDataFields.add(currentGdp); + TbBasicDataField remark = new TbBasicDataField(); + remark.setBasicDataId(tbBasicData.getId()); + remark.setFieldId(-3L); + remark.setFieldValue(tbBasicData.getRemark()); + tbBasicDataFields.add(remark); //将该基础数据的动态字段数据全部删除 tbBasicDataFieldService.remove(Wrappers.<TbBasicDataField>lambdaQuery().eq(TbBasicDataField::getBasicDataId, tbBasicData.getId())); tbBasicDataFieldService.saveBatch(tbBasicDataFields); @@ -387,4 +397,156 @@ Page<ScoreVO> pageVO = tbScoreService.pageScore(query,page); return PageDTO.of(pageVO); } + + @Override + public R<CurrentFieldsDetailVO> fieldsDetails(Long id) { + // 从数据库中获取基本数据 + TbBasicData basicData = this.getById(id); + if (Objects.isNull(basicData)) { + throw new ServiceException("非法参数"); + } + CurrentFieldsDetailVO vo = BeanUtils.copyBean(basicData, CurrentFieldsDetailVO.class); + //查询用户信息 + sysUserService.lambdaQuery() + .eq(SysUser::getAreaCode, basicData.getDeptAreaCode()) + .eq(SysUser::getUserType, UserTypeEnum.DEPARTMENT.getCode()) + .oneOpt() + .ifPresent(item -> { + vo.setAreaName(item.getAreaName()); + vo.setPhoneNumber(item.getPhoneNumber()); + vo.setPersonInCharge(item.getPersonInCharge()); + }); + // 查询动态字段 + List<TbBasicDataField> basicDataFields = tbBasicDataFieldService.lambdaQuery().eq(TbBasicDataField::getBasicDataId, basicData.getId()).list(); + // 获取所有字段ID + Set<Long> fieldIds = basicDataFields.stream().map(TbBasicDataField::getFieldId).collect(Collectors.toSet()); + // 根据字段ID查询字段信息并构建字段ID到字段对象的映射 + Map<Long, TbField> fieldMap = tbFieldService.lambdaQuery() + .in(!fieldIds.isEmpty(), TbField::getId, fieldIds) + .list().stream() + .collect(Collectors.toMap(TbField::getId, e -> e)); + // 根节点 + List<FieldsTreeVO> root = new ArrayList<>(); + basicDataFields.stream().filter(item -> item.getFieldId() == -1).findFirst().ifPresent(item -> { + FieldsTreeVO fieldsTreeVO = new FieldsTreeVO(); + fieldsTreeVO.setId(item.getFieldId()); + fieldsTreeVO.setName("转移支付规模"); + fieldsTreeVO.setValue(item.getFieldValue()); + fieldsTreeVO.setCategory(Boolean.FALSE); + root.add(fieldsTreeVO); + }); + basicDataFields.stream().filter(item -> item.getFieldId() == -2).findFirst().ifPresent(item -> { + FieldsTreeVO fieldsTreeVO = new FieldsTreeVO(); + fieldsTreeVO.setId(item.getFieldId()); + fieldsTreeVO.setName("当期GDP"); + fieldsTreeVO.setValue(item.getFieldValue()); + fieldsTreeVO.setCategory(Boolean.FALSE); + root.add(fieldsTreeVO); + }); + FieldBuildUtil.buildTreeStructure(basicDataFields, fieldMap, root); + basicDataFields.stream().filter(item -> item.getFieldId() == -3).findFirst().ifPresent(item -> { + FieldsTreeVO fieldsTreeVO = new FieldsTreeVO(); + fieldsTreeVO.setId(item.getFieldId()); + fieldsTreeVO.setName("备注"); + fieldsTreeVO.setValue(item.getFieldValue()); + fieldsTreeVO.setCategory(Boolean.FALSE); + root.add(fieldsTreeVO); + }); + vo.setFields(root); + return R.ok(vo); + } + + @Override + public R<PageDTO<CurrentFieldsVO>> fieldsStatics(CurrentFieldsQueryDTO dto) { + 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("查询失败"); + } + } + + @Override + public CurrentFieldsAllVO fieldsStaticsAll() { + 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(currentGdp); + //当前所在季度 + 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); + 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("查询失败"); + } + } } -- Gitblit v1.7.1