| | |
| | | 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.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; |
| | |
| | | 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 { |
| | |
| | | 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); |
| | |
| | | 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)) { |
| | |
| | | } |
| | | } |
| | | 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 |
| | |
| | | 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); |
| | |
| | | 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("查询失败"); |
| | | } |
| | | } |
| | | } |