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,7 +5,9 @@ import com.alibaba.excel.util.MapUtils;
5 import com.alibaba.fastjson2.JSON; 5 import com.alibaba.fastjson2.JSON;
6 import com.alibaba.nacos.common.utils.CollectionUtils; 6 import com.alibaba.nacos.common.utils.CollectionUtils;
7 import com.chinagas.common.core.domain.AjaxResult; 7 import com.chinagas.common.core.domain.AjaxResult;
  8 +import com.chinagas.common.core.exceptions.ServiceException;
8 import com.chinagas.common.core.web.controller.BaseController; 9 import com.chinagas.common.core.web.controller.BaseController;
  10 +import com.chinagas.common.core.web.domain.BaseEntity;
9 import com.chinagas.common.core.web.page.TableDataInfo; 11 import com.chinagas.common.core.web.page.TableDataInfo;
10 import com.chinagas.common.log.annotation.Log; 12 import com.chinagas.common.log.annotation.Log;
11 import com.chinagas.common.log.enums.BusinessType; 13 import com.chinagas.common.log.enums.BusinessType;
@@ -18,7 +20,6 @@ import com.chinagas.modules.schsf.service.ICommonService; @@ -18,7 +20,6 @@ import com.chinagas.modules.schsf.service.ICommonService;
18 import com.chinagas.modules.schsf.service.IMcBasicCmtyService; 20 import com.chinagas.modules.schsf.service.IMcBasicCmtyService;
19 import com.chinagas.modules.schsf.utils.listener.McBasicCmtyImportInspection; 21 import com.chinagas.modules.schsf.utils.listener.McBasicCmtyImportInspection;
20 import lombok.extern.slf4j.Slf4j; 22 import lombok.extern.slf4j.Slf4j;
21 -import org.apache.commons.lang3.StringUtils;  
22 import org.springframework.beans.factory.annotation.Autowired; 23 import org.springframework.beans.factory.annotation.Autowired;
23 import org.springframework.web.bind.annotation.*; 24 import org.springframework.web.bind.annotation.*;
24 import org.springframework.web.multipart.MultipartFile; 25 import org.springframework.web.multipart.MultipartFile;
@@ -27,12 +28,9 @@ import javax.servlet.http.HttpServletResponse; @@ -27,12 +28,9 @@ import javax.servlet.http.HttpServletResponse;
27 import java.io.IOException; 28 import java.io.IOException;
28 import java.io.InputStream; 29 import java.io.InputStream;
29 import java.net.URLEncoder; 30 import java.net.URLEncoder;
30 -import java.sql.SQLIntegrityConstraintViolationException;  
31 import java.util.HashMap; 31 import java.util.HashMap;
32 import java.util.List; 32 import java.util.List;
33 import java.util.Map; 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,8 +125,6 @@ public class McBasicCmtyController extends BaseController {
127 throw new RuntimeException("文件大小不得超过5M"); 125 throw new RuntimeException("文件大小不得超过5M");
128 } 126 }
129 try { 127 try {
130 -  
131 -  
132 // 获取文件的输入流 128 // 获取文件的输入流
133 InputStream inputStream = file.getInputStream(); 129 InputStream inputStream = file.getInputStream();
134 List<McBasicCmty> list = EasyExcel.read(inputStream) //调用read方法 130 List<McBasicCmty> list = EasyExcel.read(inputStream) //调用read方法
@@ -139,45 +135,27 @@ public class McBasicCmtyController extends BaseController { @@ -139,45 +135,27 @@ public class McBasicCmtyController extends BaseController {
139 .headRowNumber(4) // 列表头行数,1代表列表头有1行,第二行开始为数据行 135 .headRowNumber(4) // 列表头行数,1代表列表头有1行,第二行开始为数据行
140 .doReadSync(); // 开始读Excel,返回一个List<T>集合,继续后续入库操作 136 .doReadSync(); // 开始读Excel,返回一个List<T>集合,继续后续入库操作
141 log.info("导入基础数据-户数总条数:{}", list == null ? 0 : list.size()); 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 long startTime = System.currentTimeMillis(); // 记录任务开始时间 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 for (McBasicCmty mcBasicCmty : list) { 156 for (McBasicCmty mcBasicCmty : list) {
168 mcBasicCmtyService.insertMcBasicCmty(mcBasicCmty); 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 long endTime = System.currentTimeMillis(); // 记录任务结束时间 160 long endTime = System.currentTimeMillis(); // 记录任务结束时间
183 long duration = endTime - startTime; // 计算任务运行时长 161 long duration = endTime - startTime; // 计算任务运行时长
@@ -237,7 +215,7 @@ public class McBasicCmtyController extends BaseController { @@ -237,7 +215,7 @@ public class McBasicCmtyController extends BaseController {
237 215
238 @RequirePermission("schsf:mcBasicCmty:summaryExport") 216 @RequirePermission("schsf:mcBasicCmty:summaryExport")
239 @PostMapping("/summaryExport") 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 List<McBasicCmty> list = mcBasicCmtyService.selectMcBasicCmtySummaryList(mcBasicCmtyVo); 219 List<McBasicCmty> list = mcBasicCmtyService.selectMcBasicCmtySummaryList(mcBasicCmtyVo);
242 try { 220 try {
243 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); 221 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
@@ -261,5 +239,4 @@ public class McBasicCmtyController extends BaseController { @@ -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,7 +5,9 @@ import com.alibaba.excel.util.MapUtils;
5 import com.alibaba.fastjson2.JSON; 5 import com.alibaba.fastjson2.JSON;
6 import com.alibaba.nacos.common.utils.CollectionUtils; 6 import com.alibaba.nacos.common.utils.CollectionUtils;
7 import com.chinagas.common.core.domain.AjaxResult; 7 import com.chinagas.common.core.domain.AjaxResult;
  8 +import com.chinagas.common.core.exceptions.ServiceException;
8 import com.chinagas.common.core.web.controller.BaseController; 9 import com.chinagas.common.core.web.controller.BaseController;
  10 +import com.chinagas.common.core.web.domain.BaseEntity;
9 import com.chinagas.common.core.web.page.TableDataInfo; 11 import com.chinagas.common.core.web.page.TableDataInfo;
10 import com.chinagas.common.log.annotation.Log; 12 import com.chinagas.common.log.annotation.Log;
11 import com.chinagas.common.log.enums.BusinessType; 13 import com.chinagas.common.log.enums.BusinessType;
@@ -15,6 +17,7 @@ import com.chinagas.modules.schsf.domain.McBasicCmty; @@ -15,6 +17,7 @@ import com.chinagas.modules.schsf.domain.McBasicCmty;
15 import com.chinagas.modules.schsf.domain.McBasicMoney; 17 import com.chinagas.modules.schsf.domain.McBasicMoney;
16 import com.chinagas.modules.schsf.domain.vo.McBasicCmtyVo; 18 import com.chinagas.modules.schsf.domain.vo.McBasicCmtyVo;
17 import com.chinagas.modules.schsf.domain.vo.McBasicMoneyVo; 19 import com.chinagas.modules.schsf.domain.vo.McBasicMoneyVo;
  20 +import com.chinagas.modules.schsf.service.ICommonService;
18 import com.chinagas.modules.schsf.service.IMcBasicMoneyService; 21 import com.chinagas.modules.schsf.service.IMcBasicMoneyService;
19 import com.chinagas.modules.schsf.utils.listener.McBasicMoneyImportInspection; 22 import com.chinagas.modules.schsf.utils.listener.McBasicMoneyImportInspection;
20 import lombok.extern.slf4j.Slf4j; 23 import lombok.extern.slf4j.Slf4j;
@@ -28,6 +31,7 @@ import java.io.IOException; @@ -28,6 +31,7 @@ import java.io.IOException;
28 import java.io.InputStream; 31 import java.io.InputStream;
29 import java.net.URLEncoder; 32 import java.net.URLEncoder;
30 import java.sql.SQLIntegrityConstraintViolationException; 33 import java.sql.SQLIntegrityConstraintViolationException;
  34 +import java.util.HashMap;
31 import java.util.List; 35 import java.util.List;
32 import java.util.Map; 36 import java.util.Map;
33 37
@@ -44,6 +48,9 @@ import java.util.Map; @@ -44,6 +48,9 @@ import java.util.Map;
44 public class McBasicMoneyController extends BaseController { 48 public class McBasicMoneyController extends BaseController {
45 @Autowired 49 @Autowired
46 private IMcBasicMoneyService mcBasicMoneyService; 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,41 +95,29 @@ public class McBasicMoneyController extends BaseController {
88 .headRowNumber(4) // 列表头行数,1代表列表头有1行,第二行开始为数据行 95 .headRowNumber(4) // 列表头行数,1代表列表头有1行,第二行开始为数据行
89 .doReadSync(); // 开始读Excel,返回一个List<T>集合,继续后续入库操作 96 .doReadSync(); // 开始读Excel,返回一个List<T>集合,继续后续入库操作
90 log.info("导入基础数据-金额总条数:{}", list == null ? 0 : list.size()); 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 long startTime = System.currentTimeMillis(); // 记录任务开始时间 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 long endTime = System.currentTimeMillis(); // 记录任务结束时间 122 long endTime = System.currentTimeMillis(); // 记录任务结束时间
128 long duration = endTime - startTime; // 计算任务运行时长 123 long duration = endTime - startTime; // 计算任务运行时长
@@ -137,12 +132,12 @@ public class McBasicMoneyController extends BaseController { @@ -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 @Log(title = "基础数据-金额", businessType = BusinessType.EXPORT) 136 @Log(title = "基础数据-金额", businessType = BusinessType.EXPORT)
142 @PostMapping("/exportTemplate") 137 @PostMapping("/exportTemplate")
143 public void exportTemplate(HttpServletResponse response) throws IOException { 138 public void exportTemplate(HttpServletResponse response) throws IOException {
144 startPage(); 139 startPage();
145 - McBasicMoneyVo mcBasicMoneyVo =new McBasicMoneyVo(); 140 + McBasicMoneyVo mcBasicMoneyVo = new McBasicMoneyVo();
146 mcBasicMoneyVo.setDefFlag("0"); 141 mcBasicMoneyVo.setDefFlag("0");
147 List<McBasicMoney> list = mcBasicMoneyService.selectMcBasicMoneyList(mcBasicMoneyVo); 142 List<McBasicMoney> list = mcBasicMoneyService.selectMcBasicMoneyList(mcBasicMoneyVo);
148 try { 143 try {
@@ -168,7 +163,6 @@ public class McBasicMoneyController extends BaseController { @@ -168,7 +163,6 @@ public class McBasicMoneyController extends BaseController {
168 } 163 }
169 164
170 165
171 -  
172 @RequirePermission("schsf:mcBasicMoney:summaryList") 166 @RequirePermission("schsf:mcBasicMoney:summaryList")
173 @GetMapping("/summaryList") 167 @GetMapping("/summaryList")
174 public TableDataInfo summaryList(McBasicMoneyVo mcBasicMoneyVo) { 168 public TableDataInfo summaryList(McBasicMoneyVo mcBasicMoneyVo) {
@@ -206,7 +200,4 @@ public class McBasicMoneyController extends BaseController { @@ -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 package com.chinagas.modules.schsf.mapper; 1 package com.chinagas.modules.schsf.mapper;
2 2
  3 +import com.chinagas.common.core.web.domain.BaseEntity;
3 import org.apache.ibatis.annotations.Param; 4 import org.apache.ibatis.annotations.Param;
4 5
5 import java.util.HashMap; 6 import java.util.HashMap;
  7 +import java.util.List;
6 8
7 public interface CommonMapper { 9 public interface CommonMapper {
8 HashMap<String, String> selectSysDeptByidName(@Param("deptId") String deptId,@Param("deptName") String deptName); 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 package com.chinagas.modules.schsf.service; 1 package com.chinagas.modules.schsf.service;
2 2
  3 +import com.chinagas.common.core.web.domain.BaseEntity;
  4 +
3 import java.util.HashMap; 5 import java.util.HashMap;
  6 +import java.util.List;
4 7
5 public interface ICommonService { 8 public interface ICommonService {
6 9
7 HashMap<String, String> selectSysDeptByidName(String companyCode, String companyName); 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 package com.chinagas.modules.schsf.service.impl; 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 import com.chinagas.modules.schsf.mapper.CommonMapper; 5 import com.chinagas.modules.schsf.mapper.CommonMapper;
4 import com.chinagas.modules.schsf.service.ICommonService; 6 import com.chinagas.modules.schsf.service.ICommonService;
5 import lombok.extern.slf4j.Slf4j; 7 import lombok.extern.slf4j.Slf4j;
@@ -7,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired; @@ -7,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.stereotype.Service; 9 import org.springframework.stereotype.Service;
8 10
9 import java.util.HashMap; 11 import java.util.HashMap;
  12 +import java.util.List;
10 13
11 @Slf4j 14 @Slf4j
12 @Service 15 @Service
@@ -18,4 +21,9 @@ public class CommonService implements ICommonService { @@ -18,4 +21,9 @@ public class CommonService implements ICommonService {
18 public HashMap<String, String> selectSysDeptByidName(String deptId, String deptName) { 21 public HashMap<String, String> selectSysDeptByidName(String deptId, String deptName) {
19 return commonMapper.selectSysDeptByidName(deptId,deptName); 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,4 +7,11 @@
7 <select id="selectSysDeptByidName" resultType="java.util.HashMap" parameterType="java.lang.String"> 7 <select id="selectSysDeptByidName" resultType="java.util.HashMap" parameterType="java.lang.String">
8 SELECT dept_id,dept_name FROM sys_dept WHERE dept_id=#{deptId,jdbcType=VARCHAR} and dept_name=#{deptName,jdbcType=VARCHAR} 8 SELECT dept_id,dept_name FROM sys_dept WHERE dept_id=#{deptId,jdbcType=VARCHAR} and dept_name=#{deptName,jdbcType=VARCHAR}
9 </select> 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 </mapper> 17 </mapper>