Commit 62156ef23637502842190c755903c27de54c5faa
1 parent
50565778
数据分析
Showing
75 changed files
with
2198 additions
and
710 deletions
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/AnalyzeController.java
1 | 1 | package org.jeecg.modules.system.controller; |
2 | 2 | |
3 | 3 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
4 | +import com.google.common.collect.Sets; | |
4 | 5 | import io.swagger.annotations.Api; |
5 | 6 | import io.swagger.annotations.ApiOperation; |
6 | 7 | import lombok.extern.slf4j.Slf4j; |
8 | +import org.apache.logging.log4j.util.Strings; | |
9 | +import org.apache.shiro.SecurityUtils; | |
10 | +import org.jeecg.common.api.vo.Result; | |
7 | 11 | import org.jeecg.common.aspect.annotation.AutoLog; |
8 | 12 | import org.jeecg.common.system.base.controller.JeecgController; |
13 | +import org.jeecg.common.system.vo.DictModel; | |
14 | +import org.jeecg.common.system.vo.LoginUser; | |
9 | 15 | import org.jeecg.common.util.oConvertUtils; |
10 | -import org.jeecg.modules.system.entity.Family; | |
11 | -import org.jeecg.modules.system.entity.GaDemographic; | |
12 | -import org.jeecg.modules.system.entity.Minor; | |
13 | -import org.jeecg.modules.system.entity.SysDepart; | |
16 | +import org.jeecg.modules.system.entity.*; | |
14 | 17 | import org.jeecg.modules.system.service.*; |
18 | +import org.jeecg.modules.system.util.DoTaskThread; | |
15 | 19 | import org.jeecg.modules.system.util.IDNumberUtil; |
16 | 20 | import org.jeecg.modules.system.util.MultiThreadUtil; |
21 | +import org.jeecg.modules.system.util.TaskThreadQuery; | |
17 | 22 | import org.jeecg.modules.system.vo.FamilyVo; |
18 | 23 | import org.jeecg.modules.system.vo.GaPunishVo; |
19 | 24 | import org.jeecg.modules.system.vo.SpecialStudentVo; |
20 | 25 | import org.springframework.web.bind.annotation.*; |
21 | 26 | |
22 | 27 | import javax.annotation.Resource; |
23 | -import java.util.ArrayList; | |
24 | -import java.util.List; | |
25 | -import java.util.concurrent.CountDownLatch; | |
26 | -import java.util.concurrent.ExecutorService; | |
27 | -import java.util.concurrent.Executors; | |
28 | +import java.text.SimpleDateFormat; | |
29 | +import java.util.*; | |
30 | +import java.util.concurrent.*; | |
31 | +import java.util.stream.Collectors; | |
32 | +import java.util.stream.Stream; | |
33 | + | |
28 | 34 | |
29 | 35 | /** |
30 | -* @Description: 数据分析 | |
31 | -* @Author: jeecg-boot | |
32 | -* @Date: 2022-07-13 | |
33 | -* @Version: V1.0 | |
34 | -*/ | |
35 | -@Api(tags="数据分析") | |
36 | + * @Description: 数据分析 | |
37 | + * @Author: jeecg-boot | |
38 | + * @Date: 2022-07-13 | |
39 | + * @Version: V1.0 | |
40 | + */ | |
41 | +@Api(tags = "数据分析") | |
36 | 42 | @RestController |
37 | 43 | @RequestMapping("/sys/analyze") |
38 | 44 | @Slf4j |
39 | 45 | public class AnalyzeController extends JeecgController<GaDemographic, IGaDemographicService> { |
40 | - @Resource | |
41 | - private IGaDemographicService gaDemographicService; | |
42 | - @Resource | |
43 | - private IGaHouseholdService gaHouseholdService; | |
44 | - @Resource | |
45 | - private ISysDepartService sysDepartService; | |
46 | - @Resource | |
47 | - private IGaPunishService gaPunishService; | |
48 | - @Resource | |
49 | - private IGaJuvenilesStayService gaJuvenilesStayService; | |
50 | - @Resource | |
51 | - private IMzAdoptionService mzAdoptionService; | |
52 | - @Resource | |
53 | - private IMzLeftBehindChildrenService mzLeftBehindChildrenService; | |
54 | - @Resource | |
55 | - private IMzOrphanService mzOrphanService; | |
56 | - @Resource | |
57 | - private IMzUnsupportedService mzUnsupportedService; | |
58 | - @Resource | |
59 | - private ISpecialStudentService specialStudentService; | |
60 | - @Resource | |
61 | - private IFamilyService familyService; | |
62 | - @Resource | |
63 | - private IMinorService minorService; | |
64 | - @Resource | |
65 | - private IMrSchoolService schoolService; | |
66 | - | |
67 | - private Integer queryNum=0; | |
68 | - private Integer pageSize=200000; | |
69 | - private List<GaPunishVo> gaPunishVos=new ArrayList<>(); | |
70 | - private List<Family> rasultFamily=new ArrayList<>();//分析后家庭的数据 | |
71 | - private List<Minor> rasultMinor=new ArrayList<>();//分析后未成年人的信息 | |
72 | - private List<SpecialStudentVo> specialStudentVos=new ArrayList<>(); | |
46 | + @Resource | |
47 | + private IGaDemographicService gaDemographicService; | |
48 | + @Resource | |
49 | + private IGaHouseholdService gaHouseholdService; | |
50 | + @Resource | |
51 | + private ISysDepartService sysDepartService; | |
52 | + @Resource | |
53 | + private IGaPunishService gaPunishService; | |
54 | + @Resource | |
55 | + private IGaJuvenilesStayService gaJuvenilesStayService; | |
56 | + @Resource | |
57 | + private IMzAdoptionService mzAdoptionService; | |
58 | + @Resource | |
59 | + private IMzLeftBehindChildrenService mzLeftBehindChildrenService; | |
60 | + @Resource | |
61 | + private IMzOrphanService mzOrphanService; | |
62 | + @Resource | |
63 | + private IMzUnsupportedService mzUnsupportedService; | |
64 | + @Resource | |
65 | + private ISpecialStudentService specialStudentService; | |
66 | + @Resource | |
67 | + private IFamilyService familyService; | |
68 | + @Resource | |
69 | + private IMinorService minorService; | |
70 | + @Resource | |
71 | + private IMrSchoolService schoolService; | |
72 | + @Resource | |
73 | + private IHighSchoolService highSchoolService; | |
74 | + @Resource | |
75 | + private IPrimarySchoolService primarySchoolService; | |
76 | + @Resource | |
77 | + private ISourceService sourceService; | |
78 | + @Resource | |
79 | + private ISysDictService dictService; | |
80 | + | |
81 | + private final List<Family> resultFamily = new ArrayList<>();//分析后家庭的数据 | |
82 | + private final List<Minor> resultMinor = new ArrayList<>();//分析后未成年人的信息 | |
83 | + private final List<MrSchool> resultSchools = new ArrayList<>();//分析后学籍的信息 | |
84 | + private static final int corePoolSize = Runtime.getRuntime().availableProcessors(); | |
85 | + private static final ThreadPoolExecutor executor = new ThreadPoolExecutor(corePoolSize, corePoolSize + 1, 10L, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(1000)); | |
86 | + | |
87 | + | |
73 | 88 | @AutoLog(value = "来源数据管理-分页列表查询") |
74 | - @ApiOperation(value="来源数据管理-分页列表查询", notes="来源数据管理-分页列表查询") | |
75 | - @GetMapping(value = "/doAnalyzeData") | |
76 | - public void doAnalyzeData() { | |
77 | - | |
78 | -// List<FamilyVo> allData=new ArrayList<>() | |
79 | - LambdaQueryWrapper<SysDepart> cfq = new LambdaQueryWrapper<>(); | |
80 | - cfq.isNotNull(SysDepart::getParentId); | |
81 | - List<SysDepart> departs= sysDepartService.list(cfq); | |
82 | - gaPunishVos.addAll(gaPunishService.queryAll()); | |
83 | - specialStudentVos.addAll(specialStudentService.queryList()); | |
84 | - | |
85 | -// List<FamilyVo> familyVos=queryByThread(new ArrayList<>(),departs); | |
86 | - //获取当前系统时间 | |
87 | -// long startTime = System.currentTimeMillis(); | |
88 | - queryByThread(departs); | |
89 | -// long endTime = System.currentTimeMillis(); | |
90 | -// System.out.println(endTime-startTime); | |
91 | -// long startTime1 = System.currentTimeMillis(); | |
92 | -// long endTime1 = System.currentTimeMillis(); | |
93 | -// System.out.println("***********************结束时间"+(endTime1-startTime1)); | |
94 | - } | |
95 | - | |
96 | - /** | |
97 | - * 分页列表查询 | |
98 | - * @param allData | |
99 | - * @return | |
100 | - */ | |
101 | - public List<FamilyVo> queryPageList(List<FamilyVo> allData,List<SysDepart> departs){ | |
102 | - try { | |
103 | -// List<FamilyVo> familyVos=gaDemographicService.queryPageList(queryNum,pageSize); | |
104 | -//// allData.addAll(familyVos); | |
105 | -// if(oConvertUtils.isNotEmpty(familyVos)){ | |
106 | -// //当查出来的数据等于分页的数量说明还有数据需要查询 | |
107 | -// if(familyVos.size() == pageSize){ | |
108 | -// queryNum=queryNum+pageSize; | |
109 | -//// queryPageList(allData); | |
110 | -// analyzeData(familyVos,departs); | |
111 | -// }else { | |
112 | -// | |
113 | -// } | |
114 | -// } | |
115 | - | |
116 | - }catch (Exception e){ | |
117 | - System.out.println(e); | |
118 | - } | |
119 | - return allData; | |
120 | - } | |
121 | - | |
122 | - public void analyzeData(List<Family> allData,List<SysDepart> departs){ | |
123 | - List<Family> familyMajors=new ArrayList<>();//户籍信息里的成年人 | |
124 | - List<Family> familyMinors=new ArrayList<>();//户籍信息里的未成年人 | |
125 | - if(oConvertUtils.isNotEmpty(allData) && oConvertUtils.isNotEmpty(departs)){ | |
126 | - for(SysDepart d:departs){ | |
127 | - for(Family f:allData){ | |
128 | - if(d.getAbbreviation().contains(f.getDivision())){ | |
129 | - f.setSysOrgCode(d.getId()); | |
130 | - } | |
131 | - if(oConvertUtils.isNotEmpty(f.getIdentity())){ | |
132 | - f.setGender(Integer.valueOf(IDNumberUtil.judgeGender(f.getIdentity()))); | |
133 | - Integer age=IDNumberUtil.countAge(f.getIdentity()); | |
134 | - if(age<18){ | |
135 | - familyMinors.add(f); | |
136 | - }else { | |
137 | - familyMajors.add(f); | |
138 | - } | |
139 | - } | |
89 | + @ApiOperation(value = "来源数据管理-分页列表查询", notes = "来源数据管理-分页列表查询") | |
90 | + @PutMapping(value = "/doAnalyzeData") | |
91 | + public Result<?> doAnalyzeData() { | |
92 | + try { | |
93 | + System.out.println("开始数据分析"); | |
94 | + long startTime = System.currentTimeMillis(); | |
95 | + List<SysDepart> departs = sysDepartService.querySysDeparts(); | |
96 | + getData(departs); | |
97 | + System.out.println("开始数据分析" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); | |
98 | + System.out.println("家庭成员数据批量新增总条数" + resultFamily.size()); | |
99 | + System.out.println("未成年人数据批量新增总条数" + resultMinor.size()); | |
100 | + System.out.println("学籍信息数据批量新增总条数" + resultSchools.size()); | |
101 | + long startTime2 = System.currentTimeMillis(); | |
102 | +// minorService.insertBatch(resultMinor,departs); | |
103 | + System.out.println("未成年人数据批量新增所用时间" + (System.currentTimeMillis() - startTime2) / 1000 + "秒"); | |
104 | + long startTime1 = System.currentTimeMillis(); | |
105 | +// familyService.insertBatch(resultFamily,departs); | |
106 | + System.out.println("家庭成员数据批量新增所用时间" + (System.currentTimeMillis() - startTime1) / 1000 + "秒"); | |
107 | + long startTime3 = System.currentTimeMillis(); | |
108 | +// schoolService.insertBatch(resultSchools,); | |
109 | + System.out.println("学籍信息入库时间" + (System.currentTimeMillis() - startTime3) / 1000 + "秒"); | |
110 | + long startTime4 = System.currentTimeMillis(); | |
111 | + getSourceData(); | |
112 | + System.out.println("来源数据入库时间" + (System.currentTimeMillis() - startTime4) / 1000 + "秒"); | |
113 | + System.out.println("*********************************总用时" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); | |
114 | + return Result.OK("操作成功"); | |
115 | + } catch (Exception e) { | |
116 | + e.printStackTrace(); | |
117 | + log.info(String.valueOf(e)); | |
118 | + return Result.OK("操作失败"); | |
119 | + } | |
120 | + } | |
121 | + | |
122 | + public void getData(List<SysDepart> departs) { | |
123 | + try { | |
124 | + System.out.println("开始数据分析"); | |
125 | + long startTime = System.currentTimeMillis(); | |
126 | + ExecutorService pool = Executors.newFixedThreadPool(50); | |
127 | + CompletableFuture<Map<String, GaPunishVo>> f1 = CompletableFuture.supplyAsync(() -> gaPunishService.queryAll(), executor); | |
128 | + CompletableFuture<List<SpecialStudentVo>> f2 = CompletableFuture.supplyAsync(() -> specialStudentService.queryList(), executor); | |
129 | + CompletableFuture<List<String>> f3 = CompletableFuture.supplyAsync(() -> mzOrphanService.getIdentityS(), executor); | |
130 | + CompletableFuture<List<String>> f4 = CompletableFuture.supplyAsync(() -> mzUnsupportedService.getIdentityS(), executor); | |
131 | + CompletableFuture<List<String>> f5 = CompletableFuture.supplyAsync(() -> mzLeftBehindChildrenService.getIdentityS(), executor); | |
132 | + CompletableFuture<List<String>> f6 = CompletableFuture.supplyAsync(() -> mzAdoptionService.getIdentityS(), executor); | |
133 | + CompletableFuture<List<MrSchool>> f7 = CompletableFuture.supplyAsync(() -> highSchoolService.getList(), executor); | |
134 | + CompletableFuture<List<MrSchool>> f8 = CompletableFuture.supplyAsync(() -> primarySchoolService.getList(), executor); | |
135 | +// CompletableFuture<Map<String,String>> f9 = CompletableFuture.supplyAsync(() -> gaDemographicService.getIdentityS(), executor); | |
136 | + //行政处罚数据 | |
137 | +// Map<String,GaPunishVo> gaPunishVos = gaPunishService.queryAll(); | |
138 | + Map<String, GaPunishVo> gaPunishVos = new HashMap<>(); | |
139 | + gaPunishVos.putAll(f1.get()); | |
140 | +// List<SpecialStudentVo> specialStudentVos = specialStudentService.queryList(); | |
141 | + List<SpecialStudentVo> specialStudentVos = new ArrayList<>(); | |
142 | + specialStudentVos.addAll(f2.get()); | |
143 | + //孤儿数据 | |
144 | +// List<String> mzOrphans = mzOrphanService.getIdentityS(); | |
145 | + List<String> mzOrphans = new ArrayList<>(); | |
146 | + mzOrphans.addAll(f3.get()); | |
147 | + //无人抚养 | |
148 | +// List<String> mzUnsupporteds = mzUnsupportedService.getIdentityS(); | |
149 | + List<String> mzUnsupporteds = new ArrayList<>(); | |
150 | + mzUnsupporteds.addAll(f4.get()); | |
151 | + //留守儿童 | |
152 | +// List<String> mzLeftBehinds =mzLeftBehindChildrenService.getIdentityS(); | |
153 | + List<String> mzLeftBehinds = new ArrayList<>(); | |
154 | + mzLeftBehinds.addAll(f5.get()); | |
155 | + //领养 | |
156 | +// List<String> mzAdoptions =mzAdoptionService.getIdentityS(); | |
157 | + List<String> mzAdoptions = new ArrayList<>(); | |
158 | + mzAdoptions.addAll(f6.get()); | |
159 | + //获取初高中学生信息 | |
160 | +// List<MrSchool> highSchools = highSchoolService.getList(); | |
161 | + List<MrSchool> highSchools = new ArrayList<>(); | |
162 | + highSchools.addAll(f7.get()); | |
163 | + //获取幼小学生信息 | |
164 | +// List<MrSchool> primarySchools = primarySchoolService.getList(); | |
165 | + List<MrSchool> primarySchools = new ArrayList<>(); | |
166 | + primarySchools.addAll(f8.get()); | |
167 | + //人口基本信息小于18岁 | |
168 | +// Map<String,String> gaDemographics =gaDemographicService.getIdentityS(); | |
169 | +// Map<String,String> gaDemographics =new HashMap<>(); | |
170 | +// gaDemographics.putAll(f9.get()); | |
171 | + //关闭线程池 | |
172 | + pool.shutdown(); | |
173 | + Map<String, String> gaDemographics = gaDemographicService.getIdentityS(); | |
174 | + System.out.println("线程池查询用时" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); | |
175 | + long startTime1 = System.currentTimeMillis(); | |
176 | + //户籍信息 | |
177 | + Map<String,Family> familyMap = gaHouseholdService.getGaHouseholds(gaDemographics); | |
178 | +// Map<String,Family> familyMap = queryByThread(); | |
179 | + System.out.println("户籍信息数据查询时间" + (System.currentTimeMillis() - startTime1) / 1000 + "秒"); | |
180 | + System.out.println("判断初高中学生信息和人口基本信息的交集和差集开始时间" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); | |
181 | + judgeHighSchoolsAndDemographics(highSchools, gaDemographics, departs, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, familyMap, gaPunishVos, mzOrphans); | |
182 | + System.out.println("判断初高中学生信息和人口基本信息的交集和差集结束时间" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); | |
183 | + System.out.println("判断幼小学生信息和人口基本信息的交集和差集开始时间" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); | |
184 | + judgePrimarySchoolsAndDemographics(primarySchools, gaDemographics, departs, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, familyMap, gaPunishVos, mzOrphans); | |
185 | + System.out.println("判断幼小学生信息和人口基本信息的交集和差集结束时间" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); | |
186 | + System.out.println("所有时间" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); | |
187 | + } catch (Exception e) { | |
188 | + e.printStackTrace(); | |
189 | + } | |
190 | + } | |
191 | + | |
192 | + public Map<String,Family> queryByThread() { | |
193 | + Map<String,Family> familyMap = new HashMap<>(); | |
194 | + try { | |
195 | + long startTime = System.currentTimeMillis(); | |
196 | + // 数据集合大小,由调用者自己指定 | |
197 | + int listSize = gaDemographicService.count(); | |
198 | + // 开启的线程数 | |
199 | + int runSize = 25; | |
200 | + // 一个线程处理数据条数,如果库中有100条数据,开启20个线程,那么每一个线程执行的条数就是5条 | |
201 | + int count = listSize / runSize;//5 | |
202 | + // 创建一个线程池,数量和开启线程的数量一样 | |
203 | + ExecutorService executor = MultiThreadUtil.createThread(runSize); | |
204 | + // 计算sql语句中每个分页查询的起始和结束数据下标 | |
205 | + // 循环创建线程 | |
206 | + //此处调用具体的查询方法 | |
207 | + List<Callable<Map<String,Family>>> taskList = new ArrayList<Callable<Map<String,Family>>>();//创建任务 | |
208 | + System.out.println("开始查询线程总数" + runSize); | |
209 | + for (int i = 0; i < runSize; i++) { | |
210 | + int index = i * count; | |
211 | + int num = count; | |
212 | + Callable<Map<String,Family>> task= new DoTaskThread(gaDemographicService,index, num);//条件查询,name没有就给null | |
213 | + taskList.add(task); | |
214 | + } | |
215 | + List<Future<Map<String,Family>>> futureList = executor.invokeAll(taskList); | |
216 | + System.out.println(futureList.size()); | |
217 | + if (futureList != null && futureList.size() > 0){ | |
218 | + for (Future<Map<String,Family>> future:futureList) { | |
219 | + if(future.get() != null) { | |
220 | + familyMap.putAll(future.get()); | |
221 | + } | |
222 | + } | |
223 | + } | |
224 | + executor.shutdown();//关闭线程 | |
225 | + long endTime = System.currentTimeMillis(); | |
226 | + long s = ((endTime - startTime) / 1000); | |
227 | + System.out.println(runSize + "个线程查询花了" + s + "秒" ); | |
228 | + System.out.println("总条数"+familyMap.size() ); | |
229 | + } catch (Exception e) { | |
230 | + e.printStackTrace(); | |
231 | + log.info(String.valueOf(e)); | |
232 | + } | |
233 | + return familyMap; | |
234 | + } | |
235 | + | |
236 | + /** | |
237 | + * 来源数据 | |
238 | + */ | |
239 | + public void getSourceData() { | |
240 | + long startTime = System.currentTimeMillis(); | |
241 | + List<SourceData> sourceDataList = new ArrayList<>(); | |
242 | + try { | |
243 | + System.out.println("来源数据查询"); | |
244 | + | |
245 | + //公安 | |
246 | + Integer gaTotal = gaDemographicService.count() + gaHouseholdService.count() + gaPunishService.count() + gaJuvenilesStayService.count(); | |
247 | + LambdaQueryWrapper<SourceData> ga = new LambdaQueryWrapper<>(); | |
248 | + ga.eq(SourceData::getName, SourceData.SOURCE_UNIT_GA); | |
249 | + ga.orderByDesc(SourceData::getBatch); | |
250 | + ga.last("limit 1"); | |
251 | + SourceData gaS = sourceService.getOne(ga); | |
252 | + SourceData gaData = new SourceData(); | |
253 | + if (oConvertUtils.isNotEmpty(gaS) && oConvertUtils.isNotEmpty(gaS.getBatch())) { | |
254 | + gaData.setBatch(gaS.getBatch() + 1); | |
255 | + } else { | |
256 | + gaData.setBatch(1); | |
257 | + } | |
258 | + gaData.setTotal(gaTotal); | |
259 | + gaData.setCreateTime(new Date()); | |
260 | + gaData.setName(SourceData.SOURCE_UNIT_GA); | |
261 | + sourceDataList.add(gaData); | |
262 | + //民政 | |
263 | + Integer mzTotal = mzAdoptionService.count() + mzUnsupportedService.count() + mzLeftBehindChildrenService.count() + mzOrphanService.count(); | |
264 | + SourceData mzData = new SourceData(); | |
265 | + LambdaQueryWrapper<SourceData> mz = new LambdaQueryWrapper<>(); | |
266 | + mz.eq(SourceData::getName, SourceData.SOURCE_UNIT_MZ); | |
267 | + mz.orderByDesc(SourceData::getBatch); | |
268 | + mz.last("limit 1"); | |
269 | + SourceData mzS = sourceService.getOne(mz); | |
270 | + if (oConvertUtils.isNotEmpty(mzS) && oConvertUtils.isNotEmpty(mzS.getBatch())) { | |
271 | + mzData.setBatch(mzS.getBatch() + 1); | |
272 | + } else { | |
273 | + mzData.setBatch(1); | |
274 | + } | |
275 | + mzData.setTotal(mzTotal); | |
276 | + mzData.setCreateTime(new Date()); | |
277 | + mzData.setName(SourceData.SOURCE_UNIT_MZ); | |
278 | + sourceDataList.add(mzData); | |
279 | + //学校 | |
280 | + Integer schoolTotal = highSchoolService.count() + primarySchoolService.count() + specialStudentService.count(); | |
281 | + SourceData schoolData = new SourceData(); | |
282 | + LambdaQueryWrapper<SourceData> school = new LambdaQueryWrapper<>(); | |
283 | + school.eq(SourceData::getName, SourceData.SOURCE_UNIT_SCHOOL); | |
284 | + school.orderByDesc(SourceData::getBatch); | |
285 | + school.last("limit 1"); | |
286 | + SourceData schoolS = sourceService.getOne(school); | |
287 | + if (oConvertUtils.isNotEmpty(schoolS) && oConvertUtils.isNotEmpty(schoolS.getBatch())) { | |
288 | + schoolData.setBatch(schoolS.getBatch() + 1); | |
289 | + } else { | |
290 | + schoolData.setBatch(1); | |
291 | + } | |
292 | + schoolData.setTotal(schoolTotal); | |
293 | + schoolData.setCreateTime(new Date()); | |
294 | + schoolData.setName(SourceData.SOURCE_UNIT_SCHOOL); | |
295 | + sourceDataList.add(schoolData); | |
296 | + sourceService.saveBatch(sourceDataList); | |
297 | + } catch (Exception e) { | |
298 | + e.printStackTrace(); | |
299 | + log.info(String.valueOf(e)); | |
300 | + } | |
301 | + System.out.println("来源数据查询" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); | |
302 | +// return sourceDataList; | |
303 | + } | |
304 | + | |
305 | + | |
306 | + /** | |
307 | + * 判断初高中学生信息和人口基本信息的交集和差集 | |
308 | + */ | |
309 | + public void judgeHighSchoolsAndDemographics(List<MrSchool> highSchools, Map<String, String> gaDemographics, List<SysDepart> departs, | |
310 | + List<SpecialStudentVo> specialStudentVos, List<String> mzUnsupporteds, List<String> mzLeftBehinds, | |
311 | + List<String> mzAdoptions, Map<String, Family> gaHouseholds, Map<String, GaPunishVo> gaPunishVos, List<String> mzOrphans | |
312 | + ) { | |
313 | + try { | |
314 | + System.out.println("判断初高中学生信息和人口基本信息的交集和差集zongsuo"+highSchools.size()); | |
315 | + long startTime = System.currentTimeMillis(); | |
316 | + //不在人口基本信息的初高中学生信息 | |
317 | + List<MrSchool> highSchoolDifference = new ArrayList<>(); | |
318 | + //不在初高中学生信息里的的人口基本信息 | |
319 | + List<String> gaDemographicDifference = new ArrayList<>(); | |
320 | + //初高中学生信息和人口基本信息的交集 | |
321 | + List<MrSchool> highSchoolIntersection = new ArrayList<>(); | |
322 | + if (oConvertUtils.isNotEmpty(highSchools)) { | |
323 | + highSchools.parallelStream().forEach(h -> { | |
324 | + if (oConvertUtils.isNotEmpty(gaDemographics) && oConvertUtils.isNotEmpty(gaDemographics.get(h.getIdentity()))) { | |
325 | + if (h.getIdentity().equals(gaDemographics.get(h.getIdentity()))) { | |
326 | + //交集 | |
327 | + highSchoolIntersection.add(h); | |
328 | + } else { | |
329 | + //差集 | |
330 | + gaDemographicDifference.add(gaDemographics.get(h.getIdentity())); | |
331 | + } | |
332 | + } else { | |
333 | + //差集 | |
334 | + highSchoolDifference.add(h); | |
335 | + } | |
336 | + }); | |
337 | + } | |
338 | + System.out.println("初高中交集数"+highSchoolIntersection.size()); | |
339 | + System.out.println("不在初高中学生信息里的的人口基本信息"+gaDemographicDifference.size()); | |
340 | + System.out.println("不在人口基本信息的初高中学生信息"+highSchoolDifference.size()); | |
341 | + doSchoolDifference(highSchoolDifference, departs, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans,gaHouseholds); | |
342 | + doIntersection(highSchoolIntersection, departs, gaHouseholds, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans); | |
343 | + doDemographicDifference(gaDemographicDifference, departs, gaHouseholds, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans); | |
344 | + } catch (Exception e) { | |
345 | + e.printStackTrace(); | |
346 | + log.info(String.valueOf(e)); | |
347 | + } | |
348 | + } | |
349 | + | |
350 | + /** | |
351 | + * 判断幼小学生信息和人口基本信息的交集和差集 | |
352 | + */ | |
353 | + public void judgePrimarySchoolsAndDemographics(List<MrSchool> primarySchools, Map<String, String> gaDemographics, List<SysDepart> departs, | |
354 | + List<SpecialStudentVo> specialStudentVos, List<String> mzUnsupporteds, List<String> mzLeftBehinds, | |
355 | + List<String> mzAdoptions, Map<String, Family> gaHouseholds, Map<String, GaPunishVo> gaPunishVos, List<String> mzOrphans | |
356 | + ) { | |
357 | + try { | |
358 | + System.out.println("判断幼小学生信息和人口基本信息的交集和差集总数"+primarySchools.size()); | |
359 | + long startTime = System.currentTimeMillis(); | |
360 | + //不在人口基本信息的幼小学生信息 | |
361 | + List<MrSchool> primarySchoolDifference = new ArrayList<>(); | |
362 | + //不在幼小学生信息里的的人口基本信息 | |
363 | + List<String> gaDemographicDifference = new ArrayList<>(); | |
364 | + //幼小学生信息和人口基本信息的交集 | |
365 | + List<MrSchool> primarySchoolIntersection = new ArrayList<>(); | |
366 | + if (oConvertUtils.isNotEmpty(primarySchools)) { | |
367 | + primarySchools.parallelStream().forEach(p -> { | |
368 | + if (oConvertUtils.isNotEmpty(gaDemographics) && oConvertUtils.isNotEmpty(p) && oConvertUtils.isNotEmpty(gaDemographics.get(p.getIdentity()))) { | |
369 | + if (p.getIdentity().equals(gaDemographics.get(p.getIdentity()))) { | |
370 | + //交集 | |
371 | + primarySchoolIntersection.add(p); | |
372 | + } else { | |
373 | + //差集 | |
374 | + gaDemographicDifference.add(gaDemographics.get(p.getIdentity())); | |
375 | + } | |
376 | + } else { | |
377 | + //差集 | |
378 | + primarySchoolDifference.add(p); | |
379 | + } | |
380 | + }); | |
381 | + } | |
382 | + System.out.println("不在人口基本信息的幼小学生信息"+primarySchoolDifference.size()); | |
383 | + System.out.println("不在幼小学生信息里的的人口基本信息"+gaDemographicDifference.size()); | |
384 | + System.out.println("幼小学生信息和人口基本信息的交集"+primarySchoolIntersection.size()); | |
385 | + doSchoolDifference(primarySchoolDifference, departs, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans,gaHouseholds); | |
386 | + doIntersection(primarySchoolIntersection, departs, gaHouseholds, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans); | |
387 | + doDemographicDifference(gaDemographicDifference, departs, gaHouseholds, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans); | |
388 | + } catch (Exception e) { | |
389 | + e.printStackTrace(); | |
390 | + log.info(String.valueOf(e)); | |
391 | + } | |
392 | + } | |
393 | + | |
394 | + //处理有人口基本信息但没有学籍信息的数据 | |
395 | + public void doDemographicDifference(List<String> gaDemographicDifference, List<SysDepart> departs, Map<String, Family> gaHouseholds, List<SpecialStudentVo> specialStudentVos, | |
396 | + List<String> mzUnsupporteds, List<String> mzLeftBehinds, List<String> mzAdoptions, Map<String, GaPunishVo> gaPunishVos, | |
397 | + List<String> mzOrphans) { | |
398 | + try { | |
399 | + long startTime = System.currentTimeMillis(); | |
400 | + System.out.println("处理有人口基本信息但没有学籍信息的数据开始***********************" + gaDemographicDifference.size()); | |
401 | + Map<String, Minor> minorMap = new HashMap<>(); | |
402 | + if (oConvertUtils.isNotEmpty(gaDemographicDifference) && oConvertUtils.isNotEmpty(gaHouseholds)) { | |
403 | + gaDemographicDifference.parallelStream().forEach(idCard -> { | |
404 | + if (oConvertUtils.isNotEmpty(idCard) && oConvertUtils.isNotEmpty(gaHouseholds.get(idCard))) { | |
405 | + Minor minor = new Minor(); | |
406 | + minor.setSchool(Minor.SCHOOL_STATUS_YES); | |
407 | + minor.setName(gaHouseholds.get(idCard).getName()); | |
408 | + minor.setGender(Integer.parseInt(IDNumberUtil.judgeGender(idCard))); | |
409 | + minor.setAddress(gaHouseholds.get(idCard).getAddress()); | |
410 | + minor.setIdentity(idCard); | |
411 | + minor.setNumber(gaHouseholds.get(idCard).getNumber()); | |
412 | + minor.setHouseholdNum(gaHouseholds.get(idCard).getHouseholdNum()); | |
413 | + minor.setDivision(gaHouseholds.get(idCard).getDivision()); | |
414 | + minorMap.put(idCard, minor); | |
415 | + } | |
416 | + }); | |
417 | + } | |
418 | + System.out.println("处理有人口基本信息但没有学籍信息的数据的所属单位开始" + (System.currentTimeMillis() - startTime) / 1000); | |
419 | + if (oConvertUtils.isNotEmpty(minorMap) && oConvertUtils.isNotEmpty(departs) && departs.size() > 0) { | |
420 | + for (SysDepart d : departs) { | |
421 | + for (Map.Entry<String, Minor> ga : minorMap.entrySet()) { | |
422 | + Minor minor = ga.getValue(); | |
423 | + if (oConvertUtils.isNotEmpty(d) && oConvertUtils.isNotEmpty(d.getAbbreviation()) && oConvertUtils.isNotEmpty(minor) && oConvertUtils.isNotEmpty(minor.getDivision())) { | |
424 | + if (d.getAbbreviation().contains(minor.getDivision())) { | |
425 | + minor.setSysOrgCode(d.getOrgCode()); | |
426 | + } | |
427 | + } | |
428 | + } | |
429 | + } | |
430 | + } | |
431 | + System.out.println("处理有人口基本信息但没有学籍信息的数据的所属单位结束" + (System.currentTimeMillis() - startTime) / 1000); | |
432 | + System.out.println("处理有人口基本信息但没有学籍信息的数据jieshu**********************" + minorMap.size()); | |
433 | + getSpecialStudent(minorMap, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans,gaHouseholds); | |
434 | + } catch (Exception e) { | |
435 | + e.printStackTrace(); | |
436 | + log.info(String.valueOf(e)); | |
437 | + } | |
438 | + } | |
439 | + | |
440 | + //处理交集数据 | |
441 | + public void doIntersection(List<MrSchool> intersection, List<SysDepart> departs, Map<String, Family> gaHouseholds, List<SpecialStudentVo> specialStudentVos, | |
442 | + List<String> mzUnsupporteds, List<String> mzLeftBehinds, List<String> mzAdoptions, Map<String, GaPunishVo> gaPunishVos, | |
443 | + List<String> mzOrphans) { | |
444 | + long startTime = System.currentTimeMillis(); | |
445 | + try { | |
446 | + Map<String, Minor> minorMap = new HashMap<>(); | |
447 | + System.out.println("***********************交集总数**********************************************" + intersection.size()); | |
448 | + System.out.println("***********************人口信息总数**********************************************" + gaHouseholds.size()); | |
449 | + System.out.println("交集数据里的所属单位开始" + (System.currentTimeMillis() - startTime) / 1000); | |
450 | + if (oConvertUtils.isNotEmpty(intersection) && oConvertUtils.isNotEmpty(departs) && departs.size() > 0) { | |
451 | + for (SysDepart d : departs) { | |
452 | + intersection.parallelStream().forEach(i -> { | |
453 | + if (oConvertUtils.isNotEmpty(i) && oConvertUtils.isNotEmpty(i.getSchool()) && oConvertUtils.isNotEmpty(d) && oConvertUtils.isNotEmpty(d.getCommonCode())) { | |
454 | + if (d.getCommonCode().contains(i.getSchool())) { | |
455 | + i.setSysOrgCode(d.getOrgCode()); | |
456 | + } | |
457 | + } | |
458 | + }); | |
459 | + } | |
460 | + } | |
461 | + System.out.println("交集数据里的所属单位结束总数"+intersection.size()+"交集数据里的所属单位结束" + (System.currentTimeMillis() - startTime) / 1000); | |
462 | + Date creatDate = new Date(); | |
463 | + if (oConvertUtils.isNotEmpty(intersection)) { | |
464 | + intersection.parallelStream().forEach(i -> { | |
465 | + if (oConvertUtils.isNotEmpty(i) && oConvertUtils.isNotEmpty(i.getIdentity())) { | |
466 | + Minor minor = new Minor(); | |
467 | + //身份证号 | |
468 | + String idCard = i.getIdentity(); | |
469 | + if (oConvertUtils.isNotEmpty(gaHouseholds) && oConvertUtils.isNotEmpty(gaHouseholds.get(idCard))) { | |
470 | + minor.setSchool(Minor.SCHOOL_STATUS_NO); | |
471 | + minor.setSchoolName(i.getSchool()); | |
472 | + minor.setStartYear(i.getAdmissionDate()); | |
473 | + minor.setNumber(gaHouseholds.get(idCard).getNumber()); | |
474 | + minor.setHouseholdNum(gaHouseholds.get(idCard).getHouseholdNum()); | |
475 | + } else { | |
476 | + minor.setSchool(Minor.SCHOOL_STATUS_YES); | |
477 | + } | |
478 | + if (oConvertUtils.isNotEmpty(i.getName())) { | |
479 | + minor.setName(i.getName()); | |
480 | + } | |
481 | + if (oConvertUtils.isNotEmpty(i.getAddress())) { | |
482 | + minor.setAddress(i.getAddress()); | |
483 | + } | |
484 | + if (oConvertUtils.isNotEmpty(idCard)) { | |
485 | + minor.setGender(Integer.parseInt(IDNumberUtil.judgeGender(idCard))); | |
486 | + } | |
487 | + minor.setIdentity(idCard); | |
488 | + minor.setSysOrgCode(i.getSysOrgCode()); | |
489 | + minor.setCreateTime(creatDate); | |
490 | + i.setCreateTime(creatDate); | |
491 | + minorMap.put(idCard, minor); | |
492 | + } | |
493 | + }); | |
494 | + } | |
495 | + System.out.println("户籍信息里的未成年人的单位" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); | |
496 | + long startTime1 = System.currentTimeMillis(); | |
497 | +// schoolService.insertBatch(intersection); | |
498 | + resultSchools.addAll(intersection); | |
499 | + System.out.println("人口信息he交集总数总数" + minorMap.size()); | |
500 | + getSpecialStudent(minorMap, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans,gaHouseholds); | |
501 | + } catch (Exception e) { | |
502 | + e.printStackTrace(); | |
503 | + log.info(String.valueOf(e)); | |
504 | + } | |
505 | + } | |
506 | + | |
507 | + //处理有学籍信息但没有人口基本信息的数据 | |
508 | + public void doSchoolDifference(List<MrSchool> difference, List<SysDepart> departs, List<SpecialStudentVo> specialStudentVos, | |
509 | + List<String> mzUnsupporteds, List<String> mzLeftBehinds, List<String> mzAdoptions, Map<String, GaPunishVo> gaPunishVos, | |
510 | + List<String> mzOrphans, Map<String, Family> gaHouseholds) { | |
511 | + try { | |
512 | + Map<String, Minor> minorMap = new HashMap<>(); | |
513 | + long startTime = System.currentTimeMillis(); | |
514 | + System.out.println("根据差集数据判断所属单位" + difference.size()); | |
515 | + System.out.println("未成年人总数" + difference.size()); | |
516 | + Date creatTime = new Date(); | |
517 | + if (oConvertUtils.isNotEmpty(difference) && oConvertUtils.isNotEmpty(departs) && departs.size() > 0) { | |
518 | + for (SysDepart d : departs) { | |
519 | + difference.parallelStream().forEach(m -> { | |
520 | + Minor minor = new Minor(); | |
521 | + if (oConvertUtils.isNotEmpty(m)) { | |
522 | + if (oConvertUtils.isNotEmpty(d) && oConvertUtils.isNotEmpty(d.getCommonCode()) && oConvertUtils.isNotEmpty(m.getSchool())) { | |
523 | + if (d.getCommonCode().contains(m.getSchool()) && oConvertUtils.isNotEmpty(minorMap.get(m.getIdentity()))) { | |
524 | + minor.setSysOrgCode(d.getOrgCode()); | |
525 | + m.setSysOrgCode(d.getOrgCode()); | |
526 | + } | |
527 | + } | |
528 | + minor.setSchool(Minor.SCHOOL_STATUS_NO); | |
529 | + if (oConvertUtils.isNotEmpty(m.getName())) { | |
530 | + minor.setName(m.getName()); | |
531 | + } | |
532 | + minor.setGender(Integer.valueOf(IDNumberUtil.judgeGender(m.getIdentity()))); | |
533 | + if (oConvertUtils.isNotEmpty(m.getAddress())) { | |
534 | + minor.setAddress(m.getAddress()); | |
535 | + } | |
536 | + if (oConvertUtils.isNotEmpty(m.getSchool())) { | |
537 | + minor.setAddress(m.getSchool()); | |
538 | + } | |
539 | + if (oConvertUtils.isNotEmpty(m.getAdmissionDate())) { | |
540 | + minor.setAddress(m.getAdmissionDate()); | |
541 | + } | |
542 | + minor.setIdentity(m.getIdentity()); | |
543 | + minor.setCreateTime(creatTime); | |
544 | + m.setCreateTime(creatTime); | |
545 | + minorMap.put(m.getIdentity(), minor); | |
546 | + } | |
547 | + | |
548 | + }); | |
549 | + } | |
550 | + } | |
551 | + System.out.println("根据不在人口基础信息里的学生和单位信息判断所属单位" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); | |
552 | + long startTime1 = System.currentTimeMillis(); | |
553 | +// schoolService.insertBatch(difference); | |
554 | + resultSchools.addAll(difference); | |
555 | + System.out.println("有学籍信息但没有人口基本信息的数据" + minorMap.size()); | |
556 | + getSpecialStudent(minorMap, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans,gaHouseholds); | |
557 | + } catch (Exception e) { | |
558 | + e.printStackTrace(); | |
559 | + log.info(String.valueOf(e)); | |
560 | + } | |
561 | + | |
562 | + } | |
563 | + | |
564 | + /** | |
565 | + * 根据特殊学校信息判断未成年人特殊原因和备注 | |
566 | + * | |
567 | + * @param minors | |
568 | + */ | |
569 | + public void getSpecialStudent(Map<String, Minor> minors, List<SpecialStudentVo> specialStudentVos, List<String> mzUnsupporteds, List<String> mzLeftBehinds, | |
570 | + List<String> mzAdoptions, Map<String, GaPunishVo> gaPunishVos, List<String> mzOrphans, Map<String, Family> gaHouseholds) { | |
571 | + long startTime = System.currentTimeMillis(); | |
572 | + try { | |
573 | + System.out.println("根据特殊学校信息判断未成年人重点关注原因和备注"); | |
574 | + if (oConvertUtils.isNotEmpty(specialStudentVos) && oConvertUtils.isNotEmpty(minors)) { | |
575 | + for (SpecialStudentVo s : specialStudentVos) { | |
576 | + if (oConvertUtils.isNotEmpty(s.getIdentity()) && oConvertUtils.isNotEmpty(minors.get(s.getIdentity()))) { | |
577 | +// if (minors.get(s.getIdentity()).getIdentity().equals(s.getIdentity())) { | |
578 | + minors.get(s.getIdentity()).setSpecialReason(s.getReason()); | |
579 | + minors.get(s.getIdentity()).setRemark(s.getRemark()); | |
580 | +// } | |
581 | + } | |
582 | + } | |
583 | + } | |
584 | + System.out.println("根据特殊学校信息判断未成年人重点关注原因和备注" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); | |
585 | + getUnsupported(minors, mzUnsupporteds, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans,gaHouseholds); | |
586 | + } catch (Exception e) { | |
587 | + e.printStackTrace(); | |
588 | + log.info(String.valueOf(e)); | |
589 | + } | |
590 | + | |
591 | + } | |
592 | + | |
593 | + /** | |
594 | + * 无人抚养 | |
595 | + */ | |
596 | + public void getUnsupported(Map<String, Minor> minors, List<String> mzUnsupporteds, List<String> mzLeftBehinds, | |
597 | + List<String> mzAdoptions, Map<String, GaPunishVo> gaPunishVos, List<String> mzOrphans, Map<String, Family> gaHouseholds) { | |
598 | + long startTime = System.currentTimeMillis(); | |
599 | + try { | |
600 | + System.out.println("无人抚养"); | |
601 | + | |
602 | + if (oConvertUtils.isNotEmpty(minors) && oConvertUtils.isNotEmpty(mzUnsupporteds)) { | |
603 | + for (String s : mzUnsupporteds) { | |
604 | + if (oConvertUtils.isNotEmpty(s) && oConvertUtils.isNotEmpty(minors.get(s))) { | |
605 | + minors.get(s).setReason(Minor.ATTENTION_REASON_UNSUPPORTED); | |
606 | + } | |
607 | + } | |
608 | + } | |
609 | + System.out.println("无人抚养" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); | |
610 | + getAdoption(minors, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans,gaHouseholds); | |
611 | + } catch (Exception e) { | |
612 | + e.printStackTrace(); | |
613 | + log.info(String.valueOf(e)); | |
614 | + } | |
615 | + | |
616 | + } | |
617 | + | |
618 | + /** | |
619 | + * 收养 | |
620 | + */ | |
621 | + public void getAdoption(Map<String, Minor> minors, List<String> mzLeftBehinds, List<String> mzAdoptions, Map<String, GaPunishVo> gaPunishVos, List<String> mzOrphans, Map<String, Family> gaHouseholds) { | |
622 | + long startTime = System.currentTimeMillis(); | |
623 | + try { | |
624 | + System.out.println("收养"); | |
625 | + if (oConvertUtils.isNotEmpty(minors) && oConvertUtils.isNotEmpty(mzAdoptions)) { | |
626 | + for (String s : mzAdoptions) { | |
627 | + if (oConvertUtils.isNotEmpty(s) && oConvertUtils.isNotEmpty(minors.get(s)) ) { | |
628 | + minors.get(s).setReason(Minor.ATTENTION_REASON_UNSUPPORTED); | |
629 | + } | |
630 | + } | |
140 | 631 | } |
141 | - } | |
142 | - } | |
143 | - doFamilyMajors(familyMajors);//处理成年人 | |
144 | - doFamilyMinors(familyMinors);//处理成年人 | |
145 | - } | |
146 | - | |
147 | - public void doFamilyMajors(List<Family> familyMajors){ | |
148 | - if(oConvertUtils.isNotEmpty(gaPunishVos) && oConvertUtils.isNotEmpty(familyMajors)){ | |
149 | - for(GaPunishVo p:gaPunishVos){ | |
150 | - for(Family f:familyMajors){ | |
151 | - if(p.getDxsfzh().equals(f.getIdentity())){ | |
152 | - f.setOther(p.getAjmc()); | |
153 | - f.setReason(p.getSldwmc()); | |
154 | - f.setCrime(Family.IS_CRIME); | |
155 | - gaPunishVos.remove(p); | |
156 | - }else { | |
157 | - f.setCrime(Family.IS_NOT_CRIME); | |
158 | - } | |
632 | + System.out.println("收养" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); | |
633 | + getChildren(minors, mzLeftBehinds, gaPunishVos, mzOrphans,gaHouseholds); | |
634 | + } catch (Exception e) { | |
635 | + e.printStackTrace(); | |
636 | + log.info(String.valueOf(e)); | |
637 | + } | |
638 | + | |
639 | + } | |
640 | + | |
641 | + /** | |
642 | + * 留守儿童 | |
643 | + */ | |
644 | + public void getChildren(Map<String, Minor> minors, List<String> mzLeftBehinds, Map<String, GaPunishVo> gaPunishVos, List<String> mzOrphans, Map<String, Family> gaHouseholds) { | |
645 | + long startTime = System.currentTimeMillis(); | |
646 | + try { | |
647 | + System.out.println("留守儿童"); | |
648 | + if (oConvertUtils.isNotEmpty(minors) && oConvertUtils.isNotEmpty(mzLeftBehinds)) { | |
649 | + for (String s : mzLeftBehinds) { | |
650 | + if (oConvertUtils.isNotEmpty(s) && oConvertUtils.isNotEmpty(minors.get(s)) ) { | |
651 | + minors.get(s).setReason(Minor.ATTENTION_REASON_CHILDREN); | |
652 | + } | |
653 | + } | |
654 | + } | |
655 | + System.out.println("留守儿童" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); | |
656 | + getOrphan(minors, mzOrphans, gaPunishVos,gaHouseholds); | |
657 | + } catch (Exception e) { | |
658 | + e.printStackTrace(); | |
659 | + log.info(String.valueOf(e)); | |
660 | + } | |
661 | + | |
662 | + } | |
663 | + | |
664 | + /** | |
665 | + * 孤儿 | |
666 | + */ | |
667 | + public void getOrphan(Map<String, Minor> minors, List<String> mzOrphans, Map<String, GaPunishVo> gaPunishVos, Map<String, Family> gaHouseholds) { | |
668 | + long startTime = System.currentTimeMillis(); | |
669 | + try { | |
670 | + System.out.println("孤儿"); | |
671 | + if (oConvertUtils.isNotEmpty(minors) && oConvertUtils.isNotEmpty(mzOrphans)) { | |
672 | + for (String s : mzOrphans) { | |
673 | + if (oConvertUtils.isNotEmpty(s) && oConvertUtils.isNotEmpty(minors.get(s)) ) { | |
674 | + minors.get(s).setReason(Minor.ATTENTION_REASON_ORPHAN); | |
675 | + } | |
676 | + } | |
159 | 677 | } |
160 | - } | |
161 | - } | |
162 | -// familyService.saveBatch(familyMajors); | |
163 | - } | |
164 | - | |
165 | - public void doFamilyMinors(List<Family> familyMinors){ | |
166 | - if(oConvertUtils.isNotEmpty(specialStudentVos) && oConvertUtils.isNotEmpty(familyMinors)){ | |
167 | - for (SpecialStudentVo s:specialStudentVos){ | |
168 | - for(Family f:familyMinors){ | |
169 | - Minor minor=new Minor(); | |
170 | - if(s.getIdentity().equals(f.getIdentity())){ | |
171 | - minor.setReason(s.getReason()); | |
172 | - minor.setRemark(s.getRemark()); | |
173 | - specialStudentVos.remove(s); | |
174 | - } | |
175 | - minor.setAddress(f.getAddress()); | |
176 | - minor.setGender(f.getGender()); | |
177 | - minor.setHouseholdNum(f.getHouseholdNum()); | |
178 | - minor.setName(f.getName()); | |
179 | - minor.setRelation(f.getRelation()); | |
180 | - minor.setNumber(f.getNumber()); | |
181 | - minor.setSysOrgCode(f.getSysOrgCode()); | |
678 | + System.out.println("孤儿" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); | |
679 | + getFamilyRelationship(minors, gaHouseholds,gaPunishVos); | |
680 | + } catch (Exception e) { | |
681 | + e.printStackTrace(); | |
682 | + log.info(String.valueOf(e)); | |
683 | + } | |
684 | + | |
685 | + } | |
686 | + | |
687 | + | |
688 | + /** | |
689 | + * 建立未成年人和家庭成员关系 | |
690 | + */ | |
691 | + public void getFamilyRelationship(Map<String, Minor> minors, Map<String, Family> gaHouseholds, Map<String, GaPunishVo> gaPunishVos) { | |
692 | + long startTime = System.currentTimeMillis(); | |
693 | + try { | |
694 | + List<Family> familys = new ArrayList<>(); | |
695 | + //犯罪人员身份证号-户号关系 | |
696 | + Map<String, String> idCards = new HashMap<>(); | |
697 | + //户号-家庭成员关系 | |
698 | + Map<String, List<Family>> familyMaps = new HashMap<>(); | |
699 | + //人员身份证号-与监护人的关系 | |
700 | + Map<String, String> relations = new HashMap<>(); | |
701 | + //户号-与监护人 | |
702 | + Map<String, Family> guardians = new HashMap<>(); | |
703 | + if (oConvertUtils.isNotEmpty(gaHouseholds)) { | |
704 | + for (Map.Entry<String, Family> m : gaHouseholds.entrySet()) { | |
705 | + String mapKey = m.getKey(); | |
706 | + Family family = m.getValue(); | |
707 | + if (oConvertUtils.isNotEmpty(family) && oConvertUtils.isNotEmpty(family.getHouseholdNum()) && oConvertUtils.isNotEmpty(family.getIdentity())) { | |
708 | + String houseNum = family.getHouseholdNum(); | |
709 | + List<Family> list = new ArrayList<>(); | |
710 | + if (oConvertUtils.isNotEmpty(family.getRelation())) { | |
711 | + relations.put(family.getIdentity(), family.getRelation()); | |
712 | + } | |
713 | + if (oConvertUtils.isNotEmpty(familyMaps) && oConvertUtils.isNotEmpty(familyMaps.get(houseNum))) { | |
714 | + list.addAll(familyMaps.get(houseNum)); | |
715 | + | |
716 | + } else { | |
717 | + list.add(family); | |
718 | + } | |
719 | + if (oConvertUtils.isNotEmpty(family.getCrime()) && family.getCrime().equals(Family.IS_CRIME)) { | |
720 | + idCards.put(family.getIdentity(), houseNum); | |
721 | + } | |
722 | + if (oConvertUtils.isNotEmpty(family.getRelation()) && family.getRelation().contains("户主")) { | |
723 | + guardians.put(houseNum, family); | |
724 | + } | |
725 | + familyMaps.put(houseNum, list); | |
726 | + } | |
727 | + if (oConvertUtils.isNotEmpty(family)) { | |
728 | + if (oConvertUtils.isNotEmpty(gaPunishVos) && oConvertUtils.isNotEmpty(gaPunishVos.get(mapKey))) { | |
729 | + family.setCrime(Family.IS_CRIME); | |
730 | + if (oConvertUtils.isNotEmpty(gaPunishVos.get(mapKey).getAjmc())) { | |
731 | + family.setOther(gaPunishVos.get(mapKey).getAjmc()); | |
732 | + } | |
733 | + if (oConvertUtils.isNotEmpty(gaPunishVos.get(mapKey).getSldwmc())) { | |
734 | + family.setReason(gaPunishVos.get(mapKey).getSldwmc()); | |
735 | + } | |
736 | + } else { | |
737 | + family.setCrime(Family.IS_NOT_CRIME); | |
738 | + } | |
739 | + } | |
740 | + } | |
182 | 741 | } |
183 | - } | |
184 | - } | |
185 | - familyService.saveBatch(familyMinors); | |
186 | -// minorService.saveBatch(); | |
187 | - } | |
188 | - | |
189 | - public void queryByThread(List<SysDepart> departs) { | |
190 | - long startTime = System.currentTimeMillis(); | |
191 | - // 数据集合大小,由调用者自己指定 | |
192 | - int listSize = gaDemographicService.count(); | |
193 | - // 开启的线程数 | |
194 | - int runSize = 20; | |
195 | - // 一个线程处理数据条数,如果库中有100条数据,开启20个线程,那么每一个线程执行的条数就是5条 | |
196 | - int count = listSize / runSize;//5 | |
197 | - // 创建一个线程池,数量和开启线程的数量一样 | |
198 | - ExecutorService executor = MultiThreadUtil.createThread(runSize); | |
199 | - // 计算sql语句中每个分页查询的起始和结束数据下标 | |
200 | - // 循环创建线程 | |
201 | - //此处调用具体的查询方法 | |
202 | - System.out.println("开始查询线程总数"+runSize); | |
203 | - for (int i = 0; i < runSize; i++) { | |
204 | - int index = i * count; | |
205 | - int num = count; | |
206 | - executor.execute(new Runnable() { | |
207 | - @Override | |
208 | - public void run() { | |
209 | - try { | |
210 | - //查询的结果如何保存下来,会不会存在覆盖的问题 | |
211 | - System.out.println("每次查询的下标:" + index + ",条数:" + num); | |
212 | - List<Family> familyVos=gaDemographicService.queryPageList(index,num); | |
213 | - //行政处罚数据查询 | |
214 | -// gaPunishService | |
215 | - //这里做处理信息的方法 | |
216 | - analyzeData(familyVos,departs); | |
217 | - } catch (Exception e) { | |
218 | - System.out.println("查询失败" + e); | |
219 | - } | |
742 | + | |
743 | + System.out.println("建立未成年人和家庭成员关系"); | |
744 | + getFamilyCrime(minors, idCards, familyMaps, guardians, relations); | |
745 | + } catch (Exception e) { | |
746 | + e.printStackTrace(); | |
747 | + log.info(String.valueOf(e)); | |
748 | + } | |
749 | + } | |
750 | + | |
751 | + /** | |
752 | + * 家庭成员是否犯罪 | |
753 | + * | |
754 | + * @param minors | |
755 | + * @param idCards | |
756 | + * @param familyMaps | |
757 | + */ | |
758 | + public void getFamilyCrime(Map<String, Minor> minors, Map<String, String> idCards, Map<String, List<Family>> familyMaps, Map<String, Family> guardians, Map<String, String> relations) { | |
759 | + long startTime = System.currentTimeMillis(); | |
760 | + try { | |
761 | + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); | |
762 | + System.out.println("家庭成员是否犯罪"); | |
763 | + List<Minor> minorList = new ArrayList<>(); | |
764 | + List<Family> familys = new ArrayList<>(); | |
765 | + Date createTime = new Date(); | |
766 | + if (oConvertUtils.isNotEmpty(minors)) { | |
767 | + for (Map.Entry<String, Minor> m : minors.entrySet()) { | |
768 | + String idCard = m.getKey(); | |
769 | + Minor minor = m.getValue(); | |
770 | + minor.setCreateTime(createTime); | |
771 | + if (oConvertUtils.isNotEmpty(user) && oConvertUtils.isNotEmpty(user.getId())) { | |
772 | + minor.setCreateBy(user.getId()); | |
773 | + } | |
774 | + //判断家庭成员是否犯罪 | |
775 | + if (oConvertUtils.isNotEmpty(idCard) && oConvertUtils.isNotEmpty(idCards) && oConvertUtils.isNotEmpty(idCards.get(idCard))) { | |
776 | + minor.setReason(Minor.ATTENTION_REASON_CRIME); | |
777 | + } | |
778 | + //判断是否是一个家庭的人员 | |
779 | + if (oConvertUtils.isNotEmpty(minor.getHouseholdNum())) { | |
780 | + String houseNum = minor.getHouseholdNum(); | |
781 | + if (oConvertUtils.isNotEmpty(familyMaps) && oConvertUtils.isNotEmpty(familyMaps.get(houseNum))) { | |
782 | + familys.addAll(familyMaps.get(houseNum)); | |
783 | + } | |
784 | + } | |
785 | + //获取与监护人关系 | |
786 | + if (oConvertUtils.isNotEmpty(idCard) && oConvertUtils.isNotEmpty(relations) && oConvertUtils.isNotEmpty(relations.get(idCard))) { | |
787 | + minor.setRelation(relations.get(idCard)); | |
788 | + } | |
789 | + //获取监护人 | |
790 | + if (oConvertUtils.isNotEmpty(idCard) && oConvertUtils.isNotEmpty(guardians) && oConvertUtils.isNotEmpty(guardians.get(idCard))) { | |
791 | + minor.setGuardian(guardians.get(idCard).getName()); | |
792 | + } | |
793 | + minorList.add(minor); | |
794 | + } | |
220 | 795 | } |
221 | - }); | |
222 | - } | |
223 | - // 执行完关闭线程池 | |
224 | - executor.shutdown(); | |
225 | - long endTime = System.currentTimeMillis(); | |
226 | - System.out.println(endTime-startTime); | |
227 | - } | |
228 | - | |
229 | - | |
230 | -// public static void exec(List<String> list) throws InterruptedException{ | |
231 | -// int count = 300; //一个线程处理300条数据 | |
232 | -// int listSize = list.size(); //数据集合大小 | |
233 | -// int runSize = (listSize/count)+1; //开启的线程数 | |
234 | -// List<String> newlist = null; //存放每个线程的执行数据 | |
235 | -// ExecutorService executor = Executors.newFixedThreadPool(runSize); //创建一个线程池,数量和开启线程的数量一样 | |
236 | -// //创建两个个计数器 | |
237 | -// CountDownLatch begin = new CountDownLatch(1); | |
238 | -// CountDownLatch end = new CountDownLatch(runSize); | |
239 | -// //循环创建线程 | |
240 | -// for (int i = 0; i < runSize ; i++) { | |
241 | -// //计算每个线程执行的数据 | |
242 | -// if((i+1)==runSize){ | |
243 | -// int startIndex = (i*count); | |
244 | -// int endIndex = list.size(); | |
245 | -// newlist= list.subList(startIndex, endIndex); | |
246 | -// }else{ | |
247 | -// int startIndex = (i*count); | |
248 | -// int endIndex = (i+1)*count; | |
249 | -// newlist= list.subList(startIndex, endIndex); | |
250 | -// } | |
251 | -// //线程类 | |
252 | -// MyThread mythead = new MyThread(newlist,begin,end); | |
253 | -// //这里执行线程的方式是调用线程池里的executor.execute(mythead)方法。 | |
254 | -// | |
255 | -// executor.execute(mythead); | |
256 | -// } | |
257 | -// | |
258 | -// begin.countDown(); | |
259 | -// end.await(); | |
260 | -// | |
261 | -// //执行完关闭线程池 | |
262 | -// executor.shutdown(); | |
263 | -// } | |
264 | - | |
265 | -// /** | |
266 | -// * 分割list集合 | |
267 | -// * | |
268 | -// * @param dataList | |
269 | -// * @return | |
270 | -// */ | |
271 | -// public List<FamilyVo> subList(List<FamilyVo> dataList) { | |
272 | -// List<FamilyVo> resultlist = new ArrayList<>();//存放批量数据处理的总结果集 | |
273 | -// if (null != dataList && dataList.size() > 0) { | |
274 | -// int pointsDataLimit = 100;//限制条数 10条一批 也是线程池线程数量 | |
275 | -// Integer size = dataList.size(); | |
276 | -// List<FamilyVo> cardlist=new ArrayList<>(); | |
277 | -// //判断是否有必要分批 | |
278 | -// if (pointsDataLimit < size) {//大于10条 | |
279 | -// int part = size / pointsDataLimit;//分批数 | |
280 | -// for (int i = 0; i < part; i++) { | |
281 | -// List<FamilyVo> listPage = dataList.subList(0, pointsDataLimit); //10条数据 | |
282 | -// Integer start = cardlist.size();//10条数据在总结果集的开始下标 | |
283 | -// cardlist = testTime(listPage, resultlist );//返回拼接后的总结果集 | |
284 | -// Integer end = resultlist .size();//10条数据在总结果集的结束下标 | |
285 | -// for (i = start; i < end; i++) { | |
286 | -// //对总数据集的10条数据进行业务处理 | |
287 | -// } | |
288 | -// //剔除已经处理过的10条数据 | |
289 | -// dataList.subList(0, pointsDataLimit).clear(); | |
290 | -// } | |
291 | -// if (!dataList.isEmpty()) {//小于10条 | |
292 | -// cardlist = testTime(dataList, cardlist);//处理最后的数据 | |
293 | -// } | |
294 | -// } else { | |
295 | -// } | |
296 | -// } | |
297 | -// | |
298 | -// return resultlist ; | |
299 | -// } | |
300 | -// | |
301 | -// /** | |
302 | -// * 多线程处理批量数据 | |
303 | -// * | |
304 | -// * @param splitList 处理数据 | |
305 | -// * @param cardlist 处理后总数据 | |
306 | -// * | |
307 | -// * @return | |
308 | -// */ | |
309 | -// public List<FamilyVo> testTime(List<FamilyVo> splitList, List<FamilyVo> cardlist) { | |
310 | -// List<FamilyVo> list = null; | |
311 | -// try { | |
312 | -// MultiThreadUtil<FamilyVo, FamilyVo> multiThread = new MultiThreadUtil<FamilyVo, FamilyVo>(splitList) { | |
313 | -// @Override | |
314 | -// public FamilyVo outExecute(int currentThread, FamilyVo data) { | |
315 | -// //业务处理 | |
316 | -// /* String iccid = data.getIccid(); | |
317 | -// String allOrder = cardServerService.findAllOrder(iccid); | |
318 | -// String allFlow = cardServerService.allFlowByiccid(iccid); | |
319 | -// String allUseFlow = cardServerService.allUseFlowByiccid(iccid); | |
320 | -// Card card = cardMapper.findByIccid(iccid); | |
321 | -// String monthFlow = card.getMonthFlow(); | |
322 | -// data.setMonthFlow(monthFlow); | |
323 | -// data.setAllOrder(allOrder); | |
324 | -// data.setAllFlow(allFlow); | |
325 | -// data.setAllUseFlow(allUseFlow); | |
326 | -// return data;*/ | |
327 | -// //业务处理end | |
328 | -// return data; | |
329 | -// } | |
330 | -// }; | |
331 | -// list = multiThread.getResult();//返回结果 | |
332 | -// for (FamilyVo ccar : list) { | |
333 | -// cardlist.add(ccar);//批量数据遍历放入总结果 | |
334 | -// } | |
335 | -// } catch (Exception e) { | |
336 | -// e.printStackTrace(); | |
337 | -// } | |
338 | -// return cardlist; | |
339 | -// | |
340 | -// } | |
796 | + resultMinor.addAll(minorList); | |
797 | + resultFamily.addAll(familys); | |
798 | + } catch (Exception e) { | |
799 | + e.printStackTrace(); | |
800 | + log.info(String.valueOf(e)); | |
801 | + } | |
802 | + System.out.println("家庭成员是否犯罪" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); | |
803 | + | |
804 | + } | |
341 | 805 | |
342 | 806 | |
343 | 807 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/MinorController.java
... | ... | @@ -187,7 +187,7 @@ public class MinorController { |
187 | 187 | // Step.1 组装查询条件查询数据 |
188 | 188 | QueryWrapper<Minor> queryWrapper = QueryGenerator.initQueryWrapper(minor, request.getParameterMap()); |
189 | 189 | LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); |
190 | - | |
190 | + queryWrapper.last("limit 1"); | |
191 | 191 | //Step.2 获取导出数据 |
192 | 192 | List<Minor> queryList = minorService.list(queryWrapper); |
193 | 193 | // 过滤选中数据 | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/Family.java
... | ... | @@ -53,56 +53,52 @@ public class Family implements Serializable { |
53 | 53 | /**所属部门*/ |
54 | 54 | @ApiModelProperty(value = "所属部门") |
55 | 55 | private String sysOrgCode; |
56 | + /**户号*/ | |
57 | + @Excel(name = "户号", width = 25) | |
58 | + @ApiModelProperty(value = "户号") | |
59 | + private String householdNum; | |
60 | + /**人员编号*/ | |
61 | + @Excel(name = "人员编号", width = 25) | |
62 | + @ApiModelProperty(value = "人员编号") | |
63 | + private String number; | |
56 | 64 | /**姓名*/ |
57 | 65 | @Excel(name = "姓名", width = 15) |
58 | 66 | @ApiModelProperty(value = "姓名") |
59 | 67 | private String name; |
60 | 68 | /**性别*/ |
61 | - @Excel(name = "性别", width = 15,dicCode = "sex") | |
69 | + @Excel(name = "性别", width = 10,dicCode = "sex") | |
62 | 70 | @ApiModelProperty(value = "性别") |
63 | 71 | @Dict(dicCode = "sex") |
64 | 72 | private Integer gender; |
65 | 73 | /**身份证号*/ |
66 | - @Excel(name = "身份证号", width = 15) | |
74 | + @Excel(name = "身份证号", width = 20) | |
67 | 75 | @ApiModelProperty(value = "身份证号") |
68 | 76 | private String identity; |
69 | - /**户号*/ | |
70 | - @Excel(name = "户号", width = 15) | |
71 | - @ApiModelProperty(value = "户号") | |
72 | - private String householdNum; | |
73 | - /**人员编号*/ | |
74 | - @Excel(name = "人员编号", width = 15) | |
75 | - @ApiModelProperty(value = "人员编号") | |
76 | - private String number; | |
77 | - /**婚姻状况*/ | |
78 | - @Excel(name = "婚姻状况", width = 15,dicCode = "marital_status") | |
79 | - @ApiModelProperty(value = "婚姻状况") | |
80 | - @Dict(dicCode = "marital_status") | |
81 | - private Integer marital; | |
77 | + @Excel(name = "与户主的关系", width = 15) | |
78 | + @ApiModelProperty(value = "与户主的关系") | |
79 | + private String relation; | |
80 | + /**行政区划*/ | |
81 | + @Excel(name = "行政区划", width = 25) | |
82 | + @ApiModelProperty(value = "行政区划") | |
83 | + private String division; | |
84 | + /**现住址*/ | |
85 | + @Excel(name = "现住址", width = 25) | |
86 | + @ApiModelProperty(value = "现住址") | |
87 | + private String address; | |
82 | 88 | /**是否犯罪*/ |
83 | - @Excel(name = "是否犯罪", width = 15,dicCode = "is_crime") | |
89 | + @Excel(name = "是否犯罪", width = 10,dicCode = "is_crime") | |
84 | 90 | @ApiModelProperty(value = "是否犯罪") |
85 | 91 | @Dict(dicCode = "is_crime") |
86 | 92 | private Integer crime; |
87 | 93 | /**犯罪原因*/ |
88 | - @Excel(name = "犯罪原因", width = 15) | |
94 | + @Excel(name = "犯罪原因", width = 25) | |
89 | 95 | @ApiModelProperty(value = "犯罪原因") |
90 | 96 | private String reason; |
91 | 97 | /**其他参考信息*/ |
92 | - @Excel(name = "其他参考信息", width = 15) | |
98 | + @Excel(name = "其他参考信息", width = 25) | |
93 | 99 | @ApiModelProperty(value = "其他参考信息") |
94 | 100 | private String other; |
95 | - /**行政区划*/ | |
96 | - @Excel(name = "行政区划", width = 15) | |
97 | - @ApiModelProperty(value = "行政区划") | |
98 | - private String division; | |
99 | - @Excel(name = "与户主的关系", width = 15) | |
100 | - @ApiModelProperty(value = "与户主的关系") | |
101 | - private String relation; | |
102 | - /**现住址*/ | |
103 | - @Excel(name = "现住址", width = 15) | |
104 | - @ApiModelProperty(value = "现住址") | |
105 | - private String address; | |
101 | + | |
106 | 102 | /**未成年人表id*/ |
107 | 103 | @ApiModelProperty(value = "未成年人表id") |
108 | 104 | private String minorId; | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/Minor.java
... | ... | @@ -26,6 +26,16 @@ import io.swagger.annotations.ApiModelProperty; |
26 | 26 | @TableName("mr_minor") |
27 | 27 | public class Minor implements Serializable { |
28 | 28 | private static final long serialVersionUID = 1L; |
29 | + //是否失学 | |
30 | + public static final Integer SCHOOL_STATUS_YES=1;//是 | |
31 | + public static final Integer SCHOOL_STATUS_NO=0;//否 | |
32 | + | |
33 | + //重点关注原因 | |
34 | + public static final Integer ATTENTION_REASON_ORPHAN=1;//孤儿 | |
35 | + public static final Integer ATTENTION_REASON_CHILDREN=2;//留守儿童 | |
36 | + public static final Integer ATTENTION_REASON_UNSUPPORTED=3;//无人抚养 | |
37 | + public static final Integer ATTENTION_REASON_CRIME=4;//家庭成员有犯罪记录 | |
38 | + public static final Integer ATTENTION_REASON_ADOPTION=5;//收养 | |
29 | 39 | |
30 | 40 | /**主键*/ |
31 | 41 | @TableId(type = IdType.ASSIGN_ID) |
... | ... | @@ -51,6 +61,14 @@ public class Minor implements Serializable { |
51 | 61 | @ApiModelProperty(value = "所属部门") |
52 | 62 | @Dict(dictTable ="sys_depart",dicText = "depart_name",dicCode = "id") |
53 | 63 | private String sysOrgCode; |
64 | + /**户号*/ | |
65 | + @Excel(name = "户号", width = 15) | |
66 | + @ApiModelProperty(value = "户号") | |
67 | + private String householdNum; | |
68 | + /**人员编号*/ | |
69 | + @Excel(name = "人员编号", width = 15) | |
70 | + @ApiModelProperty(value = "人员编号") | |
71 | + private String number; | |
54 | 72 | /**姓名*/ |
55 | 73 | @Excel(name = "姓名", width = 15) |
56 | 74 | @ApiModelProperty(value = "姓名") |
... | ... | @@ -68,14 +86,6 @@ public class Minor implements Serializable { |
68 | 86 | @Excel(name = "身份证号", width = 15) |
69 | 87 | @ApiModelProperty(value = "身份证号") |
70 | 88 | private String identity; |
71 | - /**重点关注原因*/ | |
72 | - @Excel(name = "重点关注原因", width = 15) | |
73 | - @ApiModelProperty(value = "重点关注原因") | |
74 | - private String reason; | |
75 | - /**备注*/ | |
76 | - @Excel(name = "备注", width = 15) | |
77 | - @ApiModelProperty(value = "备注") | |
78 | - private String remark; | |
79 | 89 | |
80 | 90 | /** |
81 | 91 | * 监护人 |
... | ... | @@ -97,14 +107,31 @@ public class Minor implements Serializable { |
97 | 107 | @Dict(dicCode = "school_status") |
98 | 108 | private Integer school; |
99 | 109 | |
100 | - /**人员编号*/ | |
101 | - @Excel(name = "人员编号", width = 15) | |
102 | - @ApiModelProperty(value = "人员编号") | |
103 | - private String number; | |
110 | + /**学校名称*/ | |
111 | + @Excel(name = "学校名称", width = 15) | |
112 | + @ApiModelProperty(value = "学校名称") | |
113 | + private String schoolName; | |
104 | 114 | |
105 | - /**户号*/ | |
106 | - @Excel(name = "户号", width = 15) | |
107 | - @ApiModelProperty(value = "户号") | |
108 | - private String householdNum; | |
115 | + @Excel(name = "入学年份", width = 15) | |
116 | + @ApiModelProperty(value = "入学年份") | |
117 | + private String startYear; | |
118 | + | |
119 | + /**重点关注原因*/ | |
120 | + @Excel(name = "重点关注原因", width = 15,dicCode = "attention_reason") | |
121 | + @ApiModelProperty(value = "重点关注原因") | |
122 | + @Dict(dicCode = "attention_reason") | |
123 | + private Integer reason; | |
124 | + | |
125 | + /**特殊原因*/ | |
126 | + @Excel(name = "特殊原因", width = 15) | |
127 | + @ApiModelProperty(value = "特殊原因") | |
128 | + private String specialReason; | |
129 | + /**备注*/ | |
130 | + @Excel(name = "备注", width = 15) | |
131 | + @ApiModelProperty(value = "备注") | |
132 | + private String remark; | |
109 | 133 | |
134 | + @Excel(name = "行政区划", width = 15) | |
135 | + @ApiModelProperty(value = "行政区划") | |
136 | + private String division; | |
110 | 137 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/MzAdoption.java
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SourceData.java
... | ... | @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableId; |
8 | 8 | import com.baomidou.mybatisplus.annotation.TableName; |
9 | 9 | import lombok.Data; |
10 | 10 | import com.fasterxml.jackson.annotation.JsonFormat; |
11 | +import org.jeecg.common.aspect.annotation.Dict; | |
11 | 12 | import org.springframework.format.annotation.DateTimeFormat; |
12 | 13 | import org.jeecgframework.poi.excel.annotation.Excel; |
13 | 14 | import io.swagger.annotations.ApiModel; |
... | ... | @@ -28,6 +29,13 @@ import lombok.experimental.Accessors; |
28 | 29 | @ApiModel(value="mr_source对象", description="来源数据管理") |
29 | 30 | public class SourceData implements Serializable { |
30 | 31 | private static final long serialVersionUID = 1L; |
32 | + public static final String SOURCE_UNIT="source_unit";//单位名称字典表编码 | |
33 | + public static final String SOURCE_UNIT_GA="1";//公安机关 | |
34 | + public static final String SOURCE_UNIT_WJ="2";//未检部门 | |
35 | + public static final String SOURCE_UNIT_SCHOOL="3";//教育部门 | |
36 | + public static final String SOURCE_UNIT_MZ="4";//民政部门 | |
37 | + public static final String SOURCE_UNIT_SF="5";//司法 | |
38 | + | |
31 | 39 | |
32 | 40 | /**主键*/ |
33 | 41 | @TableId(type = IdType.ASSIGN_ID) |
... | ... | @@ -53,8 +61,9 @@ public class SourceData implements Serializable { |
53 | 61 | @ApiModelProperty(value = "所属部门") |
54 | 62 | private String sysOrgCode; |
55 | 63 | /**单位名称*/ |
56 | - @Excel(name = "单位名称", width = 15) | |
64 | + @Excel(name = "单位名称", width = 15,dicCode = "source_unit") | |
57 | 65 | @ApiModelProperty(value = "单位名称") |
66 | + @Dict(dicCode = "source_unit") | |
58 | 67 | private String name; |
59 | 68 | /**数据批次*/ |
60 | 69 | @Excel(name = "数据批次", width = 15) | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SpecialStudent.java
... | ... | @@ -55,9 +55,9 @@ public class SpecialStudent implements Serializable { |
55 | 55 | @Excel(name = "identity", width = 15) |
56 | 56 | @ApiModelProperty(value = "identity") |
57 | 57 | private String identity; |
58 | - /**区域*/ | |
59 | - @Excel(name = "区域", width = 15) | |
60 | - @ApiModelProperty(value = "区域") | |
58 | + /**原因*/ | |
59 | + @Excel(name = "原因", width = 15) | |
60 | + @ApiModelProperty(value = "原因") | |
61 | 61 | private String reason; |
62 | 62 | /**备注*/ |
63 | 63 | @Excel(name = "备注", width = 15) | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/FamilyMapper.java
... | ... | @@ -17,4 +17,13 @@ public interface FamilyMapper extends BaseMapper<Family> { |
17 | 17 | public boolean deleteByMainId(@Param("mainId") String mainId); |
18 | 18 | |
19 | 19 | public List<Family> selectByMainId(@Param("mainId") String mainId); |
20 | + | |
21 | + public List<Family> getFamilyByMinorId(@Param("minorId") String minorId); | |
22 | + | |
23 | + /** | |
24 | + * 批量新增 | |
25 | + * @param list | |
26 | + * @return | |
27 | + */ | |
28 | + public Integer insertBatch(List<Family> list); | |
20 | 29 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/GaDemographicMapper.java
... | ... | @@ -7,6 +7,7 @@ import org.jeecg.modules.system.entity.GaDemographic; |
7 | 7 | import org.jeecg.modules.system.vo.FamilyVo; |
8 | 8 | |
9 | 9 | import java.util.List; |
10 | +import java.util.Set; | |
10 | 11 | |
11 | 12 | /** |
12 | 13 | * @Description: ga_demographic |
... | ... | @@ -24,6 +25,21 @@ public interface GaDemographicMapper extends BaseMapper<GaDemographic> { |
24 | 25 | */ |
25 | 26 | public List<Family> queryPageList(@Param("queryNum") Integer queryNum, @Param("pageSize") Integer pageSize); |
26 | 27 | |
27 | - public List<String> getIdentityS(); | |
28 | + /** | |
29 | + * 查询身份证号 | |
30 | + * @return | |
31 | + */ | |
32 | + public Set<String> getIdentityS(); | |
33 | + | |
34 | + /** | |
35 | + * 根据户口号查询家庭成员信息 | |
36 | + * @param householdNum | |
37 | + * @return | |
38 | + */ | |
39 | + public List<Family> getFamilyByHouseholdNum(@Param("householdNum") String householdNum); | |
40 | + | |
41 | + public List<Family> queryHouseholdPageList(@Param("queryNum") Integer queryNum, @Param("pageSize") Integer pageSize); | |
42 | + | |
43 | + public Set<String> queryDemographicPageList(@Param("queryNum") Integer queryNum, @Param("pageSize") Integer pageSize); | |
28 | 44 | |
29 | 45 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/GaHouseholdMapper.java
1 | 1 | package org.jeecg.modules.system.mapper; |
2 | 2 | |
3 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
4 | +import org.jeecg.modules.system.entity.Family; | |
4 | 5 | import org.jeecg.modules.system.entity.GaHousehold; |
5 | 6 | |
7 | +import java.util.List; | |
8 | +import java.util.Set; | |
9 | + | |
6 | 10 | /** |
7 | 11 | * @Description: ga_household |
8 | 12 | * @Author: jeecg-boot |
... | ... | @@ -11,4 +15,10 @@ import org.jeecg.modules.system.entity.GaHousehold; |
11 | 15 | */ |
12 | 16 | public interface GaHouseholdMapper extends BaseMapper<GaHousehold> { |
13 | 17 | |
18 | + /** | |
19 | + * 查询户籍信息 | |
20 | + * @return | |
21 | + */ | |
22 | + public List<Family> getGaHouseholds(); | |
14 | 23 | } |
24 | + | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/HighSchoolMapper.java
1 | 1 | package org.jeecg.modules.system.mapper; |
2 | 2 | |
3 | 3 | import java.util.List; |
4 | +import java.util.Set; | |
4 | 5 | |
5 | 6 | import org.apache.ibatis.annotations.Param; |
6 | 7 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
... | ... | @@ -16,4 +17,6 @@ import org.jeecg.modules.system.entity.MrSchool; |
16 | 17 | public interface HighSchoolMapper extends BaseMapper<HighSchool> { |
17 | 18 | |
18 | 19 | public List<MrSchool> getList(); |
20 | + | |
21 | + public Set<String> getIdentityS(); | |
19 | 22 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MinorMapper.java
1 | 1 | package org.jeecg.modules.system.mapper; |
2 | 2 | |
3 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
4 | +import org.jeecg.modules.system.entity.Family; | |
4 | 5 | import org.jeecg.modules.system.entity.Minor; |
5 | 6 | |
7 | +import java.util.List; | |
8 | + | |
6 | 9 | /** |
7 | 10 | * @Description: 未成年人 |
8 | 11 | * @Author: jeecg-boot |
... | ... | @@ -11,4 +14,6 @@ import org.jeecg.modules.system.entity.Minor; |
11 | 14 | */ |
12 | 15 | public interface MinorMapper extends BaseMapper<Minor> { |
13 | 16 | |
17 | + public Integer insertBatch(List<Minor> list); | |
18 | + | |
14 | 19 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MrSchoolMapper.java
... | ... | @@ -4,6 +4,7 @@ import java.util.List; |
4 | 4 | |
5 | 5 | import org.apache.ibatis.annotations.Param; |
6 | 6 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
7 | +import org.jeecg.modules.system.entity.Minor; | |
7 | 8 | import org.jeecg.modules.system.entity.MrSchool; |
8 | 9 | |
9 | 10 | /** |
... | ... | @@ -13,5 +14,5 @@ import org.jeecg.modules.system.entity.MrSchool; |
13 | 14 | * @Version: V1.0 |
14 | 15 | */ |
15 | 16 | public interface MrSchoolMapper extends BaseMapper<MrSchool> { |
16 | - | |
17 | + public Integer insertBatch(List<MrSchool> list); | |
17 | 18 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MzAdoptionMapper.java
... | ... | @@ -3,12 +3,16 @@ package org.jeecg.modules.system.mapper; |
3 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
4 | 4 | import org.jeecg.modules.system.entity.MzAdoption; |
5 | 5 | |
6 | +import java.util.List; | |
7 | +import java.util.Set; | |
8 | + | |
6 | 9 | /** |
7 | - * @Description: mz_adoption | |
10 | + * @Description: 收养 | |
8 | 11 | * @Author: jeecg-boot |
9 | 12 | * @Date: 2022-07-14 |
10 | 13 | * @Version: V1.0 |
11 | 14 | */ |
12 | 15 | public interface MzAdoptionMapper extends BaseMapper<MzAdoption> { |
13 | 16 | |
17 | + public List<String> getIdentityS(); | |
14 | 18 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MzLeftBehindChildrenMapper.java
... | ... | @@ -3,6 +3,8 @@ package org.jeecg.modules.system.mapper; |
3 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
4 | 4 | import org.jeecg.modules.system.entity.MzLeftBehindChildren; |
5 | 5 | |
6 | +import java.util.List; | |
7 | + | |
6 | 8 | /** |
7 | 9 | * @Description: mz_left_behind_children |
8 | 10 | * @Author: jeecg-boot |
... | ... | @@ -10,5 +12,5 @@ import org.jeecg.modules.system.entity.MzLeftBehindChildren; |
10 | 12 | * @Version: V1.0 |
11 | 13 | */ |
12 | 14 | public interface MzLeftBehindChildrenMapper extends BaseMapper<MzLeftBehindChildren> { |
13 | - | |
15 | + public List<String> getIdentityS(); | |
14 | 16 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MzOrphanMapper.java
... | ... | @@ -3,6 +3,8 @@ package org.jeecg.modules.system.mapper; |
3 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
4 | 4 | import org.jeecg.modules.system.entity.MzOrphan; |
5 | 5 | |
6 | +import java.util.List; | |
7 | + | |
6 | 8 | /** |
7 | 9 | * @Description: mz_orphan |
8 | 10 | * @Author: jeecg-boot |
... | ... | @@ -10,5 +12,5 @@ import org.jeecg.modules.system.entity.MzOrphan; |
10 | 12 | * @Version: V1.0 |
11 | 13 | */ |
12 | 14 | public interface MzOrphanMapper extends BaseMapper<MzOrphan> { |
13 | - | |
15 | + public List<String> getIdentityS(); | |
14 | 16 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MzUnsupportedMapper.java
... | ... | @@ -3,6 +3,8 @@ package org.jeecg.modules.system.mapper; |
3 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
4 | 4 | import org.jeecg.modules.system.entity.MzUnsupported; |
5 | 5 | |
6 | +import java.util.List; | |
7 | + | |
6 | 8 | /** |
7 | 9 | * @Description: mz_unsupported |
8 | 10 | * @Author: jeecg-boot |
... | ... | @@ -10,5 +12,5 @@ import org.jeecg.modules.system.entity.MzUnsupported; |
10 | 12 | * @Version: V1.0 |
11 | 13 | */ |
12 | 14 | public interface MzUnsupportedMapper extends BaseMapper<MzUnsupported> { |
13 | - | |
15 | + public List<String> getIdentityS(); | |
14 | 16 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/PrimarySchoolMapper.java
1 | 1 | package org.jeecg.modules.system.mapper; |
2 | 2 | |
3 | 3 | import java.util.List; |
4 | +import java.util.Set; | |
4 | 5 | |
5 | 6 | import org.apache.ibatis.annotations.Param; |
6 | 7 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
... | ... | @@ -16,4 +17,6 @@ import org.jeecg.modules.system.entity.PrimarySchool; |
16 | 17 | public interface PrimarySchoolMapper extends BaseMapper<PrimarySchool> { |
17 | 18 | |
18 | 19 | public List<MrSchool> getList(); |
20 | + | |
21 | + public Set<String> getIdentityS(); | |
19 | 22 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDepartMapper.java
... | ... | @@ -71,4 +71,9 @@ public interface SysDepartMapper extends BaseMapper<SysDepart> { |
71 | 71 | */ |
72 | 72 | @Select("SELECT * FROM sys_depart where del_flag ='0' AND parent_id = #{parentId,jdbcType=VARCHAR}") |
73 | 73 | List<SysDepart> queryDeptByPid(@Param("parentId")String parentId); |
74 | + /** | |
75 | + * 获取无pid的数据 | |
76 | + * @return | |
77 | + */ | |
78 | + List<SysDepart> querySysDeparts(); | |
74 | 79 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/FamilyMapper.xml
1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | 2 | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
3 | -<mapper namespace="package org.jeecg.modules.system.mapper.FamilyMapper"> | |
3 | +<mapper namespace="org.jeecg.modules.system.mapper.FamilyMapper"> | |
4 | 4 | |
5 | 5 | <delete id="deleteByMainId" parameterType="java.lang.String"> |
6 | 6 | DELETE |
... | ... | @@ -12,5 +12,19 @@ |
12 | 12 | SELECT * |
13 | 13 | FROM mr_family |
14 | 14 | WHERE |
15 | - minor_id = #{mainId} </select> | |
15 | + minor_id = #{mainId} </select> | |
16 | + | |
17 | +<!-- <insert id="insertBatch" > | |
18 | + INSERT INTO mr_family (id, create_time, sys_org_code, household_num, number, name,identity, gender, relation, address,crime,reason, other)VALUES | |
19 | + <foreach collection="list" item="b" separator=","> | |
20 | + (#{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}) | |
21 | + </foreach> | |
22 | + </insert>--> | |
23 | + | |
24 | + <insert id="insertBatch" > | |
25 | + INSERT INTO mr_family (id, create_time, sys_org_code, household_num, number, name,identity, gender, relation, address,crime,reason, other)VALUES | |
26 | + <foreach collection="list" item="b" separator=","> | |
27 | + (#{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}) | |
28 | + </foreach> | |
29 | + </insert> | |
16 | 30 | </mapper> | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/GaDemographicMapper.xml
1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | 2 | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
3 | 3 | <mapper namespace="org.jeecg.modules.system.mapper.GaDemographicMapper"> |
4 | - <resultMap id="gaHouseholdVo" type="org.jeecg.modules.system.entity.Family"> | |
4 | + <resultMap id="family" type="org.jeecg.modules.system.entity.Family"> | |
5 | 5 | <result column="name" property="name"/> |
6 | 6 | <result column="division" property="division"/> |
7 | 7 | <result column="identity" property="identity"/> |
8 | 8 | <result column="household_num" property="householdNum"/> |
9 | 9 | <result column="relation" property="relation"/> |
10 | - <result column="num" property="num"/> | |
10 | + <result column="number" property="number"/> | |
11 | 11 | <result column="address" property="address"/> |
12 | 12 | </resultMap> |
13 | 13 | |
14 | - <select id="queryPageList" parameterType="java.lang.Integer" resultMap="gaHouseholdVo"> | |
14 | + <select id="queryPageList" parameterType="java.lang.Integer" resultMap="family"> | |
15 | 15 | SELECT h.XM AS NAME, h.HJXZ AS address, h.XZQHMC AS division, h.GMSFHM AS identity, h.HH AS householdNum,h.YHZGXMC AS relation,h.RYBH AS number |
16 | 16 | FROM ga_demographic d JOIN ga_household h |
17 | 17 | WHERE ((d.RYBH = h.RYBH) AND (d.id >( SELECT gd.id FROM ga_demographic gd ORDER BY gd.id LIMIT #{queryNum}, 1))) |
18 | 18 | ORDER BY d.id LIMIT #{pageSize} |
19 | 19 | </select> |
20 | 20 | |
21 | - <select id="getIdentityS" > | |
21 | + <select id="getIdentityS" resultType="java.lang.String"> | |
22 | 22 | SELECT d.GMSFHM FROM ga_demographic d |
23 | 23 | </select> |
24 | + | |
25 | + <select id="getFamilyByHouseholdNum" parameterType="java.lang.String" resultMap="family"> | |
26 | + SELECT h.XM AS NAME, h.HJXZ AS address, h.XZQHMC AS division, h.GMSFHM AS identity, h.HH AS householdNum,h.YHZGXMC AS relation,h.RYBH AS number | |
27 | + FROM ga_household h where h.hh=#{householdNum} | |
28 | + </select> | |
29 | + | |
30 | + <select id="queryHouseholdPageList" parameterType="java.lang.Integer" resultMap="family"> | |
31 | + SELECT h.XM AS NAME, h.HJXZ AS address, h.XZQHMC AS division, h.GMSFHM AS identity, h.HH AS householdNum,h.YHZGXMC AS relation,h.RYBH AS number | |
32 | + FROM ga_household h | |
33 | + WHERE (h.id >( SELECT gd.id FROM ga_household gd ORDER BY gd.id LIMIT #{queryNum}, 1)) | |
34 | + ORDER BY h.id LIMIT #{pageSize} | |
35 | + </select> | |
36 | + | |
37 | + <select id="queryDemographicPageList" parameterType="java.lang.Integer" resultType="java.lang.String"> | |
38 | + SELECT d.GMSFHM | |
39 | + FROM ga_demographic d | |
40 | + WHERE ( (d.id >( SELECT gd.id FROM ga_demographic gd ORDER BY gd.id LIMIT #{queryNum}, 1))) | |
41 | + ORDER BY d.id LIMIT #{pageSize} | |
42 | + </select> | |
24 | 43 | </mapper> |
25 | 44 | \ No newline at end of file | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/GaHouseholdMapper.xml
1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | 2 | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
3 | 3 | <mapper namespace="org.jeecg.modules.system.mapper.GaHouseholdMapper"> |
4 | + <resultMap id="family" type="org.jeecg.modules.system.entity.Family"> | |
5 | + <result column="name" property="name"/> | |
6 | + <result column="division" property="division"/> | |
7 | + <result column="identity" property="identity"/> | |
8 | + <result column="householdNum" property="householdNum"/> | |
9 | + <result column="relation" property="relation"/> | |
10 | + <result column="number" property="number"/> | |
11 | + <result column="address" property="address"/> | |
12 | + </resultMap> | |
4 | 13 | |
14 | + <select id="getGaHouseholds" resultMap="family"> | |
15 | + SELECT h.XM AS NAME, h.HJXZ AS address, h.XZQHMC AS division, h.GMSFHM AS identity, h.HH AS householdNum,h.YHZGXMC AS relation,h.RYBH AS number | |
16 | + FROM ga_household h | |
17 | + </select> | |
5 | 18 | </mapper> |
6 | 19 | \ No newline at end of file | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/HighSchoolMapper.xml
... | ... | @@ -5,15 +5,15 @@ |
5 | 5 | <resultMap id="mrSchool" type="org.jeecg.modules.system.entity.MrSchool"> |
6 | 6 | <result column="name" property="name"/> |
7 | 7 | <result column="identity" property="identity"/> |
8 | - <result column="class_name" property="className"/> | |
8 | + <result column="className" property="className"/> | |
9 | 9 | <result column="address" property="address"/> |
10 | 10 | <result column="school" property="school"/> |
11 | 11 | <result column="phone" property="phone"/> |
12 | - <result column="member_one" property="memberOne"/> | |
13 | - <result column="admission_date" property="admissionDate"/> | |
14 | - <result column="connect_one" property="connectOne"/> | |
15 | - <result column="member_two" property="memberTwo"/> | |
16 | - <result column="connect_two" property="connectTwo"/> | |
12 | + <result column="connectOne" property="memberOne"/> | |
13 | + <result column="admissionDate" property="admissionDate"/> | |
14 | + <result column="connectOne" property="connectOne"/> | |
15 | + <result column="memberTwo" property="memberTwo"/> | |
16 | + <result column="connectTwo" property="connectTwo"/> | |
17 | 17 | </resultMap> |
18 | 18 | |
19 | 19 | <select id="getList" resultMap="mrSchool"> |
... | ... | @@ -22,4 +22,10 @@ |
22 | 22 | FROM mr_high_school s |
23 | 23 | WHERE length (s.SFZJH)>14; |
24 | 24 | </select> |
25 | + | |
26 | + <select id="getIdentityS" resultType="java.lang.String"> | |
27 | + SELECT s.SFZJH as identity FROM mr_high_school s WHERE length (s.SFZJH)>14; | |
28 | + </select> | |
29 | + | |
30 | + | |
25 | 31 | </mapper> |
26 | 32 | \ No newline at end of file | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MinorMapper.xml
1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | 2 | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
3 | 3 | <mapper namespace="package org.jeecg.modules.system.mapper.MinorMapper"> |
4 | - | |
4 | + <insert id="insertBatch" > | |
5 | + INSERT INTO mr_minor (id, create_time, sys_org_code, household_num, number, name,identity, gender, relation, address,guardian, | |
6 | + school,schoolName, startYear,reason,specialReason,remark)VALUES | |
7 | + <foreach collection="list" item="b" separator=","> | |
8 | + (#{b.id},#{b.createTime},#{b.sysOrgCode},#{b.householdNum},#{b.number},#{b.name},#{b.identity},#{b.gender},#{b.relation},#{b.address},#{b.guardian}, | |
9 | + #{b.school},#{b.schoolName},#{b.startYear},#{b.reason},#{b.specialReason},#{b.remark}) | |
10 | + </foreach> | |
11 | + </insert> | |
5 | 12 | </mapper> |
6 | 13 | \ No newline at end of file | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MrSchoolMapper.xml
1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | 2 | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
3 | 3 | <mapper namespace="org.jeecg.modules.system.mapper.MrSchoolMapper"> |
4 | - | |
4 | + <insert id="insertBatch" > | |
5 | + INSERT INTO mr_school (id, create_time, sys_org_code, name, identity, school,admissionDate, className, address, memberOne,connectOne, | |
6 | + phoneOne,member_two, connectTwo,phoneTwo,phone)VALUES | |
7 | + <foreach collection="list" item="b" separator=","> | |
8 | + (#{b.id},#{b.createTime},#{b.sysOrgCode},#{b.name},#{b.identity},#{b.school},#{b.admission_date},#{b.class_name},#{b.address},#{b.member_one},#{b.connect_one}, | |
9 | + #{b.phone_one},#{b.memberTwo},#{b.connect_two},#{b.phone_two},#{b.phone}) | |
10 | + </foreach> | |
11 | + </insert> | |
5 | 12 | </mapper> |
6 | 13 | \ No newline at end of file | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MzAdoptionMapper.xml
1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | 2 | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
3 | 3 | <mapper namespace="org.jeecg.modules.system.mapper.MzAdoptionMapper"> |
4 | - | |
4 | + <select id="getIdentityS" resultType="java.lang.String"> | |
5 | + SELECT a.identity FROM mz_adoption a; | |
6 | + </select> | |
5 | 7 | </mapper> |
6 | 8 | \ No newline at end of file | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MzLeftBehindChildrenMapper.xml
1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | 2 | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
3 | 3 | <mapper namespace="org.jeecg.modules.system.mapper.MzLeftBehindChildrenMapper"> |
4 | - | |
4 | + <select id="getIdentityS" resultType="java.lang.String"> | |
5 | + SELECT c.identity FROM mz_left_behind_children c; | |
6 | + </select> | |
5 | 7 | </mapper> |
6 | 8 | \ No newline at end of file | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MzOrphanMapper.xml
1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | 2 | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
3 | 3 | <mapper namespace="org.jeecg.modules.system.mapper.MzOrphanMapper"> |
4 | - | |
4 | + <select id="getIdentityS" resultType="java.lang.String"> | |
5 | + SELECT o.identity FROM mz_orphan o; | |
6 | + </select> | |
5 | 7 | </mapper> |
6 | 8 | \ No newline at end of file | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MzUnsupportedMapper.xml
1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | 2 | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
3 | 3 | <mapper namespace="org.jeecg.modules.system.mapper.MzUnsupportedMapper"> |
4 | - | |
4 | + <select id="getIdentityS" resultType="java.lang.String"> | |
5 | + SELECT u.identity FROM mz_unsupported u | |
6 | + </select> | |
5 | 7 | </mapper> |
6 | 8 | \ No newline at end of file | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/PrimarySchoolMapper.xml
... | ... | @@ -24,4 +24,8 @@ |
24 | 24 | FROM mr_primary_school s |
25 | 25 | WHERE length (s.SFZJH)>14 |
26 | 26 | </select> |
27 | + | |
28 | + <select id="getIdentityS" resultType="java.lang.String"> | |
29 | + SELECT s.SFZJH as identity FROM mr_high_school s WHERE length (s.SFZJH)>14; | |
30 | + </select> | |
27 | 31 | </mapper> |
28 | 32 | \ No newline at end of file | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SourceMapper.xml
... | ... | @@ -11,9 +11,8 @@ |
11 | 11 | <select id="getListGroupByName" resultMap="sourceData"> |
12 | 12 | SELECT name,COUNT(batch) as batch FROM mr_source |
13 | 13 | <if test="null != name and '' !=name"> |
14 | - where name like concat('%',#{name},'%') | |
14 | + where name = #{name} | |
15 | 15 | </if> |
16 | - | |
17 | 16 | GROUP BY `name` |
18 | 17 | </select> |
19 | 18 | </mapper> |
20 | 19 | \ No newline at end of file | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartMapper.xml
... | ... | @@ -51,4 +51,8 @@ |
51 | 51 | <select id="queryCompByOrgCode" resultType="org.jeecg.modules.system.entity.SysDepart"> |
52 | 52 | select * from sys_depart where del_flag = '0' and org_category='1' and org_code= #{orgCode,jdbcType=VARCHAR} |
53 | 53 | </select> |
54 | + | |
55 | + <select id="querySysDeparts" parameterType="String" resultType="org.jeecg.modules.system.entity.SysDepart"> | |
56 | + SELECT * FROM sys_depart WHERE parent_id !=''; | |
57 | + </select> | |
54 | 58 | </mapper> |
55 | 59 | \ No newline at end of file | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IFamilyService.java
... | ... | @@ -2,6 +2,8 @@ package org.jeecg.modules.system.service; |
2 | 2 | |
3 | 3 | import com.baomidou.mybatisplus.extension.service.IService; |
4 | 4 | import org.jeecg.modules.system.entity.Family; |
5 | +import org.jeecg.modules.system.entity.Minor; | |
6 | +import org.jeecg.modules.system.entity.SysDepart; | |
5 | 7 | |
6 | 8 | import java.util.List; |
7 | 9 | |
... | ... | @@ -14,4 +16,7 @@ import java.util.List; |
14 | 16 | public interface IFamilyService extends IService<Family> { |
15 | 17 | |
16 | 18 | public List<Family> selectByMainId(String mainId); |
19 | + | |
20 | + | |
21 | + public Integer insertBatch(List<Family> list,List<SysDepart> departs); | |
17 | 22 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IGaDemographicService.java
1 | 1 | package org.jeecg.modules.system.service; |
2 | 2 | |
3 | 3 | import com.baomidou.mybatisplus.extension.service.IService; |
4 | +import io.lettuce.core.dynamic.annotation.Param; | |
4 | 5 | import org.jeecg.modules.system.entity.Family; |
5 | 6 | import org.jeecg.modules.system.entity.GaDemographic; |
6 | 7 | import org.jeecg.modules.system.vo.FamilyVo; |
7 | 8 | |
8 | 9 | import java.util.List; |
10 | +import java.util.Map; | |
11 | +import java.util.Set; | |
9 | 12 | |
10 | 13 | /** |
11 | 14 | * @Description: 公安_人口基础信息 |
... | ... | @@ -23,5 +26,19 @@ public interface IGaDemographicService extends IService<GaDemographic> { |
23 | 26 | */ |
24 | 27 | public List<Family> queryPageList(Integer startNum, Integer endNum); |
25 | 28 | |
26 | - public List<String> getIdentityS(); | |
29 | + public Map<String,String> getIdentityS(); | |
30 | + | |
31 | + public Set<String> getIdStrs(); | |
32 | + | |
33 | + | |
34 | + /** | |
35 | + * 根据户口号查询家庭成员信息 | |
36 | + * @param householdNum | |
37 | + * @return | |
38 | + */ | |
39 | + public List<Family> getFamilyByHouseholdNum(@Param("householdNum") String householdNum); | |
40 | + | |
41 | + public Map<String,Family> queryHouseholdPageList(@Param("queryNum") Integer queryNum, @Param("pageSize") Integer pageSize); | |
42 | + | |
43 | + public Set<String> queryDemographicPageList(@Param("queryNum") Integer queryNum, @Param("pageSize") Integer pageSize); | |
27 | 44 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IGaHouseholdService.java
1 | 1 | package org.jeecg.modules.system.service; |
2 | 2 | |
3 | 3 | import com.baomidou.mybatisplus.extension.service.IService; |
4 | +import org.jeecg.modules.system.entity.Family; | |
4 | 5 | import org.jeecg.modules.system.entity.GaHousehold; |
5 | 6 | |
7 | +import java.util.List; | |
8 | +import java.util.Map; | |
9 | + | |
6 | 10 | /** |
7 | 11 | * @Description: 公安_居民户籍信息 |
8 | 12 | * @Author: jeecg-boot |
... | ... | @@ -10,5 +14,9 @@ import org.jeecg.modules.system.entity.GaHousehold; |
10 | 14 | * @Version: V1.0 |
11 | 15 | */ |
12 | 16 | public interface IGaHouseholdService extends IService<GaHousehold> { |
13 | - | |
17 | + /** | |
18 | + * 查询户籍信息 | |
19 | + * @return | |
20 | + */ | |
21 | + public Map<String,Family> getGaHouseholds(Map<String,String> gaDemographics); | |
14 | 22 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IGaPunishService.java
... | ... | @@ -5,6 +5,7 @@ import org.jeecg.modules.system.entity.GaPunish; |
5 | 5 | import org.jeecg.modules.system.vo.GaPunishVo; |
6 | 6 | |
7 | 7 | import java.util.List; |
8 | +import java.util.Map; | |
8 | 9 | |
9 | 10 | /** |
10 | 11 | * @Description: 公安_行政处罚打处人员信息 |
... | ... | @@ -17,5 +18,5 @@ public interface IGaPunishService extends IService<GaPunish> { |
17 | 18 | * 查询数据 |
18 | 19 | * @return |
19 | 20 | */ |
20 | - public List<GaPunishVo> queryAll(); | |
21 | + public Map<String,GaPunishVo> queryAll(); | |
21 | 22 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IHighSchoolService.java
... | ... | @@ -6,6 +6,7 @@ import org.jeecg.modules.system.entity.HighSchool; |
6 | 6 | import org.jeecg.modules.system.entity.MrSchool; |
7 | 7 | |
8 | 8 | import java.util.List; |
9 | +import java.util.Set; | |
9 | 10 | |
10 | 11 | /** |
11 | 12 | * @Description: mr_high_school |
... | ... | @@ -15,4 +16,5 @@ import java.util.List; |
15 | 16 | */ |
16 | 17 | public interface IHighSchoolService extends IService<HighSchool> { |
17 | 18 | public List<MrSchool> getList(); |
19 | + public Set<String> getIdentityS(); | |
18 | 20 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMinorService.java
... | ... | @@ -3,6 +3,7 @@ package org.jeecg.modules.system.service; |
3 | 3 | import com.baomidou.mybatisplus.extension.service.IService; |
4 | 4 | import org.jeecg.modules.system.entity.Family; |
5 | 5 | import org.jeecg.modules.system.entity.Minor; |
6 | +import org.jeecg.modules.system.entity.SysDepart; | |
6 | 7 | |
7 | 8 | import java.io.Serializable; |
8 | 9 | import java.util.Collection; |
... | ... | @@ -37,5 +38,7 @@ public interface IMinorService extends IService<Minor> { |
37 | 38 | * 批量删除一对多 |
38 | 39 | */ |
39 | 40 | public void delBatchMain (Collection<? extends Serializable> idList); |
40 | - | |
41 | + | |
42 | + | |
43 | + public Integer insertBatch(List<Minor> list,List<SysDepart> departs); | |
41 | 44 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMrSchoolService.java
... | ... | @@ -2,6 +2,9 @@ package org.jeecg.modules.system.service; |
2 | 2 | |
3 | 3 | import com.baomidou.mybatisplus.extension.service.IService; |
4 | 4 | import org.jeecg.modules.system.entity.MrSchool; |
5 | +import org.jeecg.modules.system.entity.SysDepart; | |
6 | + | |
7 | +import java.util.List; | |
5 | 8 | |
6 | 9 | /** |
7 | 10 | * @Description: 学校 |
... | ... | @@ -10,5 +13,5 @@ import org.jeecg.modules.system.entity.MrSchool; |
10 | 13 | * @Version: V1.0 |
11 | 14 | */ |
12 | 15 | public interface IMrSchoolService extends IService<MrSchool> { |
13 | - | |
16 | + public Integer insertBatch(List<MrSchool> list,List<SysDepart> departs); | |
14 | 17 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMzAdoptionService.java
... | ... | @@ -3,6 +3,8 @@ package org.jeecg.modules.system.service; |
3 | 3 | import com.baomidou.mybatisplus.extension.service.IService; |
4 | 4 | import org.jeecg.modules.system.entity.MzAdoption; |
5 | 5 | |
6 | +import java.util.List; | |
7 | + | |
6 | 8 | /** |
7 | 9 | * @Description:民政_全市收养登记数据 |
8 | 10 | * @Author: jeecg-boot |
... | ... | @@ -10,5 +12,5 @@ import org.jeecg.modules.system.entity.MzAdoption; |
10 | 12 | * @Version: V1.0 |
11 | 13 | */ |
12 | 14 | public interface IMzAdoptionService extends IService<MzAdoption> { |
13 | - | |
15 | + public List<String> getIdentityS(); | |
14 | 16 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMzLeftBehindChildrenService.java
... | ... | @@ -4,6 +4,8 @@ package org.jeecg.modules.system.service; |
4 | 4 | import com.baomidou.mybatisplus.extension.service.IService; |
5 | 5 | import org.jeecg.modules.system.entity.MzLeftBehindChildren; |
6 | 6 | |
7 | +import java.util.List; | |
8 | + | |
7 | 9 | /** |
8 | 10 | * @Description: 民政_全市在册农村留守儿童数据 |
9 | 11 | * @Author: jeecg-boot |
... | ... | @@ -11,5 +13,5 @@ import org.jeecg.modules.system.entity.MzLeftBehindChildren; |
11 | 13 | * @Version: V1.0 |
12 | 14 | */ |
13 | 15 | public interface IMzLeftBehindChildrenService extends IService<MzLeftBehindChildren> { |
14 | - | |
16 | + public List<String> getIdentityS(); | |
15 | 17 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMzOrphanService.java
... | ... | @@ -3,6 +3,8 @@ package org.jeecg.modules.system.service; |
3 | 3 | import com.baomidou.mybatisplus.extension.service.IService; |
4 | 4 | import org.jeecg.modules.system.entity.MzOrphan; |
5 | 5 | |
6 | +import java.util.List; | |
7 | + | |
6 | 8 | /** |
7 | 9 | * @Description: 民政_全市在册孤儿数据 |
8 | 10 | * @Author: jeecg-boot |
... | ... | @@ -10,5 +12,5 @@ import org.jeecg.modules.system.entity.MzOrphan; |
10 | 12 | * @Version: V1.0 |
11 | 13 | */ |
12 | 14 | public interface IMzOrphanService extends IService<MzOrphan> { |
13 | - | |
15 | + public List<String> getIdentityS(); | |
14 | 16 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMzUnsupportedService.java
... | ... | @@ -4,6 +4,8 @@ package org.jeecg.modules.system.service; |
4 | 4 | import com.baomidou.mybatisplus.extension.service.IService; |
5 | 5 | import org.jeecg.modules.system.entity.MzUnsupported; |
6 | 6 | |
7 | +import java.util.List; | |
8 | + | |
7 | 9 | /** |
8 | 10 | * @Description: 民政_全市在册事实无人抚养儿童数据 |
9 | 11 | * @Author: jeecg-boot |
... | ... | @@ -11,5 +13,5 @@ import org.jeecg.modules.system.entity.MzUnsupported; |
11 | 13 | * @Version: V1.0 |
12 | 14 | */ |
13 | 15 | public interface IMzUnsupportedService extends IService<MzUnsupported> { |
14 | - | |
16 | + public List<String> getIdentityS(); | |
15 | 17 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IPrimarySchoolService.java
... | ... | @@ -6,6 +6,7 @@ import org.jeecg.modules.system.entity.MrSchool; |
6 | 6 | import org.jeecg.modules.system.entity.PrimarySchool; |
7 | 7 | |
8 | 8 | import java.util.List; |
9 | +import java.util.Set; | |
9 | 10 | |
10 | 11 | /** |
11 | 12 | * @Description: mr_primary_school |
... | ... | @@ -15,4 +16,5 @@ import java.util.List; |
15 | 16 | */ |
16 | 17 | public interface IPrimarySchoolService extends IService<PrimarySchool> { |
17 | 18 | public List<MrSchool> getList(); |
19 | + public Set<String> getIdentityS(); | |
18 | 20 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartService.java
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/FamilyServiceImpl.java
1 | 1 | package org.jeecg.modules.system.service.impl; |
2 | 2 | |
3 | 3 | import org.jeecg.modules.system.entity.Family; |
4 | +import org.jeecg.modules.system.entity.Minor; | |
5 | +import org.jeecg.modules.system.entity.SysDepart; | |
4 | 6 | import org.jeecg.modules.system.mapper.FamilyMapper; |
5 | 7 | import org.jeecg.modules.system.service.IFamilyService; |
8 | +import org.springframework.jdbc.datasource.DataSourceTransactionManager; | |
6 | 9 | import org.springframework.stereotype.Service; |
7 | -import java.util.List; | |
10 | + | |
11 | +import java.util.*; | |
12 | +import java.util.concurrent.CountDownLatch; | |
13 | +import java.util.concurrent.ExecutorService; | |
14 | +import java.util.concurrent.Executors; | |
15 | +import java.util.concurrent.TimeUnit; | |
16 | +import java.util.stream.Collectors; | |
17 | + | |
8 | 18 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
9 | 19 | import org.springframework.beans.factory.annotation.Autowired; |
20 | +import org.springframework.transaction.TransactionDefinition; | |
21 | +import org.springframework.transaction.TransactionStatus; | |
10 | 22 | |
11 | 23 | import javax.annotation.Resource; |
12 | 24 | |
... | ... | @@ -21,9 +33,71 @@ public class FamilyServiceImpl extends ServiceImpl<FamilyMapper, Family> impleme |
21 | 33 | |
22 | 34 | @Resource |
23 | 35 | private FamilyMapper familyMapper; |
36 | + | |
37 | + @Resource | |
38 | + private DataSourceTransactionManager dataSourceTransactionManager; | |
39 | + | |
40 | + @Resource | |
41 | + private TransactionDefinition transactionDefinition; | |
24 | 42 | |
25 | 43 | @Override |
26 | 44 | public List<Family> selectByMainId(String mainId) { |
27 | 45 | return familyMapper.selectByMainId(mainId); |
28 | 46 | } |
47 | + //分段大小 | |
48 | + private int splitSize = 100000; | |
49 | + /** | |
50 | + * 批量新增 | |
51 | + * @param list | |
52 | + * @return | |
53 | + */ | |
54 | + @Override | |
55 | + public Integer insertBatch(List<Family> list,List<SysDepart> departs) { | |
56 | + updateStudentWithThreads(list); | |
57 | + return list.size(); | |
58 | + } | |
59 | + private void addBatch(List<Family> list, CountDownLatch threadLatch){ | |
60 | + TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); | |
61 | + System.out.println("子线程:" + Thread.currentThread().getName()); | |
62 | + try { | |
63 | + list.forEach(s -> { | |
64 | + String newTeacher = "TNO_" + new Random().nextInt(100); | |
65 | + familyMapper.insert(s); | |
66 | + }); | |
67 | + dataSourceTransactionManager.commit(transactionStatus); | |
68 | + threadLatch.countDown(); | |
69 | + } catch (Throwable e) { | |
70 | + e.printStackTrace(); | |
71 | + dataSourceTransactionManager.rollback(transactionStatus); | |
72 | + } | |
73 | + } | |
74 | + | |
75 | + | |
76 | + public void updateStudentWithThreads(List<Family> list) { | |
77 | + // 线程数量 | |
78 | + final Integer threadCount = 15; | |
79 | + | |
80 | + //每个线程处理的数据量 | |
81 | + final Integer dataPartionLength = (list.size() + threadCount - 1) / threadCount; | |
82 | + // 创建多线程处理任务 | |
83 | + ExecutorService studentThreadPool = Executors.newFixedThreadPool(threadCount); | |
84 | + CountDownLatch threadLatchs = new CountDownLatch(threadCount); | |
85 | + | |
86 | + for (int i = 0; i < threadCount; i++) { | |
87 | + // 每个线程处理的数据 | |
88 | + List<Family> threadDatas = list.stream() | |
89 | + .skip(i * dataPartionLength).limit(dataPartionLength).collect(Collectors.toList()); | |
90 | + studentThreadPool.execute(() -> { | |
91 | + addBatch(threadDatas, threadLatchs); | |
92 | + }); | |
93 | + } | |
94 | + try { | |
95 | + // 倒计时锁设置超时时间 30s | |
96 | + threadLatchs.await(30, TimeUnit.SECONDS); | |
97 | + } catch (Throwable e) { | |
98 | + e.printStackTrace(); | |
99 | + } | |
100 | + | |
101 | + System.out.println("主线程完成"); | |
102 | + } | |
29 | 103 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/GaDemographicServiceImpl.java
1 | 1 | package org.jeecg.modules.system.service.impl; |
2 | 2 | |
3 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
4 | +import org.jeecg.common.util.oConvertUtils; | |
4 | 5 | import org.jeecg.modules.system.entity.Family; |
5 | 6 | import org.jeecg.modules.system.entity.GaDemographic; |
6 | 7 | import org.jeecg.modules.system.mapper.GaDemographicMapper; |
7 | 8 | import org.jeecg.modules.system.service.IGaDemographicService; |
9 | +import org.jeecg.modules.system.util.IDNumberUtil; | |
8 | 10 | import org.jeecg.modules.system.vo.FamilyVo; |
9 | 11 | import org.springframework.stereotype.Service; |
10 | 12 | |
11 | 13 | import javax.annotation.Resource; |
14 | +import java.util.HashMap; | |
12 | 15 | import java.util.List; |
16 | +import java.util.Map; | |
17 | +import java.util.Set; | |
13 | 18 | |
14 | 19 | /** |
15 | 20 | * @Description: ga_demographic |
... | ... | @@ -34,9 +39,47 @@ public class GaDemographicServiceImpl extends ServiceImpl<GaDemographicMapper, G |
34 | 39 | } |
35 | 40 | |
36 | 41 | @Override |
37 | - public List<String> getIdentityS() { | |
42 | + public Map<String,String> getIdentityS() { | |
43 | + Set<String> identitys=gaDemographicMapper.getIdentityS(); | |
44 | + Map<String,String> map=new HashMap<>(); | |
45 | + if(oConvertUtils.isNotEmpty(identitys)){ | |
46 | + identitys.parallelStream().forEach(g -> { | |
47 | + if(oConvertUtils.isNotEmpty(g) && IDNumberUtil.checkID(g) && IDNumberUtil.countAge(g)<18){ | |
48 | + map.put(g,g); | |
49 | + } | |
50 | + }); | |
51 | + } | |
52 | + return map; | |
53 | + } | |
54 | + | |
55 | + @Override | |
56 | + public Set<String> getIdStrs() { | |
38 | 57 | return gaDemographicMapper.getIdentityS(); |
39 | 58 | } |
40 | 59 | |
60 | + @Override | |
61 | + public List<Family> getFamilyByHouseholdNum(String householdNum) { | |
62 | + return gaDemographicMapper.getFamilyByHouseholdNum(householdNum); | |
63 | + } | |
64 | + | |
65 | + @Override | |
66 | + public Map<String,Family> queryHouseholdPageList(Integer queryNum, Integer pageSize) { | |
67 | + List<Family> families=gaDemographicMapper.queryHouseholdPageList(queryNum,queryNum); | |
68 | + Map<String,Family> map=new HashMap<>(); | |
69 | + if(oConvertUtils.isNotEmpty(families)){ | |
70 | + families.parallelStream().forEach(f -> { | |
71 | + if(oConvertUtils.isNotEmpty(f) && oConvertUtils.isNotEmpty(f.getIdentity())){ | |
72 | + map.put(f.getIdentity(),f); | |
73 | + } | |
74 | + }); | |
75 | + } | |
76 | + return map; | |
77 | + } | |
78 | + | |
79 | + @Override | |
80 | + public Set<String> queryDemographicPageList(Integer queryNum, Integer pageSize) { | |
81 | + return gaDemographicMapper.queryDemographicPageList(queryNum,queryNum); | |
82 | + } | |
83 | + | |
41 | 84 | |
42 | 85 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/GaHouseholdServiceImpl.java
1 | 1 | package org.jeecg.modules.system.service.impl; |
2 | 2 | |
3 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
4 | +import com.sun.org.apache.xml.internal.resolver.readers.OASISXMLCatalogReader; | |
5 | +import org.jeecg.common.util.oConvertUtils; | |
6 | +import org.jeecg.modules.system.entity.Family; | |
4 | 7 | import org.jeecg.modules.system.entity.GaHousehold; |
8 | +import org.jeecg.modules.system.mapper.GaDemographicMapper; | |
5 | 9 | import org.jeecg.modules.system.mapper.GaHouseholdMapper; |
6 | 10 | import org.jeecg.modules.system.service.IGaHouseholdService; |
11 | +import org.jeecg.modules.system.util.IDNumberUtil; | |
7 | 12 | import org.springframework.stereotype.Service; |
8 | 13 | |
14 | +import javax.annotation.Resource; | |
15 | +import java.util.HashMap; | |
16 | +import java.util.List; | |
17 | +import java.util.Map; | |
18 | + | |
9 | 19 | /** |
10 | 20 | * @Description: ga_household |
11 | 21 | * @Author: jeecg-boot |
12 | - * @Date: 2022-07-14 | |
22 | + * @Date: 2022-07-14 | |
13 | 23 | * @Version: V1.0 |
14 | 24 | */ |
15 | 25 | @Service |
16 | 26 | public class GaHouseholdServiceImpl extends ServiceImpl<GaHouseholdMapper, GaHousehold> implements IGaHouseholdService { |
27 | + @Resource | |
28 | + private GaHouseholdMapper gaHouseholdMapper; | |
17 | 29 | |
30 | + @Override | |
31 | + public Map<String, Family> getGaHouseholds(Map<String, String> gaDemographics) { | |
32 | + Map<String, Family> familyMap = new HashMap<>(); | |
33 | + try { | |
34 | + List<Family> families = gaHouseholdMapper.getGaHouseholds(); | |
35 | + if (oConvertUtils.isNotEmpty(families)) { | |
36 | + families.parallelStream().forEach(g -> { | |
37 | + if (oConvertUtils.isNotEmpty(g) && oConvertUtils.isNotEmpty(g.getIdentity())) { | |
38 | + familyMap.put(g.getIdentity(), g); | |
39 | + } | |
40 | + }); | |
41 | + } | |
42 | + } catch (Exception e) { | |
43 | + e.printStackTrace(); | |
44 | + } | |
45 | + return familyMap; | |
46 | + } | |
18 | 47 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/GaPunishServiceImpl.java
1 | 1 | package org.jeecg.modules.system.service.impl; |
2 | 2 | |
3 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
4 | +import org.jeecg.common.util.oConvertUtils; | |
4 | 5 | import org.jeecg.modules.system.entity.GaPunish; |
5 | 6 | import org.jeecg.modules.system.mapper.GaDemographicMapper; |
6 | 7 | import org.jeecg.modules.system.mapper.GaPunishMapper; |
... | ... | @@ -9,7 +10,9 @@ import org.jeecg.modules.system.vo.GaPunishVo; |
9 | 10 | import org.springframework.stereotype.Service; |
10 | 11 | |
11 | 12 | import javax.annotation.Resource; |
13 | +import java.util.HashMap; | |
12 | 14 | import java.util.List; |
15 | +import java.util.Map; | |
13 | 16 | |
14 | 17 | /** |
15 | 18 | * @Description: ga_punish |
... | ... | @@ -27,8 +30,17 @@ public class GaPunishServiceImpl extends ServiceImpl<GaPunishMapper, GaPunish> i |
27 | 30 | * @return |
28 | 31 | */ |
29 | 32 | @Override |
30 | - public List<GaPunishVo> queryList() { | |
31 | - return gaPunishMapper.queryList(); | |
33 | + public Map<String,GaPunishVo> queryAll() { | |
34 | + Map<String,GaPunishVo> punishVoMap=new HashMap<>(); | |
35 | + List<GaPunishVo> gaPunishVos= gaPunishMapper.queryAll(); | |
36 | + if(oConvertUtils.isNotEmpty(gaPunishVos)){ | |
37 | + gaPunishVos.parallelStream().forEach(g -> { | |
38 | + if(oConvertUtils.isNotEmpty(g) && oConvertUtils.isNotEmpty(g.getDxsfzh())){ | |
39 | + punishVoMap.put(g.getDxsfzh(),g); | |
40 | + } | |
41 | + }); | |
42 | + } | |
43 | + return punishVoMap; | |
32 | 44 | } |
33 | 45 | |
34 | 46 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/HighSchoolServiceImpl.java
... | ... | @@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
11 | 11 | |
12 | 12 | import javax.annotation.Resource; |
13 | 13 | import java.util.List; |
14 | +import java.util.Set; | |
14 | 15 | |
15 | 16 | /** |
16 | 17 | * @Description: mr_high_school |
... | ... | @@ -28,4 +29,11 @@ public class HighSchoolServiceImpl extends ServiceImpl<HighSchoolMapper, HighSch |
28 | 29 | public List<MrSchool> getList() { |
29 | 30 | return highSchoolMapper.getList(); |
30 | 31 | } |
32 | + | |
33 | + @Override | |
34 | + public Set<String> getIdentityS() { | |
35 | + return highSchoolMapper.getIdentityS(); | |
36 | + } | |
37 | + | |
38 | + | |
31 | 39 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MinorServiceImpl.java
1 | 1 | package org.jeecg.modules.system.service.impl; |
2 | 2 | |
3 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
4 | +import javassist.bytecode.analysis.Executor; | |
4 | 5 | import org.jeecg.modules.system.entity.Family; |
5 | 6 | import org.jeecg.modules.system.entity.Minor; |
7 | +import org.jeecg.modules.system.entity.SysDepart; | |
6 | 8 | import org.jeecg.modules.system.mapper.FamilyMapper; |
7 | 9 | import org.jeecg.modules.system.mapper.MinorMapper; |
8 | 10 | import org.jeecg.modules.system.service.IMinorService; |
11 | +import org.springframework.jdbc.datasource.DataSourceTransactionManager; | |
9 | 12 | import org.springframework.stereotype.Service; |
13 | +import org.springframework.transaction.TransactionDefinition; | |
14 | +import org.springframework.transaction.TransactionStatus; | |
10 | 15 | import org.springframework.transaction.annotation.Transactional; |
11 | 16 | |
12 | 17 | import javax.annotation.Resource; |
13 | 18 | import java.io.Serializable; |
19 | +import java.util.ArrayList; | |
14 | 20 | import java.util.Collection; |
15 | 21 | import java.util.List; |
22 | +import java.util.Random; | |
23 | +import java.util.concurrent.CountDownLatch; | |
24 | +import java.util.concurrent.ExecutorService; | |
25 | +import java.util.concurrent.Executors; | |
26 | +import java.util.concurrent.TimeUnit; | |
27 | +import java.util.stream.Collectors; | |
16 | 28 | |
17 | 29 | /** |
18 | 30 | * @Description: 未成年人 |
... | ... | @@ -27,17 +39,47 @@ public class MinorServiceImpl extends ServiceImpl<MinorMapper, Minor> implements |
27 | 39 | private MinorMapper minorMapper; |
28 | 40 | @Resource |
29 | 41 | private FamilyMapper familyMapper; |
42 | + | |
43 | + | |
44 | + @Resource | |
45 | + private DataSourceTransactionManager dataSourceTransactionManager; | |
46 | + | |
47 | + @Resource | |
48 | + private TransactionDefinition transactionDefinition; | |
49 | + | |
50 | + | |
51 | + //分段大小 | |
52 | + private int splitSize = 100000; | |
30 | 53 | |
31 | 54 | @Override |
32 | 55 | @Transactional |
33 | 56 | public void saveMain(Minor minor, List<Family> familyList) { |
34 | 57 | minorMapper.insert(minor); |
35 | 58 | if(familyList!=null && familyList.size()>0) { |
36 | - for(Family entity:familyList) { | |
59 | + //判断家庭成员信息里的数据是否包含未成年人,默认包含 | |
60 | + Boolean falg=true; | |
61 | + //户籍信息去重 | |
62 | + List<Family> families= familyList.stream().distinct().collect(Collectors.toList()); | |
63 | + for(Family entity:families) { | |
64 | + if(!entity.getIdentity().equals(minor.getIdentity())) { | |
65 | + falg = false; | |
66 | + } | |
37 | 67 | //外键设置 |
38 | 68 | entity.setMinorId(minor.getId()); |
39 | 69 | familyMapper.insert(entity); |
40 | 70 | } |
71 | + if(!falg){ | |
72 | + Family family=new Family(); | |
73 | + family.setCrime(Family.IS_NOT_CRIME); | |
74 | + family.setMinorId(minor.getId()); | |
75 | + family.setName(minor.getName()); | |
76 | + family.setHouseholdNum(minor.getHouseholdNum()); | |
77 | + family.setIdentity(minor.getIdentity()); | |
78 | + family.setNumber(minor.getNumber()); | |
79 | + family.setGender(minor.getGender()); | |
80 | + family.setAddress(minor.getAddress()); | |
81 | + family.setRelation(minor.getRelation()); | |
82 | + } | |
41 | 83 | } |
42 | 84 | } |
43 | 85 | |
... | ... | @@ -51,6 +93,8 @@ public class MinorServiceImpl extends ServiceImpl<MinorMapper, Minor> implements |
51 | 93 | |
52 | 94 | //2.子表数据重新插入 |
53 | 95 | if(familyList!=null && familyList.size()>0) { |
96 | + //户籍信息去重 | |
97 | + List<Family> families= familyList.stream().distinct().collect(Collectors.toList()); | |
54 | 98 | for(Family entity:familyList) { |
55 | 99 | //外键设置 |
56 | 100 | entity.setMinorId(minor.getId()); |
... | ... | @@ -74,5 +118,78 @@ public class MinorServiceImpl extends ServiceImpl<MinorMapper, Minor> implements |
74 | 118 | minorMapper.deleteById(id); |
75 | 119 | } |
76 | 120 | } |
77 | - | |
121 | + | |
122 | + @Override | |
123 | + public Integer insertBatch(List<Minor> list,List<SysDepart> departs) { | |
124 | + updateStudentWithThreads(list); | |
125 | + return list.size(); | |
126 | + } | |
127 | + | |
128 | + /** | |
129 | + * 将list集合平均分成几等份 | |
130 | + * | |
131 | + * @param num 分的份数 | |
132 | + * @param list 需要分的集合 | |
133 | + */ | |
134 | + private List splitList(List list, Integer num) { | |
135 | + int listSize = list.size(); //list 长度 | |
136 | + List<List> splitLists = new ArrayList<>(); | |
137 | + List stringlist = new ArrayList<>(); | |
138 | + for ( int i = 0; i < listSize; i++ ) { | |
139 | + stringlist.add(list.get(i)); | |
140 | + if ( ((i + 1) % num == 0) || (i + 1 == listSize) ) { | |
141 | + splitLists.add(stringlist); | |
142 | + stringlist = new ArrayList<>(); | |
143 | + } | |
144 | + } | |
145 | + return splitLists; | |
146 | + } | |
147 | + | |
148 | + private void addBatch(List<Minor> list, CountDownLatch threadLatch){ | |
149 | + TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); | |
150 | + System.out.println("子线程:" + Thread.currentThread().getName()); | |
151 | + try { | |
152 | + list.forEach(s -> { | |
153 | + // 更新教师信息 | |
154 | + // String teacher = s.getTeacher(); | |
155 | + String newTeacher = "TNO_" + new Random().nextInt(100); | |
156 | +// s.setTeacher(newTeacher); | |
157 | + minorMapper.insert(s); | |
158 | + }); | |
159 | + dataSourceTransactionManager.commit(transactionStatus); | |
160 | + threadLatch.countDown(); | |
161 | + } catch (Throwable e) { | |
162 | + e.printStackTrace(); | |
163 | + dataSourceTransactionManager.rollback(transactionStatus); | |
164 | + } | |
165 | + } | |
166 | + | |
167 | + | |
168 | + public void updateStudentWithThreads(List<Minor> list) { | |
169 | + // 线程数量 | |
170 | + final Integer threadCount = 15; | |
171 | + | |
172 | + //每个线程处理的数据量 | |
173 | + final Integer dataPartionLength = (list.size() + threadCount - 1) / threadCount; | |
174 | + // 创建多线程处理任务 | |
175 | + ExecutorService studentThreadPool = Executors.newFixedThreadPool(threadCount); | |
176 | + CountDownLatch threadLatchs = new CountDownLatch(threadCount); | |
177 | + | |
178 | + for (int i = 0; i < threadCount; i++) { | |
179 | + // 每个线程处理的数据 | |
180 | + List<Minor> threadDatas = list.stream() | |
181 | + .skip(i * dataPartionLength).limit(dataPartionLength).collect(Collectors.toList()); | |
182 | + studentThreadPool.execute(() -> { | |
183 | + addBatch(threadDatas, threadLatchs); | |
184 | + }); | |
185 | + } | |
186 | + try { | |
187 | + // 倒计时锁设置超时时间 30s | |
188 | + threadLatchs.await(30, TimeUnit.SECONDS); | |
189 | + } catch (Throwable e) { | |
190 | + e.printStackTrace(); | |
191 | + } | |
192 | + | |
193 | + System.out.println("主线程完成"); | |
194 | + } | |
78 | 195 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MrSchoolServiceImpl.java
1 | 1 | package org.jeecg.modules.system.service.impl; |
2 | 2 | |
3 | +import org.jeecg.modules.system.entity.Minor; | |
3 | 4 | import org.jeecg.modules.system.entity.MrSchool; |
5 | +import org.jeecg.modules.system.entity.SysDepart; | |
4 | 6 | import org.jeecg.modules.system.mapper.MrSchoolMapper; |
5 | 7 | import org.jeecg.modules.system.service.IMrSchoolService; |
8 | +import org.springframework.jdbc.datasource.DataSourceTransactionManager; | |
6 | 9 | import org.springframework.stereotype.Service; |
7 | 10 | |
8 | 11 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
12 | +import org.springframework.transaction.TransactionDefinition; | |
13 | +import org.springframework.transaction.TransactionStatus; | |
14 | + | |
15 | +import javax.annotation.Resource; | |
16 | +import java.util.ArrayList; | |
17 | +import java.util.List; | |
18 | +import java.util.Random; | |
19 | +import java.util.concurrent.CountDownLatch; | |
20 | +import java.util.concurrent.ExecutorService; | |
21 | +import java.util.concurrent.Executors; | |
22 | +import java.util.concurrent.TimeUnit; | |
23 | +import java.util.stream.Collectors; | |
9 | 24 | |
10 | 25 | /** |
11 | 26 | * @Description: 学校 |
... | ... | @@ -16,4 +31,88 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
16 | 31 | @Service |
17 | 32 | public class MrSchoolServiceImpl extends ServiceImpl<MrSchoolMapper, MrSchool> implements IMrSchoolService { |
18 | 33 | |
34 | + @Resource | |
35 | + private MrSchoolMapper schoolMapper; | |
36 | + @Resource | |
37 | + private DataSourceTransactionManager dataSourceTransactionManager; | |
38 | + | |
39 | + @Resource | |
40 | + private TransactionDefinition transactionDefinition; | |
41 | + | |
42 | + //分段大小 | |
43 | + private int splitSize = 100000; | |
44 | + | |
45 | + @Override | |
46 | + public Integer insertBatch(List<MrSchool> list,List<SysDepart> departs) { | |
47 | + updateStudentWithThreads(list); | |
48 | + return list.size(); | |
49 | + } | |
50 | + | |
51 | + /** | |
52 | + * 将list集合平均分成几等份 | |
53 | + * | |
54 | + * @param num 分的份数 | |
55 | + * @param list 需要分的集合 | |
56 | + */ | |
57 | + private List splitList(List list, Integer num) { | |
58 | + int listSize = list.size(); //list 长度 | |
59 | + List<List> splitLists = new ArrayList<>(); | |
60 | + List stringlist = new ArrayList<>(); | |
61 | + for ( int i = 0; i < listSize; i++ ) { | |
62 | + stringlist.add(list.get(i)); | |
63 | + if ( ((i + 1) % num == 0) || (i + 1 == listSize) ) { | |
64 | + splitLists.add(stringlist); | |
65 | + stringlist = new ArrayList<>(); | |
66 | + } | |
67 | + } | |
68 | + return splitLists; | |
69 | + } | |
70 | + | |
71 | + private void addBatch(List<MrSchool> list, CountDownLatch threadLatch){ | |
72 | + TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); | |
73 | + System.out.println("子线程:" + Thread.currentThread().getName()); | |
74 | + try { | |
75 | + list.forEach(s -> { | |
76 | + // 更新教师信息 | |
77 | + // String teacher = s.getTeacher(); | |
78 | + String newTeacher = "TNO_" + new Random().nextInt(100); | |
79 | +// s.setTeacher(newTeacher); | |
80 | + schoolMapper.insert(s); | |
81 | + }); | |
82 | + dataSourceTransactionManager.commit(transactionStatus); | |
83 | + threadLatch.countDown(); | |
84 | + } catch (Throwable e) { | |
85 | + e.printStackTrace(); | |
86 | + dataSourceTransactionManager.rollback(transactionStatus); | |
87 | + } | |
88 | + } | |
89 | + | |
90 | + | |
91 | + public void updateStudentWithThreads(List<MrSchool> list) { | |
92 | + // 线程数量 | |
93 | + final Integer threadCount = 15; | |
94 | + | |
95 | + //每个线程处理的数据量 | |
96 | + final Integer dataPartionLength = (list.size() + threadCount - 1) / threadCount; | |
97 | + // 创建多线程处理任务 | |
98 | + ExecutorService studentThreadPool = Executors.newFixedThreadPool(threadCount); | |
99 | + CountDownLatch threadLatchs = new CountDownLatch(threadCount); | |
100 | + | |
101 | + for (int i = 0; i < threadCount; i++) { | |
102 | + // 每个线程处理的数据 | |
103 | + List<MrSchool> threadDatas = list.stream() | |
104 | + .skip(i * dataPartionLength).limit(dataPartionLength).collect(Collectors.toList()); | |
105 | + studentThreadPool.execute(() -> { | |
106 | + addBatch(threadDatas, threadLatchs); | |
107 | + }); | |
108 | + } | |
109 | + try { | |
110 | + // 倒计时锁设置超时时间 30s | |
111 | + threadLatchs.await(30, TimeUnit.SECONDS); | |
112 | + } catch (Throwable e) { | |
113 | + e.printStackTrace(); | |
114 | + } | |
115 | + | |
116 | + System.out.println("主线程完成"); | |
117 | + } | |
19 | 118 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MzAdoptionServiceImpl.java
... | ... | @@ -2,10 +2,14 @@ package org.jeecg.modules.system.service.impl; |
2 | 2 | |
3 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
4 | 4 | import org.jeecg.modules.system.entity.MzAdoption; |
5 | +import org.jeecg.modules.system.mapper.HighSchoolMapper; | |
5 | 6 | import org.jeecg.modules.system.mapper.MzAdoptionMapper; |
6 | 7 | import org.jeecg.modules.system.service.IMzAdoptionService; |
7 | 8 | import org.springframework.stereotype.Service; |
8 | 9 | |
10 | +import javax.annotation.Resource; | |
11 | +import java.util.List; | |
12 | + | |
9 | 13 | /** |
10 | 14 | * @Description: mz_adoption |
11 | 15 | * @Author: jeecg-boot |
... | ... | @@ -14,5 +18,11 @@ import org.springframework.stereotype.Service; |
14 | 18 | */ |
15 | 19 | @Service |
16 | 20 | public class MzAdoptionServiceImpl extends ServiceImpl<MzAdoptionMapper, MzAdoption> implements IMzAdoptionService { |
21 | + @Resource | |
22 | + private MzAdoptionMapper adoptionMapper; | |
17 | 23 | |
24 | + @Override | |
25 | + public List<String> getIdentityS() { | |
26 | + return adoptionMapper.getIdentityS(); | |
27 | + } | |
18 | 28 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MzLeftBehindChildrenServiceImpl.java
... | ... | @@ -2,10 +2,14 @@ package org.jeecg.modules.system.service.impl; |
2 | 2 | |
3 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
4 | 4 | import org.jeecg.modules.system.entity.MzLeftBehindChildren; |
5 | +import org.jeecg.modules.system.mapper.MzAdoptionMapper; | |
5 | 6 | import org.jeecg.modules.system.mapper.MzLeftBehindChildrenMapper; |
6 | 7 | import org.jeecg.modules.system.service.IMzLeftBehindChildrenService; |
7 | 8 | import org.springframework.stereotype.Service; |
8 | 9 | |
10 | +import javax.annotation.Resource; | |
11 | +import java.util.List; | |
12 | + | |
9 | 13 | /** |
10 | 14 | * @Description: mz_left_behind_children |
11 | 15 | * @Author: jeecg-boot |
... | ... | @@ -15,4 +19,11 @@ import org.springframework.stereotype.Service; |
15 | 19 | @Service |
16 | 20 | public class MzLeftBehindChildrenServiceImpl extends ServiceImpl<MzLeftBehindChildrenMapper, MzLeftBehindChildren> implements IMzLeftBehindChildrenService { |
17 | 21 | |
22 | + @Resource | |
23 | + private MzLeftBehindChildrenMapper leftBehindChildrenMapper; | |
24 | + | |
25 | + @Override | |
26 | + public List<String> getIdentityS() { | |
27 | + return leftBehindChildrenMapper.getIdentityS(); | |
28 | + } | |
18 | 29 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MzOrphanServiceImpl.java
... | ... | @@ -2,10 +2,14 @@ package org.jeecg.modules.system.service.impl; |
2 | 2 | |
3 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
4 | 4 | import org.jeecg.modules.system.entity.MzOrphan; |
5 | +import org.jeecg.modules.system.mapper.MzLeftBehindChildrenMapper; | |
5 | 6 | import org.jeecg.modules.system.mapper.MzOrphanMapper; |
6 | 7 | import org.jeecg.modules.system.service.IMzOrphanService; |
7 | 8 | import org.springframework.stereotype.Service; |
8 | 9 | |
10 | +import javax.annotation.Resource; | |
11 | +import java.util.List; | |
12 | + | |
9 | 13 | /** |
10 | 14 | * @Description: mz_orphan |
11 | 15 | * @Author: jeecg-boot |
... | ... | @@ -15,4 +19,11 @@ import org.springframework.stereotype.Service; |
15 | 19 | @Service |
16 | 20 | public class MzOrphanServiceImpl extends ServiceImpl<MzOrphanMapper, MzOrphan> implements IMzOrphanService { |
17 | 21 | |
22 | + @Resource | |
23 | + private MzOrphanMapper orphanMapper; | |
24 | + | |
25 | + @Override | |
26 | + public List<String> getIdentityS() { | |
27 | + return orphanMapper.getIdentityS(); | |
28 | + } | |
18 | 29 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MzUnsupportedServiceImpl.java
... | ... | @@ -2,10 +2,14 @@ package org.jeecg.modules.system.service.impl; |
2 | 2 | |
3 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
4 | 4 | import org.jeecg.modules.system.entity.MzUnsupported; |
5 | +import org.jeecg.modules.system.mapper.MzOrphanMapper; | |
5 | 6 | import org.jeecg.modules.system.mapper.MzUnsupportedMapper; |
6 | 7 | import org.jeecg.modules.system.service.IMzUnsupportedService; |
7 | 8 | import org.springframework.stereotype.Service; |
8 | 9 | |
10 | +import javax.annotation.Resource; | |
11 | +import java.util.List; | |
12 | + | |
9 | 13 | /** |
10 | 14 | * @Description: mz_unsupported |
11 | 15 | * @Author: jeecg-boot |
... | ... | @@ -15,4 +19,11 @@ import org.springframework.stereotype.Service; |
15 | 19 | @Service |
16 | 20 | public class MzUnsupportedServiceImpl extends ServiceImpl<MzUnsupportedMapper, MzUnsupported> implements IMzUnsupportedService { |
17 | 21 | |
22 | + @Resource | |
23 | + private MzUnsupportedMapper unsupportedMapper; | |
24 | + | |
25 | + @Override | |
26 | + public List<String> getIdentityS() { | |
27 | + return unsupportedMapper.getIdentityS(); | |
28 | + } | |
18 | 29 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/PrimarySchoolServiceImpl.java
... | ... | @@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
11 | 11 | |
12 | 12 | import javax.annotation.Resource; |
13 | 13 | import java.util.List; |
14 | +import java.util.Set; | |
14 | 15 | |
15 | 16 | /** |
16 | 17 | * @Description: mr_primary_school |
... | ... | @@ -21,10 +22,15 @@ import java.util.List; |
21 | 22 | @Service |
22 | 23 | public class PrimarySchoolServiceImpl extends ServiceImpl<PrimarySchoolMapper, PrimarySchool> implements IPrimarySchoolService { |
23 | 24 | @Resource |
24 | - private HighSchoolMapper highSchoolMapper; | |
25 | + private PrimarySchoolMapper primarySchoolMapper; | |
25 | 26 | |
26 | 27 | @Override |
27 | 28 | public List<MrSchool> getList() { |
28 | - return highSchoolMapper.getList(); | |
29 | + return primarySchoolMapper.getList(); | |
30 | + } | |
31 | + | |
32 | + @Override | |
33 | + public Set<String> getIdentityS() { | |
34 | + return primarySchoolMapper.getIdentityS(); | |
29 | 35 | } |
30 | 36 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java
... | ... | @@ -549,6 +549,15 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart |
549 | 549 | return this.baseMapper.queryDeptByPid(pid); |
550 | 550 | } |
551 | 551 | /** |
552 | + * 获取无pid的数据 | |
553 | + * @return | |
554 | + */ | |
555 | + @Override | |
556 | + public List<SysDepart> querySysDeparts() { | |
557 | + return this.baseMapper.querySysDeparts(); | |
558 | + } | |
559 | + | |
560 | + /** | |
552 | 561 | * 根据关键字筛选部门信息 |
553 | 562 | * @param keyWord |
554 | 563 | * @return | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/IDNumberUtil.java
... | ... | @@ -22,26 +22,32 @@ public class IDNumberUtil { |
22 | 22 | * @return |
23 | 23 | */ |
24 | 24 | public static String judgeGender(String idNumber) throws IllegalArgumentException{ |
25 | - System.out.println(idNumber.length()); | |
26 | - if(idNumber.length() != 18 && idNumber.length() != 15){ | |
27 | - throw new IllegalArgumentException("身份证号长度错误"); | |
28 | - } | |
29 | - int gender = 0; | |
30 | - if(idNumber.length() == 18){ | |
31 | - //如果身份证号18位,取身份证号倒数第二位 | |
32 | - char c = idNumber.charAt(idNumber.length() - 2); | |
33 | - gender = Integer.parseInt(String.valueOf(c)); | |
34 | - }else{ | |
35 | - //如果身份证号15位,取身份证号最后一位 | |
36 | - char c = idNumber.charAt(idNumber.length() - 1); | |
37 | - gender = Integer.parseInt(String.valueOf(c)); | |
25 | + String genderStr="1"; | |
26 | + try { | |
27 | +// System.out.println(idNumber.length()); | |
28 | + if(checkID(idNumber)) { | |
29 | + int gender = 1; | |
30 | + if(idNumber.length() == 18){ | |
31 | + //如果身份证号18位,取身份证号倒数第二位 | |
32 | + char c = idNumber.charAt(idNumber.length() - 2); | |
33 | + gender = Integer.parseInt(String.valueOf(c)); | |
34 | + }else{ | |
35 | + //如果身份证号15位,取身份证号最后一位 | |
36 | + char c = idNumber.charAt(idNumber.length() - 1); | |
37 | + gender = Integer.parseInt(String.valueOf(c)); | |
38 | + } | |
39 | +// System.out.println("gender = " + gender); | |
40 | + if(gender % 2 == 1){ | |
41 | + genderStr= "1"; | |
42 | + }else{ | |
43 | + genderStr= "2"; | |
44 | + } | |
38 | 45 | } |
39 | - System.out.println("gender = " + gender); | |
40 | - if(gender % 2 == 1){ | |
41 | - return "男"; | |
42 | - }else{ | |
43 | - return "女"; | |
46 | + } catch (Exception e) { | |
47 | + e.printStackTrace(); | |
44 | 48 | } |
49 | + | |
50 | + return genderStr; | |
45 | 51 | } |
46 | 52 | /** |
47 | 53 | * 根据身份证的号码算出当前身份证持有者的年龄 |
... | ... | @@ -49,43 +55,85 @@ public class IDNumberUtil { |
49 | 55 | * @return |
50 | 56 | */ |
51 | 57 | public static int countAge(String idNumber) { |
52 | - if(idNumber.length() != 18 && idNumber.length() != 15){ | |
53 | - throw new IllegalArgumentException("身份证号长度错误"); | |
54 | - } | |
55 | - String year; | |
56 | - String yue; | |
57 | - String day; | |
58 | - if(idNumber.length() == 18){ | |
59 | - year = idNumber.substring(6).substring(0, 4);// 得到年份 | |
60 | - yue = idNumber.substring(10).substring(0, 2);// 得到月份 | |
61 | - day = idNumber.substring(12).substring(0,2);//得到日 | |
62 | - }else{ | |
63 | - year = "19" + idNumber.substring(6, 8);// 年份 | |
64 | - yue = idNumber.substring(8, 10);// 月份 | |
65 | - day = idNumber.substring(10, 12);//日 | |
66 | - } | |
67 | - Date date = new Date();// 得到当前的系统时间 | |
68 | - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); | |
69 | - String fyear = format.format(date).substring(0, 4);// 当前年份 | |
70 | - String fyue = format.format(date).substring(5, 7);// 月份 | |
71 | - String fday=format.format(date).substring(8,10);// | |
72 | 58 | int age = 0; |
73 | - if(Integer.parseInt(yue) == Integer.parseInt(fyue)){//如果月份相同 | |
74 | - if(Integer.parseInt(day) <= Integer.parseInt(fday)){//说明已经过了生日或者今天是生日 | |
75 | - age = Integer.parseInt(fyear) - Integer.parseInt(year); | |
59 | + String genderStr="1"; | |
60 | + try { | |
61 | + if(checkID(idNumber)) { | |
62 | + String year; | |
63 | + String yue; | |
64 | + String day; | |
65 | + if(idNumber.length() == 18){ | |
66 | + year = idNumber.substring(6).substring(0, 4);// 得到年份 | |
67 | + yue = idNumber.substring(10).substring(0, 2);// 得到月份 | |
68 | + day = idNumber.substring(12).substring(0,2);//得到日 | |
69 | + }else{ | |
70 | + year = "19" + idNumber.substring(6, 8);// 年份 | |
71 | + yue = idNumber.substring(8, 10);// 月份 | |
72 | + day = idNumber.substring(10, 12);//日 | |
76 | 73 | } |
77 | - }else{ | |
74 | + Date date = new Date();// 得到当前的系统时间 | |
75 | + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); | |
76 | + String fyear = format.format(date).substring(0, 4);// 当前年份 | |
77 | + String fyue = format.format(date).substring(5, 7);// 月份 | |
78 | + String fday=format.format(date).substring(8,10);// | |
78 | 79 | |
79 | - if(Integer.parseInt(yue) < Integer.parseInt(fyue)){ | |
80 | - //如果当前月份大于出生月份 | |
81 | - age = Integer.parseInt(fyear) - Integer.parseInt(year); | |
80 | + if(Integer.parseInt(yue) == Integer.parseInt(fyue)){//如果月份相同 | |
81 | + if(Integer.parseInt(day) <= Integer.parseInt(fday)){//说明已经过了生日或者今天是生日 | |
82 | + age = Integer.parseInt(fyear) - Integer.parseInt(year); | |
83 | + } | |
82 | 84 | }else{ |
83 | - //如果当前月份小于出生月份,说明生日还没过 | |
84 | - age = Integer.parseInt(fyear) - Integer.parseInt(year) - 1; | |
85 | + | |
86 | + if(Integer.parseInt(yue) < Integer.parseInt(fyue)){ | |
87 | + //如果当前月份大于出生月份 | |
88 | + age = Integer.parseInt(fyear) - Integer.parseInt(year); | |
89 | + }else{ | |
90 | + //如果当前月份小于出生月份,说明生日还没过 | |
91 | + age = Integer.parseInt(fyear) - Integer.parseInt(year) - 1; | |
92 | + } | |
85 | 93 | } |
86 | 94 | } |
87 | - System.out.println("age = " + age); | |
95 | + | |
96 | +// System.out.println("出生年月 = " + year+yue+day); | |
97 | +// System.out.println("age = " + age); | |
98 | + } catch (Exception e) { | |
99 | + e.printStackTrace(); | |
100 | + } | |
88 | 101 | return age; |
89 | 102 | } |
90 | 103 | |
104 | + public static boolean checkID(String s) { | |
105 | + //空参判断,保证程序健壮性 | |
106 | + if (s == null) { | |
107 | + return false; | |
108 | + } | |
109 | + //判断长度 | |
110 | + if (s.length() != 18 && s.length() != 15) { | |
111 | + return false; | |
112 | + } | |
113 | + //public boolean startsWith(String prefix) | |
114 | + //测试此字符串是否以指定的前缀开头。 | |
115 | + if (s.startsWith("0")) { | |
116 | + return false; | |
117 | + } | |
118 | + //遍历字符串 | |
119 | + for (int i = 0; i < s.length(); i++) { | |
120 | + //获取遍历字符 | |
121 | + char ch = s.charAt(i); | |
122 | + //最后一位的校验 | |
123 | + if (i == s.length() - 1) { | |
124 | + //优化程序,改变逻辑判断 | |
125 | + if (ch < '0' || ch > '9' && ch != 'X') { | |
126 | + return false; | |
127 | + } | |
128 | + } else {//其他位的校验 | |
129 | + if (ch < '0' || ch > '9') { | |
130 | + return false; | |
131 | + } | |
132 | + } | |
133 | + } | |
134 | + //以上都不符合,返回true | |
135 | + return true; | |
136 | + } | |
137 | + | |
138 | + | |
91 | 139 | } | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/TaskThreadQuery.java
0 → 100644
1 | +package org.jeecg.modules.system.util; | |
2 | + | |
3 | +import org.jeecg.modules.system.entity.Family; | |
4 | +import org.jeecg.modules.system.service.IGaDemographicService; | |
5 | + | |
6 | +import javax.annotation.Resource; | |
7 | +import java.util.List; | |
8 | +import java.util.concurrent.Callable; | |
9 | + | |
10 | +public class TaskThreadQuery implements Callable<List<Family>> { | |
11 | + | |
12 | + @Resource | |
13 | + private IGaDemographicService gaDemographicService; | |
14 | + | |
15 | + | |
16 | + private int offset; | |
17 | + private int rows; | |
18 | + | |
19 | + public TaskThreadQuery(IGaDemographicService gaDemographicService,int offset,int rows){ | |
20 | + this.gaDemographicService = gaDemographicService; | |
21 | + this.offset = offset; | |
22 | + this.rows = rows; | |
23 | + } | |
24 | + | |
25 | + @Override | |
26 | + public List<Family> call() throws Exception { | |
27 | + List<Family> list = gaDemographicService.queryPageList(offset,rows); | |
28 | + if (list != null && list.size() > 0){ | |
29 | + return list; | |
30 | + } | |
31 | + return null; | |
32 | + } | |
33 | +} | |
0 | 34 | \ No newline at end of file | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/MinorPage.java
... | ... | @@ -46,62 +46,69 @@ public class MinorPage { |
46 | 46 | @ApiModelProperty(value = "所属部门") |
47 | 47 | @Dict(dictTable ="sys_depart",dicText = "depart_name",dicCode = "id") |
48 | 48 | private String sysOrgCode; |
49 | + /**户号*/ | |
50 | + @Excel(name = "户号", width = 25,needMerge=true) | |
51 | + @ApiModelProperty(value = "户号") | |
52 | + private String householdNum; | |
53 | + /**人员编号*/ | |
54 | + @Excel(name = "人员编号", width = 25,needMerge=true) | |
55 | + @ApiModelProperty(value = "人员编号") | |
56 | + private String number; | |
49 | 57 | /**姓名*/ |
50 | - @Excel(name = "姓名", width = 15) | |
58 | + @Excel(name = "姓名", width = 15,needMerge=true) | |
51 | 59 | @ApiModelProperty(value = "姓名") |
52 | 60 | private String name; |
53 | 61 | /**性别*/ |
54 | - @Excel(name = "性别", width = 15,dicCode = "sex") | |
62 | + @Excel(name = "性别", width = 15,dicCode = "sex",needMerge=true) | |
55 | 63 | @ApiModelProperty(value = "性别") |
56 | 64 | @Dict(dicCode = "sex") |
57 | 65 | private Integer gender; |
66 | + /**身份证号*/ | |
67 | + @Excel(name = "身份证号", width = 20,needMerge=true) | |
68 | + @ApiModelProperty(value = "身份证号") | |
69 | + private String identity; | |
58 | 70 | /**家庭住址*/ |
59 | - @Excel(name = "家庭住址", width = 15) | |
71 | + @Excel(name = "家庭住址", width = 20,needMerge=true) | |
60 | 72 | @ApiModelProperty(value = "家庭住址") |
61 | 73 | private String address; |
62 | - /**身份证号*/ | |
63 | - @Excel(name = "身份证号", width = 15) | |
64 | - @ApiModelProperty(value = "身份证号") | |
65 | - private String identity; | |
66 | - /**重点关注原因*/ | |
67 | - @Excel(name = "重点关注原因", width = 15) | |
68 | - @ApiModelProperty(value = "重点关注原因") | |
69 | - private String reason; | |
70 | - /**备注*/ | |
71 | - @Excel(name = "备注", width = 15) | |
72 | - @ApiModelProperty(value = "备注") | |
73 | - private String remark; | |
74 | - | |
75 | 74 | /** |
76 | 75 | * 监护人 |
77 | 76 | */ |
78 | - @Excel(name = "监护人", width = 15) | |
77 | + @Excel(name = "监护人", width = 15,needMerge=true) | |
79 | 78 | @ApiModelProperty(value = "监护人") |
80 | 79 | private String guardian; |
81 | 80 | |
82 | - /**是否失学*/ | |
83 | - @Excel(name = "是否失学", width = 15,dicCode = "school_status") | |
84 | - @ApiModelProperty(value = "是否失学") | |
85 | - @Dict(dicCode = "school_status") | |
86 | - private Integer school; | |
87 | - | |
88 | 81 | /** |
89 | 82 | * 监护人关系 |
90 | 83 | */ |
91 | - @Excel(name = "监护人关系", width = 15) | |
84 | + @Excel(name = "监护人关系", width = 15,needMerge=true) | |
92 | 85 | @ApiModelProperty(value = "监护人关系") |
93 | 86 | private String relation; |
94 | - | |
95 | - /**人员编号*/ | |
96 | - @Excel(name = "人员编号", width = 15) | |
97 | - @ApiModelProperty(value = "人员编号") | |
98 | - private String number; | |
99 | - | |
100 | - /**户号*/ | |
101 | - @Excel(name = "户号", width = 15) | |
102 | - @ApiModelProperty(value = "户号") | |
103 | - private String householdNum; | |
104 | - | |
87 | + /**是否失学*/ | |
88 | + @Excel(name = "是否失学", width = 10,dicCode = "school_status",needMerge=true) | |
89 | + @ApiModelProperty(value = "是否失学") | |
90 | + @Dict(dicCode = "school_status") | |
91 | + private Integer school; | |
92 | + /**学校名称*/ | |
93 | + @Excel(name = "学校名称", width = 15,needMerge=true) | |
94 | + @ApiModelProperty(value = "学校名称") | |
95 | + private String schoolName; | |
96 | + @Excel(name = "入学年份", width = 15) | |
97 | + @ApiModelProperty(value = "入学年份") | |
98 | + private String startYear; | |
99 | + /**重点关注原因*/ | |
100 | + @Excel(name = "重点关注原因", width = 15,dicCode = "attention_reason") | |
101 | + @ApiModelProperty(value = "重点关注原因") | |
102 | + @Dict(dicCode = "attention_reason") | |
103 | + private Integer reason; | |
104 | + /**特殊原因*/ | |
105 | + @Excel(name = "特殊原因", width = 15) | |
106 | + @ApiModelProperty(value = "特殊原因") | |
107 | + private String specialReason; | |
108 | + /**备注*/ | |
109 | + @Excel(name = "备注", width = 25,needMerge=true) | |
110 | + @ApiModelProperty(value = "备注") | |
111 | + private String remark; | |
105 | 112 | @ExcelCollection(name="家庭成员表") |
106 | 113 | @ApiModelProperty(value = "家庭成员表") |
107 | 114 | private List<Family> familyList; | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml
... | ... | @@ -131,11 +131,11 @@ spring: |
131 | 131 | connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 |
132 | 132 | datasource: |
133 | 133 | master: |
134 | - url: jdbc:mysql://192.168.1.201:3306/mx-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai | |
134 | + url: jdbc:mysql://192.168.1.201:3306/juvenile-prosecution?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai | |
135 | 135 | username: root |
136 | 136 | password: mx123456 |
137 | 137 | driver-class-name: com.mysql.cj.jdbc.Driver |
138 | - # 多数据源配置 | |
138 | + # 多数据源配置juvenile-prosecution | |
139 | 139 | #multi-datasource1: |
140 | 140 | #url: jdbc:mysql://localhost:3306/jeecg-boot2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai |
141 | 141 | #username: root |
... | ... | @@ -167,7 +167,7 @@ mybatis-plus: |
167 | 167 | table-underline: true |
168 | 168 | configuration: |
169 | 169 | # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用 |
170 | - #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl | |
170 | +# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl | |
171 | 171 | # 返回类型为Map,显示null对应的字段 |
172 | 172 | call-setters-on-nulls: true |
173 | 173 | #jeecg专用配置 | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/application-dev.yml
... | ... | @@ -131,11 +131,11 @@ spring: |
131 | 131 | connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 |
132 | 132 | datasource: |
133 | 133 | master: |
134 | - url: jdbc:mysql://192.168.1.201:3306/mx-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai | |
134 | + url: jdbc:mysql://192.168.1.201:3306/juvenile-prosecution?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai | |
135 | 135 | username: root |
136 | 136 | password: mx123456 |
137 | 137 | driver-class-name: com.mysql.cj.jdbc.Driver |
138 | - # 多数据源配置 | |
138 | + # 多数据源配置juvenile-prosecution | |
139 | 139 | #multi-datasource1: |
140 | 140 | #url: jdbc:mysql://localhost:3306/jeecg-boot2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai |
141 | 141 | #username: root |
... | ... | @@ -167,7 +167,7 @@ mybatis-plus: |
167 | 167 | table-underline: true |
168 | 168 | configuration: |
169 | 169 | # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用 |
170 | - #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl | |
170 | +# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl | |
171 | 171 | # 返回类型为Map,显示null对应的字段 |
172 | 172 | call-setters-on-nulls: true |
173 | 173 | #jeecg专用配置 | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/org/jeecg/modules/system/mapper/SysDepartMapper.class
No preview for this file type
juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/org/jeecg/modules/system/mapper/xml/SysDepartMapper.xml
... | ... | @@ -51,4 +51,8 @@ |
51 | 51 | <select id="queryCompByOrgCode" resultType="org.jeecg.modules.system.entity.SysDepart"> |
52 | 52 | select * from sys_depart where del_flag = '0' and org_category='1' and org_code= #{orgCode,jdbcType=VARCHAR} |
53 | 53 | </select> |
54 | + | |
55 | + <select id="querySysDeparts" parameterType="String" resultType="org.jeecg.modules.system.entity.SysDepart"> | |
56 | + SELECT * FROM sys_depart WHERE parent_id !=''; | |
57 | + </select> | |
54 | 58 | </mapper> |
55 | 59 | \ No newline at end of file | ... | ... |
juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/org/jeecg/modules/system/service/ISysDepartService.class
No preview for this file type
juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.class
No preview for this file type
juvenile-prosecution-vue/src/utils/util.js
... | ... | @@ -568,6 +568,7 @@ export function removeArrayElement(array, prod, value) { |
568 | 568 | * @constructor |
569 | 569 | */ |
570 | 570 | export function GetAge(identityCard) { |
571 | + console.log(identityCard) | |
571 | 572 | var len = (identityCard + "").length; |
572 | 573 | if (len == 0) { |
573 | 574 | return 0; |
... | ... | @@ -589,6 +590,8 @@ export function GetAge(identityCard) { |
589 | 590 | var birthDate = new Date(strBirthday); |
590 | 591 | var nowDateTime = new Date(); |
591 | 592 | var age = nowDateTime.getFullYear() - birthDate.getFullYear(); |
593 | + console.log(nowDateTime.getFullYear()) | |
594 | + console.log(birthDate.getFullYear()) | |
592 | 595 | //再考虑月、天的因素;.getMonth()获取的是从0开始的,这里进行比较,不需要加1 |
593 | 596 | if (nowDateTime.getMonth() < birthDate.getMonth() || (nowDateTime.getMonth() == birthDate.getMonth() && nowDateTime.getDate() < birthDate.getDate())) { |
594 | 597 | age--; | ... | ... |
juvenile-prosecution-vue/src/views/business/MinorList.vue
... | ... | @@ -17,16 +17,22 @@ |
17 | 17 | </a-row> |
18 | 18 | </a-form> |
19 | 19 | |
20 | - <a-button @click="handleAdd" type="primary" icon="plus" >新增</a-button> | |
21 | - <a-button type="primary" icon="download" @click="handleExportXls('未成年人')" style="margin-left:8px;">导出</a-button> | |
22 | - <a-upload style="margin-left:8px;" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> | |
20 | + <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button> | |
21 | + <a-button type="primary" icon="download" @click="handleExportXls('未检人员模板')" style="margin-left:8px;">模板导出</a-button> | |
22 | + <a-upload style="margin-left:8px;" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" | |
23 | + :action="importExcelUrl" @change="handleImportExcel"> | |
23 | 24 | <a-button type="primary" icon="import">导入</a-button> |
24 | 25 | </a-upload> |
25 | 26 | <a-dropdown v-if="selectedRowKeys.length > 0" style="margin-left:8px;"> |
26 | 27 | <a-menu slot="overlay"> |
27 | - <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item> | |
28 | + <a-menu-item key="1" @click="batchDel"> | |
29 | + <a-icon type="delete" /> | |
30 | + 删除 | |
31 | + </a-menu-item> | |
28 | 32 | </a-menu> |
29 | - <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button> | |
33 | + <a-button style="margin-left: 8px"> 批量操作 | |
34 | + <a-icon type="down" /> | |
35 | + </a-button> | |
30 | 36 | </a-dropdown> |
31 | 37 | </div> |
32 | 38 | <!-- 查询区域-END --> |
... | ... | @@ -34,7 +40,8 @@ |
34 | 40 | <!-- table区域-begin --> |
35 | 41 | <div> |
36 | 42 | <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;margin-top: 16px;"> |
37 | - <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项 | |
43 | + <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a | |
44 | + style="font-weight: 600">{{ selectedRowKeys.length }}</a>项 | |
38 | 45 | <a style="margin-left: 24px" @click="onClearSelected">清空</a> |
39 | 46 | </div> |
40 | 47 | |
... | ... | @@ -51,179 +58,295 @@ |
51 | 58 | :loading="loading" |
52 | 59 | :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" |
53 | 60 | @change="handleTableChange"> |
54 | - | |
55 | - <template slot="htmlSlot" slot-scope="text"> | |
56 | - <div v-html="text"></div> | |
57 | - </template> | |
58 | - <template slot="imgSlot" slot-scope="text"> | |
59 | - <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span> | |
60 | - <img v-else :src="getImgView(text)" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/> | |
61 | - </template> | |
62 | - <template slot="fileSlot" slot-scope="text"> | |
63 | - <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span> | |
64 | - <a-button | |
65 | - v-else | |
66 | - :ghost="true" | |
67 | - type="primary" | |
68 | - icon="download" | |
69 | - size="small" | |
70 | - @click="downloadFile(text)"> | |
71 | - 下载 | |
72 | - </a-button> | |
73 | - </template> | |
74 | - | |
61 | + <span slot="longText" slot-scope="text,record"> | |
62 | + <j-ellipsis :value="text" :length="18" /> | |
63 | + </span> | |
75 | 64 | <span slot="action" slot-scope="text, record"> |
76 | 65 | <a @click="handleEdit(record)">编辑</a> |
77 | - | |
78 | 66 | <a-divider type="vertical" /> |
79 | - <a-dropdown> | |
80 | - <a class="ant-dropdown-link">更多 <a-icon type="down" /></a> | |
81 | - <a-menu slot="overlay"> | |
82 | - <a-menu-item> | |
83 | - <a @click="handleDetail(record)">详情</a> | |
84 | - </a-menu-item> | |
85 | - <a-menu-item> | |
86 | - <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)"> | |
87 | - <a>删除</a> | |
88 | - </a-popconfirm> | |
89 | - </a-menu-item> | |
90 | - </a-menu> | |
91 | - </a-dropdown> | |
67 | + <a @click="handleDetail(record)">查看</a> | |
92 | 68 | </span> |
93 | - | |
94 | 69 | </a-table> |
95 | 70 | </div> |
96 | 71 | |
97 | - <minor-modal ref="modalForm" @ok="modalFormOk"/> | |
72 | + <minor-modal ref="modalForm" @ok="modalFormOk" /> | |
73 | + <!-- 详情 --> | |
74 | + <a-modal v-model:visible="infoVisible" title="未成年信息" :footer=null :width="1000"> | |
75 | + <a-descriptions bordered layout="vertical" :column="4"> | |
76 | + <a-descriptions-item label="户号">{{ info.householdNum }}</a-descriptions-item> | |
77 | + <a-descriptions-item label="人员编号">{{ info.number }}</a-descriptions-item> | |
78 | + <a-descriptions-item label="姓名">{{ info.name }}</a-descriptions-item> | |
79 | + <a-descriptions-item label="性别">{{ info.gender_dictText }}</a-descriptions-item> | |
80 | + <a-descriptions-item label="年龄">{{ getAgeByIdentity(info.identity) }}</a-descriptions-item> | |
81 | + <a-descriptions-item label="身份证号">{{ info.identity }}</a-descriptions-item> | |
82 | + <a-descriptions-item label="家庭住址" :span="2">{{ info.address }}</a-descriptions-item> | |
83 | + <a-descriptions-item label="是否失学">{{ info.school_dictText }}</a-descriptions-item> | |
84 | + <a-descriptions-item label="学校名称">{{ info.schoolName }}</a-descriptions-item> | |
85 | + <a-descriptions-item label="监护人">{{ info.guardian }}</a-descriptions-item> | |
86 | + <a-descriptions-item label="监护人关系">{{ info.relation }}</a-descriptions-item> | |
87 | + <a-descriptions-item label="重点关注原因" :span="4">{{ info.reason_dictText }}</a-descriptions-item> | |
88 | + <a-descriptions-item label="备注" :span="4">{{ info.remark }}</a-descriptions-item> | |
89 | + </a-descriptions> | |
90 | + <a-tabs v-model:activeKey="activeKey"> | |
91 | + <a-tab-pane key="1" tab="家庭成员"> | |
92 | + <a-table bordered :columns="familyColumns" :data-source="familyDatas" :scroll="{ x: true }" rowKey="id" :pagination="familyPagination"> | |
93 | + <span slot="longText" slot-scope="text,record"> | |
94 | + <j-ellipsis :value="text" :length="18" /> | |
95 | + </span> | |
96 | + </a-table> | |
97 | + </a-tab-pane> | |
98 | + </a-tabs> | |
99 | + </a-modal> | |
98 | 100 | </a-card> |
99 | 101 | </template> |
100 | 102 | |
101 | 103 | <script> |
102 | 104 | |
103 | - import { JeecgListMixin } from '@/mixins/JeecgListMixin' | |
104 | - import { GetAge } from '@/utils/util' | |
105 | - import MinorModal from './modules/MinorModal' | |
106 | - import '@/assets/less/TableExpand.less' | |
105 | +import { JeecgListMixin } from '@/mixins/JeecgListMixin' | |
106 | +import { GetAge } from '@/utils/util' | |
107 | +import MinorModal from './modules/MinorModal' | |
108 | +import '@/assets/less/TableExpand.less' | |
109 | +import { getAction } from '@api/manage' | |
110 | +import { FormTypes } from '@/utils/JEditableTableUtil' | |
111 | +//引入JS方法 | |
112 | +import { filterDictTextByCache } from '@/components/dict/JDictSelectUtil' | |
107 | 113 | |
108 | - export default { | |
109 | - name: "MinorList", | |
110 | - mixins:[JeecgListMixin], | |
111 | - components: { | |
112 | - MinorModal | |
113 | - }, | |
114 | - data () { | |
115 | - return { | |
116 | - description: '未成年人管理页面', | |
117 | - // 表头 | |
118 | - columns: [ | |
119 | - { | |
120 | - title: '序号', | |
121 | - dataIndex: '', | |
122 | - key:'rowIndex', | |
123 | - width:60, | |
124 | - align:"center", | |
125 | - customRender:function (t,r,index) { | |
126 | - return parseInt(index)+1; | |
127 | - } | |
128 | - }, | |
129 | - { | |
130 | - title:'姓名', | |
131 | - align:"center", | |
132 | - dataIndex: 'name' | |
133 | - }, | |
134 | - { | |
135 | - title:'年龄', | |
136 | - align:"center", | |
137 | - dataIndex: 'age', | |
138 | - customRender:function (text, record) { | |
139 | - return !text? GetAge:0 | |
140 | - } | |
141 | - }, | |
142 | - { | |
143 | - title:'性别', | |
144 | - align:"center", | |
145 | - dataIndex: 'gender_dictText' | |
146 | - }, | |
147 | - { | |
148 | - title:'是否失学', | |
149 | - align:"center", | |
150 | - dataIndex: 'school_dictText' | |
151 | - }, | |
152 | - { | |
153 | - title:'家庭住址', | |
154 | - align:"center", | |
155 | - dataIndex: 'address' | |
156 | - }, | |
157 | - { | |
158 | - title:'身份证号', | |
159 | - align:"center", | |
160 | - dataIndex: 'identity' | |
161 | - }, | |
162 | - { | |
163 | - title:'监护人关系', | |
164 | - align:"center", | |
165 | - dataIndex: 'relation' | |
166 | - }, | |
167 | - { | |
168 | - title:'监护人', | |
169 | - align:"center", | |
170 | - dataIndex: 'guardian' | |
171 | - }, | |
172 | - { | |
173 | - title:'重点关注原因', | |
174 | - align:"center", | |
175 | - dataIndex: 'reason' | |
176 | - }, | |
177 | - { | |
178 | - title:'备注', | |
179 | - align:"center", | |
180 | - dataIndex: 'remark' | |
181 | - }, | |
182 | - { | |
183 | - title: '操作', | |
184 | - dataIndex: 'action', | |
185 | - align:"center", | |
186 | - fixed:"right", | |
187 | - width:147, | |
188 | - scopedSlots: { customRender: 'action' }, | |
114 | +export default { | |
115 | + name: 'MinorList', | |
116 | + mixins: [JeecgListMixin], | |
117 | + components: { | |
118 | + MinorModal | |
119 | + }, | |
120 | + data() { | |
121 | + return { | |
122 | + activeKey: '1', | |
123 | + infoVisible: false, | |
124 | + info: {}, | |
125 | + description: '未成年人管理页面', | |
126 | + // 表头 | |
127 | + columns: [ | |
128 | + { | |
129 | + title: '序号', | |
130 | + dataIndex: '', | |
131 | + key: 'rowIndex', | |
132 | + width: 60, | |
133 | + align: 'center', | |
134 | + customRender: function(t, r, index) { | |
135 | + return parseInt(index) + 1 | |
189 | 136 | } |
190 | - ], | |
191 | - url: { | |
192 | - list: "/sys/minor/list", | |
193 | - delete: "/sys/minor/delete", | |
194 | - deleteBatch: "/sys/minor/deleteBatch", | |
195 | - exportXlsUrl: "/sys/minor/exportXls", | |
196 | - importExcelUrl: "sys/minor/importExcel", | |
197 | - | |
198 | 137 | }, |
199 | - dictOptions:{}, | |
200 | - superFieldList:[], | |
138 | + { | |
139 | + title: '姓名', | |
140 | + align: 'center', | |
141 | + dataIndex: 'name' | |
142 | + }, | |
143 | + { | |
144 | + title: '年龄', | |
145 | + align: 'center', | |
146 | + dataIndex: 'age', | |
147 | + customRender: function(text, record) { | |
148 | + return GetAge(record.identity) | |
149 | + } | |
150 | + }, | |
151 | + { | |
152 | + title: '性别', | |
153 | + align: 'center', | |
154 | + dataIndex: 'gender_dictText' | |
155 | + }, | |
156 | + { | |
157 | + title: '学校名称', | |
158 | + align: 'center', | |
159 | + dataIndex: 'schoolName' | |
160 | + }, | |
161 | + { | |
162 | + title: '入学年份', | |
163 | + align: 'center', | |
164 | + dataIndex: 'startYear' | |
165 | + }, | |
166 | + { | |
167 | + title: '是否失学', | |
168 | + align: 'center', | |
169 | + dataIndex: 'school_dictText' | |
170 | + }, | |
171 | + { | |
172 | + title: '家庭住址', | |
173 | + align: 'center', | |
174 | + dataIndex: 'address', | |
175 | + scopedSlots: { customRender: 'longText' } | |
176 | + }, | |
177 | + { | |
178 | + title: '身份证号', | |
179 | + align: 'center', | |
180 | + dataIndex: 'identity' | |
181 | + }, | |
182 | + { | |
183 | + title: '监护人关系', | |
184 | + align: 'center', | |
185 | + dataIndex: 'relation' | |
186 | + }, | |
187 | + { | |
188 | + title: '监护人', | |
189 | + align: 'center', | |
190 | + dataIndex: 'guardian' | |
191 | + }, | |
192 | + { | |
193 | + title: '重点关注原因', | |
194 | + align: 'center', | |
195 | + dataIndex: 'reason_dictText' | |
196 | + }, | |
197 | + { | |
198 | + title: '特殊原因', | |
199 | + align: 'center', | |
200 | + dataIndex: 'specialReason', | |
201 | + scopedSlots: { customRender: 'longText' } | |
202 | + }, | |
203 | + { | |
204 | + title: '备注', | |
205 | + align: 'center', | |
206 | + dataIndex: 'remark', | |
207 | + scopedSlots: { customRender: 'longText' } | |
208 | + }, | |
209 | + { | |
210 | + title: '操作', | |
211 | + dataIndex: 'action', | |
212 | + align: 'center', | |
213 | + fixed: 'right', | |
214 | + width: 147, | |
215 | + scopedSlots: { customRender: 'action' } | |
216 | + } | |
217 | + ], | |
218 | + url: { | |
219 | + list: '/sys/minor/list', | |
220 | + delete: '/sys/minor/delete', | |
221 | + deleteBatch: '/sys/minor/deleteBatch', | |
222 | + exportXlsUrl: '/sys/minor/exportXls', | |
223 | + importExcelUrl: 'sys/minor/importExcel', | |
224 | + familys: '/sys/minor/queryFamilyByMainId' | |
225 | + }, | |
226 | + dictOptions: {}, | |
227 | + superFieldList: [], | |
228 | + familyDatas: [], | |
229 | + // 表头 | |
230 | + familyColumns: [ | |
231 | + { | |
232 | + title: '户号', | |
233 | + align: 'center', | |
234 | + dataIndex: 'householdNum' | |
235 | + }, | |
236 | + { | |
237 | + title: '人员编号', | |
238 | + align: 'center', | |
239 | + dataIndex: 'number' | |
240 | + }, | |
241 | + { | |
242 | + title: '姓名', | |
243 | + align: 'center', | |
244 | + dataIndex: 'name' | |
245 | + }, | |
246 | + { | |
247 | + title: '身份证号', | |
248 | + align: 'center', | |
249 | + dataIndex: 'identity' | |
250 | + }, | |
251 | + { | |
252 | + title: '与户主的关系', | |
253 | + align: 'center', | |
254 | + dataIndex: 'relation' | |
255 | + }, | |
256 | + { | |
257 | + title: '行政区划', | |
258 | + align: 'center', | |
259 | + dataIndex: 'division', | |
260 | + scopedSlots: { customRender: 'longText' } | |
261 | + }, | |
262 | + { | |
263 | + title: '现住址', | |
264 | + align: 'center', | |
265 | + dataIndex: 'address', | |
266 | + scopedSlots: { customRender: 'longText' } | |
267 | + }, | |
268 | + { | |
269 | + title: '是否犯罪', | |
270 | + align: 'center', | |
271 | + dataIndex: 'crime', | |
272 | + customRender: (text) => { | |
273 | + //字典值翻译通用方法 | |
274 | + return filterDictTextByCache('is_crime', text) | |
275 | + } | |
276 | + }, | |
277 | + { | |
278 | + title: '犯罪原因', | |
279 | + align: 'center', | |
280 | + dataIndex: 'reason', | |
281 | + scopedSlots: { customRender: 'longText' } | |
282 | + }, | |
283 | + { | |
284 | + title: '其他参考信息', | |
285 | + align: 'center', | |
286 | + dataIndex: 'other', | |
287 | + scopedSlots: { customRender: 'longText' } | |
288 | + } | |
289 | + ], | |
290 | + /* 分页参数 */ | |
291 | + familyPagination: { | |
292 | + current: 1, | |
293 | + pageSize: 3, | |
294 | + hideOnSinglePage: true, | |
295 | + showTotal: (total, range) => { | |
296 | + return range[0] + '-' + range[1] + ' 共' + total + '条' | |
297 | + }, | |
298 | + showQuickJumper: true, | |
299 | + showSizeChanger: true, | |
300 | + total: 0 | |
201 | 301 | } |
302 | + } | |
303 | + }, | |
304 | + created() { | |
305 | + this.getSuperFieldList() | |
306 | + }, | |
307 | + computed: { | |
308 | + importExcelUrl: function() { | |
309 | + return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` | |
310 | + } | |
311 | + }, | |
312 | + methods: { | |
313 | + getAgeByIdentity(identity) { | |
314 | + return GetAge(identity) | |
202 | 315 | }, |
203 | - created() { | |
204 | - this.getSuperFieldList(); | |
316 | + handleDetail(record) { | |
317 | + var that = this | |
318 | + let params = { id: record.id } | |
319 | + getAction(this.url.familys, params).then(res => { | |
320 | + that.info = record | |
321 | + that.infoVisible = true | |
322 | + that.familyDatas = res.result || [] | |
323 | + }).finally(() => { | |
324 | + that.infoVisible = true | |
325 | + }) | |
326 | + | |
205 | 327 | }, |
206 | - computed: { | |
207 | - importExcelUrl: function(){ | |
208 | - return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; | |
209 | - } | |
328 | + initDictConfig() { | |
210 | 329 | }, |
211 | - methods: { | |
212 | - initDictConfig(){ | |
213 | - }, | |
214 | - getSuperFieldList(){ | |
215 | - let fieldList=[]; | |
216 | - fieldList.push({type:'string',value:'name',text:'姓名',dictCode:''}) | |
217 | - fieldList.push({type:'int',value:'gender',text:'性别',dictCode:''}) | |
218 | - fieldList.push({type:'string',value:'address',text:'家庭住址',dictCode:''}) | |
219 | - fieldList.push({type:'string',value:'identity',text:'身份证号',dictCode:''}) | |
220 | - fieldList.push({type:'Text',value:'reason',text:'重点关注原因',dictCode:''}) | |
221 | - fieldList.push({type:'Text',value:'remark',text:'备注',dictCode:''}) | |
222 | - this.superFieldList = fieldList | |
223 | - } | |
330 | + getSuperFieldList() { | |
331 | + let fieldList = [] | |
332 | + fieldList.push({ type: 'string', value: 'name', text: '姓名', dictCode: '' }) | |
333 | + fieldList.push({ type: 'int', value: 'gender', text: '性别', dictCode: '' }) | |
334 | + fieldList.push({ type: 'string', value: 'address', text: '家庭住址', dictCode: '' }) | |
335 | + fieldList.push({ type: 'string', value: 'identity', text: '身份证号', dictCode: '' }) | |
336 | + fieldList.push({ type: 'Text', value: 'reason', text: '重点关注原因', dictCode: '' }) | |
337 | + fieldList.push({ type: 'Text', value: 'remark', text: '备注', dictCode: '' }) | |
338 | + this.superFieldList = fieldList | |
224 | 339 | } |
225 | 340 | } |
341 | +} | |
226 | 342 | </script> |
227 | 343 | <style scoped> |
228 | - @import '~@assets/less/common.less'; | |
344 | +@import '~@assets/less/common.less'; | |
345 | +.ant-modal-body { | |
346 | + overflow-y: auto !important; | |
347 | + height: 750px !important; | |
348 | +} | |
349 | +</style> | |
350 | +<style> | |
351 | + | |
229 | 352 | </style> |
230 | 353 | \ No newline at end of file | ... | ... |
juvenile-prosecution-vue/src/views/business/SourceList.vue
1 | 1 | <template> |
2 | 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="() => $router.go(-1)" | |
9 | - ></a-page-header> | |
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>--> | |
10 | 10 | |
11 | 11 | <!-- table区域-begin --> |
12 | 12 | <div> |
... | ... | @@ -38,11 +38,12 @@ |
38 | 38 | |
39 | 39 | import '@/assets/less/TableExpand.less' |
40 | 40 | import { mixinDevice } from '@/utils/mixin' |
41 | - import { JeecgListMixin } from '@/mixins/JeecgListMixin' | |
41 | + import { getAction } from '@api/manage' | |
42 | + import { filterObj } from '@/utils/util' | |
42 | 43 | |
43 | 44 | export default { |
44 | 45 | name: 'SourceStatistics', |
45 | - mixins:[JeecgListMixin, mixinDevice], | |
46 | + mixins:[ mixinDevice], | |
46 | 47 | components: { |
47 | 48 | |
48 | 49 | }, |
... | ... | @@ -52,37 +53,24 @@ |
52 | 53 | // 表头 |
53 | 54 | columns: [ |
54 | 55 | { |
55 | - title: '序号', | |
56 | - dataIndex: '', | |
57 | - key:'rowIndex', | |
58 | - width:60, | |
56 | + title:'数据批次', | |
59 | 57 | align:"center", |
60 | - customRender:function (t,r,index) { | |
61 | - return parseInt(index)+1; | |
62 | - } | |
58 | + dataIndex: 'batch' | |
63 | 59 | }, |
64 | 60 | { |
65 | 61 | title:'单位名称', |
66 | 62 | align:"center", |
67 | - dataIndex: 'name' | |
63 | + dataIndex: 'name_dictText' | |
68 | 64 | }, |
69 | 65 | { |
70 | - title:'数据批次', | |
66 | + title:'更新时间', | |
71 | 67 | align:"center", |
72 | - dataIndex: 'batch' | |
68 | + dataIndex: 'createTime' | |
73 | 69 | }, |
74 | 70 | { |
75 | - title:'总条数', | |
71 | + title:'数据条数', | |
76 | 72 | align:"center", |
77 | 73 | dataIndex: 'total' |
78 | - }, | |
79 | - { | |
80 | - title: '操作', | |
81 | - dataIndex: 'action', | |
82 | - align:"center", | |
83 | - fixed:"right", | |
84 | - width:147, | |
85 | - scopedSlots: { customRender: 'action' } | |
86 | 74 | } |
87 | 75 | ], |
88 | 76 | url: { |
... | ... | @@ -95,10 +83,45 @@ |
95 | 83 | }, |
96 | 84 | dictOptions:{}, |
97 | 85 | superFieldList:[], |
86 | + /* 排序参数 */ | |
87 | + isorter:{ | |
88 | + column: 'createTime', | |
89 | + order: 'desc', | |
90 | + }, | |
91 | + /* 筛选参数 */ | |
92 | + filters: {}, | |
93 | + /* 查询条件-请不要在queryParam中声明非字符串值的属性 */ | |
94 | + queryParam: {}, | |
95 | + /* 分页参数 */ | |
96 | + ipagination:{ | |
97 | + current: 1, | |
98 | + pageSize: 10, | |
99 | + pageSizeOptions: ['10', '20', '30'], | |
100 | + showTotal: (total, range) => { | |
101 | + return range[0] + "-" + range[1] + " 共" + total + "条" | |
102 | + }, | |
103 | + showQuickJumper: true, | |
104 | + showSizeChanger: true, | |
105 | + total: 0 | |
106 | + }, | |
107 | + /* 数据源 */ | |
108 | + dataSource:[], | |
109 | + /* table加载状态 */ | |
110 | + loading:false, | |
111 | + /* table选中keys*/ | |
112 | + selectedRowKeys: [], | |
113 | + /* table选中records*/ | |
114 | + selectionRows: [], | |
115 | + /* 查询折叠 */ | |
116 | + toggleSearchStatus:false, | |
98 | 117 | } |
99 | 118 | }, |
100 | 119 | created() { |
101 | - this.getSuperFieldList(); | |
120 | + this.getSuperFieldList(); | |
121 | + this.queryParam={ | |
122 | + name:this.$route.query.unitName | |
123 | + } | |
124 | + this.loadData(1) | |
102 | 125 | }, |
103 | 126 | computed: { |
104 | 127 | importExcelUrl: function(){ |
... | ... | @@ -106,6 +129,68 @@ |
106 | 129 | }, |
107 | 130 | }, |
108 | 131 | methods: { |
132 | + goBack(){ | |
133 | + this.$router.go(-1); | |
134 | + | |
135 | + // this.$router.re({name:'business-SourceList',query: {unitName:record.name}}) | |
136 | + }, | |
137 | + loadData(arg) { | |
138 | + if(!this.url.list){ | |
139 | + this.$message.error("请设置url.list属性!") | |
140 | + return | |
141 | + } | |
142 | + //加载数据 若传入参数1则加载第一页的内容 | |
143 | + if (arg === 1) { | |
144 | + this.ipagination.current = 1; | |
145 | + } | |
146 | + var params = this.getQueryParams();//查询条件 | |
147 | + this.loading = true; | |
148 | + getAction(this.url.list, params).then((res) => { | |
149 | + if (res.success) { | |
150 | + //update-begin---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------ | |
151 | + this.dataSource = res.result.records||res.result; | |
152 | + if(res.result.total) | |
153 | + { | |
154 | + this.ipagination.total = res.result.total; | |
155 | + }else{ | |
156 | + this.ipagination.total = 0; | |
157 | + } | |
158 | + //update-end---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------ | |
159 | + } | |
160 | + if(res.code===510){ | |
161 | + this.$message.warning(res.message) | |
162 | + } | |
163 | + this.loading = false; | |
164 | + }) | |
165 | + }, | |
166 | + getQueryParams() { | |
167 | + //获取查询条件 | |
168 | + let sqp = {} | |
169 | + var param = Object.assign(sqp, this.queryParam, this.isorter ,this.filters); | |
170 | + param.field = this.getQueryField(); | |
171 | + param.pageNo = this.ipagination.current; | |
172 | + param.pageSize = this.ipagination.pageSize; | |
173 | + return filterObj(param); | |
174 | + }, | |
175 | + getQueryField() { | |
176 | + //TODO 字段权限控制 | |
177 | + var str = "id,"; | |
178 | + this.columns.forEach(function (value) { | |
179 | + str += "," + value.dataIndex; | |
180 | + }); | |
181 | + return str; | |
182 | + }, | |
183 | + handleTableChange(pagination, filters, sorter) { | |
184 | + //分页、排序、筛选变化时触发 | |
185 | + //TODO 筛选 | |
186 | + console.log(pagination) | |
187 | + if (Object.keys(sorter).length > 0) { | |
188 | + this.isorter.column = sorter.field; | |
189 | + this.isorter.order = "ascend" == sorter.order ? "asc" : "desc" | |
190 | + } | |
191 | + this.ipagination = pagination; | |
192 | + this.loadData(); | |
193 | + }, | |
109 | 194 | initDictConfig(){ |
110 | 195 | }, |
111 | 196 | getSuperFieldList(){ | ... | ... |
juvenile-prosecution-vue/src/views/business/SourceStatistics.vue
... | ... | @@ -6,7 +6,7 @@ |
6 | 6 | <a-row :gutter="24"> |
7 | 7 | <a-col :md="6" :sm="12"> |
8 | 8 | <a-form-item label="单位名称"> |
9 | - <a-input placeholder="输入单位名称查询" v-model="queryParam.name"></a-input> | |
9 | + <j-dict-select-tag v-model="queryParam.name" placeholder="请选择" dictCode="source_unit"/> | |
10 | 10 | </a-form-item> |
11 | 11 | </a-col> |
12 | 12 | <a-col :md="6" :sm="8"> |
... | ... | @@ -74,7 +74,7 @@ |
74 | 74 | { |
75 | 75 | title:'单位名称', |
76 | 76 | align:"center", |
77 | - dataIndex: 'name' | |
77 | + dataIndex: 'name_dictText' | |
78 | 78 | }, |
79 | 79 | { |
80 | 80 | title:'数据批次', |
... | ... | @@ -111,8 +111,11 @@ |
111 | 111 | }, |
112 | 112 | }, |
113 | 113 | methods: { |
114 | - handleDetail(){ | |
115 | - this.$router.push({ path: '/business/SourceList' }) | |
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) | |
116 | 119 | }, |
117 | 120 | initDictConfig(){ |
118 | 121 | }, | ... | ... |
juvenile-prosecution-vue/src/views/business/modules/MinorModal.vue
... | ... | @@ -27,13 +27,13 @@ |
27 | 27 | </a-row> |
28 | 28 | <a-row> |
29 | 29 | <a-col :span="12"> |
30 | - <a-form-model-item label="身份证号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="identity"> | |
31 | - <a-input v-model="model.identity" placeholder="请输入身份证号"></a-input> | |
30 | + <a-form-model-item label="学校名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="schoolName"> | |
31 | + <a-input v-model="model.schoolName" placeholder="请输入学校名称"></a-input> | |
32 | 32 | </a-form-model-item> |
33 | 33 | </a-col> |
34 | 34 | <a-col :span="12"> |
35 | - <a-form-model-item label="年龄" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="age"> | |
36 | - <a-input v-model="model.age" disabled></a-input> | |
35 | + <a-form-model-item label="入学年份" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="startYear"> | |
36 | + <a-input v-model="model.startYear" placeholder="请输入入学年份"></a-input> | |
37 | 37 | </a-form-model-item> |
38 | 38 | </a-col> |
39 | 39 | </a-row> |
... | ... | @@ -44,6 +44,11 @@ |
44 | 44 | </a-form-model-item> |
45 | 45 | </a-col> |
46 | 46 | <a-col :span="12"> |
47 | + <a-form-model-item label="身份证号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="identity"> | |
48 | + <a-input v-model="model.identity" placeholder="请输入身份证号"></a-input> | |
49 | + </a-form-model-item> | |
50 | + </a-col> | |
51 | + <a-col :span="12"> | |
47 | 52 | <a-form-model-item label="家庭住址" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="address"> |
48 | 53 | <a-textarea v-model="model.address" placeholder="请输入家庭住址" :rows="1" ></a-textarea> |
49 | 54 | </a-form-model-item> |
... | ... | @@ -68,6 +73,11 @@ |
68 | 73 | </a-form-model-item> |
69 | 74 | </a-col> |
70 | 75 | <a-col :span="12"> |
76 | + <a-form-model-item label="特殊原因" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="specialReason"> | |
77 | + <a-textarea v-model="model.specialReason" placeholder="请输入特殊原因"></a-textarea> | |
78 | + </a-form-model-item> | |
79 | + </a-col> | |
80 | + <a-col :span="12"> | |
71 | 81 | <a-form-model-item label="备注" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark"> |
72 | 82 | <a-textarea v-model="model.remark" placeholder="请输入备注"></a-textarea> |
73 | 83 | </a-form-model-item> |
... | ... | @@ -100,6 +110,7 @@ import { getAction, httpAction } from '@/api/manage' |
100 | 110 | import { FormTypes, VALIDATE_NO_PASSED, getRefPromise, validateFormModelAndTables } from '@/utils/JEditableTableUtil' |
101 | 111 | import JEditableTable from '@/components/jeecg/JEditableTable' |
102 | 112 | import JDate from '@/components/jeecg/JDate' |
113 | +import { GetAge } from '@/utils/util' | |
103 | 114 | |
104 | 115 | export default { |
105 | 116 | name: 'MinorModal', |
... | ... | @@ -131,6 +142,8 @@ export default { |
131 | 142 | sm: { span: 20 } |
132 | 143 | }, |
133 | 144 | validatorRules: { |
145 | + householdNum:[ { required: true, message: '请输入户号' },], | |
146 | + number:[ { required: true, message: '请输入人员编号' },], | |
134 | 147 | name:[ { required: true, message: '请输入姓名' },], |
135 | 148 | gender:[ { required: true, message: '请选择性别' },], |
136 | 149 | identity:[ {required: true,validator:this.validateIdCard}], |
... | ... | @@ -151,7 +164,15 @@ export default { |
151 | 164 | key: 'householdNum', |
152 | 165 | width: '250px', |
153 | 166 | type: FormTypes.input, |
154 | - fixed: 'left', | |
167 | + defaultValue: '', | |
168 | + placeholder: '请输入${title}', | |
169 | + validateRules: [{ required: true, message: '${title}不能为空' }] | |
170 | + }, | |
171 | + { | |
172 | + title: '人员编号', | |
173 | + key: 'number', | |
174 | + width: '180px', | |
175 | + type: FormTypes.input, | |
155 | 176 | defaultValue: '', |
156 | 177 | placeholder: '请输入${title}', |
157 | 178 | validateRules: [{ required: true, message: '${title}不能为空' }] |
... | ... | @@ -160,7 +181,6 @@ export default { |
160 | 181 | title: '姓名', |
161 | 182 | key: 'name', |
162 | 183 | width: '180px', |
163 | - fixed: 'left', | |
164 | 184 | type: FormTypes.input, |
165 | 185 | defaultValue: '', |
166 | 186 | placeholder: '请输入${title}', |
... | ... | @@ -174,21 +194,38 @@ export default { |
174 | 194 | defaultValue: '', |
175 | 195 | placeholder: '请输入${title}', |
176 | 196 | validateRules: [{ |
177 | - pattern: '/(^[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$)|(^[1-9]\\d{7}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}$)/', | |
197 | + // pattern: '/(^[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$)|(^[1-9]\\d{7}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}$)/', | |
198 | + pattern:'^\\d{6}(18|19|20)?\\d{2}(0[1-9]|1[012])(0[1-9]|[12]\\d|3[01])\\d{3}(\\d|[xX])$', | |
178 | 199 | message: '${title}格式不正确' |
179 | 200 | }] |
180 | 201 | }, |
181 | 202 | { |
182 | - title: '婚姻状况', | |
183 | - key: 'marital', | |
184 | - width: '200px', | |
185 | - type: FormTypes.select, | |
186 | - options: [], | |
187 | - dictCode: 'marital_status', | |
188 | - placeholder: '请选择${title}', | |
203 | + title: '与户主的关系', | |
204 | + key: 'relation', | |
205 | + width: '180px', | |
206 | + type: FormTypes.input, | |
207 | + defaultValue: '', | |
208 | + placeholder: '请输入${title}', | |
209 | + validateRules: [{ required: true, message: '${title}不能为空' }] | |
210 | + }, | |
211 | + { | |
212 | + title: '行政区划', | |
213 | + key: 'division', | |
214 | + width: '180px', | |
215 | + type: FormTypes.input, | |
216 | + defaultValue: '', | |
217 | + placeholder: '请输入${title}', | |
189 | 218 | validateRules: [{ required: true, message: '${title}不能为空' }] |
190 | 219 | }, |
191 | 220 | { |
221 | + title: '现住址', | |
222 | + key: 'address', | |
223 | + width: '180px', | |
224 | + type: FormTypes.input_pop, | |
225 | + defaultValue: '', | |
226 | + placeholder: '请输入${title}', | |
227 | + }, | |
228 | + { | |
192 | 229 | title: '是否犯罪', |
193 | 230 | key: 'crime', |
194 | 231 | width: '200px', |
... | ... | @@ -205,7 +242,6 @@ export default { |
205 | 242 | type: FormTypes.input_pop, |
206 | 243 | defaultValue: '', |
207 | 244 | placeholder: '请输入${title}', |
208 | - validateRules: [{ required: true, message: '${title}不能为空' }] | |
209 | 245 | }, |
210 | 246 | { |
211 | 247 | title: '其他参考信息', |
... | ... | @@ -214,7 +250,6 @@ export default { |
214 | 250 | type: FormTypes.input_pop, |
215 | 251 | defaultValue: '', |
216 | 252 | placeholder: '请输入${title}', |
217 | - validateRules: [{ required: true, message: '${title}不能为空' }] | |
218 | 253 | } |
219 | 254 | ] |
220 | 255 | } |
... | ... | @@ -237,6 +272,9 @@ export default { |
237 | 272 | this.modelDefault = JSON.parse(JSON.stringify(this.model)) |
238 | 273 | }, |
239 | 274 | methods: { |
275 | + getAgeByIdentity(identity){ | |
276 | + return GetAge(identity); | |
277 | + }, | |
240 | 278 | validateIdCard(rule,value,callback){ |
241 | 279 | console.log(value) |
242 | 280 | if(undefined==value || null==value || ''==value){ |
... | ... | @@ -255,6 +293,7 @@ export default { |
255 | 293 | }, |
256 | 294 | |
257 | 295 | add() { |
296 | + this.dataSource=[]; | |
258 | 297 | // 默认新增一条数据 |
259 | 298 | this.getAllTable().then(editableTables => { |
260 | 299 | editableTables[0].add() |
... | ... | @@ -275,7 +314,9 @@ export default { |
275 | 314 | requestTableData(url, params) { |
276 | 315 | this.familyLoading = true |
277 | 316 | getAction(url, params).then(res => { |
317 | + console.log(this.dataSource) | |
278 | 318 | this.dataSource = res.result || [] |
319 | + console.log(this.dataSource) | |
279 | 320 | }).finally(() => { |
280 | 321 | this.familyLoading = false |
281 | 322 | }) | ... | ... |
juvenile-prosecution-vue/src/views/system/DepartList.vue
... | ... | @@ -94,8 +94,8 @@ |
94 | 94 | <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="abbreviation" label="常用名称"> |
95 | 95 | <a-textarea placeholder="请输入常用名称,多个','分割" v-model="model.abbreviation" /> |
96 | 96 | </a-form-model-item> |
97 | - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="常用编码"> | |
98 | - <a-textarea placeholder="请输入常用编码,多个','分割" v-model="model.common_code"/> | |
97 | + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="学校"> | |
98 | + <a-textarea placeholder="请输入学校,多个','分割" v-model="model.commonCode"/> | |
99 | 99 | </a-form-model-item> |
100 | 100 | <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="排序"> |
101 | 101 | <a-input-number v-model="model.departOrder" /> |
... | ... | @@ -152,7 +152,7 @@ |
152 | 152 | dataIndex: 'abbreviation' |
153 | 153 | }, |
154 | 154 | { |
155 | - title:'常用编码', | |
155 | + title:'学校', | |
156 | 156 | align:"left", |
157 | 157 | dataIndex: 'commonCode' |
158 | 158 | }, | ... | ... |
juvenile-prosecution-vue/src/views/system/UserList.vue
... | ... | @@ -193,6 +193,9 @@ |
193 | 193 | import UserRecycleBinModal from './modules/UserRecycleBinModal' |
194 | 194 | import JSuperQuery from '@/components/jeecg/JSuperQuery' |
195 | 195 | import JThirdAppButton from '@/components/jeecgbiz/thirdApp/JThirdAppButton' |
196 | + import Vue from 'vue' | |
197 | + import axios from 'axios' // 安装axios后引入 | |
198 | + Vue.prototype.$axios = axios | |
196 | 199 | |
197 | 200 | export default { |
198 | 201 | name: "UserList", |
... | ... | @@ -311,11 +314,15 @@ |
311 | 314 | }, |
312 | 315 | methods: { |
313 | 316 | doAnalyze(){ |
314 | - getAction('/sys/analyze/doAnalyzeData', {}).then(res => { | |
317 | + putAction('/sys/analyze/doAnalyzeData', {}).then((res) => { | |
315 | 318 | console.log(res) |
316 | - }).finally(() => { | |
317 | - | |
318 | 319 | }) |
320 | + // let self = this; | |
321 | + // let apiBaseUrl = window._CONFIG['domianURL'] || "/jeecg-boot"; | |
322 | + // self.$axios.put('/sys/analyze/doAnalyzeData').then(res => { | |
323 | + // console.log(res) | |
324 | + // | |
325 | + // }) | |
319 | 326 | }, |
320 | 327 | getAvatarView: function (avatar) { |
321 | 328 | return getFileAccessHttpUrl(avatar) | ... | ... |
juvenile-prosecution-vue/src/views/system/modules/DepartModal.vue
... | ... | @@ -34,8 +34,8 @@ |
34 | 34 | <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="abbreviation" label="常用名称"> |
35 | 35 | <a-textarea placeholder="请输入常用名称,多个','分割" v-model="model.abbreviation" /> |
36 | 36 | </a-form-model-item> |
37 | - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="常用编码"> | |
38 | - <a-textarea placeholder="请输入常用编码,多个','分割" v-model="model.common_code"/> | |
37 | + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="学校"> | |
38 | + <a-textarea placeholder="请输入学校,多个','分割" v-model="model.commonCode"/> | |
39 | 39 | </a-form-model-item> |
40 | 40 | <a-form-model-item |
41 | 41 | :labelCol="labelCol" | ... | ... |