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;
}
......@@ -4,6 +4,7 @@ package com.yeejoin.amos.boot.module.jg.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.dto.KeyValueDto;
import com.yeejoin.amos.boot.module.common.api.dto.DPFilterParamDto;
import com.yeejoin.amos.boot.module.jg.api.bo.JgBizCountDataBO;
import com.yeejoin.amos.boot.module.jg.api.dto.DynamicColumnDto;
......@@ -32,13 +33,13 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
Map<String, Object> getUserInfo(String sequenceNbr);
Map<String,Object> getEnterpriseInfo(String useCode);
Map<String, Object> getEnterpriseInfo(String useCode);
List<Map<String,Object>> getCylinderStationInfo(String orgCode);
List<Map<String, Object>> getCylinderStationInfo(String orgCode);
List<Map<String, Object>> getVehicleCylinderInfo(String useCode);
List<Map<String,Object>> getEnterpriseEmployee(String unitCode);
List<Map<String, Object>> getEnterpriseEmployee(String unitCode);
String getOrgCodeByCompanyCode(String companyCode);
......@@ -46,15 +47,16 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
String selectPromoterData(String tableName, String instanceId);
void updateBusinessData(String tableName,String assignee, String transferToUserIds, String instanceId,String nextTaskId);
void updateBusinessData(String tableName, String assignee, String transferToUserIds, String instanceId, String nextTaskId);
Map<String, Object> getUserPhone(String name ,String companyCode);
Map<String, Object> getUserPhone(String name, String companyCode);
List<Map<String, String>> equOnJgServiceOperationRecords(String record);
/**
* 统计指定设备流程中的引用次数(12个流程中,非待提交、非已撤回、非已驳回)
*
* @param record 设备唯一标识
* @return 被引用次数 > 0 则设备不可编辑
*/
......@@ -63,6 +65,7 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
/**
* 统计设备被引用的次数(只有存在就算引用-作废除外)
*
* @param record 设备唯一标识
* @return 被引用次数 > 0 则设备不可删除
*/
......@@ -73,6 +76,7 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
/**
* 按照 地市或者区县查询所在的地市code
*
* @param receiveCompanyCode 地市或者区县code
* @param exclusionIds 需要排除的区县
* @return 地市code
......@@ -82,6 +86,7 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
/**
* 告知业务统计
*
* @param reportAnalysisSearchDTO 条件
* @return 过程数据
*/
......@@ -91,6 +96,7 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
/**
* 维保备案统计数据查询
*
* @param reportAnalysisSearchDTO 检索条件
* @return List<JgBizCountDataBO>
*/
......@@ -98,6 +104,7 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
/**
* 登记类统计数据查询
*
* @param reportAnalysisSearchDTO 检索条件
* @return List<JgBizCountDataBO>
*/
......@@ -106,6 +113,7 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
/**
* 单位详情
*
* @param companyCode
* @return CompanyBo
*/
......@@ -113,13 +121,15 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
/**
* 车用气瓶登记业务办理里面的 出厂编号/产品编码 要校验唯一性(产品编号在车用气瓶范围内全局唯一)
*
* @param factoryNum
* @return
*/
Integer checkFactoryNumUniquenessForVehicleCylinder(String factoryNum,String sequenceNbr);
Integer checkFactoryNumUniquenessForVehicleCylinder(String factoryNum, String sequenceNbr);
/**
* 查询出厂编码是否重复
*
* @param factoryNum 出厂编码
* @param record 设备record
* @return Integer
......@@ -130,28 +140,31 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
/**
* 使用登记证编号全库唯一校验
*
* @param useRegistrationCode
* @return
*/
Integer useRegistrationCertificateAccountUnique(@Param("useRegistrationCode") String useRegistrationCode,@Param("equipId") String equipId);
Integer useRegistrationCertificateAccountUnique(@Param("useRegistrationCode") String useRegistrationCode, @Param("equipId") String equipId);
String isRegistrationNumberUsedByOtherUnits(@Param("useRegistrationCode") String useRegistrationCode, @Param("companyCode") String companyCode);
/**
* 查询维保超期的设备
* */
*/
List<Map<String, Object>> queryOutOfMaintenanceRecord();
List<Map<String, Object>> queryOutOfInspectionRecord();
/**
* 查询许可超期的企业
* */
*/
List<Map<String, Object>> queryOutOfQualificationRecord();
/**
* 查询资质超期的证书
**/
List<Map<String, Object>> queryOutOfCertificationRecord();
/**
* 大屏业务全过程统计已经完成的单据
*
......@@ -160,11 +173,17 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
* @return 统计数量数组
*/
List<Long> countBizFinishedNumForDP(@Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamDto);
List<Long> countBizFinishedNumForDPAZGZ(@Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamDto);
List<Long> countBizFinishedNumForDPJDJY(@Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamDto);
List<Long> countBizFinishedNumForDPSYDJ(@Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamDto);
List<Long> countBizFinishedNumForDPDQJY(@Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamDto);
List<Long> countBizFinishedNumForDPBGDJ(@Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamDto);
List<Long> countBizFinishedNumForDPZXBX(@Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamDto);
/**
......@@ -174,13 +193,19 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
* @param dpFilterParamDto 过滤条件
* @return 统计数量数组
*/
List<Long> countAllInFlowingForDPNoFinishedBizData(@Param("orgCode")String orgCode, @Param("dto") DPFilterParamDto dpFilterParamDto);
List<Long> countAllInFlowingForDPNoFinishedBizDataAZGZ(@Param("orgCode")String orgCode, @Param("dto") DPFilterParamDto dpFilterParamDto);
List<Long> countAllInFlowingForDPNoFinishedBizDataJDJY(@Param("orgCode")String orgCode, @Param("dto") DPFilterParamDto dpFilterParamDto);
List<Long> countAllInFlowingForDPNoFinishedBizDataSYDJ(@Param("orgCode")String orgCode, @Param("dto") DPFilterParamDto dpFilterParamDto);
List<Long> countAllInFlowingForDPNoFinishedBizDataDQJY(@Param("orgCode")String orgCode, @Param("dto") DPFilterParamDto dpFilterParamDto);
List<Long> countAllInFlowingForDPNoFinishedBizDataBGDJ(@Param("orgCode")String orgCode, @Param("dto") DPFilterParamDto dpFilterParamDto);
List<Long> countAllInFlowingForDPNoFinishedBizDataZXBX(@Param("orgCode")String orgCode, @Param("dto") DPFilterParamDto dpFilterParamDto);
List<Long> countAllInFlowingForDPNoFinishedBizData(@Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamDto);
List<Long> countAllInFlowingForDPNoFinishedBizDataAZGZ(@Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamDto);
List<Long> countAllInFlowingForDPNoFinishedBizDataJDJY(@Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamDto);
List<Long> countAllInFlowingForDPNoFinishedBizDataSYDJ(@Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamDto);
List<Long> countAllInFlowingForDPNoFinishedBizDataDQJY(@Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamDto);
List<Long> countAllInFlowingForDPNoFinishedBizDataBGDJ(@Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamDto);
List<Long> countAllInFlowingForDPNoFinishedBizDataZXBX(@Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamDto);
/**
* 大屏业务全过程统计已经完成的列表
......@@ -189,19 +214,26 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
* @param dpFilterParamForDetailDto 过滤条件
* @return 统计数量数组
*/
Page<Map<String,Object>> countBizFinishedNumForDPList(@Param("page") Page<Map<String,Object>> page, @Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamForDetailDto);
Page<Map<String,Object>> countBizFinishedNumForDPListAZGZ(@Param("page") Page<Map<String,Object>> page, @Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamForDetailDto);
Page<Map<String,Object>> countBizFinishedNumForDPListJDJY(@Param("page") Page<Map<String,Object>> page, @Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamForDetailDto);
Page<Map<String,Object>> countBizFinishedNumForDPListSYDJ(@Param("page") Page<Map<String,Object>> page, @Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamForDetailDto);
Page<Map<String,Object>> countBizFinishedNumForDPListDQJY(@Param("page") Page<Map<String,Object>> page, @Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamForDetailDto);
Page<Map<String,Object>> countBizFinishedNumForDPListBGDJ(@Param("page") Page<Map<String,Object>> page, @Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamForDetailDto);
Page<Map<String,Object>> countBizFinishedNumForDPListZXBX(@Param("page") Page<Map<String,Object>> page, @Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamForDetailDto);
Page<Map<String, Object>> countBizFinishedNumForDPList(@Param("page") Page<Map<String, Object>> page, @Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamForDetailDto);
Page<Map<String, Object>> countBizFinishedNumForDPListAZGZ(@Param("page") Page<Map<String, Object>> page, @Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamForDetailDto);
Page<Map<String, Object>> countBizFinishedNumForDPListJDJY(@Param("page") Page<Map<String, Object>> page, @Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamForDetailDto);
Page<Map<String, Object>> countBizFinishedNumForDPListSYDJ(@Param("page") Page<Map<String, Object>> page, @Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamForDetailDto);
void updateTechParamDynamic(@Param(value = "tableName") String tableName,@Param(value = "record") String record, @Param(value = "columns") List<DynamicColumnDto> columns);
Page<Map<String, Object>> countBizFinishedNumForDPListDQJY(@Param("page") Page<Map<String, Object>> page, @Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamForDetailDto);
Page<Map<String, Object>> countBizFinishedNumForDPListBGDJ(@Param("page") Page<Map<String, Object>> page, @Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamForDetailDto);
Page<Map<String, Object>> countBizFinishedNumForDPListZXBX(@Param("page") Page<Map<String, Object>> page, @Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamForDetailDto);
void updateTechParamDynamic(@Param(value = "tableName") String tableName, @Param(value = "record") String record, @Param(value = "columns") List<DynamicColumnDto> columns);
/**
* 当前设备在流程中的申请单号
*
* @param record 设备id
* @return 申请单号
*/
......@@ -210,6 +242,7 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
/**
* 查询指定设备,使用登记后,后续业务的数据
*
* @param record 设备标识
* @return 后续业务数量
*/
......@@ -239,6 +272,10 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
List<EquipmentClassifyDto> getEquClassifyByCode(@Param("parentCode") String parentCode);
/**
* 查询通过企查查查询的公司信息代码字典
* @return 公司对象集合
*/
List<KeyValueDto> queryAllCompanyDict();
}
......@@ -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);
}
......@@ -1381,7 +1381,7 @@
union all
SELECT * FROM (
SELECT sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,status,'sydj' as tplType,'sydj' as bType FROM "tzs_jg_use_registration" where receive_company_org_code like CONCAT(#{orgCode}, '%') and status = '已完成' and is_delete = 0
SELECT sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,'sydj' as tplType,'sydj' as bType, status FROM "tzs_jg_use_registration" where receive_company_org_code like CONCAT(#{orgCode}, '%') and status = '已完成' and is_delete = 0
<if test="dto.beginDate != null and dto.beginDate != ''">
and date_ge(CAST(audit_pass_date as date),#{dto.beginDate})
</if>
......@@ -1396,7 +1396,7 @@
and receive_org_name like CONCAT('%', #{dto.superviseUnitName}, '%')
</if>
union all
SELECT sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,status,'sydj' as tplType,'vehicle' as bType FROM "tzs_jg_vehicle_information" where org_branch_code like CONCAT(#{orgCode}, '%') and status = '已完成'
SELECT sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,'sydj' as tplType,'vehicle' as bType, status FROM "tzs_jg_vehicle_information" where org_branch_code like CONCAT(#{orgCode}, '%') and status = '已完成'
<if test="dto.beginDate != null and dto.beginDate != ''">
and date_ge(CAST(audit_pass_date as date),#{dto.beginDate})
</if>
......@@ -1412,7 +1412,7 @@
)
union all
SELECT * FROM (
SELECT sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,status,'sydj' as tplType,'sydj' as bType FROM "tzs_jg_use_registration" where receive_company_org_code like CONCAT(#{orgCode}, '%') and status != '使用单位待提交' and status != '使用单位已撤回' and status != '已作废' and status != '已完成' and is_delete = 0
SELECT sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,'sydj' as tplType,'sydj' as bType, status FROM "tzs_jg_use_registration" where receive_company_org_code like CONCAT(#{orgCode}, '%') and status != '使用单位待提交' and status != '使用单位已撤回' and status != '已作废' and status != '已完成' and is_delete = 0
<if test="dto.beginDate != null and dto.beginDate != ''">
and date_ge(CAST(reg_date as date),#{dto.beginDate})
</if>
......@@ -1426,7 +1426,7 @@
and receive_org_name like CONCAT('%', #{dto.superviseUnitName}, '%')
</if>
union all
SELECT sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,status,'sydj' as tplType,'vehicle' as bType FROM "tzs_jg_vehicle_information" where org_branch_code like CONCAT(#{orgCode}, '%') and status != '使用单位待提交' and status != '使用单位已撤回' and status != '已作废' and status != '已完成'
SELECT sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,'sydj' as tplType,'vehicle' as bType, status FROM "tzs_jg_vehicle_information" where org_branch_code like CONCAT(#{orgCode}, '%') and status != '使用单位待提交' and status != '使用单位已撤回' and status != '已作废' and status != '已完成'
<if test="dto.beginDate != null and dto.beginDate != ''">
and date_ge(CAST(reg_date as date),#{dto.beginDate})
</if>
......@@ -1496,7 +1496,7 @@
</if>
union all
SELECT * FROM (
SELECT a.sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,a.audit_status as status,'bgdj' as tplType,'gm' as bType FROM tzs_jg_change_registration_name a, privilege_company b where a.receive_org_code= b.company_code and b.org_code like CONCAT(#{orgCode}, '%') and a.audit_status ='已完成'
SELECT a.sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,'bgdj' as tplType,'gm' as bType, a.audit_status as status FROM tzs_jg_change_registration_name a, privilege_company b where a.receive_org_code= b.company_code and b.org_code like CONCAT(#{orgCode}, '%') and a.audit_status ='已完成'
<if test="dto.beginDate != null and dto.beginDate != ''">
and date_ge(CAST(a.audit_pass_date as date),#{dto.beginDate})
</if>
......@@ -1510,7 +1510,7 @@
and receive_org_name like CONCAT('%', #{dto.superviseUnitName}, '%')
</if>
union all
SELECT sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,audit_status as status,'bgdj' as tplType,'gz' as bType FROM "tzs_jg_change_registration_reform" where receive_company_org_code like CONCAT(#{orgCode}, '%') and audit_status ='已完成'
SELECT sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,'bgdj' as tplType,'gz' as bType, audit_status as status FROM "tzs_jg_change_registration_reform" where receive_company_org_code like CONCAT(#{orgCode}, '%') and audit_status ='已完成'
<if test="dto.beginDate != null and dto.beginDate != ''">
and date_ge(CAST(audit_pass_date as date),#{dto.beginDate})
</if>
......@@ -1524,7 +1524,7 @@
and receive_org_name like CONCAT('%', #{dto.superviseUnitName}, '%')
</if>
union all
SELECT sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,audit_status as status,'bgdj' as tplType,'yz' as bType FROM "tzs_jg_change_registration_transfer" where receive_company_org_code like CONCAT(#{orgCode}, '%') and audit_status ='已完成'
SELECT sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,'bgdj' as tplType,'yz' as bType, audit_status as status FROM "tzs_jg_change_registration_transfer" where receive_company_org_code like CONCAT(#{orgCode}, '%') and audit_status ='已完成'
<if test="dto.beginDate != null and dto.beginDate != ''">
and date_ge(CAST(audit_pass_date as date),#{dto.beginDate})
</if>
......@@ -1538,7 +1538,7 @@
and receive_org_name like CONCAT('%', #{dto.superviseUnitName}, '%')
</if>
union all
SELECT sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,status,'bgdj' as tplType,'dw' as bType FROM "tzs_jg_change_registration_unit" where receive_company_org_code like CONCAT(#{orgCode}, '%') and status ='已完成'
SELECT sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,'bgdj' as tplType,'dw' as bType, status FROM "tzs_jg_change_registration_unit" where receive_company_org_code like CONCAT(#{orgCode}, '%') and status ='已完成'
<if test="dto.beginDate != null and dto.beginDate != ''">
and date_ge(CAST(audit_pass_date as date),#{dto.beginDate})
</if>
......@@ -1552,7 +1552,7 @@
and receive_org_name like CONCAT('%', #{dto.superviseUnitName}, '%')
</if>
union all
SELECT sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,status,'bgdj' as tplType,'cyqp' as bType FROM "tzs_jg_change_vehicle_registration_unit" where org_branch_code like CONCAT(#{orgCode}, '%') and status ='已完成'
SELECT sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,'bgdj' as tplType,'cyqp' as bType, status FROM "tzs_jg_change_vehicle_registration_unit" where org_branch_code like CONCAT(#{orgCode}, '%') and status ='已完成'
<if test="dto.beginDate != null and dto.beginDate != ''">
and date_ge(CAST(audit_pass_date as date),#{dto.beginDate})
</if>
......@@ -1568,7 +1568,7 @@
)
union all
select * from (
select a.sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,a.audit_status as status,'bgdj' as tplType,'gm' as bType from tzs_jg_change_registration_name a, privilege_company b where a.receive_org_code= b.company_code and b.org_code like CONCAT(#{orgCode}, '%') and a.audit_status != '使用单位已撤回' and a.audit_status != '使用单位待提交' and a.audit_status !='已作废' and a.audit_status !='已完成'
select a.sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,'bgdj' as tplType,'gm' as bType, a.audit_status as status from tzs_jg_change_registration_name a, privilege_company b where a.receive_org_code= b.company_code and b.org_code like CONCAT(#{orgCode}, '%') and a.audit_status != '使用单位已撤回' and a.audit_status != '使用单位待提交' and a.audit_status !='已作废' and a.audit_status !='已完成'
<if test="dto.beginDate != null and dto.beginDate != ''">
and date_ge(CAST(a.apply_date as date),#{dto.beginDate})
</if>
......@@ -1582,7 +1582,7 @@
and receive_org_name like CONCAT('%', #{dto.superviseUnitName}, '%')
</if>
union all
SELECT sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,audit_status as status,'bgdj' as tplType,'gz' as bType FROM "tzs_jg_change_registration_reform" where receive_company_org_code like CONCAT(#{orgCode}, '%') and audit_status != '使用单位待提交' and audit_status != '使用单位已撤回' and audit_status != '已作废' and audit_status != '已完成'
SELECT sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,'bgdj' as tplType,'gz' as bType, audit_status as status FROM "tzs_jg_change_registration_reform" where receive_company_org_code like CONCAT(#{orgCode}, '%') and audit_status != '使用单位待提交' and audit_status != '使用单位已撤回' and audit_status != '已作废' and audit_status != '已完成'
<if test="dto.beginDate != null and dto.beginDate != ''">
and date_ge(CAST(reg_date as date),#{dto.beginDate})
</if>
......@@ -1596,7 +1596,7 @@
and receive_org_name like CONCAT('%', #{dto.superviseUnitName}, '%')
</if>
union all
SELECT sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,audit_status as status,'bgdj' as tplType,'yz' as bType FROM "tzs_jg_change_registration_transfer" where receive_company_org_code like CONCAT(#{orgCode}, '%') and audit_status != '使用单位待提交' and audit_status != '使用单位已撤回' and audit_status != '已作废' and audit_status != '已完成'
SELECT sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,'bgdj' as tplType,'yz' as bType ,audit_status as status FROM "tzs_jg_change_registration_transfer" where receive_company_org_code like CONCAT(#{orgCode}, '%') and audit_status != '使用单位待提交' and audit_status != '使用单位已撤回' and audit_status != '已作废' and audit_status != '已完成'
<if test="dto.beginDate != null and dto.beginDate != ''">
and date_ge(CAST(reg_date as date),#{dto.beginDate})
</if>
......@@ -1610,7 +1610,7 @@
and receive_org_name like CONCAT('%', #{dto.superviseUnitName}, '%')
</if>
union all
SELECT sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,status,'bgdj' as tplType,'dw' as bType FROM "tzs_jg_change_registration_unit" where receive_company_org_code like CONCAT(#{orgCode}, '%') and status != '使用单位待提交' and status != '使用单位已撤回' and status != '已作废' and status != '已完成'
SELECT sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,'bgdj' as tplType,'dw' as bType ,status FROM "tzs_jg_change_registration_unit" where receive_company_org_code like CONCAT(#{orgCode}, '%') and status != '使用单位待提交' and status != '使用单位已撤回' and status != '已作废' and status != '已完成'
<if test="dto.beginDate != null and dto.beginDate != ''">
and date_ge(CAST(apply_date as date),#{dto.beginDate})
</if>
......@@ -1625,7 +1625,7 @@
</if>
union all
SELECT sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,status,'bgdj' as tplType,'cyqp' as bType FROM "tzs_jg_change_vehicle_registration_unit" where org_branch_code like CONCAT(#{orgCode}, '%') and status != '使用单位待提交' and status != '使用单位已撤回' and status != '已作废' and status != '已完成'
SELECT sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,'bgdj' as tplType,'cyqp' as bType ,status FROM "tzs_jg_change_vehicle_registration_unit" where org_branch_code like CONCAT(#{orgCode}, '%') and status != '使用单位待提交' and status != '使用单位已撤回' and status != '已作废' and status != '已完成'
<if test="dto.beginDate != null and dto.beginDate != ''">
and date_ge(CAST(apply_date as date),#{dto.beginDate})
</if>
......@@ -1641,7 +1641,7 @@
)
union all
select a.sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,a.status as status,'zxbf' as tplType,'zxbf' as bType from tzs_jg_scrap_cancel a, privilege_company b where a.receive_org_code= b.company_code and b.org_code like CONCAT(#{orgCode}, '%') and a.audit_status = '已完成'
select a.sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,'zxbf' as tplType,'zxbf' as bType, a.status as status from tzs_jg_scrap_cancel a, privilege_company b where a.receive_org_code= b.company_code and b.org_code like CONCAT(#{orgCode}, '%') and a.audit_status = '已完成'
<if test="dto.beginDate != null and dto.beginDate != ''">
and date_ge(CAST(a.audit_pass_date as date),#{dto.beginDate})
</if>
......@@ -1655,7 +1655,7 @@
and receive_org_name like CONCAT('%', #{dto.superviseUnitName}, '%')
</if>
union all
select a.sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,a.status as status,'zxbf' as tplType,'zxbf' as bType from tzs_jg_scrap_cancel a, privilege_company b where a.receive_org_code= b.company_code and b.org_code like CONCAT(#{orgCode}, '%') and a.audit_status != '使用单位待提交' and a.audit_status != '使用单位已撤回' and a.audit_status != '已作废' and a.audit_status != '已完成'
select a.sequence_nbr as sequenceNbr,use_unit_name as unitName,receive_org_name as receiveOrgName,create_date as createDate,audit_pass_date as handleDate,'zxbf' as tplType,'zxbf' as bType, a.status as status from tzs_jg_scrap_cancel a, privilege_company b where a.receive_org_code= b.company_code and b.org_code like CONCAT(#{orgCode}, '%') and a.audit_status != '使用单位待提交' and a.audit_status != '使用单位已撤回' and a.audit_status != '已作废' and a.audit_status != '已完成'
<if test="dto.beginDate != null and dto.beginDate != ''">
and date_ge(CAST(a.create_date as date),#{dto.beginDate})
</if>
......@@ -2656,4 +2656,13 @@
tup.expiry_date <![CDATA[<]]> CURRENT_DATE AND tup.permission_post IN ('permissionData66151', 'permissionData66152', 'permissionData6552');
</select>
<select id="queryAllCompanyDict" resultType="com.yeejoin.amos.boot.biz.common.dto.KeyValueDto">
select
company_name as strKey,
company_code as strValue
from
tzs_jg_unit_import
where
company_code <![CDATA[<>]]> ''
</select>
</mapper>
......@@ -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,6 +33,10 @@ import java.util.Map;
public class IdxBizJgProjectContraptionController extends BaseController {
// 设备基本信息表单id
private static final String EQUIP_INFO_FORM_ID = "equipInfo";
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;
......
......@@ -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.DateUtil;
import cn.hutool.core.text.CharSequenceUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
......@@ -15,18 +16,18 @@ import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentClassifityEnum;
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.Component;
import javax.annotation.PostConstruct;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@Component
@RequiredArgsConstructor
public class CommonEquipDataProcessService {
private final IdxBizJgDesignInfoMapper idxBizJgDesignInfoMapper;
......@@ -53,19 +54,56 @@ public class CommonEquipDataProcessService {
private final EquipChangeDataUpdateService equipChangeDataUpdateService;
public CommonEquipDataProcessService(IdxBizJgDesignInfoMapper idxBizJgDesignInfoMapper, IdxBizJgFactoryInfoMapper jgFactoryInfoMapper, IdxBizJgRegisterInfoMapper idxBizJgRegisterInfoMapper, IIdxBizJgTechParamsElevatorService iIdxBizJgTechParamsElevatorService, IIdxBizJgTechParamsVehicleService iIdxBizJgTechParamsVehicleService, IIdxBizJgTechParamsRopewayService iIdxBizJgTechParamsRopewayService, IIdxBizJgTechParamsRidesService iIdxBizJgTechParamsRidesService, IIdxBizJgTechParamsBoilerService iIdxBizJgTechParamsBoilerService, IIdxBizJgTechParamsVesselService iIdxBizJgTechParamsVesselService, IIdxBizJgTechParamsPipelineService iIdxBizJgTechParamsPipelineService, IIdxBizJgTechParamsLiftingService iIdxBizJgTechParamsLiftingService, EquipChangeDataUpdateService equipChangeDataUpdateService) {
this.idxBizJgDesignInfoMapper = idxBizJgDesignInfoMapper;
this.jgFactoryInfoMapper = jgFactoryInfoMapper;
this.idxBizJgRegisterInfoMapper = idxBizJgRegisterInfoMapper;
this.iIdxBizJgTechParamsElevatorService = iIdxBizJgTechParamsElevatorService;
this.iIdxBizJgTechParamsVehicleService = iIdxBizJgTechParamsVehicleService;
this.iIdxBizJgTechParamsRopewayService = iIdxBizJgTechParamsRopewayService;
this.iIdxBizJgTechParamsRidesService = iIdxBizJgTechParamsRidesService;
this.iIdxBizJgTechParamsBoilerService = iIdxBizJgTechParamsBoilerService;
this.iIdxBizJgTechParamsVesselService = iIdxBizJgTechParamsVesselService;
this.iIdxBizJgTechParamsPipelineService = iIdxBizJgTechParamsPipelineService;
this.iIdxBizJgTechParamsLiftingService = iIdxBizJgTechParamsLiftingService;
this.equipChangeDataUpdateService = equipChangeDataUpdateService;
private final IdxBizJgUseInfoServiceImpl idxBizJgUseInfoService;
private final List<String> jsonFields = new ArrayList<>();
@PostConstruct
public void init() {
Field[] fields1 = EquipRegisterChangeDataDto.class.getDeclaredFields();
for (Field field : fields1) {
field.setAccessible(true);
FieldDisplayDefine fieldDisplayDefine = field.getAnnotation(FieldDisplayDefine.class);
if (fieldDisplayDefine != null && fieldDisplayDefine.type() == JSON.class) {
jsonFields.add(field.getName());
}
}
Field[] fields2 = EquipFactoryChangeDataDto.class.getDeclaredFields();
for (Field field : fields2) {
field.setAccessible(true);
FieldDisplayDefine fieldDisplayDefine = field.getAnnotation(FieldDisplayDefine.class);
if (fieldDisplayDefine != null && fieldDisplayDefine.type() == JSON.class) {
jsonFields.add(field.getName());
}
}
// 设计信息构建
Field[] fields3 = EquipDesignChangeDataDto.class.getDeclaredFields();
for (Field field : fields3) {
field.setAccessible(true);
FieldDisplayDefine fieldDisplayDefine = field.getAnnotation(FieldDisplayDefine.class);
if (fieldDisplayDefine != null && fieldDisplayDefine.type() == JSON.class) {
jsonFields.add(field.getName());
}
}
// 技术参数附件
Field[] fields4 = TechParamsLiftingChangeFieldDto.class.getDeclaredFields();
for (Field field : fields4) {
field.setAccessible(true);
FieldDisplayDefine fieldDisplayDefine = field.getAnnotation(FieldDisplayDefine.class);
if (fieldDisplayDefine != null && fieldDisplayDefine.type() == JSON.class) {
jsonFields.add(field.getName());
}
}
Field[] fields5 = TechParamsPipelineChangeFieldDto.class.getDeclaredFields();
for (Field field : fields5) {
field.setAccessible(true);
FieldDisplayDefine fieldDisplayDefine = field.getAnnotation(FieldDisplayDefine.class);
if (fieldDisplayDefine != null && fieldDisplayDefine.type() == JSON.class) {
jsonFields.add(field.getName());
}
}
}
public <T extends BaseChangeDataDto> T castMap2Bean(Map<String, Object> map, Class<T> clazz) {
......@@ -112,6 +150,23 @@ public class CommonEquipDataProcessService {
allChangeColumns.addAll(this.mergeChangeFields(registerInfoNew, registerInfoOld));
}
void buildChangeFields(String record, EquipDesignChangeDataDto equipDesignChangeDataDto, EquipFactoryChangeDataDto equipFactoryChangeDataDto, EquipRegisterChangeDataDto registerChangeDataDto, EquipUseInfoChangeDataDto useInfoChangeDataDto, List<ChangeDataDto> allChangeColumns) {
// 构造新对象行转列
List<ChangeDataDto> designInfoNew = this.buildDesignInfoNew(equipDesignChangeDataDto, record);
List<ChangeDataDto> factoryInfoNew = this.buildFactoryInfoNew(equipFactoryChangeDataDto, record);
List<ChangeDataDto> registerInfoNew = this.buildRegisterInfoNew(registerChangeDataDto, record);
List<ChangeDataDto> useInfoChangeNew = this.convertBeanField2Column2(useInfoChangeDataDto, record);
// 老数据查询行转列
List<ChangeDataDto> designInfoOld = this.buildDesignInfoOld(record);
List<ChangeDataDto> factoryInfoOld = this.buildFactoryInfoOld(record);
List<ChangeDataDto> registerInfoOld = this.buildRegisterInfoOld(record);
List<ChangeDataDto> useInfoOld = this.buildUseInfoOld(record);
allChangeColumns.addAll(this.mergeChangeFields(designInfoNew, designInfoOld));
allChangeColumns.addAll(this.mergeChangeFields(factoryInfoNew, factoryInfoOld));
allChangeColumns.addAll(this.mergeChangeFields(registerInfoNew, registerInfoOld));
allChangeColumns.addAll(this.mergeChangeFields(useInfoChangeNew, useInfoOld));
}
/**
* 业务处理-业务对象
*
......@@ -134,6 +189,11 @@ public class CommonEquipDataProcessService {
EquipDesignChangeDataDto equipDesignChangeDataDto = (EquipDesignChangeDataDto) changeDataDto;
equipChangeDataUpdateService.updateDesignChangeData(record, equipDesignChangeDataDto);
}
// 使用信息
if (changeDataDto instanceof EquipUseInfoChangeDataDto) {
EquipUseInfoChangeDataDto equipUseInfoChangeDataDto = (EquipUseInfoChangeDataDto) changeDataDto;
equipChangeDataUpdateService.updateUseInfoChangeData(record, equipUseInfoChangeDataDto);
}
}
private String buildTableName(Class<?> clazz) {
......@@ -397,7 +457,6 @@ public class CommonEquipDataProcessService {
return changeData;
}
public List<ChangeDataDto> buildDesignInfoNew(Object changeDataDto, String record) {
return this.convertBeanField2Column2(changeDataDto, record);
}
......@@ -432,4 +491,59 @@ public class CommonEquipDataProcessService {
BeanUtil.copyProperties(registerInfo, changeDataDto);
return this.convertBeanField2Column2(changeDataDto, record);
}
private List<ChangeDataDto> buildUseInfoOld(String record) {
EquipUseInfoChangeDataDto changeDataDto = new EquipUseInfoChangeDataDto();
IdxBizJgUseInfo useInfo = idxBizJgUseInfoService.getOneData(record);
BeanUtil.copyProperties(useInfo, changeDataDto);
return this.convertBeanField2Column2(changeDataDto, record);
}
Map<String, Object> cast2UnderCase(Map<String, Object> re) {
// 由于历史遗留问题,和前端保存统一,要转成大写下滑线驼峰
Map<String, Object> result = new HashMap<>();
re.forEach((k, v) -> {
result.put(CharSequenceUtil.toUnderlineCase(k).toUpperCase(), v);
});
return result;
}
void castJsonFields(Map<String, Object> re) {
jsonFields.forEach(field -> {
if (re.containsKey(field) && re.get(field) instanceof String) {
re.put(field, JSON.parse((String) re.get(field)));
}
});
}
EquipDesignChangeDataDto buildDesignInfo(String record) {
EquipDesignChangeDataDto changeDataDto = new EquipDesignChangeDataDto();
IdxBizJgDesignInfo designInfo = idxBizJgDesignInfoMapper.selectOne(new LambdaQueryWrapper<IdxBizJgDesignInfo>().eq(IdxBizJgDesignInfo::getRecord, record));
BeanUtil.copyProperties(designInfo, changeDataDto);
changeDataDto.setDesignDate(DateUtil.formatDate(designInfo.getDesignDate()));
return changeDataDto;
}
EquipFactoryChangeDataDto buildFactoryInfo(String record) {
EquipFactoryChangeDataDto changeDataDto = new EquipFactoryChangeDataDto();
IdxBizJgFactoryInfo factoryInfo = jgFactoryInfoMapper.selectOne(new LambdaQueryWrapper<IdxBizJgFactoryInfo>().eq(IdxBizJgFactoryInfo::getRecord, record));
BeanUtil.copyProperties(factoryInfo, changeDataDto);
changeDataDto.setProduceDate(DateUtil.formatDate(factoryInfo.getProduceDate()));
return changeDataDto;
}
EquipRegisterChangeDataDto buildRegisterInfo(String record) {
EquipRegisterChangeDataDto changeDataDto = new EquipRegisterChangeDataDto();
IdxBizJgRegisterInfo registerInfo = idxBizJgRegisterInfoMapper.selectOne(new LambdaQueryWrapper<IdxBizJgRegisterInfo>().eq(IdxBizJgRegisterInfo::getRecord, record));
BeanUtil.copyProperties(registerInfo, changeDataDto);
return changeDataDto;
}
EquipUseInfoChangeDataDto buildUseInfo(String record) {
EquipUseInfoChangeDataDto changeDataDto = new EquipUseInfoChangeDataDto();
IdxBizJgUseInfo useInfo = idxBizJgUseInfoService.getOneData(record);
BeanUtil.copyProperties(useInfo, changeDataDto);
return changeDataDto;
}
}
......@@ -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){
......
......@@ -14,7 +14,6 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.DateUtils;
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.SnowflakeIdUtil;
......@@ -26,6 +25,7 @@ import com.yeejoin.amos.boot.module.jg.api.converter.EquDefineConverter;
import com.yeejoin.amos.boot.module.jg.api.dto.*;
import com.yeejoin.amos.boot.module.jg.api.entity.*;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationMapper;
import com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient;
import com.yeejoin.amos.boot.module.jg.biz.service.*;
import com.yeejoin.amos.boot.module.ymt.api.entity.*;
......@@ -53,17 +53,14 @@ import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.io.InputStream;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.temporal.ValueRange;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static com.alibaba.fastjson.JSON.toJSONString;
@Slf4j
......@@ -104,6 +101,7 @@ public class DataDockServiceImpl {
private final JgCertificateChangeRecordEqServiceImpl certificateChangeRecordEqService;
private final Map<String, Object> resultError = new HashMap<>();
private final JgUseRegistrationMapper jgUseRegistrationMapper;
List<String> useInnerCodeList = new ArrayList<>();// 单位内部编号集合
List<String> equCodeList = new ArrayList<>();// 设备代码集合
List<String> factoryNumList = new ArrayList<>();// 出厂编码集合
......@@ -119,15 +117,27 @@ public class DataDockServiceImpl {
@Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class)
public boolean xiAnSaveEquipmentData(List<Map<String, Object>> equLists) {
CompletableFuture.allOf(equLists.stream().map(equ -> CompletableFuture.runAsync(() -> saveEquipmentDataInTransaction(equ, "jg_his_xa", null))).toArray(CompletableFuture[]::new)).join();
String appKey = RequestContext.getAppKey();
String product = RequestContext.getProduct();
String token = RequestContext.getToken();
CompletableFuture.allOf(
equLists.parallelStream().map(equ -> CompletableFuture.runAsync(() -> {
RequestContext.setAppKey(appKey);
RequestContext.setProduct(product);
RequestContext.setToken(token);
saveEquipmentDataInTransaction(equ, "jg_his_xa", null);
})).toArray(CompletableFuture[]::new)
).join();
return Boolean.TRUE;
}
@GlobalTransactional(rollbackFor = Exception.class)
public void saveEquipmentDataInTransaction(Map<String, Object> equ, String dataSource, String remark) {
String record = UUID.randomUUID().toString();
try {
// transactionTemplate.execute(status -> {
String record = UUID.randomUUID().toString();
String equList = String.valueOf(equ.get("equList"));
String isCompleteXa = String.valueOf(equ.get("isCompleteXa"));
// 压力管道保存 工程装置表信息 必须在saveUseInfo之前进行,需要提前生成工程装置id
saveProjectContraption(equ, equList);
// 保存到设备表
......@@ -140,10 +150,11 @@ public class DataDockServiceImpl {
// 保存技术参数
saveTechParams(equ, record, equList);
// 保存到ES
saveEquInfoToEs(record);
saveEquInfoToEs(record, isCompleteXa);
// return null;
// });
} catch (Exception e) {
esEquipmentCategory.deleteById(record);
e.printStackTrace();
log.error("{}数据:保存时出现异常,对应数据:{}", dataSource, JSONObject.toJSONString(equ));
log.error("异常信息:{}", e.getMessage());
......@@ -157,7 +168,7 @@ public class DataDockServiceImpl {
idxBizJgSupervisionInfoService.lambdaUpdate().set(IdxBizJgSupervisionInfo::getOrgBranchCode, "50*74*160*12478").set(IdxBizJgSupervisionInfo::getOrgBranchName, "交口河镇市场监管所").in(IdxBizJgSupervisionInfo::getRecord, records).update();
records.forEach(record -> {
esEquipmentCategory.deleteById(record);
this.saveEquInfoToEs(record);
this.saveEquInfoToEs(record,"1");
});
return records.size();
}
......@@ -267,10 +278,10 @@ public class DataDockServiceImpl {
useInfo.setDataSource(dataSource);
useInfo.setIsNotEs("1");
useInfo.setIsIntoManagement(Boolean.FALSE);
useInfo.setUseUnitCreditCode(String.valueOf(equ.get("useUnitCode")).trim());
useInfo.setUseUnitName(String.valueOf(equ.get("useUnit")).trim());
useInfo.setUseUnitCreditCode(Objects.toString(equ.get("useUnitCode"), "").trim());
useInfo.setUseUnitName(Objects.toString(equ.get("useUnit"), "").trim());
useInfo.setRemark(remark);
useInfo.setProjectContraptionId(String.valueOf(equ.get("projectContraptionId")));
useInfo.setProjectContraptionId(Objects.toString(equ.get("projectContraptionId"), ""));
idxBizJgUseInfoService.save(useInfo);
}
}
......@@ -338,20 +349,65 @@ public class DataDockServiceImpl {
log.error("数据===>{}", JSONObject.toJSONString(equ));
IdxBizJgSupervisionInfo supervisionInfo = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgSupervisionInfo.class);
log.error("数据===hou>{}", JSONObject.toJSONString(supervisionInfo));
if (!ObjectUtils.isEmpty(supervisionInfo)) {
if (ObjectUtils.isEmpty(supervisionInfo)) return;
supervisionInfo.setRecord(record);
supervisionInfo.setRecDate(new Date());
// 根据使用单位所在监管所写入属地监管部门
// 获取符合条件的公司 Map
Map<String, Map<String, String>> countyMap;
try {
countyMap = Optional.ofNullable(Privilege.companyClient.queryAgencyList("county").getResult())
.orElse(Collections.emptyList())
.stream()
.filter(v -> "1442687786065854466".equals(String.valueOf(v.getParentId())))
.collect(Collectors.toMap(
CompanyModel::getCompanyCode,
v -> Stream.of(new AbstractMap.SimpleEntry<>("companyName", v.getCompanyName()),
new AbstractMap.SimpleEntry<>("orgCode", v.getOrgCode()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)),
(a, b) -> a
));
} catch (Exception e) {
countyMap = Collections.emptyMap();
}
String companyCode = "1".equals(equ.get("equCodeType"))
? String.valueOf(equ.get("equCode"))
: String.valueOf(equ.get("originalEquCode"));
companyCode = companyCode.trim();
if (companyCode.length() > 9) {
companyCode = companyCode.substring(4, 10);
}
Map<String, String> companyInfo = countyMap.get(companyCode);
if (companyInfo != null) {
String companyName = companyInfo.get("companyName");
String orgCode = companyInfo.get("orgCode");
if (companyName != null && !companyName.trim().isEmpty()) {
supervisionInfo.setOrgBranchCode(orgCode);
supervisionInfo.setOrgBranchName(companyName);
}
} else {
// 通过 useUnitCode 查询属地监管部门
String useUnitCode = String.valueOf(equ.get("useUnitCode")).trim();
CompanyModel companyModel = Privilege.companyClient.queryByCompanyCode(useUnitCode).getResult();
Optional.ofNullable(companyModel).ifPresent(com -> {
String superOrgCode = com.getOrgCode().substring(0, com.getOrgCode().lastIndexOf("*"));
if (companyModel != null) {
String orgCode = companyModel.getOrgCode();
if (orgCode != null && orgCode.contains("*")) {
String superOrgCode = orgCode.substring(0, orgCode.lastIndexOf("*"));
supervisionInfo.setOrgBranchCode(superOrgCode);
CompanyModel compnay = JSON.parseObject(toJSONString(JSON.parseObject(toJSONString(Privilege.companyClient.queryByOrgcode(superOrgCode).getResult())).get("compnay")), CompanyModel.class);
supervisionInfo.setOrgBranchName(compnay.getCompanyName());
});
idxBizJgSupervisionInfoService.save(supervisionInfo);
Optional.ofNullable(Privilege.companyClient.queryByOrgcode(superOrgCode).getResult())
.map(result -> JSON.parseObject(JSON.toJSONString(result)).getString("compnay"))
.map(json -> JSON.parseObject(json, CompanyModel.class))
.map(CompanyModel::getCompanyName)
.ifPresent(supervisionInfo::setOrgBranchName);
}
} else {
supervisionInfo.setOrgBranchCode("50*52");
supervisionInfo.setOrgBranchName("西安市市场监督管理局");
}
}
idxBizJgSupervisionInfoService.save(supervisionInfo);
}
/**
......@@ -424,7 +480,11 @@ public class DataDockServiceImpl {
* @param record
*/
private void saveVehicleParams(Map<String, Object> equ, String record) {
log.error("数据===>{}", JSONObject.toJSONString(equ));
log.info("数据===>{}", JSONObject.toJSONString(equ));
Stream.of("seatNumber", "carsNumber", "tractorSeatNumber")
.forEach(key -> {
});
IdxBizJgTechParamsVehicle equipTechParamVehicle = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgTechParamsVehicle.class);
if (!ValidationUtil.isEmpty(equipTechParamVehicle)) {
equipTechParamVehicle.setRecord(record);
......@@ -543,12 +603,13 @@ public class DataDockServiceImpl {
*
* @param record 设备唯一编码
*/
private void saveEquInfoToEs(String record) {
private void saveEquInfoToEs(String record, String isCompleteXa) {
Map<String, Object> map = categoryOtherInfoMapper.selectDataById(record);
ESEquipmentCategoryDto equipmentCategoryDto = JSON.parseObject(toJSONString(map), ESEquipmentCategoryDto.class);
if (!ObjectUtils.isEmpty(equipmentCategoryDto)) {
long time = Timestamp.valueOf(map.get("REC_DATE").toString().substring(0, 19)).getTime();
equipmentCategoryDto.setREC_DATE(time);
equipmentCategoryDto.setIS_COMPLETE_XA(Objects.equals("0", isCompleteXa));
esEquipmentCategory.save(equipmentCategoryDto);
}
}
......@@ -1459,7 +1520,6 @@ public class DataDockServiceImpl {
if (ValidationUtil.isEmpty(fileData) || !"inspectReport".equals(fileData.getString("key"))) {
continue;
}
JSONArray value = fileData.getJSONArray("value");
if (value != null) {
equ.setInspectReport(value.toJSONString());
......@@ -1467,35 +1527,33 @@ public class DataDockServiceImpl {
}
}
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
// 监管——历史——管道——批量
String dataSource = "jg_his_gd_pl";
// 公共参数提取
EquipRequestParamsDto paramsDto = this.extractCommonData(dataSource, reginParams, equipInfo, equLists);
// 是否工业管道
boolean isGYGD = "8300".equals(paramsDto.getEquCategoryCode());
boolean haveUseRegistration = false;
// 确保使用登记证和工程装置在该单位下都是不存在的,方可导入数据
if (isGYGD) {
this.checkTheUnitRegManageAlreadyExists(paramsDto);
haveUseRegistration = this.checkTheUnitRegManageAlreadyExists(paramsDto, haveUseRegistration);
}
this.checkTheUnitProConMatching(paramsDto);
this.checkTheUnitProConAlreadyExists(paramsDto);
// 生成工程装置表信息
IdxBizJgProjectContraption proCon = this.saveProjectContraption(paramsDto);
// 保存管道对应的idx表数据
List<String> records = this.savePipInfoToIdxTables(equLists, paramsDto, proCon);
if (isGYGD) {
// 生成使用登记表信息 + 设备关系表 + 历史表
JgUseRegistration useReg = this.saveUseRegAndEq(paramsDto, records, proCon);
// 生成使用登记证表数据
if (!haveUseRegistration){
JgUseRegistrationManage regManage = this.saveUseRegManage(paramsDto, useReg);
// 流水表
this.saveCertChangeRecord(useReg, regManage, records, paramsDto);
}
}
return Boolean.TRUE;
}
......@@ -1531,22 +1589,32 @@ public class DataDockServiceImpl {
}
/**
* 检查本单位是否存在使用等级证编号 + 不能是系统未生成的
* 检查本单位是否存在使用登记证编号 + 不能是系统未生成的
*
* @param paramsDto
* @param paramsDto 设备请求参数
*/
public void checkTheUnitRegManageAlreadyExists(EquipRequestParamsDto paramsDto) {
public boolean checkTheUnitRegManageAlreadyExists(EquipRequestParamsDto paramsDto, boolean haveUseRegistration) {
// 1. 判断是否使用未来系统生成编号
idxBizJgRegisterInfoServiceImpl.checkUseRegistrationCode(paramsDto.getUseOrgCode(), "unit");
Integer useRegManageCount = jgUseRegistrationManageService.lambdaQuery()
.eq(JgUseRegistrationManage::getUseUnitCreditCode, paramsDto.getCompanyCode())
.eq(JgUseRegistrationManage::getUseUnitName, paramsDto.getCompanyName())
.eq(JgUseRegistrationManage::getUseRegistrationCode, paramsDto.getUseOrgCode())
.eq(JgUseRegistrationManage::getEquList, paramsDto.getEquListName())
.eq(JgUseRegistrationManage::getEquCategory, paramsDto.getEquCategoryName())
.count();
if (useRegManageCount > 0) {
throw new BadRequest("系统已存在该使用登记证编号!");
// 2. 获取使用登记管理列表
List<JgUseRegistration> useRegistrationList = jgUseRegistrationMapper.selectList(
new LambdaQueryWrapper<JgUseRegistration>()
.eq(JgUseRegistration::getUseRegistrationCode, paramsDto.getUseOrgCode())
.eq(JgUseRegistration::getIsDelete, 0)
.eq(JgUseRegistration::getStatus, "已完成")
.orderByDesc(JgUseRegistration::getRecDate)
.last("limit 1"));
if (!useRegistrationList.isEmpty()) {
if (useRegistrationList.stream().filter(map -> !"1".equals(map.getRegType())).count() > 1) {
throw new BadRequest("该使用登记证编号已由系统自动生成,不能导入,请确认使用登记证编号是否正确!");
}
if (useRegistrationList.stream().anyMatch(map -> !paramsDto.getCompanyCode().equals(map.getUseUnitCreditCode()))) {
throw new BadRequest("该使用登记证编号在其他企业使用,不能导入,请确认使用登记证编号是否正确!");
}
haveUseRegistration = true;
}
return haveUseRegistration;
}
/**
......@@ -1899,7 +1967,6 @@ public class DataDockServiceImpl {
registrationHistory.setCreateUserId(paramsDto.getExecUserId());
registrationHistory.setRecUserName(paramsDto.getExecUserName());
jgRegistrationHistoryService.save(registrationHistory);
return useReg;
}
......
......@@ -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,8 +552,10 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
LambdaQueryWrapper<JgInstallationNoticeEq> lambda = new QueryWrapper<JgInstallationNoticeEq>().lambda();
lambda.eq(JgInstallationNoticeEq::getEquipTransferId, noticeDto.getSequenceNbr());
jgInstallationNoticeEqMapper.delete(lambda);
List<Map<String, Object>> deviceList = noticeDto.getDeviceList();
if(!CollectionUtils.isEmpty(deviceList)){
ArrayList<JgInstallationNoticeEq> jgInstallationNoticeEqs = new ArrayList<>();
noticeDto.getDeviceList().forEach(item -> {
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")));
......@@ -562,6 +564,7 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
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);
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());
......
......@@ -409,7 +409,6 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
private void updateOrCreateInspectionDetection(Map<String, Object> equipment, JgUseRegistration jgUseRegistration, IdxBizJgRegisterInfo registerInfo) {
InspectionDetectionInfo inspectionDetectionInfo = new InspectionDetectionInfo();
BeanUtil.copyProperties(equipment, inspectionDetectionInfo);
if("unit".equals(jgUseRegistration.getManageType())){
if (registerInfo.getEquList().equals(EquipmentClassifityEnum.YLGD.getCode())){
// 压力管道逻辑,根据设备record + 检验报告编号判定唯一一条检验流水,有进行更新,无则进行插入
......@@ -423,7 +422,12 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
if (equipment.get("jySeq") != null) {
// 更新逻辑
InspectionDetectionInfo inspectionDetectionInfoDb = inspectionDetectionInfoMapper.selectById(equipment.get("jySeq").toString());
String inspectionSeq = inspectionDetectionInfoDb.getSequenceNbr();
String record = inspectionDetectionInfoDb.getRecord();
Bean.copyExistPropertis(inspectionDetectionInfo, inspectionDetectionInfoDb);
inspectionDetectionInfoDb.setSequenceNbr(inspectionSeq);
inspectionDetectionInfoDb.setRecord(record);
inspectionDetectionInfoDb.setRecDate(new Date());
inspectionDetectionInfoMapper.updateById(inspectionDetectionInfoDb);
} else {
String record = Optional.ofNullable(equipment.get("equipId"))
......@@ -1088,7 +1092,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
String useRegistrationCode = null;
Long useRegistrationManageSeq = null;
Boolean flag = Boolean.FALSE;
AtomicReference<Boolean> flag = new AtomicReference<>(Boolean.FALSE);
boolean isMerge = Boolean.FALSE;
String equCategoryCode = String.valueOf(mapData.get("EQU_CATEGORY_CODE"));
String equDefineCode = String.valueOf(mapData.get("EQU_DEFINE_CODE"));
......@@ -1103,10 +1107,25 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
}
//如果是气瓶或工业管道判断之前是否已经做过使用登记
if (CylinderTypeEnum.CYLINDER.getCode().equals(equCategoryCode)) {
//如果是增补功能
if ("1".equals(jgUseRegistration.getIsAddEquip())) {
flag.set("1".equals(jgUseRegistration.getIsAddEquip()));
if (flag.get()) {
useRegistrationCode = jgUseRegistration.getUseRegistrationCode();
flag = Boolean.TRUE;
} else {
JgUseRegistrationManageDto dto = new JgUseRegistrationManageDto();
dto.setCertificateStatus(CertificateStatusEnum.YIDENGJI.getName());
dto.setUseUnitCreditCode(jgUseRegistration.getUseUnitCreditCode());
dto.setRegType("0");
useRegistrationCode = Optional.ofNullable(jgUseRegistrationManageMapper.queryByUseUnitCreditCode(dto))
.filter(list -> !list.isEmpty())
.flatMap(list -> list.stream()
.map(JgUseRegistrationManageDto::getUseRegistrationCode)
.filter(code -> code.startsWith("瓶30"))
.findFirst())
.map(code -> {
flag.set(Boolean.TRUE);
return code;
})
.orElse(null);
}
}
......@@ -1116,7 +1135,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
&& !jgUseRegistration.getOriginProjectContraptionIds().contains(jgUseRegistration.getProjectContraptionId())
&& Objects.nonNull(jgUseRegistration.getUseRegistrationCode())) {
useRegistrationCode = jgUseRegistration.getUseRegistrationCode();
flag = true;
flag.set(true);
isMerge = true;
}
......@@ -1129,8 +1148,8 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
mapData.put("isFirstMerge", isFirstMerge);
// 装置表写入使用登记证编号、将装置名称写入到使用登记表
updateRegAndProjectContraption(jgUseRegistration, mapData, jgProjectContraption);
//首次合并,给工程装置生成设备代码和监管码
if (isFirstMerge){
// 首次合并 + 特殊登记,给工程装置生成设备代码和监管码
if (isFirstMerge || "2".equals(jgUseRegistration.getRegType())) {
Map<String, Object> createCodeMap = new HashMap<>();
createCodeMap.put("cityCode", jgProjectContraption.getCity());
createCodeMap.put("countyCode", jgProjectContraption.getCounty());
......@@ -1161,7 +1180,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
LambdaQueryWrapper<IdxBizJgOtherInfo> lambdaOth = new QueryWrapper<IdxBizJgOtherInfo>().lambda();
lambdaOth.eq(IdxBizJgOtherInfo::getRecord, String.valueOf(mapData.get("equipId")));
IdxBizJgOtherInfo otherInfo = otherInfoMapper.selectOne(lambdaOth);
if (jgProjectContraption != null && (isMerge || (Boolean) mapData.get("isFirstMerge"))) {
if (jgProjectContraption != null && (isMerge || (Boolean) mapData.get("isFirstMerge") || "2".equals(jgUseRegistration.getRegType()))) {
otherInfo.setSupervisoryCode(jgProjectContraption.getSupervisoryCode());
registerInfo.setEquCode(jgProjectContraption.getEquCode());
}
......@@ -1171,8 +1190,8 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
// equipment.put("inspectOrgName", mapData.getOrDefault("inspectOrgName", ""));
// equipment.put("inspectConclusion", inspectConclusionName);
// 更新设备信息 && 生成使用登记证编号 && 同步es
processMapData(sequenceNbr, mapData, jgUseRegistration, jgRegistrationHistory, registerInfo, otherInfo, taskV2Model,
jsonObject, flag, useRegistrationCode, equipment, isMerge);
this.processMapData(sequenceNbr, mapData, jgUseRegistration, jgRegistrationHistory, registerInfo, otherInfo, taskV2Model,
jsonObject, flag.get(), useRegistrationCode, equipment, isMerge);
// 查询设备制造信息
LambdaQueryWrapper<IdxBizJgFactoryInfo> factoryInfoWrapper = new LambdaQueryWrapper<>();
factoryInfoWrapper.eq(IdxBizJgFactoryInfo::getRecord, equId);
......@@ -1189,6 +1208,8 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
// 更新工程装置信息
if (Objects.nonNull(jgProjectContraption)) {
jgProjectContraption.setUseRegistrationCode(jgUseRegistration.getUseRegistrationCode());
jgProjectContraption.setUscUnitCreditCode("");
jgProjectContraption.setUscUnitName("");
jgProjectContraptionService.updateById(jgProjectContraption);
}
// 取第一条设备的注册消息--用来获取这一批设备的设备种类/类别/品种
......@@ -1198,10 +1219,10 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
// 单位办理的压力管道,在完成审批时,将检验信息写入到装置检验信息表
// savePieLineProjectInspectData(jgUseRegistration, registerInfo, mapData);
// 生成证书管理表
generateRegistrationManage(jgUseRegistration, registerInfo, flag, useRegistrationManageSeq);
generateRegistrationManage(jgUseRegistration, registerInfo, flag.get(), useRegistrationManageSeq);
// 生成一条tzs_jg_certificate_change_record记录
generateCertificateChangeRecord(jgUseRegistration, registerInfo, changeRecordId, taskV2Model, flag);
generateCertificateChangeRecord(jgUseRegistration, registerInfo, changeRecordId, taskV2Model, flag.get());
// 更新历史表:下次检验日期、检验机构名称、检验结论在压力管道、气瓶时更新子表单的数据
jgRegistrationHistory.setChangeData(JSON.toJSONString(mapData));
jgRegistrationHistoryService.updateById(jgRegistrationHistory);
......@@ -1214,7 +1235,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
//总工程装置
if(!StringUtils.isEmpty(jgProjectContraption)){
jgUseRegistration.setProjectContraption(jgProjectContraption.getProjectContraption());
jgProjectContraption.setUseDate(String.valueOf(mapData.get("useDate")));
jgProjectContraption.setUseDate(Objects.toString(mapData.get("useDate"),""));
jgProjectContraption.setCity(String.valueOf(mapData.get("city")));
jgProjectContraption.setCounty(String.valueOf(mapData.get("county")));
jgProjectContraption.setStreet(String.valueOf(mapData.get("factoryUseSiteStreet")));
......@@ -1295,26 +1316,6 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
return "";
}
private void savePieLineProjectInspectData(JgUseRegistration jgUseRegistration, IdxBizJgRegisterInfo registerInfo, JSONObject mapData) {
// 单位办理的压力管道,在完成审批时,将检验信息写入到装置检验信息表
if("unit".equals(jgUseRegistration.getManageType()) && registerInfo.getEquList().equals(EquipmentClassifityEnum.YLGD.getCode())){
IdxBizJgProjectInspection inspectionDetectionInfo = new IdxBizJgProjectInspection();
BeanUtil.copyProperties(mapData, inspectionDetectionInfo);
if (mapData.get("jySeq") != null) {
// 更新逻辑
IdxBizJgProjectInspection inspectionDetectionInfoDb = projectInspectionMapper.selectById(mapData.get("jySeq").toString());
Bean.copyExistPropertis(inspectionDetectionInfo, inspectionDetectionInfoDb);
projectInspectionMapper.updateById(inspectionDetectionInfo);
} else {
inspectionDetectionInfo.setProjectContraptionId(jgUseRegistration.getProjectContraptionId());
inspectionDetectionInfo.setRecDate(new Date());
// 使用登记创建新增的检验信息id设置为使用登记的主键id,在作废时级联作废
inspectionDetectionInfo.setSequenceNbr(jgUseRegistration.getSequenceNbr() + "");
projectInspectionMapper.insert(inspectionDetectionInfo);
}
}
}
/**
* 生成使用登记证变更记录
*
......@@ -1593,7 +1594,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
jgUseRegistration.setSupervisoryCode(otherInfo.getSupervisoryCode());
// 更新设备信息
updateEquipMessage(String.valueOf(sequenceNbr), jgUseRegistration, mapData, registerInfo, otherInfo, flag, useRegistrationCode, equipment);
this.updateEquipMessage(String.valueOf(sequenceNbr), jgUseRegistration, mapData, registerInfo, otherInfo, flag, useRegistrationCode, equipment);
// 生成使用登记证编号
if (!ObjectUtils.isEmpty(jgUseRegistration.getSupervisoryCode())) {
if ("unit".equals(jgUseRegistration.getManageType())) {
......@@ -1642,7 +1643,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
IdxBizJgUseInfo useInfo = useInfoMapper.selectOne(lambda);
String usePlace = useInfo.getProvinceName() + "/" + useInfo.getCityName() + "/" + useInfo.getCountyName() + "/" + useInfo.getStreetName();
useInfo.setIsIntoManagement(Boolean.TRUE);
useInfo.setUseDate(String.valueOf(mapData.get("useDate")));
useInfo.setUseDate(Objects.toString(mapData.get("useDate"),""));
useInfoMapper.updateById(useInfo);
// 更新es
updateEsData(usePlace, mapData, otherInfo,useInfo, jgUseRegistration, jsonObject);
......@@ -2515,9 +2516,10 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
* 获取导出基本信息数据
* @param useRegistrationSeqs
* @param category
* @param whetherToFilterStatus 是否过滤设备状态 是:true(过滤设备状态为在用),否:false(所有的)
* @return
*/
public List<CompletableFuture<byte[]>> getExportSummaryBasicInfoData(List<Long> useRegistrationSeqs, String category,String type){
public List<CompletableFuture<byte[]>> getExportSummaryBasicInfoData(List<Long> useRegistrationSeqs, String category, String type, Boolean whetherToFilterStatus) {
List<CompletableFuture<byte[]>> futureList = new ArrayList<>();
// 总数
double total;
......@@ -2542,8 +2544,8 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
if (CollectionUtils.isNotEmpty(equipmentLists)) {
equipmentLists.stream()
.map(obj -> (JSONObject) obj)
.filter(equipmentItem -> this.checkEquStatusInUse(equipmentItem.getString("record")))
.forEach(item ->{
.filter(equipmentItem -> whetherToFilterStatus || this.checkEquStatusInUse(equipmentItem.getString("record")))
.forEach(item -> {
item.put("useDate", timeToMonths(useDateValue));
allEquipment.add(item);
addedEquCodes.add(item.getString("equCode"));
......@@ -2604,11 +2606,11 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
*/
private boolean checkEquStatusInUse(String record) {
IdxBizJgUseInfo useInfo = idxBizJgUseInfoService.lambdaQuery().eq(IdxBizJgUseInfo::getRecord, record).one();
if (ValidationUtil.isEmpty(useInfo.getEquState())) {
return true;
}
if (!Objects.isNull(useInfo) && !ValidationUtil.isEmpty(useInfo.getEquState())) {
return EquimentEnum.ZAIYONG.getCode().toString().equals(useInfo.getEquState());
}
return false;
}
/**
* 导出基本信息汇总表(工业管道/气瓶)
......@@ -2619,7 +2621,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
public void exportSummaryBasicInfo(List<Long> useRegistrationSeqs, HttpServletResponse response, String category) {
JgUseRegistration jgUseRegistration = jgUseRegistrationMapper.selectOne(new QueryWrapper<JgUseRegistration>().lambda()
.eq(JgUseRegistration::getSequenceNbr, useRegistrationSeqs.get(0)).eq(JgUseRegistration::getIsDelete, false));
List<CompletableFuture<byte[]>> futures = getExportSummaryBasicInfoData(useRegistrationSeqs, category,"");
List<CompletableFuture<byte[]>> futures = getExportSummaryBasicInfoData(useRegistrationSeqs, category, "", Boolean.FALSE);
if ("8300".equals(category) || "8200".equals(category) || "8100".equals(category)) {
// 文件名前缀
String filePrefix = "压力管道基本信息汇总表_";
......@@ -4308,6 +4310,18 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
.collect(Collectors.toList());
List<Map<String, Object>> equList = this.getBaseMapper()
.selectPieLineListByOfCanReg(uniqueContraptionList);
// 检验报告数据格式化 转json
equList.stream().filter(e-> e.get("inspectReport") != null).forEach(item->{
item.put("inspectReport", JSON.parse(item.get("inspectReport").toString()));
});
// 根据设备判断工程装置安装位置是否西咸
String isXixian = Optional.ofNullable(equList.get(0))
.map(equ -> equ.get("record"))
.map(String::valueOf)
.flatMap(recordStr -> Optional.ofNullable(idxBizJgUseInfoService.getOneData(recordStr)))
.flatMap(data -> Optional.ofNullable(data.getIsNotXiXian()))
.map(String::valueOf)
.orElse("0");
// 计算管道长度总和
double totalPipelineLength = BigDecimal.valueOf(equList.stream()
.map(map -> map.get("pipeLength"))
......@@ -4317,6 +4331,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
MapBuilder<String, Object> resultBuilder = MapBuilder.<String, Object>create()
.put("equipmentLists", equList)
.put("isXixian", isXixian)
.put("projectContraption", projectContraption.getProjectContraption())
.put("projectContraptionId", projectContraptionSeq)
.put("projectContraptionNo", projectContraption.getProjectContraptionNo())
......@@ -4447,4 +4462,8 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
}
}
}
public Object countUseTimesForInvalid(Object code) {
return jgUseRegistrationMapper.countUseTimesForInvalid(code) == 0;
}
}
\ No newline at end of file
......@@ -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 cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.CharSequenceUtil;
import com.alibaba.fastjson.JSON;
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.annotation.FieldDisplayDefine;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.module.jg.api.dto.*;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistration;
......@@ -18,20 +14,12 @@ import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationManageMapper;
import com.yeejoin.amos.boot.module.jg.api.service.IBizDataChangeHandleStrategy;
import com.yeejoin.amos.boot.module.jg.biz.service.*;
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.enums.FlowStatusEnum;
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 org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import javax.annotation.PostConstruct;
import java.lang.reflect.Field;
import java.util.*;
/**
......@@ -40,11 +28,6 @@ import java.util.*;
@Component
public class SingleDataChangeProcessStrategy implements IChangeDataProcessStrategy {
private final IdxBizJgDesignInfoMapper idxBizJgDesignInfoMapper;
private final IdxBizJgFactoryInfoMapper jgFactoryInfoMapper;
private final IdxBizJgRegisterInfoMapper idxBizJgRegisterInfoMapper;
private final JgUseRegistrationServiceImpl useRegistrationService;
......@@ -56,13 +39,8 @@ public class SingleDataChangeProcessStrategy implements IChangeDataProcessStrate
private final EquipmentCategoryMapper equipmentCategoryMapper;
private final List<String> jsonFields = new ArrayList<>();
public SingleDataChangeProcessStrategy(IdxBizJgDesignInfoMapper idxBizJgDesignInfoMapper, IdxBizJgFactoryInfoMapper jgFactoryInfoMapper, IdxBizJgRegisterInfoMapper idxBizJgRegisterInfoMapper, JgUseRegistrationServiceImpl useRegistrationService, JgUseRegistrationEqMapper jgRelationEquipMapper, IIdxBizJgTechParamsElevatorService iIdxBizJgTechParamsElevatorService, IIdxBizJgTechParamsVehicleService iIdxBizJgTechParamsVehicleService, IIdxBizJgTechParamsRopewayService iIdxBizJgTechParamsRopewayService, IIdxBizJgTechParamsRidesService iIdxBizJgTechParamsRidesService, IIdxBizJgTechParamsBoilerService iIdxBizJgTechParamsBoilerService, IIdxBizJgTechParamsVesselService iIdxBizJgTechParamsVesselService, IIdxBizJgTechParamsPipelineService iIdxBizJgTechParamsPipelineService, IIdxBizJgTechParamsLiftingService iIdxBizJgTechParamsLiftingService, EquipChangeDataUpdateService equipChangeDataUpdateService, CommonEquipDataProcessService commonEquipDataProcessService, JgUseRegistrationManageMapper registrationManageMapper, EquipmentCategoryMapper equipmentCategoryMapper) {
this.idxBizJgDesignInfoMapper = idxBizJgDesignInfoMapper;
this.jgFactoryInfoMapper = jgFactoryInfoMapper;
this.idxBizJgRegisterInfoMapper = idxBizJgRegisterInfoMapper;
public SingleDataChangeProcessStrategy( JgUseRegistrationServiceImpl useRegistrationService, JgUseRegistrationEqMapper jgRelationEquipMapper, CommonEquipDataProcessService commonEquipDataProcessService, JgUseRegistrationManageMapper registrationManageMapper, EquipmentCategoryMapper equipmentCategoryMapper) {
this.useRegistrationService = useRegistrationService;
this.jgRelationEquipMapper = jgRelationEquipMapper;
this.commonEquipDataProcessService = commonEquipDataProcessService;
......@@ -70,53 +48,6 @@ public class SingleDataChangeProcessStrategy implements IChangeDataProcessStrate
this.equipmentCategoryMapper = equipmentCategoryMapper;
}
@PostConstruct
public void init() {
Field[] fields1 = EquipRegisterChangeDataDto.class.getDeclaredFields();
for (Field field : fields1) {
field.setAccessible(true);
FieldDisplayDefine fieldDisplayDefine = field.getAnnotation(FieldDisplayDefine.class);
if (fieldDisplayDefine != null && fieldDisplayDefine.type() == JSON.class) {
jsonFields.add(field.getName());
}
}
Field[] fields2 = EquipFactoryChangeDataDto.class.getDeclaredFields();
for (Field field : fields2) {
field.setAccessible(true);
FieldDisplayDefine fieldDisplayDefine = field.getAnnotation(FieldDisplayDefine.class);
if (fieldDisplayDefine != null && fieldDisplayDefine.type() == JSON.class) {
jsonFields.add(field.getName());
}
}
// 设计信息构建
Field[] fields3 = EquipDesignChangeDataDto.class.getDeclaredFields();
for (Field field : fields3) {
field.setAccessible(true);
FieldDisplayDefine fieldDisplayDefine = field.getAnnotation(FieldDisplayDefine.class);
if (fieldDisplayDefine != null && fieldDisplayDefine.type() == JSON.class) {
jsonFields.add(field.getName());
}
}
// 技术参数附件
Field[] fields4 = TechParamsLiftingChangeFieldDto.class.getDeclaredFields();
for (Field field : fields4) {
field.setAccessible(true);
FieldDisplayDefine fieldDisplayDefine = field.getAnnotation(FieldDisplayDefine.class);
if (fieldDisplayDefine != null && fieldDisplayDefine.type() == JSON.class) {
jsonFields.add(field.getName());
}
}
Field[] fields5 = TechParamsPipelineChangeFieldDto.class.getDeclaredFields();
for (Field field : fields5) {
field.setAccessible(true);
FieldDisplayDefine fieldDisplayDefine = field.getAnnotation(FieldDisplayDefine.class);
if (fieldDisplayDefine != null && fieldDisplayDefine.type() == JSON.class) {
jsonFields.add(field.getName());
}
}
}
@Override
public List<ChangeDataDto> handle(Map<String, Object> changeData, String defaultChangeId) {
......@@ -189,60 +120,19 @@ public class SingleDataChangeProcessStrategy implements IChangeDataProcessStrate
private Map<String, Object> getDetailByBizId(String record) {
Map<String, Object> re = new HashMap<>();
// 注册信息(基本信息)构建
EquipRegisterChangeDataDto equipRegisterChangeDataDto = this.buildRegisterInfo(record);
EquipRegisterChangeDataDto equipRegisterChangeDataDto = commonEquipDataProcessService.buildRegisterInfo(record);
// 制造信息构建
EquipFactoryChangeDataDto factoryChangeDataDto = this.buildFactoryInfo(record);
EquipFactoryChangeDataDto factoryChangeDataDto = commonEquipDataProcessService.buildFactoryInfo(record);
// 设计信息构建
EquipDesignChangeDataDto designChangeDataDto = this.buildDesignInfo(record);
EquipDesignChangeDataDto designChangeDataDto = commonEquipDataProcessService.buildDesignInfo(record);
// 技术参数构建
BaseTechParamsFieldDto techParamsFieldDto = commonEquipDataProcessService.buildTechParamInfo(equipRegisterChangeDataDto, record);
re.putAll(BeanUtil.beanToMap(equipRegisterChangeDataDto));
re.putAll(BeanUtil.beanToMap(factoryChangeDataDto));
re.putAll(BeanUtil.beanToMap(designChangeDataDto));
re.putAll(BeanUtil.beanToMap(techParamsFieldDto));
this.castJsonFields(re);
return this.cast2UnderCase(re);
}
private Map<String, Object> cast2UnderCase(Map<String, Object> re) {
// 由于历史遗留问题,和前端保存统一,要转成大写下滑线驼峰
Map<String, Object> result = new HashMap<>();
re.forEach((k, v) -> {
result.put(CharSequenceUtil.toUnderlineCase(k).toUpperCase(), v);
});
return result;
}
private void castJsonFields(Map<String, Object> re) {
jsonFields.forEach(field -> {
if (re.containsKey(field) && re.get(field) instanceof String) {
re.put(field, JSON.parse((String) re.get(field)));
}
});
}
private EquipDesignChangeDataDto buildDesignInfo(String record) {
EquipDesignChangeDataDto changeDataDto = new EquipDesignChangeDataDto();
IdxBizJgDesignInfo designInfo = idxBizJgDesignInfoMapper.selectOne(new LambdaQueryWrapper<IdxBizJgDesignInfo>().eq(IdxBizJgDesignInfo::getRecord, record));
BeanUtil.copyProperties(designInfo, changeDataDto);
changeDataDto.setDesignDate(DateUtil.formatDate(designInfo.getDesignDate()));
return changeDataDto;
}
private EquipFactoryChangeDataDto buildFactoryInfo(String record) {
EquipFactoryChangeDataDto changeDataDto = new EquipFactoryChangeDataDto();
IdxBizJgFactoryInfo factoryInfo = jgFactoryInfoMapper.selectOne(new LambdaQueryWrapper<IdxBizJgFactoryInfo>().eq(IdxBizJgFactoryInfo::getRecord, record));
BeanUtil.copyProperties(factoryInfo, changeDataDto);
changeDataDto.setProduceDate(DateUtil.formatDate(factoryInfo.getProduceDate()));
return changeDataDto;
}
private EquipRegisterChangeDataDto buildRegisterInfo(String record) {
EquipRegisterChangeDataDto changeDataDto = new EquipRegisterChangeDataDto();
IdxBizJgRegisterInfo registerInfo = idxBizJgRegisterInfoMapper.selectOne(new LambdaQueryWrapper<IdxBizJgRegisterInfo>().eq(IdxBizJgRegisterInfo::getRecord, record));
BeanUtil.copyProperties(registerInfo, changeDataDto);
return changeDataDto;
commonEquipDataProcessService.castJsonFields(re);
return commonEquipDataProcessService.cast2UnderCase(re);
}
......
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());
......
......@@ -11,22 +11,22 @@
<o:Author>Admin</o:Author>
<o:LastAuthor>mly</o:LastAuthor>
<o:Created>2025-02-11T02:12:00Z</o:Created>
<o:LastSaved>2025-03-03T10:02:32Z</o:LastSaved>
<o:TotalTime>2880</o:TotalTime>
<o:LastSaved>2025-03-14T13:12:45Z</o:LastSaved>
<o:TotalTime>5760</o:TotalTime>
<o:Pages>1</o:Pages>
<o:Words>284</o:Words>
<o:Characters>579</o:Characters>
<o:Lines>0</o:Lines>
<o:Paragraphs>0</o:Paragraphs>
<o:CharactersWithSpaces>641</o:CharactersWithSpaces>
<o:CharactersWithSpaces>585</o:CharactersWithSpaces>
<o:Version>14</o:Version>
</o:DocumentProperties>
<o:CustomDocumentProperties>
<o:KSOTemplateDocerSaveRecord dt:dt="string">
eyJoZGlkIjoiNTRkYjJiYWQwMzVkYWEwZGNmODdlMzhmYWExNTZhZjEiLCJ1c2VySWQiOiI5MjI2NjY0ODIifQ==
<o:KSOTemplateDocerSaveRecord dt:dt="string">&#10;
eyJoZGlkIjoiNTRkYjJiYWQwMzVkYWEwZGNmODdlMzhmYWExNTZhZjEiLCJ1c2VySWQiOiI5MjI2NjY0ODIifQ==&#10;
</o:KSOTemplateDocerSaveRecord>
<o:KSOProductBuildVer dt:dt="string">2052-12.1.0.18543</o:KSOProductBuildVer>
<o:ICV dt:dt="string">C97ACE8DD1724BBA88F0940962A6C6D0_12</o:ICV>
<o:ICV dt:dt="string">4721AD01F5C54FAFBCD5672F46A148D5_12</o:ICV>
</o:CustomDocumentProperties>
<w:fonts>
<w:defaultFonts w:ascii="Calibri" w:fareast="宋体" w:h-ansi="Calibri" w:cs="Times New Roman"/>
......@@ -507,8 +507,8 @@
<w:jc w:val="center"/>
<w:outlineLvl w:val="0"/>
<w:rPr>
<w:sz w:val="32"/>
<w:sz-cs w:val="32"/>
<w:rFonts w:ascii="Arial" w:hint="default"/>
<w:sz w:val="21"/>
</w:rPr>
</w:pPr>
<w:r>
......@@ -522,15 +522,6 @@
</w:p>
<w:p>
<w:pPr>
<w:spacing w:line="426" w:line-rule="auto"/>
<w:rPr>
<w:rFonts w:ascii="Arial" w:hint="default"/>
<w:sz w:val="21"/>
</w:rPr>
</w:pPr>
</w:p>
<w:p>
<w:pPr>
<w:spacing w:before="78" w:line="211" w:line-rule="auto"/>
<w:ind w:left="1918"/>
<w:rPr>
......@@ -569,8 +560,8 @@
<w:tbl>
<w:tblPr>
<w:tblStyle w:val="a5"/>
<w:tblW w:w="9230" w:type="dxa"/>
<w:tblInd w:w="1265" w:type="dxa"/>
<w:tblW w:w="9855" w:type="dxa"/>
<w:tblInd w:w="1070" w:type="dxa"/>
<w:tblBorders>
<w:top w:val="single" w:sz="2" wx:bdrwidth="5" w:space="0" w:color="000000"/>
<w:left w:val="single" w:sz="2" wx:bdrwidth="5" w:space="0" w:color="000000"/>
......@@ -588,11 +579,11 @@
</w:tblCellMar>
</w:tblPr>
<w:tblGrid>
<w:gridCol w:w="900"/>
<w:gridCol w:w="2205"/>
<w:gridCol w:w="2115"/>
<w:gridCol w:w="1770"/>
<w:gridCol w:w="2240"/>
<w:gridCol w:w="885"/>
<w:gridCol w:w="2340"/>
<w:gridCol w:w="2340"/>
<w:gridCol w:w="1650"/>
<w:gridCol w:w="2640"/>
</w:tblGrid>
<w:tr>
<w:tblPrEx>
......@@ -616,7 +607,7 @@
</w:trPr>
<w:tc>
<w:tcPr>
<w:tcW w:w="900" w:type="dxa"/>
<w:tcW w:w="885" w:type="dxa"/>
<w:vmerge w:val="restart"/>
<w:tcBorders>
<w:top w:val="single" w:sz="6" wx:bdrwidth="15" w:space="0" w:color="000000"/>
......@@ -682,7 +673,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="2205" w:type="dxa"/>
<w:tcW w:w="2340" w:type="dxa"/>
<w:tcBorders>
<w:top w:val="single" w:sz="6" wx:bdrwidth="15" w:space="0" w:color="000000"/>
</w:tcBorders>
......@@ -721,7 +712,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="2115" w:type="dxa"/>
<w:tcW w:w="2340" w:type="dxa"/>
<w:tcBorders>
<w:top w:val="single" w:sz="6" wx:bdrwidth="15" w:space="0" w:color="000000"/>
</w:tcBorders>
......@@ -750,7 +741,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="1770" w:type="dxa"/>
<w:tcW w:w="1650" w:type="dxa"/>
<w:tcBorders>
<w:top w:val="single" w:sz="6" wx:bdrwidth="15" w:space="0" w:color="000000"/>
</w:tcBorders>
......@@ -786,7 +777,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="2240" w:type="dxa"/>
<w:tcW w:w="2640" w:type="dxa"/>
<w:tcBorders>
<w:top w:val="single" w:sz="6" wx:bdrwidth="15" w:space="0" w:color="000000"/>
<w:right w:val="single" w:sz="6" wx:bdrwidth="15" w:space="0" w:color="000000"/>
......@@ -838,7 +829,7 @@
</w:trPr>
<w:tc>
<w:tcPr>
<w:tcW w:w="900" w:type="dxa"/>
<w:tcW w:w="885" w:type="dxa"/>
<w:vmerge w:val="continue"/>
<w:tcBorders>
<w:top w:val="nil"/>
......@@ -866,7 +857,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="2205" w:type="dxa"/>
<w:tcW w:w="2340" w:type="dxa"/>
<w:shd w:val="clear" w:color="auto" w:fill="auto"/>
<w:vAlign w:val="top"/>
</w:tcPr>
......@@ -902,7 +893,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="2115" w:type="dxa"/>
<w:tcW w:w="2340" w:type="dxa"/>
<w:shd w:val="clear" w:color="auto" w:fill="auto"/>
<w:vAlign w:val="center"/>
</w:tcPr>
......@@ -927,7 +918,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="1770" w:type="dxa"/>
<w:tcW w:w="1650" w:type="dxa"/>
<w:shd w:val="clear" w:color="auto" w:fill="auto"/>
<w:vAlign w:val="top"/>
</w:tcPr>
......@@ -960,7 +951,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="2240" w:type="dxa"/>
<w:tcW w:w="2640" w:type="dxa"/>
<w:tcBorders>
<w:right w:val="single" w:sz="6" wx:bdrwidth="15" w:space="0" w:color="000000"/>
</w:tcBorders>
......@@ -1009,7 +1000,7 @@
</w:trPr>
<w:tc>
<w:tcPr>
<w:tcW w:w="900" w:type="dxa"/>
<w:tcW w:w="885" w:type="dxa"/>
<w:vmerge w:val="restart"/>
<w:tcBorders>
<w:left w:val="single" w:sz="6" wx:bdrwidth="15" w:space="0" w:color="000000"/>
......@@ -1084,7 +1075,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="2205" w:type="dxa"/>
<w:tcW w:w="2340" w:type="dxa"/>
<w:shd w:val="clear" w:color="auto" w:fill="auto"/>
<w:vAlign w:val="top"/>
</w:tcPr>
......@@ -1105,7 +1096,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="6125" w:type="dxa"/>
<w:tcW w:w="6630" w:type="dxa"/>
<w:gridSpan w:val="3"/>
<w:tcBorders>
<w:right w:val="single" w:sz="6" wx:bdrwidth="15" w:space="0" w:color="000000"/>
......@@ -1156,7 +1147,7 @@
</w:trPr>
<w:tc>
<w:tcPr>
<w:tcW w:w="900" w:type="dxa"/>
<w:tcW w:w="885" w:type="dxa"/>
<w:vmerge w:val="continue"/>
<w:tcBorders>
<w:top w:val="nil"/>
......@@ -1185,7 +1176,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="2205" w:type="dxa"/>
<w:tcW w:w="2340" w:type="dxa"/>
<w:shd w:val="clear" w:color="auto" w:fill="auto"/>
<w:vAlign w:val="top"/>
</w:tcPr>
......@@ -1207,7 +1198,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="6125" w:type="dxa"/>
<w:tcW w:w="6630" w:type="dxa"/>
<w:gridSpan w:val="3"/>
<w:tcBorders>
<w:right w:val="single" w:sz="6" wx:bdrwidth="15" w:space="0" w:color="000000"/>
......@@ -1259,7 +1250,7 @@
</w:trPr>
<w:tc>
<w:tcPr>
<w:tcW w:w="900" w:type="dxa"/>
<w:tcW w:w="885" w:type="dxa"/>
<w:vmerge w:val="continue"/>
<w:tcBorders>
<w:top w:val="nil"/>
......@@ -1288,7 +1279,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="2205" w:type="dxa"/>
<w:tcW w:w="2340" w:type="dxa"/>
<w:shd w:val="clear" w:color="auto" w:fill="auto"/>
<w:vAlign w:val="top"/>
</w:tcPr>
......@@ -1309,7 +1300,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="2115" w:type="dxa"/>
<w:tcW w:w="2340" w:type="dxa"/>
<w:shd w:val="clear" w:color="auto" w:fill="auto"/>
<w:vAlign w:val="center"/>
</w:tcPr>
......@@ -1336,7 +1327,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="1770" w:type="dxa"/>
<w:tcW w:w="1650" w:type="dxa"/>
<w:shd w:val="clear" w:color="auto" w:fill="auto"/>
<w:vAlign w:val="top"/>
</w:tcPr>
......@@ -1359,7 +1350,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="2240" w:type="dxa"/>
<w:tcW w:w="2640" w:type="dxa"/>
<w:tcBorders>
<w:right w:val="single" w:sz="6" wx:bdrwidth="15" w:space="0" w:color="000000"/>
</w:tcBorders>
......@@ -1408,7 +1399,7 @@
</w:trPr>
<w:tc>
<w:tcPr>
<w:tcW w:w="900" w:type="dxa"/>
<w:tcW w:w="885" w:type="dxa"/>
<w:vmerge w:val="continue"/>
<w:tcBorders>
<w:top w:val="nil"/>
......@@ -1437,7 +1428,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="2205" w:type="dxa"/>
<w:tcW w:w="2340" w:type="dxa"/>
<w:shd w:val="clear" w:color="auto" w:fill="auto"/>
<w:vAlign w:val="top"/>
</w:tcPr>
......@@ -1463,7 +1454,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="2115" w:type="dxa"/>
<w:tcW w:w="2340" w:type="dxa"/>
<w:shd w:val="clear" w:color="auto" w:fill="auto"/>
<w:vAlign w:val="center"/>
</w:tcPr>
......@@ -1488,7 +1479,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="1770" w:type="dxa"/>
<w:tcW w:w="1650" w:type="dxa"/>
<w:shd w:val="clear" w:color="auto" w:fill="auto"/>
<w:vAlign w:val="top"/>
</w:tcPr>
......@@ -1511,7 +1502,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="2240" w:type="dxa"/>
<w:tcW w:w="2640" w:type="dxa"/>
<w:tcBorders>
<w:right w:val="single" w:sz="6" wx:bdrwidth="15" w:space="0" w:color="000000"/>
</w:tcBorders>
......@@ -1560,7 +1551,7 @@
</w:trPr>
<w:tc>
<w:tcPr>
<w:tcW w:w="900" w:type="dxa"/>
<w:tcW w:w="885" w:type="dxa"/>
<w:vmerge w:val="continue"/>
<w:tcBorders>
<w:top w:val="nil"/>
......@@ -1588,7 +1579,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="2205" w:type="dxa"/>
<w:tcW w:w="2340" w:type="dxa"/>
<w:shd w:val="clear" w:color="auto" w:fill="auto"/>
<w:vAlign w:val="top"/>
</w:tcPr>
......@@ -1608,7 +1599,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="2115" w:type="dxa"/>
<w:tcW w:w="2340" w:type="dxa"/>
<w:shd w:val="clear" w:color="auto" w:fill="auto"/>
<w:vAlign w:val="center"/>
</w:tcPr>
......@@ -1633,7 +1624,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="1770" w:type="dxa"/>
<w:tcW w:w="1650" w:type="dxa"/>
<w:shd w:val="clear" w:color="auto" w:fill="auto"/>
<w:vAlign w:val="top"/>
</w:tcPr>
......@@ -1656,7 +1647,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="2240" w:type="dxa"/>
<w:tcW w:w="2640" w:type="dxa"/>
<w:tcBorders>
<w:right w:val="single" w:sz="6" wx:bdrwidth="15" w:space="0" w:color="000000"/>
</w:tcBorders>
......@@ -1702,11 +1693,11 @@
</w:tblCellMar>
</w:tblPrEx>
<w:trPr>
<w:trHeight w:val="3364" w:h-rule="atLeast"/>
<w:trHeight w:val="3149" w:h-rule="atLeast"/>
</w:trPr>
<w:tc>
<w:tcPr>
<w:tcW w:w="9230" w:type="dxa"/>
<w:tcW w:w="9855" w:type="dxa"/>
<w:gridSpan w:val="5"/>
<w:tcBorders>
<w:left w:val="single" w:sz="6" wx:bdrwidth="15" w:space="0" w:color="000000"/>
......@@ -1793,26 +1784,10 @@
</w:p>
<w:p>
<w:pPr>
<w:kinsoku w:val="off"/>
<w:autoSpaceDE w:val="off"/>
<w:autoSpaceDN w:val="off"/>
<w:adjustRightInd w:val="off"/>
<w:snapToGrid w:val="off"/>
<w:spacing w:line="273" w:line-rule="auto"/>
<w:jc w:val="left"/>
<w:textAlignment w:val="baseline"/>
<w:rPr>
<w:rFonts w:ascii="Arial" w:hint="default"/>
<w:sz w:val="21"/>
</w:rPr>
</w:pPr>
</w:p>
<w:p>
<w:pPr>
<w:pStyle w:val="a6"/>
<w:spacing w:before="78" w:line="214" w:line-rule="auto"/>
<w:ind w:first-line="234" w:first-line-chars="100"/>
<w:jc w:val="right"/>
<w:jc w:val="center"/>
</w:pPr>
<w:r>
<w:rPr>
......@@ -1838,7 +1813,21 @@
<w:rPr>
<w:spacing w:val="-3"/>
</w:rPr>
<w:t> 日期:</w:t>
<w:t></w:t>
</w:r>
<w:r>
<w:rPr>
<w:rFonts w:hint="fareast"/>
<w:spacing w:val="-3"/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
<w:t></w:t>
</w:r>
<w:r>
<w:rPr>
<w:spacing w:val="-3"/>
</w:rPr>
<w:t>日期:</w:t>
</w:r>
<w:r>
<w:rPr>
......@@ -1872,8 +1861,8 @@
<w:pPr>
<w:pStyle w:val="a6"/>
<w:spacing w:before="73" w:line="214" w:line-rule="auto"/>
<w:ind w:first-line="236" w:first-line-chars="100"/>
<w:jc w:val="right"/>
<w:ind w:first-line="708" w:first-line-chars="300"/>
<w:jc w:val="both"/>
</w:pPr>
<w:r>
<w:rPr>
......@@ -1893,7 +1882,21 @@
<w:rPr>
<w:spacing w:val="-2"/>
</w:rPr>
<w:t> 日期:</w:t>
<w:t></w:t>
</w:r>
<w:r>
<w:rPr>
<w:rFonts w:hint="fareast"/>
<w:spacing w:val="-2"/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
<w:t></w:t>
</w:r>
<w:r>
<w:rPr>
<w:spacing w:val="-2"/>
</w:rPr>
<w:t>日期:</w:t>
</w:r>
<w:r>
<w:rPr>
......@@ -1924,11 +1927,11 @@
</w:tblCellMar>
</w:tblPrEx>
<w:trPr>
<w:trHeight w:val="2351" w:h-rule="atLeast"/>
<w:trHeight w:val="2291" w:h-rule="atLeast"/>
</w:trPr>
<w:tc>
<w:tcPr>
<w:tcW w:w="9230" w:type="dxa"/>
<w:tcW w:w="9855" w:type="dxa"/>
<w:gridSpan w:val="5"/>
<w:tcBorders>
<w:left w:val="single" w:sz="6" wx:bdrwidth="15" w:space="0" w:color="000000"/>
......@@ -1988,19 +1991,75 @@
<w:pStyle w:val="a6"/>
<w:spacing w:before="78" w:line="208" w:line-rule="auto"/>
<w:ind w:left="1122"/>
<w:jc w:val="center"/>
<w:jc w:val="both"/>
</w:pPr>
<w:r>
<w:rPr>
<w:spacing w:val="-3"/>
</w:rPr>
<w:t>登记机关登记人员: 日期:</w:t>
<w:t>登记机关登记人员:</w:t>
</w:r>
<w:r>
<w:rPr>
<w:rFonts w:hint="fareast"/>
<w:spacing w:val="-3"/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
<w:t></w:t>
</w:r>
<w:r>
<w:rPr>
<w:spacing w:val="-3"/>
</w:rPr>
<w:t>日期:</w:t>
</w:r>
<w:r>
<w:rPr>
<w:spacing w:val="-2"/>
</w:rPr>
<w:t></w:t>
</w:r>
<w:r>
<w:rPr>
<w:rFonts w:hint="fareast"/>
<w:spacing w:val="-2"/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
<w:t></w:t>
</w:r>
<w:r>
<w:rPr>
<w:spacing w:val="-2"/>
</w:rPr>
<w:t></w:t>
</w:r>
<w:r>
<w:rPr>
<w:rFonts w:hint="fareast"/>
<w:spacing w:val="-2"/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
<w:t></w:t>
</w:r>
<w:r>
<w:rPr>
<w:spacing w:val="-2"/>
</w:rPr>
<w:t></w:t>
</w:r>
<w:r>
<w:rPr>
<w:rFonts w:hint="fareast"/>
<w:spacing w:val="-2"/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
<w:t></w:t>
</w:r>
<w:r>
<w:rPr>
<w:spacing w:val="-2"/>
</w:rPr>
<w:t> 年 月 </w:t>
<w:t></w:t>
</w:r>
</w:p>
<w:p>
......@@ -2027,7 +2086,7 @@
<w:pPr>
<w:pStyle w:val="a6"/>
<w:spacing w:before="71" w:line="214" w:line-rule="auto"/>
<w:ind w:first-line="944" w:first-line-chars="400"/>
<w:ind w:first-line="1180" w:first-line-chars="500"/>
<w:jc w:val="left"/>
</w:pPr>
<w:r>
......
......@@ -648,6 +648,7 @@ public class DPSubServiceImpl {
if (!ValidationUtil.isEmpty(value) && !"null".equals(value)) {
JSONObject attachmentUploadDatasObj = new JSONObject();
log.info("附件数据:{}", value);
if(value instanceof JSONArray){
((JSONArray)value).stream().forEach(y -> {
JSONObject yObj = (JSONObject) y;
if(!ValidationUtil.isEmpty(yObj.getString("url"))) {
......@@ -660,6 +661,7 @@ public class DPSubServiceImpl {
}
}
});
}
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