Commit 9c110e9a8f19a1b3fc4809bd38539d80ef56794c

Authored by wxy
1 parent ebeb57f1

未检人员列表、详情、新增、编辑

Showing 20 changed files with 1050 additions and 440 deletions
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/AnalyzeController.java
@@ -13,6 +13,7 @@ import org.jeecg.common.util.oConvertUtils; @@ -13,6 +13,7 @@ import org.jeecg.common.util.oConvertUtils;
13 import org.jeecg.modules.system.entity.*; 13 import org.jeecg.modules.system.entity.*;
14 import org.jeecg.modules.system.service.*; 14 import org.jeecg.modules.system.service.*;
15 import org.jeecg.modules.system.util.IDNumberUtil; 15 import org.jeecg.modules.system.util.IDNumberUtil;
  16 +import org.jeecg.modules.system.util.getRandomId;
16 import org.jeecg.modules.system.vo.GaPunishVo; 17 import org.jeecg.modules.system.vo.GaPunishVo;
17 import org.jeecg.modules.system.vo.SpecialStudentVo; 18 import org.jeecg.modules.system.vo.SpecialStudentVo;
18 import org.springframework.web.bind.annotation.*; 19 import org.springframework.web.bind.annotation.*;
@@ -69,12 +70,13 @@ public class AnalyzeController extends JeecgController<GaDemographic, IGaDemogra @@ -69,12 +70,13 @@ public class AnalyzeController extends JeecgController<GaDemographic, IGaDemogra
69 @Resource 70 @Resource
70 private ISysDictService dictService; 71 private ISysDictService dictService;
71 72
72 - private final List<Family> resultFamily = new ArrayList<>();//分析后家庭的数据 73 +// private final List<Family> resultFamily = new ArrayList<>();//分析后家庭的数据
73 private final List<Minor> resultMinor = new ArrayList<>();//分析后未成年人的信息 74 private final List<Minor> resultMinor = new ArrayList<>();//分析后未成年人的信息
74 private final List<MrSchool> resultSchools = new ArrayList<>();//分析后学籍的信息 75 private final List<MrSchool> resultSchools = new ArrayList<>();//分析后学籍的信息
  76 + private final Set<String> testIdCards = new HashSet<>();//存储户号
75 private static final int corePoolSize = Runtime.getRuntime().availableProcessors(); 77 private static final int corePoolSize = Runtime.getRuntime().availableProcessors();
76 private static final ThreadPoolExecutor executor = new ThreadPoolExecutor(corePoolSize, corePoolSize + 1, 10L, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(1000)); 78 private static final ThreadPoolExecutor executor = new ThreadPoolExecutor(corePoolSize, corePoolSize + 1, 10L, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(1000));
77 - 79 + private Integer random_number=000000;
78 80
79 @AutoLog(value = "来源数据管理-分页列表查询") 81 @AutoLog(value = "来源数据管理-分页列表查询")
80 @ApiOperation(value = "来源数据管理-分页列表查询", notes = "来源数据管理-分页列表查询") 82 @ApiOperation(value = "来源数据管理-分页列表查询", notes = "来源数据管理-分页列表查询")
@@ -86,14 +88,14 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra @@ -86,14 +88,14 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra
86 List<SysDepart> departs = sysDepartService.querySysDeparts(); 88 List<SysDepart> departs = sysDepartService.querySysDeparts();
87 getData(departs); 89 getData(departs);
88 System.out.println("开始数据分析" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); 90 System.out.println("开始数据分析" + (System.currentTimeMillis() - startTime) / 1000 + "秒");
89 - System.out.println("家庭成员数据批量新增总条数" + resultFamily.size()); 91 +// System.out.println("家庭成员数据批量新增总条数" + resultFamily.size());
90 System.out.println("未成年人数据批量新增总条数" + resultMinor.size()); 92 System.out.println("未成年人数据批量新增总条数" + resultMinor.size());
91 System.out.println("学籍信息数据批量新增总条数" + resultSchools.size()); 93 System.out.println("学籍信息数据批量新增总条数" + resultSchools.size());
92 long startTime2 = System.currentTimeMillis(); 94 long startTime2 = System.currentTimeMillis();
93 minorService.insertBatch(resultMinor); 95 minorService.insertBatch(resultMinor);
94 System.out.println("未成年人数据批量新增所用时间" + (System.currentTimeMillis() - startTime2) / 1000 + "秒"); 96 System.out.println("未成年人数据批量新增所用时间" + (System.currentTimeMillis() - startTime2) / 1000 + "秒");
95 long startTime1 = System.currentTimeMillis(); 97 long startTime1 = System.currentTimeMillis();
96 - familyService.insertBatch(resultFamily); 98 +// familyService.insertBatch(resultFamily);
97 System.out.println("家庭成员数据批量新增所用时间" + (System.currentTimeMillis() - startTime1) / 1000 + "秒"); 99 System.out.println("家庭成员数据批量新增所用时间" + (System.currentTimeMillis() - startTime1) / 1000 + "秒");
98 long startTime3 = System.currentTimeMillis(); 100 long startTime3 = System.currentTimeMillis();
99 schoolService.insertBatch(resultSchools); 101 schoolService.insertBatch(resultSchools);
@@ -434,62 +436,67 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra @@ -434,62 +436,67 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra
434 long startTime = System.currentTimeMillis(); 436 long startTime = System.currentTimeMillis();
435 try { 437 try {
436 Map<String, Minor> minorMap = new HashMap<>(); 438 Map<String, Minor> minorMap = new HashMap<>();
  439 + Map<String, MrSchool> schools=new HashMap<>();
437 System.out.println("***********************交集总数**********************************************" + intersection.size()); 440 System.out.println("***********************交集总数**********************************************" + intersection.size());
438 System.out.println("***********************人口信息总数**********************************************" + gaHouseholds.size()); 441 System.out.println("***********************人口信息总数**********************************************" + gaHouseholds.size());
439 System.out.println("交集数据里的所属单位开始" + (System.currentTimeMillis() - startTime) / 1000); 442 System.out.println("交集数据里的所属单位开始" + (System.currentTimeMillis() - startTime) / 1000);
  443 + Date creatDate = new Date();
440 if (oConvertUtils.isNotEmpty(intersection) && oConvertUtils.isNotEmpty(departs) && departs.size() > 0) { 444 if (oConvertUtils.isNotEmpty(intersection) && oConvertUtils.isNotEmpty(departs) && departs.size() > 0) {
441 for (SysDepart d : departs) { 445 for (SysDepart d : departs) {
442 intersection.stream().forEach(i -> { 446 intersection.stream().forEach(i -> {
443 - if (oConvertUtils.isNotEmpty(i) && oConvertUtils.isNotEmpty(i.getSchool()) && oConvertUtils.isNotEmpty(d) && oConvertUtils.isNotEmpty(d.getCommonCode())) {  
444 - if (d.getCommonCode().contains(i.getSchool())) {  
445 - i.setSysOrgCode(d.getOrgCode()); 447 + Minor minor = new Minor();
  448 + if (oConvertUtils.isNotEmpty(i) && oConvertUtils.isNotEmpty(i.getIdentity()) && IDNumberUtil.checkID(i.getIdentity())) {
  449 + String idCard=i.getIdentity();
  450 + if(oConvertUtils.isNotEmpty(minorMap) && oConvertUtils.isNotEmpty(minorMap.get(idCard))){
  451 + Minor minMap=minorMap.get(idCard);
  452 + if(oConvertUtils.isNotEmpty(d) && oConvertUtils.isNotEmpty(d.getCommonCode()) && oConvertUtils.isNotEmpty(minMap.getSchoolName())){
  453 + if (d.getCommonCode().contains(minMap.getSchoolName())) {
  454 + minMap.setSysOrgCode(d.getOrgCode());
  455 + i.setSysOrgCode(d.getOrgCode());
  456 + }
  457 + }
  458 + if(oConvertUtils.isNotEmpty(schools) && oConvertUtils.isNotEmpty(schools.get(idCard)) ){
  459 + schools.get(idCard).setSysOrgCode(i.getSysOrgCode());
  460 + }
446 }else { 461 }else {
447 - i.setSysOrgCode(""); 462 + if (oConvertUtils.isNotEmpty(d) && oConvertUtils.isNotEmpty(d.getCommonCode()) && oConvertUtils.isNotEmpty(i.getSchool())) {
  463 + if (d.getCommonCode().contains(i.getSchool())) {
  464 + minor.setSysOrgCode(d.getOrgCode());
  465 + i.setSysOrgCode(d.getOrgCode());
  466 + }
  467 + }
  468 + minor.setSchool(Minor.SCHOOL_STATUS_NO);
  469 + if (oConvertUtils.isNotEmpty(i.getName())) {
  470 + minor.setName(i.getName());
  471 + }
  472 + minor.setGender(Integer.valueOf(IDNumberUtil.judgeGender(i.getIdentity())));
  473 + if (oConvertUtils.isNotEmpty(i.getAddress())) {
  474 + minor.setAddress(i.getAddress());
  475 + }
  476 + if (oConvertUtils.isNotEmpty(i.getSchool())) {
  477 + minor.setSchoolName(i.getSchool());
  478 + }
  479 + if (oConvertUtils.isNotEmpty(i.getAdmissionDate())) {
  480 + minor.setStartYear(i.getAdmissionDate());
  481 + }
  482 + if (oConvertUtils.isNotEmpty(gaHouseholds) && oConvertUtils.isNotEmpty(gaHouseholds.get(i.getIdentity()))) {
  483 + minor.setNumber(gaHouseholds.get(i.getIdentity()).getNumber());
  484 + minor.setHouseholdNum(gaHouseholds.get(i.getIdentity()).getHouseholdNum());
  485 + }
  486 + minor.setIdentity(i.getIdentity());
  487 + minor.setCreateTime(creatDate);
  488 + i.setCreateTime(creatDate);
  489 + minorMap.put(i.getIdentity(), minor);
  490 + schools.put(i.getIdentity(), i);
448 } 491 }
449 - }else {  
450 - i.setSysOrgCode("");  
451 } 492 }
452 }); 493 });
453 } 494 }
454 } 495 }
455 System.out.println("交集数据里的所属单位结束总数"+intersection.size()+"交集数据里的所属单位结束" + (System.currentTimeMillis() - startTime) / 1000); 496 System.out.println("交集数据里的所属单位结束总数"+intersection.size()+"交集数据里的所属单位结束" + (System.currentTimeMillis() - startTime) / 1000);
456 - Date creatDate = new Date();  
457 - if (oConvertUtils.isNotEmpty(intersection)) {  
458 - intersection.stream().forEach(i -> {  
459 - if (oConvertUtils.isNotEmpty(i) && oConvertUtils.isNotEmpty(i.getIdentity()) && IDNumberUtil.checkID(i.getIdentity())) {  
460 - Minor minor = new Minor();  
461 - //身份证号  
462 - String idCard = i.getIdentity();  
463 - if (oConvertUtils.isNotEmpty(gaHouseholds) && oConvertUtils.isNotEmpty(gaHouseholds.get(idCard))) {  
464 - minor.setSchool(Minor.SCHOOL_STATUS_NO);  
465 - minor.setSchoolName(i.getSchool());  
466 - minor.setStartYear(i.getAdmissionDate());  
467 - minor.setNumber(gaHouseholds.get(idCard).getNumber());  
468 - minor.setHouseholdNum(gaHouseholds.get(idCard).getHouseholdNum());  
469 - } else {  
470 - minor.setSchool(Minor.SCHOOL_STATUS_YES);  
471 - }  
472 - if (oConvertUtils.isNotEmpty(i.getName())) {  
473 - minor.setName(i.getName());  
474 - }  
475 - if (oConvertUtils.isNotEmpty(i.getAddress())) {  
476 - minor.setAddress(i.getAddress());  
477 - }  
478 - if (oConvertUtils.isNotEmpty(idCard)) {  
479 - minor.setGender(Integer.parseInt(IDNumberUtil.judgeGender(idCard)));  
480 - }  
481 - minor.setIdentity(idCard);  
482 - minor.setSysOrgCode(i.getSysOrgCode());  
483 - minor.setCreateTime(creatDate);  
484 - i.setCreateTime(creatDate);  
485 - minorMap.put(idCard, minor);  
486 - }  
487 - });  
488 - }  
489 System.out.println("户籍信息里的未成年人的单位" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); 497 System.out.println("户籍信息里的未成年人的单位" + (System.currentTimeMillis() - startTime) / 1000 + "秒");
490 long startTime1 = System.currentTimeMillis(); 498 long startTime1 = System.currentTimeMillis();
491 -// schoolService.insertBatch(intersection);  
492 - resultSchools.addAll(intersection); 499 + resultSchools.addAll(schools.values());
493 System.out.println("人口信息he交集总数总数" + minorMap.size()); 500 System.out.println("人口信息he交集总数总数" + minorMap.size());
494 getSpecialStudent(minorMap, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans,gaHouseholds); 501 getSpecialStudent(minorMap, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans,gaHouseholds);
495 } catch (Exception e) { 502 } catch (Exception e) {
@@ -504,52 +511,68 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra @@ -504,52 +511,68 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra
504 List<String> mzOrphans, Map<String, Family> gaHouseholds) { 511 List<String> mzOrphans, Map<String, Family> gaHouseholds) {
505 try { 512 try {
506 Map<String, Minor> minorMap = new HashMap<>(); 513 Map<String, Minor> minorMap = new HashMap<>();
  514 + Map<String, MrSchool> schools=new HashMap<>();
507 long startTime = System.currentTimeMillis(); 515 long startTime = System.currentTimeMillis();
508 System.out.println("根据差集数据判断所属单位" + difference.size()); 516 System.out.println("根据差集数据判断所属单位" + difference.size());
509 System.out.println("未成年人总数" + difference.size()); 517 System.out.println("未成年人总数" + difference.size());
510 Date creatTime = new Date(); 518 Date creatTime = new Date();
511 - if (oConvertUtils.isNotEmpty(difference) && oConvertUtils.isNotEmpty(departs) && departs.size() > 0) { 519 + if (oConvertUtils.isNotEmpty(difference) && oConvertUtils.isNotEmpty(departs)) {
512 for (SysDepart d : departs) { 520 for (SysDepart d : departs) {
513 difference.stream().forEach(m -> { 521 difference.stream().forEach(m -> {
514 Minor minor = new Minor(); 522 Minor minor = new Minor();
515 if (oConvertUtils.isNotEmpty(m) && oConvertUtils.isNotEmpty(m.getIdentity()) && IDNumberUtil.checkID(m.getIdentity())) { 523 if (oConvertUtils.isNotEmpty(m) && oConvertUtils.isNotEmpty(m.getIdentity()) && IDNumberUtil.checkID(m.getIdentity())) {
516 - if (oConvertUtils.isNotEmpty(d) && oConvertUtils.isNotEmpty(d.getCommonCode()) && oConvertUtils.isNotEmpty(m.getSchool())) {  
517 - if (d.getCommonCode().contains(m.getSchool())) {  
518 - minor.setSysOrgCode(d.getOrgCode());  
519 - m.setSysOrgCode(d.getOrgCode()); 524 + String idCard=m.getIdentity();
  525 + if(oConvertUtils.isNotEmpty(minorMap) && oConvertUtils.isNotEmpty(minorMap.get(idCard))){
  526 + Minor minMap=minorMap.get(idCard);
  527 + if(oConvertUtils.isNotEmpty(d) && oConvertUtils.isNotEmpty(d.getCommonCode()) && oConvertUtils.isNotEmpty(minMap.getSchoolName())){
  528 + if (d.getCommonCode().contains(minMap.getSchoolName())) {
  529 + minMap.setSysOrgCode(d.getOrgCode());
  530 + m.setSysOrgCode(d.getOrgCode());
  531 + }
  532 + }
  533 + if(oConvertUtils.isNotEmpty(schools) && oConvertUtils.isNotEmpty(schools.get(idCard)) ){
  534 + schools.get(idCard).setSysOrgCode(m.getSysOrgCode());
520 } 535 }
  536 + }else {
  537 + if (oConvertUtils.isNotEmpty(d) && oConvertUtils.isNotEmpty(d.getCommonCode()) && oConvertUtils.isNotEmpty(m.getSchool())) {
  538 + if (d.getCommonCode().contains(m.getSchool())) {
  539 + minor.setSysOrgCode(d.getOrgCode());
  540 + m.setSysOrgCode(d.getOrgCode());
  541 + }
  542 + }
  543 + minor.setSchool(Minor.SCHOOL_STATUS_NO);
  544 + if (oConvertUtils.isNotEmpty(m.getName())) {
  545 + minor.setName(m.getName());
  546 + }
  547 + minor.setGender(Integer.valueOf(IDNumberUtil.judgeGender(m.getIdentity())));
  548 + if (oConvertUtils.isNotEmpty(m.getAddress())) {
  549 + minor.setAddress(m.getAddress());
  550 + }
  551 + if (oConvertUtils.isNotEmpty(m.getSchool())) {
  552 + minor.setSchoolName(m.getSchool());
  553 + }
  554 + if (oConvertUtils.isNotEmpty(m.getAdmissionDate())) {
  555 + minor.setStartYear(m.getAdmissionDate());
  556 + }
  557 + if (oConvertUtils.isNotEmpty(gaHouseholds) && oConvertUtils.isNotEmpty(gaHouseholds.get(m.getIdentity()))) {
  558 + minor.setNumber(gaHouseholds.get(m.getIdentity()).getNumber());
  559 + minor.setHouseholdNum(gaHouseholds.get(m.getIdentity()).getHouseholdNum());
  560 + }
  561 + minor.setIdentity(m.getIdentity());
  562 + minor.setCreateTime(creatTime);
  563 + m.setCreateTime(creatTime);
  564 + minorMap.put(m.getIdentity(), minor);
  565 + schools.put(m.getIdentity(), m);
521 } 566 }
522 - minor.setSchool(Minor.SCHOOL_STATUS_NO);  
523 - if (oConvertUtils.isNotEmpty(m.getName())) {  
524 - minor.setName(m.getName());  
525 - }  
526 - minor.setGender(Integer.valueOf(IDNumberUtil.judgeGender(m.getIdentity())));  
527 - if (oConvertUtils.isNotEmpty(m.getAddress())) {  
528 - minor.setAddress(m.getAddress());  
529 - }  
530 - if (oConvertUtils.isNotEmpty(m.getSchool())) {  
531 - minor.setSchoolName(m.getSchool());  
532 - }  
533 - if (oConvertUtils.isNotEmpty(m.getAdmissionDate())) {  
534 - minor.setStartYear(m.getAdmissionDate());  
535 - }  
536 - if (oConvertUtils.isNotEmpty(gaHouseholds) && oConvertUtils.isNotEmpty(gaHouseholds.get(m.getIdentity()))) {  
537 - minor.setNumber(gaHouseholds.get(m.getIdentity()).getNumber());  
538 - minor.setHouseholdNum(gaHouseholds.get(m.getIdentity()).getHouseholdNum());  
539 - }  
540 - minor.setIdentity(m.getIdentity());  
541 - minor.setCreateTime(creatTime);  
542 - m.setCreateTime(creatTime);  
543 - minorMap.put(m.getIdentity(), minor);  
544 - }  
545 567
  568 + }
546 }); 569 });
547 } 570 }
548 } 571 }
549 System.out.println("根据不在人口基础信息里的学生和单位信息判断所属单位" + (System.currentTimeMillis() - startTime) / 1000 + "秒"); 572 System.out.println("根据不在人口基础信息里的学生和单位信息判断所属单位" + (System.currentTimeMillis() - startTime) / 1000 + "秒");
550 long startTime1 = System.currentTimeMillis(); 573 long startTime1 = System.currentTimeMillis();
551 // schoolService.insertBatch(difference); 574 // schoolService.insertBatch(difference);
552 - resultSchools.addAll(difference); 575 + resultSchools.addAll(schools.values());
553 System.out.println("有学籍信息但没有人口基本信息的数据" + minorMap.size()); 576 System.out.println("有学籍信息但没有人口基本信息的数据" + minorMap.size());
554 getSpecialStudent(minorMap, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans,gaHouseholds); 577 getSpecialStudent(minorMap, specialStudentVos, mzUnsupporteds, mzLeftBehinds, mzAdoptions, gaPunishVos, mzOrphans,gaHouseholds);
555 } catch (Exception e) { 578 } catch (Exception e) {
@@ -572,11 +595,9 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra @@ -572,11 +595,9 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra
572 if (oConvertUtils.isNotEmpty(specialStudentVos) && oConvertUtils.isNotEmpty(minors)) { 595 if (oConvertUtils.isNotEmpty(specialStudentVos) && oConvertUtils.isNotEmpty(minors)) {
573 for (SpecialStudentVo s : specialStudentVos) { 596 for (SpecialStudentVo s : specialStudentVos) {
574 if (oConvertUtils.isNotEmpty(s.getIdentity()) && oConvertUtils.isNotEmpty(minors.get(s.getIdentity()))) { 597 if (oConvertUtils.isNotEmpty(s.getIdentity()) && oConvertUtils.isNotEmpty(minors.get(s.getIdentity()))) {
575 -// if (minors.get(s.getIdentity()).getIdentity().equals(s.getIdentity())) {  
576 - minors.get(s.getIdentity()).setSpecialReason(s.getReason());  
577 - minors.get(s.getIdentity()).setRemark(s.getRemark());  
578 - minors.get(s.getIdentity()).setReason(Minor.ATTENTION_REASON_STUDENT);  
579 -// } 598 + minors.get(s.getIdentity()).setSpecialReason(s.getReason());
  599 + minors.get(s.getIdentity()).setRemark(s.getRemark());
  600 + minors.get(s.getIdentity()).setReason(String.valueOf(Minor.ATTENTION_REASON_STUDENT));
580 } 601 }
581 } 602 }
582 } 603 }
@@ -600,8 +621,12 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra @@ -600,8 +621,12 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra
600 621
601 if (oConvertUtils.isNotEmpty(minors) && oConvertUtils.isNotEmpty(mzUnsupporteds)) { 622 if (oConvertUtils.isNotEmpty(minors) && oConvertUtils.isNotEmpty(mzUnsupporteds)) {
602 for (String s : mzUnsupporteds) { 623 for (String s : mzUnsupporteds) {
603 - if (oConvertUtils.isNotEmpty(s) && oConvertUtils.isNotEmpty(minors.get(s))) {  
604 - minors.get(s).setReason(Minor.ATTENTION_REASON_UNSUPPORTED); 624 + if (oConvertUtils.isNotEmpty(s) && oConvertUtils.isNotEmpty(minors.get(s)) ) {
  625 + if(oConvertUtils.isNotEmpty(minors.get(s).getReason()) && !minors.get(s).getReason().contains(String.valueOf(Minor.ATTENTION_REASON_UNSUPPORTED))){
  626 + minors.get(s).setReason(minors.get(s).getReason()+","+Minor.ATTENTION_REASON_UNSUPPORTED);
  627 + }else {
  628 + minors.get(s).setReason(String.valueOf(Minor.ATTENTION_REASON_UNSUPPORTED));
  629 + }
605 } 630 }
606 } 631 }
607 } 632 }
@@ -624,7 +649,11 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra @@ -624,7 +649,11 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra
624 if (oConvertUtils.isNotEmpty(minors) && oConvertUtils.isNotEmpty(mzAdoptions)) { 649 if (oConvertUtils.isNotEmpty(minors) && oConvertUtils.isNotEmpty(mzAdoptions)) {
625 for (String s : mzAdoptions) { 650 for (String s : mzAdoptions) {
626 if (oConvertUtils.isNotEmpty(s) && oConvertUtils.isNotEmpty(minors.get(s)) ) { 651 if (oConvertUtils.isNotEmpty(s) && oConvertUtils.isNotEmpty(minors.get(s)) ) {
627 - minors.get(s).setReason(Minor.ATTENTION_REASON_UNSUPPORTED); 652 + if(oConvertUtils.isNotEmpty(minors.get(s).getReason()) && !minors.get(s).getReason().contains(String.valueOf(Minor.ATTENTION_REASON_ADOPTION))){
  653 + minors.get(s).setReason(minors.get(s).getReason()+","+Minor.ATTENTION_REASON_ADOPTION);
  654 + }else {
  655 + minors.get(s).setReason(String.valueOf(Minor.ATTENTION_REASON_ADOPTION));
  656 + }
628 } 657 }
629 } 658 }
630 } 659 }
@@ -646,8 +675,12 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra @@ -646,8 +675,12 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra
646 System.out.println("留守儿童"); 675 System.out.println("留守儿童");
647 if (oConvertUtils.isNotEmpty(minors) && oConvertUtils.isNotEmpty(mzLeftBehinds)) { 676 if (oConvertUtils.isNotEmpty(minors) && oConvertUtils.isNotEmpty(mzLeftBehinds)) {
648 for (String s : mzLeftBehinds) { 677 for (String s : mzLeftBehinds) {
649 - if (oConvertUtils.isNotEmpty(s) && oConvertUtils.isNotEmpty(minors.get(s)) ) {  
650 - minors.get(s).setReason(Minor.ATTENTION_REASON_CHILDREN); 678 + if (oConvertUtils.isNotEmpty(s) && oConvertUtils.isNotEmpty(minors.get(s))) {
  679 + if(oConvertUtils.isNotEmpty(minors.get(s).getReason()) && !minors.get(s).getReason().contains(String.valueOf(Minor.ATTENTION_REASON_CHILDREN))){
  680 + minors.get(s).setReason(minors.get(s).getReason()+","+Minor.ATTENTION_REASON_CHILDREN);
  681 + }else {
  682 + minors.get(s).setReason(String.valueOf(Minor.ATTENTION_REASON_CHILDREN));
  683 + }
651 } 684 }
652 } 685 }
653 } 686 }
@@ -670,7 +703,11 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra @@ -670,7 +703,11 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra
670 if (oConvertUtils.isNotEmpty(minors) && oConvertUtils.isNotEmpty(mzOrphans)) { 703 if (oConvertUtils.isNotEmpty(minors) && oConvertUtils.isNotEmpty(mzOrphans)) {
671 for (String s : mzOrphans) { 704 for (String s : mzOrphans) {
672 if (oConvertUtils.isNotEmpty(s) && oConvertUtils.isNotEmpty(minors.get(s)) ) { 705 if (oConvertUtils.isNotEmpty(s) && oConvertUtils.isNotEmpty(minors.get(s)) ) {
673 - minors.get(s).setReason(Minor.ATTENTION_REASON_ORPHAN); 706 + if(oConvertUtils.isNotEmpty(minors.get(s).getReason()) && !minors.get(s).getReason().contains(String.valueOf(Minor.ATTENTION_REASON_ORPHAN))){
  707 + minors.get(s).setReason(minors.get(s).getReason()+","+Minor.ATTENTION_REASON_ORPHAN);
  708 + }else {
  709 + minors.get(s).setReason(String.valueOf(Minor.ATTENTION_REASON_ORPHAN));
  710 + }
674 } 711 }
675 } 712 }
676 } 713 }
@@ -690,22 +727,23 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra @@ -690,22 +727,23 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra
690 public void getFamilyRelationship(Map<String, Minor> minors, Map<String, Family> gaHouseholds, Map<String, GaPunishVo> gaPunishVos) { 727 public void getFamilyRelationship(Map<String, Minor> minors, Map<String, Family> gaHouseholds, Map<String, GaPunishVo> gaPunishVos) {
691 long startTime = System.currentTimeMillis(); 728 long startTime = System.currentTimeMillis();
692 try { 729 try {
693 - List<Family> familys = new ArrayList<>();  
694 - //犯罪人员身份证号-户号关系  
695 - Map<String, String> idCards = new HashMap<>(); 730 +// List<Family> familys = new ArrayList<>();
  731 + //户号-是否犯罪关系
  732 + Map<String, Boolean> idCards = new HashMap<>();
696 //户号-家庭成员关系 733 //户号-家庭成员关系
697 Map<String, List<Family>> familyMaps = new HashMap<>(); 734 Map<String, List<Family>> familyMaps = new HashMap<>();
698 //人员身份证号-与监护人的关系 735 //人员身份证号-与监护人的关系
699 Map<String, String> relations = new HashMap<>(); 736 Map<String, String> relations = new HashMap<>();
700 //户号-与监护人 737 //户号-与监护人
701 Map<String, Family> guardians = new HashMap<>(); 738 Map<String, Family> guardians = new HashMap<>();
  739 + Date createTime = new Date();
702 if (oConvertUtils.isNotEmpty(gaHouseholds)) { 740 if (oConvertUtils.isNotEmpty(gaHouseholds)) {
703 - int i=0; 741 + getRandomId idWorker = new getRandomId(0, 0);
704 for (Map.Entry<String, Family> m : gaHouseholds.entrySet()) { 742 for (Map.Entry<String, Family> m : gaHouseholds.entrySet()) {
  743 + long id = idWorker.nextId();
705 String mapKey = m.getKey(); 744 String mapKey = m.getKey();
706 Family family = m.getValue(); 745 Family family = m.getValue();
707 if (oConvertUtils.isNotEmpty(family)) { 746 if (oConvertUtils.isNotEmpty(family)) {
708 - i=i+1;  
709 if (oConvertUtils.isNotEmpty(gaPunishVos) && oConvertUtils.isNotEmpty(gaPunishVos.get(mapKey))) { 747 if (oConvertUtils.isNotEmpty(gaPunishVos) && oConvertUtils.isNotEmpty(gaPunishVos.get(mapKey))) {
710 family.setCrime(Family.IS_CRIME); 748 family.setCrime(Family.IS_CRIME);
711 if (oConvertUtils.isNotEmpty(gaPunishVos.get(mapKey).getAjmc())) { 749 if (oConvertUtils.isNotEmpty(gaPunishVos.get(mapKey).getAjmc())) {
@@ -717,6 +755,11 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra @@ -717,6 +755,11 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra
717 } else { 755 } else {
718 family.setCrime(Family.IS_NOT_CRIME); 756 family.setCrime(Family.IS_NOT_CRIME);
719 } 757 }
  758 + if(IDNumberUtil.checkID(mapKey)){
  759 + family.setGender(Integer.valueOf(IDNumberUtil.judgeGender(mapKey)));
  760 + }
  761 + family.setId(String.valueOf(id));
  762 + family.setCreateTime(createTime);
720 } 763 }
721 if (oConvertUtils.isNotEmpty(family) && oConvertUtils.isNotEmpty(family.getHouseholdNum()) && oConvertUtils.isNotEmpty(family.getIdentity())) { 764 if (oConvertUtils.isNotEmpty(family) && oConvertUtils.isNotEmpty(family.getHouseholdNum()) && oConvertUtils.isNotEmpty(family.getIdentity())) {
722 String houseNum = family.getHouseholdNum(); 765 String houseNum = family.getHouseholdNum();
@@ -725,22 +768,20 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra @@ -725,22 +768,20 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra
725 relations.put(family.getIdentity(), family.getRelation()); 768 relations.put(family.getIdentity(), family.getRelation());
726 } 769 }
727 if (oConvertUtils.isNotEmpty(familyMaps) && oConvertUtils.isNotEmpty(familyMaps.get(houseNum))) { 770 if (oConvertUtils.isNotEmpty(familyMaps) && oConvertUtils.isNotEmpty(familyMaps.get(houseNum))) {
728 - list.addAll(familyMaps.get(houseNum));  
729 - 771 + familyMaps.get(houseNum).add(family);
730 } else { 772 } else {
731 list.add(family); 773 list.add(family);
  774 + familyMaps.put(houseNum, list);
732 } 775 }
733 if (oConvertUtils.isNotEmpty(family.getCrime()) && family.getCrime().equals(Family.IS_CRIME)) { 776 if (oConvertUtils.isNotEmpty(family.getCrime()) && family.getCrime().equals(Family.IS_CRIME)) {
734 - idCards.put(family.getIdentity(), houseNum); 777 + idCards.put(houseNum,true);
735 } 778 }
736 - if (oConvertUtils.isNotEmpty(family.getName()) && family.getName().contains("户主")) { 779 + if (oConvertUtils.isNotEmpty(family.getRelation()) && family.getRelation().equals("户主")) {
737 guardians.put(houseNum, family); 780 guardians.put(houseNum, family);
738 } 781 }
739 - familyMaps.put(houseNum, list);  
740 } 782 }
741 } 783 }
742 } 784 }
743 -  
744 System.out.println("建立未成年人和家庭成员关系"); 785 System.out.println("建立未成年人和家庭成员关系");
745 getFamilyCrime(minors, idCards, familyMaps, guardians, relations); 786 getFamilyCrime(minors, idCards, familyMaps, guardians, relations);
746 } catch (Exception e) { 787 } catch (Exception e) {
@@ -756,13 +797,15 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra @@ -756,13 +797,15 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra
756 * @param idCards 797 * @param idCards
757 * @param familyMaps 798 * @param familyMaps
758 */ 799 */
759 - public void getFamilyCrime(Map<String, Minor> minors, Map<String, String> idCards, Map<String, List<Family>> familyMaps, Map<String, Family> guardians, Map<String, String> relations) { 800 + public void getFamilyCrime(Map<String, Minor> minors, Map<String, Boolean> idCards, Map<String, List<Family>> familyMaps, Map<String, Family> guardians, Map<String, String> relations) {
760 long startTime = System.currentTimeMillis(); 801 long startTime = System.currentTimeMillis();
761 try { 802 try {
762 LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); 803 LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
763 System.out.println("家庭成员是否犯罪"); 804 System.out.println("家庭成员是否犯罪");
764 List<Minor> minorList = new ArrayList<>(); 805 List<Minor> minorList = new ArrayList<>();
765 - List<Family> familys = new ArrayList<>(); 806 + Set<Family> familys = new HashSet<>();
  807 + //存放已经被放入minor里面的户号,避免数据重复
  808 + Set<String> houseSet=new HashSet<>();
766 Date createTime = new Date(); 809 Date createTime = new Date();
767 if (oConvertUtils.isNotEmpty(minors)) { 810 if (oConvertUtils.isNotEmpty(minors)) {
768 for (Map.Entry<String, Minor> m : minors.entrySet()) { 811 for (Map.Entry<String, Minor> m : minors.entrySet()) {
@@ -772,30 +815,38 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra @@ -772,30 +815,38 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra
772 if (oConvertUtils.isNotEmpty(user) && oConvertUtils.isNotEmpty(user.getId())) { 815 if (oConvertUtils.isNotEmpty(user) && oConvertUtils.isNotEmpty(user.getId())) {
773 minor.setCreateBy(user.getId()); 816 minor.setCreateBy(user.getId());
774 } 817 }
775 - //判断家庭成员是否犯罪  
776 - if (oConvertUtils.isNotEmpty(idCard) && oConvertUtils.isNotEmpty(idCards) && oConvertUtils.isNotEmpty(idCards.get(idCard))) {  
777 - minor.setReason(Minor.ATTENTION_REASON_CRIME);  
778 - } 818 + List<Family> f=new ArrayList<>();
779 //判断是否是一个家庭的人员 819 //判断是否是一个家庭的人员
780 if (oConvertUtils.isNotEmpty(minor.getHouseholdNum())) { 820 if (oConvertUtils.isNotEmpty(minor.getHouseholdNum())) {
781 String houseNum = minor.getHouseholdNum(); 821 String houseNum = minor.getHouseholdNum();
782 - if (oConvertUtils.isNotEmpty(familyMaps) && oConvertUtils.isNotEmpty(familyMaps.get(houseNum))) {  
783 - familys.addAll(familyMaps.get(houseNum)); 822 + if(oConvertUtils.isNotEmpty(familyMaps) && oConvertUtils.isNotEmpty(familyMaps.get(houseNum)) ){
  823 + if(!testIdCards.contains(houseNum) ){
  824 + f.addAll(familyMaps.get(houseNum));
  825 +// resultFamily.addAll(familyMaps.get(houseNum));
  826 + testIdCards.add(houseNum);
  827 + }
  828 + }
  829 + minor.setFamilies(f);
  830 + //获取监护人
  831 + if (oConvertUtils.isNotEmpty(houseNum) && oConvertUtils.isNotEmpty(guardians) && oConvertUtils.isNotEmpty(guardians.get(houseNum))) {
  832 + minor.setGuardian(guardians.get(houseNum).getName());
  833 + }
  834 + //判断家庭成员是否犯罪
  835 + if (oConvertUtils.isNotEmpty(idCard) && oConvertUtils.isNotEmpty(idCards) && oConvertUtils.isNotEmpty(idCards.get(houseNum))) {
  836 + if(oConvertUtils.isNotEmpty(minor.getReason()) && !minor.getReason().contains(String.valueOf(Minor.ATTENTION_REASON_CRIME))){
  837 + minor.setReason(minor.getReason()+","+Minor.ATTENTION_REASON_CRIME);
  838 + }else {
  839 + minor.setReason(String.valueOf(Minor.ATTENTION_REASON_CRIME));
  840 + }
784 } 841 }
785 } 842 }
786 //获取与监护人关系 843 //获取与监护人关系
787 if (oConvertUtils.isNotEmpty(idCard) && oConvertUtils.isNotEmpty(relations) && oConvertUtils.isNotEmpty(relations.get(idCard))) { 844 if (oConvertUtils.isNotEmpty(idCard) && oConvertUtils.isNotEmpty(relations) && oConvertUtils.isNotEmpty(relations.get(idCard))) {
788 minor.setRelation(relations.get(idCard)); 845 minor.setRelation(relations.get(idCard));
789 } 846 }
790 - //获取监护人  
791 - if (oConvertUtils.isNotEmpty(idCard) && oConvertUtils.isNotEmpty(guardians) && oConvertUtils.isNotEmpty(guardians.get(idCard))) {  
792 - minor.setGuardian(guardians.get(idCard).getName());  
793 - }  
794 - minorList.add(minor); 847 + resultMinor.add(minor);
795 } 848 }
796 } 849 }
797 - resultMinor.addAll(minorList);  
798 - resultFamily.addAll(familys);  
799 } catch (Exception e) { 850 } catch (Exception e) {
800 e.printStackTrace(); 851 e.printStackTrace();
801 log.info(String.valueOf(e)); 852 log.info(String.valueOf(e));
@@ -804,5 +855,4 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra @@ -804,5 +855,4 @@ public class AnalyzeController extends JeecgController&lt;GaDemographic, IGaDemogra
804 855
805 } 856 }
806 857
807 -  
808 } 858 }
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/MinorController.java
1 package org.jeecg.modules.system.controller; 1 package org.jeecg.modules.system.controller;
2 2
  3 +import java.io.OutputStream;
3 import java.io.UnsupportedEncodingException; 4 import java.io.UnsupportedEncodingException;
4 import java.io.IOException; 5 import java.io.IOException;
5 import java.net.URLDecoder; 6 import java.net.URLDecoder;
6 -import java.util.ArrayList;  
7 -import java.util.Arrays;  
8 -import java.util.List;  
9 -import java.util.Map; 7 +import java.util.*;
10 import java.util.stream.Collectors; 8 import java.util.stream.Collectors;
11 9
12 import javax.servlet.http.HttpServletRequest; 10 import javax.servlet.http.HttpServletRequest;
13 import javax.servlet.http.HttpServletResponse; 11 import javax.servlet.http.HttpServletResponse;
14 12
  13 +import org.apache.poi.ss.usermodel.Workbook;
15 import org.jeecg.modules.system.entity.Family; 14 import org.jeecg.modules.system.entity.Family;
16 import org.jeecg.modules.system.entity.Minor; 15 import org.jeecg.modules.system.entity.Minor;
  16 +import org.jeecg.modules.system.entity.SysUser;
17 import org.jeecg.modules.system.service.IFamilyService; 17 import org.jeecg.modules.system.service.IFamilyService;
18 import org.jeecg.modules.system.service.IMinorService; 18 import org.jeecg.modules.system.service.IMinorService;
19 import org.jeecg.modules.system.vo.MinorPage; 19 import org.jeecg.modules.system.vo.MinorPage;
  20 +import org.jeecg.modules.system.vo.MinorVo;
  21 +import org.jeecgframework.poi.excel.ExcelExportUtil;
20 import org.jeecgframework.poi.excel.ExcelImportUtil; 22 import org.jeecgframework.poi.excel.ExcelImportUtil;
21 import org.jeecgframework.poi.excel.def.NormalExcelConstants; 23 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
22 import org.jeecgframework.poi.excel.entity.ExportParams; 24 import org.jeecgframework.poi.excel.entity.ExportParams;
23 import org.jeecgframework.poi.excel.entity.ImportParams; 25 import org.jeecgframework.poi.excel.entity.ImportParams;
  26 +import org.jeecgframework.poi.excel.entity.enmus.ExcelType;
24 import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; 27 import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
25 import org.jeecg.common.system.vo.LoginUser; 28 import org.jeecg.common.system.vo.LoginUser;
26 import org.apache.shiro.SecurityUtils; 29 import org.apache.shiro.SecurityUtils;
@@ -42,220 +45,294 @@ import io.swagger.annotations.Api; @@ -42,220 +45,294 @@ import io.swagger.annotations.Api;
42 import io.swagger.annotations.ApiOperation; 45 import io.swagger.annotations.ApiOperation;
43 import org.jeecg.common.aspect.annotation.AutoLog; 46 import org.jeecg.common.aspect.annotation.AutoLog;
44 47
45 - /** 48 +/**
46 * @Description: 未成年人 49 * @Description: 未成年人
47 * @Author: jeecg-boot 50 * @Author: jeecg-boot
48 - * @Date: 2022-07-13 51 + * @Date: 2022-07-13
49 * @Version: V1.0 52 * @Version: V1.0
50 */ 53 */
51 -@Api(tags="未成年人") 54 +@Api(tags = "未成年人")
52 @RestController 55 @RestController
53 @RequestMapping("/sys/minor") 56 @RequestMapping("/sys/minor")
54 @Slf4j 57 @Slf4j
55 public class MinorController { 58 public class MinorController {
56 - @Autowired  
57 - private IMinorService minorService;  
58 - @Autowired  
59 - private IFamilyService familyService;  
60 - 59 + @Autowired
  60 + private IMinorService minorService;
  61 + @Autowired
  62 + private IFamilyService familyService;
  63 +
  64 + /**
  65 + * 分页列表查询
  66 + *
  67 + * @param minor
  68 + * @param pageNo
  69 + * @param pageSize
  70 + * @param req
  71 + * @return
  72 + */
  73 + @AutoLog(value = "未成年人-分页列表查询")
  74 + @ApiOperation(value = "未成年人-分页列表查询", notes = "未成年人-分页列表查询")
  75 + @GetMapping(value = "/list")
  76 + public Result<?> queryPageList(Minor minor,
  77 + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
  78 + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
  79 + HttpServletRequest req) {
  80 + QueryWrapper<Minor> queryWrapper = QueryGenerator.initQueryWrapper(minor, req.getParameterMap());
  81 + Page<Minor> page = new Page<Minor>(pageNo, pageSize);
  82 +// IPage<Minor> pageList = minorService.page(page, queryWrapper);
  83 +
  84 + IPage<Minor> pageList = minorService.queryPageList(page,minor.getName());
  85 + return Result.OK(pageList);
  86 + }
  87 +
  88 + /**
  89 + * 添加
  90 + *
  91 + * @param minorPage
  92 + * @return
  93 + */
  94 + @AutoLog(value = "未成年人-添加")
  95 + @ApiOperation(value = "未成年人-添加", notes = "未成年人-添加")
  96 + @PostMapping(value = "/add")
  97 + public Result<?> add(@RequestBody MinorPage minorPage) {
  98 + Minor minor = new Minor();
  99 + BeanUtils.copyProperties(minorPage, minor);
  100 + minorService.saveMain(minor, minorPage.getFamilyList());
  101 + return Result.OK("添加成功!");
  102 + }
  103 +
  104 + /**
  105 + * 编辑
  106 + *
  107 + * @param minorPage
  108 + * @return
  109 + */
  110 + @AutoLog(value = "未成年人-编辑")
  111 + @ApiOperation(value = "未成年人-编辑", notes = "未成年人-编辑")
  112 + @PutMapping(value = "/edit")
  113 + public Result<?> edit(@RequestBody MinorPage minorPage) {
  114 + Minor minor = new Minor();
  115 + BeanUtils.copyProperties(minorPage, minor);
  116 + Minor minorEntity = minorService.getById(minor.getId());
  117 + if (minorEntity == null) {
  118 + return Result.error("未找到对应数据");
  119 + }
  120 + minorService.updateMain(minor, minorPage.getFamilyList());
  121 + return Result.OK("编辑成功!");
  122 + }
  123 +
  124 + /**
  125 + * 通过id删除
  126 + *
  127 + * @param id
  128 + * @return
  129 + */
  130 + @AutoLog(value = "未成年人-通过id删除")
  131 + @ApiOperation(value = "未成年人-通过id删除", notes = "未成年人-通过id删除")
  132 + @DeleteMapping(value = "/delete")
  133 + public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
  134 + minorService.delMain(id);
  135 + return Result.OK("删除成功!");
  136 + }
  137 +
  138 + /**
  139 + * 批量删除
  140 + *
  141 + * @param ids
  142 + * @return
  143 + */
  144 + @AutoLog(value = "未成年人-批量删除")
  145 + @ApiOperation(value = "未成年人-批量删除", notes = "未成年人-批量删除")
  146 + @DeleteMapping(value = "/deleteBatch")
  147 + public Result<?> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
  148 + this.minorService.delBatchMain(Arrays.asList(ids.split(",")));
  149 + return Result.OK("批量删除成功!");
  150 + }
  151 +
  152 + /**
  153 + * 通过id查询
  154 + *
  155 + * @param id
  156 + * @return
  157 + */
  158 + @AutoLog(value = "未成年人-通过id查询")
  159 + @ApiOperation(value = "未成年人-通过id查询", notes = "未成年人-通过id查询")
  160 + @GetMapping(value = "/queryById")
  161 + public Result<?> queryById(@RequestParam(name = "id", required = true) String id) {
  162 + Minor minor = minorService.getById(id);
  163 + if (minor == null) {
  164 + return Result.error("未找到对应数据");
  165 + }
  166 + return Result.OK(minor);
  167 +
  168 + }
  169 +
  170 + /**
  171 + * 通过householdNum查询
  172 + *
  173 + * @param householdNum
  174 + * @return
  175 + */
  176 + @AutoLog(value = "家庭成员表通过主表householdNum查询")
  177 + @ApiOperation(value = "家庭成员表主表householdNum查询", notes = "家庭成员表-通主表householdNum查询")
  178 + @GetMapping(value = "/queryFamilyByMainId")
  179 + public Result<?> queryFamilyListByMainId(@RequestParam(name = "householdNum", required = true) String householdNum) {
  180 + List<Family> familyList = familyService.selectByHouseholdNum(householdNum);
  181 + return Result.OK(familyList);
  182 + }
  183 +
61 /** 184 /**
62 - * 分页列表查询 185 + * 导出excel
63 * 186 *
  187 + * @param request
64 * @param minor 188 * @param minor
65 - * @param pageNo  
66 - * @param pageSize  
67 - * @param req  
68 - * @return  
69 */ 189 */
70 - @AutoLog(value = "未成年人-分页列表查询")  
71 - @ApiOperation(value="未成年人-分页列表查询", notes="未成年人-分页列表查询")  
72 - @GetMapping(value = "/list")  
73 - public Result<?> queryPageList(Minor minor,  
74 - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,  
75 - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,  
76 - HttpServletRequest req) {  
77 - QueryWrapper<Minor> queryWrapper = QueryGenerator.initQueryWrapper(minor, req.getParameterMap());  
78 - Page<Minor> page = new Page<Minor>(pageNo, pageSize);  
79 - IPage<Minor> pageList = minorService.page(page, queryWrapper);  
80 - return Result.OK(pageList);  
81 - }  
82 -  
83 - /**  
84 - * 添加  
85 - *  
86 - * @param minorPage  
87 - * @return  
88 - */  
89 - @AutoLog(value = "未成年人-添加")  
90 - @ApiOperation(value="未成年人-添加", notes="未成年人-添加")  
91 - @PostMapping(value = "/add")  
92 - public Result<?> add(@RequestBody MinorPage minorPage) {  
93 - Minor minor = new Minor();  
94 - BeanUtils.copyProperties(minorPage, minor);  
95 - minorService.saveMain(minor, minorPage.getFamilyList());  
96 - return Result.OK("添加成功!");  
97 - }  
98 -  
99 - /**  
100 - * 编辑  
101 - *  
102 - * @param minorPage  
103 - * @return  
104 - */  
105 - @AutoLog(value = "未成年人-编辑")  
106 - @ApiOperation(value="未成年人-编辑", notes="未成年人-编辑")  
107 - @PutMapping(value = "/edit")  
108 - public Result<?> edit(@RequestBody MinorPage minorPage) {  
109 - Minor minor = new Minor();  
110 - BeanUtils.copyProperties(minorPage, minor);  
111 - Minor minorEntity = minorService.getById(minor.getId());  
112 - if(minorEntity==null) {  
113 - return Result.error("未找到对应数据"); 190 + @RequestMapping(value = "/exportXls")
  191 + public ModelAndView exportXls(HttpServletRequest request, Minor minor) {
  192 + // Step.1 组装查询条件查询数据
  193 + QueryWrapper<Minor> queryWrapper = QueryGenerator.initQueryWrapper(minor, request.getParameterMap());
  194 + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
  195 +
  196 + //Step.2 获取导出数据
  197 + List<Minor> queryList = minorService.list(queryWrapper);
  198 + // 过滤选中数据
  199 + String selections = request.getParameter("selections");
  200 + List<Minor> minorList = new ArrayList<Minor>();
  201 + if(oConvertUtils.isEmpty(selections)) {
  202 + minorList = queryList;
  203 + }else {
  204 + List<String> selectionList = Arrays.asList(selections.split(","));
  205 + minorList = queryList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList());
114 } 206 }
115 - minorService.updateMain(minor, minorPage.getFamilyList());  
116 - return Result.OK("编辑成功!");  
117 - }  
118 -  
119 - /**  
120 - * 通过id删除  
121 - *  
122 - * @param id  
123 - * @return  
124 - */  
125 - @AutoLog(value = "未成年人-通过id删除")  
126 - @ApiOperation(value="未成年人-通过id删除", notes="未成年人-通过id删除")  
127 - @DeleteMapping(value = "/delete")  
128 - public Result<?> delete(@RequestParam(name="id",required=true) String id) {  
129 - minorService.delMain(id);  
130 - return Result.OK("删除成功!");  
131 - }  
132 -  
133 - /**  
134 - * 批量删除  
135 - *  
136 - * @param ids  
137 - * @return  
138 - */  
139 - @AutoLog(value = "未成年人-批量删除")  
140 - @ApiOperation(value="未成年人-批量删除", notes="未成年人-批量删除")  
141 - @DeleteMapping(value = "/deleteBatch")  
142 - public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {  
143 - this.minorService.delBatchMain(Arrays.asList(ids.split(",")));  
144 - return Result.OK("批量删除成功!");  
145 - }  
146 -  
147 - /**  
148 - * 通过id查询  
149 - *  
150 - * @param id  
151 - * @return  
152 - */  
153 - @AutoLog(value = "未成年人-通过id查询")  
154 - @ApiOperation(value="未成年人-通过id查询", notes="未成年人-通过id查询")  
155 - @GetMapping(value = "/queryById")  
156 - public Result<?> queryById(@RequestParam(name="id",required=true) String id) {  
157 - Minor minor = minorService.getById(id);  
158 - if(minor==null) {  
159 - return Result.error("未找到对应数据"); 207 + // Step.3 组装pageList
  208 + List<MinorPage> pageList = new ArrayList<MinorPage>();
  209 + for (Minor main : minorList) {
  210 + MinorPage vo = new MinorPage();
  211 + BeanUtils.copyProperties(main, vo);
  212 + List<Family> familyList = familyService.selectByHouseholdNum(main.getHouseholdNum());
  213 + vo.setFamilyList(familyList);
  214 + pageList.add(vo);
160 } 215 }
161 - return Result.OK(minor);  
162 216
  217 + // Step.4 AutoPoi 导出Excel
  218 + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
  219 + mv.addObject(NormalExcelConstants.FILE_NAME, "未成年人列表");
  220 + mv.addObject(NormalExcelConstants.CLASS, MinorPage.class);
  221 + mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("未成年人数据", "导出人:"+sysUser.getRealname(), "未成年人"));
  222 + mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
  223 + return mv;
163 } 224 }
164 -  
165 - /**  
166 - * 通过id查询  
167 - *  
168 - * @param id  
169 - * @return  
170 - */  
171 - @AutoLog(value = "家庭成员表通过主表ID查询")  
172 - @ApiOperation(value="家庭成员表主表ID查询", notes="家庭成员表-通主表ID查询")  
173 - @GetMapping(value = "/queryFamilyByMainId")  
174 - public Result<?> queryFamilyListByMainId(@RequestParam(name="id",required=true) String id) {  
175 - List<Family> familyList = familyService.selectByMainId(id);  
176 - return Result.OK(familyList);  
177 - }  
178 -  
179 - /**  
180 - * 导出excel  
181 - *  
182 - * @param request  
183 - * @param minor  
184 - */  
185 - @RequestMapping(value = "/exportXls")  
186 - public ModelAndView exportXls(HttpServletRequest request, Minor minor) {  
187 - // Step.1 组装查询条件查询数据  
188 - QueryWrapper<Minor> queryWrapper = QueryGenerator.initQueryWrapper(minor, request.getParameterMap());  
189 - LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();  
190 - queryWrapper.last("limit 1");  
191 - //Step.2 获取导出数据  
192 - List<Minor> queryList = minorService.list(queryWrapper);  
193 - // 过滤选中数据  
194 - String selections = request.getParameter("selections");  
195 - List<Minor> minorList = new ArrayList<Minor>();  
196 - if(oConvertUtils.isEmpty(selections)) {  
197 - minorList = queryList;  
198 - }else {  
199 - List<String> selectionList = Arrays.asList(selections.split(","));  
200 - minorList = queryList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList());  
201 - }  
202 225
203 - // Step.3 组装pageList  
204 - List<MinorPage> pageList = new ArrayList<MinorPage>();  
205 - for (Minor main : minorList) {  
206 - MinorPage vo = new MinorPage();  
207 - BeanUtils.copyProperties(main, vo);  
208 - List<Family> familyList = familyService.selectByMainId(main.getId());  
209 - vo.setFamilyList(familyList);  
210 - pageList.add(vo);  
211 - } 226 +// /**
  227 +// * 导出excel
  228 +// *
  229 +// * @param request
  230 +// * @param minor
  231 +// */
  232 +// @RequestMapping(value = "/exportXls")
  233 +// public void exportXls(HttpServletRequest request, Minor minor, HttpServletResponse response) throws IOException {
  234 +//
  235 +// OutputStream outputStream = response.getOutputStream();
  236 +// // Step.1 组装查询条件查询数据
  237 +// QueryWrapper<Minor> queryWrapper = QueryGenerator.initQueryWrapper(minor, request.getParameterMap());
  238 +// LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
  239 +// queryWrapper.last("limit 1");
  240 +// //Step.2 获取导出数据
  241 +// List<Minor> queryList = minorService.list(queryWrapper);
  242 +// // 过滤选中数据
  243 +// String selections = request.getParameter("selections");
  244 +// List<Minor> minorList = new ArrayList<Minor>();
  245 +// if (oConvertUtils.isEmpty(selections)) {
  246 +// minorList = queryList;
  247 +// } else {
  248 +// List<String> selectionList = Arrays.asList(selections.split(","));
  249 +// minorList = queryList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList());
  250 +// }
  251 +// // Step.3 组装pageList
  252 +// List<MinorPage> pageList = new ArrayList<MinorPage>();
  253 +// List<Family> familyList = new ArrayList<>();
  254 +// for (Minor main : minorList) {
  255 +// familyList = familyService.selectByHouseholdNum(main.getHouseholdNum());
  256 +// }
  257 +// //多个map,对应了多个sheet
  258 +// List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
  259 +// Map<String, Object> minorMap = new HashMap<String, Object>();
  260 +// minorMap.put("title", getExportParams("未成年人表"));//表格title
  261 +// minorMap.put("entity", Minor.class);//表格对应实体
  262 +// //数据封装方式二:实体类
  263 +// minorMap.put("data", minorList);
  264 +// listMap.add(minorMap);
  265 +// Map<String, Object> familyMap = new HashMap<String, Object>();
  266 +// familyMap.put("title", getExportParams("家庭成员表"));//表格title
  267 +// familyMap.put("entity", Family.class);//表格对应实体
  268 +// //数据封装方式二:实体类
  269 +// familyMap.put("data", familyList);
  270 +// listMap.add(familyMap);
  271 +// try {
  272 +// Workbook wb = ExcelExportUtil.exportExcel(listMap, ExcelType.XSSF);
  273 +// response.reset();
  274 +// response.setHeader("Content-disposition", "attachment; filename=details.xls");
  275 +// response.setContentType("application/msexcel");
  276 +// wb.write(outputStream);
  277 +// outputStream.close();
  278 +// } catch (IOException e) {
  279 +// log.error("模板下载失败" + e.getMessage());
  280 +// response.setStatus(404);
  281 +// e.printStackTrace();
  282 +// } finally {
  283 +// if (outputStream != null) {
  284 +// try {
  285 +// outputStream.close();
  286 +// } catch (IOException e) {
  287 +// log.error(e.getMessage(), e);
  288 +// }
  289 +// }
  290 +// }
  291 +// }
212 292
213 - // Step.4 AutoPoi 导出Excel  
214 - ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());  
215 - mv.addObject(NormalExcelConstants.FILE_NAME, "未成年人列表");  
216 - mv.addObject(NormalExcelConstants.CLASS, MinorPage.class);  
217 - mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("未成年人数据", "导出人:"+sysUser.getRealname(), "未成年人"));  
218 - mv.addObject(NormalExcelConstants.DATA_LIST, pageList);  
219 - return mv; 293 + //导出参数
  294 + public static ExportParams getExportParams(String name) {
  295 + //表格名称,sheet名称,导出版本
  296 + return new ExportParams(name, name, ExcelType.XSSF);
220 } 297 }
221 298
222 /** 299 /**
223 - * 通过excel导入数据  
224 - *  
225 - * @param request  
226 - * @param response  
227 - * @return  
228 - */ 300 + * 通过excel导入数据
  301 + *
  302 + * @param request
  303 + * @param response
  304 + * @return
  305 + */
229 @RequestMapping(value = "/importExcel", method = RequestMethod.POST) 306 @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
230 public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { 307 public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
231 - MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;  
232 - Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();  
233 - for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {  
234 - MultipartFile file = entity.getValue();// 获取上传文件对象  
235 - ImportParams params = new ImportParams();  
236 - params.setTitleRows(2);  
237 - params.setHeadRows(1);  
238 - params.setNeedSave(true);  
239 - try {  
240 - List<MinorPage> list = ExcelImportUtil.importExcel(file.getInputStream(), MinorPage.class, params);  
241 - for (MinorPage page : list) {  
242 - Minor po = new Minor();  
243 - BeanUtils.copyProperties(page, po);  
244 - minorService.saveMain(po, page.getFamilyList());  
245 - }  
246 - return Result.OK("文件导入成功!数据行数:" + list.size());  
247 - } catch (Exception e) {  
248 - log.error(e.getMessage(),e);  
249 - return Result.error("文件导入失败:"+e.getMessage());  
250 - } finally {  
251 - try {  
252 - file.getInputStream().close();  
253 - } catch (IOException e) {  
254 - e.printStackTrace();  
255 - }  
256 - }  
257 - }  
258 - return Result.OK("文件导入失败!"); 308 + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  309 + Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
  310 + for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
  311 + MultipartFile file = entity.getValue();// 获取上传文件对象
  312 + ImportParams params = new ImportParams();
  313 + params.setTitleRows(2);
  314 + params.setHeadRows(1);
  315 + params.setNeedSave(true);
  316 + try {
  317 + List<MinorPage> list = ExcelImportUtil.importExcel(file.getInputStream(), MinorPage.class, params);
  318 + for (MinorPage page : list) {
  319 + Minor po = new Minor();
  320 + BeanUtils.copyProperties(page, po);
  321 + minorService.saveMain(po, page.getFamilyList());
  322 + }
  323 + return Result.OK("文件导入成功!数据行数:" + list.size());
  324 + } catch (Exception e) {
  325 + log.error(e.getMessage(), e);
  326 + return Result.error("文件导入失败:" + e.getMessage());
  327 + } finally {
  328 + try {
  329 + file.getInputStream().close();
  330 + } catch (IOException e) {
  331 + e.printStackTrace();
  332 + }
  333 + }
  334 + }
  335 + return Result.OK("文件导入失败!");
259 } 336 }
260 337
261 } 338 }
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/Family.java
@@ -30,9 +30,9 @@ public class Family implements Serializable { @@ -30,9 +30,9 @@ public class Family implements Serializable {
30 public static final Integer IS_CRIME=1;//是 30 public static final Integer IS_CRIME=1;//是
31 public static final Integer IS_NOT_CRIME=0;//否 31 public static final Integer IS_NOT_CRIME=0;//否
32 32
33 - @TableId(type = IdType.AUTO) 33 + @TableId(type = IdType.ASSIGN_ID)
34 @ApiModelProperty(value = "主键") 34 @ApiModelProperty(value = "主键")
35 - private Integer id; 35 + private String id;
36 /**创建人*/ 36 /**创建人*/
37 @ApiModelProperty(value = "创建人") 37 @ApiModelProperty(value = "创建人")
38 private String createBy; 38 private String createBy;
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/Minor.java
@@ -3,6 +3,9 @@ package org.jeecg.modules.system.entity; @@ -3,6 +3,9 @@ package org.jeecg.modules.system.entity;
3 import java.io.Serializable; 3 import java.io.Serializable;
4 import java.io.UnsupportedEncodingException; 4 import java.io.UnsupportedEncodingException;
5 import java.util.Date; 5 import java.util.Date;
  6 +import java.util.List;
  7 +import java.util.Set;
  8 +
6 import com.baomidou.mybatisplus.annotation.IdType; 9 import com.baomidou.mybatisplus.annotation.IdType;
7 import com.baomidou.mybatisplus.annotation.TableField; 10 import com.baomidou.mybatisplus.annotation.TableField;
8 import com.baomidou.mybatisplus.annotation.TableId; 11 import com.baomidou.mybatisplus.annotation.TableId;
@@ -79,29 +82,14 @@ public class Minor implements Serializable { @@ -79,29 +82,14 @@ public class Minor implements Serializable {
79 @ApiModelProperty(value = "性别") 82 @ApiModelProperty(value = "性别")
80 @Dict(dicCode = "sex") 83 @Dict(dicCode = "sex")
81 private Integer gender; 84 private Integer gender;
82 - /**家庭住址*/  
83 - @Excel(name = "家庭住址", width = 15)  
84 - @ApiModelProperty(value = "家庭住址")  
85 - private String address;  
86 /**身份证号*/ 85 /**身份证号*/
87 @Excel(name = "身份证号", width = 15) 86 @Excel(name = "身份证号", width = 15)
88 @ApiModelProperty(value = "身份证号") 87 @ApiModelProperty(value = "身份证号")
89 private String identity; 88 private String identity;
90 -  
91 - /**  
92 - * 监护人  
93 - */  
94 - @Excel(name = "监护人", width = 15)  
95 - @ApiModelProperty(value = "监护人")  
96 - private String guardian;  
97 -  
98 - /**  
99 - * 监护人关系  
100 - */  
101 - @Excel(name = "监护人关系", width = 15)  
102 - @ApiModelProperty(value = "监护人关系")  
103 - private String relation;  
104 - 89 + /**家庭住址*/
  90 + @Excel(name = "家庭住址", width = 15)
  91 + @ApiModelProperty(value = "家庭住址")
  92 + private String address;
105 /**是否失学*/ 93 /**是否失学*/
106 @Excel(name = "是否失学", width = 15,dicCode = "school_status") 94 @Excel(name = "是否失学", width = 15,dicCode = "school_status")
107 @ApiModelProperty(value = "是否失学") 95 @ApiModelProperty(value = "是否失学")
@@ -116,13 +104,25 @@ public class Minor implements Serializable { @@ -116,13 +104,25 @@ public class Minor implements Serializable {
116 @Excel(name = "入学年份", width = 15) 104 @Excel(name = "入学年份", width = 15)
117 @ApiModelProperty(value = "入学年份") 105 @ApiModelProperty(value = "入学年份")
118 private String startYear; 106 private String startYear;
  107 + /**
  108 + * 监护人
  109 + */
  110 + @Excel(name = "监护人", width = 15)
  111 + @ApiModelProperty(value = "监护人")
  112 + private String guardian;
  113 +
  114 + /**
  115 + * 监护人关系
  116 + */
  117 + @Excel(name = "监护人关系", width = 15)
  118 + @ApiModelProperty(value = "监护人关系")
  119 + private String relation;
119 120
120 /**重点关注原因*/ 121 /**重点关注原因*/
121 @Excel(name = "重点关注原因", width = 15,dicCode = "attention_reason") 122 @Excel(name = "重点关注原因", width = 15,dicCode = "attention_reason")
122 @ApiModelProperty(value = "重点关注原因") 123 @ApiModelProperty(value = "重点关注原因")
123 @Dict(dicCode = "attention_reason") 124 @Dict(dicCode = "attention_reason")
124 - private Integer reason;  
125 - 125 + private String reason;
126 /**特殊原因*/ 126 /**特殊原因*/
127 @Excel(name = "特殊原因", width = 15) 127 @Excel(name = "特殊原因", width = 15)
128 @ApiModelProperty(value = "特殊原因") 128 @ApiModelProperty(value = "特殊原因")
@@ -135,4 +135,10 @@ public class Minor implements Serializable { @@ -135,4 +135,10 @@ public class Minor implements Serializable {
135 @Excel(name = "行政区划", width = 15) 135 @Excel(name = "行政区划", width = 15)
136 @ApiModelProperty(value = "行政区划") 136 @ApiModelProperty(value = "行政区划")
137 private String division; 137 private String division;
  138 +
  139 + @TableField(exist = false)
  140 + private List<Family> families;
  141 +
  142 + @TableField(exist = false)
  143 + private String age;
138 } 144 }
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/FamilyMapper.java
@@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Param; @@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Param;
5 import org.jeecg.modules.system.entity.Family; 5 import org.jeecg.modules.system.entity.Family;
6 6
7 import java.util.List; 7 import java.util.List;
  8 +import java.util.Set;
8 9
9 /** 10 /**
10 * @Description: 家庭成员表 11 * @Description: 家庭成员表
@@ -16,7 +17,7 @@ public interface FamilyMapper extends BaseMapper&lt;Family&gt; { @@ -16,7 +17,7 @@ public interface FamilyMapper extends BaseMapper&lt;Family&gt; {
16 17
17 public boolean deleteByMainId(@Param("mainId") String mainId); 18 public boolean deleteByMainId(@Param("mainId") String mainId);
18 19
19 - public List<Family> selectByMainId(@Param("mainId") String mainId); 20 + public List<Family> selectByHouseholdNum(@Param("householdNum") String householdNum);
20 21
21 public List<Family> getFamilyByMinorId(@Param("minorId") String minorId); 22 public List<Family> getFamilyByMinorId(@Param("minorId") String minorId);
22 23
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/MinorMapper.java
1 package org.jeecg.modules.system.mapper; 1 package org.jeecg.modules.system.mapper;
2 2
3 import com.baomidou.mybatisplus.core.mapper.BaseMapper; 3 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  4 +import com.baomidou.mybatisplus.core.metadata.IPage;
  5 +import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6 +import org.apache.ibatis.annotations.Param;
4 import org.jeecg.modules.system.entity.Family; 7 import org.jeecg.modules.system.entity.Family;
5 import org.jeecg.modules.system.entity.Minor; 8 import org.jeecg.modules.system.entity.Minor;
  9 +import org.jeecg.modules.system.entity.SysUser;
  10 +import org.jeecg.modules.system.vo.MinorVo;
6 11
7 import java.util.List; 12 import java.util.List;
8 13
@@ -16,4 +21,12 @@ public interface MinorMapper extends BaseMapper&lt;Minor&gt; { @@ -16,4 +21,12 @@ public interface MinorMapper extends BaseMapper&lt;Minor&gt; {
16 21
17 public Integer insertBatch(List<Minor> list); 22 public Integer insertBatch(List<Minor> list);
18 23
  24 + /**
  25 + * 分页查询未成年人信息
  26 + * @param page
  27 + * @return
  28 + */
  29 + IPage<Minor> queryPageList(Page page,@Param("name") String name);
  30 +
  31 +
19 } 32 }
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/FamilyMapper.xml
@@ -8,23 +8,24 @@ @@ -8,23 +8,24 @@
8 WHERE 8 WHERE
9 minor_id = #{mainId} </delete> 9 minor_id = #{mainId} </delete>
10 10
11 - <select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.system.entity.Family"> 11 + <select id="selectByHouseholdNum" parameterType="java.lang.String" resultType="org.jeecg.modules.system.entity.Family">
12 SELECT * 12 SELECT *
13 FROM mr_family 13 FROM mr_family
14 WHERE 14 WHERE
15 - minor_id = #{mainId} </select>  
16 -  
17 -<!-- <insert id="insertBatch" >  
18 - INSERT INTO mr_family (id, create_time, sys_org_code, household_num, number, name,identity, gender, relation, address,crime,reason, other)VALUES  
19 - <foreach collection="list" item="b" separator=",">  
20 - (#{b.id},#{b.createTime},#{b.sysOrgCode},#{b.householdNum},#{b.number},#{b.name},#{b.identity},#{b.gender},#{b.relation},#{b.address},#{b.crime},#{b.reason},#{b.other})  
21 - </foreach>  
22 - </insert>--> 15 + household_num = #{householdNum}
  16 + </select>
23 17
24 <insert id="insertBatch" > 18 <insert id="insertBatch" >
25 - INSERT INTO mr_family (id, create_time, sys_org_code, household_num, number, name,identity, gender, relation, address,crime,reason, other)VALUES 19 + INSERT INTO mr_family (id,create_time,sys_org_code,household_num,number,name,identity,gender,relation,address,crime,reason,other)VALUES
26 <foreach collection="list" item="b" separator=","> 20 <foreach collection="list" item="b" separator=",">
27 (#{b.id},#{b.createTime},#{b.sysOrgCode},#{b.householdNum},#{b.number},#{b.name},#{b.identity},#{b.gender},#{b.relation},#{b.address},#{b.crime},#{b.reason},#{b.other}) 21 (#{b.id},#{b.createTime},#{b.sysOrgCode},#{b.householdNum},#{b.number},#{b.name},#{b.identity},#{b.gender},#{b.relation},#{b.address},#{b.crime},#{b.reason},#{b.other})
28 </foreach> 22 </foreach>
29 </insert> 23 </insert>
  24 +
  25 +<!-- <insert id="insertBatch" >-->
  26 +<!-- INSERT INTO mr_family (id, create_time, sys_org_code, household_num, number, name,identity, gender, relation, address,crime,reason, other)VALUES-->
  27 +<!-- <foreach collection="list" item="b" separator=",">-->
  28 +<!-- (#{b.id},#{b.createTime},#{b.sysOrgCode},#{b.householdNum},#{b.number},#{b.name},#{b.identity},#{b.gender},#{b.relation},#{b.address},#{b.crime},#{b.reason},#{b.other})-->
  29 +<!-- </foreach>-->
  30 +<!-- </insert>-->
30 </mapper> 31 </mapper>
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/MinorMapper.xml
1 <?xml version="1.0" encoding="UTF-8"?> 1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 -<mapper namespace="package org.jeecg.modules.system.mapper.MinorMapper"> 3 +<mapper namespace="org.jeecg.modules.system.mapper.MinorMapper">
  4 +
  5 + <resultMap id="minor" type="org.jeecg.modules.system.entity.Minor">
  6 + <result column="id" property="id"/>
  7 + <result column="createTime" property="createTime"/>
  8 + <result column="sysOrgCode" property="sysOrgCode"/>
  9 + <result column="householdNum" property="householdNum"/>
  10 + <result column="number" property="number"/>
  11 + <result column="name" property="name"/>
  12 + <result column="gender" property="gender"/>
  13 + <result column="identity" property="identity"/>
  14 + <result column="school" property="school"/>
  15 + <result column="schoolName" property="schoolName"/>
  16 + <result column="startYear" property="startYear"/>
  17 + <result column="address" property="address"/>
  18 + <result column="guardian" property="guardian"/>
  19 + <result column="relation" property="relation"/>
  20 + <result column="reason" property="reason"/>
  21 + <result column="specialReason" property="specialReason"/>
  22 + <result column="remark" property="remark"/>
  23 + <result column="age" property="age"/>
  24 + </resultMap>
  25 +
4 <insert id="insertBatch" > 26 <insert id="insertBatch" >
5 INSERT INTO mr_minor (id, create_time, sys_org_code, household_num, number, name,identity, gender, relation, address,guardian, 27 INSERT INTO mr_minor (id, create_time, sys_org_code, household_num, number, name,identity, gender, relation, address,guardian,
6 school,schoolName, startYear,reason,specialReason,remark)VALUES 28 school,schoolName, startYear,reason,specialReason,remark)VALUES
@@ -9,4 +31,15 @@ @@ -9,4 +31,15 @@
9 #{b.school},#{b.schoolName},#{b.startYear},#{b.reason},#{b.specialReason},#{b.remark}) 31 #{b.school},#{b.schoolName},#{b.startYear},#{b.reason},#{b.specialReason},#{b.remark})
10 </foreach> 32 </foreach>
11 </insert> 33 </insert>
  34 +<!-- ORDER BY create_time desc LIMIT #{pageNum},#{pageSize}-->
  35 + <select id="queryPageList" resultMap="minor">
  36 + select timestampdiff(year, substring(identity, 7, 8), now()) as age,identity,create_time as createTime,sys_org_code as sysOrgCode,household_num as householdNum,
  37 + number,name,gender,school,school_name as schoolName,start_year as startYear,address,guardian,relation,reason,special_reason as specialReason,remark
  38 + FROM mr_minor
  39 + WHERE (timestampdiff(year, substring(identity, 7, 8), now())) &lt; 18
  40 + <if test="name!=null and name!=''">
  41 + and name like concat('%',#{name},'%')
  42 + </if>
  43 + </select>
  44 +
12 </mapper> 45 </mapper>
13 \ No newline at end of file 46 \ No newline at end of file
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IFamilyService.java
@@ -6,6 +6,7 @@ import org.jeecg.modules.system.entity.Minor; @@ -6,6 +6,7 @@ import org.jeecg.modules.system.entity.Minor;
6 import org.jeecg.modules.system.entity.SysDepart; 6 import org.jeecg.modules.system.entity.SysDepart;
7 7
8 import java.util.List; 8 import java.util.List;
  9 +import java.util.Set;
9 10
10 /** 11 /**
11 * @Description: 家庭成员表 12 * @Description: 家庭成员表
@@ -15,7 +16,7 @@ import java.util.List; @@ -15,7 +16,7 @@ import java.util.List;
15 */ 16 */
16 public interface IFamilyService extends IService<Family> { 17 public interface IFamilyService extends IService<Family> {
17 18
18 - public List<Family> selectByMainId(String mainId); 19 + public List<Family> selectByHouseholdNum(String householdNum);
19 20
20 21
21 public Integer insertBatch(List<Family> list); 22 public Integer insertBatch(List<Family> list);
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IMinorService.java
1 package org.jeecg.modules.system.service; 1 package org.jeecg.modules.system.service;
2 2
  3 +import com.baomidou.mybatisplus.core.metadata.IPage;
  4 +import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
3 import com.baomidou.mybatisplus.extension.service.IService; 5 import com.baomidou.mybatisplus.extension.service.IService;
4 import org.jeecg.modules.system.entity.Family; 6 import org.jeecg.modules.system.entity.Family;
5 import org.jeecg.modules.system.entity.Minor; 7 import org.jeecg.modules.system.entity.Minor;
6 import org.jeecg.modules.system.entity.SysDepart; 8 import org.jeecg.modules.system.entity.SysDepart;
  9 +import org.jeecg.modules.system.vo.MinorVo;
7 10
8 import java.io.Serializable; 11 import java.io.Serializable;
9 import java.util.Collection; 12 import java.util.Collection;
@@ -41,4 +44,6 @@ public interface IMinorService extends IService&lt;Minor&gt; { @@ -41,4 +44,6 @@ public interface IMinorService extends IService&lt;Minor&gt; {
41 44
42 45
43 public Integer insertBatch(List<Minor> list); 46 public Integer insertBatch(List<Minor> list);
  47 +
  48 + IPage<Minor> queryPageList(Page<Minor> page,String name);
44 } 49 }
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/FamilyServiceImpl.java
@@ -2,8 +2,6 @@ package org.jeecg.modules.system.service.impl; @@ -2,8 +2,6 @@ package org.jeecg.modules.system.service.impl;
2 2
3 import org.jeecg.common.util.oConvertUtils; 3 import org.jeecg.common.util.oConvertUtils;
4 import org.jeecg.modules.system.entity.Family; 4 import org.jeecg.modules.system.entity.Family;
5 -import org.jeecg.modules.system.entity.Minor;  
6 -import org.jeecg.modules.system.entity.SysDepart;  
7 import org.jeecg.modules.system.mapper.FamilyMapper; 5 import org.jeecg.modules.system.mapper.FamilyMapper;
8 import org.jeecg.modules.system.service.IFamilyService; 6 import org.jeecg.modules.system.service.IFamilyService;
9 import org.springframework.jdbc.datasource.DataSourceTransactionManager; 7 import org.springframework.jdbc.datasource.DataSourceTransactionManager;
@@ -17,7 +15,6 @@ import java.util.concurrent.TimeUnit; @@ -17,7 +15,6 @@ import java.util.concurrent.TimeUnit;
17 import java.util.stream.Collectors; 15 import java.util.stream.Collectors;
18 16
19 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 17 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
20 -import org.springframework.beans.factory.annotation.Autowired;  
21 import org.springframework.transaction.TransactionDefinition; 18 import org.springframework.transaction.TransactionDefinition;
22 import org.springframework.transaction.TransactionStatus; 19 import org.springframework.transaction.TransactionStatus;
23 import org.springframework.transaction.annotation.Transactional; 20 import org.springframework.transaction.annotation.Transactional;
@@ -43,8 +40,8 @@ public class FamilyServiceImpl extends ServiceImpl&lt;FamilyMapper, Family&gt; impleme @@ -43,8 +40,8 @@ public class FamilyServiceImpl extends ServiceImpl&lt;FamilyMapper, Family&gt; impleme
43 private TransactionDefinition transactionDefinition; 40 private TransactionDefinition transactionDefinition;
44 41
45 @Override 42 @Override
46 - public List<Family> selectByMainId(String mainId) {  
47 - return familyMapper.selectByMainId(mainId); 43 + public List<Family> selectByHouseholdNum(String householdNum){
  44 + return familyMapper.selectByHouseholdNum(householdNum);
48 } 45 }
49 46
50 private Integer random_number=00000000; 47 private Integer random_number=00000000;
@@ -57,49 +54,53 @@ public class FamilyServiceImpl extends ServiceImpl&lt;FamilyMapper, Family&gt; impleme @@ -57,49 +54,53 @@ public class FamilyServiceImpl extends ServiceImpl&lt;FamilyMapper, Family&gt; impleme
57 @Override 54 @Override
58 @Transactional 55 @Transactional
59 public Integer insertBatch(List<Family> list) { 56 public Integer insertBatch(List<Family> list) {
  57 + System.out.println("源数据条数***************************************"+list.size());
  58 + List<Family> families= list.stream().distinct().collect(Collectors.toList());;
60 // if(oConvertUtils.isNotEmpty(list)){ 59 // if(oConvertUtils.isNotEmpty(list)){
61 -// for(int i=0;i<list.size();i++){  
62 -// String id=System.currentTimeMillis()+String.valueOf((random_number+i));  
63 -// System.out.println(id);  
64 -// list.get(i).setId(id);  
65 -// } 60 +// list.stream().forEach(h -> {
  61 +// families.add(h);
  62 +// });
66 // } 63 // }
67 - updateStudentWithThreads(list); 64 + System.out.println("去重后数据条数***************************************"+families.size());
  65 + updateStudentWithThreads(families);
68 return list.size(); 66 return list.size();
69 } 67 }
70 private void addBatch(List<Family> list, CountDownLatch threadLatch){ 68 private void addBatch(List<Family> list, CountDownLatch threadLatch){
71 -// TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); 69 + TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
72 System.out.println("子线程:" + Thread.currentThread().getName()); 70 System.out.println("子线程:" + Thread.currentThread().getName());
73 try { 71 try {
74 - list.forEach(s -> {  
75 - if(oConvertUtils.isNotEmpty(s)){  
76 - familyMapper.insert(s);  
77 - }  
78 - });  
79 -// familyMapper.insertBatch(list);  
80 -// dataSourceTransactionManager.commit(transactionStatus); 72 +// list.forEach(s -> {
  73 +// if(oConvertUtils.isNotEmpty(s)){
  74 +// familyMapper.insert(s);
  75 +// }
  76 +// });
  77 + if(list.size()>0){
  78 + familyMapper.insertBatch(list);
  79 + }
  80 + dataSourceTransactionManager.commit(transactionStatus);
81 threadLatch.countDown(); 81 threadLatch.countDown();
82 } catch (Throwable e) { 82 } catch (Throwable e) {
83 e.printStackTrace(); 83 e.printStackTrace();
84 -// dataSourceTransactionManager.rollback(transactionStatus); 84 + dataSourceTransactionManager.rollback(transactionStatus);
85 } 85 }
86 } 86 }
87 87
88 88
89 public void updateStudentWithThreads(List<Family> list) { 89 public void updateStudentWithThreads(List<Family> list) {
90 // 线程数量 90 // 线程数量
91 - final Integer threadCount = 8; 91 + final Integer threadCount = 10;
92 92
93 //每个线程处理的数据量 93 //每个线程处理的数据量
94 final Integer dataPartionLength = (list.size() + threadCount - 1) / threadCount; 94 final Integer dataPartionLength = (list.size() + threadCount - 1) / threadCount;
95 - // 创建多线程处理任务 95 +// // 创建多线程处理任务
96 ExecutorService studentThreadPool = Executors.newFixedThreadPool(threadCount); 96 ExecutorService studentThreadPool = Executors.newFixedThreadPool(threadCount);
97 CountDownLatch threadLatchs = new CountDownLatch(threadCount); 97 CountDownLatch threadLatchs = new CountDownLatch(threadCount);
98 98
99 for (int i = 0; i < threadCount; i++) { 99 for (int i = 0; i < threadCount; i++) {
100 // 每个线程处理的数据 100 // 每个线程处理的数据
101 - List<Family> threadDatas = list.stream() 101 + List<Family> threadDatas = list.stream()
102 .skip(i * dataPartionLength).limit(dataPartionLength).collect(Collectors.toList()); 102 .skip(i * dataPartionLength).limit(dataPartionLength).collect(Collectors.toList());
  103 +// addBatch(threadDatas);
103 studentThreadPool.execute(() -> { 104 studentThreadPool.execute(() -> {
104 addBatch(threadDatas, threadLatchs); 105 addBatch(threadDatas, threadLatchs);
105 }); 106 });
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MinorServiceImpl.java
1 package org.jeecg.modules.system.service.impl; 1 package org.jeecg.modules.system.service.impl;
2 2
  3 +import com.baomidou.mybatisplus.core.metadata.IPage;
  4 +import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
3 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 5 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
4 import javassist.bytecode.analysis.Executor; 6 import javassist.bytecode.analysis.Executor;
5 import org.jeecg.common.util.oConvertUtils; 7 import org.jeecg.common.util.oConvertUtils;
@@ -9,6 +11,7 @@ import org.jeecg.modules.system.entity.SysDepart; @@ -9,6 +11,7 @@ import org.jeecg.modules.system.entity.SysDepart;
9 import org.jeecg.modules.system.mapper.FamilyMapper; 11 import org.jeecg.modules.system.mapper.FamilyMapper;
10 import org.jeecg.modules.system.mapper.MinorMapper; 12 import org.jeecg.modules.system.mapper.MinorMapper;
11 import org.jeecg.modules.system.service.IMinorService; 13 import org.jeecg.modules.system.service.IMinorService;
  14 +import org.jeecg.modules.system.vo.MinorVo;
12 import org.springframework.jdbc.datasource.DataSourceTransactionManager; 15 import org.springframework.jdbc.datasource.DataSourceTransactionManager;
13 import org.springframework.stereotype.Service; 16 import org.springframework.stereotype.Service;
14 import org.springframework.transaction.TransactionDefinition; 17 import org.springframework.transaction.TransactionDefinition;
@@ -131,29 +134,39 @@ public class MinorServiceImpl extends ServiceImpl&lt;MinorMapper, Minor&gt; implements @@ -131,29 +134,39 @@ public class MinorServiceImpl extends ServiceImpl&lt;MinorMapper, Minor&gt; implements
131 return list.size(); 134 return list.size();
132 } 135 }
133 136
  137 + @Override
  138 + public IPage<Minor> queryPageList(Page<Minor> page,String name) {
  139 + return minorMapper.queryPageList(page,name);
  140 + }
  141 +
134 142
135 private void addBatch(List<Minor> list, CountDownLatch threadLatch){ 143 private void addBatch(List<Minor> list, CountDownLatch threadLatch){
136 -// TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); 144 + TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
137 System.out.println("子线程:" + Thread.currentThread().getName()); 145 System.out.println("子线程:" + Thread.currentThread().getName());
138 try { 146 try {
139 list.forEach(s -> { 147 list.forEach(s -> {
140 if(oConvertUtils.isNotEmpty(s)){ 148 if(oConvertUtils.isNotEmpty(s)){
141 minorMapper.insert(s); 149 minorMapper.insert(s);
  150 + if(oConvertUtils.isNotEmpty(s.getFamilies())){
  151 + if(s.getFamilies().size()>0){
  152 + familyMapper.insertBatch(s.getFamilies());
  153 + }
  154 + }
142 } 155 }
143 }); 156 });
144 // minorMapper.insertBatch(list); 157 // minorMapper.insertBatch(list);
145 -// dataSourceTransactionManager.commit(transactionStatus); 158 + dataSourceTransactionManager.commit(transactionStatus);
146 threadLatch.countDown(); 159 threadLatch.countDown();
147 } catch (Throwable e) { 160 } catch (Throwable e) {
148 e.printStackTrace(); 161 e.printStackTrace();
149 -// dataSourceTransactionManager.rollback(transactionStatus); 162 + dataSourceTransactionManager.rollback(transactionStatus);
150 } 163 }
151 } 164 }
152 165
153 166
154 public void updateStudentWithThreads(List<Minor> list) { 167 public void updateStudentWithThreads(List<Minor> list) {
155 // 线程数量 168 // 线程数量
156 - final Integer threadCount = 8; 169 + final Integer threadCount = 5;
157 170
158 //每个线程处理的数据量 171 //每个线程处理的数据量
159 final Integer dataPartionLength = (list.size() + threadCount - 1) / threadCount; 172 final Integer dataPartionLength = (list.size() + threadCount - 1) / threadCount;
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/MrSchoolServiceImpl.java
@@ -57,12 +57,9 @@ public class MrSchoolServiceImpl extends ServiceImpl&lt;MrSchoolMapper, MrSchool&gt; i @@ -57,12 +57,9 @@ public class MrSchoolServiceImpl extends ServiceImpl&lt;MrSchoolMapper, MrSchool&gt; i
57 return list.size(); 57 return list.size();
58 } 58 }
59 59
60 -// public static void main(String[] args){  
61 -// System.out.println(System.currentTimeMillis()+"00000000"+1);  
62 -// }  
63 60
64 private void addBatch(List<MrSchool> list, CountDownLatch threadLatch){ 61 private void addBatch(List<MrSchool> list, CountDownLatch threadLatch){
65 -// TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); 62 + TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
66 System.out.println("子线程:" + Thread.currentThread().getName()); 63 System.out.println("子线程:" + Thread.currentThread().getName());
67 try { 64 try {
68 list.forEach(s -> { 65 list.forEach(s -> {
@@ -71,18 +68,18 @@ public class MrSchoolServiceImpl extends ServiceImpl&lt;MrSchoolMapper, MrSchool&gt; i @@ -71,18 +68,18 @@ public class MrSchoolServiceImpl extends ServiceImpl&lt;MrSchoolMapper, MrSchool&gt; i
71 schoolMapper.insert(s); 68 schoolMapper.insert(s);
72 } 69 }
73 }); 70 });
74 -// dataSourceTransactionManager.commit(transactionStatus); 71 + dataSourceTransactionManager.commit(transactionStatus);
75 threadLatch.countDown(); 72 threadLatch.countDown();
76 } catch (Throwable e) { 73 } catch (Throwable e) {
77 e.printStackTrace(); 74 e.printStackTrace();
78 -// dataSourceTransactionManager.rollback(transactionStatus); 75 + dataSourceTransactionManager.rollback(transactionStatus);
79 } 76 }
80 } 77 }
81 78
82 79
83 public void updateStudentWithThreads(List<MrSchool> list) { 80 public void updateStudentWithThreads(List<MrSchool> list) {
84 // 线程数量 81 // 线程数量
85 - final Integer threadCount = 8; 82 + final Integer threadCount = 5;
86 83
87 //每个线程处理的数据量 84 //每个线程处理的数据量
88 final Integer dataPartionLength = (list.size() + threadCount - 1) / threadCount; 85 final Integer dataPartionLength = (list.size() + threadCount - 1) / threadCount;
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/getRandomId.java 0 → 100644
  1 +package org.jeecg.modules.system.util;
  2 +
  3 +import org.jeecg.common.util.oConvertUtils;
  4 +import org.jeecg.modules.system.entity.Family;
  5 +import org.jeecg.modules.system.entity.Minor;
  6 +
  7 +import java.util.*;
  8 +
  9 +public class getRandomId {
  10 +
  11 + // ==============================Fields===========================================
  12 + /**
  13 + * 开始时间截 (2018-07-03)
  14 + */
  15 +
  16 + private final long twepoch = 1530607760000L;
  17 +
  18 + /**
  19 + * 机器id所占的位数
  20 + */
  21 + private final long workerIdBits = 5L;
  22 +
  23 + /**
  24 + * 数据标识id所占的位数
  25 + */
  26 + private final long datacenterIdBits = 5L;
  27 +
  28 + /**
  29 + * 支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数)
  30 + */
  31 + private final long maxWorkerId = -1L ^ (-1L << workerIdBits);
  32 +
  33 + /**
  34 + * 支持的最大数据标识id,结果是31
  35 + */
  36 + private final long maxDatacenterId = -1L ^ (-1L << datacenterIdBits);
  37 +
  38 + /**
  39 + * 序列在id中占的位数
  40 + */
  41 + private final long sequenceBits = 12L;
  42 +
  43 + /**
  44 + * 机器ID向左移12位
  45 + */
  46 + private final long workerIdShift = sequenceBits;
  47 +
  48 + /**
  49 + * 数据标识id向左移17位(12+5)
  50 + */
  51 + private final long datacenterIdShift = sequenceBits + workerIdBits;
  52 +
  53 + /**
  54 + * 时间截向左移22位(5+5+12)
  55 + */
  56 + private final long timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits;
  57 +
  58 + /**
  59 + * 生成序列的掩码,这里为4095 (0b111111111111=0xfff=4095)
  60 + */
  61 + private final long sequenceMask = -1L ^ (-1L << sequenceBits);
  62 +
  63 + /**
  64 + * 工作机器ID(0~31)
  65 + */
  66 + private long workerId;
  67 +
  68 + /**
  69 + * 数据中心ID(0~31)
  70 + */
  71 + private long datacenterId;
  72 +
  73 + /**
  74 + * 毫秒内序列(0~4095)
  75 + */
  76 + private long sequence = 0L;
  77 +
  78 + /**
  79 + * 上次生成ID的时间截
  80 + */
  81 + private long lastTimestamp = -1L;
  82 +
  83 + //==============================Constructors=====================================
  84 +
  85 + /**
  86 + * 构造函数
  87 + *
  88 + * @param workerId 工作ID (0~31)
  89 + * @param datacenterId 数据中心ID (0~31)
  90 + */
  91 + public getRandomId(long workerId, long datacenterId) {
  92 + if (workerId > maxWorkerId || workerId < 0) {
  93 + throw new IllegalArgumentException(String.format("worker Id can't be greater than %d or less than 0", maxWorkerId));
  94 + }
  95 + if (datacenterId > maxDatacenterId || datacenterId < 0) {
  96 + throw new IllegalArgumentException(String.format("datacenter Id can't be greater than %d or less than 0", maxDatacenterId));
  97 + }
  98 + this.workerId = workerId;
  99 + this.datacenterId = datacenterId;
  100 + }
  101 +
  102 + // ==============================Methods==========================================
  103 +
  104 + /**
  105 + * 获得下一个ID (该方法是线程安全的)
  106 + *
  107 + * @return SnowflakeId
  108 + */
  109 + public synchronized long nextId() {
  110 + long timestamp = timeGen();
  111 +
  112 + //如果当前时间小于上一次ID生成的时间戳,说明系统时钟回退过这个时候应当抛出异常
  113 + if (timestamp < lastTimestamp) {
  114 + throw new RuntimeException(
  115 + String.format("Clock moved backwards. Refusing to generate id for %d milliseconds", lastTimestamp - timestamp));
  116 + }
  117 +
  118 + //如果是同一时间生成的,则进行毫秒内序列
  119 + if (lastTimestamp == timestamp) {
  120 + sequence = (sequence + 1) & sequenceMask;
  121 + //毫秒内序列溢出
  122 + if (sequence == 0) {
  123 + //阻塞到下一个毫秒,获得新的时间戳
  124 + timestamp = tilNextMillis(lastTimestamp);
  125 + }
  126 + }
  127 + //时间戳改变,毫秒内序列重置
  128 + else {
  129 + sequence = 0L;
  130 + }
  131 +
  132 + //上次生成ID的时间截
  133 + lastTimestamp = timestamp;
  134 +
  135 + //移位并通过或运算拼到一起组成64位的ID
  136 + return (((timestamp - twepoch) << timestampLeftShift)
  137 + | (datacenterId << datacenterIdShift)
  138 + | (workerId << workerIdShift)
  139 + | sequence);
  140 + }
  141 +
  142 + /**
  143 + * 阻塞到下一个毫秒,直到获得新的时间戳
  144 + *
  145 + * @param lastTimestamp 上次生成ID的时间截
  146 + * @return 当前时间戳
  147 + */
  148 + protected long tilNextMillis(long lastTimestamp) {
  149 + long timestamp = timeGen();
  150 + while (timestamp <= lastTimestamp) {
  151 + timestamp = timeGen();
  152 + }
  153 + return timestamp;
  154 + }
  155 +
  156 + /**
  157 + * 返回以毫秒为单位的当前时间
  158 + *
  159 + * @return 当前时间(毫秒)
  160 + */
  161 + protected long timeGen() {
  162 + return System.currentTimeMillis();
  163 + }
  164 +
  165 + //==============================Test=============================================
  166 +
  167 + /**
  168 + * 测试
  169 + */
  170 + public static void main(String[] args) {
  171 + long startTime = System.currentTimeMillis();
  172 + Set<Family> familys = new HashSet<>();
  173 + //存放已经被放入minor里面的户号,避免数据重复
  174 + Set<String> houseSet=new HashSet<>();
  175 + Map<String, Minor> minors=getMinors();
  176 + Map<String, List<Family>> familyMaps=getFamilyMaps();
  177 + if (oConvertUtils.isNotEmpty(minors)) {
  178 + for (Map.Entry<String, Minor> m : minors.entrySet()) {
  179 + String idCard = m.getKey();
  180 + Minor minor = m.getValue();
  181 + Set<Family> f=new HashSet<>();
  182 + //判断是否是一个家庭的人员
  183 + if (oConvertUtils.isNotEmpty(minor.getHouseholdNum())) {
  184 + String houseNum = minor.getHouseholdNum();
  185 + if(oConvertUtils.isNotEmpty(familyMaps) && oConvertUtils.isNotEmpty(familyMaps.get(houseNum)) ){
  186 + if(!houseSet.contains(houseNum) ){
  187 + familys.addAll(familyMaps.get(houseNum));
  188 + houseSet.add(houseNum);
  189 + }
  190 + }
  191 + minor.setFamilies(f);
  192 + }
  193 + }
  194 + }
  195 + long endTime = System.currentTimeMillis();
  196 +
  197 + System.out.println("endTime-startTime:" + (endTime - startTime));
  198 + }
  199 + public static Map<String, List<Family>> getFamilyMaps(){
  200 + Map<String, List<Family>> familyMaps=new HashMap<>();
  201 + List<Family> familys=getFamilys();
  202 + for(int i=0;i<familys.size();i++){
  203 + Family family=familys.get(i);
  204 + if(oConvertUtils.isNotEmpty(family.getHouseholdNum())){
  205 + if(oConvertUtils.isNotEmpty(familyMaps) && oConvertUtils.isNotEmpty(familyMaps.get(family.getHouseholdNum()))){
  206 + familyMaps.get(family.getHouseholdNum()).add(family);
  207 + }else {
  208 + List<Family> list = new ArrayList<>();
  209 + list.add(family);
  210 + familyMaps.put(family.getHouseholdNum(),list);
  211 + }
  212 +
  213 + }
  214 + }
  215 + return familyMaps;
  216 +
  217 + }
  218 +
  219 + public static List<Family> getFamilys(){
  220 + List<Family> familys=new ArrayList<>();
  221 + for(int i=0;i<25;i++){
  222 + Family f=new Family();
  223 + if(i<5){
  224 + f.setIdentity("#####################"+i);
  225 + f.setHouseholdNum("**************house"+0);
  226 + }else if(i<10){
  227 + f.setIdentity("#####################"+i);
  228 + f.setHouseholdNum("**************house"+1);
  229 + }else if(i<15){
  230 + f.setIdentity("#####################"+i);
  231 + f.setHouseholdNum("**************house"+2);
  232 + }else if(i<20){
  233 + f.setIdentity("#####################"+i);
  234 + f.setHouseholdNum("**************house"+3);
  235 + }else if(i<25){
  236 + f.setIdentity("#####################"+i);
  237 + f.setHouseholdNum("**************house"+4);
  238 + }
  239 + familys.add(f);
  240 + }
  241 + return familys;
  242 +
  243 + }
  244 +
  245 + public static Map<String, Minor> getMinors(){
  246 + Map<String, Minor> minors=new HashMap<>();
  247 + for(int i=0;i<10;i++){
  248 + if(i<5){
  249 + Minor m=new Minor();
  250 + m.setIdentity("**************id"+i);
  251 + m.setHouseholdNum("**************house"+i);
  252 + minors.put("**************id"+i,m);
  253 + }else if(i<10){
  254 + Minor m=new Minor();
  255 + m.setIdentity("**************id"+i);
  256 + m.setHouseholdNum("**************house"+(i-5));
  257 + minors.put("**************id"+i,m);
  258 + }
  259 + }
  260 + return minors;
  261 +
  262 + }
  263 +
  264 +}
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/MinorPage.java
@@ -67,6 +67,18 @@ public class MinorPage { @@ -67,6 +67,18 @@ public class MinorPage {
67 @Excel(name = "身份证号", width = 20,needMerge=true) 67 @Excel(name = "身份证号", width = 20,needMerge=true)
68 @ApiModelProperty(value = "身份证号") 68 @ApiModelProperty(value = "身份证号")
69 private String identity; 69 private String identity;
  70 + /**是否失学*/
  71 + @Excel(name = "是否失学", width = 10,dicCode = "school_status",needMerge=true)
  72 + @ApiModelProperty(value = "是否失学")
  73 + @Dict(dicCode = "school_status")
  74 + private Integer school;
  75 + /**学校名称*/
  76 + @Excel(name = "学校名称", width = 15,needMerge=true)
  77 + @ApiModelProperty(value = "学校名称")
  78 + private String schoolName;
  79 + @Excel(name = "入学年份", width = 15)
  80 + @ApiModelProperty(value = "入学年份")
  81 + private String startYear;
70 /**家庭住址*/ 82 /**家庭住址*/
71 @Excel(name = "家庭住址", width = 20,needMerge=true) 83 @Excel(name = "家庭住址", width = 20,needMerge=true)
72 @ApiModelProperty(value = "家庭住址") 84 @ApiModelProperty(value = "家庭住址")
@@ -84,18 +96,6 @@ public class MinorPage { @@ -84,18 +96,6 @@ public class MinorPage {
84 @Excel(name = "监护人关系", width = 15,needMerge=true) 96 @Excel(name = "监护人关系", width = 15,needMerge=true)
85 @ApiModelProperty(value = "监护人关系") 97 @ApiModelProperty(value = "监护人关系")
86 private String relation; 98 private String relation;
87 - /**是否失学*/  
88 - @Excel(name = "是否失学", width = 10,dicCode = "school_status",needMerge=true)  
89 - @ApiModelProperty(value = "是否失学")  
90 - @Dict(dicCode = "school_status")  
91 - private Integer school;  
92 - /**学校名称*/  
93 - @Excel(name = "学校名称", width = 15,needMerge=true)  
94 - @ApiModelProperty(value = "学校名称")  
95 - private String schoolName;  
96 - @Excel(name = "入学年份", width = 15)  
97 - @ApiModelProperty(value = "入学年份")  
98 - private String startYear;  
99 /**重点关注原因*/ 99 /**重点关注原因*/
100 @Excel(name = "重点关注原因", width = 15,dicCode = "attention_reason") 100 @Excel(name = "重点关注原因", width = 15,dicCode = "attention_reason")
101 @ApiModelProperty(value = "重点关注原因") 101 @ApiModelProperty(value = "重点关注原因")
juvenile-prosecution-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/MinorVo.java 0 → 100644
  1 +package org.jeecg.modules.system.vo;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonFormat;
  4 +import io.swagger.annotations.ApiModel;
  5 +import io.swagger.annotations.ApiModelProperty;
  6 +import lombok.Data;
  7 +import org.jeecg.common.aspect.annotation.Dict;
  8 +import org.jeecg.modules.system.entity.Family;
  9 +import org.jeecgframework.poi.excel.annotation.Excel;
  10 +import org.jeecgframework.poi.excel.annotation.ExcelCollection;
  11 +import org.springframework.format.annotation.DateTimeFormat;
  12 +
  13 +import java.util.Date;
  14 +import java.util.List;
  15 +
  16 +/**
  17 + * @Description: 未成年人
  18 + * @Author: jeecg-boot
  19 + * @Date: 2022-07-13
  20 + * @Version: V1.0
  21 + */
  22 +@Data
  23 +@ApiModel(value="mr_minorPage对象", description="未成年人")
  24 +public class MinorVo {
  25 +
  26 + /**主键*/
  27 + @ApiModelProperty(value = "主键")
  28 + private String id;
  29 + /**创建日期*/
  30 + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
  31 + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
  32 + @ApiModelProperty(value = "创建日期")
  33 + private Date createTime;
  34 + /**所属部门*/
  35 + @ApiModelProperty(value = "所属部门")
  36 + @Dict(dictTable ="sys_depart",dicText = "depart_name",dicCode = "id")
  37 + private String sysOrgCode;
  38 + /**户号*/
  39 + @Excel(name = "户号", width = 25,needMerge=true)
  40 + @ApiModelProperty(value = "户号")
  41 + private String householdNum;
  42 + /**人员编号*/
  43 + @Excel(name = "人员编号", width = 25,needMerge=true)
  44 + @ApiModelProperty(value = "人员编号")
  45 + private String number;
  46 + /**姓名*/
  47 + @Excel(name = "姓名", width = 15,needMerge=true)
  48 + @ApiModelProperty(value = "姓名")
  49 + private String name;
  50 + /**性别*/
  51 + @Excel(name = "性别", width = 15,dicCode = "sex",needMerge=true)
  52 + @ApiModelProperty(value = "性别")
  53 + @Dict(dicCode = "sex")
  54 + private Integer gender;
  55 + /**身份证号*/
  56 + @Excel(name = "身份证号", width = 20,needMerge=true)
  57 + @ApiModelProperty(value = "身份证号")
  58 + private String identity;
  59 + /**是否失学*/
  60 + @Excel(name = "是否失学", width = 10,dicCode = "school_status",needMerge=true)
  61 + @ApiModelProperty(value = "是否失学")
  62 + @Dict(dicCode = "school_status")
  63 + private Integer school;
  64 + /**学校名称*/
  65 + @Excel(name = "学校名称", width = 15,needMerge=true)
  66 + @ApiModelProperty(value = "学校名称")
  67 + private String schoolName;
  68 + @Excel(name = "入学年份", width = 15)
  69 + @ApiModelProperty(value = "入学年份")
  70 + private String startYear;
  71 + /**家庭住址*/
  72 + @Excel(name = "家庭住址", width = 20,needMerge=true)
  73 + @ApiModelProperty(value = "家庭住址")
  74 + private String address;
  75 + /**
  76 + * 监护人
  77 + */
  78 + @Excel(name = "监护人", width = 15,needMerge=true)
  79 + @ApiModelProperty(value = "监护人")
  80 + private String guardian;
  81 +
  82 + /**
  83 + * 监护人关系
  84 + */
  85 + @Excel(name = "监护人关系", width = 15,needMerge=true)
  86 + @ApiModelProperty(value = "监护人关系")
  87 + private String relation;
  88 + /**重点关注原因*/
  89 + @Excel(name = "重点关注原因", width = 15,dicCode = "attention_reason")
  90 + @ApiModelProperty(value = "重点关注原因")
  91 + @Dict(dicCode = "attention_reason")
  92 + private Integer reason;
  93 + /**特殊原因*/
  94 + @Excel(name = "特殊原因", width = 15)
  95 + @ApiModelProperty(value = "特殊原因")
  96 + private String specialReason;
  97 + /**备注*/
  98 + @Excel(name = "备注", width = 25,needMerge=true)
  99 + @ApiModelProperty(value = "备注")
  100 + private String remark;
  101 +
  102 + private String age;
  103 +
  104 +}
juvenile-prosecution-vue/src/utils/util.js
@@ -568,7 +568,7 @@ export function removeArrayElement(array, prod, value) { @@ -568,7 +568,7 @@ export function removeArrayElement(array, prod, value) {
568 * @constructor 568 * @constructor
569 */ 569 */
570 export function GetAge(identityCard) { 570 export function GetAge(identityCard) {
571 - console.log(identityCard) 571 + // console.log(identityCard)
572 var len = (identityCard + "").length; 572 var len = (identityCard + "").length;
573 if (len == 0) { 573 if (len == 0) {
574 return 0; 574 return 0;
@@ -590,8 +590,8 @@ export function GetAge(identityCard) { @@ -590,8 +590,8 @@ export function GetAge(identityCard) {
590 var birthDate = new Date(strBirthday); 590 var birthDate = new Date(strBirthday);
591 var nowDateTime = new Date(); 591 var nowDateTime = new Date();
592 var age = nowDateTime.getFullYear() - birthDate.getFullYear(); 592 var age = nowDateTime.getFullYear() - birthDate.getFullYear();
593 - console.log(nowDateTime.getFullYear())  
594 - console.log(birthDate.getFullYear()) 593 + // console.log(nowDateTime.getFullYear())
  594 + // console.log(birthDate.getFullYear())
595 //再考虑月、天的因素;.getMonth()获取的是从0开始的,这里进行比较,不需要加1 595 //再考虑月、天的因素;.getMonth()获取的是从0开始的,这里进行比较,不需要加1
596 if (nowDateTime.getMonth() < birthDate.getMonth() || (nowDateTime.getMonth() == birthDate.getMonth() && nowDateTime.getDate() < birthDate.getDate())) { 596 if (nowDateTime.getMonth() < birthDate.getMonth() || (nowDateTime.getMonth() == birthDate.getMonth() && nowDateTime.getDate() < birthDate.getDate())) {
597 age--; 597 age--;
juvenile-prosecution-vue/src/views/business/MinorList.vue
@@ -49,7 +49,7 @@ @@ -49,7 +49,7 @@
49 ref="table" 49 ref="table"
50 size="middle" 50 size="middle"
51 bordered 51 bordered
52 - rowKey="id" 52 + rowKey="identity"
53 class="j-table-force-nowrap" 53 class="j-table-force-nowrap"
54 :scroll="{x:true}" 54 :scroll="{x:true}"
55 :columns="columns" 55 :columns="columns"
@@ -71,8 +71,10 @@ @@ -71,8 +71,10 @@
71 71
72 <minor-modal ref="modalForm" @ok="modalFormOk" /> 72 <minor-modal ref="modalForm" @ok="modalFormOk" />
73 <!-- 详情 --> 73 <!-- 详情 -->
74 - <a-modal v-model:visible="infoVisible" title="未成年信息" :footer=null :width="1000"> 74 + <a-modal v-model:visible="infoVisible" title="未成年信息" :footer=null :width="1000" >
75 <a-descriptions bordered layout="vertical" :column="4"> 75 <a-descriptions bordered layout="vertical" :column="4">
  76 + <a-descriptions-item label="户号">{{ info.householdNum }}</a-descriptions-item>
  77 + <a-descriptions-item label="人员编号">{{ info.number }}</a-descriptions-item>
76 <a-descriptions-item label="姓名">{{ info.name }}</a-descriptions-item> 78 <a-descriptions-item label="姓名">{{ info.name }}</a-descriptions-item>
77 <a-descriptions-item label="性别">{{ info.gender_dictText }}</a-descriptions-item> 79 <a-descriptions-item label="性别">{{ info.gender_dictText }}</a-descriptions-item>
78 <a-descriptions-item label="年龄">{{ getAgeByIdentity(info.identity) }}</a-descriptions-item> 80 <a-descriptions-item label="年龄">{{ getAgeByIdentity(info.identity) }}</a-descriptions-item>
@@ -85,13 +87,16 @@ @@ -85,13 +87,16 @@
85 <a-descriptions-item label="学校名称">{{ info.schoolName }}</a-descriptions-item> 87 <a-descriptions-item label="学校名称">{{ info.schoolName }}</a-descriptions-item>
86 <a-descriptions-item label="监护人">{{ info.guardian }}</a-descriptions-item> 88 <a-descriptions-item label="监护人">{{ info.guardian }}</a-descriptions-item>
87 <a-descriptions-item label="监护人关系">{{ info.relation }}</a-descriptions-item> 89 <a-descriptions-item label="监护人关系">{{ info.relation }}</a-descriptions-item>
88 - <a-descriptions-item label="重点关注原因">{{ info.reason_dictText }}</a-descriptions-item>  
89 - <a-descriptions-item label="特殊原因">{{ info.specialReason }}</a-descriptions-item> 90 + <a-descriptions-item label="重点关注原因" :span="2">{{ info.reason_dictText }}</a-descriptions-item>
  91 + <a-descriptions-item label="特殊原因" :span="4">{{ info.specialReason }}</a-descriptions-item>
90 <a-descriptions-item label="备注" :span="4">{{ info.remark }}</a-descriptions-item> 92 <a-descriptions-item label="备注" :span="4">{{ info.remark }}</a-descriptions-item>
91 </a-descriptions> 93 </a-descriptions>
92 <a-tabs v-model:activeKey="activeKey"> 94 <a-tabs v-model:activeKey="activeKey">
93 <a-tab-pane key="1" tab="家庭成员"> 95 <a-tab-pane key="1" tab="家庭成员">
94 - <a-table bordered :columns="familyColumns" :data-source="familyDatas" :scroll="{ x: true }" rowKey="id" :pagination="familyPagination"> 96 + <a-table bordered :columns="familyColumns" :data-source="familyDatas" :scroll="{ x: true }" rowKey="id" :loading="familyLoading" :pagination="familyPagination">
  97 + <span slot="num" slot-scope="text,record">
  98 + <j-ellipsis :value="text" :length="8" />
  99 + </span>
95 <span slot="longText" slot-scope="text,record"> 100 <span slot="longText" slot-scope="text,record">
96 <j-ellipsis :value="text" :length="18" /> 101 <j-ellipsis :value="text" :length="18" />
97 </span> 102 </span>
@@ -108,7 +113,7 @@ import { JeecgListMixin } from &#39;@/mixins/JeecgListMixin&#39; @@ -108,7 +113,7 @@ import { JeecgListMixin } from &#39;@/mixins/JeecgListMixin&#39;
108 import { GetAge } from '@/utils/util' 113 import { GetAge } from '@/utils/util'
109 import MinorModal from './modules/MinorModal' 114 import MinorModal from './modules/MinorModal'
110 import '@/assets/less/TableExpand.less' 115 import '@/assets/less/TableExpand.less'
111 -import { getAction } from '@api/manage' 116 +import { getAction,downFile } from '@api/manage'
112 import { FormTypes } from '@/utils/JEditableTableUtil' 117 import { FormTypes } from '@/utils/JEditableTableUtil'
113 //引入JS方法 118 //引入JS方法
114 import { filterDictTextByCache } from '@/components/dict/JDictSelectUtil' 119 import { filterDictTextByCache } from '@/components/dict/JDictSelectUtil'
@@ -131,6 +136,7 @@ export default { @@ -131,6 +136,7 @@ export default {
131 title: '序号', 136 title: '序号',
132 dataIndex: '', 137 dataIndex: '',
133 key: 'rowIndex', 138 key: 'rowIndex',
  139 + fixed: 'left',
134 width: 60, 140 width: 60,
135 align: 'center', 141 align: 'center',
136 customRender: function(t, r, index) { 142 customRender: function(t, r, index) {
@@ -140,6 +146,8 @@ export default { @@ -140,6 +146,8 @@ export default {
140 { 146 {
141 title: '姓名', 147 title: '姓名',
142 align: 'center', 148 align: 'center',
  149 + fixed: 'left',
  150 + width: 80,
143 dataIndex: 'name' 151 dataIndex: 'name'
144 }, 152 },
145 { 153 {
@@ -219,16 +227,6 @@ export default { @@ -219,16 +227,6 @@ export default {
219 // 表头 227 // 表头
220 familyColumns: [ 228 familyColumns: [
221 { 229 {
222 - title: '户号',  
223 - align: 'center',  
224 - dataIndex: 'householdNum'  
225 - },  
226 - {  
227 - title: '人员编号',  
228 - align: 'center',  
229 - dataIndex: 'number'  
230 - },  
231 - {  
232 title: '姓名', 230 title: '姓名',
233 align: 'center', 231 align: 'center',
234 dataIndex: 'name' 232 dataIndex: 'name'
@@ -280,15 +278,15 @@ export default { @@ -280,15 +278,15 @@ export default {
280 /* 分页参数 */ 278 /* 分页参数 */
281 familyPagination: { 279 familyPagination: {
282 current: 1, 280 current: 1,
283 - pageSize: 3, 281 + pageSize: 20,
284 hideOnSinglePage: true, 282 hideOnSinglePage: true,
285 showTotal: (total, range) => { 283 showTotal: (total, range) => {
286 return range[0] + '-' + range[1] + ' 共' + total + '条' 284 return range[0] + '-' + range[1] + ' 共' + total + '条'
287 }, 285 },
288 showQuickJumper: true, 286 showQuickJumper: true,
289 - showSizeChanger: true,  
290 total: 0 287 total: 0
291 - } 288 + },
  289 + familyLoading:false,
292 } 290 }
293 }, 291 },
294 created() { 292 created() {
@@ -304,16 +302,54 @@ export default { @@ -304,16 +302,54 @@ export default {
304 return GetAge(identity) 302 return GetAge(identity)
305 }, 303 },
306 handleDetail(record) { 304 handleDetail(record) {
307 - var that = this  
308 - let params = { id: record.id }  
309 - getAction(this.url.familys, params).then(res => {  
310 - that.info = record  
311 - that.infoVisible = true  
312 - that.familyDatas = res.result || []  
313 - }).finally(() => {  
314 - that.infoVisible = true 305 + var that = this;
  306 + that.info = record;
  307 + that.infoVisible = true;
  308 + that.familyDatas=[];
  309 + if(null!==record.householdNum && ''!==record.householdNum && undefined!==record.householdNum){
  310 + let params = { householdNum: record.householdNum }
  311 + that.familyLoading=true;
  312 + getAction(this.url.familys, params).then(res => {
  313 + if (res.success) {
  314 + that.familyLoading=false;
  315 + that.familyDatas = res.result || []
  316 + } else {
  317 + that.familyLoading=false;
  318 + }
  319 + })
  320 + }
  321 + },
  322 + handleImportModel: function(name, type) {
  323 + if (!name || typeof name != 'string') {
  324 + name = '导出文件'
  325 + }
  326 + let param = { 'fileName': name, 'type': type }
  327 + console.log('导出参数', param)
  328 + downFile(this.url.importExcelUrl, param).then((data) => {
  329 + console.log(data)
  330 + if (!data) {
  331 + this.$message.warning('文件下载失败')
  332 + return
  333 + }
  334 + console.log(window.navigator.msSaveBlob)
  335 + if (typeof window.navigator.msSaveBlob !== 'undefined') {
  336 + window.navigator.msSaveBlob(new Blob([data]), name + '.xlsx')
  337 + } else {
  338 + let url = window.URL.createObjectURL(new Blob([data]))
  339 + console.log(url)
  340 + let link = document.createElement('a')
  341 + console.log(link)
  342 + link.style.display = 'none'
  343 + link.href = url
  344 + link.setAttribute('download', name + '.xlsx')
  345 + console.log(link)
  346 + document.body.appendChild(link)
  347 + link.click()
  348 + console.log(link)
  349 + document.body.removeChild(link) //下载完成移除元素
  350 + window.URL.revokeObjectURL(url) //释放掉blob对象
  351 + }
315 }) 352 })
316 -  
317 }, 353 },
318 initDictConfig() { 354 initDictConfig() {
319 }, 355 },
@@ -332,11 +368,11 @@ export default { @@ -332,11 +368,11 @@ export default {
332 </script> 368 </script>
333 <style scoped> 369 <style scoped>
334 @import '~@assets/less/common.less'; 370 @import '~@assets/less/common.less';
335 -.ant-modal-body {  
336 - overflow-y: auto !important;  
337 - height: 750px !important;  
338 -}  
339 </style> 371 </style>
340 -<style>  
341 372
342 -</style>  
343 \ No newline at end of file 373 \ No newline at end of file
  374 +<style>
  375 +.ant-modal-body{
  376 + max-height: 700px;
  377 + overflow-y: auto;
  378 +}
  379 +</style>
juvenile-prosecution-vue/src/views/business/modules/MinorModal.vue
@@ -15,6 +15,18 @@ @@ -15,6 +15,18 @@
15 <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail"> 15 <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
16 <a-row> 16 <a-row>
17 <a-col :span="12"> 17 <a-col :span="12">
  18 + <a-form-model-item label="户号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="householdNum">
  19 + <a-input v-model="model.householdNum" placeholder="请输入户号"></a-input>
  20 + </a-form-model-item>
  21 + </a-col>
  22 + <a-col :span="12">
  23 + <a-form-model-item label="人员编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="number">
  24 + <a-input v-model="model.number" placeholder="请输入人员编号"></a-input>
  25 + </a-form-model-item>
  26 + </a-col>
  27 + </a-row>
  28 + <a-row>
  29 + <a-col :span="12">
18 <a-form-model-item label="姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name"> 30 <a-form-model-item label="姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
19 <a-input v-model="model.name" placeholder="请输入姓名"></a-input> 31 <a-input v-model="model.name" placeholder="请输入姓名"></a-input>
20 </a-form-model-item> 32 </a-form-model-item>
@@ -25,6 +37,11 @@ @@ -25,6 +37,11 @@
25 </a-form-model-item> 37 </a-form-model-item>
26 </a-col> 38 </a-col>
27 </a-row> 39 </a-row>
  40 + <a-col :span="12">
  41 + <a-form-model-item label="身份证号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="identity">
  42 + <a-input v-model="model.identity" placeholder="请输入身份证号"></a-input>
  43 + </a-form-model-item>
  44 + </a-col>
28 <a-row> 45 <a-row>
29 <a-col :span="12"> 46 <a-col :span="12">
30 <a-form-model-item label="学校名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="schoolName"> 47 <a-form-model-item label="学校名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="schoolName">
@@ -44,11 +61,6 @@ @@ -44,11 +61,6 @@
44 </a-form-model-item> 61 </a-form-model-item>
45 </a-col> 62 </a-col>
46 <a-col :span="12"> 63 <a-col :span="12">
47 - <a-form-model-item label="身份证号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="identity">  
48 - <a-input v-model="model.identity" placeholder="请输入身份证号"></a-input>  
49 - </a-form-model-item>  
50 - </a-col>  
51 - <a-col :span="12">  
52 <a-form-model-item label="家庭住址" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="address"> 64 <a-form-model-item label="家庭住址" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="address">
53 <a-textarea v-model="model.address" placeholder="请输入家庭住址" :rows="1" ></a-textarea> 65 <a-textarea v-model="model.address" placeholder="请输入家庭住址" :rows="1" ></a-textarea>
54 </a-form-model-item> 66 </a-form-model-item>
@@ -69,7 +81,7 @@ @@ -69,7 +81,7 @@
69 <a-row> 81 <a-row>
70 <a-col :span="12"> 82 <a-col :span="12">
71 <a-form-model-item label="重点关注原因" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="reason"> 83 <a-form-model-item label="重点关注原因" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="reason">
72 - <a-textarea v-model="model.reason" placeholder="请输入重点关注原因"></a-textarea> 84 + <j-dict-select-tag v-model="model.reason" dictCode="attention_reason" placeholder="请选择重点关注原因" />
73 </a-form-model-item> 85 </a-form-model-item>
74 </a-col> 86 </a-col>
75 <a-col :span="12"> 87 <a-col :span="12">
@@ -143,7 +155,6 @@ export default { @@ -143,7 +155,6 @@ export default {
143 }, 155 },
144 validatorRules: { 156 validatorRules: {
145 householdNum:[ { required: true, message: '请输入户号' },], 157 householdNum:[ { required: true, message: '请输入户号' },],
146 - number:[ { required: true, message: '请输入人员编号' },],  
147 name:[ { required: true, message: '请输入姓名' },], 158 name:[ { required: true, message: '请输入姓名' },],
148 gender:[ { required: true, message: '请选择性别' },], 159 gender:[ { required: true, message: '请选择性别' },],
149 identity:[ {required: true,validator:this.validateIdCard}], 160 identity:[ {required: true,validator:this.validateIdCard}],
@@ -305,8 +316,8 @@ export default { @@ -305,8 +316,8 @@ export default {
305 this.model = Object.assign({}, record) 316 this.model = Object.assign({}, record)
306 this.visible = true 317 this.visible = true
307 // 加载子表数据 318 // 加载子表数据
308 - if (this.model.id) {  
309 - let params = { id: this.model.id } 319 + if (this.model.householdNum) {
  320 + let params = { householdNum: this.model.householdNum }
310 this.requestTableData(this.url.familys, params) 321 this.requestTableData(this.url.familys, params)
311 } 322 }
312 }, 323 },
juvenile-prosecution-vue/src/views/system/UserList.vue
@@ -314,14 +314,11 @@ @@ -314,14 +314,11 @@
314 }, 314 },
315 methods: { 315 methods: {
316 doAnalyze(){ 316 doAnalyze(){
317 - putAction('/sys/analyze/doAnalyzeData', {}).then((res) => {  
318 - console.log(res)  
319 - }) 317 + putAction('/sys/analyze/doAnalyzeData', {})
320 // let self = this; 318 // let self = this;
321 // let apiBaseUrl = window._CONFIG['domianURL'] || "/jeecg-boot"; 319 // let apiBaseUrl = window._CONFIG['domianURL'] || "/jeecg-boot";
322 - // self.$axios.put('/sys/analyze/doAnalyzeData').then(res => { 320 + // self.$axios.put(apiBaseUrl+'/sys/analyze/doAnalyzeData').then(res => {
323 // console.log(res) 321 // console.log(res)
324 - //  
325 // }) 322 // })
326 }, 323 },
327 getAvatarView: function (avatar) { 324 getAvatarView: function (avatar) {