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" | ... | ... |