From 07c83c163675e24252de05d029cef2eab046e583 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期二, 09 七月 2024 19:32:40 +0800
Subject: [PATCH] 完成基础数据导入

---
 finance-system/src/main/java/com/finance/system/service/impl/TbBasicDataServiceImpl.java |   53 +++++++++++++++++++++++++++++------------------------
 1 files changed, 29 insertions(+), 24 deletions(-)

diff --git a/finance-system/src/main/java/com/finance/system/service/impl/TbBasicDataServiceImpl.java b/finance-system/src/main/java/com/finance/system/service/impl/TbBasicDataServiceImpl.java
index 66e852c..6c97002 100644
--- a/finance-system/src/main/java/com/finance/system/service/impl/TbBasicDataServiceImpl.java
+++ b/finance-system/src/main/java/com/finance/system/service/impl/TbBasicDataServiceImpl.java
@@ -48,6 +48,7 @@
 import com.finance.system.query.CurrentFieldsQuery;
 import com.finance.system.query.ScoreCalculateQuery;
 import com.finance.system.query.ScoreQuery;
+import com.finance.system.service.AsyncService;
 import com.finance.system.service.ISysUserService;
 import com.finance.system.service.TbBasicDataConfigDetailService;
 import com.finance.system.service.TbBasicDataConfigService;
@@ -114,7 +115,7 @@
     private final TbOperLogService tbOperLogService;
     private final TbDataScreenScoreService tbDataScreenScoreService;
     private final TbDataScreenConfigService tbDataScreenConfigService;
-
+    private final AsyncService asyncService;
 
     public static void setFieldValues(
             List<FieldsTreeVO> fields, Map<Long, TbBasicDataField> fieldMap) {
@@ -231,7 +232,7 @@
             tbBasicData.setId(basicDataOpt.get().getId());
             tbBasicData.setDeptAreaCode(areaCode);
             this.updateById(tbBasicData);
-            //查询该基础数据的动态字端
+            // 查询该基础数据的动态字端
             List<TbBasicDataField> originFields = tbBasicDataFieldService.lambdaQuery()
                     .eq(TbBasicDataField::getBasicDataId, tbBasicData.getId()).list();
             CompletableFuture.runAsync(
@@ -468,12 +469,13 @@
         LocalDate quarterStartLocalDate = instant.atZone(ZoneId.systemDefault()).toLocalDate();
         LocalDate fifteenDaysLimit = quarterStartLocalDate.plusDays(14);
         LocalDate now = LocalDate.now();
-        //TODO
+        // TODO
       /*  if (now.isBefore(quarterStartLocalDate) || now.isAfter(fifteenDaysLimit)) {
             throw new ServiceException("请于季度初1-15号上传季度数据。");
         }*/
         LoginUser loginUser = SecurityUtils.getLoginUser();
         String areaCode = loginUser.getUser().getAreaCode();
+        String nowQuarter = DateUtils.getNowQuarter();
         EasyExcel.read(
                         file.getInputStream(),
                         new BasicDataListener(
@@ -483,7 +485,9 @@
                                 tbBasicDataFieldService,
                                 tbBasicDataConfigService,
                                 tbBasicDataConfigDetailService,
-                                tbScoreService, tbDataScreenScoreService, tbDataScreenConfigService))
+                                tbScoreService, tbDataScreenScoreService, nowQuarter,
+                                tbDataScreenConfigService,
+                                asyncService))
                 .sheet()
                 .headRowNumber(0)
                 .doRead();
@@ -880,7 +884,7 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void importData(MultipartFile file, String quarter) throws IOException {
-        //校验季度
+        // 校验季度
         Date quarterDate = DateUtils.getQuarterDate(quarter);
 
         Map<String, Date> quarterMap = DateUtils.getQuarterDate(new Date());
@@ -900,8 +904,9 @@
                                 tbBasicDataConfigService,
                                 tbBasicDataConfigDetailService,
                                 tbScoreService, sysUserService, quarter, tbDataScreenScoreService,
-                                tbDataScreenConfigService))
+                                tbDataScreenConfigService, asyncService))
                 .sheet()
+                .headRowNumber(0)
                 .doRead();
     }
 
@@ -913,49 +918,49 @@
         response.setHeader(
                 "Content-disposition",
                 "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xlsx");
-        //季度数据,用于反查字段
+        // 季度数据,用于反查字段
         List<TbBasicData> tbBasicDataList = this.lambdaQuery()
                 .in(TbBasicData::getQuarter, quarterList)
                 .eq(TbBasicData::getStatus, ReportingStatusEnum.FILLED)
                 .groupBy(TbBasicData::getQuarter).list();
-        //符合导出条件的基础数据
+        // 符合导出条件的基础数据
         List<TbBasicData> tbBasicDataListAll = this.lambdaQuery()
                 .in(TbBasicData::getQuarter, quarterList)
                 .eq(TbBasicData::getStatus, ReportingStatusEnum.FILLED)
                 .list();
-        //基础数据id列表
+        // 基础数据id列表
         Set<Long> basicDataIdList = tbBasicDataListAll.stream().map(TbBasicData::getId)
                 .collect(Collectors.toSet());
-        //涉及到的部门编码
+        // 涉及到的部门编码
         Set<String> userAreaCodeList = tbBasicDataListAll.stream().map(TbBasicData::getDeptAreaCode)
                 .collect(Collectors.toSet());
-        //用户信息map
+        // 用户信息map
         Map<String, SysUser> userMap = sysUserService.lambdaQuery()
                 .in(SysUser::getAreaCode, userAreaCodeList).list().stream()
                 .collect(Collectors.toMap(SysUser::getAreaCode, e -> e));
-        //基础数据对应的字段值列表
+        // 基础数据对应的字段值列表
         List<TbBasicDataField> tbBasicDataFieldList = tbBasicDataFieldService.lambdaQuery()
                 .in(TbBasicDataField::getBasicDataId, basicDataIdList)
                 .list();
-        //构建Excel写对象
+        // 构建Excel写对象
         try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream())
                 .registerWriteHandler(new CustomCellWriteHandler())
                 .registerWriteHandler(EasyExcelUtil.getStyleStrategy()).build()) {
             WriteSheet writeSheet;
-            //遍历季度基础数据
+            // 遍历季度基础数据
             for (TbBasicData tbBasicData : tbBasicDataList) {
-                //该季度的动态字段id列表
+                // 该季度的动态字段id列表
                 Set<Long> fieldIdList = tbBasicDataFieldList.stream()
                         .filter(item -> tbBasicData.getId().equals(item.getBasicDataId()))
                         .map(TbBasicDataField::getFieldId)
                         .collect(Collectors.toSet());
-                //字段列表
+                // 字段列表
                 List<TbField> fieldList = tbFieldService.lambdaQuery()
                         .in(TbField::getId, fieldIdList)
                         .list();
-                //表头
+                // 表头
                 List<List<String>> head = head(fieldList);
-                //过滤基础数据为遍历元素的季度
+                // 过滤基础数据为遍历元素的季度
                 List<TbBasicData> list = tbBasicDataListAll.stream()
                         .filter(item -> tbBasicData.getQuarter().equals(item.getQuarter()))
                         .collect(Collectors.toList());
@@ -973,17 +978,17 @@
     private List<List<Object>> dataList(List<TbField> fieldList, List<TbBasicData> list,
             List<TbBasicDataField> tbBasicDataFieldList, Map<String, SysUser> userMap,
             List<List<String>> head) {
-        //所有数据集合
+        // 所有数据集合
         List<List<Object>> excellist = new ArrayList<>();
-        //构建栏号行
+        // 构建栏号行
         List<Object> columnNo = Lists.newArrayList("栏号");
         for (int i = 1; i < head.size(); i++) {
             columnNo.add(String.valueOf(i));
         }
         excellist.add(columnNo);
-        //动态字段数据行
+        // 动态字段数据行
         for (TbBasicData tbBasicData : list) {
-            //转换为map,方便遍历的时候取
+            // 转换为map,方便遍历的时候取
             Map<Long, TbBasicDataField> basicDataFieldMap = tbBasicDataFieldList.stream()
                     .filter(item -> tbBasicData.getId().equals(item.getBasicDataId()))
                     .collect(Collectors.toMap(TbBasicDataField::getFieldId, e -> e));
@@ -1069,14 +1074,14 @@
         if (Objects.isNull(dto)) {
             return;
         }
-        //查询基础数据
+        // 查询基础数据
         TbBasicData basicData = this.getById(dto.getId());
         if (Objects.isNull(basicData)) {
             throw new ServiceException("非法参数");
         }
         String nowQuarter = DateUtils.getNowQuarter();
         this.updateById(basicData);
-        //查询该基础数据的动态字端
+        // 查询该基础数据的动态字端
         List<TbBasicDataField> originFields = tbBasicDataFieldService.lambdaQuery()
                 .eq(TbBasicDataField::getBasicDataId, basicData.getId()).list();
         Set<Long> fieldIdList = originFields.stream().map(TbBasicDataField::getFieldId)

--
Gitblit v1.7.1