16 changed files with 1016 additions and 0 deletions
@ -0,0 +1,39 @@ |
|||||
|
package com.epmet.commons.tools.dto.result; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* @Description 根据身份证号和姓名查询公安部备案信息 |
||||
|
*/ |
||||
|
@NoArgsConstructor |
||||
|
@Data |
||||
|
public class YtSfhyxxcxdsjjResDTO { |
||||
|
private int code = 200; |
||||
|
private String msg = "请求成功"; |
||||
|
/** |
||||
|
* 响应数据 |
||||
|
*/ |
||||
|
private YtSfhyxxcxdsjjDetail data; |
||||
|
private int total; |
||||
|
|
||||
|
@Data |
||||
|
public static class YtSfhyxxcxdsjjDetail { |
||||
|
private String status = "000"; |
||||
|
private String statusMsg = "正常返回"; |
||||
|
private String count = "1"; |
||||
|
//结果数量
|
||||
|
private String total; |
||||
|
private List<Result> result; |
||||
|
} |
||||
|
@Data |
||||
|
public static class Result { |
||||
|
//身份证号
|
||||
|
private String GMSFHM; |
||||
|
//姓名
|
||||
|
private String XM; |
||||
|
} |
||||
|
} |
@ -0,0 +1,105 @@ |
|||||
|
package com.epmet.dto; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
import java.util.Date; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 居民信息与公安部信息比对记录表 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2022-11-14 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class IcResiComparisonRecordDTO implements Serializable { |
||||
|
|
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
/** |
||||
|
* ID |
||||
|
*/ |
||||
|
private String id; |
||||
|
|
||||
|
/** |
||||
|
* 客户ID |
||||
|
*/ |
||||
|
private String customerId; |
||||
|
|
||||
|
/** |
||||
|
* ic_resi_user.id【比对时的数据值】 |
||||
|
*/ |
||||
|
private String resiId; |
||||
|
|
||||
|
/** |
||||
|
* 数字社区人员姓名【比对时的数据值】 |
||||
|
*/ |
||||
|
private String resiName; |
||||
|
|
||||
|
/** |
||||
|
* 数据社区身份证号【比对时的数据值】 |
||||
|
*/ |
||||
|
private String resiIdCard; |
||||
|
|
||||
|
/** |
||||
|
* 公安部人员姓名 |
||||
|
*/ |
||||
|
private String policeName; |
||||
|
|
||||
|
/** |
||||
|
* 公安部人员证件号 |
||||
|
*/ |
||||
|
private String policeIdCard; |
||||
|
|
||||
|
/** |
||||
|
* 数据状态(0:未处理 1:已处理) |
||||
|
*/ |
||||
|
private String type; |
||||
|
|
||||
|
/** |
||||
|
* 信息一致性(0:否 1:是 2:-)2代表程序比对了没有匹配上 |
||||
|
*/ |
||||
|
private String identical; |
||||
|
|
||||
|
/** |
||||
|
* 是否比对过(0:否 1:是) |
||||
|
*/ |
||||
|
private String isComparison; |
||||
|
|
||||
|
/** |
||||
|
* 比对结果说明 |
||||
|
*/ |
||||
|
private String comparisonResult; |
||||
|
|
||||
|
/** |
||||
|
* |
||||
|
*/ |
||||
|
private Integer delFlag; |
||||
|
|
||||
|
/** |
||||
|
* 乐观锁 |
||||
|
*/ |
||||
|
private Integer revision; |
||||
|
|
||||
|
/** |
||||
|
* 创建人 |
||||
|
*/ |
||||
|
private String createdBy; |
||||
|
|
||||
|
/** |
||||
|
* 创建时间 |
||||
|
*/ |
||||
|
private Date createdTime; |
||||
|
|
||||
|
/** |
||||
|
* 更新人 |
||||
|
*/ |
||||
|
private String updatedBy; |
||||
|
|
||||
|
/** |
||||
|
* 更新时间 |
||||
|
*/ |
||||
|
private Date updatedTime; |
||||
|
|
||||
|
} |
@ -0,0 +1,33 @@ |
|||||
|
package com.epmet.dto.form; |
||||
|
|
||||
|
import com.epmet.commons.tools.dto.form.PageFormDTO; |
||||
|
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import javax.validation.constraints.NotBlank; |
||||
|
import java.util.List; |
||||
|
|
||||
|
@Data |
||||
|
public class ComparisonFormDTO extends PageFormDTO { |
||||
|
private static final long serialVersionUID = 9156247659994638103L; |
||||
|
public interface Update extends CustomerClientShowGroup { |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 居民Id集合 |
||||
|
*/ |
||||
|
private List<String> userIdList; |
||||
|
/** |
||||
|
* 比对记录Id |
||||
|
*/ |
||||
|
@NotBlank(message = "比对记录Id不能为空", groups = {Update.class}) |
||||
|
private String comparisonRecordId; |
||||
|
|
||||
|
/** |
||||
|
* token里设置 |
||||
|
*/ |
||||
|
private String customerId; |
||||
|
private String userId; |
||||
|
private String agencyId; |
||||
|
|
||||
|
} |
@ -0,0 +1,39 @@ |
|||||
|
package com.epmet.dto.form; |
||||
|
|
||||
|
import com.epmet.commons.tools.dto.form.PageFormDTO; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
/** |
||||
|
* @Description 数据比对列表-接口入参 |
||||
|
* @Author sun |
||||
|
*/ |
||||
|
@Data |
||||
|
public class ResiComparisonListFormDTO extends PageFormDTO { |
||||
|
private static final long serialVersionUID = 9156247659994638103L; |
||||
|
|
||||
|
/** |
||||
|
* 信息一致性(0:否 1:是 2:-)2代表程序比对了没有匹配上 |
||||
|
*/ |
||||
|
private String identical; |
||||
|
/** |
||||
|
* 数据状态(0:未处理 1:已处理) |
||||
|
*/ |
||||
|
private String type; |
||||
|
/** |
||||
|
* 身份证号 |
||||
|
*/ |
||||
|
private String idCard; |
||||
|
|
||||
|
private Integer pageNo = 1; |
||||
|
private Integer pageSize = 20; |
||||
|
private Boolean isPage = true; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* token里设置 |
||||
|
*/ |
||||
|
private String customerId; |
||||
|
private String userId; |
||||
|
private String agencyId; |
||||
|
|
||||
|
} |
@ -0,0 +1,20 @@ |
|||||
|
package com.epmet.dto.result; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
|
||||
|
@Data |
||||
|
public class ComparisonResultDTO implements Serializable { |
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
/** |
||||
|
* 是否存在异常 |
||||
|
*/ |
||||
|
private Boolean result = false; |
||||
|
/** |
||||
|
* 接口反馈说明 |
||||
|
*/ |
||||
|
private String resultExplain; |
||||
|
|
||||
|
} |
@ -0,0 +1,70 @@ |
|||||
|
package com.epmet.dto.result; |
||||
|
|
||||
|
import com.alibaba.excel.annotation.write.style.HeadStyle; |
||||
|
import com.alibaba.excel.enums.poi.FillPatternTypeEnum; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
|
||||
|
/** |
||||
|
* @Description 数据比对列表-接口返参 |
||||
|
* @Author sun |
||||
|
*/ |
||||
|
@Data |
||||
|
public class ResiComparisonListResultDTO implements Serializable { |
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
/** |
||||
|
* 比对记录表Id |
||||
|
*/ |
||||
|
private String comparisonRecordId; |
||||
|
|
||||
|
/** |
||||
|
* ic_resi_user.id【比对时的数据值】 |
||||
|
*/ |
||||
|
private String resiId; |
||||
|
|
||||
|
/** |
||||
|
* 居民库姓名 |
||||
|
*/ |
||||
|
private String resiName; |
||||
|
|
||||
|
/** |
||||
|
* 居民库证件号 |
||||
|
*/ |
||||
|
private String resiIdCard; |
||||
|
|
||||
|
/** |
||||
|
* 公安部人员姓名 |
||||
|
*/ |
||||
|
private String policeName; |
||||
|
|
||||
|
/** |
||||
|
* 公安部人员证件号 |
||||
|
*/ |
||||
|
private String policeIdCard; |
||||
|
|
||||
|
/** |
||||
|
* 数据状态(0:未处理 1:已处理) |
||||
|
*/ |
||||
|
private String type; |
||||
|
private String typeName; |
||||
|
|
||||
|
/** |
||||
|
* 信息一致性(0:否 1:是 2:-)2代表程序比对了没有匹配上 |
||||
|
*/ |
||||
|
private String identical; |
||||
|
private String identicalName; |
||||
|
|
||||
|
/** |
||||
|
* 是否比对过(0:否 1:是) |
||||
|
*/ |
||||
|
private String isComparison; |
||||
|
private String isComparisonName; |
||||
|
|
||||
|
/** |
||||
|
* 比对结果说明 |
||||
|
*/ |
||||
|
private String comparisonResult; |
||||
|
|
||||
|
} |
@ -0,0 +1,136 @@ |
|||||
|
package com.epmet.controller; |
||||
|
|
||||
|
import com.alibaba.excel.EasyExcel; |
||||
|
import com.alibaba.excel.ExcelWriter; |
||||
|
import com.alibaba.excel.write.metadata.WriteSheet; |
||||
|
import com.alibaba.fastjson.JSON; |
||||
|
import com.epmet.commons.tools.annotation.LoginUser; |
||||
|
import com.epmet.commons.tools.annotation.MaskResponse; |
||||
|
import com.epmet.commons.tools.aop.NoRepeatSubmit; |
||||
|
import com.epmet.commons.tools.constant.NumConstant; |
||||
|
import com.epmet.commons.tools.exception.EpmetErrorCode; |
||||
|
import com.epmet.commons.tools.exception.EpmetException; |
||||
|
import com.epmet.commons.tools.feign.ResultDataResolver; |
||||
|
import com.epmet.commons.tools.page.PageData; |
||||
|
import com.epmet.commons.tools.security.dto.TokenDto; |
||||
|
import com.epmet.commons.tools.utils.ConvertUtils; |
||||
|
import com.epmet.commons.tools.utils.DateUtils; |
||||
|
import com.epmet.commons.tools.utils.ExcelUtils; |
||||
|
import com.epmet.commons.tools.utils.Result; |
||||
|
import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; |
||||
|
import com.epmet.commons.tools.validator.ValidatorUtils; |
||||
|
import com.epmet.dto.form.ComparisonFormDTO; |
||||
|
import com.epmet.dto.form.ResiComparisonListFormDTO; |
||||
|
import com.epmet.dto.result.ComparisonResultDTO; |
||||
|
import com.epmet.dto.result.ResiComparisonListResultDTO; |
||||
|
import com.epmet.excel.IcResiComparisonRecordExcel; |
||||
|
import com.epmet.service.IcResiComparisonRecordService; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.apache.commons.collections4.CollectionUtils; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.web.bind.annotation.PostMapping; |
||||
|
import org.springframework.web.bind.annotation.RequestBody; |
||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||
|
import org.springframework.web.bind.annotation.RestController; |
||||
|
|
||||
|
import javax.servlet.http.HttpServletResponse; |
||||
|
import java.io.IOException; |
||||
|
import java.io.PrintWriter; |
||||
|
import java.util.Date; |
||||
|
import java.util.List; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 居民信息与公安部信息比对记录表 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2022-11-14 |
||||
|
*/ |
||||
|
@Slf4j |
||||
|
@RestController |
||||
|
@RequestMapping("icResiComparisonRecord") |
||||
|
public class IcResiComparisonRecordController implements ResultDataResolver { |
||||
|
|
||||
|
@Autowired |
||||
|
private IcResiComparisonRecordService icResiComparisonRecordService; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* @Author sun |
||||
|
* @Description 数据比对列表 |
||||
|
**/ |
||||
|
@PostMapping("resiComparisonList") |
||||
|
@MaskResponse(fieldNames = {"resiIdCard", "policeIdCard"}, fieldsMaskType = {MaskResponse.MASK_TYPE_MOBILE, MaskResponse.MASK_TYPE_ID_CARD}) |
||||
|
public Result<PageData<ResiComparisonListResultDTO>> resiComparisonList(@LoginUser TokenDto tokenDto, @RequestBody ResiComparisonListFormDTO formDTO) { |
||||
|
formDTO.setCustomerId(tokenDto.getCustomerId()); |
||||
|
formDTO.setUserId(tokenDto.getUserId()); |
||||
|
return new Result<PageData<ResiComparisonListResultDTO>>().ok(icResiComparisonRecordService.resiComparisonList(formDTO)); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @Author sun |
||||
|
* @Description 比对、批量比对、组织及下级比对 |
||||
|
**/ |
||||
|
@PostMapping("comparison") |
||||
|
public Result<ComparisonResultDTO> comparison(@LoginUser TokenDto tokenDto, @RequestBody ComparisonFormDTO formDTO) { |
||||
|
formDTO.setCustomerId(tokenDto.getCustomerId()); |
||||
|
formDTO.setUserId(tokenDto.getUserId()); |
||||
|
return new Result<ComparisonResultDTO>().ok(icResiComparisonRecordService.comparison(formDTO)); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @Author sun |
||||
|
* @Description 比对后的更新 |
||||
|
**/ |
||||
|
@PostMapping("comparisonUpdate") |
||||
|
public Result comparisonUpdate(@LoginUser TokenDto tokenDto, @RequestBody ComparisonFormDTO formDTO) { |
||||
|
ValidatorUtils.validateEntity(formDTO, ComparisonFormDTO.Update.class); |
||||
|
formDTO.setCustomerId(tokenDto.getCustomerId()); |
||||
|
formDTO.setUserId(tokenDto.getUserId()); |
||||
|
icResiComparisonRecordService.comparisonUpdate(formDTO); |
||||
|
return new Result(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @Author sun |
||||
|
* @Description 比对记录数据导出 |
||||
|
**/ |
||||
|
@NoRepeatSubmit |
||||
|
@PostMapping("export") |
||||
|
public void export(@LoginUser TokenDto tokenDto, @RequestBody ResiComparisonListFormDTO formDTO, HttpServletResponse response) throws IOException { |
||||
|
formDTO.setCustomerId(tokenDto.getCustomerId()); |
||||
|
formDTO.setUserId(tokenDto.getUserId()); |
||||
|
formDTO.setIsPage(false); |
||||
|
ExcelWriter excelWriter = null; |
||||
|
formDTO.setPageNo(NumConstant.ONE); |
||||
|
formDTO.setPageSize(NumConstant.TEN_THOUSAND); |
||||
|
try { |
||||
|
String fileName = "比对记录" + DateUtils.format(new Date()) + ".xlsx"; |
||||
|
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), IcResiComparisonRecordExcel.class).build(); |
||||
|
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build(); |
||||
|
PageData<ResiComparisonListResultDTO> data = null; |
||||
|
List<IcResiComparisonRecordExcel> list = null; |
||||
|
do { |
||||
|
data = icResiComparisonRecordService.resiComparisonList(formDTO); |
||||
|
list = ConvertUtils.sourceToTarget(data.getList(), IcResiComparisonRecordExcel.class); |
||||
|
formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE); |
||||
|
excelWriter.write(list, writeSheet); |
||||
|
} while (CollectionUtils.isNotEmpty(list) && list.size() == formDTO.getPageSize()); |
||||
|
} catch (EpmetException e) { |
||||
|
response.reset(); |
||||
|
response.setCharacterEncoding("UTF-8"); |
||||
|
response.setHeader("content-type", "application/json; charset=UTF-8"); |
||||
|
PrintWriter printWriter = response.getWriter(); |
||||
|
Result<Object> result = new Result<>().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), e.getMsg()); |
||||
|
printWriter.write(JSON.toJSONString(result)); |
||||
|
printWriter.close(); |
||||
|
} catch (Exception e) { |
||||
|
log.error("export exception", e); |
||||
|
} finally { |
||||
|
if (excelWriter != null) { |
||||
|
excelWriter.finish(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,40 @@ |
|||||
|
/** |
||||
|
* Copyright 2018 人人开源 https://www.renren.io
|
||||
|
* <p> |
||||
|
* This program is free software: you can redistribute it and/or modify |
||||
|
* it under the terms of the GNU General Public License as published by |
||||
|
* the Free Software Foundation, either version 3 of the License, or |
||||
|
* (at your option) any later version. |
||||
|
* <p> |
||||
|
* This program is distributed in the hope that it will be useful, |
||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
* GNU General Public License for more details. |
||||
|
* <p> |
||||
|
* You should have received a copy of the GNU General Public License |
||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
*/ |
||||
|
|
||||
|
package com.epmet.dao; |
||||
|
|
||||
|
import com.epmet.commons.mybatis.dao.BaseDao; |
||||
|
import com.epmet.dto.form.ResiComparisonListFormDTO; |
||||
|
import com.epmet.dto.result.ResiComparisonListResultDTO; |
||||
|
import com.epmet.entity.IcResiComparisonRecordEntity; |
||||
|
import org.apache.ibatis.annotations.Mapper; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* 居民信息与公安部信息比对记录表 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2022-11-14 |
||||
|
*/ |
||||
|
@Mapper |
||||
|
public interface IcResiComparisonRecordDao extends BaseDao<IcResiComparisonRecordEntity> { |
||||
|
|
||||
|
List<ResiComparisonListResultDTO> getResiComparisonList(ResiComparisonListFormDTO formDTO); |
||||
|
|
||||
|
void saveInsert(IcResiComparisonRecordEntity recordEntity); |
||||
|
} |
@ -0,0 +1,71 @@ |
|||||
|
package com.epmet.entity; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||
|
import com.epmet.commons.mybatis.entity.BaseEpmetEntity; |
||||
|
import lombok.Data; |
||||
|
import lombok.EqualsAndHashCode; |
||||
|
|
||||
|
/** |
||||
|
* 出生管理 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2022-05-10 |
||||
|
*/ |
||||
|
@Data |
||||
|
@EqualsAndHashCode(callSuper=false) |
||||
|
@TableName("ic_resi_comparison_record") |
||||
|
public class IcResiComparisonRecordEntity extends BaseEpmetEntity { |
||||
|
|
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
/** |
||||
|
* 客户ID |
||||
|
*/ |
||||
|
private String customerId; |
||||
|
|
||||
|
/** |
||||
|
* ic_resi_user.id【比对时的数据值】 |
||||
|
*/ |
||||
|
private String resiId; |
||||
|
|
||||
|
/** |
||||
|
* 数字社区人员姓名【比对时的数据值】 |
||||
|
*/ |
||||
|
private String resiName; |
||||
|
|
||||
|
/** |
||||
|
* 数据社区身份证号【比对时的数据值】 |
||||
|
*/ |
||||
|
private String resiIdCard; |
||||
|
|
||||
|
/** |
||||
|
* 公安部人员姓名 |
||||
|
*/ |
||||
|
private String policeName; |
||||
|
|
||||
|
/** |
||||
|
* 公安部人员证件号 |
||||
|
*/ |
||||
|
private String policeIdCard; |
||||
|
|
||||
|
/** |
||||
|
* 数据状态(0:未处理 1:已处理) |
||||
|
*/ |
||||
|
private String type; |
||||
|
|
||||
|
/** |
||||
|
* 信息一致性(0:否 1:是 2:-)2代表程序比对了没有匹配上 |
||||
|
*/ |
||||
|
private String identical; |
||||
|
|
||||
|
/** |
||||
|
* 是否比对过(0:否 1:是) |
||||
|
*/ |
||||
|
private String isComparison; |
||||
|
|
||||
|
/** |
||||
|
* 比对结果说明 |
||||
|
*/ |
||||
|
private String comparisonResult; |
||||
|
|
||||
|
} |
@ -0,0 +1,64 @@ |
|||||
|
package com.epmet.excel; |
||||
|
|
||||
|
import com.alibaba.excel.annotation.ExcelProperty; |
||||
|
import com.alibaba.excel.annotation.write.style.ColumnWidth; |
||||
|
import com.alibaba.excel.annotation.write.style.HeadStyle; |
||||
|
import com.alibaba.excel.enums.poi.FillPatternTypeEnum; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
|
||||
|
/** |
||||
|
* 比对记录 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2022-11-14 |
||||
|
*/ |
||||
|
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 44) |
||||
|
@Data |
||||
|
public class IcResiComparisonRecordExcel implements Serializable { |
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
/** |
||||
|
* 居民库姓名 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "居民库-姓名") |
||||
|
@ColumnWidth(15) |
||||
|
private String resiName; |
||||
|
|
||||
|
/** |
||||
|
* 居民库证件号 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "居民库=证件号") |
||||
|
@ColumnWidth(20) |
||||
|
private String resiIdCard; |
||||
|
|
||||
|
/** |
||||
|
* 公安部人员姓名 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "公安-姓名") |
||||
|
@ColumnWidth(15) |
||||
|
private String policeName; |
||||
|
|
||||
|
/** |
||||
|
* 公安部人员证件号 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "公安-证件号") |
||||
|
@ColumnWidth(20) |
||||
|
private String policeIdCard; |
||||
|
|
||||
|
/** |
||||
|
* 数据状态(0:未处理 1:已处理) |
||||
|
*/ |
||||
|
@ExcelProperty(value = "状态") |
||||
|
@ColumnWidth(12) |
||||
|
private String typeName; |
||||
|
|
||||
|
/** |
||||
|
* 信息一致性(0:否 1:是 2:-)2代表程序比对了没有匹配上 |
||||
|
*/ |
||||
|
@ExcelProperty(value = "信息一致") |
||||
|
@ColumnWidth(12) |
||||
|
private String identicalName; |
||||
|
|
||||
|
} |
@ -0,0 +1,24 @@ |
|||||
|
package com.epmet.service; |
||||
|
|
||||
|
import com.epmet.commons.mybatis.service.BaseService; |
||||
|
import com.epmet.commons.tools.page.PageData; |
||||
|
import com.epmet.dto.form.ComparisonFormDTO; |
||||
|
import com.epmet.dto.form.ResiComparisonListFormDTO; |
||||
|
import com.epmet.dto.result.ComparisonResultDTO; |
||||
|
import com.epmet.dto.result.ResiComparisonListResultDTO; |
||||
|
import com.epmet.entity.IcResiComparisonRecordEntity; |
||||
|
|
||||
|
/** |
||||
|
* 居民信息与公安部信息比对记录表 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2022-11-14 |
||||
|
*/ |
||||
|
public interface IcResiComparisonRecordService extends BaseService<IcResiComparisonRecordEntity> { |
||||
|
|
||||
|
PageData<ResiComparisonListResultDTO> resiComparisonList(ResiComparisonListFormDTO formDTO); |
||||
|
|
||||
|
ComparisonResultDTO comparison(ComparisonFormDTO formDTO); |
||||
|
|
||||
|
void comparisonUpdate(ComparisonFormDTO formDTO); |
||||
|
} |
@ -0,0 +1,215 @@ |
|||||
|
package com.epmet.service.impl; |
||||
|
|
||||
|
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; |
||||
|
import com.epmet.commons.tools.constant.NumConstant; |
||||
|
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; |
||||
|
import com.epmet.commons.tools.dto.result.YtSfhyxxcxdsjjResDTO; |
||||
|
import com.epmet.commons.tools.exception.EpmetErrorCode; |
||||
|
import com.epmet.commons.tools.exception.EpmetException; |
||||
|
import com.epmet.commons.tools.feign.ResultDataResolver; |
||||
|
import com.epmet.commons.tools.page.PageData; |
||||
|
import com.epmet.commons.tools.redis.common.CustomerStaffRedis; |
||||
|
import com.epmet.commons.tools.utils.YtHsResUtils; |
||||
|
import com.epmet.dao.IcResiComparisonRecordDao; |
||||
|
import com.epmet.dao.IcResiUserDao; |
||||
|
import com.epmet.dto.IcResiUserDTO; |
||||
|
import com.epmet.dto.form.ComparisonFormDTO; |
||||
|
import com.epmet.dto.form.ResiComparisonListFormDTO; |
||||
|
import com.epmet.dto.result.ComparisonResultDTO; |
||||
|
import com.epmet.dto.result.ResiComparisonListResultDTO; |
||||
|
import com.epmet.entity.IcResiComparisonRecordEntity; |
||||
|
import com.epmet.entity.IcResiUserEntity; |
||||
|
import com.epmet.service.IcResiComparisonRecordService; |
||||
|
import com.github.pagehelper.PageHelper; |
||||
|
import com.github.pagehelper.PageInfo; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.apache.commons.collections4.CollectionUtils; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.scheduling.annotation.Async; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
/** |
||||
|
* 居民信息与公安部信息比对记录表 |
||||
|
* |
||||
|
* @author generator generator@elink-cn.com |
||||
|
* @since v1.0.0 2022-11-14 |
||||
|
*/ |
||||
|
@Service |
||||
|
@Slf4j |
||||
|
public class IcResiComparisonRecordServiceImpl extends BaseServiceImpl<IcResiComparisonRecordDao, IcResiComparisonRecordEntity> implements IcResiComparisonRecordService, ResultDataResolver { |
||||
|
@Autowired |
||||
|
private IcResiUserDao icResiUserDao; |
||||
|
|
||||
|
|
||||
|
@Override |
||||
|
public PageData<ResiComparisonListResultDTO> resiComparisonList(ResiComparisonListFormDTO formDTO) { |
||||
|
//1.获取工作人员信息
|
||||
|
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId()); |
||||
|
if (null == staffInfo) { |
||||
|
throw new EpmetException(String.format("查询工作人员%s缓存信息失败...", formDTO.getUserId())); |
||||
|
} |
||||
|
formDTO.setAgencyId(staffInfo.getAgencyId()); |
||||
|
//2.按条件分页查询数据s
|
||||
|
PageInfo<ResiComparisonListResultDTO> data = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getIsPage()) |
||||
|
.doSelectPageInfo(() -> baseDao.getResiComparisonList(formDTO)); |
||||
|
|
||||
|
return new PageData(data.getList(), data.getTotal()); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @Author sun |
||||
|
* @Description 比对、批量比对、组织及下级比对 |
||||
|
**/ |
||||
|
@Override |
||||
|
public ComparisonResultDTO comparison(ComparisonFormDTO formDTO) { |
||||
|
ComparisonResultDTO resultDTO = new ComparisonResultDTO(); |
||||
|
//1.获取工作人员信息
|
||||
|
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId()); |
||||
|
if (null == staffInfo) { |
||||
|
throw new EpmetException(String.format("查询工作人员%s缓存信息失败...", formDTO.getUserId())); |
||||
|
} |
||||
|
formDTO.setAgencyId(staffInfo.getAgencyId()); |
||||
|
//2.判断是单条比对的则直接处理
|
||||
|
if (formDTO.getUserIdList().size() == 1) { |
||||
|
IcResiUserEntity entity = icResiUserDao.selectById(formDTO.getUserIdList().get(NumConstant.ZERO)); |
||||
|
if (null == entity) { |
||||
|
resultDTO.setResult(true); |
||||
|
resultDTO.setResultExplain("未查询到居民信息"); |
||||
|
return resultDTO; |
||||
|
} |
||||
|
IcResiComparisonRecordEntity recordEntity = new IcResiComparisonRecordEntity(); |
||||
|
recordEntity.setCustomerId(entity.getCustomerId()); |
||||
|
recordEntity.setResiId(entity.getId()); |
||||
|
recordEntity.setResiName(entity.getName()); |
||||
|
recordEntity.setResiIdCard(entity.getIdCard()); |
||||
|
recordEntity.setIsComparison("1"); |
||||
|
YtSfhyxxcxdsjjResDTO sfhyxxcxdsjjResult = YtHsResUtils.sfhyxxcxdsjj(entity.getIdCard(), entity.getName()); |
||||
|
/*YtSfhyxxcxdsjjResDTO sfhyxxcxdsjjResult = new YtSfhyxxcxdsjjResDTO(); |
||||
|
YtSfhyxxcxdsjjResDTO.YtSfhyxxcxdsjjDetail f = new YtSfhyxxcxdsjjResDTO.YtSfhyxxcxdsjjDetail(); |
||||
|
List<YtSfhyxxcxdsjjResDTO.Result> l = new ArrayList<>(); |
||||
|
YtSfhyxxcxdsjjResDTO.Result d = new YtSfhyxxcxdsjjResDTO.Result(); |
||||
|
d.setGMSFHM("371424188808087654"); |
||||
|
d.setXM("小二"); |
||||
|
l.add(d); |
||||
|
f.setResult(l); |
||||
|
sfhyxxcxdsjjResult.setData(f);*/ |
||||
|
if (sfhyxxcxdsjjResult.getCode() != 200) { |
||||
|
recordEntity.setComparisonResult("公安部接口调用失败"); |
||||
|
resultDTO.setResult(true); |
||||
|
resultDTO.setResultExplain("公安部接口调用失败"); |
||||
|
return resultDTO; |
||||
|
} else { |
||||
|
//数据已处理
|
||||
|
recordEntity.setType("1"); |
||||
|
//公安部不存在的数据
|
||||
|
if (CollectionUtils.isEmpty(sfhyxxcxdsjjResult.getData().getResult())) { |
||||
|
recordEntity.setComparisonResult("公安部身份证号对应数据不存在"); |
||||
|
//代表程序干活了
|
||||
|
recordEntity.setIdentical("2"); |
||||
|
resultDTO.setResult(true); |
||||
|
resultDTO.setResultExplain("公安部身份证号对应数据不存在"); |
||||
|
} else {//在公安部查询到了数据
|
||||
|
recordEntity.setPoliceName(sfhyxxcxdsjjResult.getData().getResult().get(0).getXM()); |
||||
|
recordEntity.setPoliceIdCard(sfhyxxcxdsjjResult.getData().getResult().get(0).getGMSFHM()); |
||||
|
//公安部跟居民库姓名不一致
|
||||
|
if (!entity.getName().equals(sfhyxxcxdsjjResult.getData().getResult().get(0).getXM())) { |
||||
|
recordEntity.setIdentical("0"); |
||||
|
recordEntity.setComparisonResult("公安部与居民库姓名不相同"); |
||||
|
resultDTO.setResult(true); |
||||
|
resultDTO.setResultExplain("公安部与居民库姓名不相同"); |
||||
|
} else { |
||||
|
recordEntity.setIdentical("1"); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
recordEntity.setCreatedBy(formDTO.getUserId()); |
||||
|
recordEntity.setUpdatedBy(formDTO.getUserId()); |
||||
|
baseDao.saveInsert(recordEntity); |
||||
|
return resultDTO; |
||||
|
} |
||||
|
//3.判断多条比对则开启子线程执行
|
||||
|
if (CollectionUtils.isEmpty(formDTO.getUserIdList()) || formDTO.getUserIdList().size() > NumConstant.ONE) { |
||||
|
asyncComparison(formDTO); |
||||
|
resultDTO.setResult(true); |
||||
|
resultDTO.setResultExplain("数据比对中请稍后"); |
||||
|
return resultDTO; |
||||
|
} |
||||
|
return resultDTO; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @Author sun |
||||
|
* @Description 线程逐条比对居民信息 |
||||
|
**/ |
||||
|
@Async |
||||
|
public void asyncComparison(ComparisonFormDTO formDTO) { |
||||
|
PageData<IcResiUserDTO> data = null; |
||||
|
formDTO.setIsPage(false); |
||||
|
formDTO.setPageSize(NumConstant.ONE_THOUSAND); |
||||
|
int pageNo = formDTO.getPageNo(); |
||||
|
do { |
||||
|
data = getResiUserList(formDTO); |
||||
|
data.getList().forEach(o -> { |
||||
|
IcResiComparisonRecordEntity recordEntity = new IcResiComparisonRecordEntity(); |
||||
|
recordEntity.setCustomerId(o.getCustomerId()); |
||||
|
recordEntity.setResiId(o.getId()); |
||||
|
recordEntity.setResiName(o.getName()); |
||||
|
recordEntity.setResiIdCard(o.getIdCard()); |
||||
|
recordEntity.setIsComparison("1"); |
||||
|
YtSfhyxxcxdsjjResDTO sfhyxxcxdsjjResult = YtHsResUtils.sfhyxxcxdsjj(o.getIdCard(), o.getName()); |
||||
|
if (sfhyxxcxdsjjResult.getCode() != 200) { |
||||
|
recordEntity.setComparisonResult("接口调用失败"); |
||||
|
} else { |
||||
|
//数据已处理
|
||||
|
recordEntity.setType("1"); |
||||
|
//公安部不存在的数据
|
||||
|
if (CollectionUtils.isEmpty(sfhyxxcxdsjjResult.getData().getResult())) { |
||||
|
recordEntity.setComparisonResult("公安部身份证号对应数据不存在"); |
||||
|
//代表程序干活了
|
||||
|
recordEntity.setIdentical("2"); |
||||
|
} else {//在公安部查询到了数据
|
||||
|
recordEntity.setPoliceName(sfhyxxcxdsjjResult.getData().getResult().get(0).getXM()); |
||||
|
recordEntity.setPoliceIdCard(sfhyxxcxdsjjResult.getData().getResult().get(0).getGMSFHM()); |
||||
|
//公安部跟居民库姓名不一致
|
||||
|
if (!o.getName().equals(sfhyxxcxdsjjResult.getData().getResult().get(0).getXM())) { |
||||
|
recordEntity.setIdentical("0"); |
||||
|
recordEntity.setComparisonResult("公安部与居民库姓名不相同"); |
||||
|
} else { |
||||
|
recordEntity.setIdentical("1"); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
recordEntity.setCreatedBy(formDTO.getUserId()); |
||||
|
recordEntity.setUpdatedBy(formDTO.getUserId()); |
||||
|
baseDao.saveInsert(recordEntity); |
||||
|
}); |
||||
|
formDTO.setPageNo(++pageNo); |
||||
|
} while (CollectionUtils.isNotEmpty(data.getList()) && data.getList().size() == formDTO.getPageSize()); |
||||
|
} |
||||
|
|
||||
|
private PageData<IcResiUserDTO> getResiUserList(ComparisonFormDTO formDTO) { |
||||
|
PageInfo<IcResiUserDTO> data = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getIsPage()) |
||||
|
.doSelectPageInfo(() -> icResiUserDao.getResiUserList(formDTO)); |
||||
|
return new PageData(data.getList(), data.getTotal()); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @Author sun |
||||
|
* @Description 比对后的更新 |
||||
|
**/ |
||||
|
@Override |
||||
|
public void comparisonUpdate(ComparisonFormDTO formDTO) { |
||||
|
//1.查询比对记录表数据
|
||||
|
IcResiComparisonRecordEntity entity = baseDao.selectById(formDTO.getComparisonRecordId()); |
||||
|
if (null == entity) { |
||||
|
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "未查询到对应比对记录数据", "未查询到对应比对记录数据"); |
||||
|
} |
||||
|
//2.根据居民信息表数据
|
||||
|
IcResiUserEntity resiUserEntity = new IcResiUserEntity(); |
||||
|
resiUserEntity.setId(entity.getResiId()); |
||||
|
resiUserEntity.setName(entity.getPoliceName()); |
||||
|
icResiUserDao.updateById(resiUserEntity); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
@ -0,0 +1,108 @@ |
|||||
|
<?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.IcResiComparisonRecordDao"> |
||||
|
|
||||
|
<insert id="saveInsert" useGeneratedKeys="true" keyColumn="id" keyProperty="id" parameterType="com.epmet.entity.IcResiComparisonRecordEntity"> |
||||
|
<selectKey keyProperty="id" resultType="java.lang.String" order="BEFORE"> |
||||
|
SELECT replace(uuid(),'-','') AS ID |
||||
|
</selectKey> |
||||
|
INSERT INTO ic_resi_comparison_record |
||||
|
( |
||||
|
id, |
||||
|
customer_id, |
||||
|
resi_id, |
||||
|
resi_name, |
||||
|
resi_id_card, |
||||
|
police_name, |
||||
|
police_id_card, |
||||
|
`type`, |
||||
|
identical, |
||||
|
is_comparison, |
||||
|
comparison_result, |
||||
|
del_flag, |
||||
|
revision, |
||||
|
created_by, |
||||
|
created_time, |
||||
|
updated_by, |
||||
|
updated_time |
||||
|
) VALUE ( |
||||
|
#{id}, |
||||
|
#{customerId}, |
||||
|
#{resiId}, |
||||
|
#{resiName}, |
||||
|
#{resiIdCard}, |
||||
|
#{policeName}, |
||||
|
#{policeIdCard}, |
||||
|
#{type}, |
||||
|
#{identical}, |
||||
|
#{isComparison}, |
||||
|
#{comparisonResult}, |
||||
|
0, |
||||
|
0, |
||||
|
#{createdBy}, |
||||
|
now(), |
||||
|
#{createdBy}, |
||||
|
now() |
||||
|
) ON DUPLICATE KEY UPDATE |
||||
|
resi_name = values(resi_name), |
||||
|
resi_id_card = values(resi_id_card), |
||||
|
police_name = values(police_name), |
||||
|
police_id_card = values(police_id_card), |
||||
|
`type` = values(`type`), |
||||
|
identical = values(identical), |
||||
|
is_comparison = values(is_comparison), |
||||
|
comparison_result = values(comparison_result), |
||||
|
updated_time = NOW(), |
||||
|
updated_by = #{updatedBy} |
||||
|
</insert> |
||||
|
|
||||
|
<select id="getResiComparisonList" resultType="com.epmet.dto.result.ResiComparisonListResultDTO"> |
||||
|
SELECT |
||||
|
a.id resiId, |
||||
|
a.`name` resiName, |
||||
|
a.id_card resiIdCard, |
||||
|
b.id comparisonRecordId, |
||||
|
b.police_name policeName, |
||||
|
b.police_id_card policeIdCard, |
||||
|
b.type type, |
||||
|
IF (b.type = '1', '已处理', '未处理') typeName, |
||||
|
b.identical identical, |
||||
|
(case b.identical when '0' then '否' when '1' then '是' WHEN '2' THEN '-' else '否' end ) identicalName, |
||||
|
b.is_comparison isComparison, |
||||
|
IF (b.is_comparison = '1', '是', '否') isComparisonName, |
||||
|
b.comparison_result comparisonResult |
||||
|
FROM |
||||
|
ic_resi_user a |
||||
|
<choose> |
||||
|
<when test='identical == null or identical == "" or identical == "0" or type == null and type == "" or type == "0" '> |
||||
|
LEFT JOIN ic_resi_comparison_record b ON a.id = b.resi_id AND b.del_flag = '0' |
||||
|
<if test="identical != null and identical != ''"> |
||||
|
AND b.identical =#{identical} |
||||
|
</if> |
||||
|
<if test="type != null and type != ''"> |
||||
|
AND b.type =#{type} |
||||
|
</if> |
||||
|
</when> |
||||
|
<otherwise> |
||||
|
INNER JOIN ic_resi_comparison_record b ON a.id = b.resi_id AND b.del_flag = '0' |
||||
|
<if test="identical != null and identical != ''"> |
||||
|
AND b.identical =#{identical} |
||||
|
</if> |
||||
|
<if test="type != null and type != ''"> |
||||
|
AND b.type =#{type} |
||||
|
</if> |
||||
|
</otherwise> |
||||
|
</choose> |
||||
|
WHERE |
||||
|
a.del_flag = '0' |
||||
|
AND a.customer_id = #{customerId} |
||||
|
AND a.pids LIKE CONCAT('%',#{agencyId},'%') |
||||
|
<if test="idCard != null and idCard != ''"> |
||||
|
AND a.id_card =#{idCard} |
||||
|
</if> |
||||
|
ORDER BY a.pids ASC, b.created_time DESC |
||||
|
</select> |
||||
|
|
||||
|
|
||||
|
</mapper> |
Loading…
Reference in new issue