Commit c9950dcd authored by zhangsen's avatar zhangsen

平台新建用户、单位、部门同步至业务库

parent abe470e2
package com.yeejoin.amos.boot.module.ugp.biz.emqx;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.ugp.api.Enum.OrgEnum;
import com.yeejoin.amos.boot.module.ugp.biz.service.impl.CompanyServiceImpl;
import com.yeejoin.amos.boot.module.ugp.biz.service.impl.OrgServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.stereotype.Component;
import org.typroject.tyboot.component.emq.EmqKeeper;
import org.typroject.tyboot.component.emq.EmqxListener;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
@Component
@EnableScheduling
@Slf4j
public class PlatformUserTopicMessage extends EmqxListener {
@Resource
protected EmqKeeper emqKeeper;
@Value("${amos.operation.log:/amos/operation/log}")
private String amosOperationLog;
@Resource
private OrgServiceImpl orgService;
@PostConstruct
void init() throws Exception {
emqKeeper.subscript(amosOperationLog, 1, this);
}
@Autowired
CompanyServiceImpl companyService;
@Value("${amos.agency.code}")
String amosAgencyCode;
@Autowired
RedisUtils redisUtil;
@Value("${amos.system.user.product:AMOS_STUDIO_WEB}")
String product;
@Value("${amos.system.user.app-key:AMOS_STUDIO}")
String appKey;
@Override
public void processMessage(String topic, MqttMessage message) {
RequestContext.setAppKey(appKey);
RequestContext.setProduct(product);
RequestContext.setToken(String.valueOf(redisUtil.get("platform_token")));
JSONObject jsonObject = JSON.parseObject(message.toString());
JSONObject result = jsonObject.getJSONObject("result");
JSONObject dataResult = result.getJSONObject("result");
String path = result.getString("path");
String agencyCode = jsonObject.getString("agencyCode");
if (!amosAgencyCode.equals(agencyCode)) {
return;
}
try {
if (StringUtils.isNotEmpty(path)) {
if (path.contains("company")) {
orgService.saveOrUpdateUser(dataResult, OrgEnum.公司.getKey());
companyService.saveOrUpdate(dataResult);
} else if (path.contains("department")) {
orgService.saveOrUpdateUser(dataResult, OrgEnum.部门.getKey());
} else if (path.contains("agencyuser")) {
orgService.saveOrUpdateUser(dataResult, OrgEnum.普通人员.getKey());
}
}
} catch (Exception e) {
log.info("平台同步消息失败:{}", e.getMessage());
e.printStackTrace();
}
log.info("平台推送消息同步完成");
}
}
...@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; ...@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
...@@ -27,6 +28,7 @@ import org.ehcache.shadow.org.terracotta.offheapstore.HashingMap; ...@@ -27,6 +28,7 @@ import org.ehcache.shadow.org.terracotta.offheapstore.HashingMap;
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.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.foundation.context.RequestContext; import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService; import org.typroject.tyboot.core.rdbms.service.BaseService;
...@@ -468,5 +470,22 @@ public class CompanyServiceImpl extends BaseService<CompanyDto, Company, Company ...@@ -468,5 +470,22 @@ public class CompanyServiceImpl extends BaseService<CompanyDto, Company, Company
} }
public void saveOrUpdate(JSONObject jsonObject) {
QueryWrapper<Company> companyQueryWrapper = new QueryWrapper<>();
companyQueryWrapper.lambda().eq(Company::getName, jsonObject.getString("companyName"));
companyQueryWrapper.lambda().eq(Company::getIsDelete, Boolean.FALSE);
Company company = companyMapper.selectOne(companyQueryWrapper);
if (ObjectUtils.isEmpty(company)) {
company = new Company();
}
company.setRecDate(new Date());
company.setName(jsonObject.getString("companyName"));
company.setType(jsonObject.getString("companyType"));
company.setAddress(jsonObject.getString("address"));
company.setApproved("1");
company.setOrgCode(jsonObject.getString("orgCode"));
company.setRecDate(new Date());
//存入数据
this.saveOrUpdate(company);
}
} }
\ No newline at end of file
package com.yeejoin.amos.boot.module.ugp.biz.service.impl; package com.yeejoin.amos.boot.module.ugp.biz.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
...@@ -11,6 +12,7 @@ import com.yeejoin.amos.boot.biz.common.constants.CommonConstant; ...@@ -11,6 +12,7 @@ import com.yeejoin.amos.boot.biz.common.constants.CommonConstant;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity; import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey; import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.biz.common.utils.TreeParser;
import com.yeejoin.amos.boot.module.common.api.dto.OrgUsrDto; import com.yeejoin.amos.boot.module.common.api.dto.OrgUsrDto;
import com.yeejoin.amos.boot.module.common.api.dto.OrgusrDataxDto; import com.yeejoin.amos.boot.module.common.api.dto.OrgusrDataxDto;
import com.yeejoin.amos.boot.module.common.api.entity.DynamicFormColumn; import com.yeejoin.amos.boot.module.common.api.entity.DynamicFormColumn;
...@@ -22,9 +24,11 @@ import com.yeejoin.amos.boot.module.common.biz.service.impl.OrgUsrServiceImpl; ...@@ -22,9 +24,11 @@ import com.yeejoin.amos.boot.module.common.biz.service.impl.OrgUsrServiceImpl;
import com.yeejoin.amos.boot.module.ugp.api.Enum.OrgEnum; import com.yeejoin.amos.boot.module.ugp.api.Enum.OrgEnum;
import com.yeejoin.amos.boot.module.ugp.api.Enum.ProjectResourceEnum; import com.yeejoin.amos.boot.module.ugp.api.Enum.ProjectResourceEnum;
import com.yeejoin.amos.boot.module.ugp.api.constants.XJConstant; import com.yeejoin.amos.boot.module.ugp.api.constants.XJConstant;
import com.yeejoin.amos.boot.module.ugp.api.dto.CompanyDto;
import com.yeejoin.amos.boot.module.ugp.api.entity.Project; import com.yeejoin.amos.boot.module.ugp.api.entity.Project;
import com.yeejoin.amos.boot.module.ugp.api.entity.ProjectResource; import com.yeejoin.amos.boot.module.ugp.api.entity.ProjectResource;
import com.yeejoin.amos.boot.module.ugp.biz.framework.BusinessIdentify; import com.yeejoin.amos.boot.module.ugp.biz.framework.BusinessIdentify;
import com.yeejoin.amos.component.robot.BadRequest;
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.DepartmentModel; import com.yeejoin.amos.feign.privilege.model.DepartmentModel;
...@@ -32,7 +36,9 @@ import org.python.antlr.ast.If; ...@@ -32,7 +36,9 @@ import org.python.antlr.ast.If;
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.util.CollectionUtils;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import org.typroject.tyboot.component.cache.Redis; import org.typroject.tyboot.component.cache.Redis;
import org.typroject.tyboot.core.foundation.context.RequestContext; import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
...@@ -62,6 +68,9 @@ public class OrgServiceImpl { ...@@ -62,6 +68,9 @@ public class OrgServiceImpl {
@Autowired @Autowired
MaterialServiceImpl materialServiceImpl; MaterialServiceImpl materialServiceImpl;
@Autowired
CompanyServiceImpl companyServiceImpl;
/** /**
* 保存或更新orgUsr信息和FormInstance实体信息 * 保存或更新orgUsr信息和FormInstance实体信息
* sequenceNbr表示 若是更新动态表单,则传orgUsr表的sequenceNbr, * sequenceNbr表示 若是更新动态表单,则传orgUsr表的sequenceNbr,
...@@ -602,4 +611,124 @@ public class OrgServiceImpl { ...@@ -602,4 +611,124 @@ public class OrgServiceImpl {
.eq(OrgUsr::getBizOrgType,OrgEnum.普通人员.getKey()); .eq(OrgUsr::getBizOrgType,OrgEnum.普通人员.getKey());
return orgUsrServiceImpl.list(wrapper); return orgUsrServiceImpl.list(wrapper);
} }
/**
* 平台创建人员等操作更新 orgUsr表信息
*
*/
public void saveOrUpdateUser(JSONObject jsonObject, String orgType) {
String amosOrgId = jsonObject.getString("sequenceNbr");
LambdaQueryWrapper<OrgUsr> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(OrgUsr::getAmosOrgId, amosOrgId)
.eq(OrgUsr::getIsDelete, Boolean.FALSE);
OrgUsr one = orgUsrServiceImpl.getOne(wrapper);
if (ObjectUtils.isEmpty(one)) {
one = new OrgUsr();
}
OrgUsr parentOne = new OrgUsr();
String companyId = "";
if (OrgEnum.普通人员.getKey().equals(orgType)) {
JSONArray companys = JSON.parseArray(JSON.toJSONString(jsonObject.get("companys")));
if (CollectionUtils.isEmpty(companys)) {
return;
} else {
JSONObject parentJson = JSON.parseObject(JSON.toJSONString(companys.get(0)));
companyId = parentJson.getString("sequenceNbr");
}
} else {
companyId = jsonObject.getString("myParentId");
}
if (!StringUtils.isEmpty(companyId)) {
LambdaQueryWrapper<OrgUsr> wrapper2 = new LambdaQueryWrapper<>();
wrapper2.eq(OrgUsr::getAmosOrgId, companyId)
.eq(OrgUsr::getIsDelete, Boolean.FALSE);
parentOne = orgUsrServiceImpl.getOne(wrapper2);
}
if (!OrgEnum.公司.getKey().equals(orgType) && ObjectUtils.isEmpty(parentOne)) {
throw new BadRequest("数据不完整");
}
one.setBizOrgName(jsonObject.getString("userName"));
if (StringUtils.isEmpty(one.getBizOrgCode())) {
if (OrgEnum.公司.getKey().equals(orgType)) {
one.setBizOrgCode(!ObjectUtils.isEmpty(parentOne) ? parentOne.getBizOrgCode() + getOrgCodeStr() : getOrgCodeStr());
} else if (OrgEnum.部门.getKey().equals(orgType)) {
one.setBizOrgCode(parentOne.getBizOrgCode() + getOrgCodeStr());
} else if (OrgEnum.普通人员.getKey().equals(orgType)) {
LambdaQueryWrapper<OrgUsr> wrapper3 = new LambdaQueryWrapper<>();
wrapper3.eq(OrgUsr::getAmosOrgId, companyId)
.eq(OrgUsr::getIsDelete, Boolean.FALSE);
OrgUsr one1 = orgUsrServiceImpl.getOne(wrapper3);
one.setBizOrgCode(one1.getBizOrgCode() + getOrgCodeStr());
}
}
one.setAmosOrgId(amosOrgId);
one.setAmosOrgCode("");
one.setBizOrgType(orgType);
if (StringUtils.isEmpty(jsonObject.getString("myParentId"))) {
one.setParentId(ObjectUtils.isEmpty(parentOne) ? null : String.valueOf(parentOne.getSequenceNbr()));
}
orgUsrServiceImpl.saveOrUpdate(one);
JSONObject jsonObjectFormColumn = new JSONObject();
if (OrgEnum.公司.getKey().equals(orgType)) {
jsonObjectFormColumn.put("name", jsonObject.getString("companyName"));
jsonObjectFormColumn.put("type", jsonObject.getString("companyType"));
jsonObjectFormColumn.put("creditCode", jsonObject.getString("companyCode"));
jsonObjectFormColumn.put("address", jsonObject.getString("address"));
jsonObjectFormColumn.put("contact", jsonObject.getString("contact"));
jsonObjectFormColumn.put("contactPhone", jsonObject.getString("landlinePhone"));
jsonObjectFormColumn.put("orgCode", jsonObject.getString("orgCode"));
} else if (OrgEnum.普通人员.getKey().equals(orgType)) {
jsonObjectFormColumn.put("name", jsonObject.getString("realName"));
jsonObjectFormColumn.put("phone", jsonObject.getString("mobile"));
} else if (OrgEnum.部门.getKey().equals(orgType)) {
jsonObjectFormColumn.put("name", one.getBizOrgName());
}
//条件构造器 找出column表种 类型为(COMPANY 或 DEPARTMENT 或 PERSON)的列
LambdaQueryWrapper<DynamicFormColumn> wrapper2 = new LambdaQueryWrapper<>();
wrapper2.eq(DynamicFormColumn::getGroupCode, orgType);
List<DynamicFormColumn> dynamicFormColumnList = dynamicFormColumnServiceImpl.list(wrapper2);
List<DynamicFormInstance> dynamicFormInstanceList = new ArrayList<>();
Map<String, Long> map = new HashMap<>();
for (DynamicFormColumn dynamicFormColumn : dynamicFormColumnList) {
//将column表的基本字段信息给instance表
DynamicFormInstance dynamicFormInstance = new DynamicFormInstance();
BeanUtils.copyProperties(dynamicFormColumn, dynamicFormInstance);
dynamicFormInstance.setFormColumnId(dynamicFormColumn.getSequenceNbr());
//通过字段名去拿到表单传来的值
if ("image".equals(dynamicFormColumn.getFieldCode())) {
if (!ValidationUtil.isEmpty(jsonObjectFormColumn.getJSONArray(dynamicFormInstance.getFieldCode()))) {
dynamicFormInstance.setFieldValue(JSON.toJSONString(jsonObjectFormColumn.getJSONArray(dynamicFormInstance.getFieldCode())));
}
} else {
dynamicFormInstance.setFieldValue(jsonObjectFormColumn.getString(dynamicFormInstance.getFieldCode()));
}
dynamicFormInstance.setInstanceId(one.getSequenceNbr());
dynamicFormInstance.setSequenceNbr(null);
dynamicFormInstanceList.add(dynamicFormInstance);
}
//如果sequenceNbr有值(更新)
if (!ValidationUtil.isEmpty(one.getSequenceNbr())) {
LambdaQueryWrapper<DynamicFormInstance> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(DynamicFormInstance::getInstanceId, one.getSequenceNbr());
List<DynamicFormInstance> instanceList = alertFormValueServiceImpl.list(lambdaQueryWrapper);
//如果instance表中有值
if (!ValidationUtil.isEmpty(instanceList)) {
//将查到的instance信息装到map中
for (DynamicFormInstance dynamicFormInstance : instanceList) {
map.put(dynamicFormInstance.getFieldCode(), dynamicFormInstance.getSequenceNbr());
}
//将查到的instance信息中的sequenceNbr装到更新之后的表中。
for (DynamicFormInstance dynamicFormInstance : dynamicFormInstanceList) {
dynamicFormInstance.setSequenceNbr(map.get(dynamicFormInstance.getFieldCode()));
}
}
}
//保存或更新 根据sequenceNbr
alertFormValueServiceImpl.saveOrUpdateBatch(dynamicFormInstanceList);
}
public static String getOrgCodeStr() {
return TreeParser.genTreeCode();
}
} }
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