Commit d67ea836 authored by tianbo's avatar tianbo

Merge branch 'develop_tzs_register_test' into develop_tzs_register

# Conflicts: # amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/controller/IdxBizJgProjectContraptionController.java # amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/service/impl/IdxBizJgProjectContraptionServiceImpl.java
parents d815c99b f1d203b0
......@@ -978,4 +978,17 @@ public class XiAnEquipInfoExcelDto extends BaseDto {
@ExcelProperty(value = "运载工具数量和类型")
@ApiModelProperty(value = "运载工具数量和类型")
private String numberAndTypeOfVehicles;
@ApiModelProperty(value = "原设备代码")
@ExcelIgnore
private String originalEquCode;
@ApiModelProperty(value = "序号")
@ExcelProperty(value = "序号")
private String xaSerial;
@ApiModelProperty(value = "资料是否齐全(0齐全, 1不齐全)-西安数据导入")
@ExcelIgnore
private Integer isCompleteXa;
}
\ No newline at end of file
......@@ -27,6 +27,7 @@ import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Stream;
@Slf4j
@Service
......@@ -205,7 +206,7 @@ public class XiAnDataDockServiceImpl {
// 通用字段检查 每一个sheet页都有的基本信息,设计信息,制造信息和使用信息
this.commonFieldCheck(data, rowError);
data.setIsCompleteXa(this.checkIsComplete(data) ? 0 : 1);
// 起重机械----技术参数 检查
if (isQZJX) {
this.QZJXTechnicalParamsCheck(data, rowError);
......@@ -259,6 +260,20 @@ public class XiAnDataDockServiceImpl {
}
/**
* 检查资料是否齐全,16个导入必填项
*
* @param data 导入项
*/
private boolean checkIsComplete(XiAnEquipInfoExcelDto data) {
return Stream.of(data.getEquList(), data.getEquCategory(), data.getUseInnerCode(),
data.getProductName(), data.getEquType(), data.getUseUnitCode(),
data.getUseUnit(), data.getDesignUnitCreditCode(), data.getDesignUnitName(),
data.getDesignUseDate(), data.getDesignDate(), data.getProduceUnitCreditCode(),
data.getProduceUnitName(), data.getProduceLicenseNum(), data.getFactoryNum(),
data.getProduceDate()).noneMatch(StringUtils::isBlank);
}
/**
* 通用字段检查 每一个sheet页都有的基本信息,设计信息,制造信息和使用信息
*
* @param data 源数据
......@@ -271,7 +286,7 @@ public class XiAnDataDockServiceImpl {
// 基本信息
checkNotBlank(data.getEquList(), "设备种类不能为空;", rowError);
checkNotBlank(data.getEquCategory(), "设备类别不能为空;", rowError);
//checkNotBlank(data.getEquCategory(), "设备类别不能为空;", rowError);
//checkNotBlank(data.getUseInnerCode(), "单位内编号不能为空;", rowError);
//if (useInnerCodeList.contains(data.getUseInnerCode())) {
// rowError.append("单位内编号不能重复;");
......@@ -293,9 +308,15 @@ public class XiAnDataDockServiceImpl {
// rowError.append("设备代码不能包含特殊字符;");
//}
if (equCodeList.contains(data.getEquCode())) {
rowError.append("设备代码不能重复;");
data.setOriginalEquCode(data.getEquCode());
data.setEquCodeType("2");
data.setEquCode("");
}
if (this.checkEquCodeUniqueness(data.getEquCode())){
data.setOriginalEquCode(data.getEquCode());
data.setEquCodeType("2");
data.setEquCode("");
}
this.checkEquCodeUniqueness(data.getEquCode(), rowError);
} else {
data.setEquCode("");
}
......@@ -337,8 +358,8 @@ public class XiAnDataDockServiceImpl {
data.setWhetherSkidMountedPressureVessel("");
}
if (isFixedGasCylinder) { // 是固定式压力容器
checkNotBlank(data.getWhetherSphericalTank(), "是否球罐不能为空;", rowError);
checkNotBlank(data.getWhetherSkidMountedPressureVessel(), "是否撬装式压力容器不能为空;", rowError);
// checkNotBlank(data.getWhetherSphericalTank(), "是否球罐不能为空;", rowError);
// checkNotBlank(data.getWhetherSkidMountedPressureVessel(), "是否撬装式压力容器不能为空;", rowError);
data.setInformationSituation("");
data.setInformationManageCode("");
}
......@@ -358,18 +379,18 @@ public class XiAnDataDockServiceImpl {
}
}
// 使用信息
checkNotBlank(data.getUseUnitCode(), "使用单位统一社会信用代码不能为空;", rowError);
Optional.ofNullable(data.getUseUnitCode()).ifPresent(v -> checkCreditCode(v, "使用单位统一社会信用代码格式不正确;", rowError));
checkNotBlank(data.getUseUnit(), "使用单位名称不能为空;", rowError);
//checkNotBlank(data.getUseUnitCode(), "使用单位统一社会信用代码不能为空;", rowError);
//Optional.ofNullable(data.getUseUnitCode()).ifPresent(v -> checkCreditCode(v, "使用单位统一社会信用代码格式不正确;", rowError));
//checkNotBlank(data.getUseUnit(), "使用单位名称不能为空;", rowError);
// 设计信息
//checkNotBlank(data.getDesignUnitCreditCode(), "设计单位统一社会信用代码不能为空;", rowError);
Optional.ofNullable(data.getDesignUnitCreditCode()).ifPresent(v -> checkCreditCode(v, "设计单位统一社会信用代码格式不正确;", rowError));
// Optional.ofNullable(data.getDesignUnitCreditCode()).ifPresent(v -> checkCreditCode(v, "设计单位统一社会信用代码格式不正确;", rowError));
//checkNotBlank(data.getDesignUnitName(), "设计单位名称不能为空;", rowError);
//checkNotBlank(data.getDesignUseDate(), "设计使用年限不能为空;", rowError);
Optional.ofNullable(data.getDesignUseDate()).ifPresent(v -> checkDateFormatNumber(v, "设计使用年限不能为数字以外的其他类型;", rowError));
// Optional.ofNullable(data.getDesignUseDate()).ifPresent(v -> checkDateFormatNumber(v, "设计使用年限不能为数字以外的其他类型;", rowError));
//checkNotBlank(data.getDesignUseDate(), "设计日期不能为空;", rowError);
//Optional.ofNullable(data.getDesignDate()).ifPresent(v -> checkDateFormatCorrect(v, "设计日期格式不正确;", rowError));
Optional.ofNullable(data.getAppraisalDate()).ifPresent(v -> checkDateFormatCorrect(v, "设计文件鉴定日期格式不正确;", rowError));
// Optional.ofNullable(data.getAppraisalDate()).ifPresent(v -> checkDateFormatCorrect(v, "设计文件鉴定日期格式不正确;", rowError));
// 制造信息
//checkNotBlank(data.getProduceUnitCreditCode(), "制造单位统一社会信用代码不能为空;", rowError);
//Optional.ofNullable(data.getProduceUnitCreditCode()).ifPresent(v -> checkCreditCode(v, "制造单位统一社会信用代码格式不正确;", rowError));
......@@ -435,14 +456,10 @@ public class XiAnDataDockServiceImpl {
/**
* 根据设备代码检查唯一性
*
* @param equCode
* @param rowError
* @param equCode 设备代码
*/
private void checkEquCodeUniqueness(String equCode, StringBuffer rowError) {
Boolean bool = jgServiceFeignClient.selectByEquCodeAndClaimStatus(equCode);
if (bool) {
rowError.append("设备代码系统中已存在;");
}
private boolean checkEquCodeUniqueness(String equCode) {
return jgServiceFeignClient.selectByEquCodeAndClaimStatus(equCode);
}
/**
......
......@@ -8,6 +8,7 @@ import com.yeejoin.amos.boot.module.elevator.api.dto.ElevatorMessageDto;
import com.yeejoin.amos.boot.module.elevator.api.dto.ElevatorWlInfoDto;
import com.yeejoin.amos.boot.module.elevator.api.entity.Elevator;
import com.yeejoin.amos.boot.module.elevator.api.entity.TzBaseEnterpriseInfo;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
......@@ -70,4 +71,11 @@ public interface ElevatorMapper extends BaseMapper<Elevator> {
Map<String, Object> selectMainUnitMessage(String sequenceNbr);
Map<String, Object> selectUseUnitByAlertId(String sequenceNbr);
/**
* 查询未同步到es的电梯:已纳管且有96333且有使用登记证
* @param page 分页对象
* @return 电梯结果分页对象
*/
Page<Map<String, Object>> selectElevatorOfIntoManage(Page<Map<String, Object>> page);
}
......@@ -51,4 +51,6 @@ public interface IElevatorService extends IService<Elevator> {
List<Map<String,Object>> selectMtByAlertId(String sequenceNbr);
Map<String, Object> selectUseUnitByAlertId(String sequenceNbr);
Long esInsert();
}
......@@ -581,4 +581,29 @@
ibjmri.SEQUENCE_NBR = #{sequenceNbr}
</select>
<select id="selectElevatorOfIntoManage" resultType="java.util.Map">
SELECT
jui.RECORD AS sequenceNbr,
ifnull ( jui.USE_INNER_CODE, null ) AS innerNum,
ifnull ( joi.CODE96333, null ) AS rescueCode,
ifnull ( joi.SUPERVISORY_CODE, null ) AS registerCode,
ifnull ( jui.ADDRESS, null ) AS address,
ifnull ( jui.PROVINCE_NAME, null ) AS province,
ifnull ( jui.CITY_NAME, null ) AS city,
ifnull ( jui.COUNTY_NAME, null ) AS district,
ifnull ( jui."LONGITUDE_LATITUDE"::json->> 'latitude', null ) AS latitude,
ifnull ( jui."LONGITUDE_LATITUDE"::json->> 'longitude', null ) AS longitude,
concat(jui.PROVINCE, '#',jui.CITY, '#',jui.COUNTY) AS regionCode
FROM
idx_biz_jg_use_info jui
LEFT JOIN idx_biz_jg_other_info joi ON jui.RECORD = joi.RECORD
LEFT JOIN idx_biz_jg_register_info jri ON jri.RECORD = jui.RECORD
WHERE
jri.EQU_LIST = '3000'
AND joi.CLAIM_STATUS = '已认领'
AND jui.IS_NOT_ELEV is null
and joi."CODE96333" <![CDATA[<>]]> ''
and jri."USE_ORG_CODE" <![CDATA[<>]]> ''
ORDER BY jui.REC_DATE
</select>
</mapper>
......@@ -649,5 +649,17 @@ public class ElevatorController extends BaseController {
return ResponseHelper.buildResponse(addressListNew);
}
/**
*
* @return 成功处理条数
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/v1/es/insert", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "电梯信息放入es", notes = "电梯信息放入es")
public ResponseModel<String> esInsert() {
Long total = iElevatorService.esInsert();
return ResponseHelper.buildResponse("success insert: " + total);
}
}
package com.yeejoin.amos.boot.module.elevator.biz.job;
import com.yeejoin.amos.boot.module.elevator.api.service.IElevatorService;
import lombok.RequiredArgsConstructor;
import net.javacrumbs.shedlock.spring.annotation.SchedulerLock;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
@RequiredArgsConstructor
public class SynElevator2EsJob {
private final IElevatorService iElevatorService;
@Scheduled(cron = "${elevator.syn.insert.job.cron:0 0 2 * * ?}")
@SchedulerLock(name = "synElevator2Es", lockAtMostFor = "PT1H")
public void synElevator2Es() {
iElevatorService.esInsert();
}
}
......@@ -47,6 +47,7 @@ import org.springframework.data.elasticsearch.core.SearchHits;
import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.stereotype.Service;
import org.springframework.util.StopWatch;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import java.util.ArrayList;
......@@ -79,11 +80,6 @@ public class ESElevatorServiceImpl {
@Autowired
AlertCalledServiceImpl iAlertCalledService;
@Autowired
ElevatorServiceImpl elevatorService;
@Autowired
ElevatorAlarmServiceImpl elevatorAlarmServiceImpl;
@Autowired
private SuperviseInfoMapper superviseInfoMapper;
......@@ -618,18 +614,15 @@ public class ESElevatorServiceImpl {
esElevatorList.add(esElevator);
recordList.add(String.valueOf(map.get("sequenceNbr")));
}
long start = System.currentTimeMillis();
StopWatch watch = new StopWatch();
watch.start();
esElavtorRepository.saveAll(esElevatorList);
long end = System.currentTimeMillis();
long cost = end - start;
System.out.println("批量存入es1000条数据耗时:" + cost);
log.info("批量存入es:【" + elevatorList.size() + "】条,耗时:" + (end - start) + " 毫秒");
long start1 = System.currentTimeMillis();
watch.stop();
log.info("批量存入es:【{}】条,耗时:{} 毫秒", elevatorList.size(),watch.getTotalTimeSeconds());
StopWatch watch2 = new StopWatch();
watch2.start();
superviseInfoMapper.updateRecordBatch(recordList);
long end1 = System.currentTimeMillis();
long cost1 = end1 - start1;
log.info("批量更新:【" + elevatorList.size() + "】条业务数据,耗时:" + (end - start) + " 毫秒");
watch2.stop();
log.info("批量更新:【{}】条业务数据,耗时:{} 毫秒", elevatorList.size(), watch2.getTotalTimeSeconds());
}
}
......@@ -87,13 +87,12 @@ public class ElevatorServiceImpl extends BaseService<ElevatorDto, Elevator, Elev
@Autowired
DataDictionaryServiceImpl iDataDictionaryService;
@Autowired
ElevatorInsureRelationServiceImpl iElevatorInsureRelationServiceImpl;
@Autowired
ElevatorInsureServiceImpl iElevatorInsureServiceImpl;
//一码通设备使用场所字典type
private static final String ADDRESS = "ADDRESS";
@Autowired
ESElevatorServiceImpl esElevatorService;
@Autowired
RestHighLevelClient restHighLevelClient;
......@@ -101,7 +100,6 @@ public class ElevatorServiceImpl extends BaseService<ElevatorDto, Elevator, Elev
private RedisUtils redisUtils;
private static final String LEVEL = "company";
private static final String EQUSTATE = "EQU_STATE";
private static final String USEPLACE = "USE_PLACE";
/**
* 保存电梯信息
*
......@@ -333,6 +331,20 @@ public class ElevatorServiceImpl extends BaseService<ElevatorDto, Elevator, Elev
}
@Override
public Long esInsert() {
Page<Map<String, Object>> page = new Page<>(0, 1000);
page = elevatorMapper.selectElevatorOfIntoManage(page);
long allPages = page.getPages();
while (allPages > 0){
allPages --;
Page<Map<String, Object>> result = elevatorMapper.selectElevatorOfIntoManage(page);
List<Map<String, Object>> elevators = result.getRecords();
esElevatorService.saveEsElevator2ES(elevators);
}
return page.getTotal();
}
@Override
public Page<Map<String, Object>> selectElevators(Page<Map<String, Object>> page, ElevatorDto dto) {
List<CompanyModel> companyModels = FeignUtil.remoteCall(() -> Privilege.companyClient.queryListByChild(RequestContext.getExeUserId()));
if (companyModels.isEmpty()) {
......
......@@ -173,10 +173,15 @@ public class ESEquipmentCategoryDto {
@Field(type = FieldType.Text)
private String INFORMATION_SITUATION;
/**
* 工程装置id(工业管道使用)
*/
@Field(type = FieldType.Keyword, name = "PROJECT_CONTRAPTION_ID")
private String projectContraptionId;
/**
* 资料是否齐全(0齐全, 1不齐全)-西安数据导入
*/
@Field(type = FieldType.Boolean, name = "IS_COMPLETE_XA")
private Boolean IS_COMPLETE_XA;
}
......@@ -33,4 +33,9 @@ public class EquipBasicInfoDto {
*/
private String useInnerCode;
/**
* 气瓶公称工作压力
*/
private Double workPressure;
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import com.yeejoin.amos.boot.biz.common.annotation.FieldDisplayDefine;
import com.yeejoin.amos.boot.biz.common.annotation.Group;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class UseRegisterChangeDataDto extends BaseChangeDataDto {
@Group(value = "equip_use_info")
public class EquipUseInfoChangeDataDto extends BaseChangeDataDto {
@FieldDisplayDefine(value = "使用单位统一信用代码")
private String useUnitCreditCode;
@FieldDisplayDefine(value = "使用单位名称")
private String useUnitName;
@FieldDisplayDefine(value = "单位内部编号")
private String useInnerCode;
}
......@@ -57,7 +57,7 @@ public interface JgChangeRegistrationReformMapper extends BaseMapper<JgChangeReg
IPage<IdxBizJgProjectContraption> queryJgProjectContraptionPage(Page<IdxBizJgProjectContraption> page,@Param("companyCode") String useUnitCreditCode,@Param("proIds") Set<String> proIds);
/**
* 查询指定装置下的管道,样式为汇总表样式
* 查询指定装置下的管道,样式为汇总表样式
* @param projectContraptionSeq 装置id
* @return List<Map<String, Object>>
*/
......
......@@ -118,4 +118,6 @@ public interface JgUseRegistrationMapper extends BaseMapper<JgUseRegistration> {
* @return List<Map<String, Object>>
*/
List<Map<String, Object>> selectPieLineListByOfCanReg(@Param("projectContraptionSeqList") List<String> projectContraptionSeqList);
Integer countUseTimesForInvalid(@Param("code") Object code);
}
......@@ -46,4 +46,6 @@ public interface JgVehicleInformationMapper extends BaseMapper<JgVehicleInformat
String getEquCategoryNameByCode(String code);
List<CompanyEquipCountDto> queryForFlowingEquipList();
Integer countUseTimesForInvalid(@Param("code") Object code);
}
......@@ -140,7 +140,7 @@
</if>
<if test="dto.dataType != null and dto.dataType == 'supervision' ">
and (ur.receive_company_code = #{dto.receiveOrgCode} or (ur.transfer_to_user_ids like concat('%',#{currentUserId},'%')))
AND ur.instance_id <![CDATA[<>]]> ''
AND ur.instanceId <![CDATA[<>]]> ''
</if>
<if test="dto.dataType != null and dto.dataType == 'company' ">
and (ur.use_unit_credit_code = #{dto.useUnitCreditCode} or (ur.transfer_to_user_ids like concat('%',#{currentUserId},'%')))
......@@ -377,7 +377,8 @@
pp."WORK_MEDIUM" AS workMedium,
(select INSPECT_ORG_NAME from idx_biz_jg_inspection_detection_info where "RECORD" = ui."RECORD" ORDER BY INSPECT_DATE DESC limit 1) inspectOrgName,
(select name from cb_data_dictionary where type = 'JYJL' and code = (select INSPECT_CONCLUSION from idx_biz_jg_inspection_detection_info where "RECORD" = ui."RECORD" ORDER BY INSPECT_DATE DESC limit 1)) inspectConclusion,
to_char((select NEXT_INSPECT_DATE from idx_biz_jg_inspection_detection_info where "RECORD" = ui."RECORD" ORDER BY INSPECT_DATE DESC limit 1), 'YYYY-MM-DD') nextInspectDate
to_char((select NEXT_INSPECT_DATE from idx_biz_jg_inspection_detection_info where "RECORD" = ui."RECORD" ORDER BY INSPECT_DATE DESC limit 1), 'YYYY-MM-DD') nextInspectDate,
(select INSPECT_REPORT from idx_biz_jg_inspection_detection_info where "RECORD" = ui."RECORD" ORDER BY INSPECT_DATE DESC limit 1) inspectReport
FROM
idx_biz_jg_use_info ui
LEFT JOIN idx_biz_jg_register_info ri on ri."RECORD" = ui."RECORD"
......
......@@ -39,9 +39,6 @@
<select id="queryByUseUnitCreditCode" resultType="com.yeejoin.amos.boot.module.jg.api.dto.JgUseRegistrationManageDto">
<include refid="page_list"/>
from tzs_jg_use_registration_manage tjurm
<if test="dto.regType != null and dto.regType != '' ">
LEFT JOIN tzs_jg_use_registration ur on ur.use_registration_code = tjurm.use_registration_code
</if>
<where>
tjurm.is_delete = 0
<if test="dto.useUnitCreditCode != null and dto.useUnitCreditCode != ''">
......@@ -66,7 +63,12 @@
AND tjurm.reg_type != '车用气瓶登记'
</if>
<if test="dto.regType != null and dto.regType != '' ">
AND ur.reg_type in (0,2)
AND EXISTS (
SELECT 1
FROM tzs_jg_use_registration ur
WHERE ur.use_registration_code = tjurm.use_registration_code
AND ur.reg_type IN (0, 2)
)
</if>
ORDER BY tjurm.rec_date DESC
</where>
......@@ -340,15 +342,6 @@
select
equ_id as record
from
tzs_jg_maintenance_contract a,
tzs_jg_maintenance_contract_eq b
where
a.sequence_nbr = b.equip_transfer_id
and (a.status <![CDATA[ <> ]]> '已作废' and a.status <![CDATA[ <> ]]> '维保单位已驳回' and a.status <![CDATA[ <> ]]> '使用单位已撤回' and a.status <![CDATA[ <> ]]> '使用单位待提交')
UNION
select
equ_id as record
from
tzs_jg_reform_notice a,
tzs_jg_reform_notice_eq b
where
......@@ -372,24 +365,6 @@
where
a.sequence_nbr = b.equip_transfer_id
and (a.notice_status <![CDATA[ <> ]]> '6614' and a.notice_status <![CDATA[ <> ]]> '6615' and a.notice_status <![CDATA[ <> ]]> '6610' and a.notice_status <![CDATA[ <> ]]> '6617')
UNION
select
equ_id as record
from
tzs_jg_vehicle_information a,
tzs_jg_vehicle_information_eq b
where
a.sequence_nbr = b.vehicle_id
and (a.status <![CDATA[ <> ]]> '使用单位待提交' and a.status <![CDATA[ <> ]]> '一级受理已驳回' and a.status <![CDATA[ <> ]]> '使用单位已撤回' and a.status <![CDATA[ <> ]]> '已作废')
UNION
select
equ_id as record
from
tzs_jg_change_vehicle_registration_unit a,
tzs_jg_change_vehicle_registration_unit_eq b
where
a.sequence_nbr = b.unit_change_id
and (a.status <![CDATA[ <> ]]> '使用单位待提交' and a.status <![CDATA[ <> ]]> '一级受理已驳回' and a.status <![CDATA[ <> ]]> '使用单位已撤回' and a.status <![CDATA[ <> ]]> '已作废')
) temp
) a ON ibjui.record = a.record
WHERE
......
......@@ -817,12 +817,14 @@
pp."WORK_PRESSURE" AS workPressure,
pp."WORK_TEMPERATURE" AS workTemperature,
pp."WORK_MEDIUM" AS workMedium,
(select SEQUENCE_NBR from idx_biz_jg_inspection_detection_info where "RECORD" = ui."RECORD" ORDER BY INSPECT_DATE DESC limit 1) jySeq,
(select INSPECT_ORG_NAME from idx_biz_jg_inspection_detection_info where "RECORD" = ui."RECORD" ORDER BY INSPECT_DATE DESC limit 1) inspectOrgName,
(select INSPECT_ORG_CODE from idx_biz_jg_inspection_detection_info where "RECORD" = ui."RECORD" ORDER BY INSPECT_DATE DESC limit 1) inspectOrgCode,
(select INSPECT_REPORT_NO from idx_biz_jg_inspection_detection_info where "RECORD" = ui."RECORD" ORDER BY INSPECT_DATE DESC limit 1) inspectReportNo,
(select INSPECT_CONCLUSION from idx_biz_jg_inspection_detection_info where "RECORD" = ui."RECORD" ORDER BY INSPECT_DATE DESC limit 1) inspectConclusionCode,
(select name from cb_data_dictionary where type = 'JYJL' and code = (select INSPECT_CONCLUSION from idx_biz_jg_inspection_detection_info where "RECORD" = ui."RECORD" ORDER BY INSPECT_DATE DESC limit 1)) inspectConclusion,
to_char((select NEXT_INSPECT_DATE from idx_biz_jg_inspection_detection_info where "RECORD" = ui."RECORD" ORDER BY INSPECT_DATE DESC limit 1), 'YYYY-MM-DD') nextInspectDate
to_char((select NEXT_INSPECT_DATE from idx_biz_jg_inspection_detection_info where "RECORD" = ui."RECORD" ORDER BY INSPECT_DATE DESC limit 1), 'YYYY-MM-DD') nextInspectDate,
(select INSPECT_REPORT from idx_biz_jg_inspection_detection_info where "RECORD" = ui."RECORD" ORDER BY INSPECT_DATE DESC limit 1) inspectReport
FROM
idx_biz_jg_use_info ui
LEFT JOIN idx_biz_jg_register_info ri on ri."RECORD" = ui."RECORD"
......@@ -964,6 +966,9 @@
<choose>
<when test="jsonObject.DATA_SOURCE == 'jg_his_black'">
and ui."DATA_SOURCE" like 'jg_his_black%'
and CURRENT_DATE <![CDATA[<]]> (select NEXT_INSPECT_DATE
from idx_biz_jg_inspection_detection_info
where "RECORD" = ui."RECORD" ORDER BY REC_DATE DESC limit 1 )
</when>
<when test="jsonObject.DATA_SOURCE == 'jg_his'">
and ui."DATA_SOURCE" like 'jg_his%'
......@@ -1402,4 +1407,49 @@
AND A.is_delete = 0
AND A.supervision_org_code is not null
</select>
<select id="countUseTimesForInvalid" resultType="java.lang.Integer">
select sum(inUseNumber) from (
select count(1) as inUseNumber
from
tzs_jg_change_registration_reform a
where a.use_registration_code = #{code}
AND a.is_delete = 0
AND a.status != '已作废'
UNION
select
count(1) as inUseNumber
from
tzs_jg_change_registration_transfer a,
tzs_jg_change_registration_transfer_eq b
where a.sequence_nbr = b.equip_transfer_id
AND b.use_registration_code = #{code}
AND a.is_delete = 0
AND a.status != '已作废'
UNION
SELECT COUNT(*) AS inUseNumber
FROM tzs_jg_enable_disable a
WHERE a.use_registration_code LIKE CONCAT('%',#{code},'%')
AND a.is_delete = 0
AND a.audit_status != '已作废'
UNION
SELECT COUNT(*) AS inUseNumber
FROM tzs_jg_scrap_cancel a
WHERE a.use_registration_code LIKE CONCAT('%',#{code},'%')
AND a.is_delete = 0
AND a.audit_status != '已作废'
UNION
select
count(1) as inUseNumber
from
"tzs_jg_use_registration_eq" ae
JOIN tzs_jg_use_registration A ON A.sequence_nbr = ae.equip_transfer_id
JOIN "tzs_jg_equip_transfer_eq" tjete ON ae.equ_id = tjete."equ_id"
JOIN tzs_jg_equip_transfer tjet ON tjete."equip_transfer_id" = tjet."sequence_nbr"
where
A.use_registration_code = #{code}
AND tjet.is_delete = 0
AND tjet.apply_status != '已作废'
)
</select>
</mapper>
......@@ -303,4 +303,23 @@
and a.status in ('三级待受理', '二级待受理', '一级待受理')
GROUP BY a.use_unit_credit_code
</select>
<select id="countUseTimesForInvalid" resultType="java.lang.Integer">
SELECT SUM(inUseNumber)
FROM (SELECT COUNT(*) AS inUseNumber
FROM tzs_jg_enable_disable a
WHERE a.use_registration_code LIKE CONCAT('%',#{code},'%')
AND a.is_delete = 0
AND a.audit_status != '已作废'
UNION
SELECT
count(1) as inUseNumber
FROM
tzs_jg_change_vehicle_registration_unit a,
tzs_jg_vehicle_information b
WHERE
a.car_number = b.car_number
AND b.use_registration_code = #{code}
AND a.status != '已作废')
</select>
</mapper>
......@@ -176,4 +176,21 @@ public class DataHandlerController extends BaseController {
watch.stop();
return ResponseHelper.buildResponse(String.format("同步成功,耗时:%s", watch.getTotalTimeSeconds()));
}
@ApiOperation(httpMethod = "PUT", value = "补充西安导入数据的使用信用代码,压力管道除外", notes = "补充西安导入数据的使用信用代码,压力管道除外")
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PutMapping(value = "/v1/xa/useInfo")
public ResponseModel<Boolean> updateUseInfoOfCompanyV1(){
dataHandlerService.updateUseInfoOfCompanyV1();
return ResponseHelper.buildResponse(true);
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "恢复单位变更数据", notes = "恢复单位变更数据")
@GetMapping(value = "/restore")
public ResponseModel<Boolean> restore(){
dataHandlerService.restore();
return ResponseHelper.buildResponse(true);
}
}
......@@ -33,7 +33,11 @@ import java.util.Map;
public class IdxBizJgProjectContraptionController extends BaseController {
// 设备基本信息表单id
private static final String EQUIP_INFO_FORM_ID = "equipInfo";
@Autowired
public static final String PIPELINE_LIST = "pipelineList";
public static final String DEVICE_LIST = "deviceList";
public static final String USE_UNIT_CREDIT_CODE = "USE_UNIT_CREDIT_CODE";
public static final String USE_UNIT_NAME = "USE_UNIT_NAME";
@Autowired
IdxBizJgProjectContraptionServiceImpl idxBizJgProjectContraptionServiceImpl;
/**
......@@ -141,9 +145,9 @@ public class IdxBizJgProjectContraptionController extends BaseController {
// 传record的原因是前端组件内部写死了,此处是工程装置表seq
public ResponseModel<Object> detailsNotFormId(@RequestParam("record") String sequenceNbr) {
Map<String, Object> objectMap = idxBizJgProjectContraptionServiceImpl.details(sequenceNbr).get(EQUIP_INFO_FORM_ID);
Object pipelineListObj = objectMap.remove("pipelineList");
objectMap.put("deviceList", pipelineListObj);
objectMap.put("useUnitCreditCode", objectMap.get("USE_UNIT_CREDIT_CODE") + "_" + objectMap.get("USE_UNIT_NAME"));
Object pipelineListObj = objectMap.remove(PIPELINE_LIST);
objectMap.put(DEVICE_LIST, pipelineListObj);
objectMap.put("useUnitCreditCode", objectMap.get(USE_UNIT_CREDIT_CODE) + "_" + objectMap.get(USE_UNIT_NAME));
return ResponseHelper.buildResponse(objectMap);
}
......
......@@ -80,7 +80,14 @@ public class IdxBizJqEquipmentRegisterController extends BaseController {
@GetMapping(value = "/{record}")
@ApiOperation(httpMethod = "GET", value = "根据record查询设备注册信息详情", notes = "根据record查询设备注册信息详情")
public ResponseModel<Object> selectOne(@PathVariable String record, @RequestParam(required = false) String isCopy) {
return ResponseHelper.buildResponse(idxBizJgRegisterInfoService.getEquipmentRegisterByRecord(record, isCopy));
CompanyBo companyBo = getSelectedOrgInfo().getCompany();
String companyLevel;
if(companyBo.getLevel().equals(BaseController.COMPANY_TYPE_COMPANY)){
companyLevel = companyBo.getLevel();
} else {
companyLevel = BaseController.COMPANY_TYPE_SUPERVISION;
}
return ResponseHelper.buildResponse(idxBizJgRegisterInfoService.getEquipmentRegisterByRecord(record, isCopy, companyLevel));
}
......
......@@ -149,6 +149,9 @@ public class JgUseRegistrationController extends BaseController {
x.put("regType", "1".equals(x.get("regType")) ? "历史登记": "2".equals(x.get("regType")) ? "特殊历史登记": "新增登记");
if ("8000".equals(String.valueOf(x.get("equListCode"))) && !ValidationUtil.isEmpty(x.get("projectContraptionId"))){
x.put("canVoided", jgProjectContraptionMapper.countContraptionInUseTimesForDeleteByIntoManagement(Long.parseLong((String) x.get("projectContraptionId"))) == 0);
} else {
x.put("canVoided", Optional.ofNullable(x.get("useRegistrationCode")).map(jgUseRegistrationServiceImpl::countUseTimesForInvalid)
.orElse(true));
}
});
return ResponseHelper.buildResponse(list);
......@@ -364,7 +367,7 @@ public class JgUseRegistrationController extends BaseController {
@GetMapping(value = "/jgProjectContraptionPage")
@ApiOperation(value = "查询指定使用单位下的可用装置,已纳管且使用登记证编号为空或者null", notes = "不包括流程中的")
public ResponseModel<IPage<IdxBizJgProjectContraption>> getJgProjectContraptionPage(@RequestParam(value = "useUnitCreditCode") String useUnitCreditCode,
@RequestParam(value = "dataSource") String dataSource,
@RequestParam(value = "dataSource",required = false) String dataSource,
@RequestParam(value = "current") int current,
@RequestParam(value = "size") int size) {
Page<IdxBizJgProjectContraption> page = new Page<>();
......
......@@ -13,6 +13,7 @@ import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgVehicleInformationServiceImpl;
import org.typroject.tyboot.component.event.RestEventTrigger;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
......@@ -152,6 +153,9 @@ public class JgVehicleInformationController extends BaseController {
list.getRecords().forEach(x -> {
x.put("companyType", info.getCompany().getCompanyType());
x.put("regTypeDesc", "1".equals(x.get("regType")) ? "历史登记" : "新增登记");
x.put("canVoided", Optional.ofNullable(x.get("useRegistrationCode"))
.map(jgVehicleInformationServiceImpl::countUseTimesForInvalid)
.orElse(true));
});
return ResponseHelper.buildResponse(list);
}
......
......@@ -10,8 +10,8 @@ public class ChangeItemFactory {
private static final Map<String, Class<? extends BaseChangeDataDto>> ITEM_FACTORY = new HashMap<>();
static {
// 使用登记信息
ITEM_FACTORY.put("biz_use_register_info", UseRegisterChangeDataDto.class);
// 使用信息
ITEM_FACTORY.put("equip_use_info", EquipUseInfoChangeDataDto.class);
// 设备-注册登记信息
ITEM_FACTORY.put("equip_register_info", EquipRegisterChangeDataDto.class);
// 设备-制造信息
......
......@@ -22,7 +22,7 @@ public interface IIdxBizJgRegisterInfoService {
boolean batchDeleteByRecord(Map<String,Object> map);
Map<String, Map<String, Object>> getEquipmentRegisterByRecord(String record, String isCopy);
Map<String, Map<String, Object>> getEquipmentRegisterByRecord(String record, String isCopy, String companyLevel);
Page<JSONObject> queryForEquipmentRegisterPage(JSONObject jsonObject);
......
......@@ -8,11 +8,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.biz.common.utils.NameUtils;
import com.yeejoin.amos.boot.module.jg.api.dto.*;
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.CylinderTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationMapper;
import com.yeejoin.amos.boot.module.jg.api.service.IBizDataChangeHandleStrategy;
import com.yeejoin.amos.boot.module.jg.biz.service.IChangeDataProcessStrategy;
......
......@@ -2261,6 +2261,10 @@ public class CommonServiceImpl implements ICommonService {
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
Pattern timePattern = Pattern.compile("\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}");
//如果是历史无证的修改类型为SP_TT并且枚举没有在登记类型中
if(Objects.isNull(RegistrationTypeEnum.getNameByType(formData.getString("type"))) && "jg_his_black".equals(formData.getString("dataSource"))){
formData.put("type","SP_TT");
}
//如果是历史无证的修改类型为SP_TT并且枚举没有在登记类型中
if(Objects.isNull(RegistrationTypeEnum.getNameByType(formData.getString("type"))) && "jg_his_black".equals(formData.getString("dataSource"))){
......@@ -2363,8 +2367,9 @@ public class CommonServiceImpl implements ICommonService {
formData.put("gasNum",equips.size());
//设备品种
formData.put("equDefineName",equips.get(0).get("equDefineName"));
//气瓶压力及容积求和
formData.put("workPressure", equips.stream().mapToDouble(e -> Optional.ofNullable(e.get("nominalWorkingPressure")).map(v -> Double.valueOf(v.toString())).orElse(0.0)).sum());
// 气瓶压力及容积求和 BUG 27524 【现场需求】监管业务-登记管理-使用登记,气瓶特种设备使用登记表气瓶公称压力取最大值
// equips.stream().mapToDouble(e -> Optional.ofNullable(e.get("nominalWorkingPressure")).map(v -> Double.valueOf(v.toString())).orElse(0.0)).sum()
formData.put("workPressure", equips.stream().mapToDouble(e -> Optional.ofNullable(e.get("nominalWorkingPressure")).map(v -> Double.valueOf(v.toString())).orElse(0.0)).max().getAsDouble());
formData.put("volume", equips.stream().mapToDouble(e -> Optional.ofNullable(e.get("singleBottleVolume")).map(v -> Double.valueOf(v.toString())).orElse(0.0)).sum());
Set<String> chargingMedium = equips.stream().map(e -> String.valueOf(e.get("chargingMedium"))).collect(Collectors.toSet());
if (chargingMedium.size()>1){
......
......@@ -11,21 +11,23 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.dao.mapper.DataDictionaryMapper;
import com.yeejoin.amos.boot.biz.common.dto.KeyValueDto;
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.TzsBaseEntity;
import com.yeejoin.amos.boot.biz.common.utils.SnowflakeIdUtil;
import com.yeejoin.amos.boot.module.common.api.dao.ESEquipmentCategory;
import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto;
import com.yeejoin.amos.boot.module.jg.api.dto.JgInstallationNoticeEqDto;
import com.yeejoin.amos.boot.module.jg.api.dto.PieLineEquipContraptionDto;
import com.yeejoin.amos.boot.module.jg.api.entity.*;
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.mapper.CommonMapper;
import com.yeejoin.amos.boot.module.jg.api.mapper.DataHandlerMapper;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgInstallationNoticeEqMapper;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgInstallationNoticeMapper;
import com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient;
import com.yeejoin.amos.boot.module.jg.biz.service.IIdxBizJgInspectionDetectionInfoService;
import com.yeejoin.amos.boot.module.ymt.api.entity.*;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquimentEnum;
......@@ -34,7 +36,6 @@ import com.yeejoin.amos.boot.module.ymt.api.mapper.*;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
......@@ -43,13 +44,12 @@ import org.springframework.util.StopWatch;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
......@@ -91,8 +91,11 @@ public class DataHandlerServiceImpl {
private final JgInstallationNoticeMapper jgInstallationNoticeMapper;
private final DataHandlerMapper dataHandlerMapper;
private final CategoryOtherInfoMapper categoryOtherInfoMapper;
;
private final CommonMapper commonMapper;
private final JgChangeRegistrationUnitServiceImpl jgChangeRegistrationUnitService;
private final JgChangeRegistrationUnitEqServiceImpl jgChangeRegistrationUnitEqService;
private final UseInfoMapper useInfoMapper;
private final TzsServiceFeignClient tzsServiceFeignClient;
/**
* 安装告知压力管道历史数据修复-详情中的设备列表修改为汇总表格式
......@@ -1029,4 +1032,82 @@ public class DataHandlerServiceImpl {
}
}
}
/**
* 查询公司代码为空或者长度小于15位的西安设备,以tzs_jg_unit_import为准【按照单位名称】更新使用信息表的【使用单位编码】、es的【使用单位编码】
*/
public void updateUseInfoOfCompanyV1() {
List<IdxBizJgUseInfo> useInfos = useInfoService.getBaseMapper().selectXAList();
log.info("1.西安导入数据需补充使用单位代码的设备数量:{}", useInfos.size());
Map<String, String> companynameCodeMap = getCompanyNameCodeMap();
AtomicInteger i = new AtomicInteger();
useInfos.forEach(e->{
String companyCode = companynameCodeMap.get(e.getUseUnitName());
if(companyCode != null){
i.getAndIncrement();
// 1.数据库更新
LambdaUpdateWrapper<IdxBizJgUseInfo> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(TzsBaseEntity::getSequenceNbr, e.getSequenceNbr());
updateWrapper.set(IdxBizJgUseInfo::getUseUnitCreditCode, companyCode);
updateWrapper.set(TzsBaseEntity::getRecDate, new Date());
useInfoService.update(updateWrapper);
// 2.es更新
Optional<ESEquipmentCategoryDto> categoryDto = esEquipmentCategory.findById(e.getRecord());
categoryDto.ifPresent(categoryEs -> {
categoryEs.setUSE_UNIT_CREDIT_CODE(companyCode);
// 捎带更新单位名称保持数据库和es一致
categoryEs.setUSC_UNIT_NAME(e.getUseUnitName());
esEquipmentCategory.save(categoryEs);
});
}
});
log.info("2.西安数据需补充使用单位设备数量:{}, 实际补充使用单位设备数量:{}", useInfos.size(), i.intValue());
}
private Map<String, String> getCompanyNameCodeMap() {
List<KeyValueDto> companyList = commonMapper.queryAllCompanyDict();
return companyList.stream().collect(Collectors.toMap(KeyValueDto::getStrKey, KeyValueDto::getStrValue, (k1, k2)->k1));
}
public void restore() {
LambdaQueryWrapper<JgChangeRegistrationUnit> jgChangeRegistrationUnitWrapper = new LambdaQueryWrapper<>();
jgChangeRegistrationUnitWrapper.orderByAsc(JgChangeRegistrationUnit::getRecDate);
List<JgChangeRegistrationUnit> changeRegistrationUnits = jgChangeRegistrationUnitService.list(jgChangeRegistrationUnitWrapper);
for (JgChangeRegistrationUnit changeRegistrationUnit : changeRegistrationUnits) {
String status = changeRegistrationUnit.getStatus();
String useUnitName = null;
String useUnitCreditCode = null;
Date date = null;
if("已完成".equals(status)){
useUnitName = changeRegistrationUnit.getNewUseUnitName();
useUnitCreditCode = changeRegistrationUnit.getNewUseUnitCreditCode();
date = changeRegistrationUnit.getRecDate();
}else {
useUnitName = changeRegistrationUnit.getUseUnitName();
useUnitCreditCode = changeRegistrationUnit.getUseUnitCreditCode();
date = changeRegistrationUnit.getCreateDate();
}
LambdaQueryWrapper<JgChangeRegistrationUnitEq> unitEqWrapper = new LambdaQueryWrapper<>();
unitEqWrapper.eq(JgChangeRegistrationUnitEq::getUnitChangeRegistrationId,changeRegistrationUnit.getSequenceNbr());
List<JgChangeRegistrationUnitEq> changeRegistrationUnitEqs = jgChangeRegistrationUnitEqService.list(unitEqWrapper);
Map<String, Map<String, Object>> resultMap = new HashMap<>();
for (JgChangeRegistrationUnitEq changeRegistrationUnitEq : changeRegistrationUnitEqs) {
String equipId = changeRegistrationUnitEq.getEquId();
if(StringUtils.isNotEmpty(equipId)){
LambdaUpdateWrapper<UseInfo> queryWrapper2 = new LambdaUpdateWrapper<>();
queryWrapper2.set(UseInfo::getUseUnitName,useUnitName);
queryWrapper2.set(UseInfo::getUseUnitCreditCode,useUnitCreditCode);
queryWrapper2.set(UseInfo::getRecDate,date);
queryWrapper2.eq(UseInfo::getRecord, equipId);
useInfoMapper.update(null,queryWrapper2);
Map<String, Object> map1 = new HashMap<>();
map1.put("USE_UNIT_CREDIT_CODE", useUnitCreditCode);
map1.put("USE_UNIT_NAME", useUnitName);
map1.put("REC_DATE", date);// 更新时间
resultMap.put(equipId, map1);
tzsServiceFeignClient.commonUpdateEsDataByIds(resultMap);
}
}
}
}
}
......@@ -9,15 +9,13 @@ import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto;
import com.yeejoin.amos.boot.module.jg.api.dto.*;
import com.yeejoin.amos.boot.module.jg.api.enums.CylinderTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.CommonMapper;
import com.yeejoin.amos.boot.module.ymt.api.entity.EquipmentCategory;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgDesignInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgFactoryInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgRegisterInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.*;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquCodeTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.EquipmentCategoryMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgDesignInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgFactoryInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgRegisterInfoMapper;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
......@@ -28,6 +26,7 @@ import java.util.Optional;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class EquipChangeDataUpdateService {
private final ESEquipmentCategory esEquipmentCategory;
......@@ -42,14 +41,7 @@ public class EquipChangeDataUpdateService {
private final EquipmentCategoryMapper equipmentCategoryMapper;
public EquipChangeDataUpdateService(ESEquipmentCategory esEquipmentCategory, IdxBizJgDesignInfoMapper idxBizJgDesignInfoMapper, IdxBizJgFactoryInfoMapper jgFactoryInfoMapper, IdxBizJgRegisterInfoMapper idxBizJgRegisterInfoMapper, CommonMapper commonMapper, EquipmentCategoryMapper equipmentCategoryMapper) {
this.esEquipmentCategory = esEquipmentCategory;
this.idxBizJgDesignInfoMapper = idxBizJgDesignInfoMapper;
this.jgFactoryInfoMapper = jgFactoryInfoMapper;
this.idxBizJgRegisterInfoMapper = idxBizJgRegisterInfoMapper;
this.commonMapper = commonMapper;
this.equipmentCategoryMapper = equipmentCategoryMapper;
}
private final IdxBizJgUseInfoServiceImpl idxBizJgUseInfoService;
public void updateRegisterChangeData(String record, EquipRegisterChangeDataDto registerChangeDataDto) {
LambdaUpdateWrapper<IdxBizJgRegisterInfo> updateWrapper = new LambdaUpdateWrapper<>();
......@@ -116,6 +108,7 @@ public class EquipChangeDataUpdateService {
}
}
private void updateRegisterEsData(String record, EquipRegisterChangeDataDto registerChangeDataDto) {
// es 数据更新
Optional<ESEquipmentCategoryDto> optional = esEquipmentCategory.findById(record);
......@@ -165,7 +158,7 @@ public class EquipChangeDataUpdateService {
public void checkFactoryChangeData(String record, EquipFactoryChangeDataDto equipFactoryChangeDataDto, String equList, String equCategory, String equDefine) {
// 气瓶时检验出厂编号-普通气瓶,车用气瓶不再此范围内
if (CylinderTypeEnum.CYLINDER.getCode().equals(equCategory)) {
if (CylinderTypeEnum.CYLINDER.getCode().equals(equCategory) && StringUtils.isNotEmpty(equipFactoryChangeDataDto.getFactoryNum())) {
boolean isUsed = this.checkFactoryNumUnique(equipFactoryChangeDataDto.getFactoryNum(), record, equipFactoryChangeDataDto.getProduceUnitCreditCode());
if (isUsed) {
throw new BadRequest("出厂编号/产品编码在该企业中已存在!");
......@@ -211,4 +204,26 @@ public class EquipChangeDataUpdateService {
updateWrapper.set(IdxBizJgDesignInfo::getRecDate, new Date());
idxBizJgDesignInfoMapper.update(null, updateWrapper);
}
public void updateUseInfoChangeData(String record, EquipUseInfoChangeDataDto equipUseInfoChangeDataDto) {
LambdaUpdateWrapper<IdxBizJgUseInfo> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(IdxBizJgUseInfo::getRecord, record);
updateWrapper.set(IdxBizJgUseInfo::getUseUnitCreditCode, equipUseInfoChangeDataDto.getUseUnitCreditCode());
updateWrapper.set(IdxBizJgUseInfo::getUseUnitName, equipUseInfoChangeDataDto.getUseUnitName());
updateWrapper.set(IdxBizJgUseInfo::getUseInnerCode, equipUseInfoChangeDataDto.getUseInnerCode());
idxBizJgUseInfoService.update(updateWrapper);
this.updateUseInfoEsData(record, equipUseInfoChangeDataDto);
}
private void updateUseInfoEsData(String record, EquipUseInfoChangeDataDto equipUseInfoChangeDataDto) {
// es 数据更新
Optional<ESEquipmentCategoryDto> optional = esEquipmentCategory.findById(record);
if (optional.isPresent()) {
ESEquipmentCategoryDto esEquipmentCategoryDto = optional.get();
esEquipmentCategoryDto.setUSE_UNIT_CREDIT_CODE(equipUseInfoChangeDataDto.getUseUnitCreditCode());
esEquipmentCategoryDto.setUSC_UNIT_NAME(equipUseInfoChangeDataDto.getUseUnitName());
esEquipmentCategoryDto.setUSE_INNER_CODE(equipUseInfoChangeDataDto.getUseInnerCode());
esEquipmentCategory.save(esEquipmentCategoryDto);
}
}
}
......@@ -192,6 +192,44 @@ public class IdxBizJgProjectContraptionServiceImpl extends BaseService<IdxBizJgP
String useRegDetail = params.get("useRegDetail");
// 登录人公司类型:企业,监管
String companyLevel = this.getCompanyLevel(company);
// 未在业务流程中
boolean isNotInBusiness = !ValidationUtil.isEmpty(params.get("isNotInBusiness")) && params.get("isNotInBusiness").equals("true");
// 查询在业务流程中sql
String inBusinessSQL = "SELECT 1 FROM tzs_jg_change_registration_reform A WHERE\n" +
" idx_biz_jg_project_contraption.sequence_nbr = A.\"project_contraption_id\" \n" +
" AND A.\"is_delete\" = 0 \n" +
" AND A.audit_status <> '使用单位待提交' \n" +
" AND A.audit_status <> '一级受理已驳回' \n" +
" AND A.audit_status <> '使用单位已撤回' \n" +
" AND A.audit_status <> '已完成' \n" +
" AND A.audit_status <> '已作废' UNION ALL\n" +
"SELECT 1 FROM tzs_jg_installation_notice A \n" +
"WHERE\n" +
" idx_biz_jg_project_contraption.sequence_nbr = A.\"project_contraption_id\" \n" +
" AND A.\"is_delete\" = 0 \n" +
" AND A.notice_status <> '6614' \n" +
" AND A.notice_status <> '6615' \n" +
" AND A.notice_status <> '6610' \n" +
" AND A.notice_status <> '6616' \n" +
" AND A.notice_status <> '6617' UNION ALL\n" +
"SELECT 1 FROM tzs_jg_reform_notice A \n" +
"WHERE\n" +
" idx_biz_jg_project_contraption.sequence_nbr = A.\"project_contraption_id\" \n" +
" AND A.\"is_delete\" = 0 \n" +
" AND A.notice_status <> '6614' \n" +
" AND A.notice_status <> '6615' \n" +
" AND A.notice_status <> '6610' \n" +
" AND A.notice_status <> '6616' \n" +
" AND A.notice_status <> '6617' UNION ALL\n" +
"SELECT 1 FROM tzs_jg_use_registration A \n" +
"WHERE\n" +
" idx_biz_jg_project_contraption.sequence_nbr = A.\"project_contraption_id\" \n" +
" AND A.\"is_delete\" = 0 \n" +
" AND A.status <> '使用单位待提交' \n" +
" AND A.status <> '一级受理已驳回' \n" +
" AND A.status <> '使用单位已撤回' \n" +
" AND A.status <> '已完成' \n" +
" AND A.status <> '已作废'";
//获取省
String province = params.get("province");
if(!StringUtils.isEmpty(province) && province.contains("_")){
......@@ -240,6 +278,7 @@ public class IdxBizJgProjectContraptionServiceImpl extends BaseService<IdxBizJgP
.isNull(!ValidationUtil.isEmpty(regCodeIsNull) && Boolean.TRUE.equals(Boolean.valueOf(regCodeIsNull)), IdxBizJgProjectContraption::getUseRegistrationCode)
.isNotNull(!ValidationUtil.isEmpty(regCodeIsNull) && Boolean.FALSE.equals(Boolean.valueOf(regCodeIsNull)), IdxBizJgProjectContraption::getUseRegistrationCode)
.isNull(IdxBizJgProjectContraption::getProjectContraptionParentId)
.notExists(isNotInBusiness, inBusinessSQL)
.orderByDesc(IdxBizJgProjectContraption::getRecDate)
.page(page);
if (!ValidationUtil.isEmpty(pageList.getRecords())) {
......
......@@ -13,7 +13,6 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.base.Joiner;
......@@ -774,7 +773,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
String record = (String) equipmentInfoForm.get(RECORD);
String dataSource = (String) equipmentInfoForm.get(DATA_SOURCE);
if (dataSource.contains("his")) {
if (dataSource.contains("his") && equipmentInfoForm.get("useRegistrationCode") != null) {
String useRegistrationCode = String.valueOf(equipmentInfoForm.get("useRegistrationCode")).trim();
String equipId = String.valueOf(equipmentInfoForm.get("RECORD"));
// 校验使用登记证编号的唯一性
......@@ -1063,9 +1062,10 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
* 查询设备注册信息详情
*
* @param record
* @param companyLevel
* @return
*/
public Map<String, Map<String, Object>> getEquipmentRegisterByRecord(String record, String isCopy) {
public Map<String, Map<String, Object>> getEquipmentRegisterByRecord(String record, String isCopy, String companyLevel) {
Map<String, Map<String, Object>> resultMap = new HashMap<>();
// 设备种类
Map<String, Object> equIpClassMap = this.getEquIpClassMap(record, "");
......@@ -1074,6 +1074,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
if (!ValidationUtil.isEmpty(equIpClassMap)) {
resultMap.put(EQUIP_CLASS_FORM_ID, equIpClassMap);
}
equipInfoMap.put("companyLevel", companyLevel);
// 设备参数
if (equIpClassMap.containsKey(EQU_LIST) && !ValidationUtil.isEmpty(equIpClassMap.get(EQU_LIST).toString())) {
Map<String, Object> equipParamsMap = this.getEquipParamsMap(record, "", equIpClassMap.get(EQU_LIST).toString());
......@@ -2636,7 +2637,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
// 增加监管端查询, 查询规则看到本级及之下的设备
if(!ObjectUtils.isEmpty(map.getString("ORG_BRANCH_CODE"))){
if(companyLevel.equals(BaseController.COMPANY_TYPE_SUPERVISION)) { // 监管 右模糊查询
boolMust.must(QueryBuilders.wildcardQuery("ORG_BRANCH_CODE.keyword", QueryParser.escape(company.getString("ORG_BRANCH_CODE")) + "*"));
boolMust.must(QueryBuilders.wildcardQuery("ORG_BRANCH_CODE.keyword", QueryParser.escape(map.getString("ORG_BRANCH_CODE")) + "*"));
} else { // 企业 等于查询
boolMust.must(QueryBuilders.termQuery("ORG_BRANCH_CODE.keyword", map.getString("ORG_BRANCH_CODE")));
}
......@@ -3140,11 +3141,11 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
String record = null;
// 设备种类
String equList = String.valueOf(equipmentClassForm.get(EQU_LIST));
String equList = String.valueOf(equipmentInfoForm.get(EQU_LIST));
// 设备类别
String equCategory = String.valueOf(equipmentClassForm.get(EQU_CATEGORY));
String equCategory = String.valueOf(equipmentInfoForm.get(EQU_CATEGORY));
// 设备品种
String equDefine = String.valueOf(equipmentClassForm.get(EQU_DEFINE));
String equDefine = String.valueOf(equipmentInfoForm.get(EQU_DEFINE));
// 业务场景
String businessScenarios = String.valueOf(equipmentClassForm.get(BUSINESS_SCENARIOS));
// 操作类型
......
......@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapBuilder;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
......@@ -17,6 +18,8 @@ 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.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.common.api.dao.ESEquipmentCategory;
import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto;
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;
......@@ -83,7 +86,14 @@ import static java.util.stream.Collectors.toSet;
@Service
@Slf4j
public class JgChangeRegistrationReformServiceImpl extends BaseService<JgChangeRegistrationReformDto, JgChangeRegistrationReform, JgChangeRegistrationReformMapper> implements IJgChangeRegistrationReformService,ICompensateFlowDataOfRedis<JgChangeRegistrationReform> {
/**
* 安改维单位名称
*/
public static final String USC_UNIT_NAME = "USC_UNIT_NAME";
/**
* 安改维单位统一信用代码
*/
public static final String USC_UNIT_CREDIT_CODE = "USC_UNIT_CREDIT_CODE";
private final List<String> NOT_FLOWING_STATE = Arrays.asList("使用单位待提交", "一级受理已驳回", "使用单位已撤回", "已作废", "已完成");
private final static String BUSINESS_TYPE = "改造登记";
......@@ -120,6 +130,8 @@ public class JgChangeRegistrationReformServiceImpl extends BaseService<JgChangeR
private IdxBizJgFactoryInfoServiceImpl idxBizJgFactoryInfoService;
@Autowired
private OtherInfoMapper otherInfoMapper;
@Autowired
private ESEquipmentCategory esEquipmentCategory;
//改造登记关系表mapper
@Autowired
private JgChangeRegistrationReformEqMapper jgChangeRegistrationReformEqMapper;
......@@ -610,6 +622,8 @@ public class JgChangeRegistrationReformServiceImpl extends BaseService<JgChangeR
List<IdxBizJgTechParamsPipeline> paramsPipelines = updatePieLineTechAndInspection(jgChangeRegistrationReform);
// 2.按照装置生成证流水
saveCertFlowBatch(jgChangeRegistrationReform, paramsPipelines, taskV2Model);
// 3.清除设备及装置的安改维单位信息
this.clearUscWithEquipAndCon(jgChangeRegistrationReform);
}
}
......@@ -618,6 +632,31 @@ public class JgChangeRegistrationReformServiceImpl extends BaseService<JgChangeR
this.getBaseMapper().updateById(jgChangeRegistrationReform);
}
/**
* 审批通过后删除安改维单位信息
*
* @param reform
*/
private void clearUscWithEquipAndCon(JgChangeRegistrationReform reform) {
// 装置表
jgProjectContraptionService.lambdaUpdate()
.eq(IdxBizJgProjectContraption::getSequenceNbr, reform.getProjectContraptionId())
.set(IdxBizJgProjectContraption::getUscUnitCreditCode, null)
.set(IdxBizJgProjectContraption::getUscUnitName, null)
.update();
// es
List<JgChangeRegistrationReformEq> reformEqs = jgChangeRegistrationReformEqMapper.selectList(new LambdaQueryWrapper<JgChangeRegistrationReformEq>().eq(JgChangeRegistrationReformEq::getEquipTransferId, reform.getSequenceNbr()));
reformEqs.forEach(reformEq -> {
Optional<ESEquipmentCategoryDto> optional = esEquipmentCategory.findById(reformEq.getEquId());
if (optional.isPresent()) {
ESEquipmentCategoryDto esEquipmentCategoryDto = optional.get();
esEquipmentCategoryDto.setUSC_UNIT_NAME(null);
esEquipmentCategoryDto.setUSC_UNIT_CREDIT_CODE(null);
esEquipmentCategory.save(esEquipmentCategoryDto);
}
});
}
private void saveCertFlowBatch(JgChangeRegistrationReform jgChangeRegistrationReform, List<IdxBizJgTechParamsPipeline> paramsPipelines, TaskV2Model taskV2Model) {
// 1.更新使用登记证信息
JgUseRegistrationManage jgUseRegistrationManage = jgUseRegistrationManageService.lambdaQuery()
......@@ -1536,6 +1575,14 @@ public class JgChangeRegistrationReformServiceImpl extends BaseService<JgChangeR
case YLGD:
JSONObject jsonObject = JSONObject.parseObject(oldTechInfo);
JSONArray piePines = jsonObject.getJSONArray("equipmentLists");
// 装置和设备es中的安改维单位信息恢复
String uscUnitCreditCode = jsonObject.getString(USC_UNIT_CREDIT_CODE);
String uscUnitName = jsonObject.getString(USC_UNIT_NAME);
jgProjectContraptionService.lambdaUpdate()
.eq(IdxBizJgProjectContraption::getSequenceNbr, jgChangeRegistrationReform.getProjectContraptionId())
.set(IdxBizJgProjectContraption::getUscUnitCreditCode, uscUnitCreditCode)
.set(IdxBizJgProjectContraption::getUscUnitName, uscUnitName)
.update();
for(int i = 0; i < piePines.size(); i++){
JSONObject item = piePines.getJSONObject(i);
String rcd = item.getString("record");
......@@ -1545,6 +1592,14 @@ public class JgChangeRegistrationReformServiceImpl extends BaseService<JgChangeR
IdxBizJgTechParamsPipeline pipeline = BeanUtil.copyProperties(item, IdxBizJgTechParamsPipeline.class);
pipeline.setSequenceNbr(sequence.nextId() + "");
iIdxBizJgTechParamsPipelineService.save(pipeline);
// es
Map<String, Map<String, Object>> resultMap = MapBuilder.<String, Map<String, Object>>create()
.put(rcd, MapBuilder.<String, Object>create()
.put(USC_UNIT_NAME, uscUnitName)
.put(USC_UNIT_CREDIT_CODE, uscUnitCreditCode)
.build())
.build();
tzsServiceFeignClient.commonUpdateEsDataByIds(resultMap);
}
// 检验信息恢复
JSONObject inspectData = jsonObject.getJSONObject("inspectData");
......@@ -1634,6 +1689,10 @@ public class JgChangeRegistrationReformServiceImpl extends BaseService<JgChangeR
IdxBizJgProjectContraption projectContraption = jgProjectContraptionService.getBaseMapper().selectById(projectContraptionSeq);
Map<String, Object> re = new HashMap<>();
List<Map<String, Object>> equList = this.getBaseMapper().selectPieLineListByProjectId(projectContraptionSeq);
// 检验报告数据格式化 转json
equList.stream().filter(e-> e.get("inspectReport") != null).forEach(item->{
item.put("inspectReport", JSON.parse(item.get("inspectReport").toString()));
});
re.put("equipmentLists", equList);
re.put("projectContraption", projectContraption.getProjectContraption());
re.put("projectContraptionId", projectContraptionSeq);
......@@ -1680,6 +1739,12 @@ public class JgChangeRegistrationReformServiceImpl extends BaseService<JgChangeR
// 被更新的原行数据
this.setOData(inspectData, inspectionDetectionInfoOld);
oldData.put("inspectData", inspectData);
// 保存一份安改维单位信息,作废回滚用
IdxBizJgProjectContraption projectContraption = jgProjectContraptionService.lambdaQuery()
.eq(IdxBizJgProjectContraption::getSequenceNbr, registrationReform.getProjectContraptionId())
.one();
oldData.put(USC_UNIT_NAME, projectContraption.getUscUnitName());
oldData.put(USC_UNIT_CREDIT_CODE, projectContraption.getUscUnitCreditCode());
LambdaUpdateWrapper<JgRegistrationHistory> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(JgRegistrationHistory::getCurrentDocumentId, registrationReform.getApplyNo());
updateWrapper.set(JgRegistrationHistory::getOldData, JSONObject.toJSONString(oldData));
......
......@@ -1109,7 +1109,7 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
* @author wangguo
* @date 2024/7/18 11:00
**/
@GlobalTransactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 6000000)
public void accept(JgChangeRegistrationUnitDto dto, String op, ReginParams reginParams) {
String lockKey = CommonServiceImpl.buildJgExecuteLockKey(dto.getInstanceId());
RLock lock = redissonClient.getLock(lockKey);
......@@ -1172,6 +1172,8 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
LambdaQueryWrapper<JgChangeRegistrationUnitEq> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(JgChangeRegistrationUnitEq::getUnitChangeRegistrationId, dto.getSequenceNbr());
List<JgChangeRegistrationUnitEq> jgChangeRegistrationUnitEqs = JgChangeRegistrationUnitEqMapper.selectList(queryWrapper);
//修改ES中使用单位信息和使用单位代码
Map<String, Map<String, Object>> resultMap = new HashMap<>();
for (JgChangeRegistrationUnitEq jgChangeRegistrationUnitEq : jgChangeRegistrationUnitEqs) {
String equipId = jgChangeRegistrationUnitEq.getEquId();
LambdaQueryWrapper<OtherInfo> queryWrapper1 = new LambdaQueryWrapper<>();
......@@ -1186,18 +1188,16 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
useInfo.setUseUnitCreditCode(registration.getNewUseUnitCreditCode());
useInfoMapper.updateById(useInfo);
}
//修改ES中使用单位信息和使用单位代码
Map<String, Map<String, Object>> resultMap = new HashMap<>();
Map<String, Object> map1 = new HashMap<>();
String[] companyCode = registration.getNewUseUnitCreditCode().split("_");
map1.put("USE_UNIT_CREDIT_CODE", companyCode.length > 1 ? companyCode[1] : registration.getNewUseUnitCreditCode());
map1.put("USE_UNIT_NAME", registration.getNewUseUnitName());
map1.put("REC_DATE", new Date());// 更新时间,设备筛选时排在前面 bug-21476
resultMap.put(equipId, map1);
tzsServiceFeignClient.commonUpdateEsDataByIds(resultMap);
//修改各类告知列表,置为废弃
this.updataInvalidStatusByHistory(equipId, registration.getApplyNo());
}
tzsServiceFeignClient.commonUpdateEsDataByIds(resultMap);
}
registration.setNextTaskId(nextTaskId);
updateTaskModel(registration, op);
......@@ -1391,8 +1391,9 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
unitEqWrapper.eq(JgChangeRegistrationUnitEq::getProjectContraptionId,sequenceNbr)
.eq(JgChangeRegistrationUnitEq::getUnitChangeRegistrationId,registration.getSequenceNbr())
.eq(JgChangeRegistrationUnitEq::getIsDelete,false);
List<JgChangeRegistrationUnitEq> changeRegistrationUnitEqs = registrationUnitEqService.list();
List<JgChangeRegistrationUnitEq> changeRegistrationUnitEqs = registrationUnitEqService.list(unitEqWrapper);
if(!CollectionUtils.isEmpty(changeRegistrationUnitEqs)){
Map<String, Map<String, Object>> resultMap = new HashMap<>();
for (JgChangeRegistrationUnitEq jgChangeRegistrationUnitEq : changeRegistrationUnitEqs) {
String equipId = jgChangeRegistrationUnitEq.getEquId();
LambdaQueryWrapper<OtherInfo> queryWrapper1 = new LambdaQueryWrapper<>();
......@@ -1408,7 +1409,6 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
useInfoMapper.updateById(useInfo);
}
//修改ES中使用单位信息和使用单位代码
Map<String, Map<String, Object>> resultMap = new HashMap<>();
Map<String, Object> map1 = new HashMap<>();
String[] companyCode = registration.getNewUseUnitCreditCode().split("_");
map1.put("USE_UNIT_CREDIT_CODE", companyCode.length > 1 ? companyCode[1] : registration.getNewUseUnitCreditCode());
......@@ -1418,10 +1418,10 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
map1.put("USE_ORG_CODE", useOrgCode);
}
resultMap.put(equipId, map1);
tzsServiceFeignClient.commonUpdateEsDataByIds(resultMap);
//修改各类告知列表,置为废弃
this.updataInvalidStatusByHistory(equipId, registration.getApplyNo());
}
tzsServiceFeignClient.commonUpdateEsDataByIds(resultMap);
}
}
}
......@@ -1641,7 +1641,7 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
//张三办理了【单位变更】 ,单号【DWBG202407050001】,原恒星电梯单位变更为新恒星电梯有限公司,办理日期2024-07-05
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日");
return obj.getUseUnitName()+"的"+agencyUserModelFeignClientResult.getResult().getRealName() + "办理了【单位变更登记】,单号【"
return obj.getNewUseUnitName()+"的"+agencyUserModelFeignClientResult.getResult().getRealName() + "办理了【单位变更登记】,单号【"
+ obj.getApplyNo() + "】,原" + obj.getUseUnitName() + "变更为新"
+ obj.getNewUseUnitName() + ",申请日期" + simpleDateFormat.format(obj.getCreateDate());
}
......@@ -2253,7 +2253,8 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
List<JSONObject> pipelineList= new ArrayList<>();
changeRegistrationUnitEqs.forEach(item-> {
JSONObject jsonObject = JSON.parseObject(item.getDeviceInfo());
if(jsonObject.containsKey("uscDate")&&!StringUtils.isEmpty(jsonObject.get("uscDate"))){
//如果日期格式是时间戳的话需要处理
if(jsonObject.containsKey("uscDate")&&!StringUtils.isEmpty(jsonObject.get("uscDate")) && !jsonObject.getString("uscDate").contains("-")){
// 转换为 Instant 并指定时区(默认系统时区)
Instant instant = Instant.ofEpochMilli( Long.parseLong(jsonObject.getString("uscDate")));
ZoneId zoneId = ZoneId.systemDefault();
......
......@@ -552,16 +552,19 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
LambdaQueryWrapper<JgInstallationNoticeEq> lambda = new QueryWrapper<JgInstallationNoticeEq>().lambda();
lambda.eq(JgInstallationNoticeEq::getEquipTransferId, noticeDto.getSequenceNbr());
jgInstallationNoticeEqMapper.delete(lambda);
ArrayList<JgInstallationNoticeEq> jgInstallationNoticeEqs = new ArrayList<>();
noticeDto.getDeviceList().forEach(item -> {
JgInstallationNoticeEq jgInstallationNoticeEq = new JgInstallationNoticeEq();
jgInstallationNoticeEq.setEquId(!ValidationUtil.isEmpty(item.get("SEQUENCE_NBR")) ? String.valueOf(item.get("SEQUENCE_NBR")) : String.valueOf(item.get("record")));
jgInstallationNoticeEq.setEquCategoryCode(!ValidationUtil.isEmpty(item.get("EQU_CATEGORY_CODE")) ? String.valueOf(item.get("EQU_CATEGORY_CODE")) : String.valueOf(item.get("equCategory")));
jgInstallationNoticeEq.setEquListCode(!ValidationUtil.isEmpty(item.get("EQU_LIST_CODE")) ? String.valueOf(item.get("EQU_LIST_CODE")) : String.valueOf(item.get("equList")));
jgInstallationNoticeEq.setEquipTransferId(noticeDto.getSequenceNbr().toString());
jgInstallationNoticeEqs.add(jgInstallationNoticeEq);
});
jgInstallationNoticeEqMapper.insertBatchSomeColumn(jgInstallationNoticeEqs);
List<Map<String, Object>> deviceList = noticeDto.getDeviceList();
if(!CollectionUtils.isEmpty(deviceList)){
ArrayList<JgInstallationNoticeEq> jgInstallationNoticeEqs = new ArrayList<>();
deviceList.forEach(item -> {
JgInstallationNoticeEq jgInstallationNoticeEq = new JgInstallationNoticeEq();
jgInstallationNoticeEq.setEquId(!ValidationUtil.isEmpty(item.get("SEQUENCE_NBR")) ? String.valueOf(item.get("SEQUENCE_NBR")) : String.valueOf(item.get("record")));
jgInstallationNoticeEq.setEquCategoryCode(!ValidationUtil.isEmpty(item.get("EQU_CATEGORY_CODE")) ? String.valueOf(item.get("EQU_CATEGORY_CODE")) : String.valueOf(item.get("equCategory")));
jgInstallationNoticeEq.setEquListCode(!ValidationUtil.isEmpty(item.get("EQU_LIST_CODE")) ? String.valueOf(item.get("EQU_LIST_CODE")) : String.valueOf(item.get("equList")));
jgInstallationNoticeEq.setEquipTransferId(noticeDto.getSequenceNbr().toString());
jgInstallationNoticeEqs.add(jgInstallationNoticeEq);
});
jgInstallationNoticeEqMapper.insertBatchSomeColumn(jgInstallationNoticeEqs);
}
return noticeDto;
} catch (BadRequest | LocalBadRequest e) {
log.error(e.getMessage(), e);
......@@ -698,7 +701,7 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
//获取告知单信息
byte[] templateToPdfData = WordTemplateUtils.getTemplateToPdfData(tempFileName, "installation-notification-report.ftl", map);
//获取管道和气瓶的基本信息汇总表
List<CompletableFuture<byte[]>> exportSummaryBasicInfoData = jgUseRegistrationService.getExportSummaryBasicInfoData(Collections.singletonList(Long.valueOf(sequenceNbr)), jgInstallationNotice.getEquCategoryCode(),"安装告知");
List<CompletableFuture<byte[]>> exportSummaryBasicInfoData = jgUseRegistrationService.getExportSummaryBasicInfoData(Collections.singletonList(Long.valueOf(sequenceNbr)), jgInstallationNotice.getEquCategoryCode(), "安装告知", Boolean.TRUE);
toZipFileByData(response, exportSummaryBasicInfoData, templateToPdfData, jgInstallationNotice.getApplyNo());
}else {
WordTemplateUtils.templateToPdfDownload(tempFileName, "installation-notification-report.ftl", map, response);
......
......@@ -111,6 +111,7 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg
private static final String XIAN_YANG = "610400";
private final EquipmentCategoryMapper equipmentCategoryMapper;
private final JgReformNoticeEqMapper jgReformNoticeEqMapper;
private final JgReformNoticeEqServiceImpl jgReformNoticeEqService;
private final RegistrationInfoMapper tzsJgRegistrationInfoMapper;
private final OtherInfoMapper otherInfoMapper;
private final TzsServiceFeignClient tzsServiceFeignClient;
......@@ -227,6 +228,8 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg
// 业务单据中的设备主键 管道的为record 其他设备为SEQUENCE_NBR
String equSeq = !EquipmentClassifityEnum.YLGD.getCode().equals(notice.getEquListCode()) ? SEQUENCE_NBR : RECORD;
List<Map<String, Object>> deviceList = noticeDto.getDeviceList();
// 管道校验管道编号不重复
this.verifyThatThePipeNumberIsUnique(notice.getEquListCode(), deviceList);
List<String> records = deviceList.stream().filter(item -> !Objects.isNull(item.get(RECORD))).map(equ -> String.valueOf(equ.get(RECORD))).collect(Collectors.toList());
this.checkRepeatUsed(submitType, records, notice);
if (SUBMIT_TYPE_FLOW.equals(submitType)) {
......@@ -473,6 +476,8 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg
if (CollectionUtils.isEmpty(deviceList)) {
throw new BadRequest("请选择设备!");
}
// 管道校验管道编号不重复
this.verifyThatThePipeNumberIsUnique(equListCode, deviceList);
// 提交时对设备状态进行校验(处理并发问题,一个未被使用的设备同时被多个使用这打开,同时提交发起申请) todo 回滚异常未写
if (SUBMIT_TYPE_FLOW.equals(submitType)) {
this.repeatUsedEquipCheck(deviceList, reginParams.getCompany().getCompanyCode());
......@@ -569,6 +574,23 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg
}
/**
* 压力管道校验管道编号不能重复
*
* @param equListCode 设备种类
* @param deviceList 设备列表
*/
public void verifyThatThePipeNumberIsUnique(String equListCode, List<Map<String, Object>> deviceList) {
if (EquipmentClassifityEnum.YLGD.getCode().equals(equListCode)) {
if (!CollectionUtils.isEmpty(deviceList) && deviceList.size() != deviceList.stream()
.map(v -> (String) v.get("pipelineNumber"))
.distinct()
.count()) {
throw new BadRequest("同一工程装置下管道编号不能重复!");
}
}
}
/**
* 计算管道长度变化 正值为增长,负值为减少
*
* @param oldPipData 旧管道数据
......@@ -974,10 +996,10 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg
// 1.更新工程装置数据
JgRegistrationHistory registrationHistory = jgRegistrationHistoryMapper.selectOne(new LambdaQueryWrapper<JgRegistrationHistory>().eq(JgRegistrationHistory::getCurrentDocumentId, notice.getSequenceNbr()));
JSONObject newData = JSONObject.parseObject(registrationHistory.getChangeData());
JSONArray newPipData = JSONArray.parseArray(newData.getString(DEVICE_LIST));
JSONArray delPipData = JSONArray.parseArray(newData.getString(DEL_DEVICE_LIST));
JSONObject oldData = JSONObject.parseObject(registrationHistory.getOldData());
JSONArray oldPipData = JSONArray.parseArray(oldData.getString(DEVICE_LIST));
JSONArray newPipData = Optional.ofNullable(JSONArray.parseArray(newData.getString(DEVICE_LIST))).orElse(new JSONArray());
JSONArray delPipData = Optional.ofNullable(JSONArray.parseArray(newData.getString(DEL_DEVICE_LIST))).orElse(new JSONArray());
// JSONObject oldData = JSONObject.parseObject(registrationHistory.getOldData());
// JSONArray oldPipData = JSONArray.parseArray(oldData.getString(DEVICE_LIST));
// 1.1更新工程装置中的【管道信息】增加减少或修改管道信息
List<JSONObject> toUpdatePipData = newPipData.stream().filter(item -> !StringUtils.isEmpty(JSON.parseObject(item.toString()).getString(RECORD))).map(item -> JSON.parseObject(item.toString())).collect(Collectors.toList());
List<JSONObject> toAddPipData = newPipData.stream().filter(item -> StringUtils.isEmpty(JSON.parseObject(item.toString()).getString(RECORD))).map(item -> JSON.parseObject(item.toString())).collect(Collectors.toList());
......@@ -1009,6 +1031,9 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg
}
private void delPipDataWithFlowPass(List<String> toDeletePipRecords) {
if (toDeletePipRecords.isEmpty()) {
return;
}
List<ESEquipmentCategoryDto> esEquipmentCategoryDtoList = toDeletePipRecords.stream().map(
record -> new ESEquipmentCategoryDto().setSEQUENCE_NBR(record)
).collect(Collectors.toList());
......@@ -1107,11 +1132,8 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg
// 施工信息
IdxBizJgConstructionInfo constructionInfo = JSON.parseObject(toJSONString(pipData), IdxBizJgConstructionInfo.class);
CompanyBo company = this.getSelectedOrgInfo().getCompany();
constructionInfo.setRecord(record);
constructionInfo.setRecDate(date);
constructionInfo.setUscUnitCreditCode(company.getCompanyCode());
constructionInfo.setUscUnitName(company.getCompanyName());
constructionInfo.setSequenceNbr(null);
constructionInfoList.add(constructionInfo);
......@@ -1147,11 +1169,13 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg
// 检验检测
IdxBizJgInspectionDetectionInfo inspectionDetectionInfo = JSON.parseObject(toJSONString(pipData), IdxBizJgInspectionDetectionInfo.class);
inspectionDetectionInfo.setRecord(record);
inspectionDetectionInfo.setRecDate(date);
Optional.ofNullable(inspectionDetectionInfo.getNextInspectDate()).ifPresent(x -> inspectionDetectionInfo.setNextInspectDate(DateUtil.parse(DateUtil.format(inspectionDetectionInfo.getNextInspectDate(), DatePattern.NORM_DATE_PATTERN))));
inspectionDetectionInfo.setSequenceNbr(null);
idxBizJgInspectionDetectionInfoService.saveOrUpdateData(inspectionDetectionInfo);
if (!BeanUtil.isEmpty(inspectionDetectionInfo)) {
inspectionDetectionInfo.setRecord(record);
inspectionDetectionInfo.setRecDate(date);
Optional.ofNullable(inspectionDetectionInfo.getNextInspectDate()).ifPresent(x -> inspectionDetectionInfo.setNextInspectDate(DateUtil.parse(DateUtil.format(inspectionDetectionInfo.getNextInspectDate(), DatePattern.NORM_DATE_PATTERN))));
inspectionDetectionInfo.setSequenceNbr(null);
idxBizJgInspectionDetectionInfoService.saveOrUpdateData(inspectionDetectionInfo);
}
// 管道技术参数
IdxBizJgTechParamsPipeline pipelineInfo = JSON.parseObject(toJSONString(pipData), IdxBizJgTechParamsPipeline.class);
......@@ -1194,7 +1218,7 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg
idxBizJgInspectionDetectionInfoService.saveBatch(inspectionDetectionInfoList);
iIdxBizJgTechParamsPipelineService.saveBatch(paramsPipelineList);
esEquipmentCategory.saveAll(esEquipmentCategoryList);
jgReformNoticeEqMapper.insertBatchSomeColumn(noticeEqs);
jgReformNoticeEqService.saveBatch(noticeEqs);
}
......@@ -1320,10 +1344,10 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg
return;
}
JgRegistrationHistory registrationHistory = jgRegistrationHistoryMapper.selectOne(new LambdaQueryWrapper<JgRegistrationHistory>().eq(JgRegistrationHistory::getCurrentDocumentId, notice.getSequenceNbr()));
JSONObject newData = JSONObject.parseObject(registrationHistory.getChangeData());
JSONArray alreadyDelPipData = JSONArray.parseArray(newData.getString(DEL_DEVICE_LIST));
JSONObject oldData = JSONObject.parseObject(registrationHistory.getOldData());
JSONArray oldPipData = JSONArray.parseArray(oldData.getString(DEVICE_LIST));
JSONObject newData = Optional.ofNullable(JSONObject.parseObject(registrationHistory.getChangeData())).orElse(new JSONObject());
JSONArray alreadyDelPipData = Optional.ofNullable(JSONArray.parseArray(newData.getString(DEL_DEVICE_LIST))).orElse(new JSONArray());
JSONObject oldData = Optional.ofNullable(JSONObject.parseObject(registrationHistory.getOldData())).orElse(new JSONObject());
JSONArray oldPipData = Optional.ofNullable(JSONArray.parseArray(oldData.getString(DEVICE_LIST))).orElse(new JSONArray());
double oldPipLength = oldPipData.stream().mapToDouble(item -> JSON.parseObject(item.toString()).getDoubleValue(PIPE_LENGTH)).sum();
List<String> oldPipDataRecords = oldPipData.stream().map(item -> JSON.parseObject(item.toString()).getString(RECORD)).collect(Collectors.toList());
List<String> nowPipDataRecords = idxBizJgProjectContraptionMapper.selectEquipList(notice.getProjectContraptionId()).stream().map(item -> String.valueOf(item.get("record"))).collect(Collectors.toList());
......
......@@ -179,6 +179,8 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
@Autowired
EventPublisher eventPublisher;
@Autowired
private JgVehicleInformationMapper jgVehicleInformationMapper;
/**
* @param auditPassDate 通过时间
......@@ -1263,8 +1265,7 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
String produceDate = Objects.toString(map.get("produceDate"), "");
double nominalWorkingPressure = map.get("nominalWorkingPressure") != null ?
Double.parseDouble(map.get("nominalWorkingPressure").toString()) : 0.0;
exportParamsMap.merge("workPressure", nominalWorkingPressure, (oldVal, newVal) -> (double) oldVal + (double) newVal);
return new EquipBasicInfoDto(produceUnitName, produceDate, factoryNum, useInnerCode);
return new EquipBasicInfoDto(produceUnitName, produceDate, factoryNum, useInnerCode, nominalWorkingPressure);
})
.collect(Collectors.toList());
......@@ -1272,6 +1273,7 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
exportParamsMap.put("registrationType", "新设备首次启用");
exportParamsMap.put("equDefineName", CylinderTypeEnum.of(equDefine));
exportParamsMap.put("equipDefine", "车用气瓶");
exportParamsMap.put("workPressure", equipBasicInfoList.stream().mapToDouble(EquipBasicInfoDto::getWorkPressure).max().getAsDouble());
exportParamsMap.put("gasNum", vehicleInformation.getGasNum());
exportParamsMap.put("chargingMedium", vehicleInformation.getFillingMedium());
exportParamsMap.put("volume", vehicleInformation.getVolume());
......@@ -2403,4 +2405,8 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
}
}
}
public boolean countUseTimesForInvalid(Object code) {
return jgVehicleInformationMapper.countUseTimesForInvalid(code) <= 0;
}
}
\ No newline at end of file
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.yeejoin.amos.boot.module.jg.api.dto.*;
import com.yeejoin.amos.boot.module.jg.api.service.IBizDataChangeHandleStrategy;
import com.yeejoin.amos.boot.module.jg.biz.event.ChangeDataEvent;
import com.yeejoin.amos.boot.module.jg.biz.event.publisher.EventPublisher;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component
@RequiredArgsConstructor
public class SingleManageEquipEditHandleImpl implements IBizDataChangeHandleStrategy {
private final CommonEquipDataProcessService commonEquipDataProcessService;
private final EventPublisher publisher;
@Override
public String canHandleBizType() {
return "singleManageEquipEdit";
}
@Override
public Map<String, ?> getDetail(String applyNo, ModelType model, String bizId) {
return this.getDetailByBizId(bizId);
}
public Map<String, Object> getDetailByBizId(String record) {
Map<String, Object> re = new HashMap<>();
// 注册信息(基本信息)构建
EquipRegisterChangeDataDto equipRegisterChangeDataDto = commonEquipDataProcessService.buildRegisterInfo(record);
// 制造信息构建
EquipFactoryChangeDataDto factoryChangeDataDto = commonEquipDataProcessService.buildFactoryInfo(record);
// 设计信息构建
EquipDesignChangeDataDto designChangeDataDto = commonEquipDataProcessService.buildDesignInfo(record);
// 使用信息
EquipUseInfoChangeDataDto equipUseInfoChangeDataDto = commonEquipDataProcessService.buildUseInfo(record);
re.putAll(BeanUtil.beanToMap(equipRegisterChangeDataDto));
re.putAll(BeanUtil.beanToMap(factoryChangeDataDto));
re.putAll(BeanUtil.beanToMap(designChangeDataDto));
re.putAll(BeanUtil.beanToMap(equipUseInfoChangeDataDto));
commonEquipDataProcessService.castJsonFields(re);
return commonEquipDataProcessService.cast2UnderCase(re);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void doSave(String record, ModelType model, Map<String, Object> changeData) {
List<ChangeDataDto> allChangeColumns = this.update(record, changeData);
// 记录流水
if (!allChangeColumns.isEmpty()) {
// 更新历史的JSON的数据
this.buildLogData(allChangeColumns);
// 异步记录日志
publisher.publish(new ChangeDataEvent(this, allChangeColumns, RequestContext.cloneRequestContext()));
}
}
private List<ChangeDataDto> update(String record, Map<String, Object> changeData) {
List<ChangeDataDto> allChangeColumns = new ArrayList<>();
// 新数据解析
EquipRegisterChangeDataDto registerChangeDataDto = commonEquipDataProcessService.castMap2Bean(changeData, EquipRegisterChangeDataDto.class);
EquipFactoryChangeDataDto factoryChangeDataDto = commonEquipDataProcessService.castMap2Bean(changeData, EquipFactoryChangeDataDto.class);
EquipDesignChangeDataDto designChangeDataDto = commonEquipDataProcessService.castMap2Bean(changeData, EquipDesignChangeDataDto.class);
EquipUseInfoChangeDataDto useInfoChangeDataDto = commonEquipDataProcessService.castMap2Bean(changeData, EquipUseInfoChangeDataDto.class);
commonEquipDataProcessService.buildChangeFields(record, designChangeDataDto, factoryChangeDataDto, registerChangeDataDto, useInfoChangeDataDto, allChangeColumns);
// 前置校验
commonEquipDataProcessService.checkValidField(record, registerChangeDataDto, registerChangeDataDto.getEquList(), registerChangeDataDto.getEquCategory(), registerChangeDataDto.getEquDefine());
commonEquipDataProcessService.checkValidField(record, factoryChangeDataDto, registerChangeDataDto.getEquList(), registerChangeDataDto.getEquCategory(), registerChangeDataDto.getEquDefine());
commonEquipDataProcessService.checkValidField(record, designChangeDataDto, registerChangeDataDto.getEquList(), registerChangeDataDto.getEquCategory(), registerChangeDataDto.getEquDefine());
// 设备制造、设计、注册、使用信息业务处理落库
commonEquipDataProcessService.dealBizDataForEquip(record, registerChangeDataDto);
commonEquipDataProcessService.dealBizDataForEquip(record, factoryChangeDataDto);
commonEquipDataProcessService.dealBizDataForEquip(record, designChangeDataDto);
commonEquipDataProcessService.dealBizDataForEquip(record, useInfoChangeDataDto);
return allChangeColumns;
}
private void buildLogData(List<ChangeDataDto> allChangeColumns) {
allChangeColumns.forEach(column -> {
column.setBizType("监管端编辑设备信息");
});
}
}
......@@ -96,7 +96,10 @@ public class UseRegisterUpdateService {
jsonObject.put("pipelineLength", projectContraption.getPipelineLength());
jsonObject.put("projectContraption",projectContraption.getProjectContraption());
jsonObject.put("projectContraptionNo", projectContraption.getProjectContraptionNo());
jsonObject.put("equipmentLists", useRegistrationService.getBaseMapper().queryForUnitPipelineEquipment(records));
List<Map<String, Object>> equList = useRegistrationService.getBaseMapper().queryForUnitPipelineEquipment(records);
// 检验报告数据格式化 转json
equList.stream().filter(e-> e.get("inspectReport") != null).forEach(item-> item.put("inspectReport", JSON.parse(item.get("inspectReport").toString())));
jsonObject.put("equipmentLists", equList);
}
}
jsonObject.put("useRegistrationCode", jgUseRegistration.getUseRegistrationCode());
......
......@@ -648,18 +648,20 @@ public class DPSubServiceImpl {
if (!ValidationUtil.isEmpty(value) && !"null".equals(value)) {
JSONObject attachmentUploadDatasObj = new JSONObject();
log.info("附件数据:{}", value);
((JSONArray)value).stream().forEach(y -> {
JSONObject yObj = (JSONObject) y;
if(!ValidationUtil.isEmpty(yObj.getString("url"))) {
String[] str = yObj.getString("url").split("\\.");
if (ValidationUtil.isEmpty(str)) {
yObj.put("thumb", yObj.getString("url"));
} else {
MatinfoEnum iconUrl = MatinfoEnum.getIconUrl(str[1]);
yObj.put("thumb", ValidationUtil.isEmpty(iconUrl) ? yObj.getString("url") : iconUrl.getIcon());
if(value instanceof JSONArray){
((JSONArray)value).stream().forEach(y -> {
JSONObject yObj = (JSONObject) y;
if(!ValidationUtil.isEmpty(yObj.getString("url"))) {
String[] str = yObj.getString("url").split("\\.");
if (ValidationUtil.isEmpty(str)) {
yObj.put("thumb", yObj.getString("url"));
} else {
MatinfoEnum iconUrl = MatinfoEnum.getIconUrl(str[1]);
yObj.put("thumb", ValidationUtil.isEmpty(iconUrl) ? yObj.getString("url") : iconUrl.getIcon());
}
}
}
});
});
}
attachmentUploadDatasObj.put("value", value);
String accept = visualParams.getString("accept");
String label = visualParams.getString("label");
......
......@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl;
import com.yeejoin.amos.boot.module.common.api.entity.TzsUserPermission;
import com.yeejoin.amos.boot.module.statistics.api.entity.TzsUserInfo;
import com.yeejoin.amos.boot.module.statistics.api.mapper.UserInfoMapper;
......@@ -15,13 +16,15 @@ import com.yeejoin.amos.boot.module.statistics.api.vo.TzsUserInfoVo;
import com.yeejoin.amos.component.feign.utils.FeignUtil;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.DictionarieValueModel;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
......@@ -56,6 +59,9 @@ public class UserBizByTCMServiceImpl {
private UserInfoMapper tzsUserInfoMapper;
@Autowired
private UserPermissionMapper tzsUserPermissionMapper;
@Autowired
private DataDictionaryServiceImpl dictionaryService;
public Map<String, Object> getDetail(Long id) {
Map<String, Object> maps = new HashMap<>();
TzsUserInfo tzsUserInfo = tzsUserInfoMapper.selectById(id);
......@@ -146,6 +152,33 @@ public class UserBizByTCMServiceImpl {
// 作业项目【jobItem】 字段特殊处理
JSONArray jobItem = JSON.parseArray(String.valueOf(json.get("jobItem")));
json.put("jobItem", jobItem);
// 处理检验、检测资质级别、项目字典code->名称
if (JYRY_TYPE.equals(permission.getPermissionPost()) || JCRY_TYPE.equals(permission.getPermissionPost())) {
List<DictionarieValueModel> dataDictionaryList = Systemctl.dictionarieClient.dictValues("RYJB_JYJC").getResult();
String permissionLevel = String.valueOf(json.get("permissionLevel"));
List<DictionarieValueModel> itemDictionaryList = Systemctl.dictionarieClient.dictValues("ZZXM_" + permissionLevel).getResult();
if (!ValidationUtil.isEmpty(dataDictionaryList)) {
dataDictionaryList.forEach(item -> {
if (item.getDictDataKey().equals(permissionLevel)) {
json.put("permissionLevel", item.getDictDataValue());
}
});
}
JSONArray permissionItem = JSON.parseArray(String.valueOf(json.get("permissionItem")));
JSONArray permissionItemName = new JSONArray();
if (!ValidationUtil.isEmpty(permissionItem)) {
if (!ValidationUtil.isEmpty(itemDictionaryList)) {
for (Object item : permissionItem) {
String finalItem = item.toString();
item = itemDictionaryList.stream().filter(dict -> dict.getDictDataKey().equals(finalItem)).findFirst().map(DictionarieValueModel::getDictDataValue).orElse(finalItem);
permissionItemName.add(item);
}
}
json.put("permissionItem", permissionItemName);
}
}
return json;
}
}
......@@ -132,6 +132,8 @@ public class TzBaseEnterpriseInfoServiceImpl
COMPANY_TYPE_CERT_TYPE_MAP.put("检验检测机构", "1233-1,1233-2");
// 安装改造维修单位身份资质:充装单位-1231 制造单位-1236 设计单位-1235 安装改造维修单位-1234
COMPANY_TYPE_CERT_TYPE_MAP.put("安装改造维修单位", "1231,1234,1235,1236");
// 充装单位
COMPANY_TYPE_CERT_TYPE_MAP.put("充装单位", "1231,1234,1235,1236");
}
/**
......@@ -729,15 +731,16 @@ public class TzBaseEnterpriseInfoServiceImpl
}
private void removeLicenceDataBeforeSave(ReginParams reginParams, TzBaseEnterpriseInfo tzBaseEnterpriseInfo) {
if (tzBaseEnterpriseInfo == null) return;
String companyType = reginParams.getCompany().getCompanyType();
String useCode = tzBaseEnterpriseInfo.getUseCode();
String certTypeCodes = COMPANY_TYPE_CERT_TYPE_MAP.getOrDefault(companyType, "");
if (useCode == null || certTypeCodes.isEmpty()) return;
LambdaQueryWrapper<BaseUnitLicence> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(BaseUnitLicence::getUnitCode,tzBaseEnterpriseInfo.getUseCode());
wrapper.and(w-> {
String[] certTypeCodeArray = COMPANY_TYPE_CERT_TYPE_MAP.get(companyType).split(",");
for(String certTypeCode: certTypeCodeArray){
w.or().likeRight(BaseUnitLicence::getCertTypeCode, certTypeCode);
}
});
wrapper.eq(BaseUnitLicence::getUnitCode, useCode);
wrapper.and(w -> Arrays.stream(certTypeCodes.split(","))
.forEach(certTypeCode -> w.or().likeRight(BaseUnitLicence::getCertTypeCode, certTypeCode)));
baseUnitLicenceService.remove(wrapper);
}
......
......@@ -222,5 +222,21 @@ public class IdxBizJgRegisterInfo extends TzsBaseEntity {
@TableField("\"INSTALLATION_IS_COMPLETE\"")
private String installationIsComplete;
/**
* 原设备代码-西安数据导入使用
*/
@TableField("\"ORIGINAL_EQU_CODE\"")
private String originalEquCode;
/**
* 序号-西安数据导入使用
*/
@TableField("\"XA_SERIAL\"")
private String xaSerial;
/**
* 资料是否齐全(0齐全, 1不齐全)-西安数据导入
*/
@TableField("\"IS_COMPLETE_XA\"")
private String isCompleteXa;
}
......@@ -13,4 +13,6 @@ import java.util.List;
*/
public interface IdxBizJgUseInfoMapper extends BaseMapper<IdxBizJgUseInfo> {
void batchUpdateUseInfo(@Param("records") List<String> records, Integer code);
List<IdxBizJgUseInfo> selectXAList();
}
......@@ -71,7 +71,7 @@
(select INSPECT_CONCLUSION from idx_biz_jg_inspection_detection_info where "RECORD" = ibjui."RECORD" ORDER BY INSPECT_DATE DESC limit 1) inspectConclusion,
(select NEXT_INSPECT_DATE from idx_biz_jg_inspection_detection_info where "RECORD" = ibjui."RECORD" ORDER BY INSPECT_DATE DESC limit 1) nextInspectDate,
(select USC_UNIT_NAME from idx_biz_jg_construction_info jci where ibjui.RECORD = jci.RECORD ORDER BY jci."USC_DATE" DESC limit 1) as uscUnitName,
(select USC_DATE from idx_biz_jg_construction_info jci where ibjui.RECORD = jci.RECORD ORDER BY jci."USC_DATE" DESC limit 1) as uscDate,
to_char((select USC_DATE from idx_biz_jg_construction_info jci where ibjui.RECORD = jci.RECORD ORDER BY jci."USC_DATE" DESC limit 1),'YYYY-MM-DD') as uscDate,
ibjdi."DESIGN_UNIT_NAME" AS designUnitName,
ibjui."USE_DATE" AS useDate,
ibjui."RECORD" AS record,
......@@ -326,12 +326,6 @@
AND a.apply_status != '6617'
UNION ALL
SELECT COUNT(*) AS inUseNumber
FROM tzs_jg_use_registration a
WHERE a.project_contraption_id = #{projectContraptionId}
AND a.is_delete = 0
AND a.status != '已作废'
UNION ALL
SELECT COUNT(*) AS inUseNumber
FROM tzs_jg_change_registration_unit a
JOIN tzs_jg_change_registration_unit_eq b ON b.unit_change_registration_id = a.sequence_nbr
JOIN idx_biz_jg_use_info c ON b.equ_id = c.record
......@@ -372,11 +366,6 @@
AND a.audit_status != '使用单位已撤回'
UNION ALL
SELECT COUNT(*) AS inUseNumber
FROM tzs_jg_installation_notice a
WHERE a.project_contraption_id = #{projectContraptionId}
AND a.notice_status != '6617'
UNION ALL
SELECT COUNT(*) AS inUseNumber
FROM tzs_jg_maintain_notice a
JOIN tzs_jg_maintain_notice_eq b ON b.equip_transfer_id = a.sequence_nbr
JOIN idx_biz_jg_use_info c ON b.equ_id = c.record
......@@ -399,11 +388,6 @@
WHERE c.project_contraption_id = #{projectContraptionId}
AND a.is_delete = 0
AND a.notice_status != '6617'
UNION ALL
SELECT COUNT(*) AS inUseNumber
FROM tz_jyjc_inspection_application a
WHERE a.project_contraption_id = #{projectContraptionId}
AND a.status != '6617'
) AS subquery
</select>
......
......@@ -8,4 +8,19 @@
#{record}
</foreach>
</update>
<select id="selectXAList" resultType="com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgUseInfo">
select
u."SEQUENCE_NBR",
u."RECORD",
u."USE_UNIT_CREDIT_CODE",
u."USE_UNIT_NAME"
from
idx_biz_jg_use_info u
where
u.DATA_SOURCE = 'jg_his_xa'
and (
u."USE_UNIT_CREDIT_CODE" is null or length(u."USE_UNIT_CREDIT_CODE") <![CDATA[ < ]]> 15
)
and u."USE_UNIT_NAME" <![CDATA[ <> ]]> ''
</select>
</mapper>
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