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