Commit b888df83 authored by 高建强's avatar 高建强

item:人员数据同步迁移plan6

parent 3138a294
package com.yeejoin.amos.boot.module.common.api.dto; package com.yeejoin.amos.boot.module.common.api.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.Date;
@Data @Data
public class OrgUsrSyncDto { public class OrgUsrSyncDto {
private Long sequenceNbr; protected Long sequenceNbr;
protected Date recDate;
protected String recUserId;
protected String recUserName;
/**
* 是否删除
*/
public Boolean isDelete = false;
@ApiModelProperty(value = "机构/部门名称")
private String bizOrgName;
@ApiModelProperty(value = "机构编码")
private String bizOrgCode;
@ApiModelProperty(value = "amos中公司/部门ID")
private String amosOrgId;
@ApiModelProperty(value = "amos中公司/部门编码")
private String amosOrgCode;
@ApiModelProperty(value = "机构类型`")
private String bizOrgType;
@ApiModelProperty(value = "所属建筑名称")
private String buildName;
@ApiModelProperty(value = "所属建筑ID")
private String buildId;
@ApiModelProperty(value = "归属机构/部门/人员")
private String parentId;
@ApiModelProperty(value = "扩展属性1")
private String orgExpandAttr1;
@ApiModelProperty(value = "扩展属性2")
private String orgExpandAttr2;
@ApiModelProperty(value = "扩展属性3")
private String orgExpandAttr3;
@ApiModelProperty(value = "扩展属性4")
private String orgExpandAttr4;
private String orgExpandAttr5;
private String orgExpandAttr6;
private String orgExpandAttr7;
private String orgExpandAttr8;
@ApiModelProperty(value = "省市区code,用逗号分隔")
private String pczCode;
@ApiModelProperty(value = "省市区名称,用逗号分隔")
private String pczName;
@ApiModelProperty(value = "省市区名称,用逗号分隔")
private String parentName;
@ApiModelProperty(value = "唯一编号")
private String code;
private String companyBizName;
private String companyBizCode;
private String fireManagementPost;
private String typeCode;
private String certificatesNumber;
private String employeeNumber;
private String telephone;
private String isCertificate;
private String isFirefighters;
private String personImg;
private String jobTitle;
} }
...@@ -1064,4 +1064,124 @@ LEFT JOIN ( ...@@ -1064,4 +1064,124 @@ LEFT JOIN (
AND code = #{companyCode} AND code = #{companyCode}
</if> </if>
</select> </select>
<select id="getOrgUsrSyncDataList" resultType="com.yeejoin.amos.boot.module.common.api.dto.OrgUsrSyncDto">
SELECT
u.*,
case
when u.biz_org_type = 'person'
and (
SELECT
s.biz_org_type
from
cb_org_usr s
WHERE
s.sequence_nbr = u.parent_id) = 'DEPARTMENT'
then (
SELECT
s.biz_org_name
from
cb_org_usr s
WHERE
s.sequence_nbr = (
SELECT
s.parent_id
from
cb_org_usr s
WHERE
s.sequence_nbr = u.parent_id))
when u.biz_org_type = 'person'
and (
SELECT
s.biz_org_type
from
cb_org_usr s
WHERE
s.sequence_nbr = u.parent_id) = 'COMPANY'
then u.parent_name
else u.biz_org_name
end as company_biz_name,
case
when u.biz_org_type = 'person'
and (
SELECT
s.biz_org_type
from
cb_org_usr s
WHERE
s.sequence_nbr = u.parent_id) = 'DEPARTMENT'
then (
SELECT
s.biz_org_code
from
cb_org_usr s
WHERE
s.sequence_nbr = (
SELECT
s.parent_id
from
cb_org_usr s
WHERE
s.sequence_nbr = u.parent_id))
when u.biz_org_type = 'person'
and (
SELECT
s.biz_org_type
from
cb_org_usr s
WHERE
s.sequence_nbr = u.parent_id) = 'COMPANY'
then (
SELECT
s.biz_org_code
from
cb_org_usr s
WHERE
s.sequence_nbr = u.parent_id)
else u.biz_org_code
end as company_biz_code,
cfp.fire_management_post,
cft.type_code,
cf.certificate_number certificatesNumber,
cf.employee_number ,
cf.mobile_phone telephone,
( CASE
WHEN cfp.post_qualification IS NULL THEN 0
ELSE 1
END ) AS is_certificate,
IF
((
SELECT
field_value
FROM
cb_dynamic_form_instance dfi
WHERE
dfi.field_code = 'peopleType'
AND dfi.instance_id = u.sequence_nbr )= 2,
1,
0 ) AS is_firefighters,
(
SELECT
field_value
FROM
cb_dynamic_form_instance dfi
WHERE
dfi.field_code = 'personImg'
AND dfi.instance_id = u.sequence_nbr ) AS personImg,
cfp.job_title
FROM
cb_org_usr u
LEFT JOIN cb_firefighters_post cfp ON
cfp.org_usr_id = u.sequence_nbr
LEFT JOIN cb_firefighters cf ON
cf.org_usr_id = u.sequence_nbr
LEFT JOIN cb_fire_team cft ON
cft.sequence_nbr = cf.fire_team_id
WHERE
u.is_delete = 0
<if test="id != null">
AND u.sequence_nbr = #{id}
</if>
GROUP BY
u.sequence_nbr
</select>
</mapper> </mapper>
...@@ -9,6 +9,7 @@ import com.yeejoin.amos.component.rule.config.RuleConfig; ...@@ -9,6 +9,7 @@ import com.yeejoin.amos.component.rule.config.RuleConfig;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.typroject.tyboot.component.emq.EmqKeeper; import org.typroject.tyboot.component.emq.EmqKeeper;
...@@ -28,6 +29,9 @@ public class DataSyncServiceImpl implements IDataSyncService { ...@@ -28,6 +29,9 @@ public class DataSyncServiceImpl implements IDataSyncService {
@Autowired @Autowired
private OrgUsrMapper orgUsrMapper; private OrgUsrMapper orgUsrMapper;
@Value("${emq.orgUsr.sync.switch}")
private Boolean orgUsrSyncSwitch;
@Override @Override
public void OrgUsrSyncDtoDataSync(Long id) { public void OrgUsrSyncDtoDataSync(Long id) {
try { try {
...@@ -39,7 +43,9 @@ public class DataSyncServiceImpl implements IDataSyncService { ...@@ -39,7 +43,9 @@ public class DataSyncServiceImpl implements IDataSyncService {
for (OrgUsrSyncDto x : list) { for (OrgUsrSyncDto x : list) {
String message = buildSyncMessage(DataSyncTopicEnum.ORG_USR.getTopic(), x); String message = buildSyncMessage(DataSyncTopicEnum.ORG_USR.getTopic(), x);
emqKeeper.getMqttClient().publish(DataSyncTopicEnum.EQM_PATROL_CREATED.getTopic(), message.getBytes(), RuleConfig.DEFAULT_QOS, false); emqKeeper.getMqttClient().publish(DataSyncTopicEnum.EQM_PATROL_CREATED.getTopic(), message.getBytes(), RuleConfig.DEFAULT_QOS, false);
emqKeeper.getMqttClient().publish(DataSyncTopicEnum.ORG_USR.getTopic(), JSONObject.toJSONString(x).getBytes(), RuleConfig.DEFAULT_QOS, false); if (orgUsrSyncSwitch) {
emqKeeper.getMqttClient().publish(DataSyncTopicEnum.ORG_USR.getTopic(), JSONObject.toJSONString(x).getBytes(), RuleConfig.DEFAULT_QOS, false);
}
} }
} else { } else {
// 同步删除人员信息 // 同步删除人员信息
...@@ -47,7 +53,9 @@ public class DataSyncServiceImpl implements IDataSyncService { ...@@ -47,7 +53,9 @@ public class DataSyncServiceImpl implements IDataSyncService {
orgUsrSyncDto.setSequenceNbr(id); orgUsrSyncDto.setSequenceNbr(id);
String message = buildSyncMessage(DataSyncTopicEnum.ORG_USR.getTopic(), orgUsrSyncDto); String message = buildSyncMessage(DataSyncTopicEnum.ORG_USR.getTopic(), orgUsrSyncDto);
emqKeeper.getMqttClient().publish(DataSyncTopicEnum.EQM_PATROL_CREATED.getTopic(), message.getBytes(), RuleConfig.DEFAULT_QOS, false); emqKeeper.getMqttClient().publish(DataSyncTopicEnum.EQM_PATROL_CREATED.getTopic(), message.getBytes(), RuleConfig.DEFAULT_QOS, false);
emqKeeper.getMqttClient().publish(DataSyncTopicEnum.ORG_USR.getTopic(), JSONObject.toJSONString(orgUsrSyncDto).getBytes(), RuleConfig.DEFAULT_QOS, false); if (orgUsrSyncSwitch) {
emqKeeper.getMqttClient().publish(DataSyncTopicEnum.ORG_USR.getTopic(), JSONObject.toJSONString(orgUsrSyncDto).getBytes(), RuleConfig.DEFAULT_QOS, false);
}
} }
} }
} catch (Exception e) { } catch (Exception e) {
......
package com.yeejoin.amos.boot.module.common.biz.service.impl; package com.yeejoin.amos.boot.module.common.biz.service.impl;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
import com.yeejoin.amos.boot.biz.common.dao.mapper.DataDictionaryMapper; import com.yeejoin.amos.boot.biz.common.dao.mapper.DataDictionaryMapper;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.module.common.api.dto.*; import com.yeejoin.amos.boot.module.common.api.dto.*;
import com.yeejoin.amos.boot.module.common.api.entity.*; import com.yeejoin.amos.boot.module.common.api.entity.*;
import com.yeejoin.amos.boot.module.common.api.mapper.OrgUsrMapper; import com.yeejoin.amos.boot.module.common.api.mapper.OrgUsrMapper;
import com.yeejoin.amos.component.feign.model.Page; import com.yeejoin.amos.boot.module.common.api.service.IDataSyncService;
import com.yeejoin.amos.feign.privilege.Privilege; import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel; import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.RoleModel;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionSynchronization;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.annotation.Condition; import org.typroject.tyboot.core.rdbms.annotation.Condition;
import org.typroject.tyboot.core.rdbms.annotation.Operator; import org.typroject.tyboot.core.rdbms.annotation.Operator;
...@@ -35,7 +34,6 @@ import com.yeejoin.amos.boot.module.common.api.service.IFirefightersService; ...@@ -35,7 +34,6 @@ import com.yeejoin.amos.boot.module.common.api.service.IFirefightersService;
import com.yeejoin.amos.component.feign.model.FeignClientResult; import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.systemctl.Systemctl; import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.RegionModel; import com.yeejoin.amos.feign.systemctl.model.RegionModel;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
/** /**
* 消防队员 服务实现类 * 消防队员 服务实现类
...@@ -62,6 +60,9 @@ public class FirefightersServiceImpl extends BaseService<FirefightersDto, Firefi ...@@ -62,6 +60,9 @@ public class FirefightersServiceImpl extends BaseService<FirefightersDto, Firefi
@Autowired @Autowired
private OrgUsrMapper orgUsrMapper; private OrgUsrMapper orgUsrMapper;
@Autowired
private IDataSyncService dataSyncService;
@Override @Override
public List<FirefightersZhDto> getFirefighters(int pageNum, int pageSize, FirefightersDto par) { public List<FirefightersZhDto> getFirefighters(int pageNum, int pageSize, FirefightersDto par) {
return firefightersMapper.getFirefighters(pageNum, pageSize, par); return firefightersMapper.getFirefighters(pageNum, pageSize, par);
...@@ -256,6 +257,14 @@ public class FirefightersServiceImpl extends BaseService<FirefightersDto, Firefi ...@@ -256,6 +257,14 @@ public class FirefightersServiceImpl extends BaseService<FirefightersDto, Firefi
// 更新紧急联系人 // 更新紧急联系人
ifirefightersContactsService.updateById(peopleInfoDto.getFirefightersContacts()); ifirefightersContactsService.updateById(peopleInfoDto.getFirefightersContacts());
} }
// 巡检站端与中心级数据同步
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override
public void afterCommit() {
// 事物提交后业务逻辑
dataSyncService.OrgUsrSyncDtoDataSync(id);
}
});
return peopleInfoDto; return peopleInfoDto;
} }
......
...@@ -27,12 +27,12 @@ import com.yeejoin.amos.boot.module.common.api.enums.UserRolesEnum; ...@@ -27,12 +27,12 @@ import com.yeejoin.amos.boot.module.common.api.enums.UserRolesEnum;
import com.yeejoin.amos.boot.module.common.api.enums.UserUnitTypeEnum; import com.yeejoin.amos.boot.module.common.api.enums.UserUnitTypeEnum;
import com.yeejoin.amos.boot.module.common.api.feign.AmosTrainingFeignClient; import com.yeejoin.amos.boot.module.common.api.feign.AmosTrainingFeignClient;
import com.yeejoin.amos.boot.module.common.api.mapper.*; import com.yeejoin.amos.boot.module.common.api.mapper.*;
import com.yeejoin.amos.boot.module.common.api.service.IDataSyncService;
import com.yeejoin.amos.boot.module.common.api.service.IMaintenanceCompanyService; import com.yeejoin.amos.boot.module.common.api.service.IMaintenanceCompanyService;
import com.yeejoin.amos.boot.module.common.api.service.IOrgUsrService; import com.yeejoin.amos.boot.module.common.api.service.IOrgUsrService;
import com.yeejoin.amos.component.feign.model.FeignClientResult; import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.privilege.Privilege; import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel; import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import com.yeejoin.amos.feign.privilege.model.RoleModel; import com.yeejoin.amos.feign.privilege.model.RoleModel;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -43,6 +43,8 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -43,6 +43,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionSynchronization;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.component.emq.EmqKeeper; import org.typroject.tyboot.component.emq.EmqKeeper;
import org.typroject.tyboot.core.foundation.context.RequestContext; import org.typroject.tyboot.core.foundation.context.RequestContext;
...@@ -160,6 +162,9 @@ public class OrgUsrServiceImpl extends BaseService<OrgUsrDto, OrgUsr, OrgUsrMapp ...@@ -160,6 +162,9 @@ public class OrgUsrServiceImpl extends BaseService<OrgUsrDto, OrgUsr, OrgUsrMapp
FirefightersContactsServiceImpl ifirefightersContactsService; FirefightersContactsServiceImpl ifirefightersContactsService;
@Autowired @Autowired
private IDataSyncService dataSyncService;
@Autowired
RedisUtils redisUtils; RedisUtils redisUtils;
public static List<OrgMenuDto> buildTreeParallel(List<OrgUsr> list) { public static List<OrgMenuDto> buildTreeParallel(List<OrgUsr> list) {
...@@ -2985,14 +2990,14 @@ public class OrgUsrServiceImpl extends BaseService<OrgUsrDto, OrgUsr, OrgUsrMapp ...@@ -2985,14 +2990,14 @@ public class OrgUsrServiceImpl extends BaseService<OrgUsrDto, OrgUsr, OrgUsrMapp
// 2.保存cb_dynamic_form_instance表 人员基本信息 // 2.保存cb_dynamic_form_instance表 人员基本信息
OrgUsrDto orgUsrDto = saveDynamicformInstance(orgUsr, peopleInfoDto.getFirefighters()); OrgUsrDto orgUsrDto = saveDynamicformInstance(orgUsr, peopleInfoDto.getFirefighters());
Long sequenceNbr = orgUsrDto.getSequenceNbr();
if (!ObjectUtils.isEmpty(orgUsrDto.getSequenceNbr())) { if (!ObjectUtils.isEmpty(sequenceNbr)) {
peopleInfoDto.getFirefightersContacts().setOrgUsrId(orgUsrDto.getSequenceNbr().toString()); peopleInfoDto.getFirefightersContacts().setOrgUsrId(sequenceNbr.toString());
peopleInfoDto.getFirefighters().setOrgUsrId(orgUsrDto.getSequenceNbr().toString()); peopleInfoDto.getFirefighters().setOrgUsrId(sequenceNbr.toString());
peopleInfoDto.getPostEduDtoObj().getFirefightersWorkexperience().setOrgUsrId(orgUsrDto.getSequenceNbr().toString()); peopleInfoDto.getPostEduDtoObj().getFirefightersWorkexperience().setOrgUsrId(sequenceNbr.toString());
peopleInfoDto.getPostEduDtoObj().getFirefightersEducation().setOrgUsrId(orgUsrDto.getSequenceNbr().toString()); peopleInfoDto.getPostEduDtoObj().getFirefightersEducation().setOrgUsrId(sequenceNbr.toString());
peopleInfoDto.getPostEduDtoObj().getFirefightersPost().setOrgUsrId(orgUsrDto.getSequenceNbr().toString()); peopleInfoDto.getPostEduDtoObj().getFirefightersPost().setOrgUsrId(sequenceNbr.toString());
peopleInfoDto.getFirefighters().setSequenceNbr(orgUsrDto.getSequenceNbr().toString()); peopleInfoDto.getFirefighters().setSequenceNbr(sequenceNbr.toString());
} }
if (peopleInfoDto.getFirefighters() != null && "1601".equals(peopleInfoDto.getFirefighters().getPeopleType())) { if (peopleInfoDto.getFirefighters() != null && "1601".equals(peopleInfoDto.getFirefighters().getPeopleType())) {
...@@ -3004,6 +3009,14 @@ public class OrgUsrServiceImpl extends BaseService<OrgUsrDto, OrgUsr, OrgUsrMapp ...@@ -3004,6 +3009,14 @@ public class OrgUsrServiceImpl extends BaseService<OrgUsrDto, OrgUsr, OrgUsrMapp
} }
// 4.保存岗位信息 // 4.保存岗位信息
saveFirefightersPost(peopleInfoDto.getPostEduDtoObj(), orgUsrDto.getSequenceNbr()); saveFirefightersPost(peopleInfoDto.getPostEduDtoObj(), orgUsrDto.getSequenceNbr());
// 巡检站端与中心级数据同步
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override
public void afterCommit() {
// 事物提交后业务逻辑
dataSyncService.OrgUsrSyncDtoDataSync(sequenceNbr);
}
});
return peopleInfoDto; return peopleInfoDto;
} }
...@@ -3322,7 +3335,14 @@ public class OrgUsrServiceImpl extends BaseService<OrgUsrDto, OrgUsr, OrgUsrMapp ...@@ -3322,7 +3335,14 @@ public class OrgUsrServiceImpl extends BaseService<OrgUsrDto, OrgUsr, OrgUsrMapp
if ("1601".equals(type)) { if ("1601".equals(type)) {
deleteFirefighters(id); deleteFirefighters(id);
} }
// 巡检站端与中心级数据同步
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override
public void afterCommit() {
// 事物提交后业务逻辑
dataSyncService.OrgUsrSyncDtoDataSync(id);
}
});
return "0"; return "0";
} }
......
...@@ -46,3 +46,5 @@ video.url=https://11.11.16.4:443/ ...@@ -46,3 +46,5 @@ video.url=https://11.11.16.4:443/
ifc.url=http://11.11.16.17/IFCInterface ifc.url=http://11.11.16.17/IFCInterface
ifc.call-back.localIp=11.11.16.1 ifc.call-back.localIp=11.11.16.1
#人员消息数据同步开关
emq.orgUsr.sync.switch=true
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment