Commit e0bbb0a3 authored by tianbo's avatar tianbo

Merge remote-tracking branch 'origin/develop_tzs_test' into develop_tzs_register

parents 3e4662ae befd8474
...@@ -28,7 +28,7 @@ public class XiAnDataDockController { ...@@ -28,7 +28,7 @@ public class XiAnDataDockController {
/** /**
* 西安除电梯外七大类设备批量导入 * 西安除电梯外七大类设备批量导入
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@PostMapping(value = "/importData") @PostMapping(value = "/importData")
@ApiOperation(httpMethod = "POST", value = "西安除电梯外七大类设备批量导入", notes = "西安除电梯外七大类设备批量导入") @ApiOperation(httpMethod = "POST", value = "西安除电梯外七大类设备批量导入", notes = "西安除电梯外七大类设备批量导入")
public Object importPressureData(@RequestParam MultipartFile file) { public Object importPressureData(@RequestParam MultipartFile file) {
...@@ -53,7 +53,7 @@ public class XiAnDataDockController { ...@@ -53,7 +53,7 @@ public class XiAnDataDockController {
/** /**
* 西安电梯历史设备以及业务数据批量导入 * 西安电梯历史设备以及业务数据批量导入
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@PostMapping(value = "/importElevatorData") @PostMapping(value = "/importElevatorData")
@ApiOperation(httpMethod = "POST", value = "西安电梯历史设备以及业务数据批量导入", notes = "西安电梯历史设备以及业务数据批量导入") @ApiOperation(httpMethod = "POST", value = "西安电梯历史设备以及业务数据批量导入", notes = "西安电梯历史设备以及业务数据批量导入")
public Object importElevatorData(@RequestParam MultipartFile file, @RequestParam(required = false, defaultValue = "true") Boolean isRegistration) { public Object importElevatorData(@RequestParam MultipartFile file, @RequestParam(required = false, defaultValue = "true") Boolean isRegistration) {
......
package com.yeejoin.amos.api.openapi.face.orm.dao; package com.yeejoin.amos.api.openapi.face.orm.dao;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.OpenapiBizToken; import com.yeejoin.amos.api.openapi.face.orm.entity.OpenapiBizToken;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -32,6 +33,7 @@ public interface OpenapiBizTokenMapper extends BaseMapper<OpenapiBizToken> { ...@@ -32,6 +33,7 @@ public interface OpenapiBizTokenMapper extends BaseMapper<OpenapiBizToken> {
@Select("select DEVELOPER_AGENCY from iot_openapi_biz_token where DEVELOPER_AGENCY is not null AND DATA_TYPE = 'cyl' group by DEVELOPER_AGENCY") @Select("select DEVELOPER_AGENCY from iot_openapi_biz_token where DEVELOPER_AGENCY is not null AND DATA_TYPE = 'cyl' group by DEVELOPER_AGENCY")
public List<String> getServiceList(); public List<String> getServiceList();
@Select("select use_unit_code, use_unit from amos_tzs_biz.tz_base_enterprise_info where app_id = '${appId}'") @Select("select use_unit_code, use_unit from amos_tzs_biz.tz_base_enterprise_info where app_id = #{appId}")
@DS("tzs")
Map<String, String> queryUnitInfoByAppId(@Param("appId") String appId); Map<String, String> queryUnitInfoByAppId(@Param("appId") String appId);
} }
\ No newline at end of file
...@@ -66,6 +66,8 @@ public class OpenapiBizTokenService extends BaseService<OpenapiBizTokenModel, Op ...@@ -66,6 +66,8 @@ public class OpenapiBizTokenService extends BaseService<OpenapiBizTokenModel, Op
idPasswordAuthModel.setPassword(DesUtil.encode(systemUserInfo.getPassword(), Constant.PASSWORD_ENCODE_KEY)); idPasswordAuthModel.setPassword(DesUtil.encode(systemUserInfo.getPassword(), Constant.PASSWORD_ENCODE_KEY));
BizTokenModel bizTokenModel = new BizTokenModel(); BizTokenModel bizTokenModel = new BizTokenModel();
bizTokenModel.setAppId(appId); bizTokenModel.setAppId(appId);
bizTokenModel.setProduct(appId);
RequestContext.setProduct(appId); RequestContext.setProduct(appId);
RequestContext.setAppKey(bizTokenModel.getAppKey()); RequestContext.setAppKey(bizTokenModel.getAppKey());
FeignClientResult<HashMap<String, Object>> responseModel = Privilege.authClient.idpassword(idPasswordAuthModel); FeignClientResult<HashMap<String, Object>> responseModel = Privilege.authClient.idpassword(idPasswordAuthModel);
...@@ -73,9 +75,6 @@ public class OpenapiBizTokenService extends BaseService<OpenapiBizTokenModel, Op ...@@ -73,9 +75,6 @@ public class OpenapiBizTokenService extends BaseService<OpenapiBizTokenModel, Op
String token = (String) authModel.get("token"); String token = (String) authModel.get("token");
bizTokenModel.setToken(token); bizTokenModel.setToken(token);
RequestContext.setToken(token); RequestContext.setToken(token);
// AgencyUserModel user = Privilege.agencyUserClient.getme().getResult();
// bizTokenModel.setApiCompanyCode(user.getCompanys().get(0).getCompanyCode()); // 当前一个人只能有一个单位
// bizTokenModel.setApiCompanyName(user.getCompanys().get(0).getCompanyName()); // 当前一个人只能有一个单位
// 调整为从业务表根据appId查询单位信息 // 调整为从业务表根据appId查询单位信息
bizTokenModel.setApiCompanyCode(unitCode); bizTokenModel.setApiCompanyCode(unitCode);
bizTokenModel.setApiCompanyName(unitName); bizTokenModel.setApiCompanyName(unitName);
......
...@@ -783,7 +783,7 @@ public class XiAnDataDockServiceImpl { ...@@ -783,7 +783,7 @@ public class XiAnDataDockServiceImpl {
Map<String, Object> rMap = new HashMap<>(); Map<String, Object> rMap = new HashMap<>();
// 主线程中获取登录信息传递到异步线程中 // 主线程中获取登录信息传递到异步线程中
RequestContextWrapper contextWrapper = RequestContextWrapper.capture(); RequestContextWrapper contextWrapper = RequestContextWrapper.capture();
Set<String> importResult = ConcurrentHashMap.newKeySet(); // 使用线程安全的Set Set<String> errorResult = ConcurrentHashMap.newKeySet(); // 使用线程安全的Set
// 分批处理,但限制同时运行的批次数 // 分批处理,但限制同时运行的批次数
int maxConcurrentBatches = 5; // 最大并发批次数 int maxConcurrentBatches = 5; // 最大并发批次数
Semaphore semaphore = new Semaphore(maxConcurrentBatches); Semaphore semaphore = new Semaphore(maxConcurrentBatches);
...@@ -812,7 +812,7 @@ public class XiAnDataDockServiceImpl { ...@@ -812,7 +812,7 @@ public class XiAnDataDockServiceImpl {
Collection<?> data = (Collection<?>) resultMap.get("result"); Collection<?> data = (Collection<?>) resultMap.get("result");
data.stream() data.stream()
.filter(item -> item instanceof String) .filter(item -> item instanceof String)
.forEach(item -> importResult.add((String) item)); .forEach(item -> errorResult.add((String) item));
} }
if (resultMap.containsKey("status") && Integer.parseInt(resultMap.get("status").toString()) != 200) { if (resultMap.containsKey("status") && Integer.parseInt(resultMap.get("status").toString()) != 200) {
throw new RuntimeException(resultMap.get("message").toString()); throw new RuntimeException(resultMap.get("message").toString());
...@@ -828,9 +828,9 @@ public class XiAnDataDockServiceImpl { ...@@ -828,9 +828,9 @@ public class XiAnDataDockServiceImpl {
} }
// 等待所有异步任务完成 // 等待所有异步任务完成
CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join(); CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
if (!ValidationUtil.isEmpty(importResult)) { if (!ValidationUtil.isEmpty(errorResult)) {
rMap.put("message", importResult); rMap.put("message", errorResult);
log.info("更新失败:{}", importResult); log.info("更新失败:{}", errorResult);
return rMap; return rMap;
} }
log.info("设备保存成功"); log.info("设备保存成功");
......
...@@ -19,7 +19,7 @@ import java.util.List; ...@@ -19,7 +19,7 @@ import java.util.List;
* @date 2022-03-04 * @date 2022-03-04
*/ */
@Service @Service
@DS("cyl") @DS("openapi")
public class CylinderSyncServiceImpl { public class CylinderSyncServiceImpl {
@Autowired @Autowired
private CylCylinderFillingCheckMapper fillingCheckMapper; private CylCylinderFillingCheckMapper fillingCheckMapper;
......
...@@ -73,6 +73,8 @@ public class DictParamsConverter implements Converter<String> { ...@@ -73,6 +73,8 @@ public class DictParamsConverter implements Converter<String> {
dictMap.put("GD2", "6007"); dictMap.put("GD2", "6007");
dictMap.put("GB1", "8890"); dictMap.put("GB1", "8890");
dictMap.put("GB2", "8891"); dictMap.put("GB2", "8891");
dictMap.put("GA1", "8888");
dictMap.put("GA2", "8889");
dictMap.put("压缩天然气", "COMPRESSED_NATURAL_GAS"); dictMap.put("压缩天然气", "COMPRESSED_NATURAL_GAS");
dictMap.put("液化天然气", "LIQUEFIED_NATURAL_GAS"); dictMap.put("液化天然气", "LIQUEFIED_NATURAL_GAS");
dictMap.put("液化石油气", "LIQUEFIED_PETROLEUM_GAS"); dictMap.put("液化石油气", "LIQUEFIED_PETROLEUM_GAS");
......
...@@ -26,7 +26,7 @@ public class JgChangeRegistrationUnit extends BaseEntity { ...@@ -26,7 +26,7 @@ public class JgChangeRegistrationUnit extends BaseEntity {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 变更类型(0转出,1转入 * 变更类型(0-区内,1-区外
*/ */
@TableField("change_type") @TableField("change_type")
private String changeType; private String changeType;
......
...@@ -375,6 +375,10 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> { ...@@ -375,6 +375,10 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
Map<String, String> queryTcmUnitInfoBySeq(@Param("unitSeq") String unitSeq, @Param("unitType") String unitType); Map<String, String> queryTcmUnitInfoBySeq(@Param("unitSeq") String unitSeq, @Param("unitType") String unitType);
String queryTcmUnitSeqByCreditCode(@Param("unitCreditCode") String unitCreditCode, @Param("unitType") String unitType); String queryTcmUnitSeqByCreditCode(@Param("unitCreditCode") String unitCreditCode, @Param("unitType") String unitType);
// 产权单位调整为可输入或选择--结束 // 产权单位调整为可输入或选择--结束
List<Map<String, Object>> queryInMaintenanceRecord();
List<Map<String, Object>> queryInInspectionRecord();
} }
...@@ -1177,7 +1177,7 @@ ...@@ -1177,7 +1177,7 @@
SELECT "RECORD","NEXT_INSPECT_DATE",rowNum1 SELECT "RECORD","NEXT_INSPECT_DATE",rowNum1
FROM FROM
( (
SELECT ROW_NUMBER () OVER ( PARTITION BY "RECORD" ORDER BY "INSPECT_DATE" DESC) AS rowNum1,"RECORD", "NEXT_INSPECT_DATE" SELECT ROW_NUMBER () OVER ( PARTITION BY "RECORD" ORDER BY "INSPECT_DATE" DESC, REC_DATE DESC) AS rowNum1,"RECORD", "NEXT_INSPECT_DATE"
FROM FROM
idx_biz_jg_inspection_detection_info where "NEXT_INSPECT_DATE" is not null idx_biz_jg_inspection_detection_info where "NEXT_INSPECT_DATE" is not null
) d ) d
...@@ -3501,4 +3501,49 @@ ...@@ -3501,4 +3501,49 @@
and unit_type = #{unitType} and unit_type = #{unitType}
</if> </if>
</select> </select>
<select id="queryInMaintenanceRecord" resultType="java.util.Map">
SELECT
ui."RECORD"
FROM
idx_biz_jg_use_info ui
LEFT JOIN idx_biz_jg_other_info oi ON oi."RECORD" = ui."RECORD"
LEFT JOIN idx_biz_jg_supervision_info si on si."RECORD" = ui."RECORD"
LEFT JOIN (
SELECT
"RECORD", "INFORM_END", rowNum1
FROM
(
SELECT ROW_NUMBER() OVER (PARTITION BY "RECORD" ORDER BY "REC_DATE" DESC) AS rowNum1, "RECORD", "INFORM_END"
FROM
idx_biz_jg_maintenance_record_info where "INFORM_END" is not null
) d
WHERE d.rowNum1 = 1 and d."INFORM_END" >= CURRENT_DATE
) tt on tt."RECORD" = ui."RECORD"
WHERE si."ORG_BRANCH_CODE" like '50%'
and oi."CLAIM_STATUS" not in ('草稿','已拒领','待认领')
and tt."INFORM_END" is not null
</select>
<select id="queryInInspectionRecord" resultType="java.util.Map">
SELECT
ui."RECORD"
FROM
idx_biz_jg_use_info ui
LEFT JOIN idx_biz_jg_other_info oi ON oi."RECORD" = ui."RECORD"
LEFT JOIN idx_biz_jg_supervision_info si on si."RECORD" = ui."RECORD"
LEFT JOIN (
SELECT "RECORD", "NEXT_INSPECT_DATE", rowNum1
FROM
(
SELECT ROW_NUMBER () OVER ( PARTITION BY "RECORD" ORDER BY "INSPECT_DATE" DESC, "REC_DATE" DESC) AS rowNum1, "RECORD", "NEXT_INSPECT_DATE"
FROM
idx_biz_jg_inspection_detection_info where "NEXT_INSPECT_DATE" is not null
) d
WHERE d.rowNum1 =1 and d."NEXT_INSPECT_DATE" >= CURRENT_DATE
) tt on tt."RECORD" = ui."RECORD"
WHERE si."ORG_BRANCH_CODE" like '50%'
AND oi."CLAIM_STATUS" not in ('草稿','已拒领','待认领')
AND tt."NEXT_INSPECT_DATE" is not null
</select>
</mapper> </mapper>
...@@ -1322,7 +1322,7 @@ ...@@ -1322,7 +1322,7 @@
</if> </if>
</otherwise> </otherwise>
</choose> </choose>
ORDER BY ui.REC_DATE DESC ORDER BY factoryNum ASC,ui.REC_DATE DESC
) aa ) aa
<where> <where>
<if test="jsonObject.equDefineName != null and jsonObject.equDefineName != ''"> <if test="jsonObject.equDefineName != null and jsonObject.equDefineName != ''">
...@@ -1443,7 +1443,7 @@ ...@@ -1443,7 +1443,7 @@
<foreach collection="records" item="record" open="(" close=")" separator=","> <foreach collection="records" item="record" open="(" close=")" separator=",">
#{record} #{record}
</foreach> </foreach>
ORDER BY ui.REC_DATE DESC ORDER BY factoryNum ASC,ui.REC_DATE DESC
</select> </select>
<select id="queryForFlowingEquipList" <select id="queryForFlowingEquipList"
resultType="com.yeejoin.amos.boot.module.jg.api.dto.CompanyEquipCountDto"> resultType="com.yeejoin.amos.boot.module.jg.api.dto.CompanyEquipCountDto">
......
...@@ -232,4 +232,17 @@ public class JgChangeRegistrationUnitController extends BaseController { ...@@ -232,4 +232,17 @@ public class JgChangeRegistrationUnitController extends BaseController {
return ResponseHelper.buildResponse(businessType.equals("1") ? "单位变更" : "注销" + "业务," + "申请单号:" + applyNos + "数据修改成功"); return ResponseHelper.buildResponse(businessType.equals("1") ? "单位变更" : "注销" + "业务," + "申请单号:" + applyNos + "数据修改成功");
} }
/**
* 处理单位变更流程结束,业务未结束单子问题
* @param applyNo 申请单号
* @return s
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/handleChangeRegistrationUnitWrongData")
@ApiOperation(httpMethod = "POST", value = "处理单位变更流程结束,业务未结束单子问题", notes = "处理单位变更流程结束,业务未结束单子问题")
public ResponseModel<Object> handleChangeRegistrationUnitWrongData(@RequestParam("applyNo") String applyNo) {
jgChangeRegistrationUnitServiceImpl.handleChangeRegistrationUnitWrongData(applyNo);
return ResponseHelper.buildResponse("ok");
}
} }
...@@ -2501,10 +2501,12 @@ public class CommonServiceImpl implements ICommonService { ...@@ -2501,10 +2501,12 @@ public class CommonServiceImpl implements ICommonService {
wrapper.eq(TzBaseEnterpriseInfo::getUseUnitCode, formData.getString("estateUnitName").split("_")[0]); wrapper.eq(TzBaseEnterpriseInfo::getUseUnitCode, formData.getString("estateUnitName").split("_")[0]);
//产权单位联系电话 //产权单位联系电话
TzBaseEnterpriseInfo tzBaseEnterpriseInfo = enterpriseInfoMapper.selectOne(wrapper); TzBaseEnterpriseInfo tzBaseEnterpriseInfo = enterpriseInfoMapper.selectOne(wrapper);
if (!ValidationUtil.isEmpty(tzBaseEnterpriseInfo)) {
String contactPhone = tzBaseEnterpriseInfo.getContactPhone(); String contactPhone = tzBaseEnterpriseInfo.getContactPhone();
if (StringUtils.isNotEmpty(contactPhone)) { if (StringUtils.isNotEmpty(contactPhone)) {
formData.put("estatePhone", contactPhone); formData.put("estatePhone", contactPhone);
} }
}
formData.put("CQUnitCode", formData.getString("estateUnitName").split("_")[0]); formData.put("CQUnitCode", formData.getString("estateUnitName").split("_")[0]);
formData.put("estateUnitName", formData.getString("estateUnitName").split("_")[1]); formData.put("estateUnitName", formData.getString("estateUnitName").split("_")[1]);
} }
......
...@@ -37,6 +37,7 @@ import com.yeejoin.amos.boot.module.jg.api.dto.*; ...@@ -37,6 +37,7 @@ import com.yeejoin.amos.boot.module.jg.api.dto.*;
import com.yeejoin.amos.boot.module.jg.api.entity.*; import com.yeejoin.amos.boot.module.jg.api.entity.*;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum; import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.CertificateStatusEnum; import com.yeejoin.amos.boot.module.jg.api.enums.CertificateStatusEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.SafetyProblemStatusEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.CommonMapper; import com.yeejoin.amos.boot.module.jg.api.mapper.CommonMapper;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationEqMapper; import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationEqMapper;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationManageMapper; import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationManageMapper;
...@@ -175,6 +176,8 @@ public class DataDockServiceImpl { ...@@ -175,6 +176,8 @@ public class DataDockServiceImpl {
private final PieLineDataChangeServiceImpl pieLineDataChangeService; private final PieLineDataChangeServiceImpl pieLineDataChangeService;
private final ElevatorDataTransactionService elevatorDataTransactionService;
@Value("${equip.detail.path:/mixuap?appId=1742358052905971713&id=1734100233714954241&formType=detail&record=%s&DATA_SOURCE=%s}") @Value("${equip.detail.path:/mixuap?appId=1742358052905971713&id=1734100233714954241&formType=detail&record=%s&DATA_SOURCE=%s}")
private String equipRoutePath; private String equipRoutePath;
...@@ -242,7 +245,7 @@ public class DataDockServiceImpl { ...@@ -242,7 +245,7 @@ public class DataDockServiceImpl {
} catch (Exception e) { } catch (Exception e) {
esEquipmentCategory.deleteById(record); esEquipmentCategory.deleteById(record);
e.printStackTrace(); e.printStackTrace();
log.error("{}数据:保存时出现异常,对应数据:{}", dataSource, JSONObject.toJSONString(equ)); log.error("{}数据:保存时出现异常,对应数据:{}", dataSource, toJSONString(equ));
log.error("异常信息:{}", e.getMessage()); log.error("异常信息:{}", e.getMessage());
throw new RuntimeException(e); throw new RuntimeException(e);
} }
...@@ -824,6 +827,7 @@ public class DataDockServiceImpl { ...@@ -824,6 +827,7 @@ public class DataDockServiceImpl {
equipmentCategoryDto.setSTATUS("已认领"); equipmentCategoryDto.setSTATUS("已认领");
equipmentCategoryDto.setIS_DO_BUSINESS(Boolean.TRUE); equipmentCategoryDto.setIS_DO_BUSINESS(Boolean.TRUE);
equipmentCategoryDto.setIS_COMPLETE_XA(Objects.equals("0", isCompleteXa)); equipmentCategoryDto.setIS_COMPLETE_XA(Objects.equals("0", isCompleteXa));
equipmentCategoryDto.setProblemStatus(SafetyProblemStatusEnum.HANDLED.getCode());
esEquipmentCategory.save(equipmentCategoryDto); esEquipmentCategory.save(equipmentCategoryDto);
} }
} }
...@@ -1025,6 +1029,8 @@ public class DataDockServiceImpl { ...@@ -1025,6 +1029,8 @@ public class DataDockServiceImpl {
* @param rowError 错误集合 * @param rowError 错误集合
*/ */
private void commonFieldCheck(EquipInfoExcelDto data, StringBuffer rowError, String remark) { private void commonFieldCheck(EquipInfoExcelDto data, StringBuffer rowError, String remark) {
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
CompanyBo company = reginParams.getCompany();
boolean isYLRQ = !ObjectUtils.isEmpty(data.getEquList()) && EquipmentClassifityEnum.YLRQ.getCode().equals(data.getEquList());// 是否压力容器 boolean isYLRQ = !ObjectUtils.isEmpty(data.getEquList()) && EquipmentClassifityEnum.YLRQ.getCode().equals(data.getEquList());// 是否压力容器
boolean isYLGD = !ObjectUtils.isEmpty(data.getEquList()) && EquipmentClassifityEnum.YLGD.getCode().equals(data.getEquList());// 是否压力管道 boolean isYLGD = !ObjectUtils.isEmpty(data.getEquList()) && EquipmentClassifityEnum.YLGD.getCode().equals(data.getEquList());// 是否压力管道
boolean isDT = !ObjectUtils.isEmpty(data.getEquList()) && EquipmentClassifityEnum.DT.getCode().equals(data.getEquList());// 是否电梯 boolean isDT = !ObjectUtils.isEmpty(data.getEquList()) && EquipmentClassifityEnum.DT.getCode().equals(data.getEquList());// 是否电梯
...@@ -1086,27 +1092,35 @@ public class DataDockServiceImpl { ...@@ -1086,27 +1092,35 @@ public class DataDockServiceImpl {
} }
// 同一工程装置下管道编号不能重复 // 同一工程装置下管道编号不能重复
if (!ValidationUtil.isEmpty(data.getProjectContraption())) { if (!ValidationUtil.isEmpty(data.getProjectContraption())) {
String useUnitCode = null, useUnit = null,uscUnitCode = null,uscUnitName = null;
if (company != null) {
if ("使用单位".equals(company.getCompanyType())) {
useUnitCode = company.getCompanyCode();
useUnit = company.getCompanyName();
} else if ("安装改造维修单位".equals(company.getCompanyType())) {
uscUnitCode = company.getCompanyCode();
uscUnitName = company.getCompanyName();
}
}
// 默认使用导入的数据
if (useUnitCode == null && uscUnitCode == null) {
useUnitCode = String.valueOf(data.getUseUnitCode()).trim();
}
String useUnitCode = String.valueOf(data.getUseUnitCode()).trim();// 使用单位Code String proConNo = data.getProjectContraptionNo().trim();
String useUnit = String.valueOf(data.getUseUnit()).trim();// 使用单位名称
String proConName = data.getProjectContraption().trim();// 工程装置名称
// 查询该企业下工程装置名称 // 查询该企业下工程装置名称
IdxBizJgProjectContraption oldContraption = idxBizJgProjectContraptionService.lambdaQuery() IdxBizJgProjectContraption oldContraption =
.eq(IdxBizJgProjectContraption::getUseUnitCreditCode, useUnitCode) idxBizJgProjectContraptionService.lambdaQuery()
.eq(IdxBizJgProjectContraption::getUseUnitName, useUnit) .eq(StringUtils.isNotBlank(useUnitCode), IdxBizJgProjectContraption::getUseUnitCreditCode, useUnitCode)
.eq(IdxBizJgProjectContraption::getProjectContraption, proConName) .eq(StringUtils.isNotBlank(uscUnitCode), IdxBizJgProjectContraption::getUscUnitCreditCode, uscUnitCode)
.eq(IdxBizJgProjectContraption::getProjectContraptionNo, proConNo)
.list().stream().findFirst().orElse(null); .list().stream().findFirst().orElse(null);
Optional.ofNullable(oldContraption).ifPresent(old -> { if (!ObjectUtils.isEmpty(oldContraption)) {
List<String> pipelineNumberList = idxBizJgProjectContraptionServiceImpl.getBaseMapper() String unit = uscUnitName != null ? uscUnitName : useUnit;
.selectEquipList(String.valueOf(old.getSequenceNbr())) rowError.append(String.format("该单位(%s)下已存在已纳管工程装置编号为(%s),不能导入该装置;",unit, proConNo));
.stream() }
.map(item -> (String) item.get("pipelineNumber"))
.collect(Collectors.toList());
// if (pipelineNumberList.contains(data.getPipelineNumber())) {
// rowError.append(String.format("系统中工程装置(%s)下已经存在管道编号(%s);", data.getProjectContraption(), data.getPipelineNumber()));
// }
});
List<String> list = projectContraptionMap.get(data.getProjectContraption()); List<String> list = projectContraptionMap.get(data.getProjectContraption());
if (null != list) { if (null != list) {
...@@ -2642,39 +2656,114 @@ public class DataDockServiceImpl { ...@@ -2642,39 +2656,114 @@ public class DataDockServiceImpl {
public Set<String> saveElevatorData(List<Map<String, Object>> equLists) { public Set<String> saveElevatorData(List<Map<String, Object>> equLists) {
RequestContextWrapper contextWrapper = RequestContextWrapper.capture(); RequestContextWrapper contextWrapper = RequestContextWrapper.capture();
Set<String> recordSet = Sets.newConcurrentHashSet(); Set<String> recordSet = Sets.newConcurrentHashSet();
Set<String> inUseRecordSet = Sets.newConcurrentHashSet(); Set<String> resultSet = Sets.newConcurrentHashSet();
try {
CompletableFuture.allOf( // 分批处理大小
equLists.parallelStream().map(equ -> CompletableFuture.runAsync(() -> { int batchSize = 100;
int totalSize = equLists.size();
int successCount = 0;
int failedCount = 0;
// 分批处理数据
for (int i = 0; i < totalSize; i += batchSize) {
int endIndex = Math.min(i + batchSize, totalSize);
List<Map<String, Object>> batch = equLists.subList(i, endIndex);
// 批内并行处理(但每个数据项独立事务)
List<CompletableFuture<Map<String, Object>>> futures = batch.stream()
.map(equ -> CompletableFuture.supplyAsync(() -> {
contextWrapper.apply(); contextWrapper.apply();
try { try {
Object resultObj = saveElevatorDataInTransaction(equ, "jg_his_xa", null); Object resultObj = elevatorDataTransactionService.saveSingleElevatorData(equ);
Map<String, Object> result = new HashMap<>();
result.put("success", true);
result.put("data", resultObj);
result.put("equ", equ);
return result;
} catch (Exception e) {
Map<String, Object> result = new HashMap<>();
result.put("success", false);
result.put("exception", e);
result.put("equ", equ);
return result;
}
}, executorService))
.collect(Collectors.toList());
// 等待批内所有任务完成
CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
// 处理批内结果
for (CompletableFuture<Map<String, Object>> future : futures) {
try {
Map<String, Object> result = future.get();
if ((Boolean) result.get("success")) {
Object resultObj = result.get("data");
if (resultObj instanceof String) { if (resultObj instanceof String) {
recordSet.add(resultObj.toString()); recordSet.add(resultObj.toString());
successCount++;
} }
if (resultObj instanceof Map) { if (resultObj instanceof Map) {
Map<String, Object> result = (Map<String, Object>) resultObj; resultSet.add(JSONObject.toJSONString(resultObj));
inUseRecordSet.add(JSONObject.toJSONString(result)); failedCount++;
} }
} catch (LocalBadRequest e) { } else {
inUseRecordSet.add(e.getMessage()); Exception e = (Exception) result.get("exception");
Map<String, Object> equ = (Map<String, Object>) result.get("equ");
handleProcessException(e, equ, resultSet);
failedCount++;
} }
}, executorService)).toArray(CompletableFuture[]::new)
).join();
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e); log.error("获取处理结果时发生异常", e);
failedCount++;
}
}
log.info("已处理数据 {}/{} - 成功: {}, 失败: {}",
Math.min(i + batchSize, totalSize), totalSize, successCount, failedCount);
} }
// 发布成功记录的事件
if (!recordSet.isEmpty()) {
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() { TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override @Override
public void afterCommit() { public void afterCommit() {
eventPublisher.publish(new EquipCreateOrEditEvent(this, BusinessTypeEnum.JG_NEW_EQUIP.name(), recordSet, EquipCreateOrEditEvent.EquipType.equip)); eventPublisher.publish(new EquipCreateOrEditEvent(this, BusinessTypeEnum.JG_NEW_EQUIP.name(), recordSet, EquipCreateOrEditEvent.EquipType.equip));
} }
}); });
log.info("未更新设备record:{}", inUseRecordSet); }
return inUseRecordSet; log.info("数据导入完成 - 总计: {}条, 成功: {}条, 失败: {}条",
totalSize, successCount, failedCount);
log.info("未更新设备record:{}", resultSet);
return resultSet;
}
private void handleProcessException(Exception e, Map<String, Object> equ, Set<String> inUseRecordSet) {
try {
String traceInfo = Arrays.stream(e.getStackTrace())
.filter(x -> x.getClassName().contains("com.yeejoin"))
.map(x -> x.getClassName() + "." + x.getMethodName() + ":" + x.getLineNumber())
.collect(Collectors.toList())
.toString();
String record = Optional.ofNullable(equ.get("record"))
.map(String::valueOf)
.orElse(UUID.randomUUID().toString());
// esEquipmentCategory.deleteById(record);
ExcelImportErrorLogDto errorLogDto = JSON.parseObject(toJSONString(equ), ExcelImportErrorLogDto.class);
errorLogDto.setErrorInfo(e.getMessage());
errorLogDto.setTraceInfo(traceInfo);
errorLogDto.setCreateTime(new Date());
excelImportErrorLogDao.save(errorLogDto);
inUseRecordSet.add(JSONObject.toJSONString(errorLogDto));
log.error("处理数据时发生异常,record: {}", record, e);
} catch (Exception handleException) {
log.error("处理异常信息时发生错误", handleException);
}
} }
@GlobalTransactional(rollbackFor = Exception.class)
public Object saveElevatorDataInTransaction(Map<String, Object> equ, String dataSource, String remark) { public Object saveElevatorDataInTransaction(Map<String, Object> equ, String dataSource, String remark) {
Map<String, String> errorResult = Maps.newConcurrentMap(); Map<String, String> errorResult = Maps.newConcurrentMap();
String record = Optional.ofNullable(equ.get("record")).map(String::valueOf).orElse(UUID.randomUUID().toString()); String record = Optional.ofNullable(equ.get("record")).map(String::valueOf).orElse(UUID.randomUUID().toString());
...@@ -2685,7 +2774,6 @@ public class DataDockServiceImpl { ...@@ -2685,7 +2774,6 @@ public class DataDockServiceImpl {
String useRegistrationCode = Optional.ofNullable(equ.get("useOrgCode")).map(String::valueOf).orElse("").trim(); String useRegistrationCode = Optional.ofNullable(equ.get("useOrgCode")).map(String::valueOf).orElse("").trim();
dataSource = !ValidationUtil.isEmpty(equ.get("dataSource")) ? MapUtil.getStr(equ, "dataSource") : dataSource; dataSource = !ValidationUtil.isEmpty(equ.get("dataSource")) ? MapUtil.getStr(equ, "dataSource") : dataSource;
try {
if (!equList.isEmpty()) { if (!equList.isEmpty()) {
// 判断设备是否已经做过除历史登记外的其他业务,如果做了其他业务则不能更新并记录反馈 // 判断设备是否已经做过除历史登记外的其他业务,如果做了其他业务则不能更新并记录反馈
Integer useCount = commonMapper.countEquipInUseTimesForXaElevator(record); Integer useCount = commonMapper.countEquipInUseTimesForXaElevator(record);
...@@ -2741,27 +2829,6 @@ public class DataDockServiceImpl { ...@@ -2741,27 +2829,6 @@ public class DataDockServiceImpl {
this.updateOrgBranchInfo(record, orgBranchName, orgBranchCode); this.updateOrgBranchInfo(record, orgBranchName, orgBranchCode);
} }
return record; return record;
} catch (Exception e) {
String traceInfo = Arrays.stream(e.getStackTrace()).filter(x-> x.getClassName().contains("com.yeejoin")).map(x -> x.getClassName() + "."+ x.getMethodName() + ":" + x.getLineNumber()).collect(Collectors.toList()).toString();
esEquipmentCategory.deleteById(record);
// superviseInfoMapper.deleteDataAll(Collections.singletonList(record));
ExcelImportErrorLogDto errorLogDto = JSON.parseObject(toJSONString(equ), ExcelImportErrorLogDto.class);
errorLogDto.setErrorInfo(e.getMessage());
errorLogDto.setTraceInfo(traceInfo);
errorLogDto.setCreateTime(new Date());
excelImportErrorLogDao.save(errorLogDto);
String errorMessage = e.getMessage();
if (errorMessage == null) {
errorMessage = "Unknown error occurred: " + e.getClass().getName();
}
log.error("{}数据:保存时出现异常,对应数据:{}", dataSource, toJSONString(equ), e);
errorResult.put("id", record);
errorResult.put("type", "error");
errorResult.put("msg", errorMessage);
errorResult.put("traceInfo", traceInfo);
throw new LocalBadRequest(JSON.toJSONString(errorResult));
}
} }
private void saveNewEquipResumeInfo(IdxBizJgUseInfo useInfo) { private void saveNewEquipResumeInfo(IdxBizJgUseInfo useInfo) {
...@@ -3370,18 +3437,19 @@ public class DataDockServiceImpl { ...@@ -3370,18 +3437,19 @@ public class DataDockServiceImpl {
private void saveInspectInfo(Map<String, Object> equ, String record) { private void saveInspectInfo(Map<String, Object> equ, String record) {
InspectionDetectionInfo inspectionDetectionInfo = new InspectionDetectionInfo(); InspectionDetectionInfo inspectionDetectionInfo = new InspectionDetectionInfo();
BeanUtil.copyProperties(equ, inspectionDetectionInfo); BeanUtil.copyProperties(equ, inspectionDetectionInfo);
if (inspectionDetectionInfo.getInspectType() != null && inspectionDetectionInfo.getInspectConclusion() != null) {
inspectionDetectionInfo.setRecord(record); inspectionDetectionInfo.setRecord(record);
inspectionDetectionInfo.setRecDate(new Date()); inspectionDetectionInfo.setRecDate(new Date());
inspectionDetectionInfo.setSequenceNbr(String.valueOf(sequence.nextId())); inspectionDetectionInfo.setSequenceNbr(String.valueOf(sequence.nextId()));
//杨生元说:不管有没有数据,都新增一条,防止编辑设备检验信息,保存不了
if (inspectionDetectionInfo.getInspectType() != null && inspectionDetectionInfo.getInspectConclusion() != null) {
if (!ValidationUtil.isEmpty(equ.get("xaSerial"))) { if (!ValidationUtil.isEmpty(equ.get("xaSerial"))) {
inspectionDetectionInfo.setInspectType(InspectTypeConverter.dictMap.get(inspectionDetectionInfo.getInspectType())); inspectionDetectionInfo.setInspectType(InspectTypeConverter.dictMap.get(inspectionDetectionInfo.getInspectType()));
inspectionDetectionInfo.setInspectConclusion(InspectConclusionConverter.dictMap.get(inspectionDetectionInfo.getInspectConclusion())); inspectionDetectionInfo.setInspectConclusion(InspectConclusionConverter.dictMap.get(inspectionDetectionInfo.getInspectConclusion()));
} }
inspectionDetectionInfoMapper.insert(inspectionDetectionInfo);
equ.put("inspectType",inspectionDetectionInfo.getInspectType()); equ.put("inspectType",inspectionDetectionInfo.getInspectType());
equ.put("inspectConclusion",inspectionDetectionInfo.getInspectConclusion()); equ.put("inspectConclusion",inspectionDetectionInfo.getInspectConclusion());
} }
inspectionDetectionInfoMapper.insert(inspectionDetectionInfo);
} }
public String updatePipingUseInfo() { public String updatePipingUseInfo() {
......
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import io.seata.spring.annotation.GlobalTransactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
@Service
public class ElevatorDataTransactionService {
private final DataDockServiceImpl dataDockService;
@Autowired
public ElevatorDataTransactionService(@Lazy DataDockServiceImpl dataDockService) {
this.dataDockService = dataDockService;
}
@Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class)
public Object saveSingleElevatorData(Map<String, Object> equ) {
return dataDockService.saveElevatorDataInTransaction(equ, "jg_his_xa", null);
}
}
...@@ -31,7 +31,7 @@ public class IdxBizJgInspectionDetectionInfoServiceImpl extends BaseService<IdxB ...@@ -31,7 +31,7 @@ public class IdxBizJgInspectionDetectionInfoServiceImpl extends BaseService<IdxB
public IdxBizJgInspectionDetectionInfo queryNewestDetailByRecord(String record) { public IdxBizJgInspectionDetectionInfo queryNewestDetailByRecord(String record) {
IdxBizJgInspectionDetectionInfo result = new IdxBizJgInspectionDetectionInfo(); IdxBizJgInspectionDetectionInfo result = new IdxBizJgInspectionDetectionInfo();
QueryWrapper<IdxBizJgInspectionDetectionInfo> queryWrapper = new QueryWrapper<>(); QueryWrapper<IdxBizJgInspectionDetectionInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(IdxBizJgInspectionDetectionInfo::getRecord,record).orderByDesc(IdxBizJgInspectionDetectionInfo::getInspectDate); queryWrapper.lambda().eq(IdxBizJgInspectionDetectionInfo::getRecord,record).orderByDesc(IdxBizJgInspectionDetectionInfo::getInspectDate, IdxBizJgInspectionDetectionInfo::getRecDate);
List<IdxBizJgInspectionDetectionInfo> inspectionDetectionInfoList = list(queryWrapper); List<IdxBizJgInspectionDetectionInfo> inspectionDetectionInfoList = list(queryWrapper);
if (!ValidationUtil.isEmpty(inspectionDetectionInfoList)) { if (!ValidationUtil.isEmpty(inspectionDetectionInfoList)) {
BeanUtils.copyProperties(inspectionDetectionInfoList.get(0), result); BeanUtils.copyProperties(inspectionDetectionInfoList.get(0), result);
......
...@@ -523,14 +523,13 @@ public class IdxBizJgProjectContraptionServiceImplService extends BaseEntityServ ...@@ -523,14 +523,13 @@ public class IdxBizJgProjectContraptionServiceImplService extends BaseEntityServ
return getCheckResultMap(projectContraptionIdList, resultMap, inUseTimeMap); return getCheckResultMap(projectContraptionIdList, resultMap, inUseTimeMap);
} }
private Map<String, Boolean> getCheckResultMap(List<Long> projectContraptionIdList, Map<String, Boolean> resultMap, List<Map<String, Integer>> inUseTimeMap) { private Map<String, Boolean> getCheckResultMap(List<Long> projectContraptionIdList,Map<String, Boolean> resultMap,List<Map<String, Integer>> inUseTimeMap) {
for (Long projectContraptionId : projectContraptionIdList) { for (Long projectContraptionId : projectContraptionIdList) {
Optional<Integer> inUseCountOpt = inUseTimeMap.stream() Optional<Integer> inUseCountOpt = inUseTimeMap.stream()
.filter(map -> projectContraptionId.toString().equals(map.get("project_contraption_id"))) .filter(map -> String.valueOf(projectContraptionId)
.equals(String.valueOf(map.get("project_contraption_id"))))
.map(map -> map.get("inUseNumber")) .map(map -> map.get("inUseNumber"))
.filter(Objects::nonNull)
.findFirst(); .findFirst();
Integer inUseCount = inUseCountOpt.orElse(0); Integer inUseCount = inUseCountOpt.orElse(0);
resultMap.put(String.valueOf(projectContraptionId), inUseCount <= 0); resultMap.put(String.valueOf(projectContraptionId), inUseCount <= 0);
} }
......
...@@ -1231,10 +1231,11 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -1231,10 +1231,11 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
esEquipmentCategoryDto.setSEQUENCE_NBR(recordList.toString()); esEquipmentCategoryDto.setSEQUENCE_NBR(recordList.toString());
list.add(esEquipmentCategoryDto); list.add(esEquipmentCategoryDto);
} }
// 删除校验,被引用时不可删除。管道不做是否引用校验,直接删除已有管道 // 删除校验,被引用时不可删除。管道不做是否引用校验,直接删除已有管道(20251121注释,管道引用不能删除)
if(!PipelineEnum.PRESSURE_PIPELINE.getCode().equals(map.get("equList"))) { //if(!PipelineEnum.PRESSURE_PIPELINE.getCode().equals(map.get("equList"))) {
//this.checkForDelete(records);
//}
this.checkForDelete(records); this.checkForDelete(records);
}
if (CollUtil.isNotEmpty(records)) { if (CollUtil.isNotEmpty(records)) {
// 删除涉及的19张表的数据 // 删除涉及的19张表的数据
superviseInfoMapper.deleteDataAll(records); superviseInfoMapper.deleteDataAll(records);
......
...@@ -82,6 +82,8 @@ public class JgCertificateReplenishServiceImpl extends BaseService<JgCertificate ...@@ -82,6 +82,8 @@ public class JgCertificateReplenishServiceImpl extends BaseService<JgCertificate
public static final String IDX_BIZ_VIEW_JG_ALL = "idx_biz_view_jg_all"; public static final String IDX_BIZ_VIEW_JG_ALL = "idx_biz_view_jg_all";
public static final String equUseAddress = "equUseAddress"; public static final String equUseAddress = "equUseAddress";
public static final String useRegistrationCode = "useRegistrationCode"; public static final String useRegistrationCode = "useRegistrationCode";
public static final String whetherVehicleCylinder = "WHETHER_VEHICLE_CYLINDER";
public static final String manageType = "manageType";
public static final String USE_ORG_CODE = "USE_ORG_CODE"; public static final String USE_ORG_CODE = "USE_ORG_CODE";
public static final String STATUS = "STATUS"; public static final String STATUS = "STATUS";
public static final String record = "record"; public static final String record = "record";
...@@ -809,6 +811,9 @@ public class JgCertificateReplenishServiceImpl extends BaseService<JgCertificate ...@@ -809,6 +811,9 @@ public class JgCertificateReplenishServiceImpl extends BaseService<JgCertificate
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
result.put("applyNo", applyNo); result.put("applyNo", applyNo);
result.put("useUnitName", jsonObject.getString("useUnitName")); result.put("useUnitName", jsonObject.getString("useUnitName"));
result.put("manageType", Objects.toString(jsonObject.get(manageType),"set"));
result.put("whetherVehicleCylinder", Objects.toString(jsonObject.get(whetherVehicleCylinder),"0"));
result.put("equCategoryCode", jsonObject.getString("equCategoryCode"));
result.put("equUseAddress", jsonObject.getString("equUseAddress")); result.put("equUseAddress", jsonObject.getString("equUseAddress"));
result.put("applicationReason", jsonObject.getString("applicationReason")); result.put("applicationReason", jsonObject.getString("applicationReason"));
result.put("lossDamageTime", jsonObject.getString("lossDamageTime").substring(0, 10)); result.put("lossDamageTime", jsonObject.getString("lossDamageTime").substring(0, 10));
...@@ -834,15 +839,24 @@ public class JgCertificateReplenishServiceImpl extends BaseService<JgCertificate ...@@ -834,15 +839,24 @@ public class JgCertificateReplenishServiceImpl extends BaseService<JgCertificate
* @return * @return
*/ */
public Map<String, Object> queryEquByCertSeq(String sequenceNbr) { public Map<String, Object> queryEquByCertSeq(String sequenceNbr) {
JgUseRegistrationManage registrationManage = registrationManageService.getBaseMapper().selectOne(new LambdaQueryWrapper<JgUseRegistrationManage>().eq(JgUseRegistrationManage::getSequenceNbr, sequenceNbr).eq(JgUseRegistrationManage::getIsDelete, 0).select(JgUseRegistrationManage::getUseRegistrationCode, JgUseRegistrationManage::getEquUseAddress)); JgUseRegistrationManage registrationManage = registrationManageService.getBaseMapper()
.selectOne(new LambdaQueryWrapper<JgUseRegistrationManage>()
.eq(JgUseRegistrationManage::getSequenceNbr, sequenceNbr)
.eq(JgUseRegistrationManage::getIsDelete, 0)
.select(JgUseRegistrationManage::getUseRegistrationCode,JgUseRegistrationManage::getUseUnitAddress,
JgUseRegistrationManage::getEquUseAddress,JgUseRegistrationManage::getManageType));
HashMap<String, Object> result = new HashMap<>(); HashMap<String, Object> result = new HashMap<>();
if (ValidationUtil.isEmpty(registrationManage)) { if (ValidationUtil.isEmpty(registrationManage)) {
return result; return result;
} }
List<JSONObject> equipmentLists = this.queryEquByCert(registrationManage.getUseRegistrationCode()); List<JSONObject> list = queryEquByCert(registrationManage.getUseRegistrationCode());
result.put(EQU_LISTS, equipmentLists); result.put(EQU_LISTS, list);
result.put("whetherVehicleCylinder", list.stream().findFirst().map(j -> j.get(whetherVehicleCylinder))
.orElse("0"));
result.put(useRegistrationCode, registrationManage.getUseRegistrationCode()); result.put(useRegistrationCode, registrationManage.getUseRegistrationCode());
result.put(equUseAddress, StringUtils.isEmpty(registrationManage.getEquUseAddress())? "" : registrationManage.getEquUseAddress()); result.put(manageType, registrationManage.getManageType());
result.put(equUseAddress, "unit".equals(registrationManage.getManageType())
? registrationManage.getUseUnitAddress() : registrationManage.getEquUseAddress());
return result; return result;
} }
......
...@@ -652,7 +652,7 @@ public class JgChangeRegistrationTransferServiceImpl extends BaseService<JgChang ...@@ -652,7 +652,7 @@ public class JgChangeRegistrationTransferServiceImpl extends BaseService<JgChang
*/ */
@Override @Override
@ResultFieldMapping({ @ResultFieldMapping({
@ResultFieldMapping.ResultFieldMap(sourceField = "changeRegistrationTransfer.transferUseInfo", @ResultFieldMapping.ResultFieldMap(sourceField = "changeRegistrationTransfer.estateUnitCode",
targetField = "changeRegistrationTransfer.estateUnitSeq", targetField = "changeRegistrationTransfer.estateUnitSeq",
serviceClass = CommonServiceImpl.class, serviceClass = CommonServiceImpl.class,
queryMethod = "queryTcmUnitSeqByCreditCode", queryMethod = "queryTcmUnitSeqByCreditCode",
......
...@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil; ...@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
...@@ -1960,10 +1961,6 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg ...@@ -1960,10 +1961,6 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
List<JgUseRegistrationManage> newList = new ArrayList<>(); List<JgUseRegistrationManage> newList = new ArrayList<>();
for (JgUseRegistrationManage registrationManage : list) { for (JgUseRegistrationManage registrationManage : list) {
// 修改使用登记证管理使用单位信息 // 修改使用登记证管理使用单位信息
registrationManage.setUseUnitName(registration.getNewUseUnitName());
registrationManage.setUseUnitCreditCode(registration.getNewUseUnitCreditCode());
registrationManage.setReceiveOrgName(registration.getReceiveOrgName());
registrationManage.setReceiveCompanyCode(registration.getReceiveOrgCode());
registrationManage.setAuditPassDate(registration.getAuditPassDate()); registrationManage.setAuditPassDate(registration.getAuditPassDate());
registrationManage.setVersion(registrationManage.getVersion() + 1); registrationManage.setVersion(registrationManage.getVersion() + 1);
if ("1".equals(registration.getChangeType()) && EQU_CODE_CC.equals(dto.getEquListCode())) { if ("1".equals(registration.getChangeType()) && EQU_CODE_CC.equals(dto.getEquListCode())) {
...@@ -1983,6 +1980,12 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg ...@@ -1983,6 +1980,12 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
newManage.setVersion(1); newManage.setVersion(1);
newManage.setRegistrationType("0"); newManage.setRegistrationType("0");
newManage.setEquUseAddress(registration.getEquAddress()); newManage.setEquUseAddress(registration.getEquAddress());
newManage.setUseUnitName(registration.getNewUseUnitName());
newManage.setUseUnitCreditCode(registration.getNewUseUnitCreditCode());
newManage.setReceiveOrgName(registration.getReceiveOrgName());
newManage.setReceiveCompanyCode(registration.getReceiveOrgCode());
newManage.setSuperviseOrgCode(registration.getOrgBranchCode());
newManage.setSuperviseOrgName(registration.getOrgBranchName());
// 如果 equListCode = 5000,则设置车牌号 // 如果 equListCode = 5000,则设置车牌号
if (EQU_CODE_CC.equals(registrationManage.getEquListCode())) { if (EQU_CODE_CC.equals(registrationManage.getEquListCode())) {
String targetCode = registrationManage.getUseRegistrationCode(); String targetCode = registrationManage.getUseRegistrationCode();
...@@ -2009,8 +2012,13 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg ...@@ -2009,8 +2012,13 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
newManage.setSequenceNbr(null); newManage.setSequenceNbr(null);
newList.add(newManage); newList.add(newManage);
} else { } else {
registrationManage.setUseUnitName(registration.getNewUseUnitName());
registrationManage.setUseUnitCreditCode(registration.getNewUseUnitCreditCode());
registrationManage.setReceiveOrgName(registration.getReceiveOrgName());
registrationManage.setReceiveCompanyCode(registration.getReceiveOrgCode());
registrationManage.setSuperviseOrgCode(registration.getOrgBranchCode());
registrationManage.setSuperviseOrgName(registration.getOrgBranchName());
registrationManage.setCertificateStatus("已登记"); registrationManage.setCertificateStatus("已登记");
registrationManage.setEquUseAddress(registration.getEquAddress());
if (EQU_CODE_CC.equals(registrationManage.getEquListCode())) { if (EQU_CODE_CC.equals(registrationManage.getEquListCode())) {
String targetCode = registrationManage.getUseRegistrationCode(); String targetCode = registrationManage.getUseRegistrationCode();
dto.getRegistrationList().stream() dto.getRegistrationList().stream()
...@@ -2019,6 +2027,7 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg ...@@ -2019,6 +2027,7 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
.filter(carNumber -> carNumber != null && !"null".equalsIgnoreCase(carNumber.trim())) .filter(carNumber -> carNumber != null && !"null".equalsIgnoreCase(carNumber.trim()))
.findFirst() .findFirst()
.ifPresent(registrationManage::setCarNumber); .ifPresent(registrationManage::setCarNumber);
registrationManage.setEquUseAddress(registration.getEquAddress());
} }
registrationManage.setChangeReason(BusinessTypeEnum.JG_COMPANY_CHANGE_REGISTRATION.getName()); registrationManage.setChangeReason(BusinessTypeEnum.JG_COMPANY_CHANGE_REGISTRATION.getName());
if (!ObjectUtils.isEmpty(registration.getNewUseUnitCreditCode())) { if (!ObjectUtils.isEmpty(registration.getNewUseUnitCreditCode())) {
...@@ -3419,4 +3428,223 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg ...@@ -3419,4 +3428,223 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
resultMap.put("equipInfo", projectContraptionMap); resultMap.put("equipInfo", projectContraptionMap);
return resultMap; return resultMap;
} }
public void handleChangeRegistrationUnitWrongData(String applyNo) {
String[] taskName = new String[]{"已完成"};
JgChangeRegistrationUnit registration = this.baseMapper.selectOne(new LambdaQueryWrapper<JgChangeRegistrationUnit>()
.eq(JgChangeRegistrationUnit::getApplyNo, applyNo)
.eq(JgChangeRegistrationUnit::getIsDelete, 0));
WorkflowResultDto workflowResultDto = new WorkflowResultDto();
workflowResultDto.setNextTaskCode("已完成");
workflowResultDto.setNextTaskId(registration.getNextTaskId());
workflowResultDto.setNextExecutorUserIds(registration.getNextExecuteUserIds());
registration.setStatus(taskName[0]);
registration.setAuditPassDate(new Date());
JgChangeRegistrationUnitDto dto = new JgChangeRegistrationUnitDto();
BeanUtils.copyProperties(registration, dto);
JgRegistrationHistory history = registrationHistoryService.lambdaQuery()
.eq(JgRegistrationHistory::getCurrentDocumentId, registration.getApplyNo())
.eq(JgRegistrationHistory::getIsDelete, false).one();
//如果是工业管道 如果工程装置对应一个证就直接变更给新单位;如果工程装置对应证下还有其他装置就变更后直接给新单位再重新生成一个登记证号;如果两个工程装置对应同一个使用登记证变更后生成两个新的登记证
if (PipelineEnum.PRESSURE_PIPELINE.getCode().equals(registration.getEquListCode())) {
dto.setProjectContraptionList(JSON.parseObject(history.getChangeData(),new TypeReference<List<Map<String, Object>>>(){}));
this.dealProjectContraption(dto, registration.getNextTaskId(), registration, "0");
}
//气瓶单位变更,如果新单位没有证,则生成新的使用登记证,如果新单位有证且是系统生成的证,则选择增补到已有的证下面同时,更新设备其他信息
else if(CylinderTypeEnum.CYLINDER.getCode().equals(registration.getEquCategoryCode())) {
dto.setDeviceList(JSON.parseObject(history.getChangeData(),new TypeReference<List<Map<String, Object>>>(){}));
this.dealCylinderAuditPassData(dto, registration.getNextTaskId(), registration, "0");
} else {
dto.setRegistrationList(JSON.parseObject(history.getChangeData(),new TypeReference<List<Map<String, Object>>>(){}));
// 生成新的使用登记编号,使用登记证修改设备的使用登记信息表,使用单位名称,使用单位统一信用代码,使用登记证编号,更新ES
LambdaQueryWrapper<JgChangeRegistrationUnitEq> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(JgChangeRegistrationUnitEq::getUnitChangeRegistrationId, registration.getSequenceNbr());
List<JgChangeRegistrationUnitEq> jgChangeRegistrationUnitEqs = JgChangeRegistrationUnitEqMapper.selectList(queryWrapper);
//修改ES中使用单位信息和使用单位代码
Map<String, Map<String, Object>> resultMap = new HashMap<>();
//更新产权信息
dto.getRegistrationList().forEach(v -> {
String useCode = String.valueOf(v.get("useRegistrationCode"));
String newCarNumber = String.valueOf(v.get("newCarNumber"));
String estateUnitSeq = String.valueOf(v.get("estateUnitName"));
TzBaseEnterpriseInfo enterpriseInfo = (estateUnitSeq != null && !estateUnitSeq.isEmpty())
? tzBaseEnterpriseInfoMapper.selectById(estateUnitSeq)
: null;
List<String> records = idxBizJgRegisterInfoService.getBaseMapper()
.selectList(new LambdaQueryWrapper<IdxBizJgRegisterInfo>()
.eq(IdxBizJgRegisterInfo::getUseOrgCode, useCode))
.stream()
.map(IdxBizJgRegisterInfo::getRecord)
.collect(Collectors.toList());
if (!records.isEmpty() && enterpriseInfo != null) {
idxBizJgUseInfoService.update(
new IdxBizJgUseInfo()
.setEstateUnitCreditCode(enterpriseInfo.getUseUnitCode())
.setEquState(EquimentEnum.ZAIYONG.getCode().toString())
.setEstateUnitName(enterpriseInfo.getUseUnit()),
new LambdaQueryWrapper<IdxBizJgUseInfo>()
.in(IdxBizJgUseInfo::getRecord, records)
);
}
//场车更新车牌号
if (EQU_CODE_CC.equals(dto.getEquListCode()) && newCarNumber != null && !"null".equals(newCarNumber) && useCode != null) {
idxBizJgRegisterInfoService.update(new IdxBizJgRegisterInfo().setCarNumber(newCarNumber),
new LambdaQueryWrapper<IdxBizJgRegisterInfo>().in(IdxBizJgRegisterInfo::getUseOrgCode, useCode)
);
}
});
Map<String, String> seqToEquId = new HashMap<>();
for (JgChangeRegistrationUnitEq jgChangeRegistrationUnitEq : jgChangeRegistrationUnitEqs) {
String equipId = jgChangeRegistrationUnitEq.getEquId();
LambdaQueryWrapper<IdxBizJgUseInfo> useInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
useInfoLambdaQueryWrapper.eq(IdxBizJgUseInfo::getRecord, equipId);
IdxBizJgUseInfo useInfo = useInfoMapper.selectOne(useInfoLambdaQueryWrapper);
if (ObjectUtils.isNotEmpty(useInfo)) {
useInfo.setUseUnitName(registration.getNewUseUnitName());
useInfo.setUseUnitCreditCode(registration.getNewUseUnitCreditCode());
// 只有变更类型为场车时,更新地址相关字段
if (EQU_CODE_CC.equals(registration.getEquListCode())) {
this.updateUseInfoAddress(useInfo, registration);
IdxBizJgSupervisionInfo supervisionInfo = new IdxBizJgSupervisionInfo();
supervisionInfo.setOrgBranchCode(registration.getOrgBranchCode());
supervisionInfo.setOrgBranchName(registration.getOrgBranchName());
idxBizJgSupervisionInfoMapper.update(supervisionInfo, Wrappers.<IdxBizJgSupervisionInfo>lambdaQuery()
.eq(IdxBizJgSupervisionInfo::getRecord, equipId));
}
useInfoMapper.updateById(useInfo);
}
LambdaQueryWrapper<IdxBizJgRegisterInfo> registerInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
registerInfoLambdaQueryWrapper.eq(IdxBizJgRegisterInfo::getRecord, equipId);
IdxBizJgRegisterInfo registerInfo = registerInfoMapper.selectOne(registerInfoLambdaQueryWrapper);
Map<String, Object> esUpdateParams = new HashMap<>();
String[] companyCode = registration.getNewUseUnitCreditCode().split("_");
esUpdateParams.put("USE_UNIT_CREDIT_CODE", companyCode.length > 1 ? companyCode[1] : registration.getNewUseUnitCreditCode());
esUpdateParams.put("USE_UNIT_NAME", registration.getNewUseUnitName());
esUpdateParams.put("REC_DATE", new Date());// 更新时间,设备筛选时排在前面 bug-21476
esUpdateParams.put("EQU_STATE", "1");
if (EQU_CODE_CC.equals(registration.getEquListCode())) {
esUpdateParams.put("USE_PLACE", joinWithSeparator("/", useInfo.getProvinceName(), useInfo.getCityName(), useInfo.getCountyName(), useInfo.getStreetName()));
esUpdateParams.put("USE_PLACE_CODE", joinWithSeparator("#", useInfo.getProvince(), useInfo.getCity(), useInfo.getCounty(), useInfo.getFactoryUseSiteStreet()));
esUpdateParams.put("ORG_BRANCH_CODE", registration.getOrgBranchCode());
esUpdateParams.put("ORG_BRANCH_NAME", registration.getOrgBranchName());
}
// 如果是变更类型=1,还需要更新证号到 ES
if ("1".equals(registration.getChangeType()) && EQU_CODE_CC.equals(registration.getEquListCode())) {
// 新证号生成逻辑
String newCode = commonServiceImpl.generateRegistrationCode(equipId, registration.getReceiveCompanyCode(), false);
esUpdateParams.put("USE_ORG_CODE", newCode);
seqToEquId.put(registerInfo.getUseOrgCode(), newCode);
registerInfo.setUseOrgCode(newCode);
registerInfoMapper.updateById(registerInfo);
}
if (ObjectUtils.isNotEmpty(registerInfo) && ObjectUtils.isNotEmpty(registerInfo.getCarNumber())) {
esUpdateParams.put("CAR_NUMBER", registerInfo.getCarNumber());
}
resultMap.put(equipId, esUpdateParams);
//修改各类告知列表,置为废弃
this.updataInvalidStatusByHistory(equipId, registration.getApplyNo());
tzsServiceFeignClient.commonUpdateEsDataByIds(resultMap);
}
registration.setNextTaskId(registration.getNextTaskId());
TaskV2Model taskV2Model = updateTaskModel(registration, "0");
JSONArray historyJson = JSON.parseArray(history.getChangeData());
// 更新历史表中一二级审批车牌号
history.setChangeData(JSONObject.toJSONString(dto.getRegistrationList()));
registrationHistoryService.updateById(history);
List<String> ids = historyJson.stream().map(v -> JSON.parseObject(v.toString()).getString(SEQUENCE_NBR)).collect(Collectors.toList());
List<JgUseRegistrationManage> list = useRegistrationManageService.lambdaQuery().in(BaseEntity::getSequenceNbr, ids).list();
// 用来存放新生成的登记证
List<JgUseRegistrationManage> newList = new ArrayList<>();
for (JgUseRegistrationManage registrationManage : list) {
// 修改使用登记证管理使用单位信息
registrationManage.setUseUnitName(registration.getNewUseUnitName());
registrationManage.setUseUnitCreditCode(registration.getNewUseUnitCreditCode());
registrationManage.setReceiveOrgName(registration.getReceiveOrgName());
registrationManage.setReceiveCompanyCode(registration.getReceiveOrgCode());
registrationManage.setAuditPassDate(registration.getAuditPassDate());
registrationManage.setVersion(registrationManage.getVersion() + 1);
if ("1".equals(registration.getChangeType()) && EQU_CODE_CC.equals(dto.getEquListCode())) {
// -------------------- 旧证处理 --------------------
registrationManage.setCertificateStatus("已注销");
registrationManage.setChangeReason(BusinessTypeEnum.JG_COMPANY_CHANGE_REGISTRATION.getName());
// -------------------- 新证处理 --------------------
JgUseRegistrationManage newManage = new JgUseRegistrationManage();
BeanUtils.copyProperties(registrationManage, newManage);
String newCode = seqToEquId.get(registrationManage.getUseRegistrationCode());
newManage.setUseRegistrationCode(newCode);
registration.setUseRegistCode(newCode);
// 新证属性重置
newManage.setCertificateStatus("已登记");
newManage.setVersion(1);
newManage.setRegistrationType("0");
newManage.setEquUseAddress(registration.getEquAddress());
// 如果 equListCode = 5000,则设置车牌号
if (EQU_CODE_CC.equals(registrationManage.getEquListCode())) {
String targetCode = registrationManage.getUseRegistrationCode();
dto.getRegistrationList().stream()
.filter(item -> targetCode.equals(item.get("useRegistrationCode")))
.map(item -> String.valueOf(item.get("newCarNumber")))
.filter(carNumber -> carNumber != null && !"null".equalsIgnoreCase(carNumber.trim()))
.findFirst()
.ifPresent(newManage::setCarNumber);
}
newManage.setChangeReason(BusinessTypeEnum.JG_COMPANY_CHANGE_REGISTRATION.getName());
// 回填新单位地址
if (!ObjectUtils.isEmpty(registration.getNewUseUnitCreditCode())) {
TzBaseEnterpriseInfo useCodeResult = tzBaseEnterpriseInfoMapper.selectOne(
new QueryWrapper<TzBaseEnterpriseInfo>()
.eq("use_unit_code", registration.getNewUseUnitCreditCode())
);
if (useCodeResult != null) {
newManage.setUseUnitAddress(useCodeResult.getAddress());
}
}
newManage.setSequenceNbr(null);
newList.add(newManage);
} else {
registrationManage.setCertificateStatus("已登记");
registrationManage.setEquUseAddress(registration.getEquAddress());
if (EQU_CODE_CC.equals(registrationManage.getEquListCode())) {
String targetCode = registrationManage.getUseRegistrationCode();
dto.getRegistrationList().stream()
.filter(item -> targetCode.equals(item.get("useRegistrationCode")))
.map(item -> String.valueOf(item.get("newCarNumber")))
.filter(carNumber -> carNumber != null && !"null".equalsIgnoreCase(carNumber.trim()))
.findFirst()
.ifPresent(registrationManage::setCarNumber);
}
registrationManage.setChangeReason(BusinessTypeEnum.JG_COMPANY_CHANGE_REGISTRATION.getName());
if (!ObjectUtils.isEmpty(registration.getNewUseUnitCreditCode())) {
TzBaseEnterpriseInfo useCodeResult = tzBaseEnterpriseInfoMapper.selectOne(
new QueryWrapper<TzBaseEnterpriseInfo>()
.eq("use_unit_code", registration.getNewUseUnitCreditCode())
);
if (useCodeResult != null) {
registrationManage.setUseUnitAddress(useCodeResult.getAddress());
}
}
}
}
if (CollUtil.isNotEmpty(newList)) {
list.addAll(newList);
}
useRegistrationManageService.saveOrUpdateBatch(list);
this.createResume(registration,jgChangeRegistrationUnitEqs, taskV2Model.getRoutePath());
}
//新增使用登记证和设备变更记录
this.saveRecord(registration);
// 发送数据变更消息
this.sendDataRefreshMsg(registration);
JgChangeRegistrationUnitMapper.updateById(registration);
// redis流程实时数据更新
commonServiceImpl.saveExecuteFlowData2Redis(dto.getInstanceId(), this.buildInstanceRuntimeData(registration));
this.delRepeatUseEquipData(registration.getApplyNo(), registration.getStatus(), registration.getNewUseUnitCreditCode());
}
} }
\ No newline at end of file
...@@ -91,7 +91,6 @@ public class SafetyProblemTracingGenServiceImpl{ ...@@ -91,7 +91,6 @@ public class SafetyProblemTracingGenServiceImpl{
} }
} }
public void executePersonnalCertificationCheck() { public void executePersonnalCertificationCheck() {
logger.info("开始人员资质超期检查"); logger.info("开始人员资质超期检查");
List<Map<String, Object>> certificationRecords = commonMapper.queryOutOfCertificationRecord(); List<Map<String, Object>> certificationRecords = commonMapper.queryOutOfCertificationRecord();
...@@ -252,14 +251,20 @@ public class SafetyProblemTracingGenServiceImpl{ ...@@ -252,14 +251,20 @@ public class SafetyProblemTracingGenServiceImpl{
public void repairMaintenanceAndInspectionOverdueProblem() { public void repairMaintenanceAndInspectionOverdueProblem() {
logger.info("开始设备维保备案和检验检测超期数据修正"); logger.info("开始设备维保备案和检验检测超期数据修正");
Set<String> realOutOfMaintenanceRecord = commonMapper.queryOutOfMaintenanceRecord().stream().map(m -> m.get("RECORD").toString()).collect(Collectors.toSet()); Set<String> realOutOfMaintenanceRecord = Sets.newHashSet();
Set<String> realOutOfInspectRecord = commonMapper.queryOutOfInspectionRecord().stream().map(m -> m.get("RECORD").toString()).collect(Collectors.toSet()); processLargeResultSet(() -> commonMapper.queryOutOfMaintenanceRecord(), realOutOfMaintenanceRecord);
Set<String> inMaintenanceRecord = Sets.newHashSet();
processLargeResultSet(() -> commonMapper.queryInMaintenanceRecord(), inMaintenanceRecord);
Set<String> realOutOfInspectRecord = Sets.newHashSet();
processLargeResultSet(() -> commonMapper.queryOutOfInspectionRecord(), realOutOfInspectRecord);
Set<String> inInspectRecord = Sets.newHashSet();
processLargeResultSet(() -> commonMapper.queryInInspectionRecord(), inInspectRecord);
// 需要修正业务表+es的数据 // 需要修正业务表+es的数据
List<String> correctData = Lists.newArrayList(); List<String> correctData = Lists.newArrayList();
// 1.处理维保超期错误数据 // 1.处理维保超期错误数据
List<String> outOfMaintenanceErrorData = handleOutOfMaintenanceErrorData(realOutOfMaintenanceRecord); List<String> outOfMaintenanceErrorData = handleOutOfMaintenanceErrorData(realOutOfMaintenanceRecord, inMaintenanceRecord);
// 2.处理检验超期错误数据 // 2.处理检验超期错误数据
List<String> outOfInspectionErrorData = handleOutOfInspectionErrorData(realOutOfInspectRecord); List<String> outOfInspectionErrorData = handleOutOfInspectionErrorData(realOutOfInspectRecord, inInspectRecord);
// 3.修正业务表+es数据状态 // 3.修正业务表+es数据状态
if (ValidationUtil.isEmpty(outOfMaintenanceErrorData) && ValidationUtil.isEmpty(outOfInspectionErrorData)) { if (ValidationUtil.isEmpty(outOfMaintenanceErrorData) && ValidationUtil.isEmpty(outOfInspectionErrorData)) {
// 没有需要修正的数据 // 没有需要修正的数据
...@@ -279,11 +284,11 @@ public class SafetyProblemTracingGenServiceImpl{ ...@@ -279,11 +284,11 @@ public class SafetyProblemTracingGenServiceImpl{
// 再次查询维保备案这些数据有没有检验超期的问题 // 再次查询维保备案这些数据有没有检验超期的问题
// 找出仅在maintenanceSet中而不在realOutOfInspectRecord中的元素(真正需要更新的维保数据) // 找出仅在maintenanceSet中而不在realOutOfInspectRecord中的元素(真正需要更新的维保数据)
List<String> maintenanceOnly = maintenanceSet.stream() List<String> maintenanceOnly = maintenanceSet.stream()
.filter(id -> !realOutOfMaintenanceRecord.contains(id)) .filter(id -> !realOutOfInspectRecord.contains(id))
.collect(Collectors.toList()); .collect(Collectors.toList());
// 找出仅在inspectionSet中而不在realOutOfMaintenanceRecord中的元素(真正需要更新的检验数据) // 找出仅在inspectionSet中而不在realOutOfMaintenanceRecord中的元素(真正需要更新的检验数据)
List<String> inspectionOnly = inspectionSet.stream() List<String> inspectionOnly = inspectionSet.stream()
.filter(id -> !realOutOfInspectRecord.contains(id)) .filter(id -> !realOutOfMaintenanceRecord.contains(id))
.collect(Collectors.toList()); .collect(Collectors.toList());
correctData.addAll(maintenanceOnly); correctData.addAll(maintenanceOnly);
...@@ -300,9 +305,16 @@ public class SafetyProblemTracingGenServiceImpl{ ...@@ -300,9 +305,16 @@ public class SafetyProblemTracingGenServiceImpl{
} }
} }
private List<String> handleOutOfMaintenanceErrorData(Set<String> realOutOfMaintenanceRecord) { /**
* 处理维保超期错误数据
*
* @param realOutOfMaintenanceRecord 真正超期设备
* @param inMaintenanceRecord 维保正常设备
* @return 需要修正的错误数据
*/
private List<String> handleOutOfMaintenanceErrorData(Set<String> realOutOfMaintenanceRecord, Set<String> inMaintenanceRecord) {
// 设备表到今日维保超期设备realOutOfMaintenanceRecord // 设备表到今日维保超期设备realOutOfMaintenanceRecord
if (ValidationUtil.isEmpty(realOutOfMaintenanceRecord)) { if (ValidationUtil.isEmpty(realOutOfMaintenanceRecord) && ValidationUtil.isEmpty(inMaintenanceRecord)) {
return Lists.newArrayList(); return Lists.newArrayList();
} }
logger.info("设备维保超期safety表数据修正开始,实际检验超期数据:{}条", realOutOfMaintenanceRecord.size()); logger.info("设备维保超期safety表数据修正开始,实际检验超期数据:{}条", realOutOfMaintenanceRecord.size());
...@@ -316,11 +328,21 @@ public class SafetyProblemTracingGenServiceImpl{ ...@@ -316,11 +328,21 @@ public class SafetyProblemTracingGenServiceImpl{
return Lists.newArrayList(); return Lists.newArrayList();
} }
// 追溯问题表中未处理的维保超期设备 // 追溯问题表中未处理的维保超期设备
List<String> outOfMaintenanceEquipIds = Lists.newArrayList();
// 未超期但错误生成的维保超期设备 // 未超期但错误生成的维保超期设备
List<String> outOfMaintenanceEquipIds = problemList.stream() if (!ValidationUtil.isEmpty(realOutOfMaintenanceRecord)) {
outOfMaintenanceEquipIds.addAll(problemList.stream()
.map(SafetyProblemTracing::getSourceId) .map(SafetyProblemTracing::getSourceId)
.filter(id -> !realOutOfMaintenanceRecord.contains(id)) .filter(id -> !realOutOfMaintenanceRecord.contains(id))
.collect(Collectors.toList()); .collect(Collectors.toList()));
}
// 维保已经正常但错误生成维保超期的设备
if (!ValidationUtil.isEmpty(inMaintenanceRecord)) {
outOfMaintenanceEquipIds.addAll(problemList.stream()
.map(SafetyProblemTracing::getSourceId)
.filter(inMaintenanceRecord::contains)
.collect(Collectors.toList()));
}
if (ValidationUtil.isEmpty(outOfMaintenanceEquipIds)) { if (ValidationUtil.isEmpty(outOfMaintenanceEquipIds)) {
return Lists.newArrayList(); return Lists.newArrayList();
} }
...@@ -335,16 +357,16 @@ public class SafetyProblemTracingGenServiceImpl{ ...@@ -335,16 +357,16 @@ public class SafetyProblemTracingGenServiceImpl{
.set(SafetyProblemTracing::getRecDate, new Date()) .set(SafetyProblemTracing::getRecDate, new Date())
.in(SafetyProblemTracing::getSourceId, batch) .in(SafetyProblemTracing::getSourceId, batch)
.eq(SafetyProblemTracing::getProblemTypeCode, SafetyProblemTypeEnum.WBCQ.getProblemTypeCode()) .eq(SafetyProblemTracing::getProblemTypeCode, SafetyProblemTypeEnum.WBCQ.getProblemTypeCode())
.eq(SafetyProblemTracing::getIsDelete,Boolean.FALSE) .eq(SafetyProblemTracing::getIsDelete, Boolean.FALSE)
.update(); .update();
} }
logger.info("设备维保超期safety表数据修正完成,已更新数据:{}条", outOfMaintenanceEquipIds.size()); logger.info("设备维保超期safety表数据修正完成,已更新数据:{}条", outOfMaintenanceEquipIds.size());
return outOfMaintenanceEquipIds; return outOfMaintenanceEquipIds;
} }
private List<String> handleOutOfInspectionErrorData(Set<String> realOutOfInspectRecord) { private List<String> handleOutOfInspectionErrorData(Set<String> realOutOfInspectRecord, Set<String> inInspectRecord) {
// 设备表到今日检验超期设备realOutOfInspectRecord // 设备表到今日检验超期设备realOutOfInspectRecord
if (ValidationUtil.isEmpty(realOutOfInspectRecord)) { if (ValidationUtil.isEmpty(realOutOfInspectRecord) && ValidationUtil.isEmpty(inInspectRecord)) {
return Lists.newArrayList(); return Lists.newArrayList();
} }
logger.info("设备检验超期safety表数据修正开始,实际检验超期数据:{}条", realOutOfInspectRecord.size()); logger.info("设备检验超期safety表数据修正开始,实际检验超期数据:{}条", realOutOfInspectRecord.size());
...@@ -358,11 +380,21 @@ public class SafetyProblemTracingGenServiceImpl{ ...@@ -358,11 +380,21 @@ public class SafetyProblemTracingGenServiceImpl{
return Lists.newArrayList(); return Lists.newArrayList();
} }
// 追溯问题表中未处理的检验超期设备 // 追溯问题表中未处理的检验超期设备
List<String> outOfInspectionEquipIds = Lists.newArrayList();
// 未超期但错误生成的检验超期设备 // 未超期但错误生成的检验超期设备
List<String> outOfInspectionEquipIds = problemList.stream() if (!ValidationUtil.isEmpty(realOutOfInspectRecord)) {
outOfInspectionEquipIds.addAll(problemList.stream()
.map(SafetyProblemTracing::getSourceId) .map(SafetyProblemTracing::getSourceId)
.filter(id -> !realOutOfInspectRecord.contains(id)) .filter(id -> !realOutOfInspectRecord.contains(id))
.collect(Collectors.toList()); .collect(Collectors.toList()));
}
// 检验已经正常但错误生成检验超期的设备
if (!ValidationUtil.isEmpty(inInspectRecord)) {
outOfInspectionEquipIds.addAll(problemList.stream()
.map(SafetyProblemTracing::getSourceId)
.filter(inInspectRecord::contains)
.collect(Collectors.toList()));
}
if (ValidationUtil.isEmpty(outOfInspectionEquipIds)) { if (ValidationUtil.isEmpty(outOfInspectionEquipIds)) {
return Lists.newArrayList(); return Lists.newArrayList();
} }
...@@ -384,6 +416,38 @@ public class SafetyProblemTracingGenServiceImpl{ ...@@ -384,6 +416,38 @@ public class SafetyProblemTracingGenServiceImpl{
return outOfInspectionEquipIds; return outOfInspectionEquipIds;
} }
private void processLargeResultSet(Supplier<List<Map<String, Object>>> dataSupplier, Set<String> targetSet) {
int batchSize = 5000; // 每批处理的记录数
int processedCount = 0;
// 由于无法分页,这里假设一次性获取所有数据,但在处理过程中及时释放内存
List<Map<String, Object>> allRecords = dataSupplier.get();
for (Map<String, Object> record : allRecords) {
targetSet.add(record.get("RECORD").toString());
processedCount++;
// 每处理一定数量的记录,让出CPU时间片,避免长时间占用
if (processedCount % batchSize == 0) {
try {
Thread.sleep(10); // 短暂休眠,让出CPU
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
break;
}
}
}
// 清理临时数据,帮助垃圾回收
allRecords.clear();
}
// 函数式接口定义
@FunctionalInterface
private interface Supplier<T> {
T get();
}
private void updateEquipAndSendMessage(List<Map<String, Object>> mapList, SafetyProblemTypeEnum safetyProblemTypeEnum) { private void updateEquipAndSendMessage(List<Map<String, Object>> mapList, SafetyProblemTypeEnum safetyProblemTypeEnum) {
if (ValidationUtil.isEmpty(mapList)) { if (ValidationUtil.isEmpty(mapList)) {
return; return;
......
...@@ -256,7 +256,11 @@ ...@@ -256,7 +256,11 @@
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:szCs w:val="28"/> <w:szCs w:val="28"/>
</w:rPr> </w:rPr>
<#if equCategoryCode?? && (equCategoryCode == '2300')>
<w:t>使用单位地址</w:t>
<#else>
<w:t>设备使用地址</w:t> <w:t>设备使用地址</w:t>
</#if>
</w:r> </w:r>
</w:p> </w:p>
</w:tc> </w:tc>
...@@ -617,7 +621,7 @@ ...@@ -617,7 +621,7 @@
</w:trPr> </w:trPr>
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="580" w:type="dxa"/> <w:tcW w:w="760" w:type="dxa"/>
<w:vAlign w:val="center"/> <w:vAlign w:val="center"/>
</w:tcPr> </w:tcPr>
<w:p w14:paraId="54CA17F1"> <w:p w14:paraId="54CA17F1">
...@@ -744,6 +748,7 @@ ...@@ -744,6 +748,7 @@
</w:p> </w:p>
</w:tc> </w:tc>
</w:tr> </w:tr>
<#if !(manageType == "unit" && whetherVehicleCylinder != "1")>
<#list equLists as equLists> <#list equLists as equLists>
<w:tr w14:paraId="2395894C"> <w:tr w14:paraId="2395894C">
<w:tblPrEx> <w:tblPrEx>
...@@ -902,6 +907,27 @@ ...@@ -902,6 +907,27 @@
</w:tc> </w:tc>
</w:tr> </w:tr>
</#list> </#list>
<#else>
<w:tr>
<w:trPr>
<w:trHeight w:val="580" w:hRule="exact"/>
</w:trPr>
<w:tc>
<w:tcPr>
<w:gridSpan w:val="5"/>
<w:vAlign w:val="center"/>
</w:tcPr>
<w:p>
<w:pPr>
<w:jc w:val="center"/>
</w:pPr>
<w:r>
<w:t>详见设备汇总表</w:t>
</w:r>
</w:p>
</w:tc>
</w:tr>
</#if>
<w:tr w14:paraId="17B658C7"> <w:tr w14:paraId="17B658C7">
<w:tblPrEx> <w:tblPrEx>
<w:tblBorders> <w:tblBorders>
......
...@@ -1364,6 +1364,156 @@ zl/OZWMbAAAAAIAowjYAAAAAAFGEbQAAAAAAovwPNj8bRIboD6oAAAAASUVORK5CYII= ...@@ -1364,6 +1364,156 @@ zl/OZWMbAAAAAIAowjYAAAAAAFGEbQAAAAAAovwPNj8bRIboD6oAAAAASUVORK5CYII=
</v:shape> </v:shape>
</w:pict> </w:pict>
</w:r> </w:r>
<#if reissueDateYear != "" && reissueDateMonth != "" && reissueDateDay != "">
<w:r>
<w:rPr>
<w:sz w:val="24"/>
</w:rPr>
<w:pict>
<v:shape id="文本框 14" o:spid="_x0000_s1027" o:spt="202" type="#_x0000_t202"
style="position:absolute;left:0pt;margin-left:205.05pt;margin-top:655.65pt;height:30.25pt;width:320.7pt;z-index:251664384;mso-width-relative:page;mso-height-relative:page;"
fillcolor="#FFFFFF" filled="t" stroked="f" coordsize="21600,21600">
<v:path/>
<v:fill on="t" color2="#FFFFFF" focussize="0,0"/>
<v:stroke on="f" weight="0.5pt"/>
<v:imagedata o:title=""/>
<o:lock v:ext="edit" aspectratio="f"/>
<v:textbox>
<w:txbxContent>
<w:p>
<w:pPr>
<w:keepNext w:val="off"/>
<w:keepLines w:val="off"/>
<w:pageBreakBefore w:val="off"/>
<w:widowControl w:val="off"/>
<w:kinsoku/>
<w:wordWrap/>
<w:overflowPunct/>
<w:topLinePunct w:val="off"/>
<w:adjustRightInd w:val="off"/>
<w:snapToGrid/>
<w:spacing w:line="400" w:line-rule="exact"/>
<w:ind w:left="0" w:first-line="420"/>
<w:jc w:val="left"/>
<w:textAlignment w:val="auto"/>
<w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体"
w:cs="黑体"
w:hint="fareast"/>
<w:sz w:val="32"/>
<w:sz-cs w:val="32"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体"
w:cs="黑体"
w:hint="fareast"/>
<w:sz w:val="32"/>
<w:sz-cs w:val="32"/>
</w:rPr>
<w:t>补证日期:</w:t>
</w:r>
<w:r>
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:fareast="宋体"
w:cs="宋体"
w:hint="fareast"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
<w:t>${(reissueDateYear)!''}</w:t>
</w:r>
<w:r>
<w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体"
w:cs="黑体"
w:hint="fareast"/>
<w:sz w:val="32"/>
<w:sz-cs w:val="32"/>
</w:rPr>
<w:t></w:t>
</w:r>
<w:r>
<w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体"
w:cs="黑体"
w:hint="fareast"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:t> </w:t>
</w:r>
<w:r>
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:fareast="宋体"
w:cs="宋体"
w:hint="fareast"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
<w:t>${(reissueDateMonth)!''}</w:t>
</w:r>
<w:r>
<w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体"
w:cs="黑体"
w:hint="fareast"/>
<w:sz w:val="32"/>
<w:sz-cs w:val="32"/>
</w:rPr>
<w:t></w:t>
</w:r>
<w:r>
<w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体"
w:cs="黑体"
w:hint="fareast"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:t> </w:t>
</w:r>
<w:r>
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:fareast="宋体"
w:cs="宋体"
w:hint="fareast"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
<w:t>${(reissueDateDay)!''}</w:t>
</w:r>
<w:r>
<w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体"
w:cs="黑体"
w:hint="fareast"/>
<w:sz w:val="32"/>
<w:sz-cs w:val="32"/>
</w:rPr>
<w:t></w:t>
</w:r>
</w:p>
<w:p>
<w:pPr>
<w:rPr>
<w:rFonts w:hint="default"/>
<w:sz w:val="32"/>
<w:sz-cs w:val="32"/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
</w:pPr>
</w:p>
</w:txbxContent>
</v:textbox>
</v:shape>
</w:pict>
</w:r>
</#if>
<w:r> <w:r>
<w:rPr> <w:rPr>
<w:sz w:val="24"/> <w:sz w:val="24"/>
......
...@@ -637,6 +637,184 @@ ...@@ -637,6 +637,184 @@
</v:shape> </v:shape>
</w:pict> </w:pict>
</w:r> </w:r>
<#if reissueDateYear?has_content && reissueDateMonth?has_content && reissueDateDay?has_content >
<w:r>
<w:rPr>
<w:sz w:val="24"/>
</w:rPr>
<w:pict>
<v:shape id="文本框 14" o:spid="_x0000_s1027" o:spt="202" type="#_x0000_t202"
style="position:absolute;left:0pt;margin-left:180pt;margin-top:644.35pt;height:32.15pt;width:120pt;z-index:251661316;mso-width-relative:page;mso-height-relative:page;"
fillcolor="#FFFFFF" filled="t" stroked="f" coordsize="21600,21600">
<v:path/>
<v:fill on="t" color2="#FFFFFF" focussize="0,0"/>
<v:stroke on="f" weight="0.5pt"/>
<v:imagedata o:title=""/>
<o:lock v:ext="edit" aspectratio="f"/>
<v:textbox>
<w:txbxContent>
<w:p>
<w:pPr>
<w:keepNext w:val="off"/>
<w:keepLines w:val="off"/>
<w:pageBreakBefore w:val="off"/>
<w:widowControl w:val="off"/>
<w:kinsoku/>
<w:wordWrap/>
<w:overflowPunct/>
<w:topLinePunct w:val="off"/>
<w:adjustRightInd w:val="off"/>
<w:snapToGrid/>
<w:spacing w:line="400" w:line-rule="exact"/>
<w:ind w:left="0" w:first-line="420"/>
<w:jc w:val="left"/>
<w:textAlignment w:val="auto"/>
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:fareast="宋体" w:cs="宋体"
w:hint="fareast"/>
<w:sz w:val="28"/>
<w:sz-cs w:val="28"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:fareast="宋体" w:cs="宋体"
w:hint="fareast"/>
<w:sz w:val="28"/>
<w:sz-cs w:val="28"/>
<w:lang w:fareast="ZH-CN"/>
</w:rPr>
<w:t>补 证 日 期:</w:t>
</w:r>
</w:p>
<w:p>
<w:pPr>
<w:keepNext w:val="off"/>
<w:keepLines w:val="off"/>
<w:pageBreakBefore w:val="off"/>
<w:widowControl w:val="off"/>
<w:kinsoku/>
<w:wordWrap/>
<w:overflowPunct/>
<w:topLinePunct w:val="off"/>
<w:adjustRightInd w:val="off"/>
<w:snapToGrid/>
<w:spacing w:line="400" w:line-rule="exact"/>
<w:ind w:left="0" w:first-line="420"/>
<w:jc w:val="left"/>
<w:textAlignment w:val="auto"/>
<w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="黑体"
w:hint="fareast"/>
<w:sz w:val="32"/>
<w:sz-cs w:val="32"/>
</w:rPr>
</w:pPr>
</w:p>
<w:p>
<w:pPr>
<w:rPr>
<w:rFonts w:hint="default"/>
<w:sz w:val="32"/>
<w:sz-cs w:val="32"/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
</w:pPr>
</w:p>
</w:txbxContent>
</v:textbox>
</v:shape>
</w:pict>
</w:r>
<w:r>
<w:rPr>
<w:sz w:val="24"/>
</w:rPr>
<w:pict>
<v:shape id="文本框 14" o:spid="_x0000_s1027" o:spt="202" type="#_x0000_t202"
style="position:absolute;left:0pt;margin-left:263.05pt;margin-top:644.35pt;height:32.15pt;width:200pt;z-index:251661312;mso-width-relative:page;mso-height-relative:page;"
fillcolor="#FFFFFF" filled="t" stroked="f" coordsize="21600,21600">
<v:path/>
<v:fill on="t" color2="#FFFFFF" focussize="0,0"/>
<v:stroke on="f" weight="0.5pt"/>
<v:imagedata o:title=""/>
<o:lock v:ext="edit" aspectratio="f"/>
<v:textbox>
<w:txbxContent>
<w:p>
<w:pPr>
<w:keepNext w:val="off"/>
<w:keepLines w:val="off"/>
<w:pageBreakBefore w:val="off"/>
<w:widowControl w:val="off"/>
<w:kinsoku/>
<w:wordWrap/>
<w:overflowPunct/>
<w:topLinePunct w:val="off"/>
<w:adjustRightInd w:val="off"/>
<w:snapToGrid/>
<w:spacing w:line="400" w:line-rule="exact"/>
<w:ind w:left="0" w:first-line="420"/>
<w:jc w:val="left"/>
<w:textAlignment w:val="auto"/>
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:fareast="宋体" w:cs="宋体"
w:hint="fareast"/>
<w:sz w:val="28"/>
<w:sz-cs w:val="28"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:fareast="宋体" w:cs="宋体"
w:hint="fareast"/>
<w:sz w:val="28"/>
<w:sz-cs w:val="28"/>
<w:lang w:fareast="ZH-CN"/>
</w:rPr>
<w:t> ${reissueDateYear?string("####")} 年 ${reissueDateMonth} 月 ${reissueDateDay} 日</w:t>
</w:r>
</w:p>
<w:p>
<w:pPr>
<w:keepNext w:val="off"/>
<w:keepLines w:val="off"/>
<w:pageBreakBefore w:val="off"/>
<w:widowControl w:val="off"/>
<w:kinsoku/>
<w:wordWrap/>
<w:overflowPunct/>
<w:topLinePunct w:val="off"/>
<w:adjustRightInd w:val="off"/>
<w:snapToGrid/>
<w:spacing w:line="400" w:line-rule="exact"/>
<w:ind w:left="0" w:first-line="420"/>
<w:jc w:val="left"/>
<w:textAlignment w:val="auto"/>
<w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="黑体"
w:hint="fareast"/>
<w:sz w:val="32"/>
<w:sz-cs w:val="32"/>
</w:rPr>
</w:pPr>
</w:p>
<w:p>
<w:pPr>
<w:rPr>
<w:rFonts w:hint="default"/>
<w:sz w:val="32"/>
<w:sz-cs w:val="32"/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
</w:pPr>
</w:p>
</w:txbxContent>
</v:textbox>
</v:shape>
</w:pict>
</w:r>
</#if>
<w:r> <w:r>
<w:rPr> <w:rPr>
<w:sz w:val="24"/> <w:sz w:val="24"/>
......
...@@ -1005,13 +1005,21 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -1005,13 +1005,21 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
} }
dto.put("INFORMATION_SITUATION", informationSituation); dto.put("INFORMATION_SITUATION", informationSituation);
} }
if (!ValidationUtil.isEmpty(dto.getString("CYLINDER_CATEGORY"))) { Optional.ofNullable(dto.getJSONArray("inspections"))
.ifPresent(arr -> arr.forEach(o -> {
JSONObject j = (JSONObject) o;
String v = j.getString("inspectReportNo");
j.put("inspectReportNo", (v == null || "null".equalsIgnoreCase(v)) ? "" : v);
}));
if (!ValidationUtil.isEmpty(dto.getString("CYLINDER_CATEGORY")) && dto.getString("EQU_CATEGORY_CODE").equals("2300")) {
String cylinderCategory = dto.getString("CYLINDER_CATEGORY"); String cylinderCategory = dto.getString("CYLINDER_CATEGORY");
boolean integer = isInteger(cylinderCategory); boolean integer = isInteger(cylinderCategory);
if (integer) { if (integer) {
cylinderCategory = CylinderCategoryEnum.getName(cylinderCategory); cylinderCategory = CylinderCategoryEnum.getName(cylinderCategory);
} }
dto.put("CYLINDER_CATEGORY", cylinderCategory); dto.put("CYLINDER_CATEGORY", cylinderCategory);
}else{
dto.put("CYLINDER_CATEGORY", "");
} }
dto.put("inspectStatus", inspectStatus); dto.put("inspectStatus", inspectStatus);
list.add(dto); list.add(dto);
......
...@@ -11,7 +11,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -11,7 +11,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.typroject.tyboot.core.rdbms.annotation.Condition; import org.typroject.tyboot.core.rdbms.annotation.Condition;
import org.typroject.tyboot.core.rdbms.annotation.Operator; import org.typroject.tyboot.core.rdbms.annotation.Operator;
@DS("cyl") @DS("openapi")
@Service @Service
public class CylinderOpenApiServiceImpl { public class CylinderOpenApiServiceImpl {
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
LEFT JOIN ${staticTableName} psd ON ei.use_code = psd.unit_code LEFT JOIN ${staticTableName} psd ON ei.use_code = psd.unit_code
where where
ei.is_delete = '0' ei.is_delete = '0'
and ei.data_sources = '陕西省内企业'
GROUP BY GROUP BY
ei.use_code ei.use_code
</select> </select>
......
...@@ -229,6 +229,7 @@ ...@@ -229,6 +229,7 @@
AND pc.org_code IS NOT NULL AND pc.org_code IS NOT NULL
AND tzei.is_delete = '0' AND tzei.is_delete = '0'
AND pc.is_deleted = 'f' AND pc.is_deleted = 'f'
and tzei.data_sources = '陕西省内企业'
AND (tzei.unit_type <![CDATA[<>]]> '检验机构' OR tzei.unit_type <![CDATA[<>]]> '检测机构') AND (tzei.unit_type <![CDATA[<>]]> '检验机构' OR tzei.unit_type <![CDATA[<>]]> '检测机构')
AND tui.amos_user_id IN (SELECT USER_ID FROM privilege_group_user WHERE GROUP_SEQ = #{groupId}) AND tui.amos_user_id IN (SELECT USER_ID FROM privilege_group_user WHERE GROUP_SEQ = #{groupId})
</select> </select>
......
...@@ -105,7 +105,7 @@ ...@@ -105,7 +105,7 @@
LEFT JOIN tzs_jg_use_registration ur LEFT JOIN tzs_jg_use_registration ur
ON ur.project_contraption_id = pl.project_contraption_id ON ur.project_contraption_id = pl.project_contraption_id
AND ur.is_delete = 0 AND ur.is_delete = 0
AND ur.project_contraption_id != null AND ur.project_contraption_id IS NOT NULL
AND ur.status NOT IN ('使用单位待提交','一级受理已驳回','使用单位已撤回','已作废') AND ur.status NOT IN ('使用单位待提交','一级受理已驳回','使用单位已撤回','已作废')
LEFT JOIN tzs_jg_installation_notice ins LEFT JOIN tzs_jg_installation_notice ins
ON ins.project_contraption_id = pl.project_contraption_id ON ins.project_contraption_id = pl.project_contraption_id
...@@ -382,7 +382,7 @@ ...@@ -382,7 +382,7 @@
WITH target_use AS MATERIALIZED ( WITH target_use AS MATERIALIZED (
SELECT "RECORD", project_contraption_id SELECT "RECORD", project_contraption_id
FROM idx_biz_jg_use_info FROM idx_biz_jg_use_info
WHERE project_contraption_id != null and WHERE project_contraption_id is not null and
project_contraption_id IN project_contraption_id IN
<foreach collection="projectContraptionIdList" item="id" index="index" open="(" close=")" separator=","> <foreach collection="projectContraptionIdList" item="id" index="index" open="(" close=")" separator=",">
#{id} #{id}
......
...@@ -298,6 +298,7 @@ ...@@ -298,6 +298,7 @@
AND tjoa.status = '已完成' AND tjoa.status = '已完成'
and tjoa.open_biz_type = #{openBizType} and tjoa.open_biz_type = #{openBizType}
and tjoa.agency_classify != 'JYJGFL_ZJJG' and tjoa.agency_classify != 'JYJGFL_ZJJG'
and info.is_delete = '0'
<if test="list !=null and list.size()>0"> <if test="list !=null and list.size()>0">
AND info.use_code in AND info.use_code in
<foreach collection="list" item="item" index="index" open="(" close=")" separator=","> <foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
...@@ -414,6 +415,7 @@ ...@@ -414,6 +415,7 @@
<include refid="unit-list-info" /> <include refid="unit-list-info" />
where where
info.use_code = #{unitCode} info.use_code = #{unitCode}
and info.is_delete = '0'
and exists (SELECT 1 from tz_jyjc_opening_application where unit_code = #{unitCode} and status = '已完成' and open_biz_type = #{openBizType}) and exists (SELECT 1 from tz_jyjc_opening_application where unit_code = #{unitCode} and status = '已完成' and open_biz_type = #{openBizType})
</select> </select>
</mapper> </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