diff --git a/tyr-server/pom.xml b/tyr-server/pom.xml
index 4ed2013e..b75af331 100644
--- a/tyr-server/pom.xml
+++ b/tyr-server/pom.xml
@@ -70,6 +70,10 @@
cn.axzo.basics
basics-common
+
+ com.xuxueli
+ xxl-job-core
+
diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/SaasRole.java b/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/SaasRole.java
index 4814caf2..b3b5c262 100644
--- a/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/SaasRole.java
+++ b/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/SaasRole.java
@@ -37,6 +37,42 @@ public class SaasRole extends BaseEntity {
*/
private String roleType;
+ private Long workspaceId;
+
+ private Integer workspaceType;
+
+ private Long ownerOuId;
+
+ /**
+ * 废弃 20230911
+ */
+ private Integer fitOuTypeBit;
+
+ /**
+ * 废弃 20230911
+ */
+ private Integer fitOuNodeTypeBit;
+
+ /**
+ * 废弃 20230911
+ */
+ private Long positionTemplateId;
+
+ /**
+ * 废弃 20230911
+ */
+ private Long projectTeamManageRoleResourceId;
+
+ /**
+ * 废弃 20230911
+ */
+ private Long fromPreRoleId;
+
+ /**
+ * 废弃 20230911
+ */
+ private String jobCode;
+
/**
* 创建者
*/
diff --git a/tyr-server/src/main/java/job/OMSRoleJobHandler.java b/tyr-server/src/main/java/job/OMSRoleJobHandler.java
new file mode 100644
index 00000000..f823f561
--- /dev/null
+++ b/tyr-server/src/main/java/job/OMSRoleJobHandler.java
@@ -0,0 +1,133 @@
+package job;
+
+import java.util.Date;
+
+import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
+import cn.axzo.tyr.client.model.DictTypeFiledEnum;
+import cn.axzo.tyr.server.repository.entity.*;
+import cn.axzo.tyr.server.repository.service.*;
+import cn.axzo.tyr.server.service.RoleService;
+import cn.axzo.tyr.server.service.SaasRoleGroupService;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.handler.IJobHandler;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 成都重新推送job
+ *
+ * @author cn
+ * @version 1.0
+ * @description
+ * @date 2021/9/13 11:31
+ */
+@Component
+@AllArgsConstructor
+@Slf4j
+public class OMSRoleJobHandler extends IJobHandler {
+
+ @Autowired
+ SaasRoleGroupDao roleGroupDao;
+ @Autowired
+ SaasRoleDao roleDao;
+ @Autowired
+ SaasPermissionGroupDao saasPermissionGroupDao;
+ @Autowired
+ SaasFeatureDao featureDao;
+ @Autowired
+ SaasRoleGroupRelationDao roleGroupRelationDao;
+ @Autowired
+ SaasRoleUserRelationDao roleUserRelationDao;
+ @Autowired
+ SaasPgroupRoleRelationDao pgroupRoleRelationDao;
+ @Autowired
+ SaasPgroupPermissionRelationDao pgroupPermissionRelationDao;
+
+ /**
+ * 清洗OMS角色相关数据(注:先通过SQL检查和清除脏数据,要不然无法保证各个实体的关联关系)
+ *
+ * @param s
+ * @return
+ * @throws Exception
+ */
+ @Transactional // 在一个事务里面做,一起提交
+ @Override
+ @XxlJob("chengDuSubwayLogRetry")
+ public ReturnT execute(String s) throws Exception {
+ // 创建角色分组
+ SaasRoleGroup roleGroup = new SaasRoleGroup();
+ roleGroup.setWorkspaceTypeCode("6");
+ roleGroup.setName("管理员");
+ roleGroupDao.save(roleGroup);
+ // 查询OMS的角色 workspaceType=6 OMS的角色
+ List oldRole = roleDao.lambdaQuery().eq(SaasRole::getWorkspaceType, 6).list();
+ // 重置老角色多余的字段
+ oldRole.forEach(e -> {
+ e.setWorkspaceId(-1l);
+ e.setOwnerOuId(-1l);
+ e.setWorkspaceType(-1);
+ e.setFitOuTypeBit(-1);
+ e.setFitOuNodeTypeBit(-1);
+ e.setPositionTemplateId(-1l);
+ e.setProjectTeamManageRoleResourceId(-1l);
+ e.setFromPreRoleId(-1l);
+ e.setJobCode("");
+ });
+ roleDao.updateBatchById(oldRole);
+ // 保存角色分组关联关系
+ List roleGroupRelation = oldRole.stream().map(e -> {
+ SaasRoleGroupRelation saasRoleGroupRelation = new SaasRoleGroupRelation();
+ saasRoleGroupRelation.setRoleId(e.getId());
+ saasRoleGroupRelation.setSaasRoleGroupId(roleGroup.getId());
+ return saasRoleGroupRelation;
+ }).collect(Collectors.toList());
+ roleGroupRelationDao.saveBatch(roleGroupRelation);
+
+ // 查询角色关联的角色,打包成新的权限集
+ oldRole.forEach(role -> {
+ List pgroupRoleRelation = pgroupRoleRelationDao.lambdaQuery().eq(SaasPgroupRoleRelation::getRoleId, role.getId()).list();
+ List permissionGroup = saasPermissionGroupDao.lambdaQuery().in(BaseEntity::getId, pgroupRoleRelation.stream().map(SaasPgroupRoleRelation::getGroupId).collect(Collectors.toList())).list();
+ List pgroupPermissionRelation = pgroupPermissionRelationDao.lambdaQuery().in(SaasPgroupPermissionRelation::getGroupId, permissionGroup.stream().map(BaseEntity::getId).collect(Collectors.toList())).list();
+ List feature = featureDao.lambdaQuery().in(BaseEntity::getId, pgroupPermissionRelation.stream().map(SaasPgroupPermissionRelation::getFeatureId).collect(Collectors.toList())).list();
+ // 创建新的权限集
+ SaasPermissionGroup saasPermissionGroup = new SaasPermissionGroup();
+ saasPermissionGroup.setName("通用权限");
+ saasPermissionGroup.setDescription("");
+ saasPermissionGroup.setCreateBy(-1L);
+ saasPermissionGroup.setUpdateBy(-1L);
+ saasPermissionGroup.setType("feature");
+ saasPermissionGroup.setIsCommon(1);
+ saasPermissionGroupDao.save(saasPermissionGroup);
+ // 创建新的角色权限集关联关系
+ SaasPgroupRoleRelation saasPgroupRoleRelation = new SaasPgroupRoleRelation();
+ saasPgroupRoleRelation.setRoleId(role.getId());
+ saasPgroupRoleRelation.setGroupId(saasPermissionGroup.getId());
+ saasPgroupRoleRelation.setCreateBy(-1L);
+ saasPgroupRoleRelation.setUpdateBy(-1L);
+ pgroupRoleRelationDao.save(saasPgroupRoleRelation);
+ // 创建新的权限集权限关联关系
+ feature.forEach(e -> {
+ SaasPgroupPermissionRelation saasPgroupPermissionRelation = new SaasPgroupPermissionRelation();
+ saasPgroupPermissionRelation.setGroupId(saasPermissionGroup.getId());
+ saasPgroupPermissionRelation.setFeatureId(e.getId());
+ saasPgroupPermissionRelation.setCreateBy(-1L);
+ saasPgroupPermissionRelation.setUpdateBy(-1L);
+ pgroupPermissionRelationDao.save(saasPgroupPermissionRelation);
+ });
+ // 删除老的权限集权限关联关系
+ pgroupPermissionRelation.forEach(e -> e.setIsDelete(1l));
+ pgroupPermissionRelationDao.updateBatchById(pgroupPermissionRelation);
+ // 删除老的角色权限集关联关系
+ pgroupRoleRelation.forEach(e -> e.setIsDelete(1l));
+ pgroupRoleRelationDao.updateBatchById(pgroupRoleRelation);
+ });
+ return ReturnT.SUCCESS;
+ }
+}