From 62156ef23637502842190c755903c27de54c5faa Mon Sep 17 00:00:00 2001 From: wxy <1229384355@qq.com> Date: Fri, 22 Jul 2022 15:11:13 +0800 Subject: [PATCH] 数据分析 --- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/AnalyzeController.java | 1086 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/MinorController.java | 2 +- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/Family.java | 54 +++++++++++++++++++++++++----------------------------- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/Minor.java | 59 +++++++++++++++++++++++++++++++++++++++++++---------------- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/MzAdoption.java | 2 +- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SourceData.java | 11 ++++++++++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SpecialStudent.java | 6 +++--- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/FamilyMapper.java | 9 +++++++++ juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/GaDemographicMapper.java | 18 +++++++++++++++++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/GaHouseholdMapper.java | 10 ++++++++++ juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/HighSchoolMapper.java | 3 +++ juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MinorMapper.java | 5 +++++ juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MrSchoolMapper.java | 3 ++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MzAdoptionMapper.java | 6 +++++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MzLeftBehindChildrenMapper.java | 4 +++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MzOrphanMapper.java | 4 +++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MzUnsupportedMapper.java | 4 +++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/PrimarySchoolMapper.java | 3 +++ juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDepartMapper.java | 5 +++++ juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/FamilyMapper.xml | 18 ++++++++++++++++-- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/GaDemographicMapper.xml | 27 +++++++++++++++++++++++---- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/GaHouseholdMapper.xml | 13 +++++++++++++ juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/HighSchoolMapper.xml | 18 ++++++++++++------ juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MinorMapper.xml | 9 ++++++++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MrSchoolMapper.xml | 9 ++++++++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MzAdoptionMapper.xml | 4 +++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MzLeftBehindChildrenMapper.xml | 4 +++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MzOrphanMapper.xml | 4 +++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MzUnsupportedMapper.xml | 4 +++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/PrimarySchoolMapper.xml | 4 ++++ juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SourceMapper.xml | 3 +-- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartMapper.xml | 4 ++++ juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IFamilyService.java | 5 +++++ juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IGaDemographicService.java | 19 ++++++++++++++++++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IGaHouseholdService.java | 10 +++++++++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IGaPunishService.java | 3 ++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IHighSchoolService.java | 2 ++ juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMinorService.java | 5 ++++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMrSchoolService.java | 5 ++++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMzAdoptionService.java | 4 +++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMzLeftBehindChildrenService.java | 4 +++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMzOrphanService.java | 4 +++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMzUnsupportedService.java | 4 +++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IPrimarySchoolService.java | 2 ++ juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartService.java | 6 ++++++ juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/FamilyServiceImpl.java | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/GaDemographicServiceImpl.java | 45 ++++++++++++++++++++++++++++++++++++++++++++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/GaHouseholdServiceImpl.java | 31 ++++++++++++++++++++++++++++++- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/GaPunishServiceImpl.java | 16 ++++++++++++++-- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/HighSchoolServiceImpl.java | 8 ++++++++ juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MinorServiceImpl.java | 121 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MrSchoolServiceImpl.java | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MzAdoptionServiceImpl.java | 10 ++++++++++ juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MzLeftBehindChildrenServiceImpl.java | 11 +++++++++++ juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MzOrphanServiceImpl.java | 11 +++++++++++ juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MzUnsupportedServiceImpl.java | 11 +++++++++++ juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/PrimarySchoolServiceImpl.java | 10 ++++++++-- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java | 9 +++++++++ juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/IDNumberUtil.java | 144 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------ juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/TaskThreadQuery.java | 33 +++++++++++++++++++++++++++++++++ juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/MinorPage.java | 77 ++++++++++++++++++++++++++++++++++++++++++----------------------------------- juvenile-prosecution-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml | 6 +++--- juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/application-dev.yml | 6 +++--- juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/org/jeecg/modules/system/mapper/SysDepartMapper.class | Bin 2067 -> 0 bytes juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/org/jeecg/modules/system/mapper/xml/SysDepartMapper.xml | 4 ++++ juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/org/jeecg/modules/system/service/ISysDepartService.class | Bin 2292 -> 0 bytes juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.class | Bin 24044 -> 0 bytes juvenile-prosecution-vue/src/utils/util.js | 3 +++ juvenile-prosecution-vue/src/views/business/MinorList.vue | 439 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------------------------------------------------------------------------------------------------- juvenile-prosecution-vue/src/views/business/SourceList.vue | 143 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------- juvenile-prosecution-vue/src/views/business/SourceStatistics.vue | 11 +++++++---- juvenile-prosecution-vue/src/views/business/modules/MinorModal.vue | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------- juvenile-prosecution-vue/src/views/system/DepartList.vue | 6 +++--- juvenile-prosecution-vue/src/views/system/UserList.vue | 13 ++++++++++--- juvenile-prosecution-vue/src/views/system/modules/DepartModal.vue | 4 ++-- 75 files changed, 2198 insertions(+), 710 deletions(-) create mode 100644 juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/TaskThreadQuery.java diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/AnalyzeController.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/AnalyzeController.java index 215f314..98bbb8d 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/AnalyzeController.java +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/AnalyzeController.java @@ -1,343 +1,807 @@ package org.jeecg.modules.system.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.google.common.collect.Sets; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.apache.logging.log4j.util.Strings; +import org.apache.shiro.SecurityUtils; +import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.system.vo.DictModel; +import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.oConvertUtils; -import org.jeecg.modules.system.entity.Family; -import org.jeecg.modules.system.entity.GaDemographic; -import org.jeecg.modules.system.entity.Minor; -import org.jeecg.modules.system.entity.SysDepart; +import org.jeecg.modules.system.entity.*; import org.jeecg.modules.system.service.*; +import org.jeecg.modules.system.util.DoTaskThread; import org.jeecg.modules.system.util.IDNumberUtil; import org.jeecg.modules.system.util.MultiThreadUtil; +import org.jeecg.modules.system.util.TaskThreadQuery; import org.jeecg.modules.system.vo.FamilyVo; import org.jeecg.modules.system.vo.GaPunishVo; import org.jeecg.modules.system.vo.SpecialStudentVo; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; + /** -* @Description: 数据分析 -* @Author: jeecg-boot -* @Date: 2022-07-13 -* @Version: V1.0 -*/ -@Api(tags="数据分析") + * @Description: 数据分析 + * @Author: jeecg-boot + * @Date: 2022-07-13 + * @Version: V1.0 + */ +@Api(tags = "数据分析") @RestController @RequestMapping("/sys/analyze") @Slf4j public class AnalyzeController extends JeecgController { - @Resource - private IGaDemographicService gaDemographicService; - @Resource - private IGaHouseholdService gaHouseholdService; - @Resource - private ISysDepartService sysDepartService; - @Resource - private IGaPunishService gaPunishService; - @Resource - private IGaJuvenilesStayService gaJuvenilesStayService; - @Resource - private IMzAdoptionService mzAdoptionService; - @Resource - private IMzLeftBehindChildrenService mzLeftBehindChildrenService; - @Resource - private IMzOrphanService mzOrphanService; - @Resource - private IMzUnsupportedService mzUnsupportedService; - @Resource - private ISpecialStudentService specialStudentService; - @Resource - private IFamilyService familyService; - @Resource - private IMinorService minorService; - @Resource - private IMrSchoolService schoolService; - - private Integer queryNum=0; - private Integer pageSize=200000; - private List gaPunishVos=new ArrayList<>(); - private List rasultFamily=new ArrayList<>();//分析后家庭的数据 - private List rasultMinor=new ArrayList<>();//分析后未成年人的信息 - private List specialStudentVos=new ArrayList<>(); + @Resource + private IGaDemographicService gaDemographicService; + @Resource + private IGaHouseholdService gaHouseholdService; + @Resource + private ISysDepartService sysDepartService; + @Resource + private IGaPunishService gaPunishService; + @Resource + private IGaJuvenilesStayService gaJuvenilesStayService; + @Resource + private IMzAdoptionService mzAdoptionService; + @Resource + private IMzLeftBehindChildrenService mzLeftBehindChildrenService; + @Resource + private IMzOrphanService mzOrphanService; + @Resource + private IMzUnsupportedService mzUnsupportedService; + @Resource + private ISpecialStudentService specialStudentService; + @Resource + private IFamilyService familyService; + @Resource + private IMinorService minorService; + @Resource + private IMrSchoolService schoolService; + @Resource + private IHighSchoolService highSchoolService; + @Resource + private IPrimarySchoolService primarySchoolService; + @Resource + private ISourceService sourceService; + @Resource + private ISysDictService dictService; + + private final List resultFamily = new ArrayList<>();//分析后家庭的数据 + private final List resultMinor = new ArrayList<>();//分析后未成年人的信息 + private final List resultSchools = new ArrayList<>();//分析后学籍的信息 + private static final int corePoolSize = Runtime.getRuntime().availableProcessors(); + private static final ThreadPoolExecutor executor = new ThreadPoolExecutor(corePoolSize, corePoolSize + 1, 10L, TimeUnit.SECONDS, new LinkedBlockingQueue(1000)); + + @AutoLog(value = "来源数据管理-分页列表查询") - @ApiOperation(value="来源数据管理-分页列表查询", notes="来源数据管理-分页列表查询") - @GetMapping(value = "/doAnalyzeData") - public void doAnalyzeData() { - -// List allData=new ArrayList<>() - LambdaQueryWrapper cfq = new LambdaQueryWrapper<>(); - cfq.isNotNull(SysDepart::getParentId); - List departs= sysDepartService.list(cfq); - gaPunishVos.addAll(gaPunishService.queryAll()); - specialStudentVos.addAll(specialStudentService.queryList()); - -// List familyVos=queryByThread(new ArrayList<>(),departs); - //获取当前系统时间 -// long startTime = System.currentTimeMillis(); - queryByThread(departs); -// long endTime = System.currentTimeMillis(); -// System.out.println(endTime-startTime); -// long startTime1 = System.currentTimeMillis(); -// long endTime1 = System.currentTimeMillis(); -// System.out.println("***********************结束时间"+(endTime1-startTime1)); - } - - /** - * 分页列表查询 - * @param allData - * @return - */ - public List queryPageList(List allData,List departs){ - try { -// List familyVos=gaDemographicService.queryPageList(queryNum,pageSize); -//// allData.addAll(familyVos); -// if(oConvertUtils.isNotEmpty(familyVos)){ -// //当查出来的数据等于分页的数量说明还有数据需要查询 -// if(familyVos.size() == pageSize){ -// queryNum=queryNum+pageSize; -//// queryPageList(allData); -// analyzeData(familyVos,departs); -// }else { -// -// } -// } - - }catch (Exception e){ - System.out.println(e); - } - return allData; - } - - public void analyzeData(List allData,List departs){ - List familyMajors=new ArrayList<>();//户籍信息里的成年人 - List familyMinors=new ArrayList<>();//户籍信息里的未成年人 - if(oConvertUtils.isNotEmpty(allData) && oConvertUtils.isNotEmpty(departs)){ - for(SysDepart d:departs){ - for(Family f:allData){ - if(d.getAbbreviation().contains(f.getDivision())){ - f.setSysOrgCode(d.getId()); - } - if(oConvertUtils.isNotEmpty(f.getIdentity())){ - f.setGender(Integer.valueOf(IDNumberUtil.judgeGender(f.getIdentity()))); - Integer age=IDNumberUtil.countAge(f.getIdentity()); - if(age<18){ - familyMinors.add(f); - }else { - familyMajors.add(f); - } - } + @ApiOperation(value = "来源数据管理-分页列表查询", notes = "来源数据管理-分页列表查询") + @PutMapping(value = "/doAnalyzeData") + public Result doAnalyzeData() { + try { + System.out.println("开始数据分析"); + long startTime = System.currentTimeMillis(); + List departs = sysDepartService.querySysDeparts(); + getData(departs); + System.out.println("开始数据分析" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); + System.out.println("家庭成员数据批量新增总条数" + resultFamily.size()); + System.out.println("未成年人数据批量新增总条数" + resultMinor.size()); + System.out.println("学籍信息数据批量新增总条数" + resultSchools.size()); + long startTime2 = System.currentTimeMillis(); +// minorService.insertBatch(resultMinor,departs); + System.out.println("未成年人数据批量新增所用时间" + (System.currentTimeMillis() - startTime2) / 1000 + "秒"); + long startTime1 = System.currentTimeMillis(); +// familyService.insertBatch(resultFamily,departs); + System.out.println("家庭成员数据批量新增所用时间" + (System.currentTimeMillis() - startTime1) / 1000 + "秒"); + long startTime3 = System.currentTimeMillis(); +// schoolService.insertBatch(resultSchools,); + System.out.println("学籍信息入库时间" + (System.currentTimeMillis() - startTime3) / 1000 + "秒"); + long startTime4 = System.currentTimeMillis(); + getSourceData(); + System.out.println("来源数据入库时间" + (System.currentTimeMillis() - startTime4) / 1000 + "秒"); + System.out.println("*********************************总用时" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); + return Result.OK("操作成功"); + } catch (Exception e) { + e.printStackTrace(); + log.info(String.valueOf(e)); + return Result.OK("操作失败"); + } + } + + public void getData(List departs) { + try { + System.out.println("开始数据分析"); + long startTime = System.currentTimeMillis(); + ExecutorService pool = Executors.newFixedThreadPool(50); + CompletableFuture> f1 = CompletableFuture.supplyAsync(() -> gaPunishService.queryAll(), executor); + CompletableFuture> f2 = CompletableFuture.supplyAsync(() -> specialStudentService.queryList(), executor); + CompletableFuture> f3 = CompletableFuture.supplyAsync(() -> mzOrphanService.getIdentityS(), executor); + CompletableFuture> f4 = CompletableFuture.supplyAsync(() -> mzUnsupportedService.getIdentityS(), executor); + CompletableFuture> f5 = CompletableFuture.supplyAsync(() -> mzLeftBehindChildrenService.getIdentityS(), executor); + CompletableFuture> f6 = CompletableFuture.supplyAsync(() -> mzAdoptionService.getIdentityS(), executor); + CompletableFuture> f7 = CompletableFuture.supplyAsync(() -> highSchoolService.getList(), executor); + CompletableFuture> f8 = CompletableFuture.supplyAsync(() -> primarySchoolService.getList(), executor); +// CompletableFuture> f9 = CompletableFuture.supplyAsync(() -> gaDemographicService.getIdentityS(), executor); + //行政处罚数据 +// Map gaPunishVos = gaPunishService.queryAll(); + Map gaPunishVos = new HashMap<>(); + gaPunishVos.putAll(f1.get()); +// List specialStudentVos = specialStudentService.queryList(); + List specialStudentVos = new ArrayList<>(); + specialStudentVos.addAll(f2.get()); + //孤儿数据 +// List mzOrphans = mzOrphanService.getIdentityS(); + List mzOrphans = new ArrayList<>(); + mzOrphans.addAll(f3.get()); + //无人抚养 +// List mzUnsupporteds = mzUnsupportedService.getIdentityS(); + List mzUnsupporteds = new ArrayList<>(); + mzUnsupporteds.addAll(f4.get()); + //留守儿童 +// List mzLeftBehinds =mzLeftBehindChildrenService.getIdentityS(); + List mzLeftBehinds = new ArrayList<>(); + mzLeftBehinds.addAll(f5.get()); + //领养 +// List mzAdoptions =mzAdoptionService.getIdentityS(); + List mzAdoptions = new ArrayList<>(); + mzAdoptions.addAll(f6.get()); + //获取初高中学生信息 +// List highSchools = highSchoolService.getList(); + List highSchools = new ArrayList<>(); + highSchools.addAll(f7.get()); + //获取幼小学生信息 +// List primarySchools = primarySchoolService.getList(); + List primarySchools = new ArrayList<>(); + primarySchools.addAll(f8.get()); + //人口基本信息小于18岁 +// Map gaDemographics =gaDemographicService.getIdentityS(); +// Map gaDemographics =new HashMap<>(); +// gaDemographics.putAll(f9.get()); + //关闭线程池 + pool.shutdown(); + Map gaDemographics = gaDemographicService.getIdentityS(); + System.out.println("线程池查询用时" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); + long startTime1 = System.currentTimeMillis(); + //户籍信息 + Map familyMap = gaHouseholdService.getGaHouseholds(gaDemographics); +// Map familyMap = queryByThread(); + System.out.println("户籍信息数据查询时间" + (System.currentTimeMillis() - startTime1) / 1000 + "秒"); + System.out.println("判断初高中学生信息和人口基本信息的交集和差集开始时间" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); + judgeHighSchoolsAndDemographics(highSchools, gaDemographics, departs, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, familyMap, gaPunishVos, mzOrphans); + System.out.println("判断初高中学生信息和人口基本信息的交集和差集结束时间" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); + System.out.println("判断幼小学生信息和人口基本信息的交集和差集开始时间" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); + judgePrimarySchoolsAndDemographics(primarySchools, gaDemographics, departs, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, familyMap, gaPunishVos, mzOrphans); + System.out.println("判断幼小学生信息和人口基本信息的交集和差集结束时间" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); + System.out.println("所有时间" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public Map queryByThread() { + Map familyMap = new HashMap<>(); + try { + long startTime = System.currentTimeMillis(); + // 数据集合大小,由调用者自己指定 + int listSize = gaDemographicService.count(); + // 开启的线程数 + int runSize = 25; + // 一个线程处理数据条数,如果库中有100条数据,开启20个线程,那么每一个线程执行的条数就是5条 + int count = listSize / runSize;//5 + // 创建一个线程池,数量和开启线程的数量一样 + ExecutorService executor = MultiThreadUtil.createThread(runSize); + // 计算sql语句中每个分页查询的起始和结束数据下标 + // 循环创建线程 + //此处调用具体的查询方法 + List>> taskList = new ArrayList>>();//创建任务 + System.out.println("开始查询线程总数" + runSize); + for (int i = 0; i < runSize; i++) { + int index = i * count; + int num = count; + Callable> task= new DoTaskThread(gaDemographicService,index, num);//条件查询,name没有就给null + taskList.add(task); + } + List>> futureList = executor.invokeAll(taskList); + System.out.println(futureList.size()); + if (futureList != null && futureList.size() > 0){ + for (Future> future:futureList) { + if(future.get() != null) { + familyMap.putAll(future.get()); + } + } + } + executor.shutdown();//关闭线程 + long endTime = System.currentTimeMillis(); + long s = ((endTime - startTime) / 1000); + System.out.println(runSize + "个线程查询花了" + s + "秒" ); + System.out.println("总条数"+familyMap.size() ); + } catch (Exception e) { + e.printStackTrace(); + log.info(String.valueOf(e)); + } + return familyMap; + } + + /** + * 来源数据 + */ + public void getSourceData() { + long startTime = System.currentTimeMillis(); + List sourceDataList = new ArrayList<>(); + try { + System.out.println("来源数据查询"); + + //公安 + Integer gaTotal = gaDemographicService.count() + gaHouseholdService.count() + gaPunishService.count() + gaJuvenilesStayService.count(); + LambdaQueryWrapper ga = new LambdaQueryWrapper<>(); + ga.eq(SourceData::getName, SourceData.SOURCE_UNIT_GA); + ga.orderByDesc(SourceData::getBatch); + ga.last("limit 1"); + SourceData gaS = sourceService.getOne(ga); + SourceData gaData = new SourceData(); + if (oConvertUtils.isNotEmpty(gaS) && oConvertUtils.isNotEmpty(gaS.getBatch())) { + gaData.setBatch(gaS.getBatch() + 1); + } else { + gaData.setBatch(1); + } + gaData.setTotal(gaTotal); + gaData.setCreateTime(new Date()); + gaData.setName(SourceData.SOURCE_UNIT_GA); + sourceDataList.add(gaData); + //民政 + Integer mzTotal = mzAdoptionService.count() + mzUnsupportedService.count() + mzLeftBehindChildrenService.count() + mzOrphanService.count(); + SourceData mzData = new SourceData(); + LambdaQueryWrapper mz = new LambdaQueryWrapper<>(); + mz.eq(SourceData::getName, SourceData.SOURCE_UNIT_MZ); + mz.orderByDesc(SourceData::getBatch); + mz.last("limit 1"); + SourceData mzS = sourceService.getOne(mz); + if (oConvertUtils.isNotEmpty(mzS) && oConvertUtils.isNotEmpty(mzS.getBatch())) { + mzData.setBatch(mzS.getBatch() + 1); + } else { + mzData.setBatch(1); + } + mzData.setTotal(mzTotal); + mzData.setCreateTime(new Date()); + mzData.setName(SourceData.SOURCE_UNIT_MZ); + sourceDataList.add(mzData); + //学校 + Integer schoolTotal = highSchoolService.count() + primarySchoolService.count() + specialStudentService.count(); + SourceData schoolData = new SourceData(); + LambdaQueryWrapper school = new LambdaQueryWrapper<>(); + school.eq(SourceData::getName, SourceData.SOURCE_UNIT_SCHOOL); + school.orderByDesc(SourceData::getBatch); + school.last("limit 1"); + SourceData schoolS = sourceService.getOne(school); + if (oConvertUtils.isNotEmpty(schoolS) && oConvertUtils.isNotEmpty(schoolS.getBatch())) { + schoolData.setBatch(schoolS.getBatch() + 1); + } else { + schoolData.setBatch(1); + } + schoolData.setTotal(schoolTotal); + schoolData.setCreateTime(new Date()); + schoolData.setName(SourceData.SOURCE_UNIT_SCHOOL); + sourceDataList.add(schoolData); + sourceService.saveBatch(sourceDataList); + } catch (Exception e) { + e.printStackTrace(); + log.info(String.valueOf(e)); + } + System.out.println("来源数据查询" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); +// return sourceDataList; + } + + + /** + * 判断初高中学生信息和人口基本信息的交集和差集 + */ + public void judgeHighSchoolsAndDemographics(List highSchools, Map gaDemographics, List departs, + List specialStudentVos, List mzUnsupporteds, List mzLeftBehinds, + List mzAdoptions, Map gaHouseholds, Map gaPunishVos, List mzOrphans + ) { + try { + System.out.println("判断初高中学生信息和人口基本信息的交集和差集zongsuo"+highSchools.size()); + long startTime = System.currentTimeMillis(); + //不在人口基本信息的初高中学生信息 + List highSchoolDifference = new ArrayList<>(); + //不在初高中学生信息里的的人口基本信息 + List gaDemographicDifference = new ArrayList<>(); + //初高中学生信息和人口基本信息的交集 + List highSchoolIntersection = new ArrayList<>(); + if (oConvertUtils.isNotEmpty(highSchools)) { + highSchools.parallelStream().forEach(h -> { + if (oConvertUtils.isNotEmpty(gaDemographics) && oConvertUtils.isNotEmpty(gaDemographics.get(h.getIdentity()))) { + if (h.getIdentity().equals(gaDemographics.get(h.getIdentity()))) { + //交集 + highSchoolIntersection.add(h); + } else { + //差集 + gaDemographicDifference.add(gaDemographics.get(h.getIdentity())); + } + } else { + //差集 + highSchoolDifference.add(h); + } + }); + } + System.out.println("初高中交集数"+highSchoolIntersection.size()); + System.out.println("不在初高中学生信息里的的人口基本信息"+gaDemographicDifference.size()); + System.out.println("不在人口基本信息的初高中学生信息"+highSchoolDifference.size()); + doSchoolDifference(highSchoolDifference, departs, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans,gaHouseholds); + doIntersection(highSchoolIntersection, departs, gaHouseholds, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans); + doDemographicDifference(gaDemographicDifference, departs, gaHouseholds, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans); + } catch (Exception e) { + e.printStackTrace(); + log.info(String.valueOf(e)); + } + } + + /** + * 判断幼小学生信息和人口基本信息的交集和差集 + */ + public void judgePrimarySchoolsAndDemographics(List primarySchools, Map gaDemographics, List departs, + List specialStudentVos, List mzUnsupporteds, List mzLeftBehinds, + List mzAdoptions, Map gaHouseholds, Map gaPunishVos, List mzOrphans + ) { + try { + System.out.println("判断幼小学生信息和人口基本信息的交集和差集总数"+primarySchools.size()); + long startTime = System.currentTimeMillis(); + //不在人口基本信息的幼小学生信息 + List primarySchoolDifference = new ArrayList<>(); + //不在幼小学生信息里的的人口基本信息 + List gaDemographicDifference = new ArrayList<>(); + //幼小学生信息和人口基本信息的交集 + List primarySchoolIntersection = new ArrayList<>(); + if (oConvertUtils.isNotEmpty(primarySchools)) { + primarySchools.parallelStream().forEach(p -> { + if (oConvertUtils.isNotEmpty(gaDemographics) && oConvertUtils.isNotEmpty(p) && oConvertUtils.isNotEmpty(gaDemographics.get(p.getIdentity()))) { + if (p.getIdentity().equals(gaDemographics.get(p.getIdentity()))) { + //交集 + primarySchoolIntersection.add(p); + } else { + //差集 + gaDemographicDifference.add(gaDemographics.get(p.getIdentity())); + } + } else { + //差集 + primarySchoolDifference.add(p); + } + }); + } + System.out.println("不在人口基本信息的幼小学生信息"+primarySchoolDifference.size()); + System.out.println("不在幼小学生信息里的的人口基本信息"+gaDemographicDifference.size()); + System.out.println("幼小学生信息和人口基本信息的交集"+primarySchoolIntersection.size()); + doSchoolDifference(primarySchoolDifference, departs, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans,gaHouseholds); + doIntersection(primarySchoolIntersection, departs, gaHouseholds, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans); + doDemographicDifference(gaDemographicDifference, departs, gaHouseholds, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans); + } catch (Exception e) { + e.printStackTrace(); + log.info(String.valueOf(e)); + } + } + + //处理有人口基本信息但没有学籍信息的数据 + public void doDemographicDifference(List gaDemographicDifference, List departs, Map gaHouseholds, List specialStudentVos, + List mzUnsupporteds, List mzLeftBehinds, List mzAdoptions, Map gaPunishVos, + List mzOrphans) { + try { + long startTime = System.currentTimeMillis(); + System.out.println("处理有人口基本信息但没有学籍信息的数据开始***********************" + gaDemographicDifference.size()); + Map minorMap = new HashMap<>(); + if (oConvertUtils.isNotEmpty(gaDemographicDifference) && oConvertUtils.isNotEmpty(gaHouseholds)) { + gaDemographicDifference.parallelStream().forEach(idCard -> { + if (oConvertUtils.isNotEmpty(idCard) && oConvertUtils.isNotEmpty(gaHouseholds.get(idCard))) { + Minor minor = new Minor(); + minor.setSchool(Minor.SCHOOL_STATUS_YES); + minor.setName(gaHouseholds.get(idCard).getName()); + minor.setGender(Integer.parseInt(IDNumberUtil.judgeGender(idCard))); + minor.setAddress(gaHouseholds.get(idCard).getAddress()); + minor.setIdentity(idCard); + minor.setNumber(gaHouseholds.get(idCard).getNumber()); + minor.setHouseholdNum(gaHouseholds.get(idCard).getHouseholdNum()); + minor.setDivision(gaHouseholds.get(idCard).getDivision()); + minorMap.put(idCard, minor); + } + }); + } + System.out.println("处理有人口基本信息但没有学籍信息的数据的所属单位开始" + (System.currentTimeMillis() - startTime) / 1000); + if (oConvertUtils.isNotEmpty(minorMap) && oConvertUtils.isNotEmpty(departs) && departs.size() > 0) { + for (SysDepart d : departs) { + for (Map.Entry ga : minorMap.entrySet()) { + Minor minor = ga.getValue(); + if (oConvertUtils.isNotEmpty(d) && oConvertUtils.isNotEmpty(d.getAbbreviation()) && oConvertUtils.isNotEmpty(minor) && oConvertUtils.isNotEmpty(minor.getDivision())) { + if (d.getAbbreviation().contains(minor.getDivision())) { + minor.setSysOrgCode(d.getOrgCode()); + } + } + } + } + } + System.out.println("处理有人口基本信息但没有学籍信息的数据的所属单位结束" + (System.currentTimeMillis() - startTime) / 1000); + System.out.println("处理有人口基本信息但没有学籍信息的数据jieshu**********************" + minorMap.size()); + getSpecialStudent(minorMap, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans,gaHouseholds); + } catch (Exception e) { + e.printStackTrace(); + log.info(String.valueOf(e)); + } + } + + //处理交集数据 + public void doIntersection(List intersection, List departs, Map gaHouseholds, List specialStudentVos, + List mzUnsupporteds, List mzLeftBehinds, List mzAdoptions, Map gaPunishVos, + List mzOrphans) { + long startTime = System.currentTimeMillis(); + try { + Map minorMap = new HashMap<>(); + System.out.println("***********************交集总数**********************************************" + intersection.size()); + System.out.println("***********************人口信息总数**********************************************" + gaHouseholds.size()); + System.out.println("交集数据里的所属单位开始" + (System.currentTimeMillis() - startTime) / 1000); + if (oConvertUtils.isNotEmpty(intersection) && oConvertUtils.isNotEmpty(departs) && departs.size() > 0) { + for (SysDepart d : departs) { + intersection.parallelStream().forEach(i -> { + if (oConvertUtils.isNotEmpty(i) && oConvertUtils.isNotEmpty(i.getSchool()) && oConvertUtils.isNotEmpty(d) && oConvertUtils.isNotEmpty(d.getCommonCode())) { + if (d.getCommonCode().contains(i.getSchool())) { + i.setSysOrgCode(d.getOrgCode()); + } + } + }); + } + } + System.out.println("交集数据里的所属单位结束总数"+intersection.size()+"交集数据里的所属单位结束" + (System.currentTimeMillis() - startTime) / 1000); + Date creatDate = new Date(); + if (oConvertUtils.isNotEmpty(intersection)) { + intersection.parallelStream().forEach(i -> { + if (oConvertUtils.isNotEmpty(i) && oConvertUtils.isNotEmpty(i.getIdentity())) { + Minor minor = new Minor(); + //身份证号 + String idCard = i.getIdentity(); + if (oConvertUtils.isNotEmpty(gaHouseholds) && oConvertUtils.isNotEmpty(gaHouseholds.get(idCard))) { + minor.setSchool(Minor.SCHOOL_STATUS_NO); + minor.setSchoolName(i.getSchool()); + minor.setStartYear(i.getAdmissionDate()); + minor.setNumber(gaHouseholds.get(idCard).getNumber()); + minor.setHouseholdNum(gaHouseholds.get(idCard).getHouseholdNum()); + } else { + minor.setSchool(Minor.SCHOOL_STATUS_YES); + } + if (oConvertUtils.isNotEmpty(i.getName())) { + minor.setName(i.getName()); + } + if (oConvertUtils.isNotEmpty(i.getAddress())) { + minor.setAddress(i.getAddress()); + } + if (oConvertUtils.isNotEmpty(idCard)) { + minor.setGender(Integer.parseInt(IDNumberUtil.judgeGender(idCard))); + } + minor.setIdentity(idCard); + minor.setSysOrgCode(i.getSysOrgCode()); + minor.setCreateTime(creatDate); + i.setCreateTime(creatDate); + minorMap.put(idCard, minor); + } + }); + } + System.out.println("户籍信息里的未成年人的单位" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); + long startTime1 = System.currentTimeMillis(); +// schoolService.insertBatch(intersection); + resultSchools.addAll(intersection); + System.out.println("人口信息he交集总数总数" + minorMap.size()); + getSpecialStudent(minorMap, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans,gaHouseholds); + } catch (Exception e) { + e.printStackTrace(); + log.info(String.valueOf(e)); + } + } + + //处理有学籍信息但没有人口基本信息的数据 + public void doSchoolDifference(List difference, List departs, List specialStudentVos, + List mzUnsupporteds, List mzLeftBehinds, List mzAdoptions, Map gaPunishVos, + List mzOrphans, Map gaHouseholds) { + try { + Map minorMap = new HashMap<>(); + long startTime = System.currentTimeMillis(); + System.out.println("根据差集数据判断所属单位" + difference.size()); + System.out.println("未成年人总数" + difference.size()); + Date creatTime = new Date(); + if (oConvertUtils.isNotEmpty(difference) && oConvertUtils.isNotEmpty(departs) && departs.size() > 0) { + for (SysDepart d : departs) { + difference.parallelStream().forEach(m -> { + Minor minor = new Minor(); + if (oConvertUtils.isNotEmpty(m)) { + if (oConvertUtils.isNotEmpty(d) && oConvertUtils.isNotEmpty(d.getCommonCode()) && oConvertUtils.isNotEmpty(m.getSchool())) { + if (d.getCommonCode().contains(m.getSchool()) && oConvertUtils.isNotEmpty(minorMap.get(m.getIdentity()))) { + minor.setSysOrgCode(d.getOrgCode()); + m.setSysOrgCode(d.getOrgCode()); + } + } + minor.setSchool(Minor.SCHOOL_STATUS_NO); + if (oConvertUtils.isNotEmpty(m.getName())) { + minor.setName(m.getName()); + } + minor.setGender(Integer.valueOf(IDNumberUtil.judgeGender(m.getIdentity()))); + if (oConvertUtils.isNotEmpty(m.getAddress())) { + minor.setAddress(m.getAddress()); + } + if (oConvertUtils.isNotEmpty(m.getSchool())) { + minor.setAddress(m.getSchool()); + } + if (oConvertUtils.isNotEmpty(m.getAdmissionDate())) { + minor.setAddress(m.getAdmissionDate()); + } + minor.setIdentity(m.getIdentity()); + minor.setCreateTime(creatTime); + m.setCreateTime(creatTime); + minorMap.put(m.getIdentity(), minor); + } + + }); + } + } + System.out.println("根据不在人口基础信息里的学生和单位信息判断所属单位" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); + long startTime1 = System.currentTimeMillis(); +// schoolService.insertBatch(difference); + resultSchools.addAll(difference); + System.out.println("有学籍信息但没有人口基本信息的数据" + minorMap.size()); + getSpecialStudent(minorMap, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans,gaHouseholds); + } catch (Exception e) { + e.printStackTrace(); + log.info(String.valueOf(e)); + } + + } + + /** + * 根据特殊学校信息判断未成年人特殊原因和备注 + * + * @param minors + */ + public void getSpecialStudent(Map minors, List specialStudentVos, List mzUnsupporteds, List mzLeftBehinds, + List mzAdoptions, Map gaPunishVos, List mzOrphans, Map gaHouseholds) { + long startTime = System.currentTimeMillis(); + try { + System.out.println("根据特殊学校信息判断未成年人重点关注原因和备注"); + if (oConvertUtils.isNotEmpty(specialStudentVos) && oConvertUtils.isNotEmpty(minors)) { + for (SpecialStudentVo s : specialStudentVos) { + if (oConvertUtils.isNotEmpty(s.getIdentity()) && oConvertUtils.isNotEmpty(minors.get(s.getIdentity()))) { +// if (minors.get(s.getIdentity()).getIdentity().equals(s.getIdentity())) { + minors.get(s.getIdentity()).setSpecialReason(s.getReason()); + minors.get(s.getIdentity()).setRemark(s.getRemark()); +// } + } + } + } + System.out.println("根据特殊学校信息判断未成年人重点关注原因和备注" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); + getUnsupported(minors, mzUnsupporteds, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans,gaHouseholds); + } catch (Exception e) { + e.printStackTrace(); + log.info(String.valueOf(e)); + } + + } + + /** + * 无人抚养 + */ + public void getUnsupported(Map minors, List mzUnsupporteds, List mzLeftBehinds, + List mzAdoptions, Map gaPunishVos, List mzOrphans, Map gaHouseholds) { + long startTime = System.currentTimeMillis(); + try { + System.out.println("无人抚养"); + + if (oConvertUtils.isNotEmpty(minors) && oConvertUtils.isNotEmpty(mzUnsupporteds)) { + for (String s : mzUnsupporteds) { + if (oConvertUtils.isNotEmpty(s) && oConvertUtils.isNotEmpty(minors.get(s))) { + minors.get(s).setReason(Minor.ATTENTION_REASON_UNSUPPORTED); + } + } + } + System.out.println("无人抚养" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); + getAdoption(minors, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans,gaHouseholds); + } catch (Exception e) { + e.printStackTrace(); + log.info(String.valueOf(e)); + } + + } + + /** + * 收养 + */ + public void getAdoption(Map minors, List mzLeftBehinds, List mzAdoptions, Map gaPunishVos, List mzOrphans, Map gaHouseholds) { + long startTime = System.currentTimeMillis(); + try { + System.out.println("收养"); + if (oConvertUtils.isNotEmpty(minors) && oConvertUtils.isNotEmpty(mzAdoptions)) { + for (String s : mzAdoptions) { + if (oConvertUtils.isNotEmpty(s) && oConvertUtils.isNotEmpty(minors.get(s)) ) { + minors.get(s).setReason(Minor.ATTENTION_REASON_UNSUPPORTED); + } + } } - } - } - doFamilyMajors(familyMajors);//处理成年人 - doFamilyMinors(familyMinors);//处理成年人 - } - - public void doFamilyMajors(List familyMajors){ - if(oConvertUtils.isNotEmpty(gaPunishVos) && oConvertUtils.isNotEmpty(familyMajors)){ - for(GaPunishVo p:gaPunishVos){ - for(Family f:familyMajors){ - if(p.getDxsfzh().equals(f.getIdentity())){ - f.setOther(p.getAjmc()); - f.setReason(p.getSldwmc()); - f.setCrime(Family.IS_CRIME); - gaPunishVos.remove(p); - }else { - f.setCrime(Family.IS_NOT_CRIME); - } + System.out.println("收养" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); + getChildren(minors, mzLeftBehinds, gaPunishVos, mzOrphans,gaHouseholds); + } catch (Exception e) { + e.printStackTrace(); + log.info(String.valueOf(e)); + } + + } + + /** + * 留守儿童 + */ + public void getChildren(Map minors, List mzLeftBehinds, Map gaPunishVos, List mzOrphans, Map gaHouseholds) { + long startTime = System.currentTimeMillis(); + try { + System.out.println("留守儿童"); + if (oConvertUtils.isNotEmpty(minors) && oConvertUtils.isNotEmpty(mzLeftBehinds)) { + for (String s : mzLeftBehinds) { + if (oConvertUtils.isNotEmpty(s) && oConvertUtils.isNotEmpty(minors.get(s)) ) { + minors.get(s).setReason(Minor.ATTENTION_REASON_CHILDREN); + } + } + } + System.out.println("留守儿童" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); + getOrphan(minors, mzOrphans, gaPunishVos,gaHouseholds); + } catch (Exception e) { + e.printStackTrace(); + log.info(String.valueOf(e)); + } + + } + + /** + * 孤儿 + */ + public void getOrphan(Map minors, List mzOrphans, Map gaPunishVos, Map gaHouseholds) { + long startTime = System.currentTimeMillis(); + try { + System.out.println("孤儿"); + if (oConvertUtils.isNotEmpty(minors) && oConvertUtils.isNotEmpty(mzOrphans)) { + for (String s : mzOrphans) { + if (oConvertUtils.isNotEmpty(s) && oConvertUtils.isNotEmpty(minors.get(s)) ) { + minors.get(s).setReason(Minor.ATTENTION_REASON_ORPHAN); + } + } } - } - } -// familyService.saveBatch(familyMajors); - } - - public void doFamilyMinors(List familyMinors){ - if(oConvertUtils.isNotEmpty(specialStudentVos) && oConvertUtils.isNotEmpty(familyMinors)){ - for (SpecialStudentVo s:specialStudentVos){ - for(Family f:familyMinors){ - Minor minor=new Minor(); - if(s.getIdentity().equals(f.getIdentity())){ - minor.setReason(s.getReason()); - minor.setRemark(s.getRemark()); - specialStudentVos.remove(s); - } - minor.setAddress(f.getAddress()); - minor.setGender(f.getGender()); - minor.setHouseholdNum(f.getHouseholdNum()); - minor.setName(f.getName()); - minor.setRelation(f.getRelation()); - minor.setNumber(f.getNumber()); - minor.setSysOrgCode(f.getSysOrgCode()); + System.out.println("孤儿" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); + getFamilyRelationship(minors, gaHouseholds,gaPunishVos); + } catch (Exception e) { + e.printStackTrace(); + log.info(String.valueOf(e)); + } + + } + + + /** + * 建立未成年人和家庭成员关系 + */ + public void getFamilyRelationship(Map minors, Map gaHouseholds, Map gaPunishVos) { + long startTime = System.currentTimeMillis(); + try { + List familys = new ArrayList<>(); + //犯罪人员身份证号-户号关系 + Map idCards = new HashMap<>(); + //户号-家庭成员关系 + Map> familyMaps = new HashMap<>(); + //人员身份证号-与监护人的关系 + Map relations = new HashMap<>(); + //户号-与监护人 + Map guardians = new HashMap<>(); + if (oConvertUtils.isNotEmpty(gaHouseholds)) { + for (Map.Entry m : gaHouseholds.entrySet()) { + String mapKey = m.getKey(); + Family family = m.getValue(); + if (oConvertUtils.isNotEmpty(family) && oConvertUtils.isNotEmpty(family.getHouseholdNum()) && oConvertUtils.isNotEmpty(family.getIdentity())) { + String houseNum = family.getHouseholdNum(); + List list = new ArrayList<>(); + if (oConvertUtils.isNotEmpty(family.getRelation())) { + relations.put(family.getIdentity(), family.getRelation()); + } + if (oConvertUtils.isNotEmpty(familyMaps) && oConvertUtils.isNotEmpty(familyMaps.get(houseNum))) { + list.addAll(familyMaps.get(houseNum)); + + } else { + list.add(family); + } + if (oConvertUtils.isNotEmpty(family.getCrime()) && family.getCrime().equals(Family.IS_CRIME)) { + idCards.put(family.getIdentity(), houseNum); + } + if (oConvertUtils.isNotEmpty(family.getRelation()) && family.getRelation().contains("户主")) { + guardians.put(houseNum, family); + } + familyMaps.put(houseNum, list); + } + if (oConvertUtils.isNotEmpty(family)) { + if (oConvertUtils.isNotEmpty(gaPunishVos) && oConvertUtils.isNotEmpty(gaPunishVos.get(mapKey))) { + family.setCrime(Family.IS_CRIME); + if (oConvertUtils.isNotEmpty(gaPunishVos.get(mapKey).getAjmc())) { + family.setOther(gaPunishVos.get(mapKey).getAjmc()); + } + if (oConvertUtils.isNotEmpty(gaPunishVos.get(mapKey).getSldwmc())) { + family.setReason(gaPunishVos.get(mapKey).getSldwmc()); + } + } else { + family.setCrime(Family.IS_NOT_CRIME); + } + } + } } - } - } - familyService.saveBatch(familyMinors); -// minorService.saveBatch(); - } - - public void queryByThread(List departs) { - long startTime = System.currentTimeMillis(); - // 数据集合大小,由调用者自己指定 - int listSize = gaDemographicService.count(); - // 开启的线程数 - int runSize = 20; - // 一个线程处理数据条数,如果库中有100条数据,开启20个线程,那么每一个线程执行的条数就是5条 - int count = listSize / runSize;//5 - // 创建一个线程池,数量和开启线程的数量一样 - ExecutorService executor = MultiThreadUtil.createThread(runSize); - // 计算sql语句中每个分页查询的起始和结束数据下标 - // 循环创建线程 - //此处调用具体的查询方法 - System.out.println("开始查询线程总数"+runSize); - for (int i = 0; i < runSize; i++) { - int index = i * count; - int num = count; - executor.execute(new Runnable() { - @Override - public void run() { - try { - //查询的结果如何保存下来,会不会存在覆盖的问题 - System.out.println("每次查询的下标:" + index + ",条数:" + num); - List familyVos=gaDemographicService.queryPageList(index,num); - //行政处罚数据查询 -// gaPunishService - //这里做处理信息的方法 - analyzeData(familyVos,departs); - } catch (Exception e) { - System.out.println("查询失败" + e); - } + + System.out.println("建立未成年人和家庭成员关系"); + getFamilyCrime(minors, idCards, familyMaps, guardians, relations); + } catch (Exception e) { + e.printStackTrace(); + log.info(String.valueOf(e)); + } + } + + /** + * 家庭成员是否犯罪 + * + * @param minors + * @param idCards + * @param familyMaps + */ + public void getFamilyCrime(Map minors, Map idCards, Map> familyMaps, Map guardians, Map relations) { + long startTime = System.currentTimeMillis(); + try { + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + System.out.println("家庭成员是否犯罪"); + List minorList = new ArrayList<>(); + List familys = new ArrayList<>(); + Date createTime = new Date(); + if (oConvertUtils.isNotEmpty(minors)) { + for (Map.Entry m : minors.entrySet()) { + String idCard = m.getKey(); + Minor minor = m.getValue(); + minor.setCreateTime(createTime); + if (oConvertUtils.isNotEmpty(user) && oConvertUtils.isNotEmpty(user.getId())) { + minor.setCreateBy(user.getId()); + } + //判断家庭成员是否犯罪 + if (oConvertUtils.isNotEmpty(idCard) && oConvertUtils.isNotEmpty(idCards) && oConvertUtils.isNotEmpty(idCards.get(idCard))) { + minor.setReason(Minor.ATTENTION_REASON_CRIME); + } + //判断是否是一个家庭的人员 + if (oConvertUtils.isNotEmpty(minor.getHouseholdNum())) { + String houseNum = minor.getHouseholdNum(); + if (oConvertUtils.isNotEmpty(familyMaps) && oConvertUtils.isNotEmpty(familyMaps.get(houseNum))) { + familys.addAll(familyMaps.get(houseNum)); + } + } + //获取与监护人关系 + if (oConvertUtils.isNotEmpty(idCard) && oConvertUtils.isNotEmpty(relations) && oConvertUtils.isNotEmpty(relations.get(idCard))) { + minor.setRelation(relations.get(idCard)); + } + //获取监护人 + if (oConvertUtils.isNotEmpty(idCard) && oConvertUtils.isNotEmpty(guardians) && oConvertUtils.isNotEmpty(guardians.get(idCard))) { + minor.setGuardian(guardians.get(idCard).getName()); + } + minorList.add(minor); + } } - }); - } - // 执行完关闭线程池 - executor.shutdown(); - long endTime = System.currentTimeMillis(); - System.out.println(endTime-startTime); - } - - -// public static void exec(List list) throws InterruptedException{ -// int count = 300; //一个线程处理300条数据 -// int listSize = list.size(); //数据集合大小 -// int runSize = (listSize/count)+1; //开启的线程数 -// List newlist = null; //存放每个线程的执行数据 -// ExecutorService executor = Executors.newFixedThreadPool(runSize); //创建一个线程池,数量和开启线程的数量一样 -// //创建两个个计数器 -// CountDownLatch begin = new CountDownLatch(1); -// CountDownLatch end = new CountDownLatch(runSize); -// //循环创建线程 -// for (int i = 0; i < runSize ; i++) { -// //计算每个线程执行的数据 -// if((i+1)==runSize){ -// int startIndex = (i*count); -// int endIndex = list.size(); -// newlist= list.subList(startIndex, endIndex); -// }else{ -// int startIndex = (i*count); -// int endIndex = (i+1)*count; -// newlist= list.subList(startIndex, endIndex); -// } -// //线程类 -// MyThread mythead = new MyThread(newlist,begin,end); -// //这里执行线程的方式是调用线程池里的executor.execute(mythead)方法。 -// -// executor.execute(mythead); -// } -// -// begin.countDown(); -// end.await(); -// -// //执行完关闭线程池 -// executor.shutdown(); -// } - -// /** -// * 分割list集合 -// * -// * @param dataList -// * @return -// */ -// public List subList(List dataList) { -// List resultlist = new ArrayList<>();//存放批量数据处理的总结果集 -// if (null != dataList && dataList.size() > 0) { -// int pointsDataLimit = 100;//限制条数 10条一批 也是线程池线程数量 -// Integer size = dataList.size(); -// List cardlist=new ArrayList<>(); -// //判断是否有必要分批 -// if (pointsDataLimit < size) {//大于10条 -// int part = size / pointsDataLimit;//分批数 -// for (int i = 0; i < part; i++) { -// List listPage = dataList.subList(0, pointsDataLimit); //10条数据 -// Integer start = cardlist.size();//10条数据在总结果集的开始下标 -// cardlist = testTime(listPage, resultlist );//返回拼接后的总结果集 -// Integer end = resultlist .size();//10条数据在总结果集的结束下标 -// for (i = start; i < end; i++) { -// //对总数据集的10条数据进行业务处理 -// } -// //剔除已经处理过的10条数据 -// dataList.subList(0, pointsDataLimit).clear(); -// } -// if (!dataList.isEmpty()) {//小于10条 -// cardlist = testTime(dataList, cardlist);//处理最后的数据 -// } -// } else { -// } -// } -// -// return resultlist ; -// } -// -// /** -// * 多线程处理批量数据 -// * -// * @param splitList 处理数据 -// * @param cardlist 处理后总数据 -// * -// * @return -// */ -// public List testTime(List splitList, List cardlist) { -// List list = null; -// try { -// MultiThreadUtil multiThread = new MultiThreadUtil(splitList) { -// @Override -// public FamilyVo outExecute(int currentThread, FamilyVo data) { -// //业务处理 -// /* String iccid = data.getIccid(); -// String allOrder = cardServerService.findAllOrder(iccid); -// String allFlow = cardServerService.allFlowByiccid(iccid); -// String allUseFlow = cardServerService.allUseFlowByiccid(iccid); -// Card card = cardMapper.findByIccid(iccid); -// String monthFlow = card.getMonthFlow(); -// data.setMonthFlow(monthFlow); -// data.setAllOrder(allOrder); -// data.setAllFlow(allFlow); -// data.setAllUseFlow(allUseFlow); -// return data;*/ -// //业务处理end -// return data; -// } -// }; -// list = multiThread.getResult();//返回结果 -// for (FamilyVo ccar : list) { -// cardlist.add(ccar);//批量数据遍历放入总结果 -// } -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return cardlist; -// -// } + resultMinor.addAll(minorList); + resultFamily.addAll(familys); + } catch (Exception e) { + e.printStackTrace(); + log.info(String.valueOf(e)); + } + System.out.println("家庭成员是否犯罪" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); + + } } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/MinorController.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/MinorController.java index 81de6de..73f0110 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/MinorController.java +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/MinorController.java @@ -187,7 +187,7 @@ public class MinorController { // Step.1 组装查询条件查询数据 QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(minor, request.getParameterMap()); LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - + queryWrapper.last("limit 1"); //Step.2 获取导出数据 List queryList = minorService.list(queryWrapper); // 过滤选中数据 diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/Family.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/Family.java index 23da77c..e0ff080 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/Family.java +++ b/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 { /**所属部门*/ @ApiModelProperty(value = "所属部门") private String sysOrgCode; + /**户号*/ + @Excel(name = "户号", width = 25) + @ApiModelProperty(value = "户号") + private String householdNum; + /**人员编号*/ + @Excel(name = "人员编号", width = 25) + @ApiModelProperty(value = "人员编号") + private String number; /**姓名*/ @Excel(name = "姓名", width = 15) @ApiModelProperty(value = "姓名") private String name; /**性别*/ - @Excel(name = "性别", width = 15,dicCode = "sex") + @Excel(name = "性别", width = 10,dicCode = "sex") @ApiModelProperty(value = "性别") @Dict(dicCode = "sex") private Integer gender; /**身份证号*/ - @Excel(name = "身份证号", width = 15) + @Excel(name = "身份证号", width = 20) @ApiModelProperty(value = "身份证号") private String identity; - /**户号*/ - @Excel(name = "户号", width = 15) - @ApiModelProperty(value = "户号") - private String householdNum; - /**人员编号*/ - @Excel(name = "人员编号", width = 15) - @ApiModelProperty(value = "人员编号") - private String number; - /**婚姻状况*/ - @Excel(name = "婚姻状况", width = 15,dicCode = "marital_status") - @ApiModelProperty(value = "婚姻状况") - @Dict(dicCode = "marital_status") - private Integer marital; + @Excel(name = "与户主的关系", width = 15) + @ApiModelProperty(value = "与户主的关系") + private String relation; + /**行政区划*/ + @Excel(name = "行政区划", width = 25) + @ApiModelProperty(value = "行政区划") + private String division; + /**现住址*/ + @Excel(name = "现住址", width = 25) + @ApiModelProperty(value = "现住址") + private String address; /**是否犯罪*/ - @Excel(name = "是否犯罪", width = 15,dicCode = "is_crime") + @Excel(name = "是否犯罪", width = 10,dicCode = "is_crime") @ApiModelProperty(value = "是否犯罪") @Dict(dicCode = "is_crime") private Integer crime; /**犯罪原因*/ - @Excel(name = "犯罪原因", width = 15) + @Excel(name = "犯罪原因", width = 25) @ApiModelProperty(value = "犯罪原因") private String reason; /**其他参考信息*/ - @Excel(name = "其他参考信息", width = 15) + @Excel(name = "其他参考信息", width = 25) @ApiModelProperty(value = "其他参考信息") private String other; - /**行政区划*/ - @Excel(name = "行政区划", width = 15) - @ApiModelProperty(value = "行政区划") - private String division; - @Excel(name = "与户主的关系", width = 15) - @ApiModelProperty(value = "与户主的关系") - private String relation; - /**现住址*/ - @Excel(name = "现住址", width = 15) - @ApiModelProperty(value = "现住址") - private String address; + /**未成年人表id*/ @ApiModelProperty(value = "未成年人表id") private String minorId; diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/Minor.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/Minor.java index 1b03f1b..57dc70b 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/Minor.java +++ b/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; @TableName("mr_minor") public class Minor implements Serializable { private static final long serialVersionUID = 1L; + //是否失学 + public static final Integer SCHOOL_STATUS_YES=1;//是 + public static final Integer SCHOOL_STATUS_NO=0;//否 + + //重点关注原因 + public static final Integer ATTENTION_REASON_ORPHAN=1;//孤儿 + public static final Integer ATTENTION_REASON_CHILDREN=2;//留守儿童 + public static final Integer ATTENTION_REASON_UNSUPPORTED=3;//无人抚养 + public static final Integer ATTENTION_REASON_CRIME=4;//家庭成员有犯罪记录 + public static final Integer ATTENTION_REASON_ADOPTION=5;//收养 /**主键*/ @TableId(type = IdType.ASSIGN_ID) @@ -51,6 +61,14 @@ public class Minor implements Serializable { @ApiModelProperty(value = "所属部门") @Dict(dictTable ="sys_depart",dicText = "depart_name",dicCode = "id") private String sysOrgCode; + /**户号*/ + @Excel(name = "户号", width = 15) + @ApiModelProperty(value = "户号") + private String householdNum; + /**人员编号*/ + @Excel(name = "人员编号", width = 15) + @ApiModelProperty(value = "人员编号") + private String number; /**姓名*/ @Excel(name = "姓名", width = 15) @ApiModelProperty(value = "姓名") @@ -68,14 +86,6 @@ public class Minor implements Serializable { @Excel(name = "身份证号", width = 15) @ApiModelProperty(value = "身份证号") private String identity; - /**重点关注原因*/ - @Excel(name = "重点关注原因", width = 15) - @ApiModelProperty(value = "重点关注原因") - private String reason; - /**备注*/ - @Excel(name = "备注", width = 15) - @ApiModelProperty(value = "备注") - private String remark; /** * 监护人 @@ -97,14 +107,31 @@ public class Minor implements Serializable { @Dict(dicCode = "school_status") private Integer school; - /**人员编号*/ - @Excel(name = "人员编号", width = 15) - @ApiModelProperty(value = "人员编号") - private String number; + /**学校名称*/ + @Excel(name = "学校名称", width = 15) + @ApiModelProperty(value = "学校名称") + private String schoolName; - /**户号*/ - @Excel(name = "户号", width = 15) - @ApiModelProperty(value = "户号") - private String householdNum; + @Excel(name = "入学年份", width = 15) + @ApiModelProperty(value = "入学年份") + private String startYear; + + /**重点关注原因*/ + @Excel(name = "重点关注原因", width = 15,dicCode = "attention_reason") + @ApiModelProperty(value = "重点关注原因") + @Dict(dicCode = "attention_reason") + private Integer reason; + + /**特殊原因*/ + @Excel(name = "特殊原因", width = 15) + @ApiModelProperty(value = "特殊原因") + private String specialReason; + /**备注*/ + @Excel(name = "备注", width = 15) + @ApiModelProperty(value = "备注") + private String remark; + @Excel(name = "行政区划", width = 15) + @ApiModelProperty(value = "行政区划") + private String division; } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/MzAdoption.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/MzAdoption.java index 010b504..86bc4d4 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/MzAdoption.java +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/MzAdoption.java @@ -18,7 +18,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /** - * @Description: mz_adoption + * @Description: 民政_全市收养登记数据 * @Author: jeecg-boot * @Date: 2022-07-14 * @Version: V1.0 diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SourceData.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SourceData.java index 6da7fba..970caaa 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SourceData.java +++ b/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; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import com.fasterxml.jackson.annotation.JsonFormat; +import org.jeecg.common.aspect.annotation.Dict; import org.springframework.format.annotation.DateTimeFormat; import org.jeecgframework.poi.excel.annotation.Excel; import io.swagger.annotations.ApiModel; @@ -28,6 +29,13 @@ import lombok.experimental.Accessors; @ApiModel(value="mr_source对象", description="来源数据管理") public class SourceData implements Serializable { private static final long serialVersionUID = 1L; + public static final String SOURCE_UNIT="source_unit";//单位名称字典表编码 + public static final String SOURCE_UNIT_GA="1";//公安机关 + public static final String SOURCE_UNIT_WJ="2";//未检部门 + public static final String SOURCE_UNIT_SCHOOL="3";//教育部门 + public static final String SOURCE_UNIT_MZ="4";//民政部门 + public static final String SOURCE_UNIT_SF="5";//司法 + /**主键*/ @TableId(type = IdType.ASSIGN_ID) @@ -53,8 +61,9 @@ public class SourceData implements Serializable { @ApiModelProperty(value = "所属部门") private String sysOrgCode; /**单位名称*/ - @Excel(name = "单位名称", width = 15) + @Excel(name = "单位名称", width = 15,dicCode = "source_unit") @ApiModelProperty(value = "单位名称") + @Dict(dicCode = "source_unit") private String name; /**数据批次*/ @Excel(name = "数据批次", width = 15) diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SpecialStudent.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SpecialStudent.java index 1367c9b..8ad2478 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SpecialStudent.java +++ b/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 { @Excel(name = "identity", width = 15) @ApiModelProperty(value = "identity") private String identity; - /**区域*/ - @Excel(name = "区域", width = 15) - @ApiModelProperty(value = "区域") + /**原因*/ + @Excel(name = "原因", width = 15) + @ApiModelProperty(value = "原因") private String reason; /**备注*/ @Excel(name = "备注", width = 15) diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/FamilyMapper.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/FamilyMapper.java index 522b70d..14fe413 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/FamilyMapper.java +++ b/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 { public boolean deleteByMainId(@Param("mainId") String mainId); public List selectByMainId(@Param("mainId") String mainId); + + public List getFamilyByMinorId(@Param("minorId") String minorId); + + /** + * 批量新增 + * @param list + * @return + */ + public Integer insertBatch(List list); } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/GaDemographicMapper.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/GaDemographicMapper.java index 333050a..8c9f090 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/GaDemographicMapper.java +++ b/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; import org.jeecg.modules.system.vo.FamilyVo; import java.util.List; +import java.util.Set; /** * @Description: ga_demographic @@ -24,6 +25,21 @@ public interface GaDemographicMapper extends BaseMapper { */ public List queryPageList(@Param("queryNum") Integer queryNum, @Param("pageSize") Integer pageSize); - public List getIdentityS(); + /** + * 查询身份证号 + * @return + */ + public Set getIdentityS(); + + /** + * 根据户口号查询家庭成员信息 + * @param householdNum + * @return + */ + public List getFamilyByHouseholdNum(@Param("householdNum") String householdNum); + + public List queryHouseholdPageList(@Param("queryNum") Integer queryNum, @Param("pageSize") Integer pageSize); + + public Set queryDemographicPageList(@Param("queryNum") Integer queryNum, @Param("pageSize") Integer pageSize); } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/GaHouseholdMapper.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/GaHouseholdMapper.java index c42a617..52665ee 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/GaHouseholdMapper.java +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/GaHouseholdMapper.java @@ -1,8 +1,12 @@ package org.jeecg.modules.system.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.modules.system.entity.Family; import org.jeecg.modules.system.entity.GaHousehold; +import java.util.List; +import java.util.Set; + /** * @Description: ga_household * @Author: jeecg-boot @@ -11,4 +15,10 @@ import org.jeecg.modules.system.entity.GaHousehold; */ public interface GaHouseholdMapper extends BaseMapper { + /** + * 查询户籍信息 + * @return + */ + public List getGaHouseholds(); } + diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/HighSchoolMapper.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/HighSchoolMapper.java index f855a0b..6b765f2 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/HighSchoolMapper.java +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/HighSchoolMapper.java @@ -1,6 +1,7 @@ package org.jeecg.modules.system.mapper; import java.util.List; +import java.util.Set; import org.apache.ibatis.annotations.Param; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -16,4 +17,6 @@ import org.jeecg.modules.system.entity.MrSchool; public interface HighSchoolMapper extends BaseMapper { public List getList(); + + public Set getIdentityS(); } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MinorMapper.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MinorMapper.java index e45170a..bf39d79 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MinorMapper.java +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MinorMapper.java @@ -1,8 +1,11 @@ package org.jeecg.modules.system.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.modules.system.entity.Family; import org.jeecg.modules.system.entity.Minor; +import java.util.List; + /** * @Description: 未成年人 * @Author: jeecg-boot @@ -11,4 +14,6 @@ import org.jeecg.modules.system.entity.Minor; */ public interface MinorMapper extends BaseMapper { + public Integer insertBatch(List list); + } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MrSchoolMapper.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MrSchoolMapper.java index d3e4495..f4bd72c 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MrSchoolMapper.java +++ b/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; import org.apache.ibatis.annotations.Param; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.modules.system.entity.Minor; import org.jeecg.modules.system.entity.MrSchool; /** @@ -13,5 +14,5 @@ import org.jeecg.modules.system.entity.MrSchool; * @Version: V1.0 */ public interface MrSchoolMapper extends BaseMapper { - + public Integer insertBatch(List list); } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MzAdoptionMapper.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MzAdoptionMapper.java index 2360abf..fa4f47d 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MzAdoptionMapper.java +++ b/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; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.jeecg.modules.system.entity.MzAdoption; +import java.util.List; +import java.util.Set; + /** - * @Description: mz_adoption + * @Description: 收养 * @Author: jeecg-boot * @Date: 2022-07-14 * @Version: V1.0 */ public interface MzAdoptionMapper extends BaseMapper { + public List getIdentityS(); } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MzLeftBehindChildrenMapper.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MzLeftBehindChildrenMapper.java index a61e2fe..2cc3029 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MzLeftBehindChildrenMapper.java +++ b/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; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.jeecg.modules.system.entity.MzLeftBehindChildren; +import java.util.List; + /** * @Description: mz_left_behind_children * @Author: jeecg-boot @@ -10,5 +12,5 @@ import org.jeecg.modules.system.entity.MzLeftBehindChildren; * @Version: V1.0 */ public interface MzLeftBehindChildrenMapper extends BaseMapper { - + public List getIdentityS(); } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MzOrphanMapper.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MzOrphanMapper.java index 3ae7c0d..2bb7870 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MzOrphanMapper.java +++ b/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; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.jeecg.modules.system.entity.MzOrphan; +import java.util.List; + /** * @Description: mz_orphan * @Author: jeecg-boot @@ -10,5 +12,5 @@ import org.jeecg.modules.system.entity.MzOrphan; * @Version: V1.0 */ public interface MzOrphanMapper extends BaseMapper { - + public List getIdentityS(); } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MzUnsupportedMapper.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MzUnsupportedMapper.java index 7aad5a3..50c7362 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MzUnsupportedMapper.java +++ b/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; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.jeecg.modules.system.entity.MzUnsupported; +import java.util.List; + /** * @Description: mz_unsupported * @Author: jeecg-boot @@ -10,5 +12,5 @@ import org.jeecg.modules.system.entity.MzUnsupported; * @Version: V1.0 */ public interface MzUnsupportedMapper extends BaseMapper { - + public List getIdentityS(); } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/PrimarySchoolMapper.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/PrimarySchoolMapper.java index be6b9c5..0e9b191 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/PrimarySchoolMapper.java +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/PrimarySchoolMapper.java @@ -1,6 +1,7 @@ package org.jeecg.modules.system.mapper; import java.util.List; +import java.util.Set; import org.apache.ibatis.annotations.Param; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -16,4 +17,6 @@ import org.jeecg.modules.system.entity.PrimarySchool; public interface PrimarySchoolMapper extends BaseMapper { public List getList(); + + public Set getIdentityS(); } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDepartMapper.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDepartMapper.java index 46bedb9..8c71354 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDepartMapper.java +++ b/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 { */ @Select("SELECT * FROM sys_depart where del_flag ='0' AND parent_id = #{parentId,jdbcType=VARCHAR}") List queryDeptByPid(@Param("parentId")String parentId); + /** + * 获取无pid的数据 + * @return + */ + List querySysDeparts(); } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/FamilyMapper.xml b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/FamilyMapper.xml index 93135dc..36d1658 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/FamilyMapper.xml +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/FamilyMapper.xml @@ -1,6 +1,6 @@ - + DELETE @@ -12,5 +12,19 @@ SELECT * FROM mr_family WHERE - minor_id = #{mainId} + minor_id = #{mainId} + + + + + INSERT INTO mr_family (id, create_time, sys_org_code, household_num, number, name,identity, gender, relation, address,crime,reason, other)VALUES + + (#{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}) + + diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/GaDemographicMapper.xml b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/GaDemographicMapper.xml index 5829bd8..aebd3b5 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/GaDemographicMapper.xml +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/GaDemographicMapper.xml @@ -1,24 +1,43 @@ - + - + - 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 FROM ga_demographic d JOIN ga_household h WHERE ((d.RYBH = h.RYBH) AND (d.id >( SELECT gd.id FROM ga_demographic gd ORDER BY gd.id LIMIT #{queryNum}, 1))) ORDER BY d.id LIMIT #{pageSize} - SELECT d.GMSFHM FROM ga_demographic d + + + + + + \ No newline at end of file diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/GaHouseholdMapper.xml b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/GaHouseholdMapper.xml index ca00c0c..7ef19c6 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/GaHouseholdMapper.xml +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/GaHouseholdMapper.xml @@ -1,5 +1,18 @@ + + + + + + + + + + \ No newline at end of file diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/HighSchoolMapper.xml b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/HighSchoolMapper.xml index 13b092c..830215d 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/HighSchoolMapper.xml +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/HighSchoolMapper.xml @@ -5,15 +5,15 @@ - + - - - - - + + + + + + + + + \ No newline at end of file diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MinorMapper.xml b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MinorMapper.xml index 2ff566b..b6bbbc2 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MinorMapper.xml +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MinorMapper.xml @@ -1,5 +1,12 @@ - + + INSERT INTO mr_minor (id, create_time, sys_org_code, household_num, number, name,identity, gender, relation, address,guardian, + school,schoolName, startYear,reason,specialReason,remark)VALUES + + (#{b.id},#{b.createTime},#{b.sysOrgCode},#{b.householdNum},#{b.number},#{b.name},#{b.identity},#{b.gender},#{b.relation},#{b.address},#{b.guardian}, + #{b.school},#{b.schoolName},#{b.startYear},#{b.reason},#{b.specialReason},#{b.remark}) + + \ No newline at end of file diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MrSchoolMapper.xml b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MrSchoolMapper.xml index 69aa0eb..e47059c 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MrSchoolMapper.xml +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MrSchoolMapper.xml @@ -1,5 +1,12 @@ - + + INSERT INTO mr_school (id, create_time, sys_org_code, name, identity, school,admissionDate, className, address, memberOne,connectOne, + phoneOne,member_two, connectTwo,phoneTwo,phone)VALUES + + (#{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}, + #{b.phone_one},#{b.memberTwo},#{b.connect_two},#{b.phone_two},#{b.phone}) + + \ No newline at end of file diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MzAdoptionMapper.xml b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MzAdoptionMapper.xml index e88c28d..f354d2c 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MzAdoptionMapper.xml +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MzAdoptionMapper.xml @@ -1,5 +1,7 @@ - + \ No newline at end of file diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MzLeftBehindChildrenMapper.xml b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MzLeftBehindChildrenMapper.xml index 2ce4a9e..025418f 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MzLeftBehindChildrenMapper.xml +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MzLeftBehindChildrenMapper.xml @@ -1,5 +1,7 @@ - + \ No newline at end of file diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MzOrphanMapper.xml b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MzOrphanMapper.xml index 3a81d26..66cf6be 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MzOrphanMapper.xml +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MzOrphanMapper.xml @@ -1,5 +1,7 @@ - + \ No newline at end of file diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MzUnsupportedMapper.xml b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MzUnsupportedMapper.xml index 7c2286a..6b2be3b 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MzUnsupportedMapper.xml +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MzUnsupportedMapper.xml @@ -1,5 +1,7 @@ - + \ No newline at end of file diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/PrimarySchoolMapper.xml b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/PrimarySchoolMapper.xml index af1c5b8..3c21b1d 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/PrimarySchoolMapper.xml +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/PrimarySchoolMapper.xml @@ -24,4 +24,8 @@ FROM mr_primary_school s WHERE length (s.SFZJH)>14 + + \ No newline at end of file diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SourceMapper.xml b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SourceMapper.xml index c58d8c2..d984acf 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SourceMapper.xml +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SourceMapper.xml @@ -11,9 +11,8 @@ \ No newline at end of file diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartMapper.xml b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartMapper.xml index 70fc9aa..a5f3171 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartMapper.xml +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartMapper.xml @@ -51,4 +51,8 @@ + + \ No newline at end of file diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IFamilyService.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IFamilyService.java index e847298..f222ba0 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IFamilyService.java +++ b/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; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.system.entity.Family; +import org.jeecg.modules.system.entity.Minor; +import org.jeecg.modules.system.entity.SysDepart; import java.util.List; @@ -14,4 +16,7 @@ import java.util.List; public interface IFamilyService extends IService { public List selectByMainId(String mainId); + + + public Integer insertBatch(List list,List departs); } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IGaDemographicService.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IGaDemographicService.java index 8b267df..2f5bc7c 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IGaDemographicService.java +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IGaDemographicService.java @@ -1,11 +1,14 @@ package org.jeecg.modules.system.service; import com.baomidou.mybatisplus.extension.service.IService; +import io.lettuce.core.dynamic.annotation.Param; import org.jeecg.modules.system.entity.Family; import org.jeecg.modules.system.entity.GaDemographic; import org.jeecg.modules.system.vo.FamilyVo; import java.util.List; +import java.util.Map; +import java.util.Set; /** * @Description: 公安_人口基础信息 @@ -23,5 +26,19 @@ public interface IGaDemographicService extends IService { */ public List queryPageList(Integer startNum, Integer endNum); - public List getIdentityS(); + public Map getIdentityS(); + + public Set getIdStrs(); + + + /** + * 根据户口号查询家庭成员信息 + * @param householdNum + * @return + */ + public List getFamilyByHouseholdNum(@Param("householdNum") String householdNum); + + public Map queryHouseholdPageList(@Param("queryNum") Integer queryNum, @Param("pageSize") Integer pageSize); + + public Set queryDemographicPageList(@Param("queryNum") Integer queryNum, @Param("pageSize") Integer pageSize); } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IGaHouseholdService.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IGaHouseholdService.java index 97789c6..5c94831 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IGaHouseholdService.java +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IGaHouseholdService.java @@ -1,8 +1,12 @@ package org.jeecg.modules.system.service; import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.system.entity.Family; import org.jeecg.modules.system.entity.GaHousehold; +import java.util.List; +import java.util.Map; + /** * @Description: 公安_居民户籍信息 * @Author: jeecg-boot @@ -10,5 +14,9 @@ import org.jeecg.modules.system.entity.GaHousehold; * @Version: V1.0 */ public interface IGaHouseholdService extends IService { - + /** + * 查询户籍信息 + * @return + */ + public Map getGaHouseholds(Map gaDemographics); } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IGaPunishService.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IGaPunishService.java index eb3ebfb..1a82135 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IGaPunishService.java +++ b/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; import org.jeecg.modules.system.vo.GaPunishVo; import java.util.List; +import java.util.Map; /** * @Description: 公安_行政处罚打处人员信息 @@ -17,5 +18,5 @@ public interface IGaPunishService extends IService { * 查询数据 * @return */ - public List queryAll(); + public Map queryAll(); } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IHighSchoolService.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IHighSchoolService.java index e086c2d..5782908 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IHighSchoolService.java +++ b/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; import org.jeecg.modules.system.entity.MrSchool; import java.util.List; +import java.util.Set; /** * @Description: mr_high_school @@ -15,4 +16,5 @@ import java.util.List; */ public interface IHighSchoolService extends IService { public List getList(); + public Set getIdentityS(); } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMinorService.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMinorService.java index 3edd669..801ff50 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMinorService.java +++ b/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; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.system.entity.Family; import org.jeecg.modules.system.entity.Minor; +import org.jeecg.modules.system.entity.SysDepart; import java.io.Serializable; import java.util.Collection; @@ -37,5 +38,7 @@ public interface IMinorService extends IService { * 批量删除一对多 */ public void delBatchMain (Collection idList); - + + + public Integer insertBatch(List list,List departs); } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMrSchoolService.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMrSchoolService.java index 4ac4ed9..45b4c73 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMrSchoolService.java +++ b/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; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.system.entity.MrSchool; +import org.jeecg.modules.system.entity.SysDepart; + +import java.util.List; /** * @Description: 学校 @@ -10,5 +13,5 @@ import org.jeecg.modules.system.entity.MrSchool; * @Version: V1.0 */ public interface IMrSchoolService extends IService { - + public Integer insertBatch(List list,List departs); } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMzAdoptionService.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMzAdoptionService.java index d6907c9..ec97543 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMzAdoptionService.java +++ b/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; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.system.entity.MzAdoption; +import java.util.List; + /** * @Description:民政_全市收养登记数据 * @Author: jeecg-boot @@ -10,5 +12,5 @@ import org.jeecg.modules.system.entity.MzAdoption; * @Version: V1.0 */ public interface IMzAdoptionService extends IService { - + public List getIdentityS(); } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMzLeftBehindChildrenService.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMzLeftBehindChildrenService.java index 78c8dc1..1c81cdf 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMzLeftBehindChildrenService.java +++ b/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; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.system.entity.MzLeftBehindChildren; +import java.util.List; + /** * @Description: 民政_全市在册农村留守儿童数据 * @Author: jeecg-boot @@ -11,5 +13,5 @@ import org.jeecg.modules.system.entity.MzLeftBehindChildren; * @Version: V1.0 */ public interface IMzLeftBehindChildrenService extends IService { - + public List getIdentityS(); } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMzOrphanService.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMzOrphanService.java index 773247a..04d535b 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMzOrphanService.java +++ b/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; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.system.entity.MzOrphan; +import java.util.List; + /** * @Description: 民政_全市在册孤儿数据 * @Author: jeecg-boot @@ -10,5 +12,5 @@ import org.jeecg.modules.system.entity.MzOrphan; * @Version: V1.0 */ public interface IMzOrphanService extends IService { - + public List getIdentityS(); } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMzUnsupportedService.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMzUnsupportedService.java index 37792d8..5633b69 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMzUnsupportedService.java +++ b/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; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.system.entity.MzUnsupported; +import java.util.List; + /** * @Description: 民政_全市在册事实无人抚养儿童数据 * @Author: jeecg-boot @@ -11,5 +13,5 @@ import org.jeecg.modules.system.entity.MzUnsupported; * @Version: V1.0 */ public interface IMzUnsupportedService extends IService { - + public List getIdentityS(); } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IPrimarySchoolService.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IPrimarySchoolService.java index f629486..24302d5 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IPrimarySchoolService.java +++ b/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; import org.jeecg.modules.system.entity.PrimarySchool; import java.util.List; +import java.util.Set; /** * @Description: mr_primary_school @@ -15,4 +16,5 @@ import java.util.List; */ public interface IPrimarySchoolService extends IService { public List getList(); + public Set getIdentityS(); } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartService.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartService.java index 273ed82..1f2cb72 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartService.java +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartService.java @@ -137,4 +137,10 @@ public interface ISysDepartService extends IService{ * @return */ List queryDeptByPid(String pid); + + /** + * 获取无pid的数据 + * @return + */ + List querySysDeparts(); } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/FamilyServiceImpl.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/FamilyServiceImpl.java index e40dbf3..b6907bb 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/FamilyServiceImpl.java +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/FamilyServiceImpl.java @@ -1,12 +1,24 @@ package org.jeecg.modules.system.service.impl; import org.jeecg.modules.system.entity.Family; +import org.jeecg.modules.system.entity.Minor; +import org.jeecg.modules.system.entity.SysDepart; import org.jeecg.modules.system.mapper.FamilyMapper; import org.jeecg.modules.system.service.IFamilyService; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.stereotype.Service; -import java.util.List; + +import java.util.*; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.TransactionDefinition; +import org.springframework.transaction.TransactionStatus; import javax.annotation.Resource; @@ -21,9 +33,71 @@ public class FamilyServiceImpl extends ServiceImpl impleme @Resource private FamilyMapper familyMapper; + + @Resource + private DataSourceTransactionManager dataSourceTransactionManager; + + @Resource + private TransactionDefinition transactionDefinition; @Override public List selectByMainId(String mainId) { return familyMapper.selectByMainId(mainId); } + //分段大小 + private int splitSize = 100000; + /** + * 批量新增 + * @param list + * @return + */ + @Override + public Integer insertBatch(List list,List departs) { + updateStudentWithThreads(list); + return list.size(); + } + private void addBatch(List list, CountDownLatch threadLatch){ + TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); + System.out.println("子线程:" + Thread.currentThread().getName()); + try { + list.forEach(s -> { + String newTeacher = "TNO_" + new Random().nextInt(100); + familyMapper.insert(s); + }); + dataSourceTransactionManager.commit(transactionStatus); + threadLatch.countDown(); + } catch (Throwable e) { + e.printStackTrace(); + dataSourceTransactionManager.rollback(transactionStatus); + } + } + + + public void updateStudentWithThreads(List list) { + // 线程数量 + final Integer threadCount = 15; + + //每个线程处理的数据量 + final Integer dataPartionLength = (list.size() + threadCount - 1) / threadCount; + // 创建多线程处理任务 + ExecutorService studentThreadPool = Executors.newFixedThreadPool(threadCount); + CountDownLatch threadLatchs = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; i++) { + // 每个线程处理的数据 + List threadDatas = list.stream() + .skip(i * dataPartionLength).limit(dataPartionLength).collect(Collectors.toList()); + studentThreadPool.execute(() -> { + addBatch(threadDatas, threadLatchs); + }); + } + try { + // 倒计时锁设置超时时间 30s + threadLatchs.await(30, TimeUnit.SECONDS); + } catch (Throwable e) { + e.printStackTrace(); + } + + System.out.println("主线程完成"); + } } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/GaDemographicServiceImpl.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/GaDemographicServiceImpl.java index 01db7f1..4d255f8 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/GaDemographicServiceImpl.java +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/GaDemographicServiceImpl.java @@ -1,15 +1,20 @@ package org.jeecg.modules.system.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.system.entity.Family; import org.jeecg.modules.system.entity.GaDemographic; import org.jeecg.modules.system.mapper.GaDemographicMapper; import org.jeecg.modules.system.service.IGaDemographicService; +import org.jeecg.modules.system.util.IDNumberUtil; import org.jeecg.modules.system.vo.FamilyVo; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.Set; /** * @Description: ga_demographic @@ -34,9 +39,47 @@ public class GaDemographicServiceImpl extends ServiceImpl getIdentityS() { + public Map getIdentityS() { + Set identitys=gaDemographicMapper.getIdentityS(); + Map map=new HashMap<>(); + if(oConvertUtils.isNotEmpty(identitys)){ + identitys.parallelStream().forEach(g -> { + if(oConvertUtils.isNotEmpty(g) && IDNumberUtil.checkID(g) && IDNumberUtil.countAge(g)<18){ + map.put(g,g); + } + }); + } + return map; + } + + @Override + public Set getIdStrs() { return gaDemographicMapper.getIdentityS(); } + @Override + public List getFamilyByHouseholdNum(String householdNum) { + return gaDemographicMapper.getFamilyByHouseholdNum(householdNum); + } + + @Override + public Map queryHouseholdPageList(Integer queryNum, Integer pageSize) { + List families=gaDemographicMapper.queryHouseholdPageList(queryNum,queryNum); + Map map=new HashMap<>(); + if(oConvertUtils.isNotEmpty(families)){ + families.parallelStream().forEach(f -> { + if(oConvertUtils.isNotEmpty(f) && oConvertUtils.isNotEmpty(f.getIdentity())){ + map.put(f.getIdentity(),f); + } + }); + } + return map; + } + + @Override + public Set queryDemographicPageList(Integer queryNum, Integer pageSize) { + return gaDemographicMapper.queryDemographicPageList(queryNum,queryNum); + } + } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/GaHouseholdServiceImpl.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/GaHouseholdServiceImpl.java index a9ead20..8ba4438 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/GaHouseholdServiceImpl.java +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/GaHouseholdServiceImpl.java @@ -1,18 +1,47 @@ package org.jeecg.modules.system.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.sun.org.apache.xml.internal.resolver.readers.OASISXMLCatalogReader; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.system.entity.Family; import org.jeecg.modules.system.entity.GaHousehold; +import org.jeecg.modules.system.mapper.GaDemographicMapper; import org.jeecg.modules.system.mapper.GaHouseholdMapper; import org.jeecg.modules.system.service.IGaHouseholdService; +import org.jeecg.modules.system.util.IDNumberUtil; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * @Description: ga_household * @Author: jeecg-boot - * @Date: 2022-07-14 + * @Date: 2022-07-14 * @Version: V1.0 */ @Service public class GaHouseholdServiceImpl extends ServiceImpl implements IGaHouseholdService { + @Resource + private GaHouseholdMapper gaHouseholdMapper; + @Override + public Map getGaHouseholds(Map gaDemographics) { + Map familyMap = new HashMap<>(); + try { + List families = gaHouseholdMapper.getGaHouseholds(); + if (oConvertUtils.isNotEmpty(families)) { + families.parallelStream().forEach(g -> { + if (oConvertUtils.isNotEmpty(g) && oConvertUtils.isNotEmpty(g.getIdentity())) { + familyMap.put(g.getIdentity(), g); + } + }); + } + } catch (Exception e) { + e.printStackTrace(); + } + return familyMap; + } } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/GaPunishServiceImpl.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/GaPunishServiceImpl.java index 4db07c1..4336f2d 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/GaPunishServiceImpl.java +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/GaPunishServiceImpl.java @@ -1,6 +1,7 @@ package org.jeecg.modules.system.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.system.entity.GaPunish; import org.jeecg.modules.system.mapper.GaDemographicMapper; import org.jeecg.modules.system.mapper.GaPunishMapper; @@ -9,7 +10,9 @@ import org.jeecg.modules.system.vo.GaPunishVo; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * @Description: ga_punish @@ -27,8 +30,17 @@ public class GaPunishServiceImpl extends ServiceImpl i * @return */ @Override - public List queryList() { - return gaPunishMapper.queryList(); + public Map queryAll() { + Map punishVoMap=new HashMap<>(); + List gaPunishVos= gaPunishMapper.queryAll(); + if(oConvertUtils.isNotEmpty(gaPunishVos)){ + gaPunishVos.parallelStream().forEach(g -> { + if(oConvertUtils.isNotEmpty(g) && oConvertUtils.isNotEmpty(g.getDxsfzh())){ + punishVoMap.put(g.getDxsfzh(),g); + } + }); + } + return punishVoMap; } } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/HighSchoolServiceImpl.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/HighSchoolServiceImpl.java index 200d3df..0818d15 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/HighSchoolServiceImpl.java +++ b/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; import javax.annotation.Resource; import java.util.List; +import java.util.Set; /** * @Description: mr_high_school @@ -28,4 +29,11 @@ public class HighSchoolServiceImpl extends ServiceImpl getList() { return highSchoolMapper.getList(); } + + @Override + public Set getIdentityS() { + return highSchoolMapper.getIdentityS(); + } + + } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MinorServiceImpl.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MinorServiceImpl.java index 88bc7a1..882cd7f 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MinorServiceImpl.java +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MinorServiceImpl.java @@ -1,18 +1,30 @@ package org.jeecg.modules.system.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import javassist.bytecode.analysis.Executor; import org.jeecg.modules.system.entity.Family; import org.jeecg.modules.system.entity.Minor; +import org.jeecg.modules.system.entity.SysDepart; import org.jeecg.modules.system.mapper.FamilyMapper; import org.jeecg.modules.system.mapper.MinorMapper; import org.jeecg.modules.system.service.IMinorService; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.stereotype.Service; +import org.springframework.transaction.TransactionDefinition; +import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.io.Serializable; +import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Random; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; /** * @Description: 未成年人 @@ -27,17 +39,47 @@ public class MinorServiceImpl extends ServiceImpl implements private MinorMapper minorMapper; @Resource private FamilyMapper familyMapper; + + + @Resource + private DataSourceTransactionManager dataSourceTransactionManager; + + @Resource + private TransactionDefinition transactionDefinition; + + + //分段大小 + private int splitSize = 100000; @Override @Transactional public void saveMain(Minor minor, List familyList) { minorMapper.insert(minor); if(familyList!=null && familyList.size()>0) { - for(Family entity:familyList) { + //判断家庭成员信息里的数据是否包含未成年人,默认包含 + Boolean falg=true; + //户籍信息去重 + List families= familyList.stream().distinct().collect(Collectors.toList()); + for(Family entity:families) { + if(!entity.getIdentity().equals(minor.getIdentity())) { + falg = false; + } //外键设置 entity.setMinorId(minor.getId()); familyMapper.insert(entity); } + if(!falg){ + Family family=new Family(); + family.setCrime(Family.IS_NOT_CRIME); + family.setMinorId(minor.getId()); + family.setName(minor.getName()); + family.setHouseholdNum(minor.getHouseholdNum()); + family.setIdentity(minor.getIdentity()); + family.setNumber(minor.getNumber()); + family.setGender(minor.getGender()); + family.setAddress(minor.getAddress()); + family.setRelation(minor.getRelation()); + } } } @@ -51,6 +93,8 @@ public class MinorServiceImpl extends ServiceImpl implements //2.子表数据重新插入 if(familyList!=null && familyList.size()>0) { + //户籍信息去重 + List families= familyList.stream().distinct().collect(Collectors.toList()); for(Family entity:familyList) { //外键设置 entity.setMinorId(minor.getId()); @@ -74,5 +118,78 @@ public class MinorServiceImpl extends ServiceImpl implements minorMapper.deleteById(id); } } - + + @Override + public Integer insertBatch(List list,List departs) { + updateStudentWithThreads(list); + return list.size(); + } + + /** + * 将list集合平均分成几等份 + * + * @param num 分的份数 + * @param list 需要分的集合 + */ + private List splitList(List list, Integer num) { + int listSize = list.size(); //list 长度 + List splitLists = new ArrayList<>(); + List stringlist = new ArrayList<>(); + for ( int i = 0; i < listSize; i++ ) { + stringlist.add(list.get(i)); + if ( ((i + 1) % num == 0) || (i + 1 == listSize) ) { + splitLists.add(stringlist); + stringlist = new ArrayList<>(); + } + } + return splitLists; + } + + private void addBatch(List list, CountDownLatch threadLatch){ + TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); + System.out.println("子线程:" + Thread.currentThread().getName()); + try { + list.forEach(s -> { + // 更新教师信息 + // String teacher = s.getTeacher(); + String newTeacher = "TNO_" + new Random().nextInt(100); +// s.setTeacher(newTeacher); + minorMapper.insert(s); + }); + dataSourceTransactionManager.commit(transactionStatus); + threadLatch.countDown(); + } catch (Throwable e) { + e.printStackTrace(); + dataSourceTransactionManager.rollback(transactionStatus); + } + } + + + public void updateStudentWithThreads(List list) { + // 线程数量 + final Integer threadCount = 15; + + //每个线程处理的数据量 + final Integer dataPartionLength = (list.size() + threadCount - 1) / threadCount; + // 创建多线程处理任务 + ExecutorService studentThreadPool = Executors.newFixedThreadPool(threadCount); + CountDownLatch threadLatchs = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; i++) { + // 每个线程处理的数据 + List threadDatas = list.stream() + .skip(i * dataPartionLength).limit(dataPartionLength).collect(Collectors.toList()); + studentThreadPool.execute(() -> { + addBatch(threadDatas, threadLatchs); + }); + } + try { + // 倒计时锁设置超时时间 30s + threadLatchs.await(30, TimeUnit.SECONDS); + } catch (Throwable e) { + e.printStackTrace(); + } + + System.out.println("主线程完成"); + } } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MrSchoolServiceImpl.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MrSchoolServiceImpl.java index d140061..3cad3d8 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MrSchoolServiceImpl.java +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MrSchoolServiceImpl.java @@ -1,11 +1,26 @@ package org.jeecg.modules.system.service.impl; +import org.jeecg.modules.system.entity.Minor; import org.jeecg.modules.system.entity.MrSchool; +import org.jeecg.modules.system.entity.SysDepart; import org.jeecg.modules.system.mapper.MrSchoolMapper; import org.jeecg.modules.system.service.IMrSchoolService; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.transaction.TransactionDefinition; +import org.springframework.transaction.TransactionStatus; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; /** * @Description: 学校 @@ -16,4 +31,88 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @Service public class MrSchoolServiceImpl extends ServiceImpl implements IMrSchoolService { + @Resource + private MrSchoolMapper schoolMapper; + @Resource + private DataSourceTransactionManager dataSourceTransactionManager; + + @Resource + private TransactionDefinition transactionDefinition; + + //分段大小 + private int splitSize = 100000; + + @Override + public Integer insertBatch(List list,List departs) { + updateStudentWithThreads(list); + return list.size(); + } + + /** + * 将list集合平均分成几等份 + * + * @param num 分的份数 + * @param list 需要分的集合 + */ + private List splitList(List list, Integer num) { + int listSize = list.size(); //list 长度 + List splitLists = new ArrayList<>(); + List stringlist = new ArrayList<>(); + for ( int i = 0; i < listSize; i++ ) { + stringlist.add(list.get(i)); + if ( ((i + 1) % num == 0) || (i + 1 == listSize) ) { + splitLists.add(stringlist); + stringlist = new ArrayList<>(); + } + } + return splitLists; + } + + private void addBatch(List list, CountDownLatch threadLatch){ + TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); + System.out.println("子线程:" + Thread.currentThread().getName()); + try { + list.forEach(s -> { + // 更新教师信息 + // String teacher = s.getTeacher(); + String newTeacher = "TNO_" + new Random().nextInt(100); +// s.setTeacher(newTeacher); + schoolMapper.insert(s); + }); + dataSourceTransactionManager.commit(transactionStatus); + threadLatch.countDown(); + } catch (Throwable e) { + e.printStackTrace(); + dataSourceTransactionManager.rollback(transactionStatus); + } + } + + + public void updateStudentWithThreads(List list) { + // 线程数量 + final Integer threadCount = 15; + + //每个线程处理的数据量 + final Integer dataPartionLength = (list.size() + threadCount - 1) / threadCount; + // 创建多线程处理任务 + ExecutorService studentThreadPool = Executors.newFixedThreadPool(threadCount); + CountDownLatch threadLatchs = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; i++) { + // 每个线程处理的数据 + List threadDatas = list.stream() + .skip(i * dataPartionLength).limit(dataPartionLength).collect(Collectors.toList()); + studentThreadPool.execute(() -> { + addBatch(threadDatas, threadLatchs); + }); + } + try { + // 倒计时锁设置超时时间 30s + threadLatchs.await(30, TimeUnit.SECONDS); + } catch (Throwable e) { + e.printStackTrace(); + } + + System.out.println("主线程完成"); + } } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MzAdoptionServiceImpl.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MzAdoptionServiceImpl.java index 1903c50..e3a42b3 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MzAdoptionServiceImpl.java +++ b/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; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.jeecg.modules.system.entity.MzAdoption; +import org.jeecg.modules.system.mapper.HighSchoolMapper; import org.jeecg.modules.system.mapper.MzAdoptionMapper; import org.jeecg.modules.system.service.IMzAdoptionService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; + /** * @Description: mz_adoption * @Author: jeecg-boot @@ -14,5 +18,11 @@ import org.springframework.stereotype.Service; */ @Service public class MzAdoptionServiceImpl extends ServiceImpl implements IMzAdoptionService { + @Resource + private MzAdoptionMapper adoptionMapper; + @Override + public List getIdentityS() { + return adoptionMapper.getIdentityS(); + } } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MzLeftBehindChildrenServiceImpl.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MzLeftBehindChildrenServiceImpl.java index e6a0278..af4fee0 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MzLeftBehindChildrenServiceImpl.java +++ b/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; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.jeecg.modules.system.entity.MzLeftBehindChildren; +import org.jeecg.modules.system.mapper.MzAdoptionMapper; import org.jeecg.modules.system.mapper.MzLeftBehindChildrenMapper; import org.jeecg.modules.system.service.IMzLeftBehindChildrenService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; + /** * @Description: mz_left_behind_children * @Author: jeecg-boot @@ -15,4 +19,11 @@ import org.springframework.stereotype.Service; @Service public class MzLeftBehindChildrenServiceImpl extends ServiceImpl implements IMzLeftBehindChildrenService { + @Resource + private MzLeftBehindChildrenMapper leftBehindChildrenMapper; + + @Override + public List getIdentityS() { + return leftBehindChildrenMapper.getIdentityS(); + } } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MzOrphanServiceImpl.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MzOrphanServiceImpl.java index 7e83fa8..72d84a8 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MzOrphanServiceImpl.java +++ b/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; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.jeecg.modules.system.entity.MzOrphan; +import org.jeecg.modules.system.mapper.MzLeftBehindChildrenMapper; import org.jeecg.modules.system.mapper.MzOrphanMapper; import org.jeecg.modules.system.service.IMzOrphanService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; + /** * @Description: mz_orphan * @Author: jeecg-boot @@ -15,4 +19,11 @@ import org.springframework.stereotype.Service; @Service public class MzOrphanServiceImpl extends ServiceImpl implements IMzOrphanService { + @Resource + private MzOrphanMapper orphanMapper; + + @Override + public List getIdentityS() { + return orphanMapper.getIdentityS(); + } } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MzUnsupportedServiceImpl.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MzUnsupportedServiceImpl.java index d092a08..c36de5f 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MzUnsupportedServiceImpl.java +++ b/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; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.jeecg.modules.system.entity.MzUnsupported; +import org.jeecg.modules.system.mapper.MzOrphanMapper; import org.jeecg.modules.system.mapper.MzUnsupportedMapper; import org.jeecg.modules.system.service.IMzUnsupportedService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; + /** * @Description: mz_unsupported * @Author: jeecg-boot @@ -15,4 +19,11 @@ import org.springframework.stereotype.Service; @Service public class MzUnsupportedServiceImpl extends ServiceImpl implements IMzUnsupportedService { + @Resource + private MzUnsupportedMapper unsupportedMapper; + + @Override + public List getIdentityS() { + return unsupportedMapper.getIdentityS(); + } } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/PrimarySchoolServiceImpl.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/PrimarySchoolServiceImpl.java index f7ebd73..d7ddb5c 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/PrimarySchoolServiceImpl.java +++ b/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; import javax.annotation.Resource; import java.util.List; +import java.util.Set; /** * @Description: mr_primary_school @@ -21,10 +22,15 @@ import java.util.List; @Service public class PrimarySchoolServiceImpl extends ServiceImpl implements IPrimarySchoolService { @Resource - private HighSchoolMapper highSchoolMapper; + private PrimarySchoolMapper primarySchoolMapper; @Override public List getList() { - return highSchoolMapper.getList(); + return primarySchoolMapper.getList(); + } + + @Override + public Set getIdentityS() { + return primarySchoolMapper.getIdentityS(); } } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java index 505930c..0648e26 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java +++ b/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 querySysDeparts() { + return this.baseMapper.querySysDeparts(); + } + + /** * 根据关键字筛选部门信息 * @param keyWord * @return diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/IDNumberUtil.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/IDNumberUtil.java index 3e2f916..decc7a6 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/IDNumberUtil.java +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/IDNumberUtil.java @@ -22,26 +22,32 @@ public class IDNumberUtil { * @return */ public static String judgeGender(String idNumber) throws IllegalArgumentException{ - System.out.println(idNumber.length()); - if(idNumber.length() != 18 && idNumber.length() != 15){ - throw new IllegalArgumentException("身份证号长度错误"); - } - int gender = 0; - if(idNumber.length() == 18){ - //如果身份证号18位,取身份证号倒数第二位 - char c = idNumber.charAt(idNumber.length() - 2); - gender = Integer.parseInt(String.valueOf(c)); - }else{ - //如果身份证号15位,取身份证号最后一位 - char c = idNumber.charAt(idNumber.length() - 1); - gender = Integer.parseInt(String.valueOf(c)); + String genderStr="1"; + try { +// System.out.println(idNumber.length()); + if(checkID(idNumber)) { + int gender = 1; + if(idNumber.length() == 18){ + //如果身份证号18位,取身份证号倒数第二位 + char c = idNumber.charAt(idNumber.length() - 2); + gender = Integer.parseInt(String.valueOf(c)); + }else{ + //如果身份证号15位,取身份证号最后一位 + char c = idNumber.charAt(idNumber.length() - 1); + gender = Integer.parseInt(String.valueOf(c)); + } +// System.out.println("gender = " + gender); + if(gender % 2 == 1){ + genderStr= "1"; + }else{ + genderStr= "2"; + } } - System.out.println("gender = " + gender); - if(gender % 2 == 1){ - return "男"; - }else{ - return "女"; + } catch (Exception e) { + e.printStackTrace(); } + + return genderStr; } /** * 根据身份证的号码算出当前身份证持有者的年龄 @@ -49,43 +55,85 @@ public class IDNumberUtil { * @return */ public static int countAge(String idNumber) { - if(idNumber.length() != 18 && idNumber.length() != 15){ - throw new IllegalArgumentException("身份证号长度错误"); - } - String year; - String yue; - String day; - if(idNumber.length() == 18){ - year = idNumber.substring(6).substring(0, 4);// 得到年份 - yue = idNumber.substring(10).substring(0, 2);// 得到月份 - day = idNumber.substring(12).substring(0,2);//得到日 - }else{ - year = "19" + idNumber.substring(6, 8);// 年份 - yue = idNumber.substring(8, 10);// 月份 - day = idNumber.substring(10, 12);//日 - } - Date date = new Date();// 得到当前的系统时间 - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); - String fyear = format.format(date).substring(0, 4);// 当前年份 - String fyue = format.format(date).substring(5, 7);// 月份 - String fday=format.format(date).substring(8,10);// int age = 0; - if(Integer.parseInt(yue) == Integer.parseInt(fyue)){//如果月份相同 - if(Integer.parseInt(day) <= Integer.parseInt(fday)){//说明已经过了生日或者今天是生日 - age = Integer.parseInt(fyear) - Integer.parseInt(year); + String genderStr="1"; + try { + if(checkID(idNumber)) { + String year; + String yue; + String day; + if(idNumber.length() == 18){ + year = idNumber.substring(6).substring(0, 4);// 得到年份 + yue = idNumber.substring(10).substring(0, 2);// 得到月份 + day = idNumber.substring(12).substring(0,2);//得到日 + }else{ + year = "19" + idNumber.substring(6, 8);// 年份 + yue = idNumber.substring(8, 10);// 月份 + day = idNumber.substring(10, 12);//日 } - }else{ + Date date = new Date();// 得到当前的系统时间 + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + String fyear = format.format(date).substring(0, 4);// 当前年份 + String fyue = format.format(date).substring(5, 7);// 月份 + String fday=format.format(date).substring(8,10);// - if(Integer.parseInt(yue) < Integer.parseInt(fyue)){ - //如果当前月份大于出生月份 - age = Integer.parseInt(fyear) - Integer.parseInt(year); + if(Integer.parseInt(yue) == Integer.parseInt(fyue)){//如果月份相同 + if(Integer.parseInt(day) <= Integer.parseInt(fday)){//说明已经过了生日或者今天是生日 + age = Integer.parseInt(fyear) - Integer.parseInt(year); + } }else{ - //如果当前月份小于出生月份,说明生日还没过 - age = Integer.parseInt(fyear) - Integer.parseInt(year) - 1; + + if(Integer.parseInt(yue) < Integer.parseInt(fyue)){ + //如果当前月份大于出生月份 + age = Integer.parseInt(fyear) - Integer.parseInt(year); + }else{ + //如果当前月份小于出生月份,说明生日还没过 + age = Integer.parseInt(fyear) - Integer.parseInt(year) - 1; + } } } - System.out.println("age = " + age); + +// System.out.println("出生年月 = " + year+yue+day); +// System.out.println("age = " + age); + } catch (Exception e) { + e.printStackTrace(); + } return age; } + public static boolean checkID(String s) { + //空参判断,保证程序健壮性 + if (s == null) { + return false; + } + //判断长度 + if (s.length() != 18 && s.length() != 15) { + return false; + } + //public boolean startsWith​(String prefix) + //测试此字符串是否以指定的前缀开头。 + if (s.startsWith("0")) { + return false; + } + //遍历字符串 + for (int i = 0; i < s.length(); i++) { + //获取遍历字符 + char ch = s.charAt(i); + //最后一位的校验 + if (i == s.length() - 1) { + //优化程序,改变逻辑判断 + if (ch < '0' || ch > '9' && ch != 'X') { + return false; + } + } else {//其他位的校验 + if (ch < '0' || ch > '9') { + return false; + } + } + } + //以上都不符合,返回true + return true; + } + + } diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/TaskThreadQuery.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/TaskThreadQuery.java new file mode 100644 index 0000000..5caa783 --- /dev/null +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/TaskThreadQuery.java @@ -0,0 +1,33 @@ +package org.jeecg.modules.system.util; + +import org.jeecg.modules.system.entity.Family; +import org.jeecg.modules.system.service.IGaDemographicService; + +import javax.annotation.Resource; +import java.util.List; +import java.util.concurrent.Callable; + +public class TaskThreadQuery implements Callable> { + + @Resource + private IGaDemographicService gaDemographicService; + + + private int offset; + private int rows; + + public TaskThreadQuery(IGaDemographicService gaDemographicService,int offset,int rows){ + this.gaDemographicService = gaDemographicService; + this.offset = offset; + this.rows = rows; + } + + @Override + public List call() throws Exception { + List list = gaDemographicService.queryPageList(offset,rows); + if (list != null && list.size() > 0){ + return list; + } + return null; + } +} \ No newline at end of file diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/MinorPage.java b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/MinorPage.java index 808fd05..9453c55 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/MinorPage.java +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/MinorPage.java @@ -46,62 +46,69 @@ public class MinorPage { @ApiModelProperty(value = "所属部门") @Dict(dictTable ="sys_depart",dicText = "depart_name",dicCode = "id") private String sysOrgCode; + /**户号*/ + @Excel(name = "户号", width = 25,needMerge=true) + @ApiModelProperty(value = "户号") + private String householdNum; + /**人员编号*/ + @Excel(name = "人员编号", width = 25,needMerge=true) + @ApiModelProperty(value = "人员编号") + private String number; /**姓名*/ - @Excel(name = "姓名", width = 15) + @Excel(name = "姓名", width = 15,needMerge=true) @ApiModelProperty(value = "姓名") private String name; /**性别*/ - @Excel(name = "性别", width = 15,dicCode = "sex") + @Excel(name = "性别", width = 15,dicCode = "sex",needMerge=true) @ApiModelProperty(value = "性别") @Dict(dicCode = "sex") private Integer gender; + /**身份证号*/ + @Excel(name = "身份证号", width = 20,needMerge=true) + @ApiModelProperty(value = "身份证号") + private String identity; /**家庭住址*/ - @Excel(name = "家庭住址", width = 15) + @Excel(name = "家庭住址", width = 20,needMerge=true) @ApiModelProperty(value = "家庭住址") private String address; - /**身份证号*/ - @Excel(name = "身份证号", width = 15) - @ApiModelProperty(value = "身份证号") - private String identity; - /**重点关注原因*/ - @Excel(name = "重点关注原因", width = 15) - @ApiModelProperty(value = "重点关注原因") - private String reason; - /**备注*/ - @Excel(name = "备注", width = 15) - @ApiModelProperty(value = "备注") - private String remark; - /** * 监护人 */ - @Excel(name = "监护人", width = 15) + @Excel(name = "监护人", width = 15,needMerge=true) @ApiModelProperty(value = "监护人") private String guardian; - /**是否失学*/ - @Excel(name = "是否失学", width = 15,dicCode = "school_status") - @ApiModelProperty(value = "是否失学") - @Dict(dicCode = "school_status") - private Integer school; - /** * 监护人关系 */ - @Excel(name = "监护人关系", width = 15) + @Excel(name = "监护人关系", width = 15,needMerge=true) @ApiModelProperty(value = "监护人关系") private String relation; - - /**人员编号*/ - @Excel(name = "人员编号", width = 15) - @ApiModelProperty(value = "人员编号") - private String number; - - /**户号*/ - @Excel(name = "户号", width = 15) - @ApiModelProperty(value = "户号") - private String householdNum; - + /**是否失学*/ + @Excel(name = "是否失学", width = 10,dicCode = "school_status",needMerge=true) + @ApiModelProperty(value = "是否失学") + @Dict(dicCode = "school_status") + private Integer school; + /**学校名称*/ + @Excel(name = "学校名称", width = 15,needMerge=true) + @ApiModelProperty(value = "学校名称") + private String schoolName; + @Excel(name = "入学年份", width = 15) + @ApiModelProperty(value = "入学年份") + private String startYear; + /**重点关注原因*/ + @Excel(name = "重点关注原因", width = 15,dicCode = "attention_reason") + @ApiModelProperty(value = "重点关注原因") + @Dict(dicCode = "attention_reason") + private Integer reason; + /**特殊原因*/ + @Excel(name = "特殊原因", width = 15) + @ApiModelProperty(value = "特殊原因") + private String specialReason; + /**备注*/ + @Excel(name = "备注", width = 25,needMerge=true) + @ApiModelProperty(value = "备注") + private String remark; @ExcelCollection(name="家庭成员表") @ApiModelProperty(value = "家庭成员表") private List familyList; diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml index fb18ce1..37df637 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml @@ -131,11 +131,11 @@ spring: connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 datasource: master: - url: jdbc:mysql://192.168.1.201:3306/mx-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai + url: jdbc:mysql://192.168.1.201:3306/juvenile-prosecution?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai username: root password: mx123456 driver-class-name: com.mysql.cj.jdbc.Driver - # 多数据源配置 + # 多数据源配置juvenile-prosecution #multi-datasource1: #url: jdbc:mysql://localhost:3306/jeecg-boot2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai #username: root @@ -167,7 +167,7 @@ mybatis-plus: table-underline: true configuration: # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用 - #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl +# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 返回类型为Map,显示null对应的字段 call-setters-on-nulls: true #jeecg专用配置 diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/application-dev.yml b/juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/application-dev.yml index fb18ce1..37df637 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/application-dev.yml +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/application-dev.yml @@ -131,11 +131,11 @@ spring: connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 datasource: master: - url: jdbc:mysql://192.168.1.201:3306/mx-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai + url: jdbc:mysql://192.168.1.201:3306/juvenile-prosecution?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai username: root password: mx123456 driver-class-name: com.mysql.cj.jdbc.Driver - # 多数据源配置 + # 多数据源配置juvenile-prosecution #multi-datasource1: #url: jdbc:mysql://localhost:3306/jeecg-boot2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai #username: root @@ -167,7 +167,7 @@ mybatis-plus: table-underline: true configuration: # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用 - #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl +# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 返回类型为Map,显示null对应的字段 call-setters-on-nulls: true #jeecg专用配置 diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/org/jeecg/modules/system/mapper/SysDepartMapper.class b/juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/org/jeecg/modules/system/mapper/SysDepartMapper.class index 98beaf6..eeb4660 100644 Binary files a/juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/org/jeecg/modules/system/mapper/SysDepartMapper.class and b/juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/org/jeecg/modules/system/mapper/SysDepartMapper.class differ diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/org/jeecg/modules/system/mapper/xml/SysDepartMapper.xml b/juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/org/jeecg/modules/system/mapper/xml/SysDepartMapper.xml index 70fc9aa..a5f3171 100644 --- a/juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/org/jeecg/modules/system/mapper/xml/SysDepartMapper.xml +++ b/juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/org/jeecg/modules/system/mapper/xml/SysDepartMapper.xml @@ -51,4 +51,8 @@ + + \ No newline at end of file diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/org/jeecg/modules/system/service/ISysDepartService.class b/juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/org/jeecg/modules/system/service/ISysDepartService.class index 7c74353..39d3f9f 100644 Binary files a/juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/org/jeecg/modules/system/service/ISysDepartService.class and b/juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/org/jeecg/modules/system/service/ISysDepartService.class differ diff --git a/juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.class b/juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.class index 3a995e8..6c0d874 100644 Binary files a/juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.class and b/juvenile-prosecution-boot/jeecg-boot-module-system/target/classes/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.class differ diff --git a/juvenile-prosecution-vue/src/utils/util.js b/juvenile-prosecution-vue/src/utils/util.js index 60b92f9..acff7bd 100644 --- a/juvenile-prosecution-vue/src/utils/util.js +++ b/juvenile-prosecution-vue/src/utils/util.js @@ -568,6 +568,7 @@ export function removeArrayElement(array, prod, value) { * @constructor */ export function GetAge(identityCard) { + console.log(identityCard) var len = (identityCard + "").length; if (len == 0) { return 0; @@ -589,6 +590,8 @@ export function GetAge(identityCard) { var birthDate = new Date(strBirthday); var nowDateTime = new Date(); var age = nowDateTime.getFullYear() - birthDate.getFullYear(); + console.log(nowDateTime.getFullYear()) + console.log(birthDate.getFullYear()) //再考虑月、天的因素;.getMonth()获取的是从0开始的,这里进行比较,不需要加1 if (nowDateTime.getMonth() < birthDate.getMonth() || (nowDateTime.getMonth() == birthDate.getMonth() && nowDateTime.getDate() < birthDate.getDate())) { age--; diff --git a/juvenile-prosecution-vue/src/views/business/MinorList.vue b/juvenile-prosecution-vue/src/views/business/MinorList.vue index 46ddbc2..cf0ea16 100644 --- a/juvenile-prosecution-vue/src/views/business/MinorList.vue +++ b/juvenile-prosecution-vue/src/views/business/MinorList.vue @@ -17,16 +17,22 @@ - 新增 - 导出 - + 新增 + 模板导出 + 导入 - 删除 + + + 删除 + - 批量操作 + 批量操作 + + @@ -34,7 +40,8 @@
@@ -51,179 +58,295 @@ :loading="loading" :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" @change="handleTableChange"> - - - - - + + + 编辑 - - - 更多 - - - 详情 - - - - 删除 - - - - + 查看 -
- + + + + + {{ info.householdNum }} + {{ info.number }} + {{ info.name }} + {{ info.gender_dictText }} + {{ getAgeByIdentity(info.identity) }} + {{ info.identity }} + {{ info.address }} + {{ info.school_dictText }} + {{ info.schoolName }} + {{ info.guardian }} + {{ info.relation }} + {{ info.reason_dictText }} + {{ info.remark }} + + + + + + + + + + + + \ No newline at end of file diff --git a/juvenile-prosecution-vue/src/views/business/SourceList.vue b/juvenile-prosecution-vue/src/views/business/SourceList.vue index 08c07e7..d3627cd 100644 --- a/juvenile-prosecution-vue/src/views/business/SourceList.vue +++ b/juvenile-prosecution-vue/src/views/business/SourceList.vue @@ -1,12 +1,12 @@