Browse Source

监督端-同步用户部门定时任务

dev-V1.0.5.1
niujiyi 2 months ago
parent
commit
c3fb9acd17
  1. 1
      zdxt-modules/zdxt-enforcement-code-common/src/main/java/com/zdxt/enforcementcode/domain/vo/SrzDeptVo.java
  2. 46
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/UserSearchDto.java
  3. 119
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/SrzUserVo.java
  4. 101
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/quartz/job/SynDeptInfoJob.java
  5. 154
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/quartz/job/SynUserInfoJob.java
  6. 2
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/ISrzDeptService.java
  7. 2
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/ISrzUserService.java
  8. 6
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/SrzDeptServiceImpl.java
  9. 7
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/SrzUserServiceImpl.java
  10. 2
      zdxt-modules/zdxt-system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java
  11. 214
      zdxt-modules/zdxt-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java

1
zdxt-modules/zdxt-enforcement-code-common/src/main/java/com/zdxt/enforcementcode/domain/vo/SrzDeptVo.java

@ -238,5 +238,4 @@ public class SrzDeptVo extends SrzDeptMinVo {
@ExcelProperty(value = "是否需要更新:0-否 1-是")
private Long needUpdate;
}

46
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/UserSearchDto.java

@ -0,0 +1,46 @@
package com.zdxt.enforcementcode.domain.bean;
import java.io.Serializable;
/**
* 深i企用户
*/
public class UserSearchDto implements Serializable {
/**
* 登录账号
*/
private String loginName;
/**
* 手机号码
*/
private String phone;
/**
* 用户类型
*/
private Integer userSource;
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public Integer getUserSource() {
return userSource;
}
public void setUserSource(Integer userSource) {
this.userSource = userSource;
}
}

119
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/SrzUserVo.java

@ -29,343 +29,343 @@ public class SrzUserVo implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*
*/
@ExcelProperty(value = "")
private String ryztcode;
/**
*
*
*/
@ExcelProperty(value = "")
private String mobilenumber;
/**
*
*
*/
@ExcelProperty(value = "")
private String zcgzld;
/**
*
*
*/
@ExcelProperty(value = "")
private String gldw;
/**
*
*
*/
@ExcelProperty(value = "")
private String updateat;
/**
*
*
*/
@ExcelProperty(value = "")
private String zwjccode;
/**
*
*
*/
@ExcelProperty(value = "")
private String effecton;
/**
*
*
*/
@ExcelProperty(value = "")
private String zwjc;
/**
*
*
*/
@ExcelProperty(value = "")
private String organizationid;
/**
*
*
*/
@ExcelProperty(value = "")
private String province;
/**
*
*
*/
@ExcelProperty(value = "")
private String isdisabled;
/**
*
*
*/
@ExcelProperty(value = "")
private String certificatetypeidcode;
/**
*
*
*/
@ExcelProperty(value = "")
private String jrfs;
/**
*
*
*/
@ExcelProperty(value = "")
private String sparenumber;
/**
*
*
*/
@ExcelProperty(value = "")
private String positionname;
/**
*
*
*/
@ExcelProperty(value = "")
private String pylxcode;
/**
*
*
*/
@ExcelProperty(value = "")
private String jbcc;
/**
*
*
*/
@ExcelProperty(value = "")
private String contractendtime;
/**
*
*
*/
@ExcelProperty(value = "")
private String sequence;
/**
*
*
*/
@ExcelProperty(value = "")
private String gendercode;
/**
*
*
*/
@ExcelProperty(value = "")
private String zwwxmobile;
/**
*
*
*/
@ExcelProperty(value = "")
private String district;
/**
*
*
*/
@ExcelProperty(value = "")
private String guid;
/**
*
*
*/
@ExcelProperty(value = "")
private String certificatetypeid;
/**
*
*
*/
@ExcelProperty(value = "")
private String contractstarttime;
/**
*
*
*/
@ExcelProperty(value = "")
private String rylydw;
/**
*
*
*/
@ExcelProperty(value = "")
private String telephonenumber;
/**
*
*
*/
@ExcelProperty(value = "")
private String gender;
/**
*
*
*/
@ExcelProperty(value = "")
private String city;
/**
*
*
*/
@ExcelProperty(value = "")
private String jbcccode;
/**
*
*
*/
@ExcelProperty(value = "")
private String rylb;
/**
*
*
*/
@ExcelProperty(value = "")
private String hometowncode;
/**
*
*
*/
@ExcelProperty(value = "")
private String units;
/**
*
*
*/
@ExcelProperty(value = "")
private String srzuserid;
/**
*
*
*/
@ExcelProperty(value = "")
private String createat;
/**
*
*
*/
@ExcelProperty(value = "")
private String engname;
/**
*
*
*/
@ExcelProperty(value = "")
private String isdeleted;
/**
*
*
*/
@ExcelProperty(value = "")
private String jrfscode;
/**
*
*
*/
@ExcelProperty(value = "")
private String email;
/**
*
*
*/
@ExcelProperty(value = "")
private String zwbscode;
/**
*
*
*/
@ExcelProperty(value = "")
private String dwzyld;
/**
*
*
*/
@ExcelProperty(value = "")
private String pylx;
/**
*
*
*/
@ExcelProperty(value = "")
private String systemid;
/**
*
*
*/
@ExcelProperty(value = "")
private String rylbcode;
/**
*
*
*/
@ExcelProperty(value = "")
private String hometown;
/**
*
*
*/
@ExcelProperty(value = "")
private String photo;
/**
*
*
*/
@ExcelProperty(value = "")
private String glzrr;
/**
*
*
*/
@ExcelProperty(value = "")
private String userid;
/**
*
*
*/
@ExcelProperty(value = "")
private String zwwxid;
/**
*
*
*/
@ExcelProperty(value = "")
private String ryzt;
/**
*
*
*/
@ExcelProperty(value = "")
private String certificatenumber;
/**
*
*
*/
@ExcelProperty(value = "")
private String zwbs;
/**
*
*
*/
@ExcelProperty(value = "")
private String faxnumber;
/**
*
*
*/
@ExcelProperty(value = "")
private String fullname;
/**
*
*
*/
@ExcelProperty(value = "")
private String ismappingperson;
/**
*
*
*/
@ExcelProperty(value = "")
private String taskid;
/**
*
*
*/
@ExcelProperty(value = "")
private String username;
@ -376,5 +376,10 @@ public class SrzUserVo implements Serializable {
@ExcelProperty(value = "是否需要更新:0-否 1-是")
private Long needUpdate;
//private String mobileNumber;
//private String certificateTypeId;
//private String certificateTypeIdCode;
//private String certificateNumber;
// private String isMappingPerson;
}

101
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/quartz/job/SynDeptInfoJob.java

@ -0,0 +1,101 @@
package com.zdxt.enforcementcode.quartz.job;
import com.zdxt.enforcementcode.domain.bo.SrzDeptBo;
import com.zdxt.enforcementcode.domain.vo.SrzDeptVo;
import com.zdxt.enforcementcode.service.ISrzDeptService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.system.domain.bo.SysDeptBo;
import org.dromara.system.domain.vo.SysDeptVo;
import org.dromara.system.service.ISysDeptService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 同步部门信息
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class SynDeptInfoJob {
@Value("${srnwg.secretKey}")
private String secretKey;
@Autowired private ISrzDeptService iSrzDeptService;
@Autowired private ISysDeptService sysDeptService;
public static Map<String,String> params = new HashMap<>();
private static final Logger log = LoggerFactory.getLogger(SynDeptInfoJob.class);
public void run(){
this.deptInfo();
}
/** 同步部门数据 */
public void deptInfo(){
log.info("====================> 市认证原始表 -> 业务表 同步开始");
int insertNum = 0;
int updateNum = 0;
int rowNom_srz = 0;
try {
// 做个死循环, 一直到查寻不到数据了再break
while (true) {
SrzDeptBo bo = new SrzDeptBo();
bo.setNeedUpdate(0L);
List<SrzDeptVo> srzDeptList = iSrzDeptService.queryList(bo);
// 如果查出结果为空 或 长度为0 则跳出循环
if (srzDeptList == null || srzDeptList.isEmpty() || srzDeptList.size() == 0) break;
// 开始同步更新数据到用户表
for(SrzDeptVo srzDept : srzDeptList){
log.info("====> 获取数据: {}", srzDept.getName());
SysDeptBo sysDeptBo = new SysDeptBo();
// 机构ID organizationId
sysDeptBo.setDeptId(srzDept.getOrganizationid());
// 机构父节点 parentId
sysDeptBo.setParentId(srzDept.getParentid());
sysDeptBo.setOrganizationParentId(srzDept.getParentid());
// 机构名称 name
sysDeptBo.setDeptName(srzDept.getName());
//限制唯一部门id
String organizationId = srzDept.getOrganizationid();
if(StringUtils.isNotEmpty(organizationId)){
SysDeptVo uniqueDept = sysDeptService.selectDeptById(organizationId);
if (null != uniqueDept && uniqueDept.getDeptId() != null) {
// 更新数据库
sysDeptBo.setDeptId(uniqueDept.getDeptId());
log.info("====> 更新数据: {}: {}", uniqueDept.getDeptId(), uniqueDept.getDeptName());
int rowNum = sysDeptService.updateDept(sysDeptBo);
updateNum += rowNum;
} else {
// 插入数据库
log.info("====> 新增数据: {}: {}", sysDeptBo.getDeptId(), sysDeptBo.getDeptName());
int rowNum = sysDeptService.insertDept(sysDeptBo);
insertNum += rowNum;
}
srzDept.setNeedUpdate(1L);
int srz_num = iSrzDeptService.update(srzDept);
rowNom_srz += srz_num;
}
}
}
log.info("新增部门数量 : {} / 更新用户数量 : {} / 更新原始表数 : {}", insertNum, updateNum, rowNom_srz);
} catch (Exception e) {
System.out.println(e);
e.printStackTrace();
}
}
}

154
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/quartz/job/SynUserInfoJob.java

@ -0,0 +1,154 @@
package com.zdxt.enforcementcode.quartz.job;
import com.zdxt.enforcementcode.common.util.IdCardCryptoUtil;
import com.zdxt.enforcementcode.domain.bean.UserSearchDto;
import com.zdxt.enforcementcode.domain.bo.SrzUserBo;
import com.zdxt.enforcementcode.domain.vo.SrzUserVo;
import com.zdxt.enforcementcode.service.ISrzUserService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.system.domain.bo.SysUserBo;
import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.service.ISysDictDataService;
import org.dromara.system.service.ISysUserService;
import org.dromara.system.service.impl.SysUserServiceImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 同步用户信息定时任务
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class SynUserInfoJob {
@Value("${srnwg.secretKey}")
private String secretKey;
@Autowired
private ISrzUserService iSrzUserService;
@Autowired
private ISysDictDataService sysDictDataService;
@Autowired
private ISysUserService sysUserService;
public static Map<String,String> params = new HashMap<>();
private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);
public void run(){
this.userInfo();
}
/** 同步用户数据 */
public void userInfo(){
log.info("====================> 市认证原始表 -> 业务表 同步开始");
int insertNum = 0;
int updateNum = 0;
int rowNom_srz = 0;
try {
// 做个死循环, 一直到查寻不到数据了再break
while (true) {
SrzUserBo srzUserBo = new SrzUserBo();
srzUserBo.setNeedUpdate(0L);
List<SrzUserVo> srzUserList = iSrzUserService.queryList(srzUserBo);
// 如果查出结果为空 或 长度为0 则跳出循环
if (srzUserList == null || srzUserList.isEmpty() || srzUserList.size() == 0) break;
// 开始同步更新数据到用户表
for(SrzUserVo srzUser : srzUserList){
log.info("====> 获取数据: {}", srzUser.getUsername());
SysUserBo sysUserBo = new SysUserBo();
sysUserBo.setSex(srzUser.getGendercode());
sysUserBo.setDeptId(srzUser.getOrganizationid());
sysUserBo.setOrganizationId(srzUser.getOrganizationid());
sysUserBo.setStrUserId(srzUser.getUserid());
sysUserBo.setSrzUserid(srzUser.getSrzuserid());
sysUserBo.setFullname(srzUser.getFullname());
sysUserBo.setUserName(srzUser.getFullname());
sysUserBo.setTaskId(srzUser.getTaskid());
sysUserBo.setSystemId(srzUser.getSystemid());
sysUserBo.setLoginName(srzUser.getUsername());
sysUserBo.setEffectOn(srzUser.getEffecton());
sysUserBo.setIsDisabled(srzUser.getIsdisabled());
sysUserBo.setIsDeleted(srzUser.getIsdeleted());
sysUserBo.setCreateAt(srzUser.getCreateat());
sysUserBo.setUpdateAt(srzUser.getUpdateat());
sysUserBo.setGuid(srzUser.getGuid());
//用户类型 0 系统用户
sysUserBo.setUserSource(0);
//手机号加密
String mobileNumber = "";
try {
mobileNumber = IdCardCryptoUtil.symmetricEncryptIdCard(secretKey, srzUser.getMobilenumber());
} catch (Exception e) {
System.out.println(e.getMessage());
mobileNumber = "";
}
sysUserBo.setMobileNumber(mobileNumber);
sysUserBo.setPhonenumber(mobileNumber);
sysUserBo.setEmail(srzUser.getEmail());
sysUserBo.setCertificateTypeId(srzUser.getCertificatetypeid());
sysUserBo.setCertificateTypeIdCode(srzUser.getCertificatetypeidcode());
//证件号加密
String certificateNumber = "";
try {
certificateNumber = IdCardCryptoUtil.symmetricEncryptIdCard(secretKey, srzUser.getCertificatenumber());
} catch (Exception e) {
certificateNumber = "";
}
sysUserBo.setCertificateNumber(certificateNumber);
sysUserBo.setIsMappingPerson(srzUser.getIsmappingperson());
sysUserBo.randomSalt();
//新增用户默认不删除标记
sysUserBo.setDelFlag("0");
//限制只通过用户信息的username来判断,避免登录出现问题
String userName = srzUser.getUsername();
if(StringUtils.isNotEmpty(userName)){
UserSearchDto userSearchDto = new UserSearchDto();
userSearchDto.setUserSource(0);
SysUserVo uniqueUser = sysUserService.selectUserByLoginName(userName);
if (null != uniqueUser && uniqueUser.getUserId() != null) {
// 更新数据库
sysUserBo.setUserId(uniqueUser.getUserId());
if (StringUtils.isEmpty(sysUserBo.getLawCertificateNum())) {
sysUserBo.setLawCertificateNum(uniqueUser.getLawCertificateNum());
}
log.info("====> 更新数据: {}", srzUser.getUsername());
int rowNum = sysUserService.updateUser(sysUserBo);
updateNum += rowNum;
} else {
// 插入数据库
log.info("====> 新增数据: {}", srzUser.getUsername());
int rowNum = sysUserService.insertUser(sysUserBo);
insertNum += rowNum;
}
srzUser.setNeedUpdate(1L);
int srz_num = iSrzUserService.update(srzUser);
rowNom_srz += srz_num;
}
}
}
log.info("新增用户数量 : {} / 更新用户数量 : {} / 更新原始表数 : {}", insertNum, updateNum, rowNom_srz);
} catch (Exception e) {
System.out.println(e);
e.printStackTrace();
}
}
}

2
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/ISrzDeptService.java

@ -57,7 +57,7 @@ public interface ISrzDeptService {
* @return 是否修改成功
*/
Boolean updateByBo(SrzDeptBo bo);
Integer update(SrzDeptVo vo);
/**
* 校验并批量删除市认证对接---组织机构信息信息
*

2
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/ISrzUserService.java

@ -56,7 +56,7 @@ public interface ISrzUserService {
* @return 是否修改成功
*/
Boolean updateByBo(SrzUserBo bo);
Integer update(SrzUserVo vo);
/**
* 校验并批量删除市认证用户原始信息
*

6
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/SrzDeptServiceImpl.java

@ -147,6 +147,12 @@ public class SrzDeptServiceImpl implements ISrzDeptService {
return baseMapper.updateById(update) > 0;
}
@Override
public Integer update(SrzDeptVo vo) {
SrzDept update = MapstructUtils.convert(vo, SrzDept.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update);
}
/**
* 保存前的数据校验
*/

7
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/SrzUserServiceImpl.java

@ -164,6 +164,13 @@ public class SrzUserServiceImpl implements ISrzUserService {
return baseMapper.updateById(update) > 0;
}
@Override
public Integer update(SrzUserVo vo) {
SrzUser update = MapstructUtils.convert(vo, SrzUser.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update);
}
/**
* 保存前的数据校验
*/

2
zdxt-modules/zdxt-system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java

@ -103,4 +103,6 @@ public class SysDeptBo extends BaseEntity {
* 部门类型
*/
private String deptType;
private String organizationParentId;
}

214
zdxt-modules/zdxt-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java

@ -1,5 +1,6 @@
package org.dromara.system.domain.bo;
import cn.hutool.core.util.RandomUtil;
import com.google.common.collect.Maps;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.Email;
@ -153,4 +154,217 @@ public class SysUserBo extends BaseEntity {
}
private String loginName;
/** 部门id */
private String organizationId;
/** 用户ID */
private String strUserId;
/** 姓名 */
private String fullname;
/** 任务ID */
private String taskId;
/** 业务系统ID */
private String systemId;
/** 作用点 (CREATE:新建;UPDATE:更新;DELETED:删除;ENABLED:启用;DISABLED:禁用) */
private String effectOn;
/** 是否删除 (0否;1是)*/
private String isDeleted;
/** 是否禁用 (0否;1是)*/
private String isDisabled;
/** 创建日期 */
private String createAt;
/** 更新日期 */
private String updateAt;
/** 下游唯一标识 */
private String guid;
/** 手机号 */
private String mobileNumber;
/** 证件类型 */
private String certificateTypeId;
/** 证件类型代码 */
private String certificateTypeIdCode;
/** 证件号码 */
private String certificateNumber;
/** 省认证用户id */
private String srzUserid;
/** 是否驻区人员 */
private String isMappingPerson;
/** 人员所在部门(包括主岗和兼岗部门) */
private String units;
/**
* 用户登录密码 - 加密
*/
private String secretKey;
/**
* 用户登录名称 - 加密
*/
private String secretName;
/** 英文名 */
private String engName;
/** 头像 */
private String photo;
/** 备用电话号码 */
private String spareNumber;
/** 座机号码 */
private String telephoneNumber;
/** 办公传真号码 */
private String faxNumber;
/** 性别代码 */
private String genderCode;
/** 排序号 */
private String sequence;
/** 管理单位 */
private String gldw;
/** 人员类别代码 */
private String rylbCode;
/** 人员类别 */
private String rylb;
/** 人员状态代码 */
private String ryztCode;
/** 人员状态 */
private String ryzt;
/** 是否单位主要领导 */
private String dwzyld;
/** 是否主持工作领导 */
private String zcgzld;
/** 职务名称 */
private String positionname;
/** 职务简称代码 */
private String zwjcCode;
/** 职务简称 */
private String zwjc;
/** 职务标识代码 */
private String zwbsCode;
/** 职务标识 */
private String zwbs;
/** 级别层级代码 */
private String jbccCode;
/** 级别层级 */
private String jbcc;
/** 所在省 */
private String province;
/** 所在市 */
private String city;
/** 所在区/县 */
private String district;
/** 籍贯代码 */
private String hometownCode;
/** 籍贯 */
private String hometown;
/** 聘用类型代码 */
private String pylxcode;
/** 聘用类型 */
private String pylx;
/** 合同开始日期 */
private String contractStartTime;
/** 合同结束日期 */
private String contractEndTime;
/** 管理责任人 */
private String glzrr;
/** 人员来源单位 */
private String rylydw;
/** 进入本单位方式代码 */
private String jrfscode;
/** 进入本单位方式 */
private String jrfs;
/** 政务微信手机号 */
private String zwwxMobile;
/** 市政务微信id */
private String zwwxId;
private String gender;
/**
* AES 解密后的手机号
*/
private String decryptPhoneNum;
/**
* 用户类型 0 政务系统用户 1 深i企用户
*/
private Integer userSource;
/**
* 删除标志(0代表存在 2代表删除)
*/
private String delFlag;
/** 执法证件号 */
private String lawCertificateNum;
/**
* 盐加密
*/
private String salt;
/**
* 获取盐加密
*
* @return 盐加密
*/
public void setSalt(String salt) {
this.salt = salt;
}
/**
* 用户密码盐字符集(十六进制小写)
*/
private static final String USER_SALT_CHARS = "0123456789abcdef";
/**
* 用户密码盐默认长度(SysUser / EnterpriseUser 使用,与现有业务保持一致)
*/
private static final int USER_SALT_LENGTH = 6;
/**
* 生成随机盐
*/
public void randomSalt() {
String hex= RandomUtil.randomString(USER_SALT_CHARS, USER_SALT_LENGTH);
setSalt(hex);
}
}

Loading…
Cancel
Save