Commit 416e1e27f0845715d2f853e7bef70c257477361e
1 parent
106c9657
未检人员删除、源数据管理查看
Showing
14 changed files
with
687 additions
and
162 deletions
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/MinorController.java
@@ -3,6 +3,7 @@ package org.jeecg.modules.system.controller; | @@ -3,6 +3,7 @@ package org.jeecg.modules.system.controller; | ||
3 | import java.io.OutputStream; | 3 | import java.io.OutputStream; |
4 | import java.io.UnsupportedEncodingException; | 4 | import java.io.UnsupportedEncodingException; |
5 | import java.io.IOException; | 5 | import java.io.IOException; |
6 | +import java.lang.reflect.Field; | ||
6 | import java.net.URLDecoder; | 7 | import java.net.URLDecoder; |
7 | import java.util.*; | 8 | import java.util.*; |
8 | import java.util.stream.Collectors; | 9 | import java.util.stream.Collectors; |
@@ -10,28 +11,44 @@ import java.util.stream.Collectors; | @@ -10,28 +11,44 @@ import java.util.stream.Collectors; | ||
10 | import javax.servlet.http.HttpServletRequest; | 11 | import javax.servlet.http.HttpServletRequest; |
11 | import javax.servlet.http.HttpServletResponse; | 12 | import javax.servlet.http.HttpServletResponse; |
12 | 13 | ||
13 | -import org.apache.poi.ss.usermodel.Workbook; | 14 | +import com.alibaba.fastjson.JSONObject; |
15 | +import org.apache.commons.lang3.StringUtils; | ||
16 | +import org.apache.poi.ss.formula.functions.T; | ||
17 | +import org.apache.poi.ss.usermodel.*; | ||
14 | import org.jeecg.modules.system.entity.Family; | 18 | import org.jeecg.modules.system.entity.Family; |
15 | import org.jeecg.modules.system.entity.Minor; | 19 | import org.jeecg.modules.system.entity.Minor; |
20 | +import org.jeecg.modules.system.entity.SysDepart; | ||
16 | import org.jeecg.modules.system.entity.SysUser; | 21 | import org.jeecg.modules.system.entity.SysUser; |
17 | import org.jeecg.modules.system.service.IFamilyService; | 22 | import org.jeecg.modules.system.service.IFamilyService; |
18 | import org.jeecg.modules.system.service.IMinorService; | 23 | import org.jeecg.modules.system.service.IMinorService; |
24 | +import org.jeecg.modules.system.service.ISysDepartService; | ||
25 | +import org.jeecg.modules.system.util.ExcelImportServiceUtil; | ||
19 | import org.jeecg.modules.system.vo.MinorPage; | 26 | import org.jeecg.modules.system.vo.MinorPage; |
20 | import org.jeecg.modules.system.vo.MinorVo; | 27 | import org.jeecg.modules.system.vo.MinorVo; |
21 | import org.jeecgframework.poi.excel.ExcelExportUtil; | 28 | import org.jeecgframework.poi.excel.ExcelExportUtil; |
22 | import org.jeecgframework.poi.excel.ExcelImportUtil; | 29 | import org.jeecgframework.poi.excel.ExcelImportUtil; |
30 | +import org.jeecgframework.poi.excel.annotation.ExcelTarget; | ||
23 | import org.jeecgframework.poi.excel.def.NormalExcelConstants; | 31 | import org.jeecgframework.poi.excel.def.NormalExcelConstants; |
24 | import org.jeecgframework.poi.excel.entity.ExportParams; | 32 | import org.jeecgframework.poi.excel.entity.ExportParams; |
25 | import org.jeecgframework.poi.excel.entity.ImportParams; | 33 | import org.jeecgframework.poi.excel.entity.ImportParams; |
26 | import org.jeecgframework.poi.excel.entity.enmus.ExcelType; | 34 | import org.jeecgframework.poi.excel.entity.enmus.ExcelType; |
35 | +import org.jeecgframework.poi.excel.entity.params.ExcelCollectionParams; | ||
36 | +import org.jeecgframework.poi.excel.entity.params.ExcelImportEntity; | ||
37 | +import org.jeecgframework.poi.excel.entity.result.ExcelImportResult; | ||
38 | +import org.jeecgframework.poi.excel.imports.ExcelImportServer; | ||
39 | +import org.jeecgframework.poi.excel.imports.base.ImportBaseService; | ||
27 | import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; | 40 | import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; |
28 | import org.jeecg.common.system.vo.LoginUser; | 41 | import org.jeecg.common.system.vo.LoginUser; |
29 | import org.apache.shiro.SecurityUtils; | 42 | import org.apache.shiro.SecurityUtils; |
30 | import org.jeecg.common.api.vo.Result; | 43 | import org.jeecg.common.api.vo.Result; |
31 | import org.jeecg.common.system.query.QueryGenerator; | 44 | import org.jeecg.common.system.query.QueryGenerator; |
32 | import org.jeecg.common.util.oConvertUtils; | 45 | import org.jeecg.common.util.oConvertUtils; |
46 | +import org.jeecgframework.poi.exception.excel.ExcelImportException; | ||
47 | +import org.jeecgframework.poi.exception.excel.enums.ExcelImportEnum; | ||
48 | +import org.jeecgframework.poi.util.PoiPublicUtil; | ||
33 | import org.springframework.beans.BeanUtils; | 49 | import org.springframework.beans.BeanUtils; |
34 | import org.springframework.beans.factory.annotation.Autowired; | 50 | import org.springframework.beans.factory.annotation.Autowired; |
51 | +import org.springframework.beans.factory.annotation.Value; | ||
35 | import org.springframework.web.bind.annotation.*; | 52 | import org.springframework.web.bind.annotation.*; |
36 | import org.springframework.web.servlet.ModelAndView; | 53 | import org.springframework.web.servlet.ModelAndView; |
37 | import org.springframework.web.multipart.MultipartFile; | 54 | import org.springframework.web.multipart.MultipartFile; |
@@ -60,6 +77,11 @@ public class MinorController { | @@ -60,6 +77,11 @@ public class MinorController { | ||
60 | private IMinorService minorService; | 77 | private IMinorService minorService; |
61 | @Autowired | 78 | @Autowired |
62 | private IFamilyService familyService; | 79 | private IFamilyService familyService; |
80 | + @Autowired | ||
81 | + private ISysDepartService sysDepartService; | ||
82 | + | ||
83 | + @Value("${jeecg.path.upload}") | ||
84 | + private String upLoadPath; | ||
63 | 85 | ||
64 | /** | 86 | /** |
65 | * 分页列表查询 | 87 | * 分页列表查询 |
@@ -80,8 +102,12 @@ public class MinorController { | @@ -80,8 +102,12 @@ public class MinorController { | ||
80 | QueryWrapper<Minor> queryWrapper = QueryGenerator.initQueryWrapper(minor, req.getParameterMap()); | 102 | QueryWrapper<Minor> queryWrapper = QueryGenerator.initQueryWrapper(minor, req.getParameterMap()); |
81 | Page<Minor> page = new Page<Minor>(pageNo, pageSize); | 103 | Page<Minor> page = new Page<Minor>(pageNo, pageSize); |
82 | // IPage<Minor> pageList = minorService.page(page, queryWrapper); | 104 | // IPage<Minor> pageList = minorService.page(page, queryWrapper); |
83 | - | ||
84 | - IPage<Minor> pageList = minorService.queryPageList(page,minor.getName()); | 105 | + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); |
106 | + String sysOrgCode=""; | ||
107 | + if(oConvertUtils.isNotEmpty(sysUser) && oConvertUtils.isNotEmpty(sysUser.getOrgCode())){ | ||
108 | + sysOrgCode=sysUser.getOrgCode(); | ||
109 | + } | ||
110 | + IPage<Minor> pageList = minorService.queryPageList(page,minor.getName(),sysOrgCode); | ||
85 | return Result.OK(pageList); | 111 | return Result.OK(pageList); |
86 | } | 112 | } |
87 | 113 | ||
@@ -189,113 +215,52 @@ public class MinorController { | @@ -189,113 +215,52 @@ public class MinorController { | ||
189 | */ | 215 | */ |
190 | @RequestMapping(value = "/exportXls") | 216 | @RequestMapping(value = "/exportXls") |
191 | public ModelAndView exportXls(HttpServletRequest request, Minor minor) { | 217 | public ModelAndView exportXls(HttpServletRequest request, Minor minor) { |
192 | - // Step.1 组装查询条件查询数据 | ||
193 | - QueryWrapper<Minor> queryWrapper = QueryGenerator.initQueryWrapper(minor, request.getParameterMap()); | ||
194 | - LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); | ||
195 | - | ||
196 | - //Step.2 获取导出数据 | ||
197 | - List<Minor> queryList = minorService.list(queryWrapper); | ||
198 | - // 过滤选中数据 | ||
199 | - String selections = request.getParameter("selections"); | ||
200 | - List<Minor> minorList = new ArrayList<Minor>(); | ||
201 | - if(oConvertUtils.isEmpty(selections)) { | ||
202 | - minorList = queryList; | ||
203 | - }else { | ||
204 | - List<String> selectionList = Arrays.asList(selections.split(",")); | ||
205 | - minorList = queryList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); | ||
206 | - } | ||
207 | - // Step.3 组装pageList | ||
208 | - List<MinorPage> pageList = new ArrayList<MinorPage>(); | ||
209 | - for (Minor main : minorList) { | ||
210 | - MinorPage vo = new MinorPage(); | ||
211 | - BeanUtils.copyProperties(main, vo); | ||
212 | - List<Family> familyList = familyService.selectByHouseholdNum(main.getHouseholdNum()); | ||
213 | - vo.setFamilyList(familyList); | ||
214 | - pageList.add(vo); | ||
215 | - } | ||
216 | - | ||
217 | - // Step.4 AutoPoi 导出Excel | ||
218 | - ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); | ||
219 | - mv.addObject(NormalExcelConstants.FILE_NAME, "未成年人列表"); | ||
220 | - mv.addObject(NormalExcelConstants.CLASS, MinorPage.class); | ||
221 | - mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("未成年人数据", "导出人:"+sysUser.getRealname(), "未成年人")); | ||
222 | - mv.addObject(NormalExcelConstants.DATA_LIST, pageList); | ||
223 | - return mv; | 218 | + // Step.1 组装查询条件查询数据 |
219 | + Page<Minor> page = new Page<Minor>(1, 1); | ||
220 | + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); | ||
221 | + String sysOrgCode=""; | ||
222 | + if(oConvertUtils.isNotEmpty(sysUser) && oConvertUtils.isNotEmpty(sysUser.getOrgCode())){ | ||
223 | + sysOrgCode=sysUser.getOrgCode(); | ||
224 | + } | ||
225 | + IPage<Minor> pageList = minorService.queryPageList(page,minor.getName(),sysOrgCode); | ||
226 | + //Step.2 获取导出数据 | ||
227 | + List<Minor> queryList = pageList.getRecords(); | ||
228 | + // 过滤选中数据 | ||
229 | + String selections = request.getParameter("selections"); | ||
230 | + List<Minor> minorList = new ArrayList<Minor>(); | ||
231 | + if (oConvertUtils.isEmpty(selections)) { | ||
232 | + minorList = queryList; | ||
233 | + } else { | ||
234 | + List<String> selectionList = Arrays.asList(selections.split(",")); | ||
235 | + minorList = queryList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); | ||
236 | + } | ||
237 | + List<Family> familyList = new ArrayList<>(); | ||
238 | + for (Minor main : minorList) { | ||
239 | + familyList = familyService.selectByHouseholdNum(main.getHouseholdNum()); | ||
240 | + } | ||
241 | + // Step.3 多sheet处理 | ||
242 | + List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>(); | ||
243 | + Map<String, Object> minorMap = new HashMap<String, Object>(); | ||
244 | + ExportParams minorExportParams=new ExportParams( "未成年人信息", "导出人:" + sysUser.getRealname(), "未成年人信息",upLoadPath); | ||
245 | + minorExportParams.setType(ExcelType.XSSF); | ||
246 | + minorMap.put(NormalExcelConstants.PARAMS,minorExportParams);//表格Title | ||
247 | + minorMap.put(NormalExcelConstants.CLASS,Minor.class);//表格对应实体 | ||
248 | + minorMap.put(NormalExcelConstants.DATA_LIST, minorList);//数据集合 | ||
249 | + listMap.add(minorMap); | ||
250 | + Map<String, Object> familyMap = new HashMap<String, Object>(); | ||
251 | + ExportParams familyExportParams=new ExportParams( "家庭成员信息", "导出人:" + sysUser.getRealname(), "家庭成员信息",upLoadPath); | ||
252 | + familyExportParams.setType(ExcelType.XSSF); | ||
253 | + familyMap.put(NormalExcelConstants.PARAMS,familyExportParams);//表格Title | ||
254 | + familyMap.put(NormalExcelConstants.CLASS,Family.class);//表格对应实体 | ||
255 | + familyMap.put(NormalExcelConstants.DATA_LIST, familyList);//数据集合 | ||
256 | + listMap.add(familyMap); | ||
257 | + // Step.4 AutoPoi 导出Excel | ||
258 | + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); | ||
259 | + mv.addObject(NormalExcelConstants.FILE_NAME, "未成年人信息"); //此处设置的filename无效 ,前端会重更新设置一下 | ||
260 | + mv.addObject(NormalExcelConstants.MAP_LIST, listMap); | ||
261 | + return mv; | ||
224 | } | 262 | } |
225 | 263 | ||
226 | -// /** | ||
227 | -// * 导出excel | ||
228 | -// * | ||
229 | -// * @param request | ||
230 | -// * @param minor | ||
231 | -// */ | ||
232 | -// @RequestMapping(value = "/exportXls") | ||
233 | -// public void exportXls(HttpServletRequest request, Minor minor, HttpServletResponse response) throws IOException { | ||
234 | -// | ||
235 | -// OutputStream outputStream = response.getOutputStream(); | ||
236 | -// // Step.1 组装查询条件查询数据 | ||
237 | -// QueryWrapper<Minor> queryWrapper = QueryGenerator.initQueryWrapper(minor, request.getParameterMap()); | ||
238 | -// LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); | ||
239 | -// queryWrapper.last("limit 1"); | ||
240 | -// //Step.2 获取导出数据 | ||
241 | -// List<Minor> queryList = minorService.list(queryWrapper); | ||
242 | -// // 过滤选中数据 | ||
243 | -// String selections = request.getParameter("selections"); | ||
244 | -// List<Minor> minorList = new ArrayList<Minor>(); | ||
245 | -// if (oConvertUtils.isEmpty(selections)) { | ||
246 | -// minorList = queryList; | ||
247 | -// } else { | ||
248 | -// List<String> selectionList = Arrays.asList(selections.split(",")); | ||
249 | -// minorList = queryList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); | ||
250 | -// } | ||
251 | -// // Step.3 组装pageList | ||
252 | -// List<MinorPage> pageList = new ArrayList<MinorPage>(); | ||
253 | -// List<Family> familyList = new ArrayList<>(); | ||
254 | -// for (Minor main : minorList) { | ||
255 | -// familyList = familyService.selectByHouseholdNum(main.getHouseholdNum()); | ||
256 | -// } | ||
257 | -// //多个map,对应了多个sheet | ||
258 | -// List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>(); | ||
259 | -// Map<String, Object> minorMap = new HashMap<String, Object>(); | ||
260 | -// minorMap.put("title", getExportParams("未成年人表"));//表格title | ||
261 | -// minorMap.put("entity", Minor.class);//表格对应实体 | ||
262 | -// //数据封装方式二:实体类 | ||
263 | -// minorMap.put("data", minorList); | ||
264 | -// listMap.add(minorMap); | ||
265 | -// Map<String, Object> familyMap = new HashMap<String, Object>(); | ||
266 | -// familyMap.put("title", getExportParams("家庭成员表"));//表格title | ||
267 | -// familyMap.put("entity", Family.class);//表格对应实体 | ||
268 | -// //数据封装方式二:实体类 | ||
269 | -// familyMap.put("data", familyList); | ||
270 | -// listMap.add(familyMap); | ||
271 | -// try { | ||
272 | -// Workbook wb = ExcelExportUtil.exportExcel(listMap, ExcelType.XSSF); | ||
273 | -// response.reset(); | ||
274 | -// response.setHeader("Content-disposition", "attachment; filename=details.xls"); | ||
275 | -// response.setContentType("application/msexcel"); | ||
276 | -// wb.write(outputStream); | ||
277 | -// outputStream.close(); | ||
278 | -// } catch (IOException e) { | ||
279 | -// log.error("模板下载失败" + e.getMessage()); | ||
280 | -// response.setStatus(404); | ||
281 | -// e.printStackTrace(); | ||
282 | -// } finally { | ||
283 | -// if (outputStream != null) { | ||
284 | -// try { | ||
285 | -// outputStream.close(); | ||
286 | -// } catch (IOException e) { | ||
287 | -// log.error(e.getMessage(), e); | ||
288 | -// } | ||
289 | -// } | ||
290 | -// } | ||
291 | -// } | ||
292 | - | ||
293 | - //导出参数 | ||
294 | - public static ExportParams getExportParams(String name) { | ||
295 | - //表格名称,sheet名称,导出版本 | ||
296 | - return new ExportParams(name, name, ExcelType.XSSF); | ||
297 | - } | ||
298 | - | ||
299 | /** | 264 | /** |
300 | * 通过excel导入数据 | 265 | * 通过excel导入数据 |
301 | * | 266 | * |
@@ -306,6 +271,11 @@ public class MinorController { | @@ -306,6 +271,11 @@ public class MinorController { | ||
306 | @RequestMapping(value = "/importExcel", method = RequestMethod.POST) | 271 | @RequestMapping(value = "/importExcel", method = RequestMethod.POST) |
307 | public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { | 272 | public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { |
308 | MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; | 273 | MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; |
274 | + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); | ||
275 | + String sysOrgCode=""; | ||
276 | + if(oConvertUtils.isNotEmpty(sysUser) && oConvertUtils.isNotEmpty(sysUser.getOrgCode())){ | ||
277 | + sysOrgCode=sysUser.getOrgCode(); | ||
278 | + } | ||
309 | Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); | 279 | Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); |
310 | for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { | 280 | for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { |
311 | MultipartFile file = entity.getValue();// 获取上传文件对象 | 281 | MultipartFile file = entity.getValue();// 获取上传文件对象 |
@@ -314,25 +284,42 @@ public class MinorController { | @@ -314,25 +284,42 @@ public class MinorController { | ||
314 | params.setHeadRows(1); | 284 | params.setHeadRows(1); |
315 | params.setNeedSave(true); | 285 | params.setNeedSave(true); |
316 | try { | 286 | try { |
317 | - List<MinorPage> list = ExcelImportUtil.importExcel(file.getInputStream(), MinorPage.class, params); | ||
318 | - for (MinorPage page : list) { | ||
319 | - Minor po = new Minor(); | ||
320 | - BeanUtils.copyProperties(page, po); | ||
321 | - minorService.saveMain(po, page.getFamilyList()); | 287 | + ExcelImportResult<MinorPage> excelImportResult = ExcelImportUtil.importExcelVerify(file.getInputStream(), Minor.class, params); |
288 | + List<MinorPage> minorList = new ArrayList<>(); | ||
289 | + Workbook workbook = excelImportResult.getWorkbook(); | ||
290 | + Map pictures=new HashMap<>(); | ||
291 | + //获取Excel文档中的第一个表单 | ||
292 | + Sheet sht0 = workbook.getSheetAt(0); | ||
293 | + List<Minor> minorPages=new ExcelImportServiceUtil().importExcel(new ArrayList<>(),sht0, Minor.class, params,pictures); | ||
294 | + if(oConvertUtils.isNotEmpty(minorPages) && oConvertUtils.isNotEmpty(sysOrgCode)){ | ||
295 | + String finalSysOrgCode = sysOrgCode; | ||
296 | + minorPages.stream().forEach(minor -> { | ||
297 | + minor.setSysOrgCode(finalSysOrgCode); | ||
298 | + }); | ||
299 | + } | ||
300 | + //获取Excel文档中的第二个表单 | ||
301 | + Sheet sht1 = workbook.getSheetAt(1); | ||
302 | + List<Family> families=new ExcelImportServiceUtil().importExcel(new ArrayList<>(),sht1, Family.class, params,pictures); | ||
303 | + if(oConvertUtils.isNotEmpty(families) && oConvertUtils.isNotEmpty(sysOrgCode)){ | ||
304 | + String finalSysOrgCode = sysOrgCode; | ||
305 | + minorPages.stream().forEach(family -> { | ||
306 | + family.setSysOrgCode(finalSysOrgCode); | ||
307 | + }); | ||
322 | } | 308 | } |
323 | - return Result.OK("文件导入成功!数据行数:" + list.size()); | 309 | + minorService.saveMain(minorPages,families); |
310 | + return Result.OK(); | ||
324 | } catch (Exception e) { | 311 | } catch (Exception e) { |
325 | log.error(e.getMessage(), e); | 312 | log.error(e.getMessage(), e); |
326 | - return Result.error("文件导入失败:" + e.getMessage()); | 313 | + return Result.error("文件导入失败:" + e.getMessage()); |
327 | } finally { | 314 | } finally { |
328 | try { | 315 | try { |
329 | file.getInputStream().close(); | 316 | file.getInputStream().close(); |
330 | - } catch (IOException e) { | 317 | + } catch (Exception e) { |
331 | e.printStackTrace(); | 318 | e.printStackTrace(); |
332 | } | 319 | } |
333 | } | 320 | } |
334 | } | 321 | } |
335 | - return Result.OK("文件导入失败!"); | 322 | + return Result.error("文件导入失败!"); |
336 | } | 323 | } |
337 | - | ||
338 | } | 324 | } |
325 | + |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/FamilyMapper.java
@@ -15,7 +15,7 @@ import java.util.Set; | @@ -15,7 +15,7 @@ import java.util.Set; | ||
15 | */ | 15 | */ |
16 | public interface FamilyMapper extends BaseMapper<Family> { | 16 | public interface FamilyMapper extends BaseMapper<Family> { |
17 | 17 | ||
18 | - public boolean deleteByMainId(@Param("mainId") String mainId); | 18 | + public boolean deleteByHouseholdNum(@Param("householdNum") String householdNum); |
19 | 19 | ||
20 | public List<Family> selectByHouseholdNum(@Param("householdNum") String householdNum); | 20 | public List<Family> selectByHouseholdNum(@Param("householdNum") String householdNum); |
21 | 21 |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MinorMapper.java
@@ -26,7 +26,7 @@ public interface MinorMapper extends BaseMapper<Minor> { | @@ -26,7 +26,7 @@ public interface MinorMapper extends BaseMapper<Minor> { | ||
26 | * @param page | 26 | * @param page |
27 | * @return | 27 | * @return |
28 | */ | 28 | */ |
29 | - IPage<Minor> queryPageList(Page page,@Param("name") String name); | 29 | + IPage<Minor> queryPageList(Page page,@Param("name") String name,@Param("sysOrgCode") String sysOrgCode); |
30 | 30 | ||
31 | 31 | ||
32 | } | 32 | } |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/FamilyMapper.xml
@@ -2,11 +2,11 @@ | @@ -2,11 +2,11 @@ | ||
2 | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | 2 | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
3 | <mapper namespace="org.jeecg.modules.system.mapper.FamilyMapper"> | 3 | <mapper namespace="org.jeecg.modules.system.mapper.FamilyMapper"> |
4 | 4 | ||
5 | - <delete id="deleteByMainId" parameterType="java.lang.String"> | 5 | + <delete id="deleteByHouseholdNum" parameterType="java.lang.String"> |
6 | DELETE | 6 | DELETE |
7 | FROM mr_family | 7 | FROM mr_family |
8 | WHERE | 8 | WHERE |
9 | - minor_id = #{mainId} </delete> | 9 | + household_num = #{householdNum} </delete> |
10 | 10 | ||
11 | <select id="selectByHouseholdNum" parameterType="java.lang.String" resultType="org.jeecg.modules.system.entity.Family"> | 11 | <select id="selectByHouseholdNum" parameterType="java.lang.String" resultType="org.jeecg.modules.system.entity.Family"> |
12 | SELECT * | 12 | SELECT * |
@@ -22,10 +22,4 @@ | @@ -22,10 +22,4 @@ | ||
22 | </foreach> | 22 | </foreach> |
23 | </insert> | 23 | </insert> |
24 | 24 | ||
25 | -<!-- <insert id="insertBatch" >--> | ||
26 | -<!-- INSERT INTO mr_family (id, create_time, sys_org_code, household_num, number, name,identity, gender, relation, address,crime,reason, other)VALUES--> | ||
27 | -<!-- <foreach collection="list" item="b" separator=",">--> | ||
28 | -<!-- (#{b.id},#{b.createTime},#{b.sysOrgCode},#{b.householdNum},#{b.number},#{b.name},#{b.identity},#{b.gender},#{b.relation},#{b.address},#{b.crime},#{b.reason},#{b.other})--> | ||
29 | -<!-- </foreach>--> | ||
30 | -<!-- </insert>--> | ||
31 | </mapper> | 25 | </mapper> |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MinorMapper.xml
@@ -25,7 +25,7 @@ | @@ -25,7 +25,7 @@ | ||
25 | 25 | ||
26 | <insert id="insertBatch" > | 26 | <insert id="insertBatch" > |
27 | INSERT INTO mr_minor (id, create_time, sys_org_code, household_num, number, name,identity, gender, relation, address,guardian, | 27 | INSERT INTO mr_minor (id, create_time, sys_org_code, household_num, number, name,identity, gender, relation, address,guardian, |
28 | - school,schoolName, startYear,reason,specialReason,remark)VALUES | 28 | + school,school_name, start_year,reason,special_reason,remark)VALUES |
29 | <foreach collection="list" item="b" separator=","> | 29 | <foreach collection="list" item="b" separator=","> |
30 | (#{b.id},#{b.createTime},#{b.sysOrgCode},#{b.householdNum},#{b.number},#{b.name},#{b.identity},#{b.gender},#{b.relation},#{b.address},#{b.guardian}, | 30 | (#{b.id},#{b.createTime},#{b.sysOrgCode},#{b.householdNum},#{b.number},#{b.name},#{b.identity},#{b.gender},#{b.relation},#{b.address},#{b.guardian}, |
31 | #{b.school},#{b.schoolName},#{b.startYear},#{b.reason},#{b.specialReason},#{b.remark}) | 31 | #{b.school},#{b.schoolName},#{b.startYear},#{b.reason},#{b.specialReason},#{b.remark}) |
@@ -33,13 +33,17 @@ | @@ -33,13 +33,17 @@ | ||
33 | </insert> | 33 | </insert> |
34 | <!-- ORDER BY create_time desc LIMIT #{pageNum},#{pageSize}--> | 34 | <!-- ORDER BY create_time desc LIMIT #{pageNum},#{pageSize}--> |
35 | <select id="queryPageList" resultMap="minor"> | 35 | <select id="queryPageList" resultMap="minor"> |
36 | - select timestampdiff(year, substring(identity, 7, 8), now()) as age,identity,create_time as createTime,sys_org_code as sysOrgCode,household_num as householdNum, | 36 | + select id,timestampdiff(year, substring(identity, 7, 8), now()) as age,identity,create_time as createTime,sys_org_code as sysOrgCode,household_num as householdNum, |
37 | number,name,gender,school,school_name as schoolName,start_year as startYear,address,guardian,relation,reason,special_reason as specialReason,remark | 37 | number,name,gender,school,school_name as schoolName,start_year as startYear,address,guardian,relation,reason,special_reason as specialReason,remark |
38 | FROM mr_minor | 38 | FROM mr_minor |
39 | WHERE (timestampdiff(year, substring(identity, 7, 8), now())) < 18 | 39 | WHERE (timestampdiff(year, substring(identity, 7, 8), now())) < 18 |
40 | <if test="name!=null and name!=''"> | 40 | <if test="name!=null and name!=''"> |
41 | and name like concat('%',#{name},'%') | 41 | and name like concat('%',#{name},'%') |
42 | </if> | 42 | </if> |
43 | + <if test="sysOrgCode!=null and sysOrgCode!=''"> | ||
44 | + and sys_org_code like concat(#{sysOrgCode},'%') | ||
45 | + </if> | ||
46 | + ORDER BY create_time | ||
43 | </select> | 47 | </select> |
44 | 48 | ||
45 | </mapper> | 49 | </mapper> |
46 | \ No newline at end of file | 50 | \ No newline at end of file |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMinorService.java
@@ -45,5 +45,11 @@ public interface IMinorService extends IService<Minor> { | @@ -45,5 +45,11 @@ public interface IMinorService extends IService<Minor> { | ||
45 | 45 | ||
46 | public Integer insertBatch(List<Minor> list); | 46 | public Integer insertBatch(List<Minor> list); |
47 | 47 | ||
48 | - IPage<Minor> queryPageList(Page<Minor> page,String name); | 48 | + IPage<Minor> queryPageList(Page<Minor> page,String name,String sysOrgCode); |
49 | + | ||
50 | + /** | ||
51 | + * 添加多对多 | ||
52 | + * | ||
53 | + */ | ||
54 | + public void saveMain(List<Minor> minor,List<Family> familyList) ; | ||
49 | } | 55 | } |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MinorServiceImpl.java
@@ -67,13 +67,11 @@ public class MinorServiceImpl extends ServiceImpl<MinorMapper, Minor> implements | @@ -67,13 +67,11 @@ public class MinorServiceImpl extends ServiceImpl<MinorMapper, Minor> implements | ||
67 | falg = false; | 67 | falg = false; |
68 | } | 68 | } |
69 | //外键设置 | 69 | //外键设置 |
70 | - entity.setMinorId(minor.getId()); | ||
71 | familyMapper.insert(entity); | 70 | familyMapper.insert(entity); |
72 | } | 71 | } |
73 | if(!falg){ | 72 | if(!falg){ |
74 | Family family=new Family(); | 73 | Family family=new Family(); |
75 | family.setCrime(Family.IS_NOT_CRIME); | 74 | family.setCrime(Family.IS_NOT_CRIME); |
76 | - family.setMinorId(minor.getId()); | ||
77 | family.setName(minor.getName()); | 75 | family.setName(minor.getName()); |
78 | family.setHouseholdNum(minor.getHouseholdNum()); | 76 | family.setHouseholdNum(minor.getHouseholdNum()); |
79 | family.setIdentity(minor.getIdentity()); | 77 | family.setIdentity(minor.getIdentity()); |
@@ -91,7 +89,9 @@ public class MinorServiceImpl extends ServiceImpl<MinorMapper, Minor> implements | @@ -91,7 +89,9 @@ public class MinorServiceImpl extends ServiceImpl<MinorMapper, Minor> implements | ||
91 | minorMapper.updateById(minor); | 89 | minorMapper.updateById(minor); |
92 | 90 | ||
93 | //1.先删除子表数据 | 91 | //1.先删除子表数据 |
94 | - familyMapper.deleteByMainId(minor.getId()); | 92 | + if(oConvertUtils.isNotEmpty(minor) && oConvertUtils.isNotEmpty(minor.getHouseholdNum())){ |
93 | + familyMapper.deleteByHouseholdNum(minor.getHouseholdNum()); | ||
94 | + } | ||
95 | 95 | ||
96 | //2.子表数据重新插入 | 96 | //2.子表数据重新插入 |
97 | if(familyList!=null && familyList.size()>0) { | 97 | if(familyList!=null && familyList.size()>0) { |
@@ -108,7 +108,10 @@ public class MinorServiceImpl extends ServiceImpl<MinorMapper, Minor> implements | @@ -108,7 +108,10 @@ public class MinorServiceImpl extends ServiceImpl<MinorMapper, Minor> implements | ||
108 | @Override | 108 | @Override |
109 | @Transactional | 109 | @Transactional |
110 | public void delMain(String id) { | 110 | public void delMain(String id) { |
111 | - familyMapper.deleteByMainId(id); | 111 | + Minor minor=minorMapper.selectById(id); |
112 | + if(oConvertUtils.isNotEmpty(minor) && oConvertUtils.isNotEmpty(minor.getHouseholdNum())){ | ||
113 | + familyMapper.deleteByHouseholdNum(minor.getHouseholdNum()); | ||
114 | + } | ||
112 | minorMapper.deleteById(id); | 115 | minorMapper.deleteById(id); |
113 | } | 116 | } |
114 | 117 | ||
@@ -116,7 +119,10 @@ public class MinorServiceImpl extends ServiceImpl<MinorMapper, Minor> implements | @@ -116,7 +119,10 @@ public class MinorServiceImpl extends ServiceImpl<MinorMapper, Minor> implements | ||
116 | @Transactional | 119 | @Transactional |
117 | public void delBatchMain(Collection<? extends Serializable> idList) { | 120 | public void delBatchMain(Collection<? extends Serializable> idList) { |
118 | for(Serializable id:idList) { | 121 | for(Serializable id:idList) { |
119 | - familyMapper.deleteByMainId(id.toString()); | 122 | + Minor minor=minorMapper.selectById(id); |
123 | + if(oConvertUtils.isNotEmpty(minor) && oConvertUtils.isNotEmpty(minor.getHouseholdNum())){ | ||
124 | + familyMapper.deleteByHouseholdNum(minor.getHouseholdNum()); | ||
125 | + } | ||
120 | minorMapper.deleteById(id); | 126 | minorMapper.deleteById(id); |
121 | } | 127 | } |
122 | } | 128 | } |
@@ -135,8 +141,20 @@ public class MinorServiceImpl extends ServiceImpl<MinorMapper, Minor> implements | @@ -135,8 +141,20 @@ public class MinorServiceImpl extends ServiceImpl<MinorMapper, Minor> implements | ||
135 | } | 141 | } |
136 | 142 | ||
137 | @Override | 143 | @Override |
138 | - public IPage<Minor> queryPageList(Page<Minor> page,String name) { | ||
139 | - return minorMapper.queryPageList(page,name); | 144 | + public IPage<Minor> queryPageList(Page<Minor> page,String name,String sysOrgCode) { |
145 | + return minorMapper.queryPageList(page,name,sysOrgCode); | ||
146 | + } | ||
147 | + | ||
148 | + | ||
149 | + /** | ||
150 | + * 添加多对多 | ||
151 | + * | ||
152 | + */ | ||
153 | + @Override | ||
154 | + @Transactional | ||
155 | + public void saveMain(List<Minor> minors, List<Family> familyList) { | ||
156 | + minorMapper.insertBatch(minors); | ||
157 | + familyMapper.insertBatch(familyList); | ||
140 | } | 158 | } |
141 | 159 | ||
142 | 160 | ||
@@ -166,7 +184,7 @@ public class MinorServiceImpl extends ServiceImpl<MinorMapper, Minor> implements | @@ -166,7 +184,7 @@ public class MinorServiceImpl extends ServiceImpl<MinorMapper, Minor> implements | ||
166 | 184 | ||
167 | public void updateStudentWithThreads(List<Minor> list) { | 185 | public void updateStudentWithThreads(List<Minor> list) { |
168 | // 线程数量 | 186 | // 线程数量 |
169 | - final Integer threadCount = 5; | 187 | + final Integer threadCount = 12; |
170 | 188 | ||
171 | //每个线程处理的数据量 | 189 | //每个线程处理的数据量 |
172 | final Integer dataPartionLength = (list.size() + threadCount - 1) / threadCount; | 190 | final Integer dataPartionLength = (list.size() + threadCount - 1) / threadCount; |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MrSchoolServiceImpl.java
@@ -79,7 +79,7 @@ public class MrSchoolServiceImpl extends ServiceImpl<MrSchoolMapper, MrSchool> i | @@ -79,7 +79,7 @@ public class MrSchoolServiceImpl extends ServiceImpl<MrSchoolMapper, MrSchool> i | ||
79 | 79 | ||
80 | public void updateStudentWithThreads(List<MrSchool> list) { | 80 | public void updateStudentWithThreads(List<MrSchool> list) { |
81 | // 线程数量 | 81 | // 线程数量 |
82 | - final Integer threadCount = 5; | 82 | + final Integer threadCount = 8; |
83 | 83 | ||
84 | //每个线程处理的数据量 | 84 | //每个线程处理的数据量 |
85 | final Integer dataPartionLength = (list.size() + threadCount - 1) / threadCount; | 85 | final Integer dataPartionLength = (list.size() + threadCount - 1) / threadCount; |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/ExcelImportServiceUtil.java
0 → 100644
1 | +package org.jeecg.modules.system.util; | ||
2 | + | ||
3 | +import java.io.ByteArrayOutputStream; | ||
4 | +import java.io.File; | ||
5 | +import java.io.FileOutputStream; | ||
6 | +import java.io.IOException; | ||
7 | +import java.io.InputStream; | ||
8 | +import java.io.PushbackInputStream; | ||
9 | +import java.lang.reflect.Field; | ||
10 | +import java.lang.reflect.InvocationTargetException; | ||
11 | +import java.lang.reflect.Method; | ||
12 | +import java.util.ArrayList; | ||
13 | +import java.util.Collection; | ||
14 | +import java.util.Collections; | ||
15 | +import java.util.Date; | ||
16 | +import java.util.HashMap; | ||
17 | +import java.util.Iterator; | ||
18 | +import java.util.List; | ||
19 | +import java.util.Map; | ||
20 | +import java.util.Set; | ||
21 | +import org.apache.commons.lang3.StringUtils; | ||
22 | +import org.apache.poi.hssf.usermodel.HSSFSheet; | ||
23 | +import org.apache.poi.hssf.usermodel.HSSFWorkbook; | ||
24 | +import org.apache.poi.ss.formula.functions.T; | ||
25 | +import org.apache.poi.ss.usermodel.Cell; | ||
26 | +import org.apache.poi.ss.usermodel.CellStyle; | ||
27 | +import org.apache.poi.ss.usermodel.Font; | ||
28 | +import org.apache.poi.ss.usermodel.PictureData; | ||
29 | +import org.apache.poi.ss.usermodel.Row; | ||
30 | +import org.apache.poi.ss.usermodel.Sheet; | ||
31 | +import org.apache.poi.ss.usermodel.Workbook; | ||
32 | +import org.apache.poi.ss.usermodel.WorkbookFactory; | ||
33 | +import org.apache.poi.xssf.usermodel.XSSFSheet; | ||
34 | +import org.apache.poi.xssf.usermodel.XSSFWorkbook; | ||
35 | +import org.jeecgframework.core.util.ApplicationContextUtil; | ||
36 | +import org.jeecgframework.poi.excel.annotation.ExcelTarget; | ||
37 | +import org.jeecgframework.poi.excel.entity.ImportParams; | ||
38 | +import org.jeecgframework.poi.excel.entity.params.ExcelCollectionParams; | ||
39 | +import org.jeecgframework.poi.excel.entity.params.ExcelImportEntity; | ||
40 | +import org.jeecgframework.poi.excel.entity.result.ExcelImportResult; | ||
41 | +import org.jeecgframework.poi.excel.entity.result.ExcelVerifyHanlderResult; | ||
42 | +import org.jeecgframework.poi.excel.imports.CellValueServer; | ||
43 | +import org.jeecgframework.poi.excel.imports.base.ImportBaseService; | ||
44 | +import org.jeecgframework.poi.excel.imports.base.ImportFileServiceI; | ||
45 | +import org.jeecgframework.poi.excel.imports.verifys.VerifyHandlerServer; | ||
46 | +import org.jeecgframework.poi.exception.excel.ExcelImportException; | ||
47 | +import org.jeecgframework.poi.exception.excel.enums.ExcelImportEnum; | ||
48 | +import org.jeecgframework.poi.util.ExcelUtil; | ||
49 | +import org.jeecgframework.poi.util.PoiPublicUtil; | ||
50 | +import org.slf4j.Logger; | ||
51 | +import org.slf4j.LoggerFactory; | ||
52 | + | ||
53 | +/** | ||
54 | + * @author Administrator | ||
55 | + */ | ||
56 | +public class ExcelImportServiceUtil extends ImportBaseService { | ||
57 | + private static final Logger LOGGER = LoggerFactory.getLogger(org.jeecgframework.poi.excel.imports.ExcelImportServer.class); | ||
58 | + private CellValueServer cellValueServer = new CellValueServer(); | ||
59 | + private VerifyHandlerServer verifyHandlerServer = new VerifyHandlerServer(); | ||
60 | + private boolean verfiyFail = false; | ||
61 | + private CellStyle errorCellStyle; | ||
62 | + | ||
63 | + public ExcelImportServiceUtil() { | ||
64 | + } | ||
65 | + | ||
66 | + private void addListContinue(Object object, ExcelCollectionParams param, Row row, Map<Integer, String> titlemap, String targetId, Map<String, PictureData> pictures, ImportParams params) throws Exception { | ||
67 | + Collection collection = (Collection)PoiPublicUtil.getMethod(param.getName(), object.getClass()).invoke(object); | ||
68 | + Object entity = PoiPublicUtil.createObject(param.getType(), targetId); | ||
69 | + boolean isUsed = false; | ||
70 | + | ||
71 | + for(int i = row.getFirstCellNum(); i < row.getLastCellNum(); ++i) { | ||
72 | + Cell cell = row.getCell(i); | ||
73 | + String titleString = (String)titlemap.get(i); | ||
74 | + if (param.getExcelParams().containsKey(titleString)) { | ||
75 | + if (((ExcelImportEntity)param.getExcelParams().get(titleString)).getType() == 2) { | ||
76 | + String picId = row.getRowNum() + "_" + i; | ||
77 | + this.saveImage(object, picId, param.getExcelParams(), titleString, pictures, params); | ||
78 | + } else { | ||
79 | + this.saveFieldValue(params, entity, cell, param.getExcelParams(), titleString, row); | ||
80 | + } | ||
81 | + | ||
82 | + isUsed = true; | ||
83 | + } | ||
84 | + } | ||
85 | + | ||
86 | + if (isUsed) { | ||
87 | + collection.add(entity); | ||
88 | + } | ||
89 | + | ||
90 | + } | ||
91 | + | ||
92 | + private String getKeyValue(Cell cell) { | ||
93 | + if (cell == null) { | ||
94 | + return null; | ||
95 | + } else { | ||
96 | + Object obj = null; | ||
97 | + switch(cell.getCellTypeEnum()) { | ||
98 | + case STRING: | ||
99 | + obj = cell.getStringCellValue(); | ||
100 | + break; | ||
101 | + case BOOLEAN: | ||
102 | + obj = cell.getBooleanCellValue(); | ||
103 | + break; | ||
104 | + case NUMERIC: | ||
105 | + obj = cell.getNumericCellValue(); | ||
106 | + break; | ||
107 | + case FORMULA: | ||
108 | + obj = cell.getCellFormula(); | ||
109 | + } | ||
110 | + | ||
111 | + return obj == null ? null : obj.toString().trim(); | ||
112 | + } | ||
113 | + } | ||
114 | + | ||
115 | + private String getSaveUrl(ExcelImportEntity excelImportEntity, Object object) throws Exception { | ||
116 | + String url = ""; | ||
117 | + if (excelImportEntity.getSaveUrl().equals("upload")) { | ||
118 | + if (excelImportEntity.getMethods() != null && excelImportEntity.getMethods().size() > 0) { | ||
119 | + object = this.getFieldBySomeMethod(excelImportEntity.getMethods(), object); | ||
120 | + } | ||
121 | + | ||
122 | + url = object.getClass().getName().split("\\.")[object.getClass().getName().split("\\.").length - 1]; | ||
123 | + return excelImportEntity.getSaveUrl() + "/" + url.substring(0, url.lastIndexOf("Entity")); | ||
124 | + } else { | ||
125 | + return excelImportEntity.getSaveUrl(); | ||
126 | + } | ||
127 | + } | ||
128 | + | ||
129 | + public <T> List<T> importExcel(Collection<T> result, Sheet sheet, Class<?> pojoClass, ImportParams params, Map<String, PictureData> pictures) throws Exception { | ||
130 | + List collection = new ArrayList(); | ||
131 | + Map<String, ExcelImportEntity> excelParams = new HashMap(); | ||
132 | + List<ExcelCollectionParams> excelCollection = new ArrayList(); | ||
133 | + String targetId = null; | ||
134 | + if (!Map.class.equals(pojoClass)) { | ||
135 | + Field[] fileds = PoiPublicUtil.getClassFields(pojoClass); | ||
136 | + ExcelTarget etarget = (ExcelTarget)pojoClass.getAnnotation(ExcelTarget.class); | ||
137 | + if (etarget != null) { | ||
138 | + targetId = etarget.value(); | ||
139 | + } | ||
140 | + | ||
141 | + this.getAllExcelField(targetId, fileds, excelParams, excelCollection, pojoClass, (List)null); | ||
142 | + } | ||
143 | + | ||
144 | + this.ignoreHeaderHandler(excelParams, params); | ||
145 | + Iterator<Row> rows = sheet.rowIterator(); | ||
146 | + Map<Integer, String> titlemap = this.getTitleMap(sheet, rows, params, excelCollection); | ||
147 | + Set<Integer> columnIndexSet = titlemap.keySet(); | ||
148 | + Integer maxColumnIndex = (Integer)Collections.max(columnIndexSet); | ||
149 | + Integer minColumnIndex = (Integer)Collections.min(columnIndexSet); | ||
150 | + Row row = null; | ||
151 | + | ||
152 | + for(int j = 0; j < params.getTitleRows() + params.getHeadRows(); ++j) { | ||
153 | + row = (Row)rows.next(); | ||
154 | + } | ||
155 | + | ||
156 | + Object object = null; | ||
157 | + | ||
158 | + while(rows.hasNext() && (row == null || sheet.getLastRowNum() - row.getRowNum() > params.getLastOfInvalidRow())) { | ||
159 | + row = (Row)rows.next(); | ||
160 | + Cell keyIndexCell = row.getCell(params.getKeyIndex()); | ||
161 | + if (excelCollection.size() > 0 && StringUtils.isEmpty(this.getKeyValue(keyIndexCell)) && object != null && !Map.class.equals(pojoClass)) { | ||
162 | + Iterator var31 = excelCollection.iterator(); | ||
163 | + | ||
164 | + while(var31.hasNext()) { | ||
165 | + ExcelCollectionParams param = (ExcelCollectionParams)var31.next(); | ||
166 | + this.addListContinue(object, param, row, titlemap, targetId, pictures, params); | ||
167 | + } | ||
168 | + } else { | ||
169 | + object = PoiPublicUtil.createObject(pojoClass, targetId); | ||
170 | + | ||
171 | + try { | ||
172 | + int firstCellNum = row.getFirstCellNum(); | ||
173 | + if (firstCellNum > minColumnIndex) { | ||
174 | + firstCellNum = minColumnIndex; | ||
175 | + } | ||
176 | + | ||
177 | + int lastCellNum = row.getLastCellNum(); | ||
178 | + if (lastCellNum < maxColumnIndex + 1) { | ||
179 | + lastCellNum = maxColumnIndex + 1; | ||
180 | + } | ||
181 | + | ||
182 | + int i = firstCellNum; | ||
183 | + | ||
184 | + for(int le = lastCellNum; i < le; ++i) { | ||
185 | + Cell cell = row.getCell(i); | ||
186 | + String titleString = (String)titlemap.get(i); | ||
187 | + if (excelParams.containsKey(titleString) || Map.class.equals(pojoClass)) { | ||
188 | + String picId; | ||
189 | + if (excelParams.get(titleString) != null && ((ExcelImportEntity)excelParams.get(titleString)).getType() == 2) { | ||
190 | + picId = row.getRowNum() + "_" + i; | ||
191 | + this.saveImage(object, picId, excelParams, titleString, pictures, params); | ||
192 | + } else if (params.getImageList() != null && params.getImageList().contains(titleString)) { | ||
193 | + if (pictures != null) { | ||
194 | + picId = row.getRowNum() + "_" + i; | ||
195 | + PictureData image = (PictureData)pictures.get(picId); | ||
196 | + if (image != null) { | ||
197 | + byte[] data = image.getData(); | ||
198 | + params.getDataHanlder().setMapValue((Map)object, titleString, data); | ||
199 | + } | ||
200 | + } | ||
201 | + } else { | ||
202 | + this.saveFieldValue(params, object, cell, excelParams, titleString, row); | ||
203 | + } | ||
204 | + } | ||
205 | + } | ||
206 | + | ||
207 | + Iterator var33 = excelCollection.iterator(); | ||
208 | + | ||
209 | + while(var33.hasNext()) { | ||
210 | + ExcelCollectionParams param = (ExcelCollectionParams)var33.next(); | ||
211 | + this.addListContinue(object, param, row, titlemap, targetId, pictures, params); | ||
212 | + } | ||
213 | + | ||
214 | + if (this.isNotNullObject(pojoClass, object)) { | ||
215 | + collection.add(object); | ||
216 | + } | ||
217 | + } catch (ExcelImportException var27) { | ||
218 | + if (!var27.getType().equals(ExcelImportEnum.VERIFY_ERROR)) { | ||
219 | + throw new ExcelImportException(var27.getType(), var27); | ||
220 | + } | ||
221 | + } | ||
222 | + } | ||
223 | + } | ||
224 | + | ||
225 | + return collection; | ||
226 | + } | ||
227 | + | ||
228 | + private boolean isNotNullObject(Class pojoClass, Object object) { | ||
229 | + try { | ||
230 | + Method method = pojoClass.getMethod("isNullObject"); | ||
231 | + if (method != null) { | ||
232 | + Object flag = method.invoke(object); | ||
233 | + if (flag != null && Boolean.parseBoolean(flag.toString())) { | ||
234 | + return false; | ||
235 | + } | ||
236 | + } | ||
237 | + } catch (NoSuchMethodException var5) { | ||
238 | + System.out.println("没有该方法 isNullObject"); | ||
239 | + } catch (IllegalAccessException var6) { | ||
240 | + System.out.println("没有权限访问该方法 isNullObject"); | ||
241 | + } catch (InvocationTargetException var7) { | ||
242 | + System.out.println("方法调用失败 isNullObject"); | ||
243 | + } | ||
244 | + | ||
245 | + return true; | ||
246 | + } | ||
247 | + | ||
248 | + private void ignoreHeaderHandler(Map<String, ExcelImportEntity> excelParams, ImportParams params) { | ||
249 | + List<String> ignoreList = new ArrayList(); | ||
250 | + Iterator var4 = excelParams.keySet().iterator(); | ||
251 | + | ||
252 | + while(var4.hasNext()) { | ||
253 | + String key = (String)var4.next(); | ||
254 | + String temp = ((ExcelImportEntity)excelParams.get(key)).getGroupName(); | ||
255 | + if (temp != null && temp.length() > 0) { | ||
256 | + ignoreList.add(temp); | ||
257 | + } | ||
258 | + } | ||
259 | + | ||
260 | + params.setIgnoreHeaderList(ignoreList); | ||
261 | + } | ||
262 | + | ||
263 | + private Map<Integer, String> getTitleMap(Sheet sheet, Iterator<Row> rows, ImportParams params, List<ExcelCollectionParams> excelCollection) throws Exception { | ||
264 | + Map<Integer, String> titlemap = new HashMap(); | ||
265 | + Iterator<Cell> cellTitle = null; | ||
266 | + String collectionName = null; | ||
267 | + ExcelCollectionParams collectionParams = null; | ||
268 | + Row headRow = null; | ||
269 | + int headBegin = params.getTitleRows(); | ||
270 | + | ||
271 | + for(int allRowNum = sheet.getPhysicalNumberOfRows(); headRow == null && headBegin < allRowNum; headRow = sheet.getRow(headBegin++)) { | ||
272 | + } | ||
273 | + | ||
274 | + if (headRow == null) { | ||
275 | + throw new Exception("不识别该文件"); | ||
276 | + } else { | ||
277 | + if (ExcelUtil.isMergedRegion(sheet, headRow.getRowNum(), 0)) { | ||
278 | + params.setHeadRows(2); | ||
279 | + } else { | ||
280 | + params.setHeadRows(1); | ||
281 | + } | ||
282 | + | ||
283 | + cellTitle = headRow.cellIterator(); | ||
284 | + | ||
285 | + while(cellTitle.hasNext()) { | ||
286 | + Cell cell = (Cell)cellTitle.next(); | ||
287 | + String value = this.getKeyValue(cell); | ||
288 | + if (StringUtils.isNotEmpty(value)) { | ||
289 | + titlemap.put(cell.getColumnIndex(), value); | ||
290 | + } | ||
291 | + } | ||
292 | + | ||
293 | + for(int j = headBegin; j < headBegin + params.getHeadRows() - 1; ++j) { | ||
294 | + headRow = sheet.getRow(j); | ||
295 | + cellTitle = headRow.cellIterator(); | ||
296 | + | ||
297 | + while(cellTitle.hasNext()) { | ||
298 | + Cell cell = (Cell)cellTitle.next(); | ||
299 | + String value = this.getKeyValue(cell); | ||
300 | + if (StringUtils.isNotEmpty(value)) { | ||
301 | + int columnIndex = cell.getColumnIndex(); | ||
302 | + if (ExcelUtil.isMergedRegion(sheet, cell.getRowIndex() - 1, columnIndex)) { | ||
303 | + collectionName = ExcelUtil.getMergedRegionValue(sheet, cell.getRowIndex() - 1, columnIndex); | ||
304 | + if (params.isIgnoreHeader(collectionName)) { | ||
305 | + titlemap.put(cell.getColumnIndex(), value); | ||
306 | + } else { | ||
307 | + titlemap.put(cell.getColumnIndex(), collectionName + "_" + value); | ||
308 | + } | ||
309 | + } else { | ||
310 | + titlemap.put(cell.getColumnIndex(), value); | ||
311 | + } | ||
312 | + } | ||
313 | + } | ||
314 | + } | ||
315 | + | ||
316 | + return titlemap; | ||
317 | + } | ||
318 | + } | ||
319 | + | ||
320 | + private ExcelCollectionParams getCollectionParams(List<ExcelCollectionParams> excelCollection, String collectionName) { | ||
321 | + Iterator var3 = excelCollection.iterator(); | ||
322 | + | ||
323 | + ExcelCollectionParams excelCollectionParams; | ||
324 | + do { | ||
325 | + if (!var3.hasNext()) { | ||
326 | + return null; | ||
327 | + } | ||
328 | + | ||
329 | + excelCollectionParams = (ExcelCollectionParams)var3.next(); | ||
330 | + } while(!collectionName.equals(excelCollectionParams.getExcelName())); | ||
331 | + | ||
332 | + return excelCollectionParams; | ||
333 | + } | ||
334 | + | ||
335 | + public ExcelImportResult importExcelByIs(InputStream inputstream, Class<?> pojoClass, ImportParams params) throws Exception { | ||
336 | + if (LOGGER.isDebugEnabled()) { | ||
337 | + LOGGER.debug("Excel import start ,class is {}", pojoClass); | ||
338 | + } | ||
339 | + | ||
340 | + List<T> result = new ArrayList(); | ||
341 | + Workbook book = null; | ||
342 | + boolean isXSSFWorkbook = false; | ||
343 | + if (!((InputStream)inputstream).markSupported()) { | ||
344 | + inputstream = new PushbackInputStream((InputStream)inputstream, 8); | ||
345 | + } | ||
346 | + | ||
347 | + book = WorkbookFactory.create((InputStream)inputstream); | ||
348 | + if (book instanceof XSSFWorkbook) { | ||
349 | + isXSSFWorkbook = true; | ||
350 | + } | ||
351 | + | ||
352 | + LOGGER.info(" >>> poi3升级到4.0兼容改造工作, isXSSFWorkbook = " + isXSSFWorkbook); | ||
353 | + int sheetNum = book.getNumberOfSheets(); | ||
354 | + if (sheetNum > 1) { | ||
355 | + params.setSheetNum(sheetNum); | ||
356 | + } | ||
357 | + | ||
358 | + this.createErrorCellStyle(book); | ||
359 | + | ||
360 | + for(int i = 0; i < params.getSheetNum(); ++i) { | ||
361 | + if (LOGGER.isDebugEnabled()) { | ||
362 | + LOGGER.debug(" start to read excel by is ,startTime is {}", System.currentTimeMillis()); | ||
363 | + } | ||
364 | + | ||
365 | + Map pictures; | ||
366 | + if (isXSSFWorkbook) { | ||
367 | + pictures = PoiPublicUtil.getSheetPictrues07((XSSFSheet)book.getSheetAt(i), (XSSFWorkbook)book); | ||
368 | + } else { | ||
369 | + pictures = PoiPublicUtil.getSheetPictrues03((HSSFSheet)book.getSheetAt(i), (HSSFWorkbook)book); | ||
370 | + } | ||
371 | + | ||
372 | + if (LOGGER.isDebugEnabled()) { | ||
373 | + LOGGER.debug(" end to read excel by is ,endTime is {}", (new Date()).getTime()); | ||
374 | + } | ||
375 | + | ||
376 | + result.addAll(this.importExcel(result, book.getSheetAt(i), pojoClass, params, pictures)); | ||
377 | + if (LOGGER.isDebugEnabled()) { | ||
378 | + LOGGER.debug(" end to read excel list by pos ,endTime is {}", (new Date()).getTime()); | ||
379 | + } | ||
380 | + } | ||
381 | + | ||
382 | + if (params.isNeedSave()) { | ||
383 | + this.saveThisExcel(params, pojoClass, isXSSFWorkbook, book); | ||
384 | + } | ||
385 | + | ||
386 | + return new ExcelImportResult(result, this.verfiyFail, book); | ||
387 | + } | ||
388 | + | ||
389 | + public static byte[] getBytes(InputStream is) throws IOException { | ||
390 | + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); | ||
391 | + byte[] data = new byte[100000]; | ||
392 | + | ||
393 | + int len; | ||
394 | + while((len = is.read(data, 0, data.length)) != -1) { | ||
395 | + buffer.write(data, 0, len); | ||
396 | + } | ||
397 | + | ||
398 | + buffer.flush(); | ||
399 | + return buffer.toByteArray(); | ||
400 | + } | ||
401 | + | ||
402 | + private void saveFieldValue(ImportParams params, Object object, Cell cell, Map<String, ExcelImportEntity> excelParams, String titleString, Row row) throws Exception { | ||
403 | + Object value = this.cellValueServer.getValue(params.getDataHanlder(), object, cell, excelParams, titleString); | ||
404 | + if (object instanceof Map) { | ||
405 | + if (params.getDataHanlder() != null) { | ||
406 | + params.getDataHanlder().setMapValue((Map)object, titleString, value); | ||
407 | + } else { | ||
408 | + ((Map)object).put(titleString, value); | ||
409 | + } | ||
410 | + } else { | ||
411 | + ExcelVerifyHanlderResult verifyResult = this.verifyHandlerServer.verifyData(object, value, titleString, ((ExcelImportEntity)excelParams.get(titleString)).getVerify(), params.getVerifyHanlder()); | ||
412 | + if (!verifyResult.isSuccess()) { | ||
413 | + Cell errorCell = row.createCell(row.getLastCellNum()); | ||
414 | + errorCell.setCellValue(verifyResult.getMsg()); | ||
415 | + errorCell.setCellStyle(this.errorCellStyle); | ||
416 | + this.verfiyFail = true; | ||
417 | + throw new ExcelImportException(ExcelImportEnum.VERIFY_ERROR); | ||
418 | + } | ||
419 | + | ||
420 | + this.setValues((ExcelImportEntity)excelParams.get(titleString), object, value); | ||
421 | + } | ||
422 | + | ||
423 | + } | ||
424 | + | ||
425 | + private void saveImage(Object object, String picId, Map<String, ExcelImportEntity> excelParams, String titleString, Map<String, PictureData> pictures, ImportParams params) throws Exception { | ||
426 | + if (pictures != null && pictures.get(picId) != null) { | ||
427 | + PictureData image = (PictureData)pictures.get(picId); | ||
428 | + byte[] data = image.getData(); | ||
429 | + String fileName = "pic" + Math.round(Math.random() * 1.0E11D); | ||
430 | + fileName = fileName + "." + PoiPublicUtil.getFileExtendName(data); | ||
431 | + int saveType = ((ExcelImportEntity)excelParams.get(titleString)).getSaveType(); | ||
432 | + if (saveType == 1) { | ||
433 | + String path = PoiPublicUtil.getWebRootPath(this.getSaveUrl((ExcelImportEntity)excelParams.get(titleString), object)); | ||
434 | + File savefile = new File(path); | ||
435 | + if (!savefile.exists()) { | ||
436 | + savefile.mkdirs(); | ||
437 | + } | ||
438 | + | ||
439 | + savefile = new File(path + "/" + fileName); | ||
440 | + FileOutputStream fos = new FileOutputStream(savefile); | ||
441 | + fos.write(data); | ||
442 | + fos.close(); | ||
443 | + this.setValues((ExcelImportEntity)excelParams.get(titleString), object, this.getSaveUrl((ExcelImportEntity)excelParams.get(titleString), object) + "/" + fileName); | ||
444 | + } else if (saveType == 2) { | ||
445 | + this.setValues((ExcelImportEntity)excelParams.get(titleString), object, data); | ||
446 | + } else { | ||
447 | + ImportFileServiceI importFileService = null; | ||
448 | + | ||
449 | + try { | ||
450 | + importFileService = (ImportFileServiceI)ApplicationContextUtil.getContext().getBean(ImportFileServiceI.class); | ||
451 | + } catch (Exception var14) { | ||
452 | + System.err.println(var14.getMessage()); | ||
453 | + } | ||
454 | + | ||
455 | + if (importFileService != null) { | ||
456 | + String dbPath = importFileService.doUpload(data); | ||
457 | + this.setValues((ExcelImportEntity)excelParams.get(titleString), object, dbPath); | ||
458 | + } | ||
459 | + } | ||
460 | + | ||
461 | + } | ||
462 | + } | ||
463 | + | ||
464 | + private void createErrorCellStyle(Workbook workbook) { | ||
465 | + this.errorCellStyle = workbook.createCellStyle(); | ||
466 | + Font font = workbook.createFont(); | ||
467 | + font.setColor((short)10); | ||
468 | + this.errorCellStyle.setFont(font); | ||
469 | + } | ||
470 | +} |
juvenile-prosecution-vue/src/utils/request.js
@@ -17,7 +17,7 @@ let apiBaseUrl = window._CONFIG['domianURL'] || "/jeecg-boot"; | @@ -17,7 +17,7 @@ let apiBaseUrl = window._CONFIG['domianURL'] || "/jeecg-boot"; | ||
17 | const service = axios.create({ | 17 | const service = axios.create({ |
18 | //baseURL: '/jeecg-boot', | 18 | //baseURL: '/jeecg-boot', |
19 | baseURL: apiBaseUrl, // api base_url | 19 | baseURL: apiBaseUrl, // api base_url |
20 | - timeout: 9000 // 请求超时时间 | 20 | + timeout: 250000 // 请求超时时间 |
21 | }) | 21 | }) |
22 | 22 | ||
23 | const err = (error) => { | 23 | const err = (error) => { |
juvenile-prosecution-vue/src/views/business/MinorList.vue
@@ -6,7 +6,7 @@ | @@ -6,7 +6,7 @@ | ||
6 | <a-row :gutter="24"> | 6 | <a-row :gutter="24"> |
7 | <a-col :md="6" :sm="12"> | 7 | <a-col :md="6" :sm="12"> |
8 | <a-form-item label="姓名"> | 8 | <a-form-item label="姓名"> |
9 | - <j-input placeholder="输入姓名查询" v-model="queryParam.name"></j-input> | 9 | + <a-input placeholder="输入姓名查询" v-model="queryParam.name"></a-input> |
10 | </a-form-item> | 10 | </a-form-item> |
11 | </a-col> | 11 | </a-col> |
12 | <a-col :md="6" :sm="8"> | 12 | <a-col :md="6" :sm="8"> |
@@ -66,6 +66,10 @@ | @@ -66,6 +66,10 @@ | ||
66 | <a @click="handleEdit(record)">编辑</a> | 66 | <a @click="handleEdit(record)">编辑</a> |
67 | <a-divider type="vertical" /> | 67 | <a-divider type="vertical" /> |
68 | <a @click="handleDetail(record)">查看</a> | 68 | <a @click="handleDetail(record)">查看</a> |
69 | + <a-divider type="vertical" /> | ||
70 | + <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)"> | ||
71 | + <a>删除</a> | ||
72 | + </a-popconfirm> | ||
69 | </span> | 73 | </span> |
70 | </a-table> | 74 | </a-table> |
71 | </div> | 75 | </div> |
@@ -337,7 +341,7 @@ export default { | @@ -337,7 +341,7 @@ export default { | ||
337 | } | 341 | } |
338 | let param = { 'fileName': name, 'type': type } | 342 | let param = { 'fileName': name, 'type': type } |
339 | console.log('导出参数', param) | 343 | console.log('导出参数', param) |
340 | - downFile(this.url.importExcelUrl, param).then((data) => { | 344 | + downFile(this.url.exportXlsUrl, param).then((data) => { |
341 | console.log(data) | 345 | console.log(data) |
342 | if (!data) { | 346 | if (!data) { |
343 | this.$message.warning('文件下载失败') | 347 | this.$message.warning('文件下载失败') |
juvenile-prosecution-vue/src/views/business/SourceCom.vue
0 → 100644
1 | +<template> | ||
2 | + <a-card :bordered="false"> | ||
3 | + <source-statistics ref="sourceStatistics" v-if="show" @to_source_list="toSourceList"/> | ||
4 | + <source-list ref="sourceList" v-if="!show" @to_statistics="toStatistics"/> | ||
5 | + </a-card> | ||
6 | +</template> | ||
7 | + | ||
8 | +<script> | ||
9 | + import '@/assets/less/TableExpand.less' | ||
10 | + import SourceStatistics from './SourceStatistics' | ||
11 | + import SourceList from './SourceList' | ||
12 | + | ||
13 | + export default { | ||
14 | + name: 'SourceCom', | ||
15 | + components: { | ||
16 | + SourceStatistics,SourceList | ||
17 | + }, | ||
18 | + data () { | ||
19 | + return { | ||
20 | + description: '来源数据管理管理页面', | ||
21 | + show:true, | ||
22 | + } | ||
23 | + }, | ||
24 | + created() { | ||
25 | + this.show=true; | ||
26 | + }, | ||
27 | + computed: { | ||
28 | + }, | ||
29 | + methods: { | ||
30 | + toStatistics(){ | ||
31 | + this.show=true; | ||
32 | + }, | ||
33 | + toSourceList(record){ | ||
34 | + this.show=false; | ||
35 | + this.$nextTick(() => { | ||
36 | + this.$refs.sourceList.getData(record.name); | ||
37 | + }) | ||
38 | + } | ||
39 | + } | ||
40 | + } | ||
41 | +</script> | ||
42 | +<style scoped> | ||
43 | + @import '~@assets/less/common.less'; | ||
44 | +</style> | ||
0 | \ No newline at end of file | 45 | \ No newline at end of file |
juvenile-prosecution-vue/src/views/business/SourceList.vue
1 | <template> | 1 | <template> |
2 | <a-card :bordered="false"> | 2 | <a-card :bordered="false"> |
3 | -<!-- <a-page-header--> | ||
4 | -<!-- class="demo-page-header"--> | ||
5 | -<!-- style="border: 1px solid rgb(235, 237, 240)"--> | ||
6 | -<!-- title="返回"--> | ||
7 | -<!-- sub-title="数据批次"--> | ||
8 | -<!-- @back="goBack"--> | ||
9 | -<!-- ></a-page-header>--> | 3 | + <a-page-header |
4 | + class="demo-page-header" | ||
5 | + title="数据批次" | ||
6 | + @back="goBack" | ||
7 | + ></a-page-header> | ||
10 | 8 | ||
11 | <!-- table区域-begin --> | 9 | <!-- table区域-begin --> |
12 | <div> | 10 | <div> |
@@ -117,11 +115,6 @@ | @@ -117,11 +115,6 @@ | ||
117 | } | 115 | } |
118 | }, | 116 | }, |
119 | created() { | 117 | created() { |
120 | - this.getSuperFieldList(); | ||
121 | - this.queryParam={ | ||
122 | - name:this.$route.query.unitName | ||
123 | - } | ||
124 | - this.loadData(1) | ||
125 | }, | 118 | }, |
126 | computed: { | 119 | computed: { |
127 | importExcelUrl: function(){ | 120 | importExcelUrl: function(){ |
@@ -129,10 +122,14 @@ | @@ -129,10 +122,14 @@ | ||
129 | }, | 122 | }, |
130 | }, | 123 | }, |
131 | methods: { | 124 | methods: { |
125 | + getData(unitName){ | ||
126 | + this.queryParam={ | ||
127 | + name:unitName | ||
128 | + } | ||
129 | + this.loadData(1) | ||
130 | + }, | ||
132 | goBack(){ | 131 | goBack(){ |
133 | - this.$router.go(-1); | ||
134 | - | ||
135 | - // this.$router.re({name:'business-SourceList',query: {unitName:record.name}}) | 132 | + this.$emit('to_statistics'); |
136 | }, | 133 | }, |
137 | loadData(arg) { | 134 | loadData(arg) { |
138 | if(!this.url.list){ | 135 | if(!this.url.list){ |
@@ -205,4 +202,8 @@ | @@ -205,4 +202,8 @@ | ||
205 | </script> | 202 | </script> |
206 | <style scoped> | 203 | <style scoped> |
207 | @import '~@assets/less/common.less'; | 204 | @import '~@assets/less/common.less'; |
205 | + .demo-page-header{ | ||
206 | + opacity: 0.6; | ||
207 | + } | ||
208 | + | ||
208 | </style> | 209 | </style> |
209 | \ No newline at end of file | 210 | \ No newline at end of file |
juvenile-prosecution-vue/src/views/business/SourceStatistics.vue
@@ -112,10 +112,7 @@ | @@ -112,10 +112,7 @@ | ||
112 | }, | 112 | }, |
113 | methods: { | 113 | methods: { |
114 | handleDetail(record){ | 114 | handleDetail(record){ |
115 | - console.log(record.name) | ||
116 | - // this.$router.push({ name: 'business-SourceList',params:{'unitName':record.name}}) | ||
117 | - this.$router.push({name:'business-SourceList',query: {unitName:record.name}}) | ||
118 | - console.log(this.$router) | 115 | + this.$emit('to_source_list', record); |
119 | }, | 116 | }, |
120 | initDictConfig(){ | 117 | initDictConfig(){ |
121 | }, | 118 | }, |