Commit b84d5175 authored by tianbo's avatar tianbo

Merge branch 'develop_tzs_register' of…

Merge branch 'develop_tzs_register' of http://36.40.66.175:5000/moa/amos-boot-biz into develop_tzs_register
parents 55ec1018 f489d872
......@@ -283,4 +283,20 @@ public class JgInstallationNoticeDto extends BaseDto {
@ApiModelProperty (value = "其他附件")
private List<Map<String, Object>> otherAccessoriesList;
@ApiModelProperty(value = "告知书编号")
private String informNumber;
@ApiModelProperty(value = "96333码")
private String code96333;
@ApiModelProperty(value = "设备代码")
private String equCode;
@ApiModelProperty(value = "设备品种")
private String equDefine;
@ApiModelProperty(value = "设备类别")
private String equipCategory;
}
package com.yeejoin.amos.boot.module.jg.api.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum CylinderTypeEnum {
CYLINDER("瓶", "2300"),
SEAMLESS_CYLINDER("无缝气瓶(车用)", "2310"),
WELDED_CYLINDER("焊接气瓶(车用)", "2320"),
SPECIAL_CYLINDER("特种气瓶(车用)", "23T0");
private final String name;
private final String code;
public static String of(String code) {
for (CylinderTypeEnum constants : values()) {
if (constants.getCode().equals(code)) {
return constants.getName();
}
}
return null;
}
}
......@@ -24,7 +24,7 @@ public interface JgInstallationNoticeMapper extends CustomBaseMapper<JgInstallat
* @param type 类型:enterprise-企业端、supervision-监管端
* @return 安装告知列表
*/
Page<JgInstallationNotice> queryForPage(Page<JgInstallationNotice> page, @Param("param") JgInstallationNoticeDto model, @Param("type") String type, @Param("orgCode") String orgCode);
Page<Map<String, Object>> queryForPage(Page<JgInstallationNotice> page, @Param("param") JgInstallationNoticeDto model, @Param("type") String type, @Param("orgCode") String orgCode);
/**
* 根据安装告知编号查询设备、设计、制造等信息
......
......@@ -44,7 +44,7 @@ public interface IJgInstallationNoticeService extends IService<JgInstallationNot
* @param type 类型:enterprise-企业端、supervision-监管端
* @return 安装告知列表
*/
Page<JgInstallationNoticeDto> queryForJgInstallationNoticePage(Page<JgInstallationNotice> page, JgInstallationNoticeDto model, String type, ReginParams reginParams);
Page<Map<String, Object>> queryForJgInstallationNoticePage(Page<JgInstallationNotice> page, JgInstallationNoticeDto model, String type, ReginParams reginParams);
/**
* 批量删除
......
......@@ -2,16 +2,16 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.boot.module.jg.api.mapper.JgInstallationNoticeMapper">
<select id="queryForPage" resultType="com.yeejoin.amos.boot.module.jg.api.entity.JgInstallationNotice">
<select id="queryForPage" resultType="java.util.Map">
select
isn.sequence_nbr AS sequenceNbr,
isn.apply_no AS applyNo,
isn.supervisory_code AS supervisoryCode,
isn.notice_date AS noticeDate,
DATE_FORMAT(isn.notice_date,'%Y-%m-%d') AS noticeDate,
isn.use_unit_name AS useUnitName,
isn.receive_org_name AS receiveOrgName,
isn.region_no AS regionNo,
isn.install_start_date AS installStartDate,
DATE_FORMAT(isn.install_start_date,'%Y-%m-%d') AS installStartDate,
isn.address AS address,
isn.notice_status AS noticeStatus,
isn.install_unit_name AS installUnitName,
......@@ -19,20 +19,27 @@
isn.city_name AS cityName,
isn.county_name AS countyName,
isn.instance_id AS instanceId,
isn.inform_number AS informNumber,
isn.promoter,
isn.next_execute_ids AS nextExecuteIds,
isn.instance_status AS instanceStatus,
isn.handle_date AS handleDate,
DATE_FORMAT(isn.handle_date,'%Y-%m-%d') AS handleDate,
other.CODE96333 AS code96333,
(select name from tz_equipment_category ec WHERE ec.code = ri.equ_category) AS equList,
isn.notice_report_url AS noticeReportUrl,
isn.create_user_id as createUserId,
isn.next_task_id AS nextTaskId,
isn.next_execute_user_ids as nextExecuteUserIds,
concat(ibjui."PROVINCE_NAME", '', ibjui."CITY_NAME", '', ibjui."COUNTY_NAME", '', ibjui."STREET_NAME", '', ibjui."ADDRESS") as equAddress
ri.EQU_CODE AS equCode,
(select name from tz_equipment_category ec WHERE ec.code = ri.EQU_DEFINE) AS equDefine,
(SELECT name from tz_equipment_category where code = ri.EQU_LIST) AS equListName,
concat(ibjui."PROVINCE_NAME", '', ibjui."CITY_NAME", '', ibjui."COUNTY_NAME", '', ibjui."STREET_NAME") as equAddress,
ibjui."ADDRESS" as detailedAddress
FROM tzs_jg_installation_notice isn
LEFT JOIN tzs_jg_installation_notice_eq insEq on insEq.equip_transfer_id = isn.sequence_nbr
LEFT JOIN idx_biz_jg_use_info ibjui on insEq.equ_id = ibjui.RECORD
LEFT JOIN idx_biz_jg_register_info ri ON ri.record = insEq.equ_id
LEFT JOIN idx_biz_jg_other_info other on other.RECORD = insEq.equ_id
<where>
isn.is_delete = false
<if test="param != null ">
......@@ -42,15 +49,47 @@
<if test="param.receiveOrgCreditCode != null and param.receiveOrgCreditCode != ''">
AND isn.receive_org_credit_code = #{param.receiveOrgCreditCode}
</if>
<if test="param.useUnitName != null and param.useUnitName != ''">
AND isn.use_unit_credit_code = #{param.useUnitName}
</if>
<if test="param.installUnitName != null and param.installUnitName != ''">
AND isn.install_unit_credit_code = #{param.installUnitName}
<if test="param.installUnitId != null and param.installUnitId != ''">
AND isn.install_unit_credit_code = #{param.installUnitId}
</if>
<if test="param.noticeStatus != null and param.noticeStatus != ''">
AND isn.notice_status = #{param.noticeStatus}
</if>
<if test="param.noticeDate != null">
AND isn."notice_date" LIKE concat('%',DATE_FORMAT(#{param.noticeDate},'%Y-%m-%d'),'%')
</if>
<if test="param.informNumber != null and param.informNumber != ''">
AND isn."inform_number" LIKE concat('%',#{param.informNumber},'%')
</if>
<if test="param.supervisoryCode != null and param.supervisoryCode != ''">
AND isn."supervisory_code" LIKE concat('%',#{param.supervisoryCode},'%')
</if>
<if test="param.code96333 != null and param.code96333 != ''">
AND other."CODE96333" LIKE concat('%',#{param.code96333},'%')
</if>
<if test="param.equCode != null and param.equCode != ''">
AND ri."EQU_CODE" LIKE concat('%',#{param.equCode},'%')
</if>
<if test="param.equList != null and param.equList != ''">
AND ri."EQU_LIST" = #{param.equList}
</if>
<if test="param.equipCategory != null and param.equipCategory != ''">
AND ri."equ_category" = #{param.equipCategory}
</if>
<if test="param.equDefine != null and param.equDefine != ''">
AND ri."EQU_DEFINE" = #{param.equDefine}
</if>
<if test="param.equAddress != null and param.equAddress != ''">
AND (
ibjui."PROVINCE_NAME" LIKE CONCAT('%', #{param.equAddress}, '%')
OR ibjui."CITY_NAME" LIKE CONCAT('%', #{param.equAddress}, '%')
OR ibjui."COUNTY_NAME" LIKE CONCAT('%', #{param.equAddress}, '%')
OR ibjui."STREET_NAME" LIKE CONCAT('%', #{param.equAddress}, '%')
)
</if>
<if test="param.useUnitCreditCode != null and param.useUnitCreditCode != ''">
AND isn.use_unit_credit_code = #{param.useUnitCreditCode}
</if>
</if>
<if test="type == 'supervision'">
AND (isn.receive_org_credit_code = #{orgCode} or isn.transfer_to_user_ids like concat('%',#{param.transferToUserIds},'%'))
......@@ -88,9 +127,9 @@
isn.use_unit_name AS useUnitName,
isn.inform_number AS informNumber,
isn.other_accessories AS otherAccessories,
(select name from tz_equipment_category tec2 where ri."EQU_DEFINE"::text = tec2.code::text) AS equCategory,
(select name from tz_equipment_category tec1 where ri."EQU_LIST"::text = tec1.code::text) AS equList,
(select name from tz_equipment_category tec where ri."EQU_CATEGORY"::text = tec.code::text) AS equDefine,
tec2.name AS equCategory,
tec1.name AS equList,
tec.name AS equDefine,
if(ri.EQU_CODE is null or ri.EQU_CODE = 'null', '', ri.EQU_CODE) AS equRegisterCode,
re.equ_id as equId,
ri.PRODUCT_NAME AS productName,
......@@ -118,19 +157,25 @@
fi.factory_standard AS factoryStandard,
fi.product_quality_yield_prove AS productQualityYieldProve,
fi.ins_use_maintain_explain AS insUseMaintainExplain,
(select useUnit.use_contact from tz_base_enterprise_info useUnit Where useUnit.use_unit_code = isn.use_unit_credit_code) AS safetyManager,
(select useUnit.contact_phone from tz_base_enterprise_info useUnit where useUnit.use_unit_code = isn.use_unit_credit_code) AS safetyManagerPhone,
(select useUnit.use_code from tz_base_enterprise_info useUnit Where useUnit.use_unit_code = isn.use_unit_credit_code) AS useCode,
(select idi.INSPECT_REPORT from idx_biz_jg_inspection_detection_info idi Where idi.record = re.equ_id) as inspectReport,
(select useUnit.address from tz_base_enterprise_info useUnit Where useUnit.use_unit_code = isn.use_unit_credit_code) as useUnitLeaderAddress,
(select use_code from tz_base_enterprise_info tbei Where tbei.use_code = isn.install_unit_credit_code) AS installUnitCreditCode,
(select address from tz_base_enterprise_info tbei Where tbei.use_code = isn.install_unit_credit_code) AS installUnitAddress
FROM
useUnit.use_contact AS safetyManager,
useUnit.contact_phone AS safetyManagerPhone,
useUnit.use_code AS useCode,
installUnit.use_code AS installUnitCreditCode,
useUnit.address as useUnitLeaderAddress,
re.equ_id as equId,
installUnit.address installUnitAddress,
(select idi.INSPECT_REPORT from idx_biz_jg_inspection_detection_info idi Where idi.record = re.equ_id ORDER BY idi.INSPECT_DATE desc LIMIT 1) as inspectReport
FROM
tzs_jg_installation_notice isn
LEFT JOIN tzs_jg_installation_notice_eq re ON re.equip_transfer_id = isn.sequence_nbr
LEFT JOIN idx_biz_jg_register_info ri ON ri.record = re.equ_id
LEFT JOIN idx_biz_jg_design_info di ON di.record = re.equ_id
LEFT JOIN idx_biz_jg_factory_info fi ON fi.record = re.equ_id
LEFT JOIN tz_base_enterprise_info useUnit ON useUnit.use_unit_code = isn.use_unit_credit_code
LEFT JOIN tz_base_enterprise_info installUnit ON installUnit.use_code = isn.install_unit_credit_code
LEFT JOIN amos_tzs_biz.tz_equipment_category tec ON ri."EQU_CATEGORY"::text = tec.code::text
LEFT JOIN amos_tzs_biz.tz_equipment_category tec1 ON ri."EQU_LIST"::text = tec1.code::text
LEFT JOIN amos_tzs_biz.tz_equipment_category tec2 ON ri."EQU_DEFINE"::text = tec2.code::text
WHERE
isn.sequence_nbr = #{sequenceNbr}
LIMIT 1
......
......@@ -17,7 +17,7 @@
ur.apply_no as applyNo,
ur.next_execute_ids as nextExecuteIds,
ur.promoter,
ur.supervisory_code as supervisoryCode,
GROUP_CONCAT(DISTINCT other.supervisory_code) as supervisoryCode,
ur.use_registration_code as useRegistrationCode,
date_format(ur.audit_pass_date,'%Y-%m-%d') as auditPassDate,
ur.receive_org_name as receiveOrgName,
......@@ -233,7 +233,7 @@
ur.apply_no as applyNo,
ur.next_execute_ids as nextExecuteIds,
ur.promoter as promoter,
ur.supervisory_code as supervisoryCode,
GROUP_CONCAT(DISTINCT other.supervisory_code) as supervisoryCode,
ur.use_registration_code as useRegistrationCode,
date_format(ur.audit_pass_date, '%Y-%m-%d') as auditPassDate,
ur.receive_org_name as receiveOrgName,
......
......@@ -162,6 +162,20 @@ public class CommonController extends BaseController {
return ResponseHelper.buildResponse(commonService.getSecurityAdmin(type, useUnitCode));
}
/**
* 设备分类
* @param type 1,设备种类 2,设备类别 3,设备品种
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/equipmentClassification")
@ApiOperation(httpMethod = "GET", value = "设备分类", notes = "1,设备种类 2,设备类别 3,设备品种")
public ResponseModel<List<EquipmentCategory>> equipmentClassification(@RequestParam(value = "type") String type) {
return ResponseHelper.buildResponse(commonService.equipmentClassification(type));
}
/**
* 查询安全管理员的基本信息
......
......@@ -137,10 +137,11 @@ public class JgInstallationNoticeController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/page")
@ApiOperation(httpMethod = "GET", value = "安装告知分页查询", notes = "安装告知分页查询")
public ResponseModel<Page<JgInstallationNoticeDto>> queryForPage(
public ResponseModel<Page<Map<String, Object>>> queryForPage(
@ApiParam(value = "当前页码", required = true) @RequestParam(value = "current", defaultValue = "1") int current,
@ApiParam(value = "每页大小", required = true) @RequestParam(value = "size", defaultValue = "20") int size,
@ApiParam(value = "类型:enterprise-企业端、supervision-监管端", required = true) @RequestParam(value = "type", defaultValue = "enterprise") String type,
@ApiParam(value = "类型:enterprise-企业端、supervision-监管端", required = true)
@RequestParam(value = "type", defaultValue = "enterprise") String type,
@RequestBody(required = false) JgInstallationNoticeDto model
) {
Page<JgInstallationNotice> page = new Page<>(current, size);
......
......@@ -62,7 +62,8 @@ public class JgVehicleInformationController extends BaseController {
String.valueOf(map.get("instanceId")),
String.valueOf(map.get("operate")),
String.valueOf(map.get("comment")),
String.valueOf(map.get("nextTaskId")));
String.valueOf(map.get("nextTaskId")),
String.valueOf(map.get("EQU_DEFINE_CODE")));
return ResponseHelper.buildResponse("ok");
}
......
......@@ -147,6 +147,13 @@ public interface ICommonService {
Integer countEquipInUseTimesForDel(String record);
/**
* 设备分类
* @param type 1,设备种类 2,设备类别 3,设备品种
* @return
*/
List<EquipmentCategory> equipmentClassification(String type);
/**
* 套打使用标志生成
* @param useFlagParamDto 参数
* @param response 文件信息
......
......@@ -26,6 +26,7 @@ import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.jg.api.dto.*;
import com.yeejoin.amos.boot.module.jg.api.entity.JgRegistrationHistory;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.CylinderTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.EquipTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.PrintingTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.CommonMapper;
......@@ -89,6 +90,7 @@ import java.net.URLEncoder;
import java.nio.file.Files;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
......@@ -799,7 +801,7 @@ public class CommonServiceImpl implements ICommonService {
* @param response response
* @param pathResource PDF模版路径
* @param printFileName 生成文件名称
* @param v
* @param textSize 字体大小
*/
private void fillParamValueToPdf(Map<String, Object> map, HttpServletResponse response, String pathResource, String printFileName, float textSize) {
// 读取资源文件夹下的模板
......@@ -927,14 +929,14 @@ public class CommonServiceImpl implements ICommonService {
JSONObject jsonObject = new JSONObject(provideMap);
return jgTransferNoticeService.saveNotice(submitType, jsonObject, reginParams);
} else if (type.equals(ApplicationFormTypeEnum.SYDJ.getBusinessCode())) {
String code = (String) basicObj.get("equDefineCode");
String code = (String) basicObj.get("businessScenarios");
noticeObj.put("receiveOrgCode", !ObjectUtils.isEmpty(basicObj.get("receiveOrgCreditCode")) ? String.valueOf(basicObj.get("receiveOrgCreditCode")) : String.valueOf(basicObj.get("receiveOrgCreditCode1")));
JSONObject jsonObject = new JSONObject(noticeObj);
if (submitType.equals("1")) {
jsonObject.put("submit", Boolean.TRUE);
}
//判断是否为车用气瓶使用登记或者设备使用登记
return code != null && code.equals("23T0") ? jgVehicleInformationService.save(submitType, jsonObject) : jgUseRegistrationServiceImpl.save(jsonObject);
return code != null && code.equals("1") ? jgVehicleInformationService.save(submitType, jsonObject) : jgUseRegistrationServiceImpl.save(jsonObject);
} else if (type.equals(ApplicationFormTypeEnum.GZBG.getBusinessCode())) {
// 兼容业务逻辑代码
if (submitType.equals("1")) {
......@@ -1482,7 +1484,11 @@ public class CommonServiceImpl implements ICommonService {
String equDefine = equipRegistrationInfo.getEquDefine(); // 设备品种 "3110"
if (!ObjectUtils.isEmpty(equCategory)) {
// 设备种类简称
String equCategoryAbbrName = EquipTypeEnum.getMessage(equCategory.substring(0, 1));
String equCategoryAbbrName = Optional.ofNullable(CylinderTypeEnum.CYLINDER.getCode().equals(equCategory) ?
CylinderTypeEnum.CYLINDER.getName() : equCategory)
.map(category -> category.substring(0, 1))
.map(EquipTypeEnum::getMessage)
.orElse(null);
// 设备代码中间两位
String equipType2MidDigits;
......@@ -1660,6 +1666,29 @@ public class CommonServiceImpl implements ICommonService {
}
}
/**
* 设备分类
* @param type 1,设备种类 2,设备类别 3,设备品种
* @return
*/
@Override
public List<EquipmentCategory> equipmentClassification(String type){
List<EquipmentCategory> categoryList = equipmentCategoryMapper.selectList(new QueryWrapper<>());
List<EquipmentCategory> result = Collections.emptyList();
switch (type){
case "1":
result = categoryList.stream().filter(category -> Pattern.compile("^[^\\D0]*000$").matcher(category.getCode()).matches()).collect(Collectors.toList());
break;
case "2":
result = categoryList.stream().filter(category -> Pattern.compile("^[^\\D0]*00$").matcher(category.getCode()).matches()).collect(Collectors.toList());
break;
case "3":
result = categoryList.stream().filter(category -> Pattern.compile("^[^\\D0]*0$").matcher(category.getCode()).matches()).collect(Collectors.toList());
break;
}
return result;
}
@Override
public void fightUseFlagGenerate(UseFlagParamDto useFlagParamDto, HttpServletResponse response) {
Objects.requireNonNull(useFlagParamDto, "参数不能为空");
......
......@@ -1186,15 +1186,15 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
boolMust.must(nullOrEmptyQuery);
} else if (ValidationUtil.equals(queryType, "WB")) {
// 查询 维保备案【可绑定设备列表】【(EQU_STATE=== null || "")】
BoolQueryBuilder nullOrEmptyQuery = QueryBuilders.boolQuery()
.mustNot(QueryBuilders.wildcardQuery("EQU_STATE", "*"));
boolMust.must(nullOrEmptyQuery);
BoolQueryBuilder wbBuilder = QueryBuilders.boolQuery();
wbBuilder.mustNot(QueryBuilders.existsQuery("EQU_STATE"));
boolMust.must(wbBuilder);
} else if (!ObjectUtils.isEmpty(queryType) && ValidationUtil.equals(queryType, "SY")) {
// 查询 使用登记【可选设备列表】【(EQU_STATUS=== null || "" ) && (USE_ORG_CODE ==="" || null)】
BoolQueryBuilder nullOrEmptyQuery = QueryBuilders.boolQuery()
.mustNot(QueryBuilders.wildcardQuery("EQU_STATE", "*"))
.mustNot(QueryBuilders.wildcardQuery("USE_ORG_CODE", "*"));
boolMust.must(nullOrEmptyQuery);
// 查询 使用登记【可选设备列表】【(EQU_STATUS=== null || "" ) && (USE_ORG_CODE(使用登记证编号) ==="" || null)】
BoolQueryBuilder syBuilder = QueryBuilders.boolQuery();
syBuilder.mustNot(QueryBuilders.existsQuery("EQU_STATE"));
syBuilder.mustNot(QueryBuilders.wildcardQuery("USE_ORG_CODE", "*"));
boolMust.must(syBuilder);
}
}
......
......@@ -381,28 +381,21 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
* @return 安装告知列表
*/
@Override
public Page<JgInstallationNoticeDto> queryForJgInstallationNoticePage(Page<JgInstallationNotice> page, JgInstallationNoticeDto model, String type , ReginParams reginParams) {
public Page<Map<String, Object>> queryForJgInstallationNoticePage(Page<JgInstallationNotice> page, JgInstallationNoticeDto model, String type , ReginParams reginParams) {
String orgCode;
orgCode = reginParams.getCompany().getCompanyCode();
model.setTransferToUserIds(reginParams.getUserModel().getUserId());
Page<JgInstallationNotice> noticePage = jgInstallationNoticeMapper.queryForPage(page, model, type, orgCode);
// 将Page<JgInstallationNotice>转化为Page<JgInstallationNoticeDto>
Page<JgInstallationNoticeDto> noticeDtoPage = new Page<>();
BeanUtils.copyProperties(noticePage, noticeDtoPage, "records");
List<JgInstallationNoticeDto> records = noticePage.getRecords().stream().map(notice -> {
JgInstallationNoticeDto noticeDto = new JgInstallationNoticeDto();
BeanUtils.copyProperties(notice, noticeDto);
if (Objects.nonNull(notice.getNoticeStatus())) {
String noticeStatusDesc = FlowStatusEnum.getNameByType(Long.valueOf(notice.getNoticeStatus()));
noticeDto.setNoticeStatusDesc(noticeStatusDesc);
}
return noticeDto;
Page<Map<String, Object>> noticePage = jgInstallationNoticeMapper.queryForPage(page, model, type, orgCode);
List<Map<String, Object>> mappedRecords = noticePage.getRecords().stream().peek(notice -> {
Optional<Long> noticeStatusOpt = Optional.ofNullable((String) notice.get("noticeStatus")).map(Long::valueOf);
noticeStatusOpt.ifPresent(status -> {
String noticeStatusDesc = FlowStatusEnum.getNameByType(status);
notice.put("noticeStatusDesc", noticeStatusDesc);
});
}).collect(Collectors.toList());
noticeDtoPage.setRecords(records);
return noticeDtoPage;
noticePage.setRecords(mappedRecords);
return noticePage;
}
/**
......@@ -485,7 +478,7 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
Map<String, Object> placeholders = new HashMap<>();
placeholders.put("doMain", TZSDOMAIN);
placeholders.put("installUnitName", getValue.apply("installUnitName"));
placeholders.put("informNumber", "".equals(getValue.apply("informNumber")) ? getValue.apply("applyNo") : getValue.apply("informNumber"));
placeholders.put("informNumber", getValue.apply("informNumber"));
placeholders.put("productName", getValue.apply("productName"));
placeholders.put("equipType", getValue.apply("equType"));
placeholders.put("equipCode", getValue.apply("equRegisterCode"));
......
......@@ -22,6 +22,7 @@ import com.yeejoin.amos.boot.module.jg.api.entity.JgRegistrationHistory;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistration;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistrationEq;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.CylinderTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.EquipTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.WorkFlowStatusEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationEqMapper;
......@@ -519,15 +520,18 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
CompanyBo company = reginParams.getCompany();
List<Map<String, Object>> equipmentLists = (List<Map<String, Object>>) map.get("equipmentLists");
if (CollectionUtils.isEmpty(equipmentLists)) {
throw new BadRequest("请先选择设备信息!");
if (org.springframework.util.CollectionUtils.isEmpty(equipmentLists) || equipmentLists.stream()
.map(v -> (String) v.get("EQU_DEFINE_CODE"))
.distinct()
.count() != 1) {
throw new BadRequest(CollectionUtils.isEmpty(equipmentLists) ? "请选择设备信息!" : "请选择相同设备种类!");
}
List<IdxBizJgInspectionDetectionInfo> inspectionDetectionInfoList = idxBizJgInspectionDetectionInfoService.checkInspectionInfo(
equipmentLists.stream()
.map(v -> (String) v.get("record"))
.collect(Collectors.toList())
);
if (!"2300".equals(map.get("EQU_CATEGORY_CODE")) && inspectionDetectionInfoList.stream().anyMatch(info ->
if (!CylinderTypeEnum.CYLINDER.getCode().equals(map.get("EQU_CATEGORY_CODE")) && inspectionDetectionInfoList.stream().anyMatch(info ->
ObjectUtils.isEmpty(info) || ObjectUtils.isEmpty(info.getInspectType()) ||
ObjectUtils.isEmpty(info.getInspectConclusion()) || ObjectUtils.isEmpty(info.getInspectOrgCode()) ||
ObjectUtils.isEmpty(info.getInspectOrgName()))) {
......@@ -850,6 +854,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
LambdaQueryWrapper<IdxBizJgOtherInfo> lambdaOth = new QueryWrapper<IdxBizJgOtherInfo>().lambda();
lambdaOth.eq(IdxBizJgOtherInfo::getRecord, String.valueOf(mapData.get("equipId")));
IdxBizJgOtherInfo otherInfo = otherInfoMapper.selectOne(lambdaOth);
jgUseRegistration.setSupervisoryCode(otherInfo.getSupervisoryCode());
// 注册信息
LambdaQueryWrapper<IdxBizJgRegisterInfo> lambdaReg = new QueryWrapper<IdxBizJgRegisterInfo>().lambda();
lambdaReg.eq(IdxBizJgRegisterInfo::getRecord, String.valueOf(mapData.get("equipId")));
......@@ -1173,7 +1178,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
List<Map<String, Object>> equipmentLists = (List<Map<String, Object>>) jsonObject.get("equipmentLists");
List<String> records = equipmentLists.stream().map(v -> (String) v.get("record")).collect(Collectors.toList());
jsonObject.remove("equipmentLists");
if ("2300".equals(jsonObject.get("EQU_CATEGORY_CODE"))) {
if (CylinderTypeEnum.CYLINDER.getCode().equals(jsonObject.get("EQU_CATEGORY_CODE"))) {
jsonObject.put("equipmentLists", jgUseRegistrationMapper.queryForUnitVesselEquipment(records));
} else {
jsonObject.put("equipmentLists", jgUseRegistrationMapper.queryForUnitPipelineEquipment(records));
......
......@@ -16,9 +16,7 @@ import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.jg.api.dto.*;
import com.yeejoin.amos.boot.module.jg.api.entity.*;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.VehicleApanageEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.WorkFlowStatusEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.*;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgVehicleInformationEqMapper;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgVehicleInformationMapper;
import com.yeejoin.amos.boot.module.jg.api.service.IJgVehicleInformationService;
......@@ -127,8 +125,11 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
JgVehicleInformationDto vehicleInfoDto = JSON.parseObject(JSON.toJSONString(map), JgVehicleInformationDto.class);
List<Map<String, Object>> equipmentLists = (List<Map<String, Object>>) map.get("equipmentLists");
if (CollectionUtils.isEmpty(equipmentLists)) {
throw new BadRequest("请选择设备");
if (CollectionUtils.isEmpty(equipmentLists) || equipmentLists.stream()
.map(v -> (String) v.get("EQU_DEFINE_CODE"))
.distinct()
.count() != 1) {
throw new BadRequest(CollectionUtils.isEmpty(equipmentLists) ? "请选择设备信息!" : "请选择相同设备种类!");
}
CompanyBo company = reginParams.getCompany();
......@@ -236,11 +237,11 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
List<WorkflowResultDto> workflowResultDtoList = commonService.buildWorkFlowInfo(processTasks);
if (!ObjectUtils.isEmpty(workflowResultDtoList) && !ObjectUtils.isEmpty(workflowResultDtoList.get(0))) {
WorkflowResultDto workflowResultDto = workflowResultDtoList.get(0);
this.updateData(vehicleInformation.getSequenceNbr(), "0", workflowResultDto, Boolean.TRUE);
this.updateData(vehicleInformation.getSequenceNbr(), "0", workflowResultDto, Boolean.TRUE, String.valueOf(map.get("EQU_DEFINE_CODE")));
}
} else {
// 执行流程
flowExecute(vehicleInformation.getSequenceNbr(), vehicleInformation.getInstanceId(), "0", "", String.valueOf(map.get("nextTaskId")));
flowExecute(vehicleInformation.getSequenceNbr(), vehicleInformation.getInstanceId(), "0", "", String.valueOf(map.get("nextTaskId")), String.valueOf(map.get("EQU_DEFINE_CODE")));
}
} else {
ArrayList<TaskModelDto> list = new ArrayList<>();
......@@ -262,97 +263,6 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
return Collections.singletonList(vehicleInformation);
}
public void updateHistory(JSONObject map, String equipId, String currentDocumentId, String supervisoryCode) {
JgRegistrationHistory jgRegistrationHistory = new JgRegistrationHistory();
LambdaQueryWrapper<JgRegistrationHistory> lambda = new QueryWrapper<JgRegistrationHistory>().lambda();
// lambda.eq(JgRegistrationHistory::getEquId, equipId);
lambda.eq(JgRegistrationHistory::getCurrentDocumentId, currentDocumentId);
lambda.eq(JgRegistrationHistory::getRegistrationClass, "车用气瓶登记");
Integer integer = jgRegistrationHistoryService.getBaseMapper().selectCount(lambda);
if (integer > 0) {
jgRegistrationHistory.setChangeData(JSON.toJSONString(map));
jgRegistrationHistoryService.update(jgRegistrationHistory, lambda);
} else {
jgRegistrationHistory.setChangeData(JSON.toJSONString(map));
jgRegistrationHistory.setStatus("new");
jgRegistrationHistory.setRegistrationClass("车用气瓶登记");
jgRegistrationHistory.setSupervisoryCode(supervisoryCode);
jgRegistrationHistory.setEquId(equipId);
jgRegistrationHistory.setCurrentDocumentId(currentDocumentId);
jgRegistrationHistoryService.save(jgRegistrationHistory);
}
}
private void createTaskModel(JgVehicleInformation vehicle, String taskName, String submitType, String nextUserIds) {
if ("1".equals(submitType)) {
TaskModelDto taskModelDto = new TaskModelDto();
taskModelDto.setFlowCreateDate(vehicle.getRegDate());
taskModelDto.setTaskName(taskName);
taskModelDto.setTaskCode(vehicle.getApplyNo());
taskModelDto.setTaskContent(this.buildTaskContent(vehicle));
taskModelDto.setTaskDesc("");
taskModelDto.setTaskType(BusinessTypeEnum.JG_VEHICLE_GAS_APPLICATION.getCode());
taskModelDto.setTaskTypeLabel(BusinessTypeEnum.JG_VEHICLE_GAS_APPLICATION.getName());
taskModelDto.setRelationId(vehicle.getInstanceId());
taskModelDto.setExecuteUserIds(nextUserIds);
FlowStatusEnum flowStatusEnum = this.getTaskStatus(submitType);
taskModelDto.setTaskStatus(flowStatusEnum.getCode());
taskModelDto.setTaskStatusLabel(flowStatusEnum.getName());
taskModelDto.setFlowStatus(this.getTaskStatusByName(vehicle.getStatus()));
taskModelDto.setFlowStatusLabel(vehicle.getStatus());
taskModelDto.setStartUserId(vehicle.getCreateUserId());
taskModelDto.setStartUser(vehicle.getRecUserName());
taskModelDto.setFlowCode(vehicle.getNextTaskId());
taskModelDto.setStartUserCompanyName(vehicle.getUseUnitName());
taskModelDto.setNextExecuteUser(vehicle.getNextExecuteIds());
taskModelDto.setStartDate(vehicle.getCreateDate());
TaskMessageDto taskMessageDto = new TaskMessageDto();
BeanUtil.copyProperties(vehicle, taskMessageDto);
taskModelDto.setModel(taskMessageDto);
commonService.buildTaskModel(Collections.singletonList(taskModelDto));
// redis流程实时数据更新
commonService.saveExecuteFlowData2Redis(vehicle.getInstanceId(), this.buildInstanceRuntimeData(vehicle));
}
}
/**
* 摘要构建
*
* @param dto 业务
* @return 摘要
*/
private String buildTaskContent(JgVehicleInformation dto) {
List<Map<String, Object>> list = this.baseMapper.selectEquipList(dto.getSequenceNbr());
String supervisoryCode = "";
String equList = "";
if (!CollectionUtils.isEmpty(list)) {
Map<String, Object> map = list.get(0);
if (map.containsKey("EQU_LIST")) {
equList = map.get("EQU_LIST") + "";
}
if (map.containsKey("SUPERVISORY_CODE")) {
supervisoryCode = map.get("SUPERVISORY_CODE") + "";
}
}
supervisoryCode = StringUtils.isEmpty(supervisoryCode) ? "无" : supervisoryCode;
String format = String.format("来自%s【%s】等的业务办理,【申请单号:%s】等", equList, supervisoryCode, dto.getApplyNo());
return format;
}
private FlowStatusEnum getTaskStatus(String operate) {
if ("0".equals(operate)) {
return FlowStatusEnum.TO_BE_FINISHED;
} else {
return FlowStatusEnum.REJECTED;
}
}
private Integer getTaskStatusByName(String auditStatus) {
return commonService.getDictionaryCodeByName(auditStatus);
}
/**
* 撤回操作
*
......@@ -490,13 +400,13 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
* @param comment 意见
* @param nextTaskId nextTaskId
*/
public void flowExecute(Long sequenceNbr, String instanceId, String operate, String comment, String nextTaskId) {
public void flowExecute(Long sequenceNbr, String instanceId, String operate, String comment, String nextTaskId, String equDefineCode) {
String lockKey = CommonServiceImpl.buildJgExecuteLockKey(instanceId);
RLock lock = redissonClient.getLock(lockKey);
try {
boolean isLocked = lock.tryLock(0, 180, TimeUnit.SECONDS);
// 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
if(!isLocked){
if (!isLocked) {
throw new BadRequest("当前流程已经被执行!请重新打开页面查看并执行!");
}
// 流程执行时,状态及权限校验
......@@ -527,7 +437,7 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
List<WorkflowResultDto> resultDto = commonService.buildWorkFlowInfo(processTaskDTOS);
if (!ObjectUtils.isEmpty(resultDto) && !ObjectUtils.isEmpty(resultDto.get(0))) {
WorkflowResultDto workflowResultDto = resultDto.get(0);
this.updateData(jgVehicleInformation.getSequenceNbr(), operate, workflowResultDto, Boolean.FALSE);
this.updateData(jgVehicleInformation.getSequenceNbr(), operate, workflowResultDto, Boolean.FALSE, equDefineCode);
}
} catch (InterruptedException e) {
e.printStackTrace();
......@@ -546,7 +456,7 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
* @param workflowResultDto workflowResultDto
* @param isFirst isFirst
*/
public void updateData(Long sequenceNbr, String operate, WorkflowResultDto workflowResultDto, Boolean isFirst) {
public void updateData(Long sequenceNbr, String operate, WorkflowResultDto workflowResultDto, Boolean isFirst, String equDefineCode) {
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())) + "", ReginParams.class);
String role = workflowResultDto.getNextExecutorRoleIds();
String taskCode = FlowStatusEnum.TO_BE_FINISHED.getName();
......@@ -625,7 +535,7 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
CompanyModel receiveParentResult = Privilege.companyClient.seleteOne(receiveCompanyResult.getParentId()).getResult();
receiveCompanyCode = receiveParentResult.getCompanyCode();
}
String code = generateVehicleUseRegistrationCode(receiveCompanyCode);
String code = this.generateVehicleUseRegistrationCode(receiveCompanyCode, equDefineCode);
jgVehicleInformation.setUseRegistrationCode(code);
jgVehicleInformation.setAuditPassDate(new Date());
......@@ -867,16 +777,16 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
/**
* 根据车辆属地生成使用登记证
*
* @param receiveCompanyCode 车辆属地
* @return String
*/
private String generateVehicleUseRegistrationCode(String receiveCompanyCode) {
StringBuilder useRegistration = new StringBuilder("容3T");
if (!ObjectUtils.isEmpty(receiveCompanyCode)) {
ResponseModel<String> stringResponseModel = tzsServiceFeignClient.useRegistrationCode(useRegistration.append(VehicleApanageEnum.of(receiveCompanyCode)) + "");
return stringResponseModel.getResult();
}
return null;
private String generateVehicleUseRegistrationCode(String receiveCompanyCode, String equDefineCode) {
// 构建设备种类简称
String useRegistration = String.format("瓶%s%s", equDefineCode.substring(1, 3), VehicleApanageEnum.of(receiveCompanyCode));
// 调用服务端获取注册码
ResponseModel<String> stringResponseModel = tzsServiceFeignClient.useRegistrationCode(useRegistration);
return stringResponseModel.getResult();
}
/**
......@@ -911,9 +821,12 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
throw new BadRequest("使用登记证导出失败,请稍后重试或检查数据完整性!");
}
IdxBizJgRegisterInfo registerInfo = idxBizJgRegisterInfoService.getOne(new QueryWrapper<IdxBizJgRegisterInfo>().eq("RECORD", vehicleInformationEqList.get(0).getEquId()));
if (registerInfo != null) {
populateEquipmentInformation(registerInfo, exportParamsMap);
List<IdxBizJgRegisterInfo> registerInfoList = idxBizJgRegisterInfoMapper.selectList(new QueryWrapper<IdxBizJgRegisterInfo>().in("RECORD", vehicleInformationEqList.stream()
.map(JgVehicleInformationEq::getEquId)
.filter(Objects::nonNull)
.collect(Collectors.toList())));
if (!ValidationUtil.isEmpty(registerInfoList)) {
populateEquipmentInformation(registerInfoList, exportParamsMap);
}
IdxBizJgUseInfo useInfo = idxBizJgUseInfoService.getOneData(vehicleInformationEqList.get(0).getEquId());
......@@ -955,27 +868,31 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
}
}
private void populateEquipmentInformation(IdxBizJgRegisterInfo registerInfo, Map<String, Object> exportParamsMap) {
String equList = registerInfo.getEquList();
String equCategory = registerInfo.getEquCategory();
String equDefine = registerInfo.getEquDefine();
List<EquipmentCategory> categoryList0 = commonService.getEquipmentCategoryList(equList, null);
List<EquipmentCategory> categoryList1 = commonService.getEquipmentCategoryList(equCategory, null);
List<EquipmentCategory> categoryList2 = commonService.getEquipmentCategoryList(equDefine, null);
if (notEmptyAndHasName(categoryList0)) {
exportParamsMap.put("equList", categoryList0.get(0).getName());
}
if (notEmptyAndHasName(categoryList1)) {
exportParamsMap.put("equCategory", categoryList1.get(0).getName());
}
if (notEmptyAndHasName(categoryList2)) {
exportParamsMap.put("equDefine", "特种气瓶(车用)");
}
if (registerInfo.getEquCode() == null) {
throw new BadRequest("使用登记证导出失败,设备代码为空!");
private void populateEquipmentInformation(List<IdxBizJgRegisterInfo> registerInfoList, Map<String, Object> exportParamsMap) {
Optional<IdxBizJgRegisterInfo> optionalRegisterInfo = registerInfoList.stream().findFirst();
if (optionalRegisterInfo.isPresent()) {
IdxBizJgRegisterInfo registerInfo = optionalRegisterInfo.get();
String equList = registerInfo.getEquList();
String equCategory = registerInfo.getEquCategory();
String equDefine = registerInfo.getEquDefine();
List<EquipmentCategory> categoryList0 = commonService.getEquipmentCategoryList(equList, null);
List<EquipmentCategory> categoryList1 = commonService.getEquipmentCategoryList(equCategory, null);
if (notEmptyAndHasName(categoryList0)) {
exportParamsMap.put("equList", categoryList0.get(0).getName());
}
if (notEmptyAndHasName(categoryList1)) {
exportParamsMap.put("equCategory", categoryList1.get(0).getName());
}
exportParamsMap.put("equDefine", CylinderTypeEnum.of(equDefine));
if (registerInfoList.stream().anyMatch(r -> r.getEquCode() == null)) {
throw new BadRequest("使用登记证导出失败,设备代码为空!");
}
exportParamsMap.put("equCode", registerInfoList.stream()
.map(IdxBizJgRegisterInfo::getEquCode)
.filter(Objects::nonNull)
.collect(Collectors.joining(", ")));
exportParamsMap.put("equListCode", equList);
}
exportParamsMap.put("equCode", registerInfo.getEquCode());
exportParamsMap.put("equListCode", equList);
}
private boolean notEmptyAndHasName(List<EquipmentCategory> categoryList) {
......
......@@ -129,6 +129,8 @@ public class TzsBaseInstitutionServiceImpl extends BaseService<TzsBaseInstitutio
}).collect(Collectors.toList());
if (!baseUnitLicences.isEmpty()) {
baseUnitLicenceService.saveOrUpdateBatch(baseUnitLicences);
//添加不在字典中的登记机关
regUnitInfoService.addNotInDJJGDictionary(baseUnitLicences);
}
} catch (Exception e) {
log.error(e.getMessage(), e);
......
......@@ -89,515 +89,551 @@ import java.util.stream.Stream;
@Service
@EnableScheduling
public class RegUnitInfoServiceImpl extends BaseService<RegUnitInfoDto, RegUnitInfo, RegUnitInfoMapper>
implements IRegUnitInfoService {
implements IRegUnitInfoService {
@Autowired
@Autowired
RedisUtil redisUtil;
@Autowired
BaseUnitLicenceServiceImpl baseUnitLicenceService;
@Autowired
BaseUnitLicenceServiceImpl baseUnitLicenceService;
@Autowired
DataDictionaryServiceImpl iDataDictionaryService;
@Autowired
DataDictionaryServiceImpl iDataDictionaryService;
@Autowired
OrgUsrServiceImpl iOrgUsrService;
@Autowired
OrgUsrServiceImpl iOrgUsrService;
@Autowired
RegUnitIcServiceImpl regUnitIcService;
@Autowired
RegUnitIcServiceImpl regUnitIcService;
@Autowired
TzBaseEnterpriseInfoServiceImpl tzBaseEnterpriseInfoService;
@Autowired
TzBaseEnterpriseInfoServiceImpl tzBaseEnterpriseInfoService;
@Autowired
TzBaseEnterpriseInfoMapper tzBaseEnterpriseInfoMapper;
@Autowired
TzBaseEnterpriseInfoMapper tzBaseEnterpriseInfoMapper;
@Autowired
RestTemplate restTemplate;
@Autowired
RestTemplate restTemplate;
@Autowired
AccessFeignService accessFeignService;
@Autowired
AccessFeignService accessFeignService;
@Autowired
UgpServiceFeignClient ugpServiceFeignClient;
@Autowired
UgpServiceFeignClient ugpServiceFeignClient;
@Autowired
RegUnitInfoMapper regUnitInfoMapper;
@Autowired
RegUnitInfoMapper regUnitInfoMapper;
@Autowired
StartPlatformTokenService startPlatformTokenService;
@Autowired
EquipmentCategoryServiceImpl equipmentCategoryService;
@Autowired
IdxFeignService idxFeignService;
@Autowired
WorkflowFeignService workflowFeignService;
@Autowired
TzsBaseInstitutionMapper tzsBaseInstitutionMapper;
@Autowired
TzsUserInfoServiceImpl tzsUserInfoService;
private final Logger logger = LogManager.getLogger(RegUnitInfoServiceImpl.class);
/**
* 单位类型,数据来源:cb_data_dictionary type = UNIT_TYPE
*/
private static String DICT_TYPE_UNIT_TYPE = "UNIT_TYPE_NEW";
/**
* 个体类型,数据来源:cb_data_dictionary type = PERSON_REGISTER_TYPE
*/
private static String PERSON_REGISTER_TYPE = "PERSON_REGISTER_TYPE";
@Value("${org.filter.group.seq}")
private Long groupSeq;
@Value("${is.ugp}")
private boolean isUgp;
@Autowired
DataDictionaryServiceImpl dataDictionaryService;
@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 {
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(), ","));
// 1.调用平台进行创建单位、用户信息
this.createCompanyAndUser(regUnitInfo);
// 2.异步调用ugp,同步公司数据
FutureTask<ResponseModel<Boolean>> future = getResponseModelFutureTask(model);
// 3.插入单位注册许可信息表:tz_base_unit_licence
// 3.1先删除已有许可信息 (2024-04-02放开企业许可信息编辑功能)
LambdaQueryWrapper<BaseUnitLicence> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BaseUnitLicence::getUnitCode, model.getUnitCode());
baseUnitLicenceService.remove(queryWrapper);
// 3.2再插入新许可信息
List<BaseUnitLicence> baseUnitLicences = model.getUnitLicences().stream().map(s -> {
s.setUnitCode(model.getUnitCode());
s.setUnitName(model.getName());
BaseUnitLicence target = new BaseUnitLicence();
Bean.copyExistPropertis(s, target);
target.setSequenceNbr(null);
return target;
}).collect(Collectors.toList());
if (!baseUnitLicences.isEmpty()) {
baseUnitLicenceService.saveOrUpdateBatch(baseUnitLicences);
}
// 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);
// 5.创建企业信息
this.createBaseEnterpriseInfo(model, EnterpriseEnums.QY_DW.getType());
if (!ObjectUtils.isEmpty(regUnitInfo.getAdminName())){
regUnitInfo.setContactPerson(regUnitInfo.getAdminName());
}
if (!ObjectUtils.isEmpty(regUnitInfo.getAdminTel())){
regUnitInfo.setContactPersonTel(regUnitInfo.getAdminTel());
}
// 6.插入注册单位基本信息表:tz_flc_reg_unit_info
this.save(regUnitInfo);
// 7.组织返回数据
// 7.1企业基本信息
Bean.copyExistPropertis(regUnitInfo, model);
// 7.2行政许可数据
model.setUnitLicences(Bean.toModels(baseUnitLicences, BaseUnitLicenceDto.class));
// 7.3工商信息
model.setRegUnitIc(Bean.toModel(regUnitIc, new RegUnitIcDto()));
//8.获取多线程执行结果 true成功 false失败(tzs和ugp一起后放开)
if (isUgp && future != null && !Boolean.TRUE.equals(future.get().getResult())) {
throw new BadRequest("UGP信息同步失败");
}
watch.stop();
if(logger.isDebugEnabled()){
logger.debug("注册总耗时:==》{}", watch.getTotalTimeSeconds());
}
}catch (Exception e) {
logger.error(e.getMessage(), e);
try {
// 失败后回滚:删除已经创建的企业信息
if (StringUtils.isNotEmpty(regUnitInfo.getAmosCompanySeq())) {
FeignClientResult<CompanyModel> feignClientResult = Privilege.companyClient.seleteOne(Long.parseLong(regUnitInfo.getAmosCompanySeq()));
if (feignClientResult != null && feignClientResult.getResult() != null) {
Privilege.companyClient.deleteCompany(regUnitInfo.getAmosCompanySeq());
}
}
// 失败后回滚:删除已经创建的管理员账号
if (StringUtils.isNotEmpty(regUnitInfo.getAdminUserId())) {
FeignClientResult<AgencyUserModel> feignClientResult = Privilege.agencyUserClient.queryByUserId(regUnitInfo.getAdminUserId());
if (feignClientResult != null && feignClientResult.getResult() != null) {
Privilege.agencyUserClient.multDeleteUser(regUnitInfo.getAdminUserId());
}
}
} catch (Exception rollbackException) {
logger.error("回滚操作发生异常: {}", rollbackException.getMessage(), rollbackException);
}
throw new RuntimeException("企业注册失败,请联系管理员!");
}
return model;
}
@SchedulerLock(name="asyncSetQrCodeTask",lockAtMostFor = "PT30M")
@Scheduled(cron = "${async.set.qr-code.cron:0 0/1 * * * ?}")
public void asyncSetQrCode() {
// 给所有新注册的企业创建二维码,每次处理1000个,不排序
if (logger.isDebugEnabled()) {
logger.debug("新注册企业二维码生成开始");
}
List<TzBaseEnterpriseInfo> noQrCodeList = tzBaseEnterpriseInfoMapper.listNoQrCode();
if (noQrCodeList.isEmpty()) {
if (logger.isDebugEnabled()) {
logger.debug("暂无待生成二维码的企业");
}
return;
}
noQrCodeList.parallelStream().forEach(enterpriseInfo -> enterpriseInfo.setQrCode(createQRCode(enterpriseInfo.getUseCode())));
tzBaseEnterpriseInfoService.saveOrUpdateBatch(noQrCodeList);
if (logger.isDebugEnabled()) {
logger.debug("新注册企业二维码生成结束");
}
}
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);
InputStream inputStream = new ByteArrayInputStream(bytes);
try {
MultipartFile file = new MockMultipartFile(unitCode+".png",unitCode+".png", ContentType.APPLICATION_OCTET_STREAM.toString(), inputStream);
FeignClientResult<Map<String, String>> date = Systemctl.fileStorageClient.updateCommonFileFree(file, "tzs/qrcode");
if (date != null) {
Map<String, String> map = date.getResult();
Iterator<String> it = map.keySet().iterator();
urlString=it.next();
}
} catch (IOException e) {
e.printStackTrace();
throw new BadRequest(unitCode + ":生成二维码失败");
}
return urlString;
}
/**
* 创建企业信息
* @param regUnitInfo 提交对象
*/
public TzBaseEnterpriseInfo createBaseEnterpriseInfo(RegUnitInfoDto regUnitInfo, String type) {
// 1.填充数据
TzBaseEnterpriseInfo baseEnterpriseInfo = new TzBaseEnterpriseInfo();
baseEnterpriseInfo.setUnitType(StringUtils.join(regUnitInfo.getUnitTypeList(), "#"));
baseEnterpriseInfo.setUseCode(regUnitInfo.getUnitCode());
baseEnterpriseInfo.setUseUnit(regUnitInfo.getName());
if(type.equals(EnterpriseEnums.GR_ZT.getType())){
baseEnterpriseInfo.setUseUnitCode(regUnitInfo.getUnitCode().split("_")[1]);
} else {
baseEnterpriseInfo.setProvince(regUnitInfo.getProvince());
baseEnterpriseInfo.setCity(regUnitInfo.getCity());
baseEnterpriseInfo.setDistrict(regUnitInfo.getDistrict());
baseEnterpriseInfo.setStreet(regUnitInfo.getStree());
baseEnterpriseInfo.setCommunity(regUnitInfo.getCommunity());
baseEnterpriseInfo.setAddress(regUnitInfo.getAddress());
baseEnterpriseInfo.setLegalPerson(regUnitInfo.getLegalPerson());
baseEnterpriseInfo.setLegalPhone(regUnitInfo.getLegalPersonTel());
baseEnterpriseInfo.setLongitude(regUnitInfo.getLongitude());
baseEnterpriseInfo.setLatitude(regUnitInfo.getLatitude());
baseEnterpriseInfo.setUseContact(regUnitInfo.getAdminName());
baseEnterpriseInfo.setContactPhone(regUnitInfo.getAdminTel());
baseEnterpriseInfo.setUseUnitCode(regUnitInfo.getUnitCode());
baseEnterpriseInfo.setUseUnitCertificate(regUnitInfo.getUnitCodeTypeName());
}
// 管辖机构信息
baseEnterpriseInfo.setSuperviseCode(regUnitInfo.getManagementUnitCompanyCode());
baseEnterpriseInfo.setSuperviseOrgCode(regUnitInfo.getManagementUnitOrgCode());
// 这个表有两个字段所以赋值两字段
baseEnterpriseInfo.setSuperviseOrgName(regUnitInfo.getManagementUnit());
baseEnterpriseInfo.setGoverningBody(regUnitInfo.getManagementUnit());
if (UnitDataSourceEnum.NATIONAL.getCode().equals(regUnitInfo.getIsNationwide())) {
baseEnterpriseInfo.setDataSources(UnitDataSourceEnum.NATIONAL.getName());
} else {
baseEnterpriseInfo.setDataSources(UnitDataSourceEnum.SHAANXI.getName());
}
baseEnterpriseInfo.setRegisterType(Objects.requireNonNull(EnterpriseEnums.getEnumByType(type).getTypeName()));
if (type.equals(EnterpriseEnums.QY_DW.getType())){
baseEnterpriseInfo.setIndustry(regUnitInfo.getRegUnitIc().getIndustryName());
baseEnterpriseInfo.setRegistrationAuthority(regUnitInfo.getRegUnitIc().getRegisteredOrgan());
baseEnterpriseInfo.setApprovalTime(regUnitInfo.getRegUnitIc().getApprovedDate());
baseEnterpriseInfo.setOperatingStatus(regUnitInfo.getRegUnitIc().getBusinessState());
}
baseEnterpriseInfo.setSyncDate(new Date());
baseEnterpriseInfo.setSyncState(0);
LambdaQueryWrapper<TzBaseEnterpriseInfo> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(TzBaseEnterpriseInfo::getUseCode,regUnitInfo.getUnitCode());
tzBaseEnterpriseInfoService.saveOrUpdate(baseEnterpriseInfo,wrapper);
return baseEnterpriseInfo;
}
@Override
public RegUnitInfoDto unitCheck(String unitCode,String companyName,String registerType, String cardType) {
RegUnitInfoDto regUnitInfoDto = new RegUnitInfoDto();
startPlatformTokenService.getToken();
EquipmentCategoryServiceImpl equipmentCategoryService;
@Autowired
IdxFeignService idxFeignService;
@Autowired
WorkflowFeignService workflowFeignService;
@Autowired
TzsBaseInstitutionMapper tzsBaseInstitutionMapper;
@Autowired
TzsUserInfoServiceImpl tzsUserInfoService;
private final Logger logger = LogManager.getLogger(RegUnitInfoServiceImpl.class);
/**
* 单位类型,数据来源:cb_data_dictionary type = UNIT_TYPE
*/
private static String DICT_TYPE_UNIT_TYPE = "UNIT_TYPE_NEW";
private static final String DICT_TYPE_DJJG = "DJJG";
/**
* 个体类型,数据来源:cb_data_dictionary type = PERSON_REGISTER_TYPE
*/
private static String PERSON_REGISTER_TYPE = "PERSON_REGISTER_TYPE";
@Value("${org.filter.group.seq}")
private Long groupSeq;
@Value("${is.ugp}")
private boolean isUgp;
@Autowired
DataDictionaryServiceImpl dataDictionaryService;
@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 {
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(), ","));
// 1.调用平台进行创建单位、用户信息
this.createCompanyAndUser(regUnitInfo);
// 2.异步调用ugp,同步公司数据
FutureTask<ResponseModel<Boolean>> future = getResponseModelFutureTask(model);
// 3.插入单位注册许可信息表:tz_base_unit_licence
// 3.1先删除已有许可信息 (2024-04-02放开企业许可信息编辑功能)
LambdaQueryWrapper<BaseUnitLicence> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BaseUnitLicence::getUnitCode, model.getUnitCode());
baseUnitLicenceService.remove(queryWrapper);
// 3.2再插入新许可信息
List<BaseUnitLicence> baseUnitLicences = model.getUnitLicences().stream().map(s -> {
s.setUnitCode(model.getUnitCode());
s.setUnitName(model.getName());
BaseUnitLicence target = new BaseUnitLicence();
Bean.copyExistPropertis(s, target);
target.setSequenceNbr(null);
return target;
}).collect(Collectors.toList());
if (!baseUnitLicences.isEmpty()) {
baseUnitLicenceService.saveOrUpdateBatch(baseUnitLicences);
//添加不在字典中的登记机关
this.addNotInDJJGDictionary(baseUnitLicences);
}
// 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);
// 5.创建企业信息
this.createBaseEnterpriseInfo(model, EnterpriseEnums.QY_DW.getType());
if (!ObjectUtils.isEmpty(regUnitInfo.getAdminName())) {
regUnitInfo.setContactPerson(regUnitInfo.getAdminName());
}
if (!ObjectUtils.isEmpty(regUnitInfo.getAdminTel())) {
regUnitInfo.setContactPersonTel(regUnitInfo.getAdminTel());
}
// 6.插入注册单位基本信息表:tz_flc_reg_unit_info
this.save(regUnitInfo);
// 7.组织返回数据
// 7.1企业基本信息
Bean.copyExistPropertis(regUnitInfo, model);
// 7.2行政许可数据
model.setUnitLicences(Bean.toModels(baseUnitLicences, BaseUnitLicenceDto.class));
// 7.3工商信息
model.setRegUnitIc(Bean.toModel(regUnitIc, new RegUnitIcDto()));
//8.获取多线程执行结果 true成功 false失败(tzs和ugp一起后放开)
if (isUgp && future != null && !Boolean.TRUE.equals(future.get().getResult())) {
throw new BadRequest("UGP信息同步失败");
}
watch.stop();
if (logger.isDebugEnabled()) {
logger.debug("注册总耗时:==》{}", watch.getTotalTimeSeconds());
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
try {
// 失败后回滚:删除已经创建的企业信息
if (StringUtils.isNotEmpty(regUnitInfo.getAmosCompanySeq())) {
FeignClientResult<CompanyModel> feignClientResult = Privilege.companyClient.seleteOne(Long.parseLong(regUnitInfo.getAmosCompanySeq()));
if (feignClientResult != null && feignClientResult.getResult() != null) {
Privilege.companyClient.deleteCompany(regUnitInfo.getAmosCompanySeq());
}
}
// 失败后回滚:删除已经创建的管理员账号
if (StringUtils.isNotEmpty(regUnitInfo.getAdminUserId())) {
FeignClientResult<AgencyUserModel> feignClientResult = Privilege.agencyUserClient.queryByUserId(regUnitInfo.getAdminUserId());
if (feignClientResult != null && feignClientResult.getResult() != null) {
Privilege.agencyUserClient.multDeleteUser(regUnitInfo.getAdminUserId());
}
}
} catch (Exception rollbackException) {
logger.error("回滚操作发生异常: {}", rollbackException.getMessage(), rollbackException);
}
throw new RuntimeException("企业注册失败,请联系管理员!");
}
return model;
}
/**
* 添加不在字典中的登记机关
* @param baseUnitLicences baseUnitLicences
*/
public void addNotInDJJGDictionary(List<BaseUnitLicence> baseUnitLicences) {
List<String> approvedOrganList = baseUnitLicences.stream()
.map(BaseUnitLicence::getApprovedOrgan)
.collect(Collectors.toList());
List<DataDictionary> allDictionaryList = this.initAllDataDictionaryList();
Set<String> existingNames = allDictionaryList.stream()
.filter(d -> d.getType().equals(DICT_TYPE_DJJG))
.map(DataDictionary::getName)
.collect(Collectors.toSet());
// 过滤出不在已存在的数据字典中的机构名,并转换为相应的数据字典对象
List<DataDictionary> notInDataDictionaryList = approvedOrganList.stream()
.filter(approvedOrgan -> !existingNames.contains(approvedOrgan))
.map(approvedOrgan -> {
DataDictionary dictionary = new DataDictionary();
dictionary.setName(approvedOrgan);
dictionary.setType(DICT_TYPE_DJJG);
dictionary.setCode(UUID.randomUUID().toString().replace("-", "").substring(0, 16));
return dictionary;
})
.collect(Collectors.toList());
if (!notInDataDictionaryList.isEmpty()) {
iDataDictionaryService.saveBatch(notInDataDictionaryList);
// 更新缓存
allDictionaryList.addAll(notInDataDictionaryList);
redisUtil.set(BizCommonConstant.TCM_ALL_DATA_DICT_REDIS_KEY, JSONObject.toJSONString(allDictionaryList));
}
}
@SchedulerLock(name = "asyncSetQrCodeTask", lockAtMostFor = "PT30M")
@Scheduled(cron = "${async.set.qr-code.cron:0 0/1 * * * ?}")
public void asyncSetQrCode() {
// 给所有新注册的企业创建二维码,每次处理1000个,不排序
if (logger.isDebugEnabled()) {
logger.debug("新注册企业二维码生成开始");
}
List<TzBaseEnterpriseInfo> noQrCodeList = tzBaseEnterpriseInfoMapper.listNoQrCode();
if (noQrCodeList.isEmpty()) {
if (logger.isDebugEnabled()) {
logger.debug("暂无待生成二维码的企业");
}
return;
}
noQrCodeList.parallelStream().forEach(enterpriseInfo -> enterpriseInfo.setQrCode(createQRCode(enterpriseInfo.getUseCode())));
tzBaseEnterpriseInfoService.saveOrUpdateBatch(noQrCodeList);
if (logger.isDebugEnabled()) {
logger.debug("新注册企业二维码生成结束");
}
}
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);
InputStream inputStream = new ByteArrayInputStream(bytes);
try {
MultipartFile file = new MockMultipartFile(unitCode + ".png", unitCode + ".png", ContentType.APPLICATION_OCTET_STREAM.toString(), inputStream);
FeignClientResult<Map<String, String>> date = Systemctl.fileStorageClient.updateCommonFileFree(file, "tzs/qrcode");
if (date != null) {
Map<String, String> map = date.getResult();
Iterator<String> it = map.keySet().iterator();
urlString = it.next();
}
} catch (IOException e) {
e.printStackTrace();
throw new BadRequest(unitCode + ":生成二维码失败");
}
return urlString;
}
/**
* 创建企业信息
*
* @param regUnitInfo 提交对象
*/
public TzBaseEnterpriseInfo createBaseEnterpriseInfo(RegUnitInfoDto regUnitInfo, String type) {
// 1.填充数据
TzBaseEnterpriseInfo baseEnterpriseInfo = new TzBaseEnterpriseInfo();
baseEnterpriseInfo.setUnitType(StringUtils.join(regUnitInfo.getUnitTypeList(), "#"));
baseEnterpriseInfo.setUseCode(regUnitInfo.getUnitCode());
baseEnterpriseInfo.setUseUnit(regUnitInfo.getName());
if (type.equals(EnterpriseEnums.GR_ZT.getType())) {
baseEnterpriseInfo.setUseUnitCode(regUnitInfo.getUnitCode().split("_")[1]);
} else {
baseEnterpriseInfo.setProvince(regUnitInfo.getProvince());
baseEnterpriseInfo.setCity(regUnitInfo.getCity());
baseEnterpriseInfo.setDistrict(regUnitInfo.getDistrict());
baseEnterpriseInfo.setStreet(regUnitInfo.getStree());
baseEnterpriseInfo.setCommunity(regUnitInfo.getCommunity());
baseEnterpriseInfo.setAddress(regUnitInfo.getAddress());
baseEnterpriseInfo.setLegalPerson(regUnitInfo.getLegalPerson());
baseEnterpriseInfo.setLegalPhone(regUnitInfo.getLegalPersonTel());
baseEnterpriseInfo.setLongitude(regUnitInfo.getLongitude());
baseEnterpriseInfo.setLatitude(regUnitInfo.getLatitude());
baseEnterpriseInfo.setUseContact(regUnitInfo.getAdminName());
baseEnterpriseInfo.setContactPhone(regUnitInfo.getAdminTel());
baseEnterpriseInfo.setUseUnitCode(regUnitInfo.getUnitCode());
baseEnterpriseInfo.setUseUnitCertificate(regUnitInfo.getUnitCodeTypeName());
}
// 管辖机构信息
baseEnterpriseInfo.setSuperviseCode(regUnitInfo.getManagementUnitCompanyCode());
baseEnterpriseInfo.setSuperviseOrgCode(regUnitInfo.getManagementUnitOrgCode());
// 这个表有两个字段所以赋值两字段
baseEnterpriseInfo.setSuperviseOrgName(regUnitInfo.getManagementUnit());
baseEnterpriseInfo.setGoverningBody(regUnitInfo.getManagementUnit());
if (UnitDataSourceEnum.NATIONAL.getCode().equals(regUnitInfo.getIsNationwide())) {
baseEnterpriseInfo.setDataSources(UnitDataSourceEnum.NATIONAL.getName());
} else {
baseEnterpriseInfo.setDataSources(UnitDataSourceEnum.SHAANXI.getName());
}
baseEnterpriseInfo.setRegisterType(Objects.requireNonNull(EnterpriseEnums.getEnumByType(type).getTypeName()));
if (type.equals(EnterpriseEnums.QY_DW.getType())) {
baseEnterpriseInfo.setIndustry(regUnitInfo.getRegUnitIc().getIndustryName());
baseEnterpriseInfo.setRegistrationAuthority(regUnitInfo.getRegUnitIc().getRegisteredOrgan());
baseEnterpriseInfo.setApprovalTime(regUnitInfo.getRegUnitIc().getApprovedDate());
baseEnterpriseInfo.setOperatingStatus(regUnitInfo.getRegUnitIc().getBusinessState());
}
baseEnterpriseInfo.setSyncDate(new Date());
baseEnterpriseInfo.setSyncState(0);
LambdaQueryWrapper<TzBaseEnterpriseInfo> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(TzBaseEnterpriseInfo::getUseCode, regUnitInfo.getUnitCode());
tzBaseEnterpriseInfoService.saveOrUpdate(baseEnterpriseInfo, wrapper);
return baseEnterpriseInfo;
}
@Override
public RegUnitInfoDto unitCheck(String unitCode, String companyName, String registerType, String cardType) {
RegUnitInfoDto regUnitInfoDto = new RegUnitInfoDto();
startPlatformTokenService.getToken();
// if (!ValidationUtil.isEmpty(companyName)) {
// FeignClientResult<CompanyModel> result = Privilege.companyClient.queryByCompanyName(companyName);
// if (result.getResult() != null) {
// throw new BadRequest("重复的公司名称");
// }
// }
if("6600".equals(cardType)){
boolean b =IdcardUtil.isValidCard(unitCode);
if (!b) {
throw new BadRequest("非法的证件号码");
}
}
if (!ValidationUtil.isEmpty(unitCode)) {
unitCode = ObjectUtils.isEmpty(cardType) ? unitCode : cardType + "_" + unitCode;
FeignClientResult<CompanyModel> result = Privilege.companyClient.queryByCompanyCode(unitCode);
if (result.getResult() != null) {
throw new BadRequest(!ObjectUtils.isEmpty(cardType) ? "重复的证件号码" : "重复的注册编码");
}
}
// 1.校验重复性
if ("6600".equals(cardType)) {
boolean b = IdcardUtil.isValidCard(unitCode);
if (!b) {
throw new BadRequest("非法的证件号码");
}
}
if (!ValidationUtil.isEmpty(unitCode)) {
unitCode = ObjectUtils.isEmpty(cardType) ? unitCode : cardType + "_" + unitCode;
FeignClientResult<CompanyModel> result = Privilege.companyClient.queryByCompanyCode(unitCode);
if (result.getResult() != null) {
throw new BadRequest(!ObjectUtils.isEmpty(cardType) ? "重复的证件号码" : "重复的注册编码");
}
}
// 1.校验重复性
// RegUnitInfo regUnitInfo = this
// .getOne(new LambdaQueryWrapper<RegUnitInfo>().eq(RegUnitInfo::getUnitCode, unitCode));
// if (regUnitInfo != null) {
// throw new RuntimeException("该单位已注册,请联系企业管理员!");
// }
// 2.组织返回数据
if(ObjectUtils.isEmpty(registerType)){
//2.1 工商信息查询
Map<String, Object> resultMap = accessFeignService.getData(unitCode).getResult();
if (resultMap == null){
throw new BadRequest("工商信息接口查询失败,请稍后再试!");
}
if (ObjectUtils.isEmpty(resultMap)) {
throw new BadRequest("未查询到企业信息,请核对!");
}
if(!ValidationUtil.isEmpty(resultMap)){
// 2.2 工商信息组装
String area = String.valueOf(resultMap.get("area"));
String city = area.substring(0,area.indexOf("市")+1);
String district = area.substring(city.length());
if("高新区".equals(district)){
district = "雁塔区";
}
regUnitInfoDto.setCity(city);
regUnitInfoDto.setDistrict(district);
regUnitInfoDto.setStree(String.valueOf(resultMap.get("street")));
regUnitInfoDto.setCommunity(String.valueOf(resultMap.get("community")));
regUnitInfoDto.setAddress(String.valueOf(resultMap.get("address")));
regUnitInfoDto.setUnitCode(String.valueOf(resultMap.get("creditCode")));
regUnitInfoDto.setName(String.valueOf(resultMap.get("unitName")));
regUnitInfoDto.setLegalPerson(String.valueOf(resultMap.get("legalPeople")));
String industryName = "";
if(ObjectUtils.isNotEmpty(resultMap.get("industryCode"))){
List<DataDictionary> dictionaries = this.initAllDataDictionaryList();
Optional<DataDictionary> op = dictionaries.stream().filter(d->d.getCode() != null && d.getType() !=null && d.getCode().equals(String.valueOf(resultMap.get("industryCode")))&& "HYXLDM".equals(d.getType())).findFirst();
if(op.isPresent()) {
DataDictionary dataDictionary = op.get();
industryName = dataDictionary.getName();
}
}
String approveDate = String.valueOf(resultMap.get("approval_time"));
approveDate = approveDate.contains("年")?approveDate.replace("年","-"):approveDate;
approveDate = approveDate.contains("月")?approveDate.replace("月","-"):approveDate;
approveDate = approveDate.contains("日")?approveDate.replace("日","-"):approveDate;
RegUnitIcDto regUnitIcDto = new RegUnitIcDto();
regUnitIcDto.setUnitCode(regUnitInfoDto.getUnitCode());
try {
regUnitIcDto.setApprovedDate(DateUtils.dateParse(approveDate,"yyyy-MM-dd"));
} catch (ParseException e) {
e.printStackTrace();
}
regUnitIcDto.setUnitName(regUnitInfoDto.getName());
regUnitIcDto.setRegisteredOrgan(String.valueOf(resultMap.get("registration_authority")));
regUnitIcDto.setBusinessState(String.valueOf(resultMap.get("operating_status")));
regUnitIcDto.setProvince("陕西省");
regUnitIcDto.setCity(regUnitInfoDto.getCity());
regUnitIcDto.setDistrict(regUnitInfoDto.getDistrict());
regUnitIcDto.setStree(regUnitInfoDto.getStree());
regUnitIcDto.setCommunity(regUnitInfoDto.getCommunity());
regUnitIcDto.setAddress(regUnitInfoDto.getAddress());
regUnitIcDto.setLegalPerson(regUnitInfoDto.getLegalPerson());
regUnitIcDto.setIndustryName(industryName);
regUnitInfoDto.setRegUnitIc(regUnitIcDto);
} else {
regUnitInfoDto.setRegUnitIc(new RegUnitIcDto());
}
} else if("6598".equals(registerType)){
TzsBaseInstitution regUnitMessage = tzsBaseInstitutionMapper.selectOne(new LambdaQueryWrapper<TzsBaseInstitution>().eq(TzsBaseInstitution::getUseCode, unitCode));
TzsBaseInstitutionDto institutionDto = new TzsBaseInstitutionDto();
if(!ObjectUtils.isEmpty(regUnitMessage)){
BeanUtils.copyProperties(regUnitMessage, institutionDto);
}
regUnitInfoDto.setRegUnitMessage(institutionDto);
}
// 2.3 许可信息组装
List<BaseUnitLicence> unitLicences = baseUnitLicenceService
.list(new LambdaQueryWrapper<BaseUnitLicence>().eq(BaseUnitLicence::getUnitCode, unitCode));
regUnitInfoDto.setUnitLicences(Bean.toModels(unitLicences, BaseUnitLicenceDto.class));
return regUnitInfoDto;
}
@Override
public List<DataDictionary> getUnitTypeList() {
return this.setAndGetUnitTypeList();
}
public List<DataDictionary> setAndGetUnitTypeList() {
List<DataDictionary> dataDictionaries;
// 先从Redis缓存中获取值
if(redisUtil.hasKey(BizCommonConstant.UNIT_TYPE_LIST_REDIS_KEY)){
dataDictionaries = JSONObject.parseArray(redisUtil.get(BizCommonConstant.UNIT_TYPE_LIST_REDIS_KEY).toString(),DataDictionary.class);
return dataDictionaries;
}
// 在同步块内再次检查缓存,以避免多个线程同时查不到缓存时重复查询数据库
synchronized (this){
if(redisUtil.hasKey(BizCommonConstant.UNIT_TYPE_LIST_REDIS_KEY)){
dataDictionaries = JSONObject.parseArray(redisUtil.get(BizCommonConstant.UNIT_TYPE_LIST_REDIS_KEY).toString(),DataDictionary.class);
} else{
dataDictionaries = iDataDictionaryService.getByType(DICT_TYPE_UNIT_TYPE);
redisUtil.set(BizCommonConstant.UNIT_TYPE_LIST_REDIS_KEY,JSONObject.toJSONString(dataDictionaries));
}
}
return dataDictionaries;
}
@Override
public List<DataDictionary> getPersonTypeList() {
return this.setAndGetPersonRegisterTypeList();
}
public List<DataDictionary> setAndGetPersonRegisterTypeList() {
List<DataDictionary> dataDictionaries;
// 先从Redis缓存中获取值
if(redisUtil.hasKey(BizCommonConstant.PERSON_REGISTER_TYPE_LIST_REDIS_KEY)){
dataDictionaries = JSONObject.parseArray(redisUtil.get(BizCommonConstant.PERSON_REGISTER_TYPE_LIST_REDIS_KEY).toString(),DataDictionary.class);
return dataDictionaries;
}
// 在同步块内再次检查缓存,以避免多个线程同时查不到缓存时重复查询数据库
synchronized (this){
if(redisUtil.hasKey(BizCommonConstant.PERSON_REGISTER_TYPE_LIST_REDIS_KEY)){
dataDictionaries = JSONObject.parseArray(redisUtil.get(BizCommonConstant.PERSON_REGISTER_TYPE_LIST_REDIS_KEY).toString(),DataDictionary.class);
} else{
dataDictionaries = iDataDictionaryService.getByType(PERSON_REGISTER_TYPE);
redisUtil.set(BizCommonConstant.PERSON_REGISTER_TYPE_LIST_REDIS_KEY,JSONObject.toJSONString(dataDictionaries));
}
}
return dataDictionaries;
}
@Override
public List<DataDictionary> getChildList(String type, String group) {
List<DataDictionary> dictionaries = this.initAllDataDictionaryList();
return dictionaries.stream().parallel().filter(d->d.getType().equals(type) && d.getTypeDesc().equals(group)).collect(Collectors.toList());
}
@Override
public void setAllDataDictionaryList(){
this.initAllDataDictionaryList();
}
@Override
public List<Menu> getDictionaryWithTreeFillId(String type) throws Exception {
List<DataDictionary> dictionaries = this.initAllDataDictionaryList();
List<DataDictionary> temp = dictionaries.stream().parallel().filter(d->d.getType().equals(type)).collect(Collectors.toList());
return TreeParser.getTree(null, temp, DataDictionary.class.getName(), "getSequenceNbr", 2,
"getName", "getParent", null, "getCode");
}
@Override
public List<DataDictionary> getDictionaryListByType(String type) throws Exception {
List<DataDictionary> dictionaries = this.initAllDataDictionaryList();
return dictionaries.stream().parallel().filter(d->d.getType().equals(type)).collect(Collectors.toList());
}
public List<DataDictionary> initAllDataDictionaryList() {
List<DataDictionary> dictionaries;
// 使用双重检查锁定
if (redisUtil.hasKey(BizCommonConstant.TCM_ALL_DATA_DICT_REDIS_KEY)) {
String json = redisUtil.get(BizCommonConstant.TCM_ALL_DATA_DICT_REDIS_KEY).toString();
dictionaries = JSONObject.parseArray(json, DataDictionary.class);
return dictionaries;
}
synchronized (this) {
if (redisUtil.hasKey(BizCommonConstant.TCM_ALL_DATA_DICT_REDIS_KEY)) {
String json = redisUtil.get(BizCommonConstant.TCM_ALL_DATA_DICT_REDIS_KEY).toString();
dictionaries = JSONObject.parseArray(json, DataDictionary.class);
} else{
dictionaries = dataDictionaryService.list(new LambdaQueryWrapper<DataDictionary>().eq(BaseEntity::getIsDelete,false));
redisUtil.set(BizCommonConstant.TCM_ALL_DATA_DICT_REDIS_KEY, JSONObject.toJSONString(dictionaries));
}
}
return dictionaries;
}
@Override
public Collection getManagementUnitTree(String orgCode) {
List<LinkedHashMap> companyModels = (List<LinkedHashMap>) redisUtil.get(BizCommonConstant.COMPANY_TREE_REDIS_KEY);
if (ValidationUtil.isEmpty(companyModels)) {
startPlatformTokenService.getToken();
companyModels = equipmentCategoryService.creatTree();
}
if (!ValidationUtil.isEmpty(orgCode)) {
// 2.组织返回数据
if (ObjectUtils.isEmpty(registerType)) {
//2.1 工商信息查询
Map<String, Object> resultMap = accessFeignService.getData(unitCode).getResult();
if (resultMap == null) {
throw new BadRequest("工商信息接口查询失败,请稍后再试!");
}
if (ObjectUtils.isEmpty(resultMap)) {
throw new BadRequest("未查询到企业信息,请核对!");
}
if (!ValidationUtil.isEmpty(resultMap)) {
// 2.2 工商信息组装
String area = String.valueOf(resultMap.get("area"));
String city = area.substring(0, area.indexOf("市") + 1);
String district = area.substring(city.length());
if ("高新区".equals(district)) {
district = "雁塔区";
}
regUnitInfoDto.setCity(city);
regUnitInfoDto.setDistrict(district);
regUnitInfoDto.setStree(String.valueOf(resultMap.get("street")));
regUnitInfoDto.setCommunity(String.valueOf(resultMap.get("community")));
regUnitInfoDto.setAddress(String.valueOf(resultMap.get("address")));
regUnitInfoDto.setUnitCode(String.valueOf(resultMap.get("creditCode")));
regUnitInfoDto.setName(String.valueOf(resultMap.get("unitName")));
regUnitInfoDto.setLegalPerson(String.valueOf(resultMap.get("legalPeople")));
String industryName = "";
if (ObjectUtils.isNotEmpty(resultMap.get("industryCode"))) {
List<DataDictionary> dictionaries = this.initAllDataDictionaryList();
Optional<DataDictionary> op = dictionaries.stream().filter(d -> d.getCode() != null && d.getType() != null && d.getCode().equals(String.valueOf(resultMap.get("industryCode"))) && "HYXLDM".equals(d.getType())).findFirst();
if (op.isPresent()) {
DataDictionary dataDictionary = op.get();
industryName = dataDictionary.getName();
}
}
String approveDate = String.valueOf(resultMap.get("approval_time"));
approveDate = approveDate.contains("年") ? approveDate.replace("年", "-") : approveDate;
approveDate = approveDate.contains("月") ? approveDate.replace("月", "-") : approveDate;
approveDate = approveDate.contains("日") ? approveDate.replace("日", "-") : approveDate;
RegUnitIcDto regUnitIcDto = new RegUnitIcDto();
regUnitIcDto.setUnitCode(regUnitInfoDto.getUnitCode());
try {
regUnitIcDto.setApprovedDate(DateUtils.dateParse(approveDate, "yyyy-MM-dd"));
} catch (ParseException e) {
e.printStackTrace();
}
regUnitIcDto.setUnitName(regUnitInfoDto.getName());
regUnitIcDto.setRegisteredOrgan(String.valueOf(resultMap.get("registration_authority")));
regUnitIcDto.setBusinessState(String.valueOf(resultMap.get("operating_status")));
regUnitIcDto.setProvince("陕西省");
regUnitIcDto.setCity(regUnitInfoDto.getCity());
regUnitIcDto.setDistrict(regUnitInfoDto.getDistrict());
regUnitIcDto.setStree(regUnitInfoDto.getStree());
regUnitIcDto.setCommunity(regUnitInfoDto.getCommunity());
regUnitIcDto.setAddress(regUnitInfoDto.getAddress());
regUnitIcDto.setLegalPerson(regUnitInfoDto.getLegalPerson());
regUnitIcDto.setIndustryName(industryName);
regUnitInfoDto.setRegUnitIc(regUnitIcDto);
} else {
regUnitInfoDto.setRegUnitIc(new RegUnitIcDto());
}
} else if ("6598".equals(registerType)) {
TzsBaseInstitution regUnitMessage = tzsBaseInstitutionMapper.selectOne(new LambdaQueryWrapper<TzsBaseInstitution>().eq(TzsBaseInstitution::getUseCode, unitCode));
TzsBaseInstitutionDto institutionDto = new TzsBaseInstitutionDto();
if (!ObjectUtils.isEmpty(regUnitMessage)) {
BeanUtils.copyProperties(regUnitMessage, institutionDto);
}
regUnitInfoDto.setRegUnitMessage(institutionDto);
}
// 2.3 许可信息组装
List<BaseUnitLicence> unitLicences = baseUnitLicenceService
.list(new LambdaQueryWrapper<BaseUnitLicence>().eq(BaseUnitLicence::getUnitCode, unitCode));
regUnitInfoDto.setUnitLicences(Bean.toModels(unitLicences, BaseUnitLicenceDto.class));
return regUnitInfoDto;
}
@Override
public List<DataDictionary> getUnitTypeList() {
return this.setAndGetUnitTypeList();
}
public List<DataDictionary> setAndGetUnitTypeList() {
List<DataDictionary> dataDictionaries;
// 先从Redis缓存中获取值
if (redisUtil.hasKey(BizCommonConstant.UNIT_TYPE_LIST_REDIS_KEY)) {
dataDictionaries = JSONObject.parseArray(redisUtil.get(BizCommonConstant.UNIT_TYPE_LIST_REDIS_KEY).toString(), DataDictionary.class);
return dataDictionaries;
}
// 在同步块内再次检查缓存,以避免多个线程同时查不到缓存时重复查询数据库
synchronized (this) {
if (redisUtil.hasKey(BizCommonConstant.UNIT_TYPE_LIST_REDIS_KEY)) {
dataDictionaries = JSONObject.parseArray(redisUtil.get(BizCommonConstant.UNIT_TYPE_LIST_REDIS_KEY).toString(), DataDictionary.class);
} else {
dataDictionaries = iDataDictionaryService.getByType(DICT_TYPE_UNIT_TYPE);
redisUtil.set(BizCommonConstant.UNIT_TYPE_LIST_REDIS_KEY, JSONObject.toJSONString(dataDictionaries));
}
}
return dataDictionaries;
}
@Override
public List<DataDictionary> getPersonTypeList() {
return this.setAndGetPersonRegisterTypeList();
}
public List<DataDictionary> setAndGetPersonRegisterTypeList() {
List<DataDictionary> dataDictionaries;
// 先从Redis缓存中获取值
if (redisUtil.hasKey(BizCommonConstant.PERSON_REGISTER_TYPE_LIST_REDIS_KEY)) {
dataDictionaries = JSONObject.parseArray(redisUtil.get(BizCommonConstant.PERSON_REGISTER_TYPE_LIST_REDIS_KEY).toString(), DataDictionary.class);
return dataDictionaries;
}
// 在同步块内再次检查缓存,以避免多个线程同时查不到缓存时重复查询数据库
synchronized (this) {
if (redisUtil.hasKey(BizCommonConstant.PERSON_REGISTER_TYPE_LIST_REDIS_KEY)) {
dataDictionaries = JSONObject.parseArray(redisUtil.get(BizCommonConstant.PERSON_REGISTER_TYPE_LIST_REDIS_KEY).toString(), DataDictionary.class);
} else {
dataDictionaries = iDataDictionaryService.getByType(PERSON_REGISTER_TYPE);
redisUtil.set(BizCommonConstant.PERSON_REGISTER_TYPE_LIST_REDIS_KEY, JSONObject.toJSONString(dataDictionaries));
}
}
return dataDictionaries;
}
@Override
public List<DataDictionary> getChildList(String type, String group) {
List<DataDictionary> dictionaries = this.initAllDataDictionaryList();
return dictionaries.stream().parallel().filter(d -> d.getType().equals(type) && d.getTypeDesc().equals(group)).collect(Collectors.toList());
}
@Override
public void setAllDataDictionaryList() {
this.initAllDataDictionaryList();
}
@Override
public List<Menu> getDictionaryWithTreeFillId(String type) throws Exception {
List<DataDictionary> dictionaries = this.initAllDataDictionaryList();
List<DataDictionary> temp = dictionaries.stream().parallel().filter(d -> d.getType().equals(type)).collect(Collectors.toList());
return TreeParser.getTree(null, temp, DataDictionary.class.getName(), "getSequenceNbr", 2,
"getName", "getParent", null, "getCode");
}
@Override
public List<DataDictionary> getDictionaryListByType(String type) throws Exception {
List<DataDictionary> dictionaries = this.initAllDataDictionaryList();
return dictionaries.stream().parallel().filter(d -> d.getType().equals(type)).collect(Collectors.toList());
}
public List<DataDictionary> initAllDataDictionaryList() {
List<DataDictionary> dictionaries;
// 使用双重检查锁定
if (redisUtil.hasKey(BizCommonConstant.TCM_ALL_DATA_DICT_REDIS_KEY)) {
String json = redisUtil.get(BizCommonConstant.TCM_ALL_DATA_DICT_REDIS_KEY).toString();
dictionaries = JSONObject.parseArray(json, DataDictionary.class);
return dictionaries;
}
synchronized (this) {
if (redisUtil.hasKey(BizCommonConstant.TCM_ALL_DATA_DICT_REDIS_KEY)) {
String json = redisUtil.get(BizCommonConstant.TCM_ALL_DATA_DICT_REDIS_KEY).toString();
dictionaries = JSONObject.parseArray(json, DataDictionary.class);
} else {
dictionaries = dataDictionaryService.list(new LambdaQueryWrapper<DataDictionary>().eq(BaseEntity::getIsDelete, false));
redisUtil.set(BizCommonConstant.TCM_ALL_DATA_DICT_REDIS_KEY, JSONObject.toJSONString(dictionaries));
}
}
return dictionaries;
}
@Override
public Collection getManagementUnitTree(String orgCode) {
List<LinkedHashMap> companyModels = (List<LinkedHashMap>) redisUtil.get(BizCommonConstant.COMPANY_TREE_REDIS_KEY);
if (ValidationUtil.isEmpty(companyModels)) {
startPlatformTokenService.getToken();
companyModels = equipmentCategoryService.creatTree();
}
if (!ValidationUtil.isEmpty(orgCode)) {
companyModels = findNodesByCondition(companyModels, "orgCode", orgCode, "children");
companyModels = (List<LinkedHashMap>) companyModels.get(0).get("children");
}
return companyModels;
}
companyModels = (List<LinkedHashMap>) companyModels.get(0).get("children");
}
return companyModels;
}
// public Collection getManagementUnitTree2(String orgCode) {
......@@ -630,218 +666,218 @@ public class RegUnitInfoServiceImpl extends BaseService<RegUnitInfoDto, RegUnitI
// return result;
// }
public static List<LinkedHashMap> findNodesByCondition(List<LinkedHashMap> nodes, String conditionName,
String condition, String childName) {
return nodes.stream()
.flatMap(node -> Stream.concat(
node.get(conditionName).equals(condition) ? Stream.of(node) : Stream.empty(),
node.get(childName) != null ? findNodesByCondition((List<LinkedHashMap>) node.get(childName),
conditionName, condition, condition).stream() :
Stream.empty()
))
.collect(Collectors.toList());
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean unitLogOut(String unitCode) {
RegUnitInfo regUnitInfo = this
.getOne(new LambdaQueryWrapper<RegUnitInfo>().eq(RegUnitInfo::getUnitCode, unitCode));
if (regUnitInfo == null) {
return Boolean.FALSE;
}
try {
// 1.删除已经创建的企业信息
if (StringUtils.isNotEmpty(regUnitInfo.getAmosCompanySeq())) {
CompanyModel companyModel = Privilege.companyClient
.seleteOne(Long.parseLong(regUnitInfo.getAmosCompanySeq())).getResult();
if (companyModel != null) {
Privilege.companyClient.deleteCompany(regUnitInfo.getAmosCompanySeq());
}
}
// 2.删除已经创建的管理员账号
FeignClientResult<AgencyUserModel> feignClientResult = Privilege.agencyUserClient
.queryByUserId(regUnitInfo.getAdminUserId());
if (feignClientResult != null) {
Privilege.agencyUserClient.multDeleteUser(regUnitInfo.getAdminUserId());
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
// 3.企业注册表删除
this.remove(new LambdaQueryWrapper<RegUnitInfo>().eq(RegUnitInfo::getUnitCode, unitCode));
// 4.工商信息表删除
regUnitIcService.remove(new LambdaQueryWrapper<RegUnitIc>().eq(RegUnitIc::getUnitCode, unitCode));
// 5.许可信息删除
baseUnitLicenceService
.remove(new LambdaQueryWrapper<BaseUnitLicence>().eq(BaseUnitLicence::getUnitCode, unitCode));
// 6.企业数据信息删除
tzBaseEnterpriseInfoService
.remove(new LambdaQueryWrapper<TzBaseEnterpriseInfo>().eq(TzBaseEnterpriseInfo::getUseCode, unitCode));
// 7.机场单位表信息删除
iOrgUsrService
.remove(new LambdaQueryWrapper<OrgUsr>().eq(OrgUsr::getAmosOrgId, regUnitInfo.getAmosCompanySeq()));
return Boolean.TRUE;
}
@Override
public Boolean checkRepeatAccount(String userName) {
return this.count(new LambdaQueryWrapper<RegUnitInfo>().eq(RegUnitInfo::getAdminLoginName, userName)) > 0;
}
@Override
public Boolean checkRepeatPhone(String phoneNo) {
return this.count(new LambdaQueryWrapper<RegUnitInfo>().eq(RegUnitInfo::getAdminTel, phoneNo)) > 0;
}
@Override
public void updateAdminInfo(JSONObject dataResult) {
RegUnitInfo regUnitInfo = regUnitInfoMapper.selectOne(new QueryWrapper<RegUnitInfo>().eq("admin_user_id", dataResult.get("userId")));
if(!ObjectUtils.isEmpty(regUnitInfo)){
regUnitInfo.setAdminTel(String.valueOf(dataResult.get("mobile")));
regUnitInfo.setAdminName(String.valueOf(dataResult.get("realName")));
regUnitInfoMapper.updateById(regUnitInfo);
}
}
@Override
public Boolean creatQrCode() {
List<TzBaseEnterpriseInfo> tzBaseEnterpriseInfoList = tzBaseEnterpriseInfoMapper.selectList(new QueryWrapper<TzBaseEnterpriseInfo>().isNull("qr_code"));
if (!ObjectUtils.isEmpty(tzBaseEnterpriseInfoList) && tzBaseEnterpriseInfoList.size() > 0) {
for (TzBaseEnterpriseInfo tzBaseEnterpriseInfo : tzBaseEnterpriseInfoList) {
String qrCode = createQRCode(tzBaseEnterpriseInfo.getUseCode());
tzBaseEnterpriseInfoMapper.updateById(tzBaseEnterpriseInfo.setQrCode(qrCode));
}
return true;
} else {
return false;
}
}
@Override
public RegUnitInfoDto adminInfo(String unitCode) {
// 管理员信息
RegUnitInfo regUnitInfo = this.getOne(
new LambdaQueryWrapper<RegUnitInfo>().eq(RegUnitInfo::getUnitCode, unitCode));
RegUnitInfoDto regUnitInfoDto = new RegUnitInfoDto();
if (regUnitInfo != null) {
BeanUtils.copyProperties(regUnitInfo, regUnitInfoDto);
}
regUnitInfoDto.setAdminIdCardPhoto(ObjectUtils.isEmpty(regUnitInfo.getAdminIdCardPhoto()) ? new ArrayList() : JSON.parseArray(regUnitInfo.getAdminIdCardPhoto()));
return regUnitInfoDto;
}
private CompanyModel dealChildCompany(CompanyModel cm) {
cm.setChildren(this.getFilterChild(cm.getChildren() != null ? cm.getChildren() : new ArrayList()));
cm.getChildren().stream().filter(n -> {
CompanyModel c = JSONObject.parseObject(JSON.toJSONString(n), CompanyModel.class);
return !ValidationUtil.isEmpty(CompanyLevelEnum.getEnum(c.getLevel()));
}).map(n -> {
CompanyModel c = JSONObject.parseObject(JSON.toJSONString(n), CompanyModel.class);
return dealChildCompany(c);
}).collect(Collectors.toList());
return cm;
}
private List getFilterChild(Collection children) {
return (List) children.stream().filter(n -> {
CompanyModel c = JSONObject.parseObject(JSON.toJSONString(n), CompanyModel.class);
return !ValidationUtil.isEmpty(CompanyLevelEnum.getEnum(c.getLevel()));
}).map(s -> {
CompanyModel c = JSONObject.parseObject(JSON.toJSONString(s), CompanyModel.class);
c.setChildren(this.getFilterChild(c.getChildren() != null ? c.getChildren() : new ArrayList()));
return c;
}).collect(Collectors.toList());
}
private void createCompanyAndUser(RegUnitInfo regUnitInfo) {
CompanyModel companyInfo = new CompanyModel();
FeignClientResult<AgencyUserModel> userResult = null;
try {
StopWatch watch1 = new StopWatch();
watch1.start();
List<RoleModel> allRoleList = startPlatformTokenService.getAllRole();
watch1.stop();
if(logger.isDebugEnabled()){
logger.debug("平台查询角色接口耗时:==>{}",watch1.getTotalTimeSeconds());
}
List<RoleModel> userRoleList = new ArrayList<>();
List<Long> roleIds = new ArrayList<>();
Set<String> roleNameSet = new HashSet<>();
// 3.1创建公司
companyInfo.setAddress(dealNull2EmptyString(regUnitInfo.getProvince())
+ dealNull2EmptyString(regUnitInfo.getCity()) + dealNull2EmptyString(regUnitInfo.getDistrict())
+ dealNull2EmptyString(regUnitInfo.getStree()) + dealNull2EmptyString(regUnitInfo.getCommunity())
+ dealNull2EmptyString(regUnitInfo.getAddress()));
companyInfo.setAgencyCode("tzs");
companyInfo.setParentId(Long.parseLong(regUnitInfo.getManagementUnitId()));
companyInfo.setLevel("company");
companyInfo.setCompanyName(regUnitInfo.getName());
companyInfo.setCompanyCode(regUnitInfo.getUnitCode());
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(logger.isDebugEnabled()){
logger.debug("创建amos公司耗时:==>{}",watch2.getTotalTimeSeconds());
}
if (companyResult == null || companyResult.getResult() == null) {
throw new BadRequest("单位注册失败");
}
String adminUserName = regUnitInfo.getAdminName();
String loginName = regUnitInfo.getAdminLoginName();
String pwd = regUnitInfo.getAdminLoginPwd();
String adminTel = regUnitInfo.getAdminTel();
// 3.2 创建平台用户
companyInfo = companyResult.getResult();
AgencyUserModel agencyUserModel = new AgencyUserModel();
agencyUserModel.setUserName(loginName);
agencyUserModel.setRealName(adminUserName);
agencyUserModel.setLockStatus("UNLOCK");
agencyUserModel.setPassword(pwd);
agencyUserModel.setRePassword(pwd);
agencyUserModel.setAgencyCode("tzs");
agencyUserModel.setMobile(adminTel);
String unitTypeCode = regUnitInfo.getUnitTypeCode();
// 根据unitTypeCode 获取应用和角色 数据字典配置
String[] units = unitTypeCode.split(",");
Set<String> appCodesSet = new HashSet<>();
Map<Long, List<Long>> roleSeqMap = new HashMap<>();
Map<Long, List<RoleModel>> orgRoles = new HashMap<>();
List<DataDictionary> unitTypeList = setAndGetUnitTypeList();
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.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());
}
});
roleSeqMap.put(companyInfo.getSequenceNbr(), roleIds);
orgRoles.put(companyInfo.getSequenceNbr(), userRoleList);
}
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(logger.isDebugEnabled()){
logger.debug("创建amos人员耗时:==>{}",watch3.getTotalTimeSeconds());
}
if (userResult == null || userResult.getResult() == null) {
throw new BadRequest("单位注册失败");
}
public static List<LinkedHashMap> findNodesByCondition(List<LinkedHashMap> nodes, String conditionName,
String condition, String childName) {
return nodes.stream()
.flatMap(node -> Stream.concat(
node.get(conditionName).equals(condition) ? Stream.of(node) : Stream.empty(),
node.get(childName) != null ? findNodesByCondition((List<LinkedHashMap>) node.get(childName),
conditionName, condition, condition).stream() :
Stream.empty()
))
.collect(Collectors.toList());
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean unitLogOut(String unitCode) {
RegUnitInfo regUnitInfo = this
.getOne(new LambdaQueryWrapper<RegUnitInfo>().eq(RegUnitInfo::getUnitCode, unitCode));
if (regUnitInfo == null) {
return Boolean.FALSE;
}
try {
// 1.删除已经创建的企业信息
if (StringUtils.isNotEmpty(regUnitInfo.getAmosCompanySeq())) {
CompanyModel companyModel = Privilege.companyClient
.seleteOne(Long.parseLong(regUnitInfo.getAmosCompanySeq())).getResult();
if (companyModel != null) {
Privilege.companyClient.deleteCompany(regUnitInfo.getAmosCompanySeq());
}
}
// 2.删除已经创建的管理员账号
FeignClientResult<AgencyUserModel> feignClientResult = Privilege.agencyUserClient
.queryByUserId(regUnitInfo.getAdminUserId());
if (feignClientResult != null) {
Privilege.agencyUserClient.multDeleteUser(regUnitInfo.getAdminUserId());
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
// 3.企业注册表删除
this.remove(new LambdaQueryWrapper<RegUnitInfo>().eq(RegUnitInfo::getUnitCode, unitCode));
// 4.工商信息表删除
regUnitIcService.remove(new LambdaQueryWrapper<RegUnitIc>().eq(RegUnitIc::getUnitCode, unitCode));
// 5.许可信息删除
baseUnitLicenceService
.remove(new LambdaQueryWrapper<BaseUnitLicence>().eq(BaseUnitLicence::getUnitCode, unitCode));
// 6.企业数据信息删除
tzBaseEnterpriseInfoService
.remove(new LambdaQueryWrapper<TzBaseEnterpriseInfo>().eq(TzBaseEnterpriseInfo::getUseCode, unitCode));
// 7.机场单位表信息删除
iOrgUsrService
.remove(new LambdaQueryWrapper<OrgUsr>().eq(OrgUsr::getAmosOrgId, regUnitInfo.getAmosCompanySeq()));
return Boolean.TRUE;
}
@Override
public Boolean checkRepeatAccount(String userName) {
return this.count(new LambdaQueryWrapper<RegUnitInfo>().eq(RegUnitInfo::getAdminLoginName, userName)) > 0;
}
@Override
public Boolean checkRepeatPhone(String phoneNo) {
return this.count(new LambdaQueryWrapper<RegUnitInfo>().eq(RegUnitInfo::getAdminTel, phoneNo)) > 0;
}
@Override
public void updateAdminInfo(JSONObject dataResult) {
RegUnitInfo regUnitInfo = regUnitInfoMapper.selectOne(new QueryWrapper<RegUnitInfo>().eq("admin_user_id", dataResult.get("userId")));
if (!ObjectUtils.isEmpty(regUnitInfo)) {
regUnitInfo.setAdminTel(String.valueOf(dataResult.get("mobile")));
regUnitInfo.setAdminName(String.valueOf(dataResult.get("realName")));
regUnitInfoMapper.updateById(regUnitInfo);
}
}
@Override
public Boolean creatQrCode() {
List<TzBaseEnterpriseInfo> tzBaseEnterpriseInfoList = tzBaseEnterpriseInfoMapper.selectList(new QueryWrapper<TzBaseEnterpriseInfo>().isNull("qr_code"));
if (!ObjectUtils.isEmpty(tzBaseEnterpriseInfoList) && tzBaseEnterpriseInfoList.size() > 0) {
for (TzBaseEnterpriseInfo tzBaseEnterpriseInfo : tzBaseEnterpriseInfoList) {
String qrCode = createQRCode(tzBaseEnterpriseInfo.getUseCode());
tzBaseEnterpriseInfoMapper.updateById(tzBaseEnterpriseInfo.setQrCode(qrCode));
}
return true;
} else {
return false;
}
}
@Override
public RegUnitInfoDto adminInfo(String unitCode) {
// 管理员信息
RegUnitInfo regUnitInfo = this.getOne(
new LambdaQueryWrapper<RegUnitInfo>().eq(RegUnitInfo::getUnitCode, unitCode));
RegUnitInfoDto regUnitInfoDto = new RegUnitInfoDto();
if (regUnitInfo != null) {
BeanUtils.copyProperties(regUnitInfo, regUnitInfoDto);
}
regUnitInfoDto.setAdminIdCardPhoto(ObjectUtils.isEmpty(regUnitInfo.getAdminIdCardPhoto()) ? new ArrayList() : JSON.parseArray(regUnitInfo.getAdminIdCardPhoto()));
return regUnitInfoDto;
}
private CompanyModel dealChildCompany(CompanyModel cm) {
cm.setChildren(this.getFilterChild(cm.getChildren() != null ? cm.getChildren() : new ArrayList()));
cm.getChildren().stream().filter(n -> {
CompanyModel c = JSONObject.parseObject(JSON.toJSONString(n), CompanyModel.class);
return !ValidationUtil.isEmpty(CompanyLevelEnum.getEnum(c.getLevel()));
}).map(n -> {
CompanyModel c = JSONObject.parseObject(JSON.toJSONString(n), CompanyModel.class);
return dealChildCompany(c);
}).collect(Collectors.toList());
return cm;
}
private List getFilterChild(Collection children) {
return (List) children.stream().filter(n -> {
CompanyModel c = JSONObject.parseObject(JSON.toJSONString(n), CompanyModel.class);
return !ValidationUtil.isEmpty(CompanyLevelEnum.getEnum(c.getLevel()));
}).map(s -> {
CompanyModel c = JSONObject.parseObject(JSON.toJSONString(s), CompanyModel.class);
c.setChildren(this.getFilterChild(c.getChildren() != null ? c.getChildren() : new ArrayList()));
return c;
}).collect(Collectors.toList());
}
private void createCompanyAndUser(RegUnitInfo regUnitInfo) {
CompanyModel companyInfo = new CompanyModel();
FeignClientResult<AgencyUserModel> userResult = null;
try {
StopWatch watch1 = new StopWatch();
watch1.start();
List<RoleModel> allRoleList = startPlatformTokenService.getAllRole();
watch1.stop();
if (logger.isDebugEnabled()) {
logger.debug("平台查询角色接口耗时:==>{}", watch1.getTotalTimeSeconds());
}
List<RoleModel> userRoleList = new ArrayList<>();
List<Long> roleIds = new ArrayList<>();
Set<String> roleNameSet = new HashSet<>();
// 3.1创建公司
companyInfo.setAddress(dealNull2EmptyString(regUnitInfo.getProvince())
+ dealNull2EmptyString(regUnitInfo.getCity()) + dealNull2EmptyString(regUnitInfo.getDistrict())
+ dealNull2EmptyString(regUnitInfo.getStree()) + dealNull2EmptyString(regUnitInfo.getCommunity())
+ dealNull2EmptyString(regUnitInfo.getAddress()));
companyInfo.setAgencyCode("tzs");
companyInfo.setParentId(Long.parseLong(regUnitInfo.getManagementUnitId()));
companyInfo.setLevel("company");
companyInfo.setCompanyName(regUnitInfo.getName());
companyInfo.setCompanyCode(regUnitInfo.getUnitCode());
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 (logger.isDebugEnabled()) {
logger.debug("创建amos公司耗时:==>{}", watch2.getTotalTimeSeconds());
}
if (companyResult == null || companyResult.getResult() == null) {
throw new BadRequest("单位注册失败");
}
String adminUserName = regUnitInfo.getAdminName();
String loginName = regUnitInfo.getAdminLoginName();
String pwd = regUnitInfo.getAdminLoginPwd();
String adminTel = regUnitInfo.getAdminTel();
// 3.2 创建平台用户
companyInfo = companyResult.getResult();
AgencyUserModel agencyUserModel = new AgencyUserModel();
agencyUserModel.setUserName(loginName);
agencyUserModel.setRealName(adminUserName);
agencyUserModel.setLockStatus("UNLOCK");
agencyUserModel.setPassword(pwd);
agencyUserModel.setRePassword(pwd);
agencyUserModel.setAgencyCode("tzs");
agencyUserModel.setMobile(adminTel);
String unitTypeCode = regUnitInfo.getUnitTypeCode();
// 根据unitTypeCode 获取应用和角色 数据字典配置
String[] units = unitTypeCode.split(",");
Set<String> appCodesSet = new HashSet<>();
Map<Long, List<Long>> roleSeqMap = new HashMap<>();
Map<Long, List<RoleModel>> orgRoles = new HashMap<>();
List<DataDictionary> unitTypeList = setAndGetUnitTypeList();
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.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());
}
});
roleSeqMap.put(companyInfo.getSequenceNbr(), roleIds);
orgRoles.put(companyInfo.getSequenceNbr(), userRoleList);
}
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 (logger.isDebugEnabled()) {
logger.debug("创建amos人员耗时:==>{}", watch3.getTotalTimeSeconds());
}
if (userResult == null || userResult.getResult() == null) {
throw new BadRequest("单位注册失败");
}
// //同步创建为当前注册管理员添加两员配备人员信息
// if (userResult.getStatus() == 200) {
// TzsUserInfo tzsUserInfo = new TzsUserInfo();
......@@ -856,152 +892,152 @@ public class RegUnitInfoServiceImpl extends BaseService<RegUnitInfoDto, RegUnitI
// tzsUserInfo.setAmosUserName(regUnitInfo.getAdminLoginName());
// tzsUserInfoService.save(tzsUserInfo);
// }
regUnitInfo.setAdminUserId(userResult.getResult().getUserId());
regUnitInfo.setAmosCompanySeq(companyInfo.getSequenceNbr().toString());
// 3.3 org_user 创建组织机构
OrgUsr org = new OrgUsr();
org.setBizOrgCode(TreeParser.genTreeCode());
org.setBizOrgType(CommonConstant.BIZ_ORG_TYPE_COMPANY);
org.setBizOrgName(regUnitInfo.getName());
org.setRecDate(new Date());
org.setRecUserId(userResult.getResult().getUserId());
org.setRecUserName(userResult.getResult().getRealName());
org.setAmosOrgId(companyInfo.getSequenceNbr() + "");
org.setAmosOrgCode(companyInfo.getOrgCode());
iOrgUsrService.save(org);
} catch (Exception e) {
// 删除已经创建的 企业信息
if (companyInfo != null && companyInfo.getSequenceNbr() != null) {
Privilege.companyClient.deleteCompany(companyInfo.getSequenceNbr() + "");
}
if (userResult != null && userResult.getResult() != null
&& StringUtils.isNotEmpty(userResult.getResult().getUserId())) {
Privilege.agencyUserClient.multDeleteUser(userResult.getResult().getUserId());
}
logger.error(e.getMessage(),e);
throw new RuntimeException(e.getMessage());
}
}
public AgencyUserModel createUser(AccountDto dto,String type) {
FeignClientResult<AgencyUserModel> userResult = null;
try {
List<RoleModel> allRoleList = startPlatformTokenService.getAllRole();
List<RoleModel> userRoleList = new ArrayList<>();
List<Long> roleIds = new ArrayList<>();
Set<String> roleNameSet = new HashSet<>();
// 3.2 创建平台用户
AgencyUserModel agencyUserModel = new AgencyUserModel();
agencyUserModel.setUserName(dto.getLoginName());
agencyUserModel.setRealName(dto.getAdminUserName());
agencyUserModel.setLockStatus("UNLOCK");
agencyUserModel.setPassword(dto.getPwd());
agencyUserModel.setRePassword(dto.getPwd());
agencyUserModel.setAgencyCode("tzs");
agencyUserModel.setMobile(dto.getAdminTel());
// 根据unitTypeCode 获取应用和角色 数据字典配置
String[] units = dto.getUnitTypeCode().split(",");
Set<String> appCodesSet = new HashSet<>();
Map<Long, List<Long>> roleSeqMap = new HashMap<>();
Map<Long, List<RoleModel>> orgRoles = new HashMap<>();
List<DataDictionary> unitTypeList = EnterpriseEnums.GR_ZT.getType().equals(type)? setAndGetPersonRegisterTypeList() : setAndGetUnitTypeList();
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.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());
}
});
roleSeqMap.put(dto.getCompanyId(), roleIds);
orgRoles.put(dto.getCompanyId(), userRoleList);
}
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(logger.isDebugEnabled()){
logger.debug("创建amos人员耗时:==>{}",watch3.getTotalTimeSeconds());
}
if (userResult == null || userResult.getResult() == null) {
throw new BadRequest("单位注册失败");
}
return userResult.getResult();
} catch (Exception e) {
// 删除已经创建的 企业信息
if (dto.getCompanyId() != null) {
Privilege.companyClient.deleteCompany(dto.getCompanyId() + "");
}
if (userResult != null && userResult.getResult() != null
&& StringUtils.isNotEmpty(userResult.getResult().getUserId())) {
Privilege.agencyUserClient.multDeleteUser(userResult.getResult().getUserId());
}
log.error(e.getMessage(),e);
throw new RuntimeException(e.getMessage());
}
}
@Override
public String submit(Long pageId, String taskId, String planInstanceId, String topic, String tableName, Map<String, Object> objectMap) throws Exception {
String roleId = "";
// 根据指标taskId查询
FeignClientResult<Map<String, Object>> taskMessage = idxFeignService.getTaskId(taskId);
logger.info("idx返回任务信息,{}", JSONObject.toJSONString(taskMessage));
if ("200".equals(String.valueOf(taskMessage.getStatus())) && !ObjectUtils.isEmpty(taskMessage)) {
Object id = taskMessage.getResult().get("processInstanceId");
// 根据processInstanceId查询workFlow服务对应的taskId
JSONObject flowTask = workflowFeignService.getTaskId(String.valueOf(id));
logger.info("workFlow返回任务id,{}", JSONObject.toJSONString(flowTask));
if (!ObjectUtils.isEmpty(flowTask) && !ObjectUtils.isEmpty(flowTask.get("data"))) {
JSONObject data = JSON.parseObject(JSON.toJSONString(flowTask.get("data")));
Object id1 = data.get("id");
// 根据taskId查询流程节点绑定角色id
JSONObject result = workflowFeignService.getRoleId(String.valueOf(id1));
logger.info("workFlow返回角色id,{}", JSONObject.toJSONString(result));
if (!ObjectUtils.isEmpty(result) && !ObjectUtils.isEmpty(result.get("result"))) {
JSONObject result1 = JSON.parseObject(JSON.toJSONString(result.get("result")));
roleId = String.valueOf(result1.get("roleId"));
}
}
}
// 企业下所有用户(上送工作流企业整改用户参数)
ArrayList<String> flow = new ArrayList<>();
// 企业下所有用户(更新任务)
ArrayList<String> task = new ArrayList<>();
// 查询第一个填报信息获取企业
String companyName = "";
// 查询流程第一个节点所选择的执行企业信息
FeignClientResult<JSONObject> firstTask = idxFeignService.getFirstTask(taskId);
logger.info("idx返回第一个节点任务信息,{}", JSONObject.toJSONString(firstTask));
if (!ObjectUtils.isEmpty(firstTask)) {
companyName = String.valueOf(firstTask.getResult().get("CHECKED_COMPANY"));
}
if (!ObjectUtils.isEmpty(objectMap)) {
FeignClientResult<CompanyModel> companyModelFeignClientResult = Privilege.companyClient.queryByCompanyName(companyName);
if (!ObjectUtils.isEmpty(companyModelFeignClientResult.getResult()) && !ObjectUtils.isEmpty(companyModelFeignClientResult.getResult().getOrgCode())) {
//FeignClientResult<Set<AgencyUserModel>> setFeignClientResult = Privilege.agencyUserClient.queryByOrgCode(companyModelFeignClientResult.getResult().getOrgCode(), null);
Long sequenceNbr = companyModelFeignClientResult.getResult().getSequenceNbr();
// 查询企业对应角色下的用户
logger.info("向privilege发送参数roleId,companyId,{},{}", roleId, sequenceNbr);
FeignClientResult<List<AgencyUserModel>> listFeignClientResult = Privilege.agencyUserClient.queryByCompanyRoles(sequenceNbr, roleId, null, null);
logger.info("privilege返回用户信息,{}", JSONObject.toJSONString(listFeignClientResult));
if (!ObjectUtils.isEmpty(listFeignClientResult) && !ObjectUtils.isEmpty(listFeignClientResult.getResult())){
listFeignClientResult.getResult().forEach(item ->{
flow.add(item.getUserName());
task.add(item.getUserId());
});
}else {
throw new BadRequest("没有对应企业整改执行人!");
}
regUnitInfo.setAdminUserId(userResult.getResult().getUserId());
regUnitInfo.setAmosCompanySeq(companyInfo.getSequenceNbr().toString());
// 3.3 org_user 创建组织机构
OrgUsr org = new OrgUsr();
org.setBizOrgCode(TreeParser.genTreeCode());
org.setBizOrgType(CommonConstant.BIZ_ORG_TYPE_COMPANY);
org.setBizOrgName(regUnitInfo.getName());
org.setRecDate(new Date());
org.setRecUserId(userResult.getResult().getUserId());
org.setRecUserName(userResult.getResult().getRealName());
org.setAmosOrgId(companyInfo.getSequenceNbr() + "");
org.setAmosOrgCode(companyInfo.getOrgCode());
iOrgUsrService.save(org);
} catch (Exception e) {
// 删除已经创建的 企业信息
if (companyInfo != null && companyInfo.getSequenceNbr() != null) {
Privilege.companyClient.deleteCompany(companyInfo.getSequenceNbr() + "");
}
if (userResult != null && userResult.getResult() != null
&& StringUtils.isNotEmpty(userResult.getResult().getUserId())) {
Privilege.agencyUserClient.multDeleteUser(userResult.getResult().getUserId());
}
logger.error(e.getMessage(), e);
throw new RuntimeException(e.getMessage());
}
}
public AgencyUserModel createUser(AccountDto dto, String type) {
FeignClientResult<AgencyUserModel> userResult = null;
try {
List<RoleModel> allRoleList = startPlatformTokenService.getAllRole();
List<RoleModel> userRoleList = new ArrayList<>();
List<Long> roleIds = new ArrayList<>();
Set<String> roleNameSet = new HashSet<>();
// 3.2 创建平台用户
AgencyUserModel agencyUserModel = new AgencyUserModel();
agencyUserModel.setUserName(dto.getLoginName());
agencyUserModel.setRealName(dto.getAdminUserName());
agencyUserModel.setLockStatus("UNLOCK");
agencyUserModel.setPassword(dto.getPwd());
agencyUserModel.setRePassword(dto.getPwd());
agencyUserModel.setAgencyCode("tzs");
agencyUserModel.setMobile(dto.getAdminTel());
// 根据unitTypeCode 获取应用和角色 数据字典配置
String[] units = dto.getUnitTypeCode().split(",");
Set<String> appCodesSet = new HashSet<>();
Map<Long, List<Long>> roleSeqMap = new HashMap<>();
Map<Long, List<RoleModel>> orgRoles = new HashMap<>();
List<DataDictionary> unitTypeList = EnterpriseEnums.GR_ZT.getType().equals(type) ? setAndGetPersonRegisterTypeList() : setAndGetUnitTypeList();
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.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());
}
});
roleSeqMap.put(dto.getCompanyId(), roleIds);
orgRoles.put(dto.getCompanyId(), userRoleList);
}
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 (logger.isDebugEnabled()) {
logger.debug("创建amos人员耗时:==>{}", watch3.getTotalTimeSeconds());
}
if (userResult == null || userResult.getResult() == null) {
throw new BadRequest("单位注册失败");
}
return userResult.getResult();
} catch (Exception e) {
// 删除已经创建的 企业信息
if (dto.getCompanyId() != null) {
Privilege.companyClient.deleteCompany(dto.getCompanyId() + "");
}
if (userResult != null && userResult.getResult() != null
&& StringUtils.isNotEmpty(userResult.getResult().getUserId())) {
Privilege.agencyUserClient.multDeleteUser(userResult.getResult().getUserId());
}
log.error(e.getMessage(), e);
throw new RuntimeException(e.getMessage());
}
}
@Override
public String submit(Long pageId, String taskId, String planInstanceId, String topic, String tableName, Map<String, Object> objectMap) throws Exception {
String roleId = "";
// 根据指标taskId查询
FeignClientResult<Map<String, Object>> taskMessage = idxFeignService.getTaskId(taskId);
logger.info("idx返回任务信息,{}", JSONObject.toJSONString(taskMessage));
if ("200".equals(String.valueOf(taskMessage.getStatus())) && !ObjectUtils.isEmpty(taskMessage)) {
Object id = taskMessage.getResult().get("processInstanceId");
// 根据processInstanceId查询workFlow服务对应的taskId
JSONObject flowTask = workflowFeignService.getTaskId(String.valueOf(id));
logger.info("workFlow返回任务id,{}", JSONObject.toJSONString(flowTask));
if (!ObjectUtils.isEmpty(flowTask) && !ObjectUtils.isEmpty(flowTask.get("data"))) {
JSONObject data = JSON.parseObject(JSON.toJSONString(flowTask.get("data")));
Object id1 = data.get("id");
// 根据taskId查询流程节点绑定角色id
JSONObject result = workflowFeignService.getRoleId(String.valueOf(id1));
logger.info("workFlow返回角色id,{}", JSONObject.toJSONString(result));
if (!ObjectUtils.isEmpty(result) && !ObjectUtils.isEmpty(result.get("result"))) {
JSONObject result1 = JSON.parseObject(JSON.toJSONString(result.get("result")));
roleId = String.valueOf(result1.get("roleId"));
}
}
}
// 企业下所有用户(上送工作流企业整改用户参数)
ArrayList<String> flow = new ArrayList<>();
// 企业下所有用户(更新任务)
ArrayList<String> task = new ArrayList<>();
// 查询第一个填报信息获取企业
String companyName = "";
// 查询流程第一个节点所选择的执行企业信息
FeignClientResult<JSONObject> firstTask = idxFeignService.getFirstTask(taskId);
logger.info("idx返回第一个节点任务信息,{}", JSONObject.toJSONString(firstTask));
if (!ObjectUtils.isEmpty(firstTask)) {
companyName = String.valueOf(firstTask.getResult().get("CHECKED_COMPANY"));
}
if (!ObjectUtils.isEmpty(objectMap)) {
FeignClientResult<CompanyModel> companyModelFeignClientResult = Privilege.companyClient.queryByCompanyName(companyName);
if (!ObjectUtils.isEmpty(companyModelFeignClientResult.getResult()) && !ObjectUtils.isEmpty(companyModelFeignClientResult.getResult().getOrgCode())) {
//FeignClientResult<Set<AgencyUserModel>> setFeignClientResult = Privilege.agencyUserClient.queryByOrgCode(companyModelFeignClientResult.getResult().getOrgCode(), null);
Long sequenceNbr = companyModelFeignClientResult.getResult().getSequenceNbr();
// 查询企业对应角色下的用户
logger.info("向privilege发送参数roleId,companyId,{},{}", roleId, sequenceNbr);
FeignClientResult<List<AgencyUserModel>> listFeignClientResult = Privilege.agencyUserClient.queryByCompanyRoles(sequenceNbr, roleId, null, null);
logger.info("privilege返回用户信息,{}", JSONObject.toJSONString(listFeignClientResult));
if (!ObjectUtils.isEmpty(listFeignClientResult) && !ObjectUtils.isEmpty(listFeignClientResult.getResult())) {
listFeignClientResult.getResult().forEach(item -> {
flow.add(item.getUserName());
task.add(item.getUserId());
});
} else {
throw new BadRequest("没有对应企业整改执行人!");
}
// if (!ObjectUtils.isEmpty(setFeignClientResult)) {
// setFeignClientResult.getResult().forEach(item -> {
......@@ -1009,16 +1045,16 @@ public class RegUnitInfoServiceImpl extends BaseService<RegUnitInfoDto, RegUnitI
// task.add(item.getUserId());
// });
// }
}
}
String userIds = String.join(",", flow);
String userIdsTask = String.join(",", task);
// 添加被检查企业下的人员id
objectMap.put("CHECKED_COMPANY_USERS", userIds);
objectMap.put("CHECKED_COMPANY_USER_ids", userIdsTask);
// 表单信息提交
FeignClientResult<String> submit = idxFeignService.submit(pageId, taskId, planInstanceId,"CHECKED_COMPANY_USER_ids", topic, tableName, objectMap);
// if ("200".equals(String.valueOf(submit.getStatus()))) {
}
}
String userIds = String.join(",", flow);
String userIdsTask = String.join(",", task);
// 添加被检查企业下的人员id
objectMap.put("CHECKED_COMPANY_USERS", userIds);
objectMap.put("CHECKED_COMPANY_USER_ids", userIdsTask);
// 表单信息提交
FeignClientResult<String> submit = idxFeignService.submit(pageId, taskId, planInstanceId, "CHECKED_COMPANY_USER_ids", topic, tableName, objectMap);
// if ("200".equals(String.valueOf(submit.getStatus()))) {
// JSONObject jsonObject = new JSONObject();
// jsonObject.put("title", "企业整改");
// jsonObject.put("userIds", userIdsTask);
......@@ -1028,27 +1064,28 @@ public class RegUnitInfoServiceImpl extends BaseService<RegUnitInfoDto, RegUnitI
// //logger.info("idx执行任务更新任务返回参数,{}", JSONObject.toJSONString(jsonObjectFeignClientResult));
//
// }
return "ok";
}
/***
* idx通用提交接口为异步,解决任务还未创建成功时执行更新失败
* @param taskId
* @param object
* @throws InterruptedException
*/
void updateAmosTask(String taskId, JSONObject object) throws InterruptedException {
Thread.sleep(1000*2);
FeignClientResult<JSONObject> jsonObjectFeignClientResult = idxFeignService.updateAmosTask(taskId, object);
logger.info("idx执行任务更新任务返回参数,{}", JSONObject.toJSONString(jsonObjectFeignClientResult));
}
private String dealNull2EmptyString(String t) {
return StringUtils.isEmpty(t) ? "" : t;
}
@Override
public List<DataDictionary> getXkItemList(String type) {
List<DataDictionary> dictionaries = this.initAllDataDictionaryList();
return dictionaries.stream().parallel().filter(d->("XK-"+type).equals(d.getExtend())).collect(Collectors.toList());
}
return "ok";
}
/***
* idx通用提交接口为异步,解决任务还未创建成功时执行更新失败
* @param taskId
* @param object
* @throws InterruptedException
*/
void updateAmosTask(String taskId, JSONObject object) throws InterruptedException {
Thread.sleep(1000 * 2);
FeignClientResult<JSONObject> jsonObjectFeignClientResult = idxFeignService.updateAmosTask(taskId, object);
logger.info("idx执行任务更新任务返回参数,{}", JSONObject.toJSONString(jsonObjectFeignClientResult));
}
private String dealNull2EmptyString(String t) {
return StringUtils.isEmpty(t) ? "" : t;
}
@Override
public List<DataDictionary> getXkItemList(String type) {
List<DataDictionary> dictionaries = this.initAllDataDictionaryList();
return dictionaries.stream().parallel().filter(d -> ("XK-" + type).equals(d.getExtend())).collect(Collectors.toList());
}
}
\ 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