Commit 772274e21ad8f5e89b47575e31634e344e3a7f17

Authored by 陈威
1 parent 8337630f
Exists in dev

导入基础数据,组织权限验证

zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/controller/McBasicCmtyController.java
... ... @@ -5,7 +5,9 @@ import com.alibaba.excel.util.MapUtils;
5 5 import com.alibaba.fastjson2.JSON;
6 6 import com.alibaba.nacos.common.utils.CollectionUtils;
7 7 import com.chinagas.common.core.domain.AjaxResult;
  8 +import com.chinagas.common.core.exceptions.ServiceException;
8 9 import com.chinagas.common.core.web.controller.BaseController;
  10 +import com.chinagas.common.core.web.domain.BaseEntity;
9 11 import com.chinagas.common.core.web.page.TableDataInfo;
10 12 import com.chinagas.common.log.annotation.Log;
11 13 import com.chinagas.common.log.enums.BusinessType;
... ... @@ -18,7 +20,6 @@ import com.chinagas.modules.schsf.service.ICommonService;
18 20 import com.chinagas.modules.schsf.service.IMcBasicCmtyService;
19 21 import com.chinagas.modules.schsf.utils.listener.McBasicCmtyImportInspection;
20 22 import lombok.extern.slf4j.Slf4j;
21   -import org.apache.commons.lang3.StringUtils;
22 23 import org.springframework.beans.factory.annotation.Autowired;
23 24 import org.springframework.web.bind.annotation.*;
24 25 import org.springframework.web.multipart.MultipartFile;
... ... @@ -27,12 +28,9 @@ import javax.servlet.http.HttpServletResponse;
27 28 import java.io.IOException;
28 29 import java.io.InputStream;
29 30 import java.net.URLEncoder;
30   -import java.sql.SQLIntegrityConstraintViolationException;
31 31 import java.util.HashMap;
32 32 import java.util.List;
33 33 import java.util.Map;
34   -import java.util.Set;
35   -import java.util.stream.Collectors;
36 34  
37 35  
38 36 /**
... ... @@ -127,8 +125,6 @@ public class McBasicCmtyController extends BaseController {
127 125 throw new RuntimeException("文件大小不得超过5M");
128 126 }
129 127 try {
130   -
131   -
132 128 // 获取文件的输入流
133 129 InputStream inputStream = file.getInputStream();
134 130 List<McBasicCmty> list = EasyExcel.read(inputStream) //调用read方法
... ... @@ -139,45 +135,27 @@ public class McBasicCmtyController extends BaseController {
139 135 .headRowNumber(4) // 列表头行数,1代表列表头有1行,第二行开始为数据行
140 136 .doReadSync(); // 开始读Excel,返回一个List<T>集合,继续后续入库操作
141 137 log.info("导入基础数据-户数总条数:{}", list == null ? 0 : list.size());
142   -
143   -// List<HashMap<String, String>> sysDeptAlls = commonService.selectSysDeptAll();
144   -
145   -
146   -// // 检验重复数据
147   -// Map<String, List<McBasicCmty>> collect = list.stream().collect(Collectors.groupingBy(o ->
148   -// o.getRegionName() +
149   -// o.getGroupName() +
150   -// o.getCompanyName() +
151   -// o.getCompanyCode()
152   -// + o.getFiscalYear()
153   -// + o.getProvince()
154   -// + o.getCity()
155   -// + o.getDistrict()
156   -// + o.getStreet()
157   -// + o.getVlgOrCmty()
158   -// ));
159   -// Set<String> strings = collect.keySet();
160   -// if (strings.size() < list.size()) {
161   -// throw new RuntimeException("表格中存在重复的数据");
162   -// }
  138 + List<HashMap<String, String>> userSysDeptAll = commonService.selectUserSysDeptAll(new BaseEntity());
163 139 long startTime = System.currentTimeMillis(); // 记录任务开始时间
164   - // 插入数据库
165   - if (CollectionUtils.isNotEmpty(list)) {
166   -// Runnable task = () -> {
  140 + if (CollectionUtils.isNotEmpty(userSysDeptAll) && CollectionUtils.isNotEmpty(list)) {
  141 + // 使用 Map 来存储 companyCode 及其对应的部门信息
  142 + Map<String, HashMap<String, String>> deptMap = new HashMap<>();
  143 + for (HashMap<String, String> dept : userSysDeptAll) {
  144 + String companyCode = String.valueOf(dept.get("deptId"));
  145 + if (companyCode != null) {
  146 + deptMap.put(companyCode, dept);
  147 + }
  148 + }
  149 + for (McBasicCmty mcBasicCmty : list) {
  150 + String companyCode = mcBasicCmty.getCompanyCode();
  151 + if (!deptMap.containsKey(companyCode)) {
  152 + throw new ServiceException("导入项目公司错误,请检查!");
  153 + }
  154 + }
  155 + // 插入数据库
167 156 for (McBasicCmty mcBasicCmty : list) {
168 157 mcBasicCmtyService.insertMcBasicCmty(mcBasicCmty);
169   - System.out.println(list); // 注意:这里直接打印list可能不是最佳实践,具体看需求
170 158 }
171   -// };
172   -// Thread backgroundThread = new Thread(task, "后台插入任务线程");
173   -// backgroundThread.setDaemon(true); // 设置为守护线程,随主线程结束而结束
174   -// backgroundThread.start();
175   -// try {
176   -// backgroundThread.join(); // 等待线程执行完毕,确保能准确计算运行时长
177   -// } catch (InterruptedException e) {
178   -// Thread.currentThread().interrupt(); // 恢复中断状态
179   -// log.error("导入基础数据-户数,等待线程执行完毕时被中断", e);
180   -// }
181 159 }
182 160 long endTime = System.currentTimeMillis(); // 记录任务结束时间
183 161 long duration = endTime - startTime; // 计算任务运行时长
... ... @@ -237,7 +215,7 @@ public class McBasicCmtyController extends BaseController {
237 215  
238 216 @RequirePermission("schsf:mcBasicCmty:summaryExport")
239 217 @PostMapping("/summaryExport")
240   - public void summaryExport(@RequestBody McBasicCmtyVo mcBasicCmtyVo,HttpServletResponse response) throws IOException {
  218 + public void summaryExport(@RequestBody McBasicCmtyVo mcBasicCmtyVo, HttpServletResponse response) throws IOException {
241 219 List<McBasicCmty> list = mcBasicCmtyService.selectMcBasicCmtySummaryList(mcBasicCmtyVo);
242 220 try {
243 221 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
... ... @@ -261,5 +239,4 @@ public class McBasicCmtyController extends BaseController {
261 239 }
262 240  
263 241  
264   -
265 242 }
... ...
zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/controller/McBasicMoneyController.java
... ... @@ -5,7 +5,9 @@ import com.alibaba.excel.util.MapUtils;
5 5 import com.alibaba.fastjson2.JSON;
6 6 import com.alibaba.nacos.common.utils.CollectionUtils;
7 7 import com.chinagas.common.core.domain.AjaxResult;
  8 +import com.chinagas.common.core.exceptions.ServiceException;
8 9 import com.chinagas.common.core.web.controller.BaseController;
  10 +import com.chinagas.common.core.web.domain.BaseEntity;
9 11 import com.chinagas.common.core.web.page.TableDataInfo;
10 12 import com.chinagas.common.log.annotation.Log;
11 13 import com.chinagas.common.log.enums.BusinessType;
... ... @@ -15,6 +17,7 @@ import com.chinagas.modules.schsf.domain.McBasicCmty;
15 17 import com.chinagas.modules.schsf.domain.McBasicMoney;
16 18 import com.chinagas.modules.schsf.domain.vo.McBasicCmtyVo;
17 19 import com.chinagas.modules.schsf.domain.vo.McBasicMoneyVo;
  20 +import com.chinagas.modules.schsf.service.ICommonService;
18 21 import com.chinagas.modules.schsf.service.IMcBasicMoneyService;
19 22 import com.chinagas.modules.schsf.utils.listener.McBasicMoneyImportInspection;
20 23 import lombok.extern.slf4j.Slf4j;
... ... @@ -28,6 +31,7 @@ import java.io.IOException;
28 31 import java.io.InputStream;
29 32 import java.net.URLEncoder;
30 33 import java.sql.SQLIntegrityConstraintViolationException;
  34 +import java.util.HashMap;
31 35 import java.util.List;
32 36 import java.util.Map;
33 37  
... ... @@ -44,6 +48,9 @@ import java.util.Map;
44 48 public class McBasicMoneyController extends BaseController {
45 49 @Autowired
46 50 private IMcBasicMoneyService mcBasicMoneyService;
  51 + @Autowired
  52 + private ICommonService commonService;
  53 +
47 54  
48 55 /**
49 56 * 查询基础数据-金额列表
... ... @@ -88,41 +95,29 @@ public class McBasicMoneyController extends BaseController {
88 95 .headRowNumber(4) // 列表头行数,1代表列表头有1行,第二行开始为数据行
89 96 .doReadSync(); // 开始读Excel,返回一个List<T>集合,继续后续入库操作
90 97 log.info("导入基础数据-金额总条数:{}", list == null ? 0 : list.size());
  98 + List<HashMap<String, String>> userSysDeptAll = commonService.selectUserSysDeptAll(new BaseEntity());
91 99  
92   -// // 检验重复数据
93   -// Map<String, List<McBasicMoney>> collect = list.stream().collect(Collectors.groupingBy(o ->
94   -// o.getRegionName() +
95   -// o.getGroupName() +
96   -// o.getCompanyName() +
97   -// o.getCompanyCode()
98   -// + o.getFiscalYear()
99   -// + o.getProvince()
100   -// + o.getCity()
101   -// + o.getDistrict()
102   -// + o.getStreet()
103   -// + o.getVlgOrCmty()
104   -// ));
105   -// Set<String> strings = collect.keySet();
106   -// if (strings.size() < list.size()) {
107   -// throw new RuntimeException("表格中存在重复的数据");
108   -// }
109 100 long startTime = System.currentTimeMillis(); // 记录任务开始时间
110 101 // 插入数据库
111   - if (CollectionUtils.isNotEmpty(list)) {
112   -// Runnable task = () -> {
113   - for (McBasicMoney mcBasicCmty : list) {
114   - mcBasicMoneyService.insertMcBasicMoney(mcBasicCmty);
  102 + if (CollectionUtils.isNotEmpty(list) && CollectionUtils.isNotEmpty(userSysDeptAll)) {
  103 + // 使用 Map 来存储 companyCode 及其对应的部门信息
  104 + Map<String, HashMap<String, String>> deptMap = new HashMap<>();
  105 + for (HashMap<String, String> dept : userSysDeptAll) {
  106 + String companyCode = String.valueOf(dept.get("deptId"));
  107 + if (companyCode != null) {
  108 + deptMap.put(companyCode, dept);
115 109 }
116   -// };
117   -// Thread backgroundThread = new Thread(task, "后台插入任务线程");
118   -// backgroundThread.setDaemon(true); // 设置为守护线程,随主线程结束而结束
119   -// backgroundThread.start();
120   -// try {
121   -// backgroundThread.join(); // 等待线程执行完毕,确保能准确计算运行时长
122   -// } catch (InterruptedException e) {
123   -// Thread.currentThread().interrupt(); // 恢复中断状态
124   -// log.error("导入基础数据-户数,等待线程执行完毕时被中断", e);
125   -// }
  110 + }
  111 + for (McBasicMoney mcBasicCmty : list) {
  112 + String companyCode = mcBasicCmty.getCompanyCode();
  113 + if (!deptMap.containsKey(companyCode)) {
  114 + throw new ServiceException("导入项目公司错误,请检查!");
  115 + }
  116 + }
  117 + // 插入数据库
  118 + for (McBasicMoney mcBasicCmty : list) {
  119 + mcBasicMoneyService.insertMcBasicMoney(mcBasicCmty);
  120 + }
126 121 }
127 122 long endTime = System.currentTimeMillis(); // 记录任务结束时间
128 123 long duration = endTime - startTime; // 计算任务运行时长
... ... @@ -137,12 +132,12 @@ public class McBasicMoneyController extends BaseController {
137 132 /**
138 133 * 导出基础数据-金额列表模板
139 134 */
140   - @RequirePermission(value = {"schsf:mcBasicMoney:exportTemplate","schsf:mcBasicMoney:importData"}, logical = Logical.OR)
  135 + @RequirePermission(value = {"schsf:mcBasicMoney:exportTemplate", "schsf:mcBasicMoney:importData"}, logical = Logical.OR)
141 136 @Log(title = "基础数据-金额", businessType = BusinessType.EXPORT)
142 137 @PostMapping("/exportTemplate")
143 138 public void exportTemplate(HttpServletResponse response) throws IOException {
144 139 startPage();
145   - McBasicMoneyVo mcBasicMoneyVo =new McBasicMoneyVo();
  140 + McBasicMoneyVo mcBasicMoneyVo = new McBasicMoneyVo();
146 141 mcBasicMoneyVo.setDefFlag("0");
147 142 List<McBasicMoney> list = mcBasicMoneyService.selectMcBasicMoneyList(mcBasicMoneyVo);
148 143 try {
... ... @@ -168,7 +163,6 @@ public class McBasicMoneyController extends BaseController {
168 163 }
169 164  
170 165  
171   -
172 166 @RequirePermission("schsf:mcBasicMoney:summaryList")
173 167 @GetMapping("/summaryList")
174 168 public TableDataInfo summaryList(McBasicMoneyVo mcBasicMoneyVo) {
... ... @@ -206,7 +200,4 @@ public class McBasicMoneyController extends BaseController {
206 200 }
207 201  
208 202  
209   -
210   -
211   -
212 203 }
... ...
zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/mapper/CommonMapper.java
1 1 package com.chinagas.modules.schsf.mapper;
2 2  
  3 +import com.chinagas.common.core.web.domain.BaseEntity;
3 4 import org.apache.ibatis.annotations.Param;
4 5  
5 6 import java.util.HashMap;
  7 +import java.util.List;
6 8  
7 9 public interface CommonMapper {
8 10 HashMap<String, String> selectSysDeptByidName(@Param("deptId") String deptId,@Param("deptName") String deptName);
9 11  
10 12  
  13 + List<HashMap<String, String>> selectUserSysDeptAll(BaseEntity baseEntity);
  14 +
  15 +
11 16 }
... ...
zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/ICommonService.java
1 1 package com.chinagas.modules.schsf.service;
2 2  
  3 +import com.chinagas.common.core.web.domain.BaseEntity;
  4 +
3 5 import java.util.HashMap;
  6 +import java.util.List;
4 7  
5 8 public interface ICommonService {
6 9  
7 10 HashMap<String, String> selectSysDeptByidName(String companyCode, String companyName);
8 11  
9 12  
  13 + List<HashMap<String, String>> selectUserSysDeptAll(BaseEntity baseEntity);
  14 +
10 15 }
... ...
zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/impl/CommonService.java
1 1 package com.chinagas.modules.schsf.service.impl;
2 2  
  3 +import com.chinagas.common.core.web.domain.BaseEntity;
  4 +import com.chinagas.common.datascope.annotation.DataScope;
3 5 import com.chinagas.modules.schsf.mapper.CommonMapper;
4 6 import com.chinagas.modules.schsf.service.ICommonService;
5 7 import lombok.extern.slf4j.Slf4j;
... ... @@ -7,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired;
7 9 import org.springframework.stereotype.Service;
8 10  
9 11 import java.util.HashMap;
  12 +import java.util.List;
10 13  
11 14 @Slf4j
12 15 @Service
... ... @@ -18,4 +21,9 @@ public class CommonService implements ICommonService {
18 21 public HashMap<String, String> selectSysDeptByidName(String deptId, String deptName) {
19 22 return commonMapper.selectSysDeptByidName(deptId,deptName);
20 23 }
  24 + @DataScope(deptAlias = "d")
  25 + @Override
  26 + public List<HashMap<String, String>> selectUserSysDeptAll(BaseEntity baseEntity) {
  27 + return commonMapper.selectUserSysDeptAll(baseEntity);
  28 + }
21 29 }
... ...
zr-cloud/zr-modules/zr-schsf/src/main/resources/mapper/CommonMapper.xml
... ... @@ -7,4 +7,11 @@
7 7 <select id="selectSysDeptByidName" resultType="java.util.HashMap" parameterType="java.lang.String">
8 8 SELECT dept_id,dept_name FROM sys_dept WHERE dept_id=#{deptId,jdbcType=VARCHAR} and dept_name=#{deptName,jdbcType=VARCHAR}
9 9 </select>
  10 +
  11 + <select id="selectUserSysDeptAll" resultType="java.util.HashMap" parameterType="com.chinagas.common.core.web.domain.BaseEntity">
  12 + SELECT d.dept_id as deptId,d.dept_name as deptName
  13 + FROM sys_dept d
  14 + where 1=1
  15 + ${params.dataScope}
  16 + </select>
10 17 </mapper>
... ...