Commit 772274e21ad8f5e89b47575e31634e344e3a7f17
1 parent
8337630f
Exists in
dev
导入基础数据,组织权限验证
Showing
6 changed files
with
73 additions
and
80 deletions
Show diff stats
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> | ... | ... |