Browse Source

Merge remote-tracking branch 'origin/lingshan_master' into lingshan_master

master
yinzuomei 2 years ago
parent
commit
94392b0399
  1. 4
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/ZhzlResiCategoryEnum.java
  2. 279
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/lingshan/LingShanSpecialTypeSaveFormDTO.java
  3. 287
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/lingshan/LingShanSpecialTypeSaveResultDTO.java
  4. 3
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LingShanSpecialCrowdListResultDTO.java
  5. 2
      epmet-user/epmet-user-client/src/main/java/com/epmet/enums/LingShanSpecialCrowdTypeEnums.java
  6. 119
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java
  7. 23
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonDao.java
  8. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java
  9. 64
      epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdPersonEntity.java
  10. 12
      epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdPersonTypeEntity.java
  11. 7
      epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailBaseExcelData.java
  12. 28
      epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java
  13. 36
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java
  14. 334
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java
  15. 48
      epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonDao.xml
  16. 36
      epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml

4
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/ZhzlResiCategoryEnum.java

@ -12,7 +12,7 @@ public enum ZhzlResiCategoryEnum {
// buliangqingshaonian 不良青少年
// shequjiaozheng 社区矫正
// zhaoshizhaohuojingshenbing 肇事肇祸精神病
// xidurenyuan 吸毒人员
// jiedurenyuan 吸毒人员
resi_xfry("resi_xfry", "信访人员", "equal", "ic_resi_user", "IS_XFRY", "1", 1),
anzhibangjiao("anzhibangjiao", "安置帮教", "list_equal", "ic_special", "SPECIAL_RQLB", "anzhibangjiao", 2),
@ -20,7 +20,7 @@ public enum ZhzlResiCategoryEnum {
buliangqingshaonian("buliangqingshaonian", "不良青少年", "list_equal", "ic_special", "SPECIAL_RQLB", "buliangqingshaonian", 4),
shequjiaozheng("shequjiaozheng", "社区矫正", "list_equal", "ic_special", "SPECIAL_RQLB", "shequjiaozheng", 5),
zhaoshizhaohuojingshenbing("zhaoshizhaohuojingshenbing", "肇事肇祸精神病", "list_equal", "ic_special", "SPECIAL_RQLB", "zhaoshizhaohuojingshenbing", 6),
xidurenyuan("xidurenyuan", "吸毒人员", "list_equal", "ic_special", "SPECIAL_RQLB", "xidurenyuan", 7);
xidurenyuan("jiedurenyuan", "戒毒人员", "list_equal", "ic_special", "SPECIAL_RQLB", "xidurenyuan", 7);
private String code;
private String name;

279
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/lingshan/LingShanSpecialTypeSaveFormDTO.java

@ -0,0 +1,279 @@
package com.epmet.dto.form.lingshan;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
@Data
public class LingShanSpecialTypeSaveFormDTO {
private String name;
private String idCard;
private SpecialCrowdDetails specialCrowdDetails;
@Data
public static class SpecialCrowdDetails {
private SpecialCrowdAzbj anzhibangjiao ;
private SpecialCrowdJdry jiedurenyuan ;
private SpecialCrowdJzhz jingzhanghuanzhe ;
private SpecialCrowdSqjz shequjiaozheng ;
private SpecialCrowdXfry xinfangrenyuan ;
}
/**
* 安置帮教
*/
@Data
public static class SpecialCrowdAzbj {
@NotBlank(message = "原罪名不能为空")
private String originalCharge;
/**
* 释放日期
*/
@NotNull(message = "释放日期不能为空")
private Date releaseDate;
private Date originPrisonTerm;
/**
* 是否累犯0否1是
*/
private Integer recidivismFlag;
/**
* 是否安置0否1是
*/
private Integer emplacementFlag;
/**
* 安置日期
*/
private Date emplacementDate;
/**
* 安置帮教情况
*/
private String emplacementInfo;
/**
* 是否注销
*/
private Integer canceledFlag;
/**
* 注销原因
*/
private String canceledReason;
}
/**
* 戒毒人员
*/
@Data
public static class SpecialCrowdJdry {
/**
* 有无犯罪史
*/
@NotNull(message = "有无犯罪史不能为空")
private Integer criminalHistoryFlag;
/**
* 有无复吸史
*/
@NotNull(message = "有无复吸史不能为空")
private Integer drugRepetitionFlag;
/**
* 初次发现日期
*/
private Date firstDiscoveryDate;
/**
* 管控人姓名
*/
private String controllerName;
/**
* 管控人联系方式
*/
private String controllerContact;
/**
* 帮扶人姓名
*/
private String helperName;
/**
* 帮扶人联系方式
*/
private String helperContact;
/**
* 是否脱管
*/
private Integer detachedFlag;
/**
* 脱管原因
*/
private String detachedReason;
}
@Data
public static class SpecialCrowdJzhz {
@NotNull(message = "有无肇事肇祸史不能为空")
private Integer causeTroubleHistoryFlag;
/**
* 肇事肇祸次数
*/
@NotNull(message = "肇事肇祸次数不能为空")
private Integer causeTroubleTimes;
/**
* 目前诊断类型1精神分裂症2分裂情感性障碍3持久的妄想性障碍偏执性精神病4双相情感障碍5癫痫所致精神障碍6精神发育迟滞伴发精神障碍7重度抑郁发作8精神活性物质所致精神障碍9其他
*/
private Integer currentDiagnosis;
/**
* 危险性评估等级012345
*/
private Integer dangerousClass;
/**
* 是否具备外出能力
*/
private Integer canGoOutFlag;
/**
* 是否有暴力倾向
*/
private Integer violenceFlag;
/**
* 是否落实监管补助
*/
private Integer allowanceFlag;
/**
* 是否纳入低保
*/
private Integer subsistenceFlag;
/**
* 监护人姓名
*/
private String guardianName;
/**
* 监护人联系方式
*/
private String guardianContact;
}
@Data
public static class SpecialCrowdSqjz {
@NotNull(message = "矫正类型不能为空")
private Integer rectificateType;
/**
* 矫正开始日期
*/
private Date rectificateStartDate;
/**
* 矫正结束日期
*/
private Date rectificateEndDate;
/**
* 原羁押场所
*/
private String originDetainAddress;
/**
* 原罪名
*/
private String originalCharge;
/**
* 接受方式1.自行报到2狱所押送3当庭交接4其他
*/
private Integer receiveWay;
/**
* 矫正情况说明
*/
private String rectificateInfo;
/**
* 是否脱管
*/
private Integer detachedFlag;
/**
* 脱管原因
*/
private String detachedReason;
/**
* 是否注销
*/
private Integer canceledFlag;
/**
* 注销原因
*/
private String canceledReason;
}
@Data
public static class SpecialCrowdXfry {
@NotBlank(message = "反映问题不能为空")
private String problem;
/**
* 稳控措施
*/
@NotBlank(message = "稳控措施不能为空")
private String stableControlMeasurement;
/**
* 是否多次上访
*/
private Integer multipleFlag;
/**
* 是否在当地
*/
private Integer localFlag;
/**
* 分管领导
*/
private String branchLeader;
/**
* 分管领导联系方式
*/
private String branchLeaderContact;
/**
* 负责人
*/
private String principal;
/**
* 负责人联系方式
*/
private String principalContact;
/**
* 稳控人员名单
*/
private String stableControlerList;
}
}

287
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/lingshan/LingShanSpecialTypeSaveResultDTO.java

@ -0,0 +1,287 @@
package com.epmet.dto.form.lingshan;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
@Data
public class LingShanSpecialTypeSaveResultDTO {
private String gender;
private String genderZh;
private String nation;
private String birthday;
private String domicilePlace;
private String name;
private String mobile;
private String address;
private String idCard;
private SpecialCrowdDetails specialCrowdDetails = new SpecialCrowdDetails();
@Data
public static class SpecialCrowdDetails {
private SpecialCrowdAzbj anzhibangjiao ;
private SpecialCrowdJdry jiedurenyuan ;
private SpecialCrowdJzhz jingzhanghuanzhe ;
private SpecialCrowdSqjz shequjiaozheng ;
private SpecialCrowdXfry xinfangrenyuan ;
}
/**
* 安置帮教
*/
@Data
public static class SpecialCrowdAzbj {
@NotBlank(message = "原罪名不能为空")
private String originalCharge;
/**
* 释放日期
*/
@NotNull(message = "释放日期不能为空")
private Date releaseDate;
private Date originPrisonTerm;
/**
* 是否累犯0否1是
*/
private Integer recidivismFlag;
/**
* 是否安置0否1是
*/
private Integer emplacementFlag;
/**
* 安置日期
*/
private Date emplacementDate;
/**
* 安置帮教情况
*/
private String emplacementInfo;
/**
* 是否注销
*/
private Integer canceledFlag;
/**
* 注销原因
*/
private String canceledReason;
}
/**
* 戒毒人员
*/
@Data
public static class SpecialCrowdJdry {
/**
* 有无犯罪史
*/
@NotNull(message = "有无犯罪史不能为空")
private Integer criminalHistoryFlag;
/**
* 有无复吸史
*/
@NotNull(message = "有无复吸史不能为空")
private Integer drugRepetitionFlag;
/**
* 初次发现日期
*/
private Date firstDiscoveryDate;
/**
* 管控人姓名
*/
private String controllerName;
/**
* 管控人联系方式
*/
private String controllerContact;
/**
* 帮扶人姓名
*/
private String helperName;
/**
* 帮扶人联系方式
*/
private String helperContact;
/**
* 是否脱管
*/
private Integer detachedFlag;
/**
* 脱管原因
*/
private String detachedReason;
}
@Data
public static class SpecialCrowdJzhz {
@NotNull(message = "有无肇事肇祸史不能为空")
private Integer causeTroubleHistoryFlag;
/**
* 肇事肇祸次数
*/
@NotNull(message = "肇事肇祸次数不能为空")
private Integer causeTroubleTimes;
/**
* 目前诊断类型1精神分裂症2分裂情感性障碍3持久的妄想性障碍偏执性精神病4双相情感障碍5癫痫所致精神障碍6精神发育迟滞伴发精神障碍7重度抑郁发作8精神活性物质所致精神障碍9其他
*/
private Integer currentDiagnosis;
/**
* 危险性评估等级012345
*/
private Integer dangerousClass;
/**
* 是否具备外出能力
*/
private Integer canGoOutFlag;
/**
* 是否有暴力倾向
*/
private Integer violenceFlag;
/**
* 是否落实监管补助
*/
private Integer allowanceFlag;
/**
* 是否纳入低保
*/
private Integer subsistenceFlag;
/**
* 监护人姓名
*/
private String guardianName;
/**
* 监护人联系方式
*/
private String guardianContact;
}
@Data
public static class SpecialCrowdSqjz {
@NotNull(message = "矫正类型不能为空")
private Integer rectificateType;
/**
* 矫正开始日期
*/
private Date rectificateStartDate;
/**
* 矫正结束日期
*/
private Date rectificateEndDate;
/**
* 原羁押场所
*/
private String originDetainAddress;
/**
* 原罪名
*/
private String originalCharge;
/**
* 接受方式1.自行报到2狱所押送3当庭交接4其他
*/
private Integer receiveWay;
/**
* 矫正情况说明
*/
private String rectificateInfo;
/**
* 是否脱管
*/
private Integer detachedFlag;
/**
* 脱管原因
*/
private String detachedReason;
/**
* 是否注销
*/
private Integer canceledFlag;
/**
* 注销原因
*/
private String canceledReason;
}
@Data
public static class SpecialCrowdXfry {
@NotBlank(message = "反映问题不能为空")
private String problem;
/**
* 稳控措施
*/
@NotBlank(message = "稳控措施不能为空")
private String stableControlMeasurement;
/**
* 是否多次上访
*/
private Integer multipleFlag;
/**
* 是否在当地
*/
private Integer localFlag;
/**
* 分管领导
*/
private String branchLeader;
/**
* 分管领导联系方式
*/
private String branchLeaderContact;
/**
* 负责人
*/
private String principal;
/**
* 负责人联系方式
*/
private String principalContact;
/**
* 稳控人员名单
*/
private String stableControlerList;
}
}

3
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LingShanSpecialCrowdListResultDTO.java

@ -8,8 +8,9 @@ import java.util.Date;
@Data
public class LingShanSpecialCrowdListResultDTO {
private String resiId;
private String orgNamePath;
private String specialType;
private String specialTypesStr;
private String specialTypeDisplay;
private String name;
private String mobile;

2
epmet-user/epmet-user-client/src/main/java/com/epmet/enums/LingShanSpecialCrowdTypeEnums.java

@ -10,7 +10,7 @@ package com.epmet.enums;
public enum LingShanSpecialCrowdTypeEnums {
AZBJ("anzhibangjiao", "安置帮教", 1),
SQJZ("shequjiaozheng", "社区矫正", 1),
JDRY("xidurenyuan", "戒毒人员", 1),
JDRY("jiedurenyuan", "戒毒人员", 1),
JZHZ("jingzhanghuanzhe", "精障患者", 1),
XFRY("xinfangrenyuan", "信访人员", 1);

119
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java

@ -9,6 +9,8 @@ import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.FileUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.lingshan.LingShanSpecialTypeSaveFormDTO;
import com.epmet.dto.form.lingshan.LingShanSpecialTypeSaveResultDTO;
import com.epmet.dto.result.LingShanSpecialCrowdListResultDTO;
import com.epmet.enums.LingShanSpecialCrowdTypeEnums;
import com.epmet.excel.data.*;
@ -77,9 +79,6 @@ public class LingShanSpecialCrowdController {
} finally {
org.apache.poi.util.IOUtils.closeQuietly(is);
}
}
/**
@ -89,7 +88,7 @@ public class LingShanSpecialCrowdController {
* anzhibangjiao
* buliangqingshaonian
* shequjiaozheng
* xidurenyuan
* jiedurenyuan
* xiejiaorenyuan
* zhaoshizhaohuojingshenbing
* @return
@ -110,7 +109,7 @@ public class LingShanSpecialCrowdController {
String taskId = lingShanSpecialCrowdService.importSpecialCrowd(crowdCategory, fileSavePath.toString(), originalFilename);
return new Result().ok(taskId);
} catch (Exception e) {
// 3.出错的话,删除文件
// 3.出错的话,删除文件。不能在finally中删除,因为正常执行的话,是在异步线程中执行导入,这里删除了,那子线程就获取不到文件了,所以子线程中有单独的删除逻辑
FileUtils.deleteFileIfExists(fileSavePath);
throw e;
}
@ -140,68 +139,78 @@ public class LingShanSpecialCrowdController {
}
}
// /**
// * @description: 安置帮教新增
// * @param azbjData:
// * @return
// * @author: WangXianZhang
// * @date: 2023/4/20 2:50 PM
// */
// @PostMapping("anzhibangjiao/save")
// public Result saveSpecialCrowd(@RequestBody LingShanSpecialCrowdDetailAzbjExcelData azbjData) {
// ValidatorUtils.validateEntity(azbjData);
//
// lingShanSpecialCrowdService.createSpecialCrowd(azbjData, "anzhibangjiao");
// return new Result();
// }
//
// @PostMapping("jiedurenyuan/save")
// public Result saveSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailJdryExcelData jdryData) {
// ValidatorUtils.validateEntity(jdryData);
//
// lingShanSpecialCrowdService.createSpecialCrowd(jdryData, "jiedurenyuan");
// return new Result();
// }
//
// @PostMapping("jingzhanhuanzhe/save")
// public Result saveSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailJzhzExcelData jzhzData) {
// ValidatorUtils.validateEntity(jzhzData);
//
// lingShanSpecialCrowdService.createSpecialCrowd(jzhzData, "jingzhanhuanzhe");
// return new Result();
// }
//
// @PostMapping("shequjiaozheng/save")
// public Result saveSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailSqjzExcelData sqjzData) {
// ValidatorUtils.validateEntity(sqjzData);
//
// lingShanSpecialCrowdService.createSpecialCrowd(sqjzData, "shequjiaozheng");
// return new Result();
// }
//
// @PostMapping("xinfangrenyuan/save")
// public Result saveSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailXfryExcelData xfryData) {
// ValidatorUtils.validateEntity(xfryData);
//
// lingShanSpecialCrowdService.createSpecialCrowd(xfryData, "xinfangrenyuan");
// return new Result();
// }
/**
* @description: 安置帮教新增
* @param azbjData:
* @description: 保存
* @param input:
* @return
* @author: WangXianZhang
* @date: 2023/4/20 2:50 PM
* @date: 2023/4/23 10:58 AM
*/
@PostMapping("anzhibangjiao/save")
public Result saveSpecialCrowd(@RequestBody LingShanSpecialCrowdDetailAzbjExcelData azbjData) {
ValidatorUtils.validateEntity(azbjData);
lingShanSpecialCrowdService.createSpecialCrowd(azbjData, "anzhibangjiao");
return new Result();
}
@PostMapping("xidurenyuan/save")
public Result saveSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailJdryExcelData jdryData) {
ValidatorUtils.validateEntity(jdryData);
lingShanSpecialCrowdService.createSpecialCrowd(jdryData, "xidurenyuan");
return new Result();
}
@PostMapping("jingzhanhuanzhe/save")
public Result saveSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailJzhzExcelData jzhzData) {
ValidatorUtils.validateEntity(jzhzData);
lingShanSpecialCrowdService.createSpecialCrowd(jzhzData, "jingzhanhuanzhe");
return new Result();
}
@PostMapping("shequjiaozheng/save")
public Result saveSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailSqjzExcelData sqjzData) {
ValidatorUtils.validateEntity(sqjzData);
lingShanSpecialCrowdService.createSpecialCrowd(sqjzData, "shequjiaozheng");
return new Result();
}
@PostMapping("xinfangrenyuan/save")
public Result saveSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailXfryExcelData xfryData) {
ValidatorUtils.validateEntity(xfryData);
lingShanSpecialCrowdService.createSpecialCrowd(xfryData, "xinfangrenyuan");
@PostMapping("save")
public Result saveSpecialCrowd(@RequestBody LingShanSpecialTypeSaveFormDTO input) {
ValidatorUtils.validateEntity(input);
lingShanSpecialCrowdService.saveSpecialCrowd(input);
return new Result();
}
/**
* @description: 特殊人群详情
* @param personId:
* @param specialType:
* @return
* @author: WangXianZhang
* @date: 2023/4/20 3:44 PM
*/
@GetMapping("getPersonSpecialTypeDetail")
public Result<LingShanSpecialCrowdDetailBaseExcelData> getPersonSpecialTypeDetail(@RequestParam("idCard") String idCard,
@RequestParam("specialType") String specialType,
@RequestParam("specialDetailId") String specialDetailId) {
public Result<LingShanSpecialTypeSaveResultDTO> getPersonSpecialTypeDetail(@RequestParam("resiId") String resiId) {
LingShanSpecialCrowdDetailBaseExcelData r = lingShanSpecialCrowdService.getPersonSpecialTypeDetail(idCard, specialType, specialDetailId);
return new Result<LingShanSpecialCrowdDetailBaseExcelData>().ok(r);
LingShanSpecialTypeSaveResultDTO r = lingShanSpecialCrowdService.getPersonSpecialTypeDetail(resiId);
return new Result<LingShanSpecialTypeSaveResultDTO>().ok(r);
}
/**
@ -243,13 +252,13 @@ public class LingShanSpecialCrowdController {
@PostMapping("deleteByType")
public Result deleteByType(@RequestBody Map<String, String> params) {
String specialType = params.get("specialType");
String idCard = params.get("idCard");
String resiId = params.get("resiId");
if (StringUtils.isAnyBlank(specialType, idCard)) {
if (StringUtils.isAnyBlank(specialType, resiId)) {
throw new ValidateException("特殊人群类型或身份证不能为空");
}
lingShanSpecialCrowdService.deleteByType(specialType, idCard);
lingShanSpecialCrowdService.deleteByType(specialType, resiId);
return new Result();
}

23
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonDao.java

@ -1,23 +0,0 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.entity.LingshanSpecialCrowdDetailAzbjEntity;
import com.epmet.entity.LingshanSpecialCrowdPersonEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 灵山-特殊人群-人员基础信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2023-04-18
*/
@Mapper
public interface LingshanSpecialCrowdPersonDao extends BaseDao<LingshanSpecialCrowdPersonEntity> {
void saveOrUpdateManually(@Param("list") List<LingshanSpecialCrowdPersonEntity> list);
void deletePhysical(@Param("idCard") String idCard);
}

2
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java

@ -27,5 +27,5 @@ public interface LingshanSpecialCrowdPersonTypeDao extends BaseDao<LingshanSpeci
@Param("mobile") String mobile,
@Param("idCard") String idCard);
void deletePhysical(@Param("specialType") String specialType, @Param("idCard") String idCard);
void deletePhysical(@Param("specialType") String specialType, @Param("resiId") String resiId);
}

64
epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdPersonEntity.java

@ -1,64 +0,0 @@
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* 灵山-特殊人群-人员基础信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2023-04-18
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("lingshan_special_crowd_person")
public class LingshanSpecialCrowdPersonEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户Id
*/
private String customerId;
/**
* org id路径:分割
*/
private String orgIdPath;
/**
* 姓名
*/
private String name;
/**
* 证件号
*/
private String idCard;
public LingshanSpecialCrowdPersonEntity() {
}
public LingshanSpecialCrowdPersonEntity(String id, String customerId, String orgIdPath, String name, String idCard,
String delFlag, Integer revision, Date createdTime, String createdBy, Date updatedTime,
String updatedBy) {
this.customerId = customerId;
this.orgIdPath = orgIdPath;
this.name = name;
this.idCard = idCard;
this.setDelFlag(delFlag);
this.setCreatedBy(createdBy);
this.setCreatedTime(createdTime);
this.setUpdatedBy(updatedBy);
this.setUpdatedTime(updatedTime);
this.setRevision(revision);
this.setId(id);
}
}

12
epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdPersonTypeEntity.java

@ -32,6 +32,15 @@ public class LingshanSpecialCrowdPersonTypeEntity extends BaseEpmetEntity {
*/
private String orgIdPath;
/**
* @description: 居民ID
* @param null:
* @return
* @author: WangXianZhang
* @date: 2023/4/23 10:26 AM
*/
private String resiId;
/**
* 证件号
*/
@ -42,8 +51,9 @@ public class LingshanSpecialCrowdPersonTypeEntity extends BaseEpmetEntity {
*/
private String specialType;
public LingshanSpecialCrowdPersonTypeEntity(String id, String customerId, String orgIdPath, String idCard, String specialType, String delFlag,
public LingshanSpecialCrowdPersonTypeEntity(String id, String customerId, String orgIdPath, String resiId, String idCard, String specialType, String delFlag,
Integer revision, Date createdTime, String createdBy, Date updatedTime, String updatedBy) {
this.resiId = resiId;
this.customerId = customerId;
this.orgIdPath = orgIdPath;
this.idCard = idCard;

7
epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailBaseExcelData.java

@ -1,5 +1,6 @@
package com.epmet.excel.data;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@ -28,4 +29,10 @@ public class LingShanSpecialCrowdDetailBaseExcelData extends LingShanSpecialCrow
*/
@ExcelProperty(value = "错误信息")
private String errorInfo;
/**
* 居民id
*/
@ExcelIgnore
private String resiId;
}

28
epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java

@ -1,13 +1,8 @@
package com.epmet.excel.handler;
import cn.hutool.log.Log;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.excel.read.listener.ReadListener;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.epmet.common.token.util.TokenUtil;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import com.epmet.commons.tools.distributedlock.DistributedLock;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetErrorCode;
@ -20,7 +15,6 @@ import com.epmet.commons.tools.utils.PidUtils;
import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.entity.LingshanSpecialCrowdDetailBaseEntity;
import com.epmet.entity.LingshanSpecialCrowdPersonEntity;
import com.epmet.entity.LingshanSpecialCrowdPersonTypeEntity;
import com.epmet.enums.LingShanSpecialCrowdTypeEnums;
import com.epmet.excel.data.LingShanSpecialCrowdDetailBaseExcelData;
@ -29,13 +23,11 @@ import com.epmet.service.LingShanSpecialCrowdService;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
import org.redisson.api.RLock;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
/**
* 灵山大屏-抽象的导入excel监听器
@ -102,7 +94,8 @@ public abstract class AbstractLingShanSpecialCrowdExcelImportListener<T extends
private AtomicInteger correctDatasQty = new AtomicInteger();
private List<LingshanSpecialCrowdPersonEntity> persons = new ArrayList<>();
// 为什么去掉了?因为需求改成了:直接用type根居民基础信息关联
// private List<LingshanSpecialCrowdPersonEntity> persons = new ArrayList<>();
private List<LingshanSpecialCrowdPersonTypeEntity> personTypes = new ArrayList<>();
protected LingShanSpecialCrowdService lingShanSpecialCrowdService;
@ -262,9 +255,9 @@ public abstract class AbstractLingShanSpecialCrowdExcelImportListener<T extends
errorDatas.add(row);
it.remove();
} else {
persons.add(new LingshanSpecialCrowdPersonEntity(IdWorker.getIdStr(), customerId, orgIdPath, row.getName(), row.getIdCard(),
"0", 0, now, currentStaffInfo.getStaffId(), now, currentStaffInfo.getStaffId()));
personTypes.add(new LingshanSpecialCrowdPersonTypeEntity(IdWorker.getIdStr(), customerId, orgIdPath, row.getIdCard(), specialCrowdType.getType(),
// persons.add(new LingshanSpecialCrowdPersonEntity(IdWorker.getIdStr(), customerId, orgIdPath, row.getName(), row.getIdCard(),
// "0", 0, now, currentStaffInfo.getStaffId(), now, currentStaffInfo.getStaffId()));
personTypes.add(new LingshanSpecialCrowdPersonTypeEntity(IdWorker.getIdStr(), customerId, orgIdPath, row.getResiId(), row.getIdCard(), specialCrowdType.getType(),
"0", 0, now, currentStaffInfo.getStaffId(), now, currentStaffInfo.getStaffId()));
E e = ConvertUtils.sourceToTarget(row, entityClass);
@ -283,8 +276,10 @@ public abstract class AbstractLingShanSpecialCrowdExcelImportListener<T extends
}
// 执行保存
if(!CollectionUtils.isEmpty(persons) && !CollectionUtils.isEmpty(personTypes)) {
savePersonAndTypes(persons, personTypes);
if(
// !CollectionUtils.isEmpty(persons) &&
!CollectionUtils.isEmpty(personTypes)) {
savePersonAndTypes(personTypes);
}
// 将错误的数据处理 todo
@ -295,14 +290,13 @@ public abstract class AbstractLingShanSpecialCrowdExcelImportListener<T extends
/**
* @description: 保存人员信息人员类型
* @param persons:
* @param personTypes:
* @return
* @author: WangXianZhang
* @date: 2023/4/19 11:06 AM
*/
private void savePersonAndTypes(List<LingshanSpecialCrowdPersonEntity> persons, List<LingshanSpecialCrowdPersonTypeEntity> personTypes) {
lingShanSpecialCrowdService.savePersonAndTypes(persons, personTypes);
private void savePersonAndTypes(List<LingshanSpecialCrowdPersonTypeEntity> personTypes) {
lingShanSpecialCrowdService.savePersonAndTypes(personTypes);
}
/**

36
epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java

@ -1,6 +1,8 @@
package com.epmet.service;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.form.lingshan.LingShanSpecialTypeSaveFormDTO;
import com.epmet.dto.form.lingshan.LingShanSpecialTypeSaveResultDTO;
import com.epmet.dto.result.LingShanSpecialCrowdListResultDTO;
import com.epmet.entity.*;
import com.epmet.excel.data.LingShanSpecialCrowdDetailAzbjExcelData;
@ -33,7 +35,7 @@ public interface LingShanSpecialCrowdService {
*/
String validate(LingShanSpecialCrowdDetailBaseExcelData row);
void savePersonAndTypes(List<LingshanSpecialCrowdPersonEntity> persons, List<LingshanSpecialCrowdPersonTypeEntity> personTypes);
void savePersonAndTypes(List<LingshanSpecialCrowdPersonTypeEntity> personTypes);
/**
* @description: 安置帮教-导入
@ -47,28 +49,27 @@ public interface LingShanSpecialCrowdService {
void saveBatch(List<LingshanSpecialCrowdDetailSqjzEntity> entities, LingshanSpecialCrowdDetailSqjzEntity e);
void saveBatch(List<LingshanSpecialCrowdDetailXfryEntity> entities, LingshanSpecialCrowdDetailXfryEntity e);
/**
* @description: 新增-安置帮教
* @param azbjData:
* @return
* @author: WangXianZhang
* @date: 2023/4/20 2:51 PM
*/
void createSpecialCrowd(LingShanSpecialCrowdDetailBaseExcelData azbjData, String specialType);
// /**
// * @description: 新增-安置帮教
// * @param azbjData:
// * @return
// * @author: WangXianZhang
// * @date: 2023/4/20 2:51 PM
// */
// void createSpecialCrowd(LingShanSpecialCrowdDetailBaseExcelData azbjData, String specialType);
/**
* @description: 特殊人群详情
* @param idCard:
* @param specialType:
* @return
* @author: WangXianZhang
* @date: 2023/4/20 3:45 PM
*/
LingShanSpecialCrowdDetailBaseExcelData getPersonSpecialTypeDetail(String idCard, String specialType, String specialDetailId);
LingShanSpecialTypeSaveResultDTO getPersonSpecialTypeDetail(String resiId);
/**
* @description: 列表查询
* @param orgId:
* @param orgId:
* @param orgType:
* @param specialType:
* @param name:
@ -81,5 +82,14 @@ public interface LingShanSpecialCrowdService {
PageData<LingShanSpecialCrowdListResultDTO> listSpecialCrowds(String orgId, String orgType, String specialType, String name, String mobile,
String idCard, Integer pageNo, Integer pageSize);
void deleteByType(String specialType, String idCard);
void deleteByType(String specialType, String resiId);
/**
* @description: 保存或修改
* @param input:
* @return
* @author: WangXianZhang
* @date: 2023/4/23 11:06 AM
*/
void saveSpecialCrowd(LingShanSpecialTypeSaveFormDTO input);
}

334
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java

@ -27,6 +27,8 @@ import com.epmet.dto.IcBuildingDTO;
import com.epmet.dto.IcBuildingUnitDTO;
import com.epmet.dto.IcNeighborHoodDTO;
import com.epmet.dto.IcResiUserDTO;
import com.epmet.dto.form.lingshan.LingShanSpecialTypeSaveFormDTO;
import com.epmet.dto.form.lingshan.LingShanSpecialTypeSaveResultDTO;
import com.epmet.dto.result.HouseAgencyInfoResultDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.dto.result.LingShanSpecialCrowdListResultDTO;
@ -59,10 +61,7 @@ import org.springframework.web.multipart.commons.CommonsMultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.atomic.AtomicReference;
@ -74,9 +73,6 @@ import java.util.concurrent.atomic.AtomicReference;
@Service
public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdService, ResultDataResolver {
@Autowired
private LingshanSpecialCrowdPersonDao specialCrowdPersonDao;
@Autowired
private LingshanSpecialCrowdPersonTypeDao specialCrowdPersonTypeDao;
@ -251,22 +247,27 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ
return "居民信息不存在,请先维护居民基础信息。";
}
if (!resiEntity.getName().equals(name)) {
return String.format("姓名信息与居民基础信息不一致。(在居民库中根据身份证号找到的居民姓名为:%s)", name);
return String.format("姓名信息与居民基础信息不一致。(在居民库中根据身份证号找到的居民姓名为:%s)", resiEntity.getName());
}
// 设置居民id
row.setResiId(resiEntity.getId());
return null;
}
@Override
public void savePersonAndTypes(List<LingshanSpecialCrowdPersonEntity> persons, List<LingshanSpecialCrowdPersonTypeEntity> personTypes) {
List<List<LingshanSpecialCrowdPersonEntity>> personParts = ListUtils.partition(persons, 50);
public void savePersonAndTypes(List<LingshanSpecialCrowdPersonTypeEntity> personTypes) {
// List<List<LingshanSpecialCrowdPersonEntity>> personParts = ListUtils.partition(persons, 50);
List<List<LingshanSpecialCrowdPersonTypeEntity>> personTypeParts = ListUtils.partition(personTypes, 50);
for (List<LingshanSpecialCrowdPersonEntity> p : personParts) {
specialCrowdPersonDao.saveOrUpdateManually(p);
}
// for (List<LingshanSpecialCrowdPersonEntity> p : personParts) {
// specialCrowdPersonDao.saveOrUpdateManually(p);
// }
for (List<LingshanSpecialCrowdPersonTypeEntity> p : personTypeParts) {
specialCrowdPersonTypeDao.saveOrUpdateManually(p);
if (CollectionUtils.isNotEmpty(p)) {
specialCrowdPersonTypeDao.saveOrUpdateManually(p);
}
}
}
@ -274,7 +275,9 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ
public void saveBatch(List<LingshanSpecialCrowdDetailAzbjEntity> entities, LingshanSpecialCrowdDetailAzbjEntity e) {
List<List<LingshanSpecialCrowdDetailAzbjEntity>> partition = ListUtils.partition(entities, 50);
for (List<LingshanSpecialCrowdDetailAzbjEntity> l : partition) {
specialCrowdDetailAzbjDao.saveBatchManually(l);
if (CollectionUtils.isNotEmpty(l)) {
specialCrowdDetailAzbjDao.saveBatchManually(l);
}
}
}
@ -282,7 +285,9 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ
public void saveBatch(List<LingshanSpecialCrowdDetailJdryEntity> entities, LingshanSpecialCrowdDetailJdryEntity e) {
List<List<LingshanSpecialCrowdDetailJdryEntity>> partition = ListUtils.partition(entities, 50);
for (List<LingshanSpecialCrowdDetailJdryEntity> l : partition) {
specialCrowdDetailJdryDao.saveBatchManually(l);
if (CollectionUtils.isNotEmpty(l)) {
specialCrowdDetailJdryDao.saveBatchManually(l);
}
}
}
@ -290,7 +295,9 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ
public void saveBatch(List<LingshanSpecialCrowdDetailJzhzEntity> entities, LingshanSpecialCrowdDetailJzhzEntity e) {
List<List<LingshanSpecialCrowdDetailJzhzEntity>> partition = ListUtils.partition(entities, 50);
for (List<LingshanSpecialCrowdDetailJzhzEntity> l : partition) {
specialCrowdDetailJzhzDao.saveBatchManually(l);
if (CollectionUtils.isNotEmpty(l)) {
specialCrowdDetailJzhzDao.saveBatchManually(l);
}
}
}
@ -298,7 +305,9 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ
public void saveBatch(List<LingshanSpecialCrowdDetailSqjzEntity> entities, LingshanSpecialCrowdDetailSqjzEntity e) {
List<List<LingshanSpecialCrowdDetailSqjzEntity>> partition = ListUtils.partition(entities, 50);
for (List<LingshanSpecialCrowdDetailSqjzEntity> l : partition) {
specialCrowdDetailSqjzDao.saveBatchManually(l);
if (CollectionUtils.isNotEmpty(l)) {
specialCrowdDetailSqjzDao.saveBatchManually(l);
}
}
}
@ -306,14 +315,76 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ
public void saveBatch(List<LingshanSpecialCrowdDetailXfryEntity> entities, LingshanSpecialCrowdDetailXfryEntity e) {
List<List<LingshanSpecialCrowdDetailXfryEntity>> partition = ListUtils.partition(entities, 50);
for (List<LingshanSpecialCrowdDetailXfryEntity> l : partition) {
specialCrowdDetailXfryDao.saveBatchManually(l);
if (CollectionUtils.isNotEmpty(l)) {
specialCrowdDetailXfryDao.saveBatchManually(l);
}
}
}
// @Override
// public void createSpecialCrowd(LingShanSpecialCrowdDetailBaseExcelData specialData, String specialType) {
// // 检查
// String validateRst = validate(specialData);
// if (StringUtils.isNotBlank(validateRst)) {
// throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, validateRst);
// }
//
// String customerId = EpmetRequestHolder.getLoginUserCustomerId();
// String staffId = EpmetRequestHolder.getLoginUserId();
// CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, staffId);
// String orgIdPath = PidUtils.convertPid2OrgIdPath(staffInfo.getAgencyId(), staffInfo.getAgencyPIds());
//
// Date now = new Date();
//
// // 保存人员和类型信息
// LingshanSpecialCrowdPersonEntity person = new LingshanSpecialCrowdPersonEntity(IdWorker.getIdStr(), customerId, orgIdPath, specialData.getName(), specialData.getIdCard(),
// "0", 0, now, staffId, now, staffId);
// //
// LingshanSpecialCrowdPersonTypeEntity personType = new LingshanSpecialCrowdPersonTypeEntity(IdWorker.getIdStr(), customerId, orgIdPath, specialData.getResiId(), specialData.getIdCard(), specialType,
// "0", 0, now, staffId, now, staffId);
//
// savePersonAndTypes(Arrays.asList(person), Arrays.asList(personType));
//
// // Class clazz;
// // 这下面的代码其实类名写错了,但是这个方法也不用了,不改了就
// switch (specialType) {
// case "anzhibangjiao":
// LingshanSpecialCrowdDetailAzbjEntity e1 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class);
// setCommonFields(e1, customerId, orgIdPath, now, staffId);
// saveBatch(Arrays.asList(e1), e1);
// break;
// case "xinfangrenyuan":
// LingshanSpecialCrowdDetailAzbjEntity e2 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class);
// setCommonFields(e2, customerId, orgIdPath, now, staffId);
// saveBatch(Arrays.asList(e2), e2);
// break;
// case "jiedurenyuan":
// LingshanSpecialCrowdDetailAzbjEntity e3 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class);
// setCommonFields(e3, customerId, orgIdPath, now, staffId);
// saveBatch(Arrays.asList(e3), e3);
// break;
// case "shequjiaozheng":
// LingshanSpecialCrowdDetailAzbjEntity e4 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class);
// setCommonFields(e4, customerId, orgIdPath, now, staffId);
// saveBatch(Arrays.asList(e4), e4);
// break;
// case "jingzhanghuanzhe":
// LingshanSpecialCrowdDetailAzbjEntity e5 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class);
// setCommonFields(e5, customerId, orgIdPath, now, staffId);
// saveBatch(Arrays.asList(e5), e5);
// break;
// }
//
// }
@Transactional(rollbackFor = Exception.class)
@Override
public void createSpecialCrowd(LingShanSpecialCrowdDetailBaseExcelData specialData, String specialType) {
public void saveSpecialCrowd(LingShanSpecialTypeSaveFormDTO input) {
LingShanSpecialCrowdDetailBaseExcelData vt = new LingShanSpecialCrowdDetailBaseExcelData();
vt.setName(input.getName());
vt.setIdCard(input.getIdCard());
// 检查
String validateRst = validate(specialData);
String validateRst = validate(vt);
if (StringUtils.isNotBlank(validateRst)) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, validateRst);
}
@ -325,45 +396,66 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ
Date now = new Date();
// 保存人员和类型信息
LingshanSpecialCrowdPersonEntity person = new LingshanSpecialCrowdPersonEntity(IdWorker.getIdStr(), customerId, orgIdPath, specialData.getName(), specialData.getIdCard(),
"0", 0, now, staffId, now, staffId);
//
LingshanSpecialCrowdPersonTypeEntity personType = new LingshanSpecialCrowdPersonTypeEntity(IdWorker.getIdStr(), customerId, orgIdPath, specialData.getIdCard(), specialType,
"0", 0, now, staffId, now, staffId);
savePersonAndTypes(Arrays.asList(person), Arrays.asList(personType));
// Class clazz;
switch (specialType) {
case "anzhibangjiao":
LingshanSpecialCrowdDetailAzbjEntity e1 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class);
setCommonFields(e1, customerId, orgIdPath, now, staffId);
saveBatch(Arrays.asList(e1), e1);
break;
case "xinfangrenyuan":
LingshanSpecialCrowdDetailAzbjEntity e2 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class);
setCommonFields(e2, customerId, orgIdPath, now, staffId);
saveBatch(Arrays.asList(e2), e2);
break;
case "xidurenyuan":
LingshanSpecialCrowdDetailAzbjEntity e3 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class);
setCommonFields(e3, customerId, orgIdPath, now, staffId);
saveBatch(Arrays.asList(e3), e3);
break;
case "shequjiaozheng":
LingshanSpecialCrowdDetailAzbjEntity e4 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class);
setCommonFields(e4, customerId, orgIdPath, now, staffId);
saveBatch(Arrays.asList(e4), e4);
break;
case "jingzhanghuanzhe":
LingshanSpecialCrowdDetailAzbjEntity e5 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class);
setCommonFields(e5, customerId, orgIdPath, now, staffId);
saveBatch(Arrays.asList(e5), e5);
break;
ArrayList<LingshanSpecialCrowdPersonTypeEntity> types2Save = new ArrayList<>();
// 保存人群详情
if (input.getSpecialCrowdDetails().getAnzhibangjiao() != null) {
LingshanSpecialCrowdDetailAzbjEntity azbj = ConvertUtils.sourceToTarget(input.getSpecialCrowdDetails().getAnzhibangjiao(), LingshanSpecialCrowdDetailAzbjEntity.class);
setCommonFields(azbj, customerId, orgIdPath, now, staffId);
azbj.setIdCard(input.getIdCard());
saveBatch(Arrays.asList(azbj), azbj);
LingshanSpecialCrowdPersonTypeEntity azbjE = new LingshanSpecialCrowdPersonTypeEntity(IdWorker.getIdStr(), customerId, orgIdPath, vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.AZBJ.getType(),
"0", 0, now, staffId, now, staffId);
types2Save.add(azbjE);
}
if (input.getSpecialCrowdDetails().getJiedurenyuan() != null) {
LingshanSpecialCrowdDetailJdryEntity jdry = ConvertUtils.sourceToTarget(input.getSpecialCrowdDetails().getJiedurenyuan(), LingshanSpecialCrowdDetailJdryEntity.class);
setCommonFields(jdry, customerId, orgIdPath, now, staffId);
jdry.setIdCard(input.getIdCard());
saveBatch(Arrays.asList(jdry), jdry);
LingshanSpecialCrowdPersonTypeEntity JdryE = new LingshanSpecialCrowdPersonTypeEntity(IdWorker.getIdStr(), customerId, orgIdPath, vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.JDRY.getType(),
"0", 0, now, staffId, now, staffId);
types2Save.add(JdryE);
}
if (input.getSpecialCrowdDetails().getJingzhanghuanzhe() != null) {
LingshanSpecialCrowdDetailJzhzEntity jzhz = ConvertUtils.sourceToTarget(input.getSpecialCrowdDetails().getJingzhanghuanzhe(), LingshanSpecialCrowdDetailJzhzEntity.class);
setCommonFields(jzhz, customerId, orgIdPath, now, staffId);
jzhz.setIdCard(input.getIdCard());
saveBatch(Arrays.asList(jzhz), jzhz);
LingshanSpecialCrowdPersonTypeEntity jzhzE = new LingshanSpecialCrowdPersonTypeEntity(IdWorker.getIdStr(), customerId, orgIdPath, vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.JZHZ.getType(),
"0", 0, now, staffId, now, staffId);
types2Save.add(jzhzE);
}
if (input.getSpecialCrowdDetails().getXinfangrenyuan() != null) {
LingshanSpecialCrowdDetailXfryEntity xfry = ConvertUtils.sourceToTarget(input.getSpecialCrowdDetails().getXinfangrenyuan(), LingshanSpecialCrowdDetailXfryEntity.class);
setCommonFields(xfry, customerId, orgIdPath, now, staffId);
xfry.setIdCard(input.getIdCard());
saveBatch(Arrays.asList(xfry), xfry);
LingshanSpecialCrowdPersonTypeEntity xfryE = new LingshanSpecialCrowdPersonTypeEntity(IdWorker.getIdStr(), customerId, orgIdPath, vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.XFRY.getType(),
"0", 0, now, staffId, now, staffId);
types2Save.add(xfryE);
}
if (input.getSpecialCrowdDetails().getShequjiaozheng() != null) {
LingshanSpecialCrowdDetailSqjzEntity sqjz = ConvertUtils.sourceToTarget(input.getSpecialCrowdDetails().getShequjiaozheng(), LingshanSpecialCrowdDetailSqjzEntity.class);
setCommonFields(sqjz, customerId, orgIdPath, now, staffId);
sqjz.setIdCard(input.getIdCard());
saveBatch(Arrays.asList(sqjz), sqjz);
LingshanSpecialCrowdPersonTypeEntity sqjzE = new LingshanSpecialCrowdPersonTypeEntity(IdWorker.getIdStr(), customerId, orgIdPath, vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.SQJZ.getType(),
"0", 0, now, staffId, now, staffId);
types2Save.add(sqjzE);
}
// 保存人员类型
savePersonAndTypes(types2Save);
}
void setCommonFields(LingshanSpecialCrowdDetailBaseEntity e, String customerId, String orgIdPath, Date now, String staffId) {
@ -379,51 +471,53 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ
}
@Override
public LingShanSpecialCrowdDetailBaseExcelData getPersonSpecialTypeDetail(String idCard, String specialType, String specialDetailId) {
// 查询人员基础信息
LambdaQueryWrapper<LingshanSpecialCrowdPersonEntity> personQ = new LambdaQueryWrapper<>();
personQ.eq(LingshanSpecialCrowdPersonEntity::getIdCard, idCard);
LingshanSpecialCrowdPersonEntity person = specialCrowdPersonDao.selectOne(personQ);
public LingShanSpecialTypeSaveResultDTO getPersonSpecialTypeDetail(String resiId) {
// 1.校验人员基础信息
IcResiUserEntity person = icResiUserDao.selectById(resiId);
if (person == null) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "未找到该人员信息");
}
// 查询人员类别详情
LingShanSpecialCrowdDetailBaseExcelData d;
switch (specialType) {
case "anzhibangjiao":
LingshanSpecialCrowdDetailAzbjEntity e1 = specialCrowdDetailAzbjDao.selectById(specialDetailId);
d = ConvertUtils.sourceToTarget(e1, LingShanSpecialCrowdDetailAzbjExcelData.class);
break;
case "xinfangrenyuan":
LingshanSpecialCrowdDetailXfryEntity e2 = specialCrowdDetailXfryDao.selectById(specialDetailId);
d = ConvertUtils.sourceToTarget(e2, LingshanSpecialCrowdDetailXfryExcelData.class);
break;
case "xidurenyuan":
LingshanSpecialCrowdDetailJdryEntity e3 = specialCrowdDetailJdryDao.selectById(specialDetailId);
d = ConvertUtils.sourceToTarget(e3, LingshanSpecialCrowdDetailJdryExcelData.class);
break;
case "shequjiaozheng":
LingshanSpecialCrowdDetailSqjzEntity e4 = specialCrowdDetailSqjzDao.selectById(specialDetailId);
d = ConvertUtils.sourceToTarget(e4, LingshanSpecialCrowdDetailSqjzExcelData.class);
break;
case "jingzhanghuanzhe":
LingshanSpecialCrowdDetailJzhzEntity e5 = specialCrowdDetailJzhzDao.selectById(specialDetailId);
d = ConvertUtils.sourceToTarget(e5, LingshanSpecialCrowdDetailJzhzExcelData.class);
break;
default:
d = new LingShanSpecialCrowdDetailBaseExcelData();
}
LingShanSpecialTypeSaveResultDTO d = new LingShanSpecialTypeSaveResultDTO();
if (d == null) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "未找到该人员的类别详细信息");
}
// 2.查询人员类别详情
LambdaQueryWrapper<LingshanSpecialCrowdDetailAzbjEntity> azbjQ = new LambdaQueryWrapper<>();
azbjQ.eq(LingshanSpecialCrowdDetailAzbjEntity::getIdCard, person.getIdCard());
LingshanSpecialCrowdDetailAzbjEntity e1 = specialCrowdDetailAzbjDao.selectOne(azbjQ);
LingShanSpecialTypeSaveResultDTO.SpecialCrowdAzbj specialCrowdAzbj = ConvertUtils.sourceToTarget(e1, LingShanSpecialTypeSaveResultDTO.SpecialCrowdAzbj.class);
LambdaQueryWrapper<LingshanSpecialCrowdDetailXfryEntity> xfryQ = new LambdaQueryWrapper<>();
xfryQ.eq(LingshanSpecialCrowdDetailXfryEntity::getIdCard, person.getIdCard());
LingshanSpecialCrowdDetailXfryEntity e2 = specialCrowdDetailXfryDao.selectOne(xfryQ);
LingShanSpecialTypeSaveResultDTO.SpecialCrowdXfry specialCrowdXfry = ConvertUtils.sourceToTarget(e2, LingShanSpecialTypeSaveResultDTO.SpecialCrowdXfry.class);
LambdaQueryWrapper<LingshanSpecialCrowdDetailJdryEntity> jdryQ = new LambdaQueryWrapper<>();
jdryQ.eq(LingshanSpecialCrowdDetailJdryEntity::getIdCard, person.getIdCard());
LingshanSpecialCrowdDetailJdryEntity e3 = specialCrowdDetailJdryDao.selectOne(jdryQ);
LingShanSpecialTypeSaveResultDTO.SpecialCrowdJdry specialCrowdJdry = ConvertUtils.sourceToTarget(e3, LingShanSpecialTypeSaveResultDTO.SpecialCrowdJdry.class);
LambdaQueryWrapper<LingshanSpecialCrowdDetailSqjzEntity> sqjzQ = new LambdaQueryWrapper<>();
sqjzQ.eq(LingshanSpecialCrowdDetailSqjzEntity::getIdCard, person.getIdCard());
LingshanSpecialCrowdDetailSqjzEntity e4 = specialCrowdDetailSqjzDao.selectOne(sqjzQ);
LingShanSpecialTypeSaveResultDTO.SpecialCrowdSqjz specialCrowdSqjz = ConvertUtils.sourceToTarget(e4, LingShanSpecialTypeSaveResultDTO.SpecialCrowdSqjz.class);
LambdaQueryWrapper<LingshanSpecialCrowdDetailJzhzEntity> jzhzQ = new LambdaQueryWrapper<>();
jzhzQ.eq(LingshanSpecialCrowdDetailJzhzEntity::getIdCard, person.getIdCard());
LingshanSpecialCrowdDetailJzhzEntity e5 = specialCrowdDetailJzhzDao.selectOne(jzhzQ);
LingShanSpecialTypeSaveResultDTO.SpecialCrowdJzhz specialCrowdJzhz = ConvertUtils.sourceToTarget(e5, LingShanSpecialTypeSaveResultDTO.SpecialCrowdJzhz.class);
d.getSpecialCrowdDetails().setAnzhibangjiao(specialCrowdAzbj);
d.getSpecialCrowdDetails().setXinfangrenyuan(specialCrowdXfry);
d.getSpecialCrowdDetails().setJiedurenyuan(specialCrowdJdry);
d.getSpecialCrowdDetails().setShequjiaozheng(specialCrowdSqjz);
d.getSpecialCrowdDetails().setJingzhanghuanzhe(specialCrowdJzhz);
d.setName(person.getName());
d.setIdCard(person.getIdCard());
// 查询居民信息
IcResiUserEntity resiBaseEntity = icResiUserDao.selectResiUserEntityByIdCard(idCard, EpmetRequestHolder.getLoginUserCustomerId());
// 3.查询和补充居民信息
IcResiUserEntity resiBaseEntity = icResiUserDao.selectResiUserEntityByIdCard(person.getIdCard(), EpmetRequestHolder.getLoginUserCustomerId());
if (resiBaseEntity == null) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "未找到该人员信息");
}
@ -497,41 +591,41 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(resi.getGridId());
i.setOrgNamePath(gridInfo.getAgencyName().concat("-").concat(gridInfo.getGridName()));
i.setAddress(getAddressOfResi(resi.getGridId(), resi.getHomeId()));
i.setSpecialTypeDisplay(LingShanSpecialCrowdTypeEnums.getByType(i.getSpecialType()).getName());
// 处理类型展示中文,将a,b,c =》 啊,喔,额
List<String> typesDisplay = new ArrayList<>();
String specialTypesStr = i.getSpecialTypesStr();
if (StringUtils.isNotBlank(specialTypesStr)) {
String[] types = specialTypesStr.split(",");
for (String type : types) {
typesDisplay.add(LingShanSpecialCrowdTypeEnums.getByType(type).getName());
}
}
i.setSpecialTypeDisplay(String.join(",", typesDisplay));
});
return new PageData<>(l, new PageInfo<>(l).getTotal());
}
@Transactional
@Override
public void deleteByType(String specialType, String idCard) {
public void deleteByType(String specialType, String resiId) {
LambdaQueryWrapper<LingshanSpecialCrowdPersonTypeEntity> q = new LambdaQueryWrapper<>();
q.eq(LingshanSpecialCrowdPersonTypeEntity::getSpecialType, specialType);
q.eq(LingshanSpecialCrowdPersonTypeEntity::getResiId, resiId);
// 先删除type
specialCrowdPersonTypeDao.deletePhysical(specialType, idCard);
specialCrowdPersonTypeDao.deletePhysical(specialType, resiId);
// 再删除detail
switch (specialType) {
case "anzhibangjiao":
specialCrowdDetailAzbjDao.deletePhysical(idCard);
break;
case "xinfangrenyuan":
specialCrowdDetailXfryDao.deletePhysical(idCard);
break;
case "xidurenyuan":
specialCrowdDetailJdryDao.deletePhysical(idCard);
break;
case "shequjiaozheng":
specialCrowdDetailSqjzDao.deletePhysical(idCard);
break;
case "jingzhanghuanzhe":
specialCrowdDetailJzhzDao.deletePhysical(idCard);
break;
LingshanSpecialCrowdPersonTypeEntity personType = specialCrowdPersonTypeDao.selectOne(q);
if (personType == null) {
return;
}
LambdaQueryWrapper<LingshanSpecialCrowdPersonTypeEntity> q = new LambdaQueryWrapper<>();
q.eq(LingshanSpecialCrowdPersonTypeEntity::getIdCard, idCard);
if (specialCrowdPersonTypeDao.selectCount(q) == 0) {
// 没有type了,那就吧person也删了
specialCrowdPersonDao.deletePhysical(idCard);
}
// 再删除detail
specialCrowdDetailAzbjDao.deletePhysical(personType.getIdCard());
specialCrowdDetailXfryDao.deletePhysical(personType.getIdCard());
specialCrowdDetailJdryDao.deletePhysical(personType.getIdCard());
specialCrowdDetailSqjzDao.deletePhysical(personType.getIdCard());
specialCrowdDetailJzhzDao.deletePhysical(personType.getIdCard());
}
}

48
epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonDao.xml

@ -1,48 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.LingshanSpecialCrowdPersonDao">
<!--<resultMap type="com.epmet.entity.LingshanSpecialCrowdPersonEntity" id="lingshanSpecialCrowdPersonMap">
<result property="id" column="ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="orgIdPath" column="ORG_ID_PATH"/>
<result property="name" column="NAME"/>
<result property="idCard" column="ID_CARD"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>-->
<!--保存或更新-->
<insert id="saveOrUpdateManually" parameterType="map">
insert into lingshan_special_crowd_person ( ID, CUSTOMER_ID, ORG_ID_PATH, `NAME`, ID_CARD,
DEL_FLAG, REVISION, CREATED_BY , CREATED_TIME, UPDATED_BY, UPDATED_TIME)
values
<foreach collection="list" item="item" separator="," index="idx" open="" close="">
( #{item.id},
#{item.customerId},
#{item.orgIdPath},
#{item.name},
#{item.idCard},
#{item.delFlag},
#{item.revision},
#{item.createdBy},
#{item.createdTime},
#{item.updatedBy},
#{item.updatedTime}
)
</foreach>
on duplicate key update NAME=values(name)
, UPDATED_BY=values(UPDATED_BY)
, UPDATED_TIME=values(UPDATED_TIME)
</insert>
<delete id="deletePhysical">
delete from lingshan_special_crowd_person where ID_CARD = #{idCard}
</delete>
</mapper>

36
epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml

@ -18,11 +18,11 @@
</resultMap>
<insert id="saveOrUpdateManually">
insert into lingshan_special_crowd_person_type ( ID, CUSTOMER_ID, ORG_ID_PATH, ID_CARD, SPECIAL_TYPE,
insert into lingshan_special_crowd_person_type ( ID, CUSTOMER_ID, ORG_ID_PATH, RESI_ID, ID_CARD, SPECIAL_TYPE,
DEL_FLAG, REVISION, CREATED_BY, CREATED_TIME, UPDATED_BY, UPDATED_TIME)
values
<foreach collection="types" item="type" separator=",">
(#{type.id}, #{type.customerId}, #{type.orgIdPath}, #{type.idCard}, #{type.specialType},
(#{type.id}, #{type.customerId}, #{type.orgIdPath}, #{type.resiId}, #{type.idCard}, #{type.specialType},
#{type.delFlag}, #{type.revision}, #{type.createdBy}, #{type.createdTime}, #{type.updatedBy}, #{type.updatedTime})
</foreach>
on duplicate key update
@ -32,23 +32,23 @@
, UPDATED_TIME = values(UPDATED_TIME)
</insert>
<delete id="deletePhysical">
delete from lingshan_special_crowd_person_type where ID_CARD = #{idCard} and SPECIAL_TYPE = #{specialType}
delete from lingshan_special_crowd_person_type where RESI_ID = #{resiId} and SPECIAL_TYPE = #{specialType}
</delete>
<select id="listSpecialCrowds"
resultType="com.epmet.dto.result.LingShanSpecialCrowdListResultDTO">
select t.ORG_ID_PATH
, t.SPECIAL_TYPE
, p.NAME
, r.MOBILE
, t.ID_CARD
, r.HOME_ID
, t.CREATED_TIME
, t.UPDATED_TIME
from lingshan_special_crowd_person p
select p.ID RESI_ID
, t.ORG_ID_PATH
, p.NAME
, p.MOBILE
, p.ID_CARD
, p.HOME_ID
, min(t.CREATED_TIME) CREATED_TIME
, max(t.UPDATED_TIME) UPDATED_TIME
, group_concat(t.SPECIAL_TYPE) SPECIAL_TYPES_STR
from ic_resi_user p
inner join lingshan_special_crowd_person_type t
on (t.DEL_FLAG = 0 and p.ID_CARD = t.ID_CARD)
inner join ic_resi_user r on (r.ID_CARD = t.ID_CARD and r.DEL_FLAG = 0)
<where>
p.DEL_FLAG=0
<if test="name != null and name != ''">
@ -64,10 +64,16 @@
and t.ORG_ID_PATH like CONCAT(#{orgIdPath}, '%')
</if>
<if test="mobile != null and mobile != ''">
and r.MOBILE like CONCAT('%', mobile, '%')
and p.MOBILE like CONCAT('%', #{mobile}, '%')
</if>
</where>
order by t.UPDATED_TIME desc
group by p.ID
, t.ORG_ID_PATH
, p.NAME
, p.MOBILE
, p.ID_CARD
, p.HOME_ID
desc
</select>

Loading…
Cancel
Save