Commit 2c502cf6 authored by tianbo's avatar tianbo

feat(jg): 调整产权单位信息查询逻辑并支持新单位类型

- 修改单位信息查询方法,新增支持 TCM 单位类型参数 - 更新多个控制器和服务实现中的字段映射配置 - 新增 TCM 单位信息相关查询接口和实现 - 调整字段映射注解以支持第二个参数值传递 - 优化安装告知与变更登记中产权单位信息处理逻辑 - 删除旧的单位信用代码查询方法及相关冗余代码 - 增加对单位信息不存在时的自动保存机制 - 统一使用 queryTcmUnitInfoBySeq 方法兼容原始ID和序列号查询 - 更新 DTO 类型属性命名以匹配新的数据结构 - 引入 TcmUnitTypeEnum 枚举提升代码可读性和维护性
parent 6987374a
...@@ -40,5 +40,11 @@ public @interface FieldMapping { ...@@ -40,5 +40,11 @@ public @interface FieldMapping {
// 是否替换整个参数 // 是否替换整个参数
boolean replaceParam() default false; boolean replaceParam() default false;
// 第二个参数的固定值(可选)
String secondParamValue() default "";
// 第二个参数类型(可选)
Class<?> secondParamType() default String.class;
} }
} }
...@@ -24,6 +24,15 @@ public @interface ResultFieldMapping { ...@@ -24,6 +24,15 @@ public @interface ResultFieldMapping {
String queryMethod(); String queryMethod();
// 查询参数类型(默认String) // 查询参数类型(默认String)
Class<?> queryParamType() default String.class; Class<?> queryParamType() default String.class;
// 新增:第二个参数的源字段(可选)
String secondSourceField() default "";
// 新增:第二个参数的类型(可选)
Class<?> secondQueryParamType() default String.class;
// 新增:固定的第二个参数值(可选)
String secondParamValue() default "";
} }
} }
...@@ -12,6 +12,7 @@ import org.aspectj.lang.annotation.Aspect; ...@@ -12,6 +12,7 @@ import org.aspectj.lang.annotation.Aspect;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.Method; import java.lang.reflect.Method;
...@@ -77,11 +78,23 @@ public class FieldMappingAspect { ...@@ -77,11 +78,23 @@ public class FieldMappingAspect {
private void processSingleMapping(Object[] args, FieldMapping.FieldMap mapping) { private void processSingleMapping(Object[] args, FieldMapping.FieldMap mapping) {
// 使用缓存获取方法 // 使用缓存获取方法
MethodKey methodKey = new MethodKey( MethodKey methodKey;
if (!StringUtils.isEmpty(mapping.secondParamValue())) {
// 如果有第二个参数值,则创建包含两个参数类型的MethodKey
methodKey = new MethodKey(
mapping.serviceClass(),
mapping.queryMethod(),
mapping.queryParamType(),
mapping.secondParamType()
);
} else {
// 原有逻辑:只包含一个参数类型
methodKey = new MethodKey(
mapping.serviceClass(), mapping.serviceClass(),
mapping.queryMethod(), mapping.queryMethod(),
mapping.queryParamType() mapping.queryParamType()
); );
}
try { try {
if (args.length <= mapping.paramIndex()) return; if (args.length <= mapping.paramIndex()) return;
...@@ -105,7 +118,15 @@ public class FieldMappingAspect { ...@@ -105,7 +118,15 @@ public class FieldMappingAspect {
Object service = applicationContext.getBean(mapping.serviceClass()); Object service = applicationContext.getBean(mapping.serviceClass());
Method queryMethod = METHOD_CACHE.get(methodKey); Method queryMethod = METHOD_CACHE.get(methodKey);
Object convertedValue = convertType(sourceValue, mapping.queryParamType()); Object convertedValue = convertType(sourceValue, mapping.queryParamType());
Object result = queryMethod.invoke(service, convertedValue); Object result;
if (!StringUtils.isEmpty(mapping.secondParamValue()) && queryMethod.getParameterCount() == 2) {
// 如果配置了第二个参数值且方法接受两个参数,则调用两个参数的方法
Object secondParamValue = convertType(mapping.secondParamValue(), mapping.secondParamType());
result = queryMethod.invoke(service, convertedValue, secondParamValue);
} else {
// 原有逻辑:单个参数
result = queryMethod.invoke(service, convertedValue);
}
// 设置目标字段 // 设置目标字段
if (mapping.replaceParam()) { if (mapping.replaceParam()) {
...@@ -307,11 +328,23 @@ public class FieldMappingAspect { ...@@ -307,11 +328,23 @@ public class FieldMappingAspect {
for (ResultFieldMapping.ResultFieldMap mapping : resultFieldMaps) { for (ResultFieldMapping.ResultFieldMap mapping : resultFieldMaps) {
try { try {
// 使用缓存获取方法 // 使用缓存获取方法
MethodKey methodKey = new MethodKey( MethodKey methodKey;
if (!StringUtils.isEmpty(mapping.secondParamValue())) {
// 如果有第二个参数值,则创建包含两个参数类型的MethodKey
methodKey = new MethodKey(
mapping.serviceClass(),
mapping.queryMethod(),
mapping.queryParamType(),
mapping.secondQueryParamType()
);
} else {
// 原有逻辑:只包含一个参数类型
methodKey = new MethodKey(
mapping.serviceClass(), mapping.serviceClass(),
mapping.queryMethod(), mapping.queryMethod(),
mapping.queryParamType() mapping.queryParamType()
); );
}
// 获取源字段值 // 获取源字段值
Object sourceFieldValue = getNestedFieldValue(item, mapping.sourceField()); Object sourceFieldValue = getNestedFieldValue(item, mapping.sourceField());
...@@ -323,8 +356,20 @@ public class FieldMappingAspect { ...@@ -323,8 +356,20 @@ public class FieldMappingAspect {
// 调用服务查询 // 调用服务查询
Object service = applicationContext.getBean(mapping.serviceClass()); Object service = applicationContext.getBean(mapping.serviceClass());
Method method = METHOD_CACHE.get(methodKey); Method method = METHOD_CACHE.get(methodKey);
Object targetFieldValue = method.invoke(service, convertedValue); Object targetFieldValue;
if (method.getParameterCount() == 1) {
// 原有逻辑:单个参数
targetFieldValue = method.invoke(service, convertedValue);
} else if (method.getParameterCount() == 2) {
// 新增逻辑:两个参数
// 获取第二个参数值
Object secondParamValue = getSecondParamValue(item, mapping);
Object convertedSecondValue = convertType(secondParamValue, mapping.secondQueryParamType());
targetFieldValue = method.invoke(service, convertedValue, convertedSecondValue);
} else {
// 其他情况抛出异常或处理
throw new UnsupportedOperationException("Unsupported number of parameters: " + method.getParameterCount());
}
// 设置名称值 // 设置名称值
setNestedFieldValue(item, mapping.targetField(), targetFieldValue); setNestedFieldValue(item, mapping.targetField(), targetFieldValue);
} catch (Exception e) { } catch (Exception e) {
...@@ -333,6 +378,25 @@ public class FieldMappingAspect { ...@@ -333,6 +378,25 @@ public class FieldMappingAspect {
} }
} }
/**
* 获取第二个参数值
* @param item 当前处理的对象
* @param mapping 字段映射配置
* @return 第二个参数值
*/
private Object getSecondParamValue(Object item, ResultFieldMapping.ResultFieldMap mapping) throws Exception {
// 如果配置了固定的第二个参数值,则直接返回该值
if (!StringUtils.isEmpty(mapping.secondParamValue())) {
return mapping.secondParamValue();
}
// 如果配置了第二个源字段,则从对象中获取该字段的值
if (!StringUtils.isEmpty(mapping.secondSourceField())) {
return getNestedFieldValue(item, mapping.secondSourceField());
}
// 默认返回null
return null;
}
// 缓存方法内部类 // 缓存方法内部类
private static class MethodKey { private static class MethodKey {
final Class<?> clazz; final Class<?> clazz;
......
package com.yeejoin.amos.boot.biz.common.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum TcmUnitTypeEnum {
CQ("产权单位", "CQ"),
JY("检验单位", "JY"),
JC("检测单位", "JC"),
ZZ("制造单位", "ZZ"),
SJ("设计单位", "SJ"),
WB("维保单位", "WB"),
AGW("安装改造维修单位", "AGW"),
SY("使用单位", "SY");
private final String name;
private final String code;
}
...@@ -96,7 +96,7 @@ public class JgInstallationNoticeDto extends BaseDto { ...@@ -96,7 +96,7 @@ public class JgInstallationNoticeDto extends BaseDto {
private Date installEndDate; private Date installEndDate;
@ApiModelProperty(value = "产权单位id") @ApiModelProperty(value = "产权单位id")
private String propertyUnitId; private String propertyUnitSeq;
@ApiModelProperty(value = "产权单位") @ApiModelProperty(value = "产权单位")
private String propertyUnitName; private String propertyUnitName;
......
...@@ -327,8 +327,6 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> { ...@@ -327,8 +327,6 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
List<Map<String, Object>> getUnitInfoListByType(String type); List<Map<String, Object>> getUnitInfoListByType(String type);
String queryUnitCreditCodeBySeq(String unitSeq);
String queryUnitNameByCreditCode(String unitCreditCode); String queryUnitNameByCreditCode(String unitCreditCode);
List<CountDto> countBizNumAfterUseRegBatchEquip(@Param("records") List<String> records); List<CountDto> countBizNumAfterUseRegBatchEquip(@Param("records") List<String> records);
...@@ -360,5 +358,23 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> { ...@@ -360,5 +358,23 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
List<Map<String, String>> queryRecentlyReceiveCompanyCode(String record); List<Map<String, String>> queryRecentlyReceiveCompanyCode(String record);
Integer countEquipInUseTimesForXaElevator(String record); Integer countEquipInUseTimesForXaElevator(String record);
// 产权单位调整为可输入或选择--开始
List<Map<String, Object>> getTcmUnitListByType(@Param("unitType")String unitType, @Param("unitName")String name);
void addTcmUnitInfo(Map<String, String> tcmUnitInfoMap);
/**
* 根据单位seq查询单位信息
* 首先根据original_id查询(兼容旧数据),如果没查到则根据sequence_nbr查询
*
* @param unitSeq 单位seq
* @param unitType 单位类型
* @return 单位信息map
*/
Map<String, String> queryTcmUnitInfoBySeq(@Param("unitSeq") String unitSeq, @Param("unitType") String unitType);
String queryTcmUnitSeqByCreditCode(@Param("unitCreditCode") String unitCreditCode, @Param("unitType") String unitType);
// 产权单位调整为可输入或选择--结束
} }
...@@ -2846,13 +2846,6 @@ ...@@ -2846,13 +2846,6 @@
<select id="queryCompanyByCode" resultType="com.yeejoin.amos.boot.biz.common.bo.CompanyBo"> <select id="queryCompanyByCode" resultType="com.yeejoin.amos.boot.biz.common.bo.CompanyBo">
select sequence_nbr, org_code, company_name, company_code from privilege_company where company_code = #{companyCode} limit 1 select sequence_nbr, org_code, company_name, company_code from privilege_company where company_code = #{companyCode} limit 1
</select> </select>
<select id="queryUnitCreditCodeBySeq" resultType="java.lang.String">
select
use_unit_code
from
tz_base_enterprise_info
where sequence_nbr = #{unitSeq}
</select>
<select id="queryUnitNameByCreditCode" resultType="java.lang.String"> <select id="queryUnitNameByCreditCode" resultType="java.lang.String">
select use_unit from tz_base_enterprise_info where use_unit_code = #{unitCreditCode} select use_unit from tz_base_enterprise_info where use_unit_code = #{unitCreditCode}
</select> </select>
...@@ -3396,4 +3389,57 @@ ...@@ -3396,4 +3389,57 @@
) )
GROUP BY record GROUP BY record
</select> </select>
<select id="getTcmUnitListByType" resultType="java.util.Map">
select
a.sequence_nbr as useCode,
CASE
WHEN original_type = '个人主体'
THEN CONCAT(unit_name, '_', SUBSTRING(unit_code, LENGTH(unit_code) - 3, 4))
ELSE unit_name
END AS useUnit,
a.unit_type as unitType
from
tzs_tcm_unit_info a
where
a.is_delete = 0
<if test="unitName != null and unitName != ''">
and unit_name like CONCAT('%', #{unitName}, '%')
</if>
<if test="unitType != null and unitType != ''">
and unit_type in
<foreach item="item" index="index" collection="unitType.split(',')" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</select>
<insert id="addTcmUnitInfo">
insert into tzs_tcm_unit_info (sequence_nbr, unit_name, unit_code, unit_type, create_date) values (#{sequenceNbr} ,#{unitName}, #{unitCode}, #{unitType}, #{createDate});
</insert>
<select id="queryTcmUnitInfoBySeq" resultType="java.util.Map">
select
a.sequence_nbr as sequenceNbr,
a.unit_code as unitCode,
a.unit_name as unitName,
CONCAT(a.unit_code, '_', a.unit_name) AS unitCodeAndName
from
tzs_tcm_unit_info a
where
(a.original_id = #{unitSeq} or a.sequence_nbr = #{unitSeq})
and a.is_delete = 0
<if test="unitType != null and unitType != ''">
and a.unit_type = #{unitType}
</if>
order by a.original_id nulls last
limit 1
</select>
<select id="queryTcmUnitSeqByCreditCode" resultType="java.lang.String">
select sequence_nbr seq from tzs_tcm_unit_info where unit_code = #{unitCreditCode}
<if test="unitType != null and unitType != ''">
and unit_type = #{unitType}
</if>
</select>
</mapper> </mapper>
...@@ -83,7 +83,9 @@ public class BizDataChangeController extends BaseController { ...@@ -83,7 +83,9 @@ public class BizDataChangeController extends BaseController {
paramIndex = 4, paramIndex = 4,
targetField = "ESTATE_UNIT_CREDIT_CODE", targetField = "ESTATE_UNIT_CREDIT_CODE",
serviceClass = CommonServiceImpl.class, serviceClass = CommonServiceImpl.class,
queryMethod = "queryUnitCreditCodeBySeq") queryMethod = "queryTcmUnitCreditCodeBySeq",
secondParamValue = "CQ"
)
}) })
public ResponseModel<String> saveV2(@ApiParam(value = "设备或者装置唯一标识") @RequestParam String bizId, public ResponseModel<String> saveV2(@ApiParam(value = "设备或者装置唯一标识") @RequestParam String bizId,
@ApiParam(required = true, value = "单据编号或者record") @RequestParam String applyNo, @ApiParam(required = true, value = "单据编号或者record") @RequestParam String applyNo,
......
...@@ -409,13 +409,17 @@ public class CommonController extends BaseController { ...@@ -409,13 +409,17 @@ public class CommonController extends BaseController {
paramIndex = 1, paramIndex = 1,
targetField = "notice.estateUnitName", targetField = "notice.estateUnitName",
serviceClass = CommonServiceImpl.class, serviceClass = CommonServiceImpl.class,
queryMethod = "queryUnitCreditInfoBySeq"), queryMethod = "queryTcmUnitCreditCodeAndNameBySeq",
secondParamValue = "CQ"
),
@FieldMapping.FieldMap( @FieldMapping.FieldMap(
sourceField = "notice.propertyUnitSeq", sourceField = "notice.propertyUnitSeq",
paramIndex = 1, paramIndex = 1,
targetField = "notice.propertyUnitName", targetField = "notice.propertyUnitName",
serviceClass = CommonServiceImpl.class, serviceClass = CommonServiceImpl.class,
queryMethod = "queryUnitCreditInfoBySeq"), queryMethod = "queryTcmUnitCreditCodeAndNameBySeq",
secondParamValue = "CQ"
),
@FieldMapping.FieldMap( @FieldMapping.FieldMap(
sourceField = "notice.useUnitSeq", sourceField = "notice.useUnitSeq",
paramIndex = 1, paramIndex = 1,
...@@ -872,7 +876,14 @@ public class CommonController extends BaseController { ...@@ -872,7 +876,14 @@ public class CommonController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "POST", value = "使用登记表生成", notes = "使用登记表生成") @ApiOperation(httpMethod = "POST", value = "使用登记表生成", notes = "使用登记表生成")
@PostMapping(value = "/getRegistrationFormUrl") @PostMapping(value = "/getRegistrationFormUrl")
@FieldMapping({@FieldMapping.FieldMap(sourceField = "formData.estateUnitSeq", targetField = "formData.estateUnitName", serviceClass = CommonServiceImpl.class, queryMethod = "queryUnitCreditInfoBySeq")}) @FieldMapping({
@FieldMapping.FieldMap(sourceField = "formData.estateUnitSeq",
targetField = "formData.estateUnitName",
serviceClass = CommonServiceImpl.class,
queryMethod = "queryTcmUnitCreditCodeAndNameBySeq",
secondParamValue = "CQ"
)
})
public ResponseModel<Map<String, Object>> getRegistrationFormUrl(@RequestBody JSONObject map) { public ResponseModel<Map<String, Object>> getRegistrationFormUrl(@RequestBody JSONObject map) {
JSONObject formData = JSONObject.parseObject(JSONObject.toJSONString(map.get("formData"))); JSONObject formData = JSONObject.parseObject(JSONObject.toJSONString(map.get("formData")));
String manageType = String.valueOf(map.get("manageType")); String manageType = String.valueOf(map.get("manageType"));
...@@ -912,7 +923,14 @@ public class CommonController extends BaseController { ...@@ -912,7 +923,14 @@ public class CommonController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "POST", value = "pdf流生成", notes = "pdf流生成") @ApiOperation(httpMethod = "POST", value = "pdf流生成", notes = "pdf流生成")
@PostMapping(value = "/getRegistrationFormStream") @PostMapping(value = "/getRegistrationFormStream")
@FieldMapping({@FieldMapping.FieldMap(sourceField = "formData.estateUnitSeq", targetField = "formData.estateUnitName", serviceClass = CommonServiceImpl.class, queryMethod = "queryUnitCreditInfoBySeq")}) @FieldMapping({
@FieldMapping.FieldMap(sourceField = "formData.estateUnitSeq",
targetField = "formData.estateUnitName",
serviceClass = CommonServiceImpl.class,
queryMethod = "queryTcmUnitCreditCodeAndNameBySeq",
secondParamValue = "CQ"
)
})
public void getRegistrationFormStream(@RequestBody JSONObject map, HttpServletResponse response) { public void getRegistrationFormStream(@RequestBody JSONObject map, HttpServletResponse response) {
JSONObject formData = JSONObject.parseObject(JSONObject.toJSONString(map.get("formData"))); JSONObject formData = JSONObject.parseObject(JSONObject.toJSONString(map.get("formData")));
String manageType = String.valueOf(map.get("manageType")); String manageType = String.valueOf(map.get("manageType"));
...@@ -938,7 +956,14 @@ public class CommonController extends BaseController { ...@@ -938,7 +956,14 @@ public class CommonController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "POST", value = "使用登记表/补证申请表生成", notes = "使用登记表/补证申请表生成") @ApiOperation(httpMethod = "POST", value = "使用登记表/补证申请表生成", notes = "使用登记表/补证申请表生成")
@PostMapping(value = "/getRegistrationOrCertReplenishFormUrl") @PostMapping(value = "/getRegistrationOrCertReplenishFormUrl")
@FieldMapping({@FieldMapping.FieldMap(sourceField = "formData.estateUnitSeq", targetField = "formData.estateUnitName", serviceClass = CommonServiceImpl.class, queryMethod = "queryUnitCreditInfoBySeq")}) @FieldMapping({
@FieldMapping.FieldMap(sourceField = "formData.estateUnitSeq",
targetField = "formData.estateUnitName",
serviceClass = CommonServiceImpl.class,
queryMethod = "queryTcmUnitCreditCodeAndNameBySeq",
secondParamValue = "CQ"
)
})
public ResponseModel<Map<String, Object>> getRegistrationOrCertReplenishFormUrl(@RequestBody JSONObject jsonObject) { public ResponseModel<Map<String, Object>> getRegistrationOrCertReplenishFormUrl(@RequestBody JSONObject jsonObject) {
String formBusinessType = Objects.toString(jsonObject.get("formBusinessType")); String formBusinessType = Objects.toString(jsonObject.get("formBusinessType"));
if (ApplicationFormTypeEnum.BZDJ.getBusinessCode().equals(formBusinessType)) { if (ApplicationFormTypeEnum.BZDJ.getBusinessCode().equals(formBusinessType)) {
...@@ -973,6 +998,15 @@ public class CommonController extends BaseController { ...@@ -973,6 +998,15 @@ public class CommonController extends BaseController {
} }
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/getTcmUnitInfoList")
@ApiOperation(httpMethod = "GET", value = "通过单位类型获取单位列表-返回数据主键", notes = "通过单位类型获取单位列表-返回数据主键")
public ResponseModel<List<Map<String, Object>>> getTcmUnitInfoList(
@RequestParam(value = "unitType") String unitType,
@RequestParam(value = "unitName", required = false) String unitName) {
return ResponseHelper.buildResponse(commonService.getTcmUnitListByType(unitType, unitName));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/cylinderComplianceCheck") @PostMapping(value = "/cylinderComplianceCheck")
@ApiOperation(httpMethod = "POST", value = "校验气瓶是否合规", notes = "校验气瓶是否合规") @ApiOperation(httpMethod = "POST", value = "校验气瓶是否合规", notes = "校验气瓶是否合规")
public ResponseModel<List<Map<String, Object>>> cylinderComplianceCheck(@RequestBody List<String> sequenceCodes) { public ResponseModel<List<Map<String, Object>>> cylinderComplianceCheck(@RequestBody List<String> sequenceCodes) {
......
...@@ -74,7 +74,9 @@ public class JgInstallationNoticeController extends BaseController { ...@@ -74,7 +74,9 @@ public class JgInstallationNoticeController extends BaseController {
paramIndex = 1, paramIndex = 1,
targetField = "installationInfo.propertyUnitName", targetField = "installationInfo.propertyUnitName",
serviceClass = CommonServiceImpl.class, serviceClass = CommonServiceImpl.class,
queryMethod = "queryUnitCreditInfoBySeq"), queryMethod = "queryTcmUnitCreditCodeAndNameBySeq",
secondParamValue = "CQ"
),
@FieldMapping.FieldMap( @FieldMapping.FieldMap(
sourceField = "installationInfo.useUnitSeq", sourceField = "installationInfo.useUnitSeq",
paramIndex = 1, paramIndex = 1,
......
...@@ -25,7 +25,6 @@ import javax.servlet.http.HttpServletResponse; ...@@ -25,7 +25,6 @@ import javax.servlet.http.HttpServletResponse;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
/** /**
* 车用气瓶控制类 * 车用气瓶控制类
...@@ -49,7 +48,14 @@ public class JgVehicleInformationController extends BaseController { ...@@ -49,7 +48,14 @@ public class JgVehicleInformationController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/save") @PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增车用气瓶控制类", notes = "新增车用气瓶控制类") @ApiOperation(httpMethod = "POST", value = "新增车用气瓶控制类", notes = "新增车用气瓶控制类")
@FieldMapping({@FieldMapping.FieldMap(sourceField = "estateUnitSeq", targetField = "estateUnitName", serviceClass = CommonServiceImpl.class, queryMethod = "queryUnitCreditInfoBySeq")}) @FieldMapping({
@FieldMapping.FieldMap(sourceField = "estateUnitSeq",
targetField = "estateUnitName",
serviceClass = CommonServiceImpl.class,
queryMethod = "queryTcmUnitCreditCodeAndNameBySeq",
secondParamValue = "CQ"
)
})
public ResponseModel<Object> saveOrSubmit(@RequestBody JSONObject map, @RequestParam(value = "submit") String submit) { public ResponseModel<Object> saveOrSubmit(@RequestBody JSONObject map, @RequestParam(value = "submit") String submit) {
return ResponseHelper.buildResponse(jgVehicleInformationServiceImpl.save(submit, map)); return ResponseHelper.buildResponse(jgVehicleInformationServiceImpl.save(submit, map));
} }
......
...@@ -44,7 +44,12 @@ public class BizDataChangeServiceImpl { ...@@ -44,7 +44,12 @@ public class BizDataChangeServiceImpl {
} }
@ResultFieldMapping({ @ResultFieldMapping({
@ResultFieldMapping.ResultFieldMap(sourceField = "ESTATE_UNIT_CREDIT_CODE", targetField = "ESTATE_UNIT_CREDIT_CODE", serviceClass = CommonServiceImpl.class, queryMethod = "queryUnitInfoByCreditCode") @ResultFieldMapping.ResultFieldMap(sourceField = "ESTATE_UNIT_CREDIT_CODE",
targetField = "ESTATE_UNIT_CREDIT_CODE",
serviceClass = CommonServiceImpl.class,
queryMethod = "queryTcmUnitSeqByCreditCode",
secondParamValue = "CQ"
)
}) })
public Map<String, Object> querySubDetail(String applyNo, String bizId, String bizType, BizDataChangeController.DetailType type, ReginParams selectedOrgInfo) { public Map<String, Object> querySubDetail(String applyNo, String bizId, String bizType, BizDataChangeController.DetailType type, ReginParams selectedOrgInfo) {
IBizDataChangeHandleStrategy handleStrategy = BizDataHandleStrategyContext.getStrategy(bizType); IBizDataChangeHandleStrategy handleStrategy = BizDataHandleStrategyContext.getStrategy(bizType);
......
...@@ -6,6 +6,7 @@ import com.yeejoin.amos.boot.module.jg.biz.handler.strategy.ToBeSubmitDetailStra ...@@ -6,6 +6,7 @@ import com.yeejoin.amos.boot.module.jg.biz.handler.strategy.ToBeSubmitDetailStra
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgInstallationNoticeServiceImpl; import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgInstallationNoticeServiceImpl;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
...@@ -13,6 +14,7 @@ import java.util.Map; ...@@ -13,6 +14,7 @@ import java.util.Map;
@Component @Component
public class InstallNoticeStrategyHandler implements ToBeSubmitDetailStrategy { public class InstallNoticeStrategyHandler implements ToBeSubmitDetailStrategy {
@Lazy
@Autowired @Autowired
private JgInstallationNoticeServiceImpl jgInstallationNoticeService; private JgInstallationNoticeServiceImpl jgInstallationNoticeService;
......
...@@ -21,7 +21,13 @@ public class VehicleRegistrationStrategyHandler implements ToBeSubmitDetailStrat ...@@ -21,7 +21,13 @@ public class VehicleRegistrationStrategyHandler implements ToBeSubmitDetailStrat
private JgVehicleInformationServiceImpl vehicleInformationService; private JgVehicleInformationServiceImpl vehicleInformationService;
@Override @Override
@ResultFieldMapping({@ResultFieldMapping.ResultFieldMap(sourceField = "notice.estateUnitName", targetField = "notice.estateUnitSeq", serviceClass = CommonServiceImpl.class, queryMethod = "queryUnitInfoByCreditCode")}) @ResultFieldMapping({
@ResultFieldMapping.ResultFieldMap(sourceField = "notice.estateUnitName",
targetField = "notice.estateUnitSeq",
serviceClass = CommonServiceImpl.class,
queryMethod = "queryTcmUnitSeqByCreditCode",
secondParamValue = "CQ")
})
public Map<String, Map<String, Object>> getDetails(Long sequenceNbr, ReginParams reginParams) { public Map<String, Map<String, Object>> getDetails(Long sequenceNbr, ReginParams reginParams) {
JgVehicleInformationVo vo = vehicleInformationService.queryBySequenceNbr(sequenceNbr); JgVehicleInformationVo vo = vehicleInformationService.queryBySequenceNbr(sequenceNbr);
Map<String, Object> basic = new HashMap<>(); Map<String, Object> basic = new HashMap<>();
......
...@@ -281,4 +281,6 @@ public interface ICommonService { ...@@ -281,4 +281,6 @@ public interface ICommonService {
JSONArray allWorkbenchPermission(String businessType, String appCode); JSONArray allWorkbenchPermission(String businessType, String appCode);
List<Map<String, Object>> cylinderComplianceCheck(List<String> sequenceCodes); List<Map<String, Object>> cylinderComplianceCheck(List<String> sequenceCodes);
List<Map<String, Object>> getTcmUnitListByType(String name, String unitName);
} }
...@@ -7,6 +7,7 @@ import cn.hutool.core.date.DatePattern; ...@@ -7,6 +7,7 @@ import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.IoUtil; import cn.hutool.core.io.IoUtil;
import cn.hutool.core.map.MapBuilder; import cn.hutool.core.map.MapBuilder;
import cn.hutool.core.map.MapUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONException; import com.alibaba.fastjson.JSONException;
...@@ -14,6 +15,7 @@ import com.alibaba.fastjson.JSONObject; ...@@ -14,6 +15,7 @@ import com.alibaba.fastjson.JSONObject;
import com.aspose.words.SaveFormat; import com.aspose.words.SaveFormat;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
...@@ -276,6 +278,7 @@ public class CommonServiceImpl implements ICommonService { ...@@ -276,6 +278,7 @@ public class CommonServiceImpl implements ICommonService {
private Resource regNameJson; private Resource regNameJson;
@Value("${regulator.unit.code}") @Value("${regulator.unit.code}")
private String code; private String code;
@Lazy
@Autowired @Autowired
private IJgInstallationNoticeService iJgInstallationNoticeService; private IJgInstallationNoticeService iJgInstallationNoticeService;
@Autowired @Autowired
...@@ -936,6 +939,10 @@ public class CommonServiceImpl implements ICommonService { ...@@ -936,6 +939,10 @@ public class CommonServiceImpl implements ICommonService {
return result; return result;
} }
public List<Map<String, Object>> getTcmUnitListByType(String unitType, String unitName) {
return commonMapper.getTcmUnitListByType(unitType, unitName);
}
@Override @Override
public List<Map<String, Object>> getUnitListByType(String type, String business, Boolean needAuth) { public List<Map<String, Object>> getUnitListByType(String type, String business, Boolean needAuth) {
List<Map<String, Object>> unitList = new ArrayList<>(); List<Map<String, Object>> unitList = new ArrayList<>();
...@@ -1522,7 +1529,12 @@ public class CommonServiceImpl implements ICommonService { ...@@ -1522,7 +1529,12 @@ public class CommonServiceImpl implements ICommonService {
@Override @Override
@FieldMapping({ @FieldMapping({
@FieldMapping.FieldMap(sourceField = "second.estateUnitSeq", targetField = "second.estateUnitName", serviceClass = CommonServiceImpl.class, queryMethod = "queryUnitCreditInfoBySeq") @FieldMapping.FieldMap(sourceField = "second.estateUnitSeq",
targetField = "second.estateUnitName",
serviceClass = CommonServiceImpl.class,
queryMethod = "queryTcmUnitCreditCodeAndNameBySeq",
secondParamValue = "CQ"
)
}) })
public Object invokeBusinessType(Map<String, Object> map) { public Object invokeBusinessType(Map<String, Object> map) {
String historyEquType = (String) map.get(HISTORY_EQU_TYPE); String historyEquType = (String) map.get(HISTORY_EQU_TYPE);
...@@ -3202,7 +3214,7 @@ public class CommonServiceImpl implements ICommonService { ...@@ -3202,7 +3214,7 @@ public class CommonServiceImpl implements ICommonService {
} }
/** /**
* 根据单位ID查询单位的信用代码及名称 * 根据单位ID查询单位的信用代码及名称-反射使用
* @param unitSeq 单位seq * @param unitSeq 单位seq
* @return 单位信用代码_单位名称 * @return 单位信用代码_单位名称
*/ */
...@@ -3211,26 +3223,49 @@ public class CommonServiceImpl implements ICommonService { ...@@ -3211,26 +3223,49 @@ public class CommonServiceImpl implements ICommonService {
} }
/** /**
* 根据单位ID查询单位的信用代码--发射使用勿调整 * 根据单位信息查询单位seq-反射使用
* @param unitInfo 单位信息
* @return 单位seq
*/
public String queryUnitInfoByCreditCode(String unitInfo) {
if (StringUtils.isBlank(unitInfo)) {
return unitInfo;
}
String unitCreditCode = unitInfo.split("_")[0];
return commonMapper.queryUnitInfoByCreditCode(unitCreditCode);
}
/**
* 根据单位ID查询单位的信用代码及名称-反射使用
* @param unitSeq 单位seq * @param unitSeq 单位seq
* @return 单位信用代码_单位名称 * @return 单位信用代码_单位名称
*/ */
public String queryUnitCreditCodeBySeq(String unitSeq) { public String queryTcmUnitCreditCodeAndNameBySeq(String unitSeq, String unitType) {
return commonMapper.queryUnitCreditCodeBySeq(unitSeq); Map<String, String> map = commonMapper.queryTcmUnitInfoBySeq(unitSeq, unitType);
return MapUtil.getStr(map, "unitCodeAndName");
} }
/**
* 根据单位ID查询单位的信用代码--反射使用勿调整
* @param unitSeq 单位seq
* @return 单位信用代码_单位名称
*/
public String queryTcmUnitCreditCodeBySeq(String unitSeq, String unitType) {
Map<String, String> map = commonMapper.queryTcmUnitInfoBySeq(unitSeq, unitType);
return MapUtil.getStr(map, "unitCode");
}
/** /**
* 根据单位信息查询单位seq * 根据单位信息查询单位seq-反射使用
* @param unitInfo 单位信息 * @param unitCode 单位信息
* @return 单位seq * @return 单位seq
*/ */
public String queryUnitInfoByCreditCode(String unitInfo) { public String queryTcmUnitSeqByCreditCode(String unitCode, String unitType) {
if (StringUtils.isBlank(unitInfo)) { if (StringUtils.isBlank(unitCode)) {
return unitInfo; return unitCode;
} }
String unitCreditCode = unitInfo.split("_")[0]; String unitCreditCode = unitCode.split("_")[0];
return commonMapper.queryUnitInfoByCreditCode(unitCreditCode); return commonMapper.queryTcmUnitSeqByCreditCode(unitCreditCode, unitType);
} }
public static String getCompanyType(CompanyBo companyBo){ public static String getCompanyType(CompanyBo companyBo){
...@@ -3360,4 +3395,21 @@ public class CommonServiceImpl implements ICommonService { ...@@ -3360,4 +3395,21 @@ public class CommonServiceImpl implements ICommonService {
} }
return result; return result;
} }
public Map<String, String> queryTcmUnitInfoBySeq(String estateUnitSeq, String unitType) {
Map<String, String> propertyUnitInfo = commonMapper.queryTcmUnitInfoBySeq(estateUnitSeq, unitType);
if (ValidationUtil.isEmpty(propertyUnitInfo)) {
// 未查询到产权信息则保存上送的产权信息
propertyUnitInfo = Maps.newHashMap();
Long seqNbr = IdWorker.getId();
propertyUnitInfo.put("sequenceNbr", String.valueOf(seqNbr));
propertyUnitInfo.put("unitName", estateUnitSeq);
propertyUnitInfo.put("unitCode", "TCM" + seqNbr);
propertyUnitInfo.put("unitType", unitType);
propertyUnitInfo.put("createDate", String.valueOf(new Date()));
commonMapper.addTcmUnitInfo(propertyUnitInfo);
}
return propertyUnitInfo;
}
} }
\ No newline at end of file
...@@ -14,6 +14,7 @@ import com.yeejoin.amos.boot.biz.common.annotation.ResultFieldMapping; ...@@ -14,6 +14,7 @@ import com.yeejoin.amos.boot.biz.common.annotation.ResultFieldMapping;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo; import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity; import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.biz.common.enums.TcmUnitTypeEnum;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey; import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.biz.common.utils.SnowflakeIdUtil; import com.yeejoin.amos.boot.biz.common.utils.SnowflakeIdUtil;
...@@ -38,7 +39,6 @@ import com.yeejoin.amos.boot.module.ymt.api.entity.*; ...@@ -38,7 +39,6 @@ import com.yeejoin.amos.boot.module.ymt.api.entity.*;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentClassifityEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentClassifityEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgOtherInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgRegisterInfoMapper; import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgRegisterInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgSupervisionInfoMapper; import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgSupervisionInfoMapper;
import com.yeejoin.amos.component.feign.model.FeignClientResult; import com.yeejoin.amos.component.feign.model.FeignClientResult;
...@@ -51,7 +51,6 @@ import com.yeejoin.amos.feign.workflow.model.ProcessTaskDTO; ...@@ -51,7 +51,6 @@ import com.yeejoin.amos.feign.workflow.model.ProcessTaskDTO;
import com.yeejoin.amos.feign.workflow.model.TaskResultDTO; import com.yeejoin.amos.feign.workflow.model.TaskResultDTO;
import io.seata.spring.annotation.GlobalTransactional; import io.seata.spring.annotation.GlobalTransactional;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.elasticsearch.client.RestHighLevelClient;
import org.redisson.api.RLock; import org.redisson.api.RLock;
import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
...@@ -151,6 +150,9 @@ public class JgChangeRegistrationTransferServiceImpl extends BaseService<JgChang ...@@ -151,6 +150,9 @@ public class JgChangeRegistrationTransferServiceImpl extends BaseService<JgChang
@Autowired @Autowired
JgResumeInfoServiceImpl jgResumeInfoService; JgResumeInfoServiceImpl jgResumeInfoService;
@Autowired
private CommonMapper commonMapper;
/** /**
* 新增移装变更登记 * 新增移装变更登记
* *
...@@ -160,7 +162,14 @@ public class JgChangeRegistrationTransferServiceImpl extends BaseService<JgChang ...@@ -160,7 +162,14 @@ public class JgChangeRegistrationTransferServiceImpl extends BaseService<JgChang
*/ */
@GlobalTransactional(rollbackFor = Exception.class) @GlobalTransactional(rollbackFor = Exception.class)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@FieldMapping({@FieldMapping.FieldMap(paramIndex = 1, sourceField = "changeRegistrationTransfer.estateUnitSeq", targetField = "changeRegistrationTransfer.transferUseInfo", serviceClass = CommonServiceImpl.class, queryMethod = "queryUnitCreditInfoBySeq")}) @FieldMapping({
@FieldMapping.FieldMap(paramIndex = 1, sourceField = "changeRegistrationTransfer.estateUnitSeq",
targetField = "changeRegistrationTransfer.transferUseInfo",
serviceClass = CommonServiceImpl.class,
queryMethod = "queryTcmUnitCreditCodeAndNameBySeq",
secondParamValue = "CQ"
)
})
public List<JgChangeRegistrationTransferDto> createTransfer(String submitType, JSONObject map, ReginParams reginParams) { public List<JgChangeRegistrationTransferDto> createTransfer(String submitType, JSONObject map, ReginParams reginParams) {
try { try {
Map<String, Object> tableData = (Map<String, Object>) map.get(TABLE_PAGE_ID); Map<String, Object> tableData = (Map<String, Object>) map.get(TABLE_PAGE_ID);
...@@ -365,6 +374,15 @@ public class JgChangeRegistrationTransferServiceImpl extends BaseService<JgChang ...@@ -365,6 +374,15 @@ public class JgChangeRegistrationTransferServiceImpl extends BaseService<JgChang
this.saveOrUpdate(oldTransfer); this.saveOrUpdate(oldTransfer);
} }
// 产权单位
// 使用用户输入的产权单位信息未查询到数据,则保存新的产权单位信息
if (!ValidationUtil.isEmpty(tableData.get("estateUnitSeq"))) {
String estateUnitSeq = String.valueOf(tableData.get("estateUnitSeq"));
Map<String, String> propertyUnitInfo = commonService.queryTcmUnitInfoBySeq(estateUnitSeq, TcmUnitTypeEnum.CQ.getCode());
tableData.put("estateUnitCode", propertyUnitInfo.get("unitCode"));
tableData.put("estateUnitName", propertyUnitInfo.get("unitName"));
}
JgChangeRegistrationTransfer finalOldTransfer = oldTransfer; JgChangeRegistrationTransfer finalOldTransfer = oldTransfer;
List<JgChangeRegistrationTransferEq> oldTransferEqList = new ArrayList<>(Collections.emptyList()); List<JgChangeRegistrationTransferEq> oldTransferEqList = new ArrayList<>(Collections.emptyList());
deviceList.forEach(device -> { deviceList.forEach(device -> {
...@@ -633,7 +651,14 @@ public class JgChangeRegistrationTransferServiceImpl extends BaseService<JgChang ...@@ -633,7 +651,14 @@ public class JgChangeRegistrationTransferServiceImpl extends BaseService<JgChang
* @return * @return
*/ */
@Override @Override
@ResultFieldMapping({@ResultFieldMapping.ResultFieldMap(sourceField = "changeRegistrationTransfer.transferUseInfo", targetField = "changeRegistrationTransfer.estateUnitSeq", serviceClass = CommonServiceImpl.class, queryMethod = "queryUnitInfoByCreditCode")}) @ResultFieldMapping({
@ResultFieldMapping.ResultFieldMap(sourceField = "changeRegistrationTransfer.transferUseInfo",
targetField = "changeRegistrationTransfer.estateUnitSeq",
serviceClass = CommonServiceImpl.class,
queryMethod = "queryTcmUnitSeqByCreditCode",
secondParamValue = "CQ"
)
})
public Map<String, Map<String, Object>> getTransferDetail(String sequenceNbr, CompanyBo company) { public Map<String, Map<String, Object>> getTransferDetail(String sequenceNbr, CompanyBo company) {
Map<String, Map<String, Object>> pageDataMap = new HashMap<>(); Map<String, Map<String, Object>> pageDataMap = new HashMap<>();
Map<String, Object> resultDataMap = new HashMap<>(); Map<String, Object> resultDataMap = new HashMap<>();
......
...@@ -16,6 +16,7 @@ import com.yeejoin.amos.boot.biz.common.annotation.ResultFieldMapping; ...@@ -16,6 +16,7 @@ import com.yeejoin.amos.boot.biz.common.annotation.ResultFieldMapping;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo; import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity; import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.biz.common.enums.TcmUnitTypeEnum;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils; import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey; import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
...@@ -207,6 +208,9 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg ...@@ -207,6 +208,9 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
@Autowired @Autowired
private IdxBizJgSupervisionInfoMapper idxBizJgSupervisionInfoMapper; private IdxBizJgSupervisionInfoMapper idxBizJgSupervisionInfoMapper;
@Autowired
private CommonMapper commonMapper;
/** /**
* 根据sequenceNbr查询:1、查询单位变更信息,2、查询使用登记证列表 * 根据sequenceNbr查询:1、查询单位变更信息,2、查询使用登记证列表
* *
...@@ -1365,6 +1369,13 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg ...@@ -1365,6 +1369,13 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
if (objectMap.containsKey("useRegistrationCode") && ObjectUtils.isNotEmpty(objectMap.get("useRegistrationCode"))) { if (objectMap.containsKey("useRegistrationCode") && ObjectUtils.isNotEmpty(objectMap.get("useRegistrationCode"))) {
registrationNoList.add(objectMap.get("useRegistrationCode").toString()); registrationNoList.add(objectMap.get("useRegistrationCode").toString());
} }
// 处理产权单位
// 使用用户输入的产权单位信息未查询到数据,则保存新的产权单位信息
if (!ValidationUtil.isEmpty(objectMap.get("estateUnitName"))) {
String estateUnitSeq = String.valueOf(objectMap.get("estateUnitName"));
Map<String, String> propertyUnitInfo = commonServiceImpl.queryTcmUnitInfoBySeq(estateUnitSeq, TcmUnitTypeEnum.CQ.getCode());
objectMap.put("estateUnitSeq", propertyUnitInfo.get("sequenceNbr"));
}
} }
if (CollectionUtils.isEmpty(registrationIdList)) { if (CollectionUtils.isEmpty(registrationIdList)) {
throw new BadRequest("使用登记证不能为空"); throw new BadRequest("使用登记证不能为空");
...@@ -1550,6 +1561,8 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg ...@@ -1550,6 +1561,8 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
} }
} }
private void rollBackForDelRedisData() { private void rollBackForDelRedisData() {
FlowingEquipRedisContext.getContext().forEach(e -> { FlowingEquipRedisContext.getContext().forEach(e -> {
EquipUsedCheckStrategyContext.getUsedStrategy(PROCESS_DEFINITION_KEY).delDataForCheckWithKey(e.getData(), e.getRedisKey()); EquipUsedCheckStrategyContext.getUsedStrategy(PROCESS_DEFINITION_KEY).delDataForCheckWithKey(e.getData(), e.getRedisKey());
......
...@@ -17,6 +17,7 @@ import com.yeejoin.amos.boot.biz.common.dao.mapper.DataDictionaryMapper; ...@@ -17,6 +17,7 @@ import com.yeejoin.amos.boot.biz.common.dao.mapper.DataDictionaryMapper;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity; import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.biz.common.entity.DataDictionary; import com.yeejoin.amos.boot.biz.common.entity.DataDictionary;
import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity; import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity;
import com.yeejoin.amos.boot.biz.common.enums.TcmUnitTypeEnum;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils; import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey; import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
...@@ -29,10 +30,7 @@ import com.yeejoin.amos.boot.module.jg.api.entity.*; ...@@ -29,10 +30,7 @@ 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.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.CompanyTypeEnum; import com.yeejoin.amos.boot.module.jg.api.enums.CompanyTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.PipelineEnum; import com.yeejoin.amos.boot.module.jg.api.enums.PipelineEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgInstallationNoticeEqMapper; import com.yeejoin.amos.boot.module.jg.api.mapper.*;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgInstallationNoticeMapper;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgRegistrationHistoryMapper;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationMapper;
import com.yeejoin.amos.boot.module.jg.api.service.IJgInstallationNoticeService; import com.yeejoin.amos.boot.module.jg.api.service.IJgInstallationNoticeService;
import com.yeejoin.amos.boot.module.jg.api.vo.SortVo; import com.yeejoin.amos.boot.module.jg.api.vo.SortVo;
import com.yeejoin.amos.boot.module.jg.api.vo.tableDataExportVo.InstallationVo; import com.yeejoin.amos.boot.module.jg.api.vo.tableDataExportVo.InstallationVo;
...@@ -215,6 +213,8 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN ...@@ -215,6 +213,8 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
@Autowired @Autowired
private ToBeSubmitDetailStrategyFactory toBeSubmitDetailStrategyFactory; private ToBeSubmitDetailStrategyFactory toBeSubmitDetailStrategyFactory;
@Autowired
private CommonMapper commonMapper;
@Resource @Resource
private DiscardOrderCheckFactory discardOrderCheckFactory; private DiscardOrderCheckFactory discardOrderCheckFactory;
...@@ -234,7 +234,12 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN ...@@ -234,7 +234,12 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
@Override @Override
@ResultFieldMapping({ @ResultFieldMapping({
@ResultFieldMapping.ResultFieldMap(sourceField = "installationInfo.useUnitCreditCode", targetField = "installationInfo.useUnitSeq", serviceClass = CommonServiceImpl.class, queryMethod = "queryUnitInfoByCreditCode"), @ResultFieldMapping.ResultFieldMap(sourceField = "installationInfo.useUnitCreditCode", targetField = "installationInfo.useUnitSeq", serviceClass = CommonServiceImpl.class, queryMethod = "queryUnitInfoByCreditCode"),
@ResultFieldMapping.ResultFieldMap(sourceField = "installationInfo.propertyUnitName", targetField = "installationInfo.propertyUnitSeq", serviceClass = CommonServiceImpl.class, queryMethod = "queryUnitInfoByCreditCode") @ResultFieldMapping.ResultFieldMap(sourceField = "installationInfo.propertyUnitName",
targetField = "installationInfo.propertyUnitSeq",
serviceClass = CommonServiceImpl.class,
queryMethod = "queryTcmUnitSeqByCreditCode",
secondParamValue = "CQ"
)
}) })
public Map<String, Map<String, Object>> queryBySequenceNbr(Long sequenceNbr, CompanyBo company) { public Map<String, Map<String, Object>> queryBySequenceNbr(Long sequenceNbr, CompanyBo company) {
// 安装告知信息 // 安装告知信息
...@@ -298,17 +303,17 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN ...@@ -298,17 +303,17 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
} }
if (!ValidationUtil.isEmpty(notice.getPropertyUnitCreditCode()) && !ValidationUtil.isEmpty(notice.getPropertyUnitName())) { if (!ValidationUtil.isEmpty(notice.getPropertyUnitCreditCode()) && !ValidationUtil.isEmpty(notice.getPropertyUnitName())) {
//installationInfo.put("propertyUnitName", notice.getPropertyUnitCreditCode() + "_" + notice.getPropertyUnitName()); installationInfo.put("propertyUnitName", notice.getPropertyUnitCreditCode() + "_" + notice.getPropertyUnitName());
TzBaseEnterpriseInfo useCodeResult1 = tzBaseEnterpriseInfoMapper.selectOne( // TzBaseEnterpriseInfo useCodeResult1 = tzBaseEnterpriseInfoMapper.selectOne(
new QueryWrapper<TzBaseEnterpriseInfo>() // new QueryWrapper<TzBaseEnterpriseInfo>()
.eq("use_unit_code", notice.getPropertyUnitCreditCode()) // .eq("use_unit_code", notice.getPropertyUnitCreditCode())
); // );
if (useCodeResult1 != null) { // if (useCodeResult1 != null) {
installationInfo.put("propertyUnitName", notice.getPropertyUnitCreditCode() + "_" + notice.getPropertyUnitName() + // installationInfo.put("propertyUnitName", notice.getPropertyUnitCreditCode() + "_" + notice.getPropertyUnitName() +
("个人主体".equals(useCodeResult1.getUnitType()) // ("个人主体".equals(useCodeResult1.getUnitType())
? "_" + notice.getPropertyUnitCreditCode().substring(notice.getPropertyUnitCreditCode().length() - 4) // ? "_" + notice.getPropertyUnitCreditCode().substring(notice.getPropertyUnitCreditCode().length() - 4)
: "")); // : ""));
} // }
} }
String[] fields = {"productPhoto", "designDoc", "designStandard", "factoryStandard", String[] fields = {"productPhoto", "designDoc", "designStandard", "factoryStandard",
...@@ -879,6 +884,7 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN ...@@ -879,6 +884,7 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class) @GlobalTransactional(rollbackFor = Exception.class)
// @AsyncSaveData(value = "{'propertyUnitSeq': #jgInstallationNoticeDtoMap['1734141426742095873']['propertyUnitSeq'], 'installNoticeSeq': #result[0].sequenceNbr}", businessType = "INSTALL_NOTICE_SAVE")
public List<JgInstallationNotice> saveNotice(String submitType, JSONObject jgInstallationNoticeDtoMap, ReginParams reginParams) { public List<JgInstallationNotice> saveNotice(String submitType, JSONObject jgInstallationNoticeDtoMap, ReginParams reginParams) {
try { try {
JgInstallationNoticeDto model = JSON.parseObject(jgInstallationNoticeDtoMap.get(TABLE_PAGE_ID).toString(), JgInstallationNoticeDto.class); JgInstallationNoticeDto model = JSON.parseObject(jgInstallationNoticeDtoMap.get(TABLE_PAGE_ID).toString(), JgInstallationNoticeDto.class);
...@@ -1237,6 +1243,12 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN ...@@ -1237,6 +1243,12 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
model.setInstallLeaderName(leaderList[1]); model.setInstallLeaderName(leaderList[1]);
} }
} }
// 处理产权单位信息
String propertyUnitSeq = model.getPropertyUnitSeq();
Map<String, String> propertyUnitInfo = commonService.queryTcmUnitInfoBySeq(propertyUnitSeq, TcmUnitTypeEnum.CQ.getCode());
model.setPropertyUnitCreditCode(propertyUnitInfo.get("unitCode"));
model.setPropertyUnitName(propertyUnitInfo.get("unitName"));
} }
...@@ -2096,7 +2108,12 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN ...@@ -2096,7 +2108,12 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
@ResultFieldMapping({ @ResultFieldMapping({
@ResultFieldMapping.ResultFieldMap(sourceField = "notice.useUnitCreditCode", targetField = "notice.useUnitSeq", serviceClass = CommonServiceImpl.class, queryMethod = "queryUnitInfoByCreditCode"), @ResultFieldMapping.ResultFieldMap(sourceField = "notice.useUnitCreditCode", targetField = "notice.useUnitSeq", serviceClass = CommonServiceImpl.class, queryMethod = "queryUnitInfoByCreditCode"),
@ResultFieldMapping.ResultFieldMap(sourceField = "notice.propertyUnitName", targetField = "notice.propertyUnitSeq", serviceClass = CommonServiceImpl.class, queryMethod = "queryUnitInfoByCreditCode") @ResultFieldMapping.ResultFieldMap(sourceField = "notice.propertyUnitName",
targetField = "notice.propertyUnitSeq",
serviceClass = CommonServiceImpl.class,
queryMethod = "queryTcmUnitSeqByCreditCode",
secondParamValue = "CQ"
)
}) })
public Map<String, Map<String, Object>> getNoticeToBeSubmitDetails1(Long sequenceNbr, CompanyBo company, String businessType) { public Map<String, Map<String, Object>> getNoticeToBeSubmitDetails1(Long sequenceNbr, CompanyBo company, String businessType) {
Map<String, Map<String, Object>> notice = new HashMap<>(); Map<String, Map<String, Object>> notice = new HashMap<>();
...@@ -2143,7 +2160,12 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN ...@@ -2143,7 +2160,12 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
@ResultFieldMapping({ @ResultFieldMapping({
@ResultFieldMapping.ResultFieldMap(sourceField = "notice.useUnitCreditCode", targetField = "notice.useUnitSeq", serviceClass = CommonServiceImpl.class, queryMethod = "queryUnitInfoByCreditCode"), @ResultFieldMapping.ResultFieldMap(sourceField = "notice.useUnitCreditCode", targetField = "notice.useUnitSeq", serviceClass = CommonServiceImpl.class, queryMethod = "queryUnitInfoByCreditCode"),
@ResultFieldMapping.ResultFieldMap(sourceField = "notice.propertyUnitName", targetField = "notice.propertyUnitSeq", serviceClass = CommonServiceImpl.class, queryMethod = "queryUnitInfoByCreditCode") @ResultFieldMapping.ResultFieldMap(sourceField = "notice.propertyUnitName",
targetField = "notice.propertyUnitSeq",
serviceClass = CommonServiceImpl.class,
queryMethod = "queryTcmUnitSeqByCreditCode",
secondParamValue = "CQ"
)
}) })
@Override @Override
public Map<String, Map<String, Object>> getNoticeToBeSubmitDetails(Long sequenceNbr, ReginParams reginParams, String businessType) { public Map<String, Map<String, Object>> getNoticeToBeSubmitDetails(Long sequenceNbr, ReginParams reginParams, String businessType) {
......
...@@ -57,6 +57,7 @@ import org.redisson.api.RLock; ...@@ -57,6 +57,7 @@ import org.redisson.api.RLock;
import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionSynchronization; import org.springframework.transaction.support.TransactionSynchronization;
...@@ -140,6 +141,7 @@ public class JgMaintainNoticeServiceImpl extends BaseService<JgMaintainNoticeDto ...@@ -140,6 +141,7 @@ public class JgMaintainNoticeServiceImpl extends BaseService<JgMaintainNoticeDto
@Autowired @Autowired
JgResumeInfoServiceImpl jgResumeInfoService; JgResumeInfoServiceImpl jgResumeInfoService;
@Lazy
@Autowired @Autowired
JgInstallationNoticeServiceImpl jgInstallationNoticeService; JgInstallationNoticeServiceImpl jgInstallationNoticeService;
......
...@@ -49,6 +49,7 @@ import org.redisson.api.RLock; ...@@ -49,6 +49,7 @@ import org.redisson.api.RLock;
import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
...@@ -106,6 +107,7 @@ public class JgTransferNoticeServiceImpl extends BaseService<JgTransferNoticeDto ...@@ -106,6 +107,7 @@ public class JgTransferNoticeServiceImpl extends BaseService<JgTransferNoticeDto
ICmWorkflowService iCmWorkflowService; ICmWorkflowService iCmWorkflowService;
@Autowired @Autowired
IdxBizJgUseInfoMapper idxBizJgUseInfoMapper; IdxBizJgUseInfoMapper idxBizJgUseInfoMapper;
@Lazy
@Autowired @Autowired
JgInstallationNoticeServiceImpl jgInstallationNoticeService; JgInstallationNoticeServiceImpl jgInstallationNoticeService;
@Autowired @Autowired
......
...@@ -16,6 +16,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; ...@@ -16,6 +16,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.yeejoin.amos.boot.biz.common.annotation.ResultFieldMapping; import com.yeejoin.amos.boot.biz.common.annotation.ResultFieldMapping;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo; import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
...@@ -24,6 +25,7 @@ import com.yeejoin.amos.boot.biz.common.controller.BaseController; ...@@ -24,6 +25,7 @@ import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity; import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.biz.common.entity.DataDictionary; import com.yeejoin.amos.boot.biz.common.entity.DataDictionary;
import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity; import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity;
import com.yeejoin.amos.boot.biz.common.enums.TcmUnitTypeEnum;
import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl; import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils; import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey; import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
...@@ -725,6 +727,15 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD ...@@ -725,6 +727,15 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
} }
}); });
} }
// 产权单位
// 使用用户输入的产权单位信息未查询到数据,则保存新的产权单位信息
if (!ValidationUtil.isEmpty(map.getString("estateUnitSeq"))) {
String estateUnitSeq = String.valueOf(map.getString("estateUnitSeq"));
Map<String, String> propertyUnitInfo = commonServiceImpl.queryTcmUnitInfoBySeq(estateUnitSeq, TcmUnitTypeEnum.CQ.getCode());
map.put("estateUnitCode", propertyUnitInfo.get("unitCode"));
map.put("estateUnitName", propertyUnitInfo.get("unitCode") + "_" + propertyUnitInfo.get("unitName"));
}
jgUseRegistration.setUseAddress(jgUseRegistration.getUseAddress() + map.get("address")); jgUseRegistration.setUseAddress(jgUseRegistration.getUseAddress() + map.get("address"));
Optional.ofNullable(map.get("useRegistrationFormFile")) Optional.ofNullable(map.get("useRegistrationFormFile"))
.map(JSONObject::toJSONString) .map(JSONObject::toJSONString)
...@@ -1009,6 +1020,15 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD ...@@ -1009,6 +1020,15 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
useRegistration.setSupervisionOrgCode(splitOrgBranchCode[0]); useRegistration.setSupervisionOrgCode(splitOrgBranchCode[0]);
} }
// 产权单位
// 使用用户输入的产权单位信息未查询到数据,则保存新的产权单位信息
if (!ValidationUtil.isEmpty(map.getString("estateUnitSeq"))) {
String estateUnitSeq = String.valueOf(map.getString("estateUnitSeq"));
Map<String, String> propertyUnitInfo = commonServiceImpl.queryTcmUnitInfoBySeq(estateUnitSeq, TcmUnitTypeEnum.CQ.getCode());
map.put("estateUnitCode", propertyUnitInfo.get("unitCode"));
map.put("estateUnitName", propertyUnitInfo.get("unitName"));
}
// 使用地点 // 使用地点
Map<String, List<LinkedHashMap>> locationMap = MapBuilder.<String, List<LinkedHashMap>>create() Map<String, List<LinkedHashMap>> locationMap = MapBuilder.<String, List<LinkedHashMap>>create()
.put("city", (List<LinkedHashMap>) redisUtils.get("CITY")) .put("city", (List<LinkedHashMap>) redisUtils.get("CITY"))
...@@ -2444,7 +2464,12 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD ...@@ -2444,7 +2464,12 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
} }
@ResultFieldMapping({ @ResultFieldMapping({
@ResultFieldMapping.ResultFieldMap(sourceField = "estateUnitName", targetField = "estateUnitSeq", serviceClass = CommonServiceImpl.class, queryMethod = "queryUnitInfoByCreditCode") @ResultFieldMapping.ResultFieldMap(sourceField = "estateUnitCode",
targetField = "estateUnitSeq",
serviceClass = CommonServiceImpl.class,
queryMethod = "queryTcmUnitSeqByCreditCode",
secondParamValue = "CQ"
)
}) })
public Map<String, Object> getDetail(String record, Long sequenceNbr, ReginParams selectedOrgInfo) { public Map<String, Object> getDetail(String record, Long sequenceNbr, ReginParams selectedOrgInfo) {
if (!ObjectUtils.isEmpty(sequenceNbr)) { if (!ObjectUtils.isEmpty(sequenceNbr)) {
...@@ -4848,6 +4873,14 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD ...@@ -4848,6 +4873,14 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
map.put("safetyManagerId", data[0]); map.put("safetyManagerId", data[0]);
map.put("safetyManagerName", data[1]); map.put("safetyManagerName", data[1]);
} }
// 产权单位
// 使用用户输入的产权单位信息未查询到数据,则保存新的产权单位信息
if (!ValidationUtil.isEmpty(map.getString("estateUnitSeq"))) {
String estateUnitSeq = String.valueOf(map.getString("estateUnitSeq"));
Map<String, String> propertyUnitInfo = commonServiceImpl.queryTcmUnitInfoBySeq(estateUnitSeq, TcmUnitTypeEnum.CQ.getCode());
map.put("estateUnitCode", propertyUnitInfo.get("unitCode"));
map.put("estateUnitName", propertyUnitInfo.get("unitName"));
}
// 使用单位提交 // 使用单位提交
jgUseRegistration.setUseUnitName(CompanyTypeEnum.INDIVIDUAL.getName().equals(company.getCompanyType()) ? jgUseRegistration.setUseUnitName(CompanyTypeEnum.INDIVIDUAL.getName().equals(company.getCompanyType()) ?
company.getCompanyName().split("_")[1] : company.getCompanyName()); company.getCompanyName().split("_")[1] : company.getCompanyName());
......
...@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.jg.biz.service.impl; ...@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.map.MapUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
...@@ -13,11 +14,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -13,11 +14,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.yeejoin.amos.boot.biz.common.annotation.FieldMapping;
import com.yeejoin.amos.boot.biz.common.annotation.ResultFieldMapping; import com.yeejoin.amos.boot.biz.common.annotation.ResultFieldMapping;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo; import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.entity.DataDictionary; import com.yeejoin.amos.boot.biz.common.entity.DataDictionary;
import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity; import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity;
import com.yeejoin.amos.boot.biz.common.enums.TcmUnitTypeEnum;
import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl; import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey; import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
...@@ -28,6 +31,7 @@ import com.yeejoin.amos.boot.module.common.api.enums.CylinderTypeEnum; ...@@ -28,6 +31,7 @@ import com.yeejoin.amos.boot.module.common.api.enums.CylinderTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.dto.*; 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.entity.*;
import com.yeejoin.amos.boot.module.jg.api.enums.*; import com.yeejoin.amos.boot.module.jg.api.enums.*;
import com.yeejoin.amos.boot.module.jg.api.mapper.CommonMapper;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationManageMapper; import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationManageMapper;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgVehicleInformationEqMapper; 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.mapper.JgVehicleInformationMapper;
...@@ -181,6 +185,9 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform ...@@ -181,6 +185,9 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
@Autowired @Autowired
private ShCarServiceImpl shCarServiceImpl; private ShCarServiceImpl shCarServiceImpl;
@Autowired
private CommonMapper commonMapper;
private Map<String, Object> fillingMediumMap; private Map<String, Object> fillingMediumMap;
@Autowired @Autowired
...@@ -216,6 +223,24 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform ...@@ -216,6 +223,24 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class) @GlobalTransactional(rollbackFor = Exception.class)
@FieldMapping({
@FieldMapping.FieldMap(
sourceField = "installUnitCode",
paramIndex = 1,
targetField = "installUnitSeq",
serviceClass = CommonServiceImpl.class,
queryMethod = "queryTcmUnitCreditCodeAndNameBySeq",
secondParamValue = "AGW"
),
@FieldMapping.FieldMap(
sourceField = "inspectUnitCreditCode",
paramIndex = 1,
targetField = "inspectUnitSeq",
serviceClass = CommonServiceImpl.class,
queryMethod = "queryTcmUnitCreditCodeAndNameBySeq",
secondParamValue = "JY"
)
})
public List<JgVehicleInformation> save(String submit, JSONObject map) { public List<JgVehicleInformation> save(String submit, JSONObject map) {
try { try {
if (SUBMIT_TYPE_FLOW.equals(submit)) { if (SUBMIT_TYPE_FLOW.equals(submit)) {
...@@ -314,15 +339,17 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform ...@@ -314,15 +339,17 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
} }
//检验机构信息 //检验机构信息
if (!StringUtils.isEmpty(vehicleInfoDto.getInspectUnitCreditCode())) { if (!StringUtils.isEmpty(vehicleInfoDto.getInspectUnitCreditCode())) {
String[] splitInspectUnitCreditCode = vehicleInfoDto.getInspectUnitCreditCode().split("_"); String inspectUnitSeq = MapUtil.getStr(map, "inspectUnitSeq");
vehicleInfoDto.setInspectUnitCreditCode(splitInspectUnitCreditCode[0]); Map<String, String> inspectUnit = commonService.queryTcmUnitInfoBySeq(inspectUnitSeq, TcmUnitTypeEnum.JY.getCode());
vehicleInfoDto.setInspectUnitName(splitInspectUnitCreditCode[1]); vehicleInfoDto.setInspectUnitCreditCode(MapUtil.getStr(inspectUnit, "unitCode"));
vehicleInfoDto.setInspectUnitName(MapUtil.getStr(inspectUnit, "unitName"));
} }
//安装单位信息 //安装单位信息
if (!StringUtils.isEmpty(vehicleInfoDto.getInstallUnitCode())) { if (!StringUtils.isEmpty(vehicleInfoDto.getInstallUnitCode())) {
String[] splitInstallUnitCode = vehicleInfoDto.getInstallUnitCode().split("_"); String installUnitSeq = MapUtil.getStr(map, "installUnitSeq");
vehicleInfoDto.setInstallUnitCode(splitInstallUnitCode[0]); Map<String, String> installUnit = commonService.queryTcmUnitInfoBySeq(installUnitSeq, TcmUnitTypeEnum.JY.getCode());
vehicleInfoDto.setInstallUnitName(splitInstallUnitCode[1]); vehicleInfoDto.setInstallUnitCode(MapUtil.getStr(installUnit, "unitCode"));
vehicleInfoDto.setInstallUnitName(MapUtil.getStr(installUnit, "unitName"));
} }
//属地监管部门 //属地监管部门
if (!StringUtils.isEmpty(vehicleInfoDto.getOrgBranchCode())) { if (!StringUtils.isEmpty(vehicleInfoDto.getOrgBranchCode())) {
...@@ -345,6 +372,14 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform ...@@ -345,6 +372,14 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
String[] data = String.valueOf(map.getString("estateUnitName")).split("_"); String[] data = String.valueOf(map.getString("estateUnitName")).split("_");
vehicleInfoDto.setEstateUnitCreditCode(data[0]); vehicleInfoDto.setEstateUnitCreditCode(data[0]);
vehicleInfoDto.setEstateUnitName(data[1]); vehicleInfoDto.setEstateUnitName(data[1]);
} else {
// 使用用户输入的产权单位信息未查询到数据,则保存新的产权单位信息
if (!ValidationUtil.isEmpty(map.getString("estateUnitSeq"))) {
String estateUnitSeq = String.valueOf(map.getString("estateUnitSeq"));
Map<String, String> propertyUnitInfo = commonService.queryTcmUnitInfoBySeq(estateUnitSeq, TcmUnitTypeEnum.CQ.getCode());
vehicleInfoDto.setEstateUnitCreditCode(propertyUnitInfo.get("unitCode"));
vehicleInfoDto.setEstateUnitName(propertyUnitInfo.get("unitName"));
}
} }
// 其他附件 // 其他附件
...@@ -611,7 +646,25 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform ...@@ -611,7 +646,25 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
}); });
} }
@ResultFieldMapping({@ResultFieldMapping.ResultFieldMap(sourceField = "estateUnitName", targetField = "estateUnitSeq", serviceClass = CommonServiceImpl.class, queryMethod = "queryUnitInfoByCreditCode")}) @ResultFieldMapping(
{
@ResultFieldMapping.ResultFieldMap(sourceField = "estateUnitName",
targetField = "estateUnitSeq",
serviceClass = CommonServiceImpl.class,
queryMethod = "queryTcmUnitSeqByCreditCode",
secondParamValue = "CQ"
),
@ResultFieldMapping.ResultFieldMap(sourceField = "inspectUnitCreditCode",
targetField = "inspectUnitCreditCode",
serviceClass = CommonServiceImpl.class,
queryMethod = "queryTcmUnitSeqByCreditCode",
secondParamValue = "JY"),
@ResultFieldMapping.ResultFieldMap(sourceField = "installUnitCode",
targetField = "installUnitCode",
serviceClass = CommonServiceImpl.class,
queryMethod = "queryTcmUnitSeqByCreditCode",
secondParamValue = "AGW")
})
public Object queryBySequenceNbrWithAuth(Long sequenceNbr, CompanyBo companyBo) { public Object queryBySequenceNbrWithAuth(Long sequenceNbr, CompanyBo companyBo) {
JSONObject re = new JSONObject(); JSONObject re = new JSONObject();
// todo 注意顺序1 // todo 注意顺序1
...@@ -646,13 +699,13 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform ...@@ -646,13 +699,13 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
vo.setReceiveOrgCode(dto.getReceiveCompanyCode() + "_" + dto.getReceiveOrgName()); vo.setReceiveOrgCode(dto.getReceiveCompanyCode() + "_" + dto.getReceiveOrgName());
} }
//检验机构 //检验机构
if (!ValidationUtil.isEmpty(dto.getInspectUnitCreditCode()) && !ValidationUtil.isEmpty(dto.getInspectUnitName())) { // if (!ValidationUtil.isEmpty(dto.getInspectUnitCreditCode()) && !ValidationUtil.isEmpty(dto.getInspectUnitName())) {
vo.setInspectUnitCreditCode(dto.getInspectUnitCreditCode() + "_" + dto.getInspectUnitName()); // vo.setInspectUnitCreditCode(dto.getInspectUnitCreditCode() + "_" + dto.getInspectUnitName());
} // }
//安装单位 //安装单位
if (!ValidationUtil.isEmpty(dto.getInstallUnitCode()) && !ValidationUtil.isEmpty(dto.getInstallUnitName())) { // if (!ValidationUtil.isEmpty(dto.getInstallUnitCode()) && !ValidationUtil.isEmpty(dto.getInstallUnitName())) {
vo.setInstallUnitCode(dto.getInstallUnitCode() + "_" + dto.getInstallUnitName()); // vo.setInstallUnitCode(dto.getInstallUnitCode() + "_" + dto.getInstallUnitName());
} // }
//所属监管单位 //所属监管单位
if (!ValidationUtil.isEmpty(dto.getOrgBranchCode()) && !ValidationUtil.isEmpty(dto.getOrgBranchName())) { if (!ValidationUtil.isEmpty(dto.getOrgBranchCode()) && !ValidationUtil.isEmpty(dto.getOrgBranchName())) {
vo.setOrgBranchCode(dto.getOrgBranchCode() + "_" + dto.getOrgBranchName()); vo.setOrgBranchCode(dto.getOrgBranchCode() + "_" + dto.getOrgBranchName());
...@@ -1885,6 +1938,24 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform ...@@ -1885,6 +1938,24 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class) @GlobalTransactional(rollbackFor = Exception.class)
@FieldMapping({
@FieldMapping.FieldMap(
sourceField = "installUnitCode",
paramIndex = 1,
targetField = "installUnitSeq",
serviceClass = CommonServiceImpl.class,
queryMethod = "queryTcmUnitCreditCodeAndNameBySeq",
secondParamValue = "AGW"
),
@FieldMapping.FieldMap(
sourceField = "inspectUnitCreditCode",
paramIndex = 1,
targetField = "inspectUnitSeq",
serviceClass = CommonServiceImpl.class,
queryMethod = "queryTcmUnitCreditCodeAndNameBySeq",
secondParamValue = "JY"
)
})
public List<JgVehicleInformation> saveOrUpdateHisData(JSONObject map) { public List<JgVehicleInformation> saveOrUpdateHisData(JSONObject map) {
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())) + "", ReginParams.class); ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())) + "", ReginParams.class);
CompanyBo company = reginParams.getCompany(); CompanyBo company = reginParams.getCompany();
...@@ -2002,15 +2073,17 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform ...@@ -2002,15 +2073,17 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
} }
//检验机构信息 //检验机构信息
if (!StringUtils.isEmpty(vehicleInfoDto.getInspectUnitCreditCode())) { if (!StringUtils.isEmpty(vehicleInfoDto.getInspectUnitCreditCode())) {
String[] splitInspectUnitCreditCode = vehicleInfoDto.getInspectUnitCreditCode().split("_"); String inspectUnitSeq = MapUtil.getStr(map, "inspectUnitSeq");
vehicleInfoDto.setInspectUnitCreditCode(splitInspectUnitCreditCode[0]); Map<String, String> inspectUnit = commonService.queryTcmUnitInfoBySeq(inspectUnitSeq, TcmUnitTypeEnum.JY.getCode());
vehicleInfoDto.setInspectUnitName(splitInspectUnitCreditCode[1]); vehicleInfoDto.setInspectUnitCreditCode(MapUtil.getStr(inspectUnit, "unitCode"));
vehicleInfoDto.setInspectUnitName(MapUtil.getStr(inspectUnit, "unitName"));
} }
//安装单位信息 //安装单位信息
if (!StringUtils.isEmpty(vehicleInfoDto.getInstallUnitCode())) { if (!StringUtils.isEmpty(vehicleInfoDto.getInstallUnitCode())) {
String[] splitInstallUnitCode = vehicleInfoDto.getInstallUnitCode().split("_"); String installUnitSeq = MapUtil.getStr(map, "installUnitSeq");
vehicleInfoDto.setInstallUnitCode(splitInstallUnitCode[0]); Map<String, String> installUnit = commonService.queryTcmUnitInfoBySeq(installUnitSeq, TcmUnitTypeEnum.JY.getCode());
vehicleInfoDto.setInstallUnitName(splitInstallUnitCode[1]); vehicleInfoDto.setInstallUnitCode(MapUtil.getStr(installUnit, "unitCode"));
vehicleInfoDto.setInstallUnitName(MapUtil.getStr(installUnit, "unitName"));
} }
//属地监管部门 //属地监管部门
if (!StringUtils.isEmpty(vehicleInfoDto.getOrgBranchCode())) { if (!StringUtils.isEmpty(vehicleInfoDto.getOrgBranchCode())) {
...@@ -2033,6 +2106,14 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform ...@@ -2033,6 +2106,14 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
String[] data = String.valueOf(map.getString("estateUnitName")).split("_"); String[] data = String.valueOf(map.getString("estateUnitName")).split("_");
vehicleInfoDto.setEstateUnitCreditCode(data[0]); vehicleInfoDto.setEstateUnitCreditCode(data[0]);
vehicleInfoDto.setEstateUnitName(data[1]); vehicleInfoDto.setEstateUnitName(data[1]);
} else {
// 使用用户输入的产权单位信息未查询到数据,则保存新的产权单位信息
if (!ValidationUtil.isEmpty(map.getString("estateUnitSeq"))) {
String estateUnitSeq = String.valueOf(map.getString("estateUnitSeq"));
Map<String, String> propertyUnitInfo = commonService.queryTcmUnitInfoBySeq(estateUnitSeq, TcmUnitTypeEnum.CQ.getCode());
vehicleInfoDto.setEstateUnitCreditCode(propertyUnitInfo.get("unitCode"));
vehicleInfoDto.setEstateUnitName(propertyUnitInfo.get("unitName"));
}
} }
// 其他附件 // 其他附件
...@@ -2245,6 +2326,24 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform ...@@ -2245,6 +2326,24 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class) @GlobalTransactional(rollbackFor = Exception.class)
@FieldMapping({
@FieldMapping.FieldMap(
sourceField = "installUnitCode",
paramIndex = 1,
targetField = "installUnitSeq",
serviceClass = CommonServiceImpl.class,
queryMethod = "queryTcmUnitCreditCodeAndNameBySeq",
secondParamValue = "AGW"
),
@FieldMapping.FieldMap(
sourceField = "inspectUnitCreditCode",
paramIndex = 1,
targetField = "inspectUnitSeq",
serviceClass = CommonServiceImpl.class,
queryMethod = "queryTcmUnitCreditCodeAndNameBySeq",
secondParamValue = "JY"
)
})
public List<JgVehicleInformation> updateHistoryByVehicle(JSONObject map) { public List<JgVehicleInformation> updateHistoryByVehicle(JSONObject map) {
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())) + "", ReginParams.class); ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())) + "", ReginParams.class);
...@@ -2303,15 +2402,17 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform ...@@ -2303,15 +2402,17 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
} }
//检验机构信息 //检验机构信息
if (!StringUtils.isEmpty(vehicleInfoDto.getInspectUnitCreditCode())) { if (!StringUtils.isEmpty(vehicleInfoDto.getInspectUnitCreditCode())) {
String[] splitInspectUnitCreditCode = vehicleInfoDto.getInspectUnitCreditCode().split("_"); String inspectUnitSeq = MapUtil.getStr(map, "inspectUnitSeq");
vehicleInfoDto.setInspectUnitCreditCode(splitInspectUnitCreditCode[0]); Map<String, String> inspectUnit = commonService.queryTcmUnitInfoBySeq(inspectUnitSeq, TcmUnitTypeEnum.JY.getCode());
vehicleInfoDto.setInspectUnitName(splitInspectUnitCreditCode[1]); vehicleInfoDto.setInspectUnitCreditCode(MapUtil.getStr(inspectUnit, "unitCode"));
vehicleInfoDto.setInspectUnitName(MapUtil.getStr(inspectUnit, "unitName"));
} }
//安装单位信息 //安装单位信息
if (!StringUtils.isEmpty(vehicleInfoDto.getInstallUnitCode())) { if (!StringUtils.isEmpty(vehicleInfoDto.getInstallUnitCode())) {
String[] splitInstallUnitCode = vehicleInfoDto.getInstallUnitCode().split("_"); String installUnitSeq = MapUtil.getStr(map, "installUnitSeq");
vehicleInfoDto.setInstallUnitCode(splitInstallUnitCode[0]); Map<String, String> installUnit = commonService.queryTcmUnitInfoBySeq(installUnitSeq, TcmUnitTypeEnum.JY.getCode());
vehicleInfoDto.setInstallUnitName(splitInstallUnitCode[1]); vehicleInfoDto.setInstallUnitCode(MapUtil.getStr(installUnit, "unitCode"));
vehicleInfoDto.setInstallUnitName(MapUtil.getStr(installUnit, "unitName"));
} }
//属地监管部门 //属地监管部门
if (!StringUtils.isEmpty(vehicleInfoDto.getOrgBranchCode())) { if (!StringUtils.isEmpty(vehicleInfoDto.getOrgBranchCode())) {
...@@ -2334,6 +2435,14 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform ...@@ -2334,6 +2435,14 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
String[] data = String.valueOf(map.getString("estateUnitName")).split("_"); String[] data = String.valueOf(map.getString("estateUnitName")).split("_");
vehicleInfoDto.setEstateUnitCreditCode(data[0]); vehicleInfoDto.setEstateUnitCreditCode(data[0]);
vehicleInfoDto.setEstateUnitName(data[1]); vehicleInfoDto.setEstateUnitName(data[1]);
} else {
// 使用用户输入的产权单位信息未查询到数据,则保存新的产权单位信息
if (!ValidationUtil.isEmpty(map.getString("estateUnitSeq"))) {
String estateUnitSeq = String.valueOf(map.getString("estateUnitSeq"));
Map<String, String> propertyUnitInfo = commonService.queryTcmUnitInfoBySeq(estateUnitSeq, TcmUnitTypeEnum.CQ.getCode());
vehicleInfoDto.setEstateUnitCreditCode(propertyUnitInfo.get("unitCode"));
vehicleInfoDto.setEstateUnitName(propertyUnitInfo.get("unitName"));
}
} }
// 其他附件 // 其他附件
......
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