Commit 238fe62a authored by suhuiguang's avatar suhuiguang

1.性能优化数据预热,异步调用

parent 7146b2b5
......@@ -85,18 +85,18 @@ public class ControllerAop {
urls.add("/api/user/save/curCompany");
urls.add("/jcs/command/lookHtmlText");
urls.add("^/jcs/common/duty-person/findByDutyAreaId/[A-Za-z0-9]+$");
urls.add("/tzs/wechatBack");
urls.add("/tzs/elevator/getElevatorInfo");
urls.add("/tcm/wechatBack");
urls.add("/elevator/elevator/getElevatorInfo");
urls.add("/openapi/bizToken/applyToken");
urls.add("/tzs/flc-unit-info/region/tree");
urls.add("/tzs/reg-unit-info/management-unit/tree");
urls.add("/tzs/reg-unit-info/unit-type/list");
urls.add("^/tzs/flc-unit-info/hasExistPhone/[0-9]+$");
urls.add("^/tzs/flc-unit-info/sendTelCode/[0-9]+$");
urls.add("^/tzs/reg-unit-info/[A-Za-z0-9]+/check$");
urls.add("^/tzs/flc-unit-info/verifyTelCode/[A-Za-z0-9]+/[A-Za-z0-9]+");
urls.add("^/tzs/flc-unit-info/hasExistUser/[A-Za-z0-9_-]+");
urls.add("/tzs/reg-unit-info/save");
urls.add("/tcm/flc-unit-info/region/tree");
urls.add("/tcm/reg-unit-info/management-unit/tree");
urls.add("/tcm/reg-unit-info/unit-type/list");
urls.add("^/tcm/flc-unit-info/hasExistPhone/[0-9]+$");
urls.add("^/tcm/flc-unit-info/sendTelCode/[0-9]+$");
urls.add("^/tcm/reg-unit-info/[A-Za-z0-9]+/check$");
urls.add("^/tcm/flc-unit-info/verifyTelCode/[A-Za-z0-9]+/[A-Za-z0-9]+");
urls.add("^/tcm/flc-unit-info/hasExistUser/[A-Za-z0-9_-]+");
urls.add("/tcm/reg-unit-info/save");
// 获取请求路径
for (String uri : urls) {
Pattern p = Pattern.compile(uri);
......
......@@ -11,4 +11,9 @@ public interface BizCommonConstant {
* 所有平台企业数据redisKey
*/
String COMPANY_TREE_REDIS_KEY = "REGULATOR_UNIT_TREE";
/**
* 所有区划企业数据redisKey
*/
String REGION_TREE_REDIS_KEY = "REGION_TREE_TCM";
}
......@@ -20,11 +20,11 @@ import java.util.List;
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="RegUnitInfoDto", description="单位注册信息表")
@ApiModel(value = "RegUnitInfoDto", description = "单位注册信息表")
@JsonInclude(JsonInclude.Include.NON_NULL)
public class RegUnitInfoDto extends BaseDto {
public class RegUnitInfoDto extends BaseDto {
private static final long serialVersionUID = 1L;
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "单位名称")
......@@ -51,6 +51,12 @@ public class RegUnitInfoDto extends BaseDto {
@ApiModelProperty(value = "管辖单位id")
private String managementUnitId;
@ApiModelProperty(value = "管辖单位编码")
private String managementUnitCompanyCode;
@ApiModelProperty(value = "管辖单位orgCode")
private String managementUnitOrgCode;
@ApiModelProperty(value = "区域编码")
private String regionCode;
......
......@@ -5,7 +5,9 @@ import com.yeejoin.amos.boot.module.tcm.flc.api.dto.UnitInfoApproveDto;
import com.yeejoin.amos.boot.module.tcm.flc.api.dto.UnitInfoDto;
import com.yeejoin.amos.boot.module.tcm.flc.api.entity.UnitInfo;
import com.yeejoin.amos.boot.module.tcm.flc.api.entity.UnitInfoChange;
import com.yeejoin.amos.feign.systemctl.model.RegionModel;
import java.util.Collection;
import java.util.List;
/**
......@@ -42,4 +44,10 @@ public interface IUnitInfoService {
List<UnitInfoDto> getUseUnit(String unitType, String address, String orgName, String organizationCode);
Boolean addQRcode();
/**
* 单位树
* @return Collection<RegionModel>
*/
Collection<RegionModel> getRegionTree(Long parentId);
}
package com.yeejoin.amos;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.biz.common.utils.oConvertUtils;
import com.yeejoin.amos.boot.module.tcm.biz.listener.BaseEnterpriseMqTtlListener;
import com.yeejoin.amos.boot.module.tcm.biz.listener.CarcylUnitInspectMqTtlListener;
import com.yeejoin.amos.boot.module.tcm.biz.listener.PrivilegeCompanyDeleteListener;
import com.yeejoin.amos.boot.module.tcm.biz.listener.PrivilegeCompanyUpdateAddListener;
import com.yeejoin.amos.boot.module.tcm.biz.service.impl.EquipmentCategoryServiceImpl;
import com.yeejoin.amos.boot.module.tcm.biz.service.impl.StartPlatformTokenService;
import com.yeejoin.amos.boot.module.tcm.biz.utils.RedisUtil;
import com.yeejoin.amos.boot.module.tcm.flc.api.service.IUnitInfoService;
import com.yeejoin.amos.boot.module.tcm.flc.biz.service.impl.UnitInfoServiceImpl;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.RoleModel;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.mybatis.spring.annotation.MapperScan;
import org.slf4j.Logger;
......@@ -30,6 +38,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.List;
/**
* <pre>
......@@ -76,6 +85,15 @@ public class AmosTcmApplication {
@Value("${spring.application.name}")
private String applicationName;
@Autowired
RedisUtil redisUtil;
@Autowired
EquipmentCategoryServiceImpl equipmentCategoryService;
@Autowired
UnitInfoServiceImpl unitInfoService;
public static void main(String[] args) throws UnknownHostException {
ConfigurableApplicationContext context = SpringApplication.run(AmosTcmApplication.class, args);
......@@ -103,8 +121,17 @@ public class AmosTcmApplication {
}
@Bean
public void initToken() {
public void init() {
//1.登录
startPlatformTokenService.getToken();
//2.角色数据放redis缓存(依赖1)
FeignClientResult<List<RoleModel>> roleListResult = Privilege.roleClient.queryRoleList(null, null);
List<RoleModel> roleModels = roleListResult.getResult();
redisUtil.set(RedisUtil.ROLE_REDIS_KEY, JSONObject.toJSONString(roleModels));
//3.管辖机构放redis缓存(依赖1)
equipmentCategoryService.creatTree();
//4.区域放redis缓存(依赖1)
unitInfoService.getAllRegionTree();
}
......
package com.yeejoin.amos.boot.module.tcm.biz.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.module.tcm.biz.utils.RedisUtil;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.component.robot.AmosRequestContext;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.RoleModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import com.yeejoin.amos.component.robot.AmosRequestContext;
import java.util.List;
import static com.alibaba.fastjson.JSON.parseArray;
/**
* requestContext设置
* @author Administrator
*/
@Service
public class StartPlatformTokenService {
@Value("${admin.product}")
String product;
@Autowired
AmosRequestContext amosRequestContext;
@Autowired
RedisUtil redisUtil;
@Value("${admin.appkey}")
String appkey;
@Value("${admin.user}")
String user;
public void getToken() {
RequestContext.setProduct(amosRequestContext.getProduct());
RequestContext.setAppKey(amosRequestContext.getAppKey());
RequestContext.setToken(amosRequestContext.getToken());
}
@Value("${admin.password}")
String password;
@Value("${amos.secret.key}")
String secretKey;
public void setRequestContext() {
RequestContext.setProduct(amosRequestContext.getProduct());
RequestContext.setAppKey(amosRequestContext.getAppKey());
RequestContext.setToken(amosRequestContext.getToken());
}
public List<RoleModel> getAllRole(){
List<RoleModel> roleModels;
if(redisUtil.hasKey(RedisUtil.ROLE_REDIS_KEY)){
roleModels = parseArray(redisUtil.get(RedisUtil.ROLE_REDIS_KEY).toString(),RoleModel.class);
return roleModels;
} else {
FeignClientResult<List<RoleModel>> roleListResult = Privilege.roleClient.queryRoleList(null, null);
roleModels = roleListResult.getResult();
redisUtil.set(RedisUtil.ROLE_REDIS_KEY, JSONObject.toJSONString(roleModels));
}
return roleModels;
}
@Autowired
RedisUtil redisUtil;
@Autowired
AmosRequestContext amosRequestContext;
public void getToken() {
RequestContext.setProduct(product);
RequestContext.setAppKey(appkey);
String token = amosRequestContext.getToken();
System.out.println("token:" + token);
RequestContext.setToken(token);
redisUtil.set("platform_token", token);
}
}
......@@ -18,6 +18,13 @@ import java.util.concurrent.TimeUnit;
**/
@Component
public class RedisUtil {
/**
* 单位注册,角色key
*/
public static String ROLE_REDIS_KEY = "UNIT_REGISTER_ROLE_REDIS";
@Autowired
private RedisTemplate<String, Object> redisTemplate;
......
......@@ -102,32 +102,10 @@ public class UnitInfoController extends BaseController {
@GetMapping(value = "/region/tree")
@ApiOperation(httpMethod = "GET", value = "获取组织机构树", notes = "获取组织机构树")
public ResponseModel<Collection<RegionModel>> getRegionTree(@RequestParam(value = "parentId",required = false) Long parentId) {
tzsAuthServiceImpl.setRequestContext();
Collection<RegionModel> result = null;
if(parentId == null) {
result = Systemctl.regionClient.queryForTree(null).getResult();
} else {
result = Systemctl.regionClient.querySubAgencyTree(parentId).getResult();
}
despace(result);
return ResponseHelper.buildResponse(result);
return ResponseHelper.buildResponse(unitInfoServiceImpl.getRegionTree(parentId));
}
/**
* 去区域树中level多余空格
* @param result
*/
public void despace(Collection<RegionModel> result){
Iterator<RegionModel> iterator = result.iterator();
while(iterator.hasNext()) {
RegionModel regionModel = iterator.next();
regionModel.setLevel(regionModel.getLevel().trim());
regionModel.setLevelName(regionModel.getLevelName().trim());
if(!ValidationUtil.isEmpty(regionModel.getChildren())) {
despace(regionModel.getChildren());
}
}
}
/**
* 获取管辖单位树
......
......@@ -14,7 +14,6 @@ import com.yeejoin.amos.boot.biz.common.workflow.feign.WorkflowFeignService;
import com.yeejoin.amos.boot.module.common.api.entity.OrgUsr;
import com.yeejoin.amos.boot.module.common.biz.service.impl.OrgUsrServiceImpl;
import com.yeejoin.amos.boot.module.tcm.api.common.BizCommonConstant;
import com.yeejoin.amos.boot.module.tcm.api.common.CommonException;
import com.yeejoin.amos.boot.module.tcm.api.dto.BaseUnitLicenceDto;
import com.yeejoin.amos.boot.module.tcm.api.entity.BaseUnitLicence;
import com.yeejoin.amos.boot.module.tcm.api.entity.TzBaseEnterpriseInfo;
......@@ -24,7 +23,6 @@ import com.yeejoin.amos.boot.module.tcm.biz.service.impl.BaseUnitLicenceServiceI
import com.yeejoin.amos.boot.module.tcm.biz.service.impl.EquipmentCategoryServiceImpl;
import com.yeejoin.amos.boot.module.tcm.biz.service.impl.StartPlatformTokenService;
import com.yeejoin.amos.boot.module.tcm.biz.service.impl.TzBaseEnterpriseInfoServiceImpl;
import com.yeejoin.amos.boot.module.tcm.biz.service.impl.TzsAuthServiceImpl;
import com.yeejoin.amos.boot.module.tcm.biz.utils.RedisUtil;
import com.yeejoin.amos.boot.module.tcm.flc.api.dto.RegUnitIcDto;
import com.yeejoin.amos.boot.module.tcm.flc.api.dto.RegUnitInfoDto;
......@@ -49,10 +47,14 @@ import org.apache.logging.log4j.Logger;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionSynchronization;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.util.StopWatch;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import org.typroject.tyboot.core.foundation.context.RequestContext;
......@@ -69,6 +71,7 @@ import java.text.ParseException;
import java.util.*;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
......@@ -98,10 +101,8 @@ public class RegUnitInfoServiceImpl extends BaseService<RegUnitInfoDto, RegUnitI
RegUnitIcServiceImpl regUnitIcService;
@Autowired
private TzsAuthServiceImpl tzsAuthServiceImpl;
@Autowired
TzBaseEnterpriseInfoServiceImpl tzBaseEnterpriseInfoService;
@Autowired
TzBaseEnterpriseInfoMapper tzBaseEnterpriseInfoMapper;
......@@ -132,19 +133,6 @@ public class RegUnitInfoServiceImpl extends BaseService<RegUnitInfoDto, RegUnitI
private final Logger logger = LogManager.getLogger(RegUnitInfoServiceImpl.class);
/**
* 使用单位的类型,数据来源:cb_data_dictionary code = 1232
*/
private static String USE_UNIT_TYPE_CODE = "1232";
/**
* 生产单位的类型,数据来源:cb_data_dictionary code = 1230
*/
private static String PRODUCT_UNIT_TYPE_CODE = "1230";
/**
* 充装单位的类型,数据来源:cb_data_dictionary code = 1231
*/
private static String FILLING_UNIT_TYPE_CODE = "1231";
/**
* 单位类型,数据来源:cb_data_dictionary type = UNIT_TYPE
*/
private static String DICT_TYPE_UNIT_TYPE = "UNIT_TYPE_NEW";
......@@ -155,50 +143,32 @@ public class RegUnitInfoServiceImpl extends BaseService<RegUnitInfoDto, RegUnitI
@Value("${is.ugp}")
private boolean isUgp;
@Autowired
private ApplicationContext applicationContext;
@Override
@Transactional(rollbackFor = Exception.class)
public RegUnitInfoDto registerUnit(RegUnitInfoDto model) {
StopWatch watch = new StopWatch();
watch.start();
if(ValidationUtil.isEmpty(model.getUnitCode())){
model.setUnitCode(model.getForm().getString("unitCode"));
}
RegUnitInfo regUnitInfo = new RegUnitInfo();
try {
tzsAuthServiceImpl.setRequestContext();
startPlatformTokenService.setRequestContext();
// 注册用统一信用码注册,默认证件类型为营业执照,数据来源:cb_data_dictionary code = 1060
model.setUnitCodeType("1060");
model.setUnitCodeTypeName("营业执照");
Bean.copyExistPropertis(model, regUnitInfo);
regUnitInfo.setUnitType(StringUtils.join(model.getUnitTypeList(), ","));
regUnitInfo.setUnitTypeCode(StringUtils.join(model.getUnitTypeCodeList(), ","));
// 3.2 自动创建:调用平台进行创建单位、用户信息
// 1.调用平台进行创建单位、用户信息
this.createCompanyAndUser(regUnitInfo);
//多线程同步ugp信息(tzs和ugp一起后放开)
FutureTask<ResponseModel<Boolean>> future = null;
if(isUgp) {
String token = RequestContext.getToken();
String appKey = RequestContext.getAppKey();
String product = RequestContext.getProduct();
Callable callable = new Callable() {
@Override
public Object call() throws Exception {
RequestContext.setToken(token);
RequestContext.setAppKey(appKey);
RequestContext.setProduct(product);
//同步企业至ugp,成功返回true,失败返回false
return ugpServiceFeignClient.syncCompany(model);
}
};
future = new FutureTask(callable);
Thread thread = new Thread(future);
thread.start();
}
// 1.插入单位注册许可信息表:tz_base_unit_licence
List<BaseUnitLicenceDto> unitLicenceDtos = model.getUnitLicences();
List<BaseUnitLicence> baseUnitLicences = unitLicenceDtos.stream().map(s -> {
// 2.异步调用ugp,同步公司数据
FutureTask<ResponseModel<Boolean>> future = getResponseModelFutureTask(model);
// 3.插入单位注册许可信息表:tz_base_unit_licence
List<BaseUnitLicence> baseUnitLicences = model.getUnitLicences().stream().map(s -> {
s.setUnitCode(model.getUnitCode());
s.setUnitName(model.getName());
BaseUnitLicence target = new BaseUnitLicence();
......@@ -208,42 +178,45 @@ public class RegUnitInfoServiceImpl extends BaseService<RegUnitInfoDto, RegUnitI
if (!baseUnitLicences.isEmpty()) {
baseUnitLicenceService.saveOrUpdateBatch(baseUnitLicences);
}
// 2.插入工商单位信息表:tz_flc_reg_unit_ic
// 4.插入工商单位信息表:tz_flc_reg_unit_ic
RegUnitIc regUnitIc = new RegUnitIc();
model.getRegUnitIc().setUnitCode(model.getUnitCode());
model.getRegUnitIc().setUnitName(model.getName());
Bean.copyExistPropertis(model.getRegUnitIc(), regUnitIc);
regUnitIcService.saveOrUpdate(regUnitIc);
// 3.调用平台进行创建单位、用户信息,同步用户信息
// if (UnitReviewStateEnum.NO_NEED_REVIEW.getCode().equals(model.getState())) {
// 3.1 创建企业信息
// 5.创建企业信息
this.createBaseEnterpriseInfo(model);
// }
if (!ObjectUtils.isEmpty(regUnitInfo.getAdminName())){
regUnitInfo.setContactPerson(regUnitInfo.getAdminName());
}
if (!ObjectUtils.isEmpty(regUnitInfo.getAdminTel())){
regUnitInfo.setContactPersonTel(regUnitInfo.getAdminTel());
}
// 4.插入注册单位基本信息表:tz_flc_reg_unit_info
// 6.插入注册单位基本信息表:tz_flc_reg_unit_info
this.save(regUnitInfo);
// 5.组织返回数据
// 5.1企业基本信息
// 7.组织返回数据
// 7.1企业基本信息
Bean.copyExistPropertis(regUnitInfo, model);
// 5.2行政许可数据
// 7.2行政许可数据
model.setUnitLicences(Bean.toModels(baseUnitLicences, BaseUnitLicenceDto.class));
// 5.3工商信息
// 7.3工商信息
model.setRegUnitIc(Bean.toModel(regUnitIc, new RegUnitIcDto()));
//获取多线程执行结果 true成功 false失败(tzs和ugp一起后放开)
if(isUgp) {
if (!future.get().getResult()) {
throw new Exception("UGP信息同步失败");
}
//8.获取多线程执行结果 true成功 false失败(tzs和ugp一起后放开)
if (isUgp && future != null && !Boolean.TRUE.equals(future.get().getResult())) {
throw new BadRequest("UGP信息同步失败");
}
watch.stop();
if(log.isDebugEnabled()){
log.debug("注册总耗时:==》" + watch.getTotalTimeSeconds());
}
//9.事务提交后,异步创建企业的二维码
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override
public void afterCommit(){
RegUnitInfoServiceImpl proxy = applicationContext.getBean(RegUnitInfoServiceImpl.class);
proxy.asyncSetQrCode(model);
}
});
} catch (Exception e) {
log.error(e.getMessage(), e);
// 失败后回滚:删除已经创建的企业信息
......@@ -267,6 +240,38 @@ public class RegUnitInfoServiceImpl extends BaseService<RegUnitInfoDto, RegUnitI
return model;
}
@Async
public void asyncSetQrCode(RegUnitInfoDto regUnitInfoDto){
TzBaseEnterpriseInfo useCodeResult = tzBaseEnterpriseInfoMapper.selectOne(new QueryWrapper<TzBaseEnterpriseInfo>().eq("use_code", regUnitInfoDto.getUnitCode()));
if (ObjectUtils.isEmpty(useCodeResult)) {
useCodeResult.setQrCode(createQRCode(regUnitInfoDto.getUnitCode()));
} else {
useCodeResult.setQrCode(ObjectUtils.isEmpty(useCodeResult.getQrCode()) ? createQRCode(regUnitInfoDto.getUnitCode()) : useCodeResult.getQrCode());
}
tzBaseEnterpriseInfoService.saveOrUpdate(useCodeResult);
}
private FutureTask<ResponseModel<Boolean>> getResponseModelFutureTask(RegUnitInfoDto model) {
//多线程同步ugp信息(tzs和ugp一起后放开)
FutureTask<ResponseModel<Boolean>> future = null;
if(isUgp) {
String token = RequestContext.getToken();
String appKey = RequestContext.getAppKey();
String product = RequestContext.getProduct();
Callable callable = () -> {
RequestContext.setToken(token);
RequestContext.setAppKey(appKey);
RequestContext.setProduct(product);
//同步企业至ugp,成功返回true,失败返回false
return ugpServiceFeignClient.syncCompany(model);
};
future = new FutureTask(callable);
Thread thread = new Thread(future);
thread.start();
}
return future;
}
private static String createQRCode(String unitCode) {
String urlString = null;
byte[] bytes = QRCodeUtil.generateQRCodeImageByteData(unitCode, 150);
......@@ -286,22 +291,16 @@ public class RegUnitInfoServiceImpl extends BaseService<RegUnitInfoDto, RegUnitI
return urlString;
}
/**
* 创建企业信息
* @param regUnitInfo 提交对象
*/
public void createBaseEnterpriseInfo(RegUnitInfoDto regUnitInfo) {
// 1.查询管辖公司的信息
FeignClientResult<CompanyModel> feignClientResult = Privilege.companyClient
.seleteOne(Long.parseLong(regUnitInfo.getManagementUnitId()));
CompanyModel managementCompany = feignClientResult.getResult();
// 2.填充数据
// 1.填充数据
TzBaseEnterpriseInfo baseEnterpriseInfo = new TzBaseEnterpriseInfo();
baseEnterpriseInfo.setUseUnitCertificate(regUnitInfo.getUnitCodeTypeName());
baseEnterpriseInfo.setUnitType(StringUtils.join(regUnitInfo.getUnitTypeList(), "#"));
baseEnterpriseInfo.setUseCode(regUnitInfo.getUnitCode());
TzBaseEnterpriseInfo useCodeResult = tzBaseEnterpriseInfoMapper.selectOne(new QueryWrapper<TzBaseEnterpriseInfo>().eq("use_code", regUnitInfo.getUnitCode()));
if (ObjectUtils.isEmpty(useCodeResult)) {
baseEnterpriseInfo.setQrCode(createQRCode(regUnitInfo.getUnitCode()));
} else {
baseEnterpriseInfo.setQrCode(ObjectUtils.isEmpty(useCodeResult.getQrCode()) ? createQRCode(regUnitInfo.getUnitCode()) : useCodeResult.getQrCode());
}
baseEnterpriseInfo.setUseUnit(regUnitInfo.getName());
baseEnterpriseInfo.setProvince(regUnitInfo.getProvince());
baseEnterpriseInfo.setCity(regUnitInfo.getCity());
......@@ -316,8 +315,8 @@ public class RegUnitInfoServiceImpl extends BaseService<RegUnitInfoDto, RegUnitI
baseEnterpriseInfo.setLongitude(regUnitInfo.getLongitude());
baseEnterpriseInfo.setLatitude(regUnitInfo.getLatitude());
// 管辖机构信息
baseEnterpriseInfo.setSuperviseCode(managementCompany.getCompanyCode());
baseEnterpriseInfo.setSuperviseOrgCode(managementCompany.getOrgCode());
baseEnterpriseInfo.setSuperviseCode(regUnitInfo.getManagementUnitCompanyCode());
baseEnterpriseInfo.setSuperviseOrgCode(regUnitInfo.getManagementUnitOrgCode());
// 这个表有两个字段所以赋值两字段
baseEnterpriseInfo.setSuperviseOrgName(regUnitInfo.getManagementUnit());
baseEnterpriseInfo.setGoverningBody(regUnitInfo.getManagementUnit());
......@@ -335,7 +334,7 @@ public class RegUnitInfoServiceImpl extends BaseService<RegUnitInfoDto, RegUnitI
@Override
public RegUnitInfoDto unitCheck(String unitCode, String unitType,String companyName) {
tzsAuthServiceImpl.setRequestContext();
startPlatformTokenService.getToken();
RequestContext.setToken(RequestContext.getToken());
RequestContext.setAppKey(RequestContext.getAppKey());
RequestContext.setProduct(RequestContext.getProduct());
......@@ -442,7 +441,7 @@ public class RegUnitInfoServiceImpl extends BaseService<RegUnitInfoDto, RegUnitI
public Collection getManagementUnitTree(String orgCode) {
List<LinkedHashMap> companyModels = (List<LinkedHashMap>) redisUtil.get(BizCommonConstant.COMPANY_TREE_REDIS_KEY);
if (ValidationUtil.isEmpty(companyModels)) {
tzsAuthServiceImpl.setRequestContext();
startPlatformTokenService.getToken();
companyModels = equipmentCategoryService.creatTree();
}
if (!ValidationUtil.isEmpty(orgCode)) {
......@@ -611,8 +610,13 @@ public class RegUnitInfoServiceImpl extends BaseService<RegUnitInfoDto, RegUnitI
CompanyModel companyInfo = new CompanyModel();
FeignClientResult<AgencyUserModel> userResult = null;
try {
FeignClientResult<List<RoleModel>> roleListResult = Privilege.roleClient.queryRoleList(null, null);
List<RoleModel> allRoleList = roleListResult.getResult();
StopWatch watch1 = new StopWatch();
watch1.start();
List<RoleModel> allRoleList = startPlatformTokenService.getAllRole();
watch1.stop();
if(log.isDebugEnabled()){
log.debug("平台查询角色接口耗时:==》" + watch1.getTotalTimeSeconds());
}
List<RoleModel> userRoleList = new ArrayList<>();
List<Long> roleIds = new ArrayList<>();
Set<String> roleNameSet = new HashSet<>();
......@@ -629,7 +633,13 @@ public class RegUnitInfoServiceImpl extends BaseService<RegUnitInfoDto, RegUnitI
companyInfo.setContact(regUnitInfo.getLegalPerson());
companyInfo.setCompanyType(regUnitInfo.getUnitType());
companyInfo.setLandlinePhone(regUnitInfo.getLegalPersonTel());
StopWatch watch2 = new StopWatch();
watch2.start();
FeignClientResult<CompanyModel> companyResult = Privilege.companyClient.create(companyInfo);
watch2.stop();
if(log.isDebugEnabled()){
log.debug("创建amos公司耗时:==》" + watch2.getTotalTimeSeconds());
}
if (companyResult == null || companyResult.getResult() == null) {
throw new BadRequest("单位注册失败");
}
......@@ -653,19 +663,16 @@ public class RegUnitInfoServiceImpl extends BaseService<RegUnitInfoDto, RegUnitI
Set<String> appCodesSet = new HashSet<>();
Map<Long, List<Long>> roleSeqMap = new HashMap<>();
Map<Long, List<RoleModel>> orgRoles = new HashMap<>();
for (String TypeCode : units) {
DataDictionary unitType = iDataDictionaryService
.getOne(new LambdaQueryWrapper<DataDictionary>().eq(DataDictionary::getCode, TypeCode));
List<DataDictionary> unitTypeList = getUnitTypeList();
Map<String, DataDictionary> dataDictionaryMap = unitTypeList.stream().collect(Collectors.toMap(DataDictionary::getCode, Function.identity(), (k1, k2) -> k1));
for (String typeCode : units) {
DataDictionary unitType = dataDictionaryMap.get(typeCode);
String appCode = unitType.getTypeDesc() != null ? unitType.getTypeDesc() : "";
String[] appCodes = appCode.split(",");
Collections.addAll(appCodesSet, appCodes);
roleNameSet.add(unitType.getName());
// userRoleList = allRoleList.stream().filter(r -> r.getRoleName().equals(unitType.getName()))
// .collect(Collectors.toList());
for (RoleModel roleModel : allRoleList.stream()
.filter(r -> unitType.getExtend().contains(r.getSequenceNbr().toString())).collect(Collectors.toList())) {
userRoleList.add(roleModel);
}
userRoleList.addAll(allRoleList.stream()
.filter(r -> unitType.getExtend().contains(r.getSequenceNbr().toString())).collect(Collectors.toList()));
userRoleList.forEach(r -> {
if (!roleIds.contains(r.getSequenceNbr())) {
roleIds.add(r.getSequenceNbr());
......@@ -677,11 +684,16 @@ public class RegUnitInfoServiceImpl extends BaseService<RegUnitInfoDto, RegUnitI
agencyUserModel.setAppCodes(new ArrayList<>(appCodesSet));
agencyUserModel.setOrgRoles(orgRoles);
agencyUserModel.setOrgRoleSeqs(roleSeqMap);
StopWatch watch3 = new StopWatch();
watch3.start();
userResult = Privilege.agencyUserClient.create(agencyUserModel);
watch3.stop();
if(log.isDebugEnabled()){
log.debug("创建amos人员耗时:==》" + watch3.getTotalTimeSeconds());
}
if (userResult == null || userResult.getResult() == null) {
throw new BadRequest("单位注册失败");
}
String[] userIds = { userResult.getResult().getUserId() };
regUnitInfo.setAdminUserId(userResult.getResult().getUserId());
regUnitInfo.setAmosCompanySeq(companyInfo.getSequenceNbr().toString());
// 3.3 org_user 创建组织机构
......@@ -695,9 +707,6 @@ public class RegUnitInfoServiceImpl extends BaseService<RegUnitInfoDto, RegUnitI
org.setAmosOrgId(companyInfo.getSequenceNbr() + "");
org.setAmosOrgCode(companyInfo.getOrgCode());
iOrgUsrService.save(org);
// if (groupSeq != null) {
// Privilege.groupUserClient.create(groupSeq, Arrays.asList(userIds));
// }
} catch (Exception e) {
// 删除已经创建的 企业信息
if (companyInfo != null && companyInfo.getSequenceNbr() != null) {
......
package com.yeejoin.amos.boot.module.tcm.flc.biz.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.biz.common.constants.CommonConstant;
import com.yeejoin.amos.boot.biz.common.entity.DataDictionary;
......@@ -12,12 +13,14 @@ import com.yeejoin.amos.boot.module.common.api.entity.OrgUsr;
import com.yeejoin.amos.boot.module.common.api.service.ISourceFileService;
import com.yeejoin.amos.boot.module.common.biz.service.impl.OrgUsrServiceImpl;
import com.yeejoin.amos.boot.module.common.biz.service.impl.SourceFileServiceImpl;
import com.yeejoin.amos.boot.module.tcm.api.common.BizCommonConstant;
import com.yeejoin.amos.boot.module.tcm.api.dto.WechatMessageDto;
import com.yeejoin.amos.boot.module.tcm.api.entity.WechatRelation;
import com.yeejoin.amos.boot.module.tcm.api.enums.TzsCommonParam;
import com.yeejoin.amos.boot.module.tcm.biz.service.impl.TzsAuthServiceImpl;
import com.yeejoin.amos.boot.module.tcm.biz.service.impl.WechatRelationServiceImpl;
import com.yeejoin.amos.boot.module.tcm.biz.service.impl.WechatServiceImpl;
import com.yeejoin.amos.boot.module.tcm.biz.utils.RedisUtil;
import com.yeejoin.amos.boot.module.tcm.flc.api.dto.UnitInfoApproveDto;
import com.yeejoin.amos.boot.module.tcm.flc.api.dto.UnitInfoDto;
import com.yeejoin.amos.boot.module.tcm.flc.api.entity.UnitInfo;
......@@ -32,6 +35,7 @@ import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import com.yeejoin.amos.feign.privilege.model.RoleModel;
import com.yeejoin.amos.feign.privilege.util.DesUtil;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.RegionModel;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
......@@ -43,17 +47,11 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.*;
/**
* 企业信息表服务实现类
......@@ -100,6 +98,9 @@ public class UnitInfoServiceImpl extends BaseService<UnitInfoDto, UnitInfo, Unit
@Value("${tzs.wechat.tempId.kr}")
private String CALLBACK_TEMP;
@Autowired
private RedisUtil redisUtil;
@Transactional
......@@ -638,7 +639,49 @@ public class UnitInfoServiceImpl extends BaseService<UnitInfoDto, UnitInfo, Unit
}
@Override
public Collection<RegionModel> getRegionTree(Long parentId) {
tzsAuthServiceImpl.setRequestContext();
Collection<RegionModel> result = null;
if(parentId == null) {
result = this.getAllRegionTree();
} else {
result = Systemctl.regionClient.querySubAgencyTree(parentId).getResult();
}
despace(result);
return result;
}
public Collection<RegionModel> getAllRegionTree(){
Collection<RegionModel> result = null;
if(redisUtil.hasKey(BizCommonConstant.REGION_TREE_REDIS_KEY)){
result = JSONObject.parseArray(redisUtil.get(BizCommonConstant.REGION_TREE_REDIS_KEY).toString(),RegionModel.class);
} else {
result = Systemctl.regionClient.queryForTree(null).getResult();
redisUtil.set(BizCommonConstant.REGION_TREE_REDIS_KEY,JSONObject.toJSONString(result));
}
return result;
}
/**
* 去区域树中level多余空格
* @param result
*/
public void despace(Collection<RegionModel> result){
Iterator<RegionModel> iterator = result.iterator();
while(iterator.hasNext()) {
RegionModel regionModel = iterator.next();
regionModel.setLevel(regionModel.getLevel().trim());
regionModel.setLevelName(regionModel.getLevelName().trim());
if(!ValidationUtil.isEmpty(regionModel.getChildren())) {
despace(regionModel.getChildren());
}
}
}
@Override
public List<UnitInfoDto> getAllUnit() {
return baseMapper.getAllUnit();
}
}
\ 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