mitao
2024-04-03 321d507a5670cb36c1550445c4795a76c9d7d226
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java
@@ -22,8 +22,9 @@
import com.ruoyi.system.mapper.TbDeptMapper;
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.FieldReportingVO;
import com.ruoyi.system.vo.FieldsTreeVO;
import com.ruoyi.system.vo.ScoreVO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -62,7 +63,9 @@
    private final TbScoreService tbScoreService;
    @Override
    public R<BasicDataReportingVO> getBasicFields(String deptAreaCode) throws Exception {
    public R<BasicDataReportingVO> getBasicFields() throws Exception {
        SysUser user = SecurityUtils.getLoginUser().getUser();
        String deptAreaCode = user.getAreaCode();
        BasicDataReportingVO vo = new BasicDataReportingVO();
        //校验区划代码
        TbDept dept = tbDeptMapper.selectOne(Wrappers.<TbDept>lambdaQuery().eq(TbDept::getAreaCode, deptAreaCode));
@@ -95,9 +98,20 @@
                .between(TbBasicData::getCreateTime, quarterStart,quarterEnd));
        //查询需要填写的字段
        List<TbField> list = tbFieldService.lambdaQuery().eq(TbField::getStatus, ShowStatusEnum.SHOW).list();
        List<FieldsTreeVO> roots = new ArrayList<>();
        FieldsTreeVO fieldsTreeVO = new FieldsTreeVO();
        fieldsTreeVO.setId(-1L);
        fieldsTreeVO.setName("转移支付规模");
        fieldsTreeVO.setCategory(Boolean.FALSE);
        FieldsTreeVO fieldsTreeVO2 = new FieldsTreeVO();
        fieldsTreeVO2.setId(-2L);
        fieldsTreeVO2.setName("当期GDP");
        fieldsTreeVO2.setCategory(Boolean.FALSE);
        roots.add(fieldsTreeVO);
        roots.add(fieldsTreeVO2);
        if (CollUtils.isNotEmpty(list)) {
            List<FieldReportingVO> fieldReportingVOS = BeanUtils.copyList(list, FieldReportingVO.class);
            vo.setFields(fieldReportingVOS);
            FieldBuildUtil.buildTreeFromTbFieldList(list,roots);
            vo.setFields(roots);
        }
        if (Objects.isNull(basicData)) {
            vo.setQuarter(String.format("%s年%s季度",now.getYear(),quarterOfYearStr));
@@ -108,19 +122,26 @@
            //查询已填报数据 包含数据缺失和已填报
            List<TbBasicDataField> basicDataFields = tbBasicDataFieldService.lambdaQuery()
                    .eq(TbBasicDataField::getBasicDataId, basicData.getId()).list();
            if (CollUtils.isNotEmpty(basicDataFields)) {
                Map<Long, TbBasicDataField> fieldMap = basicDataFields.stream()
                        .collect(Collectors.toMap(TbBasicDataField::getFieldId, Function.identity()));
                vo.getFields().forEach(item -> {
                    TbBasicDataField tbBasicDataField = fieldMap.get(item.getId());
                    if (Objects.nonNull(tbBasicDataField)) {
                        item.setValue(tbBasicDataField.getFieldValue());
                    }
                });
                setFieldValues(vo.getFields(), fieldMap);
                return R.ok(vo);
            }
        }
        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
@@ -138,9 +159,16 @@
        this.saveOrUpdate(tbBasicData);
        //保存基础数据动态字段数据
        List<TbBasicDataField> tbBasicDataFields = BeanUtils.copyList(dto.getFields(), TbBasicDataField.class);
        tbBasicDataFields.forEach(item -> item.setBasicDataId(tbBasicData.getId()));
        //查询需要填写的动态字段
        List<TbField> fieldList = tbFieldService.lambdaQuery().eq(TbField::getStatus, ShowStatusEnum.SHOW).list();
        Map<Long, TbField> fieldMap = fieldList.stream().collect(Collectors.toMap(TbField::getId, e -> e));
        tbBasicDataFields.forEach(item -> {
            item.setBasicDataId(tbBasicData.getId());
            TbField tbField = fieldMap.get(item.getFieldId());
            if (Objects.nonNull(tbField)) {
                item.setFieldName(tbField.getFieldName());
            }
        });
        //添加固定字段 转移支付规模、当期GDP
        TbBasicDataField transferPaymentScale = new TbBasicDataField();
        transferPaymentScale.setBasicDataId(tbBasicData.getId());
@@ -215,6 +243,7 @@
        }
        return -1; // 返回-1表示未找到
    }
    private List<List<Object>> dataList(List<TbField> list) throws Exception {
        LoginUser loginUser = SecurityUtils.getLoginUser();
        String areaName = loginUser.getUser().getAreaName();
@@ -250,6 +279,7 @@
        headTitles.add(Lists.newArrayList("备注"));
        return headTitles;
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void importBasicData(MultipartFile file) throws Exception {
@@ -261,6 +291,7 @@
                tbFieldService,areaCode,tbBasicDataFieldService,tbBasicDataConfigService,
                tbBasicDataConfigDetailService,tbScoreService)).sheet().doRead();
    }
    private void calculateScore(TbBasicData tbBasicData) {
        //计算得分
        List<TbBasicDataConfig> list = tbBasicDataConfigService.lambdaQuery().eq(TbBasicDataConfig::getStatus, ShowStatusEnum.SHOW).list();
@@ -333,6 +364,7 @@
            }
        }
    }
    @Override
    public PageDTO<ScoreVO> pageScore(ScoreQuery query) {
        Page<ScoreVO> page = new Page<>(query.getPageNum(), query.getPageSize());
@@ -352,7 +384,7 @@
        }
        query.setBasicDataId(basicData.getId());
        //查询对应的基础数据配置
        List<ScoreVO> vos = tbScoreService.pageScore(query,page);
        return PageDTO.of(page, vos);
        Page<ScoreVO> pageVO = tbScoreService.pageScore(query,page);
        return PageDTO.of(pageVO);
    }
}