Commit 533f2c1c authored by suhuiguang's avatar suhuiguang

feat(jyjc): 报检开发调整

1.报检规则4.0开发
parent 1b06b1ee
package com.yeejoin.amos.boot.module.common.api.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("装置查询参数")
public class ContraptionQueryParams {
@ApiModelProperty(value = "检验类型", required = true)
private String inspectionType;
@ApiModelProperty("设备类别")
private String equCategory;
@ApiModelProperty("设备列表")
private String equList;
@ApiModelProperty("设备定义")
private String equDefine;
@ApiModelProperty("城市")
private String city;
@ApiModelProperty("区县")
private String county;
}
...@@ -8,6 +8,7 @@ import lombok.RequiredArgsConstructor; ...@@ -8,6 +8,7 @@ import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
/** /**
...@@ -24,7 +25,7 @@ public class EquipCategoryTypeHandler implements TypeHandler<String> { ...@@ -24,7 +25,7 @@ public class EquipCategoryTypeHandler implements TypeHandler<String> {
public String handle(String code) { public String handle(String code) {
return code != null ? CODE_NAME_MAP.computeIfAbsent(code, (k) -> { return code != null ? CODE_NAME_MAP.computeIfAbsent(code, (k) -> {
EquipmentCategory equipmentCategory = equipmentCategoryMapper.selectOne(new LambdaQueryWrapper<EquipmentCategory>().eq(EquipmentCategory::getCode, code).select(EquipmentCategory::getName, EquipmentCategory::getId)); EquipmentCategory equipmentCategory = equipmentCategoryMapper.selectOne(new LambdaQueryWrapper<EquipmentCategory>().eq(EquipmentCategory::getCode, code).select(EquipmentCategory::getName, EquipmentCategory::getId));
return equipmentCategory == null ? "" : equipmentCategory.getName(); return Optional.ofNullable(equipmentCategory).map(EquipmentCategory::getName).orElse("");
}) : null; }) : null;
} }
} }
...@@ -28,4 +28,14 @@ public interface BizCommonConstant { ...@@ -28,4 +28,14 @@ public interface BizCommonConstant {
* 资质信息key * 资质信息key
*/ */
String UNIT_LICENCE_KEY = "baseUnitLicences"; String UNIT_LICENCE_KEY = "baseUnitLicences";
/**
* 推送状态初始
*/
String PUSH_STATUS_INIT = "1";
/**
* 推送状态成功
*/
String PUSH_STATUS_SUCCESS = "2";
} }
package com.yeejoin.amos.boot.module.jyjc.api.dto;
import com.yeejoin.amos.boot.module.jyjc.api.model.InspectionEquipData;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @author Administrator
*/
@ApiModel(value = "检验检测申请信息推送数据-压力管道")
@Data
public class InspectionApplicationPushDataPipeline implements Serializable {
@ApiModelProperty(value = "报检单号")
private String applicationNo;
@ApiModelProperty(value = "申请日期")
private Date applicationDate;
@ApiModelProperty(value = "报检单位编号")
private String applicationUnitCode;
@ApiModelProperty(value = "报检单位名称")
private String applicationUnitName;
@ApiModelProperty(value = "报检单位地址")
private String applicationUnitAddress;
@ApiModelProperty(value = "报检单位联系人")
private String applicationContactName;
@ApiModelProperty(value = "申请联系人电话")
private String applicationContactPhone;
@ApiModelProperty(value = "检验检测类型")
private String inspectionType;
@ApiModelProperty(value = "监管单位名称")
private String superviseOrgName;
@ApiModelProperty(value = "检验检测单位编码")
private String inspectionUnitCode;
@ApiModelProperty(value = "检验检测单位名称")
private String inspectionUnitName;
@ApiModelProperty(value = "管道类别")
private String pipelineClass;
@ApiModelProperty(value = "工程(装置)名称")
private String deviceName;
@ApiModelProperty(value = "安装地点/使用地点")
private String address;
@ApiModelProperty(value = "使用登记证编号")
private String useRegistrationCode;
@ApiModelProperty(value = "设备数量(m)")
private String totalLength;
@ApiModelProperty(value = "报检的管道")
private List<PipelineResultItemDto> inspectionEquips;
private String traceId;
}
package com.yeejoin.amos.boot.module.jyjc.api.dto;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionResultDataModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* 管道检验检测结果数据接收
*
* @author system_generator
*/
@EqualsAndHashCode(callSuper = true)
@Data
@ApiModel(value = "PipelineInspectionResultDto", description = "管道检验检测结果数据接收")
public class PipelineInspectionResultDto extends JyjcInspectionResultDataModel {
@ApiModelProperty(value = "报检的管道")
private List<PipelineResultItemDto> inspectionEquips;
}
package com.yeejoin.amos.boot.module.jyjc.api.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 压力管道汇总表数据项
*
* @author system_generator
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "压力管道汇总表数据项")
public class PipelineResultItemDto {
@ApiModelProperty(value = "唯一标识")
private String equipId;
@ApiModelProperty(value = "管道名称(登记单元)")
private String pipeName;
@ApiModelProperty(value = "管道编号")
private String pipelineNumber;
@ApiModelProperty(value = "设计单位名称")
private String designUnitName;
@ApiModelProperty(value = "管道级别")
private String deviceLevel;
@ApiModelProperty(value = "公称直径")
private String nominalDiameter;
@ApiModelProperty(value = "公称壁厚")
private String wallThickness;
@ApiModelProperty(value = "管道长度")
private String pipeLength;
@ApiModelProperty(value = "设计压力")
private String pressure;
@ApiModelProperty(value = "设计温度")
private String temperature;
@ApiModelProperty(value = "设计介质")
private String medium;
@ApiModelProperty(value = "工作压力")
private String workPressure;
@ApiModelProperty(value = "工作温度")
private String workTemperature;
@ApiModelProperty(value = "工作介质")
private String workMedium;
@ApiModelProperty(value = "备注")
private String remarks;
}
...@@ -19,8 +19,8 @@ public enum ResultTypeEnum { ...@@ -19,8 +19,8 @@ public enum ResultTypeEnum {
/** /**
* 集成方式 * 集成方式
*/ */
INPUT("检验机构录入", "input"), INPUT("手工录入", "input"),
INTEGRATED("检验机构对接", "integrated"), INTEGRATED("系统对接", "integrated"),
USEUNITENTRY("使用单位录入", "useUnitEntry"); USEUNITENTRY("使用单位录入", "useUnitEntry");
private final String name; private final String name;
......
...@@ -148,10 +148,15 @@ public class JyjcInspectionApplicationModel extends BaseModel { ...@@ -148,10 +148,15 @@ public class JyjcInspectionApplicationModel extends BaseModel {
@ApiModelProperty(value = "下一步任务名称") @ApiModelProperty(value = "下一步任务名称")
private String nextTaskName; private String nextTaskName;
@ApiModelProperty(value = "设备分类") @ApiModelProperty(value = "设备种类编码")
private String equList; private String equList;
@ApiModelProperty(value = "设备种类名称")
private String equListName;
@ApiModelProperty(value = "设备类别code") @ApiModelProperty(value = "设备类别code")
private String equCategory; private String equCategory;
......
...@@ -131,7 +131,7 @@ ...@@ -131,7 +131,7 @@
and ((tzjia.application_unit_code = #{currentApplicationUnitCode} or tzjia.inspection_unit_code = #{currentInspectionUnitCode}) OR tzjia.transfer_to_user_ids LIKE concat ( '%', #{currentUserId}, '%' )) and ((tzjia.application_unit_code = #{currentApplicationUnitCode} or tzjia.inspection_unit_code = #{currentInspectionUnitCode}) OR tzjia.transfer_to_user_ids LIKE concat ( '%', #{currentUserId}, '%' ))
</when> </when>
<otherwise> <otherwise>
1=2 and 1=2
</otherwise> </otherwise>
</choose> </choose>
</where> </where>
......
...@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.controller.BaseController; import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.common.biz.utils.CommonResponseUtil; import com.yeejoin.amos.boot.module.common.biz.utils.CommonResponseUtil;
import com.yeejoin.amos.boot.module.common.api.dto.ContraptionQueryParams;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplication; import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplication;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationEquipModel; import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationEquipModel;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationModel; import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationModel;
...@@ -325,15 +326,14 @@ public class JyjcInspectionApplicationController extends BaseController { ...@@ -325,15 +326,14 @@ public class JyjcInspectionApplicationController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/projectContraptionPage") @GetMapping(value = "/projectContraptionPage")
@ApiOperation(value = "按照检验类型查询可进行检验的装置", notes = "不包括流程中的") @ApiOperation(value = "按照检验类型查询可进行检验的装置", notes = "不包括流程中的")
public ResponseModel<IPage<IdxBizJgProjectContraption>> getJgProjectContraptionPage(@RequestParam String inspectionType, public ResponseModel<IPage<IdxBizJgProjectContraption>> getJgProjectContraptionPage(ContraptionQueryParams queryParams,
@RequestParam String equCategory,
@RequestParam(value = "current") int current, @RequestParam(value = "current") int current,
@RequestParam(value = "size") int size) { @RequestParam(value = "size") int size) {
ReginParams selectedOrgInfo = getSelectedOrgInfo(); ReginParams selectedOrgInfo = getSelectedOrgInfo();
Page<IdxBizJgProjectContraption> page = new Page<>(); Page<IdxBizJgProjectContraption> page = new Page<>();
page.setCurrent(current); page.setCurrent(current);
page.setSize(size); page.setSize(size);
IPage<IdxBizJgProjectContraption> re = jyjcInspectionApplicationServiceImpl.getJgProjectContraptionPage(inspectionType, page, selectedOrgInfo.getCompany().getCompanyCode(), equCategory); IPage<IdxBizJgProjectContraption> re = jyjcInspectionApplicationServiceImpl.getJgProjectContraptionPage(queryParams, page, selectedOrgInfo.getCompany().getCompanyCode());
return ResponseHelper.buildResponse(re); return ResponseHelper.buildResponse(re);
} }
......
...@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jyjc.biz.controller; ...@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jyjc.biz.controller;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.controller.BaseController; import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.jyjc.api.dto.PipelineInspectionResultDto;
import com.yeejoin.amos.boot.module.jyjc.api.enums.ResultTypeEnum; import com.yeejoin.amos.boot.module.jyjc.api.enums.ResultTypeEnum;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionResultDataModel; import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionResultDataModel;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionResultModel; import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionResultModel;
...@@ -243,4 +244,16 @@ public class JyjcInspectionResultController extends BaseController { ...@@ -243,4 +244,16 @@ public class JyjcInspectionResultController extends BaseController {
public ResponseModel<Boolean> delUseUnitEntry(@RequestParam(value = "sequenceNbr")String resultSeq) { public ResponseModel<Boolean> delUseUnitEntry(@RequestParam(value = "sequenceNbr")String resultSeq) {
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.delUseUnitEntry(Long.valueOf(resultSeq))); return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.delUseUnitEntry(Long.valueOf(resultSeq)));
} }
/**
* 压力管道-报检结果接收
* @param resultData 结果信息
* @return List<JyjcInspectionResultDataModel>
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "POST", value = "报检结果接收", notes = "对外对接使用,支持单条及批量")
@PostMapping(value = "/pipeline/receive")
public ResponseModel<List<PipelineInspectionResultDto>> savePipelineResultDataBatch(@RequestBody List<PipelineInspectionResultDto> resultData){
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.receivePipelineResultData(resultData));
}
} }
...@@ -12,7 +12,7 @@ import java.util.List; ...@@ -12,7 +12,7 @@ import java.util.List;
@Getter @Getter
public class InspectionDetectionSaveToDbEvent extends ApplicationEvent { public class InspectionDetectionSaveToDbEvent extends ApplicationEvent {
private List<JyjcInspectionResult> jyjcInspectionResultList; private final List<JyjcInspectionResult> jyjcInspectionResultList;
/** /**
* Create a new {@code ApplicationEvent}. * Create a new {@code ApplicationEvent}.
......
package com.yeejoin.amos.boot.module.jyjc.biz.event;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResult;
import lombok.Getter;
import org.springframework.context.ApplicationEvent;
import java.util.List;
/**
* @author Administrator
*/
@Getter
public class UseInfoSaveToDbEvent extends ApplicationEvent {
private List<JyjcInspectionResult> jyjcInspectionResultList;
/**
* Create a new {@code ApplicationEvent}.
*
* @param source the object on which the event initially occurred or with
* which the event is associated (never {@code null})
*/
public UseInfoSaveToDbEvent(Object source, List<JyjcInspectionResult> jyjcInspectionResultList) {
super(source);
this.jyjcInspectionResultList = jyjcInspectionResultList;
}
}
...@@ -9,8 +9,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; ...@@ -9,8 +9,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity; import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity; import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity;
import com.yeejoin.amos.boot.biz.common.utils.SnowflakeIdUtil; import com.yeejoin.amos.boot.biz.common.utils.SnowflakeIdUtil;
import com.yeejoin.amos.boot.module.common.api.enums.EquipmentClassifityEnum;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistrationManage; import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistrationManage;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationManageMapper; import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationManageMapper;
import com.yeejoin.amos.boot.module.jyjc.api.common.BizCommonConstant;
import com.yeejoin.amos.boot.module.jyjc.api.dto.InspectionApplicationPushDataPipeline;
import com.yeejoin.amos.boot.module.jyjc.api.dto.PipelineResultItemDto;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationEquip; import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationEquip;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationPushLog; import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationPushLog;
import com.yeejoin.amos.boot.module.jyjc.api.enums.EquipCategoryEnum; import com.yeejoin.amos.boot.module.jyjc.api.enums.EquipCategoryEnum;
...@@ -21,19 +25,23 @@ import com.yeejoin.amos.boot.module.jyjc.biz.event.InspectionApplicationPushEven ...@@ -21,19 +25,23 @@ import com.yeejoin.amos.boot.module.jyjc.biz.event.InspectionApplicationPushEven
import com.yeejoin.amos.boot.module.jyjc.biz.kafka.KafkaProducer; import com.yeejoin.amos.boot.module.jyjc.biz.kafka.KafkaProducer;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcInspectionApplicationEquipServiceImpl; import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcInspectionApplicationEquipServiceImpl;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcInspectionApplicationPushLogServiceImpl; import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcInspectionApplicationPushLogServiceImpl;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcInspectionApplicationServiceImpl;
import com.yeejoin.amos.boot.module.jyjc.biz.util.JsonUtils; import com.yeejoin.amos.boot.module.jyjc.biz.util.JsonUtils;
import com.yeejoin.amos.boot.module.jyjc.biz.util.JyjcConstant; import com.yeejoin.amos.boot.module.jyjc.biz.util.JyjcConstant;
import com.yeejoin.amos.boot.module.ymt.api.entity.*; import com.yeejoin.amos.boot.module.ymt.api.entity.*;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentClassifityEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.*; import com.yeejoin.amos.boot.module.ymt.api.mapper.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationListener;
import org.springframework.core.io.Resource; import org.springframework.core.io.Resource;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.event.TransactionalEventListener;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*; import java.util.*;
import java.util.concurrent.BlockingQueue; import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
...@@ -46,14 +54,14 @@ import java.util.stream.Collectors; ...@@ -46,14 +54,14 @@ import java.util.stream.Collectors;
*/ */
@Component @Component
@Slf4j @Slf4j
public class InspectionApplicationPushEventListener implements ApplicationListener<InspectionApplicationPushEvent> { public class InspectionApplicationPushEventListener {
@Value("classpath:/json/companyCodeRegName.json") @Value("classpath:/json/companyCodeRegName.json")
private Resource regNameJson; private Resource regNameJson;
private Map<String, String> companyCodeRegNameMap; private Map<String, String> companyCodeRegNameMap;
private BlockingQueue<JyjcInspectionApplicationModel> queue = new LinkedBlockingQueue<>(); private final BlockingQueue<JyjcInspectionApplicationModel> queue = new LinkedBlockingQueue<>();
@Value("${inspection.push.max.deal.thread.num:2}") @Value("${inspection.push.max.deal.thread.num:2}")
private int threadNum; private int threadNum;
...@@ -118,6 +126,13 @@ public class InspectionApplicationPushEventListener implements ApplicationListen ...@@ -118,6 +126,13 @@ public class InspectionApplicationPushEventListener implements ApplicationListen
@Autowired @Autowired
IdxBizJgDesignInfoMapper designInfoMapper; IdxBizJgDesignInfoMapper designInfoMapper;
@javax.annotation.Resource
IdxBizJgProjectContraptionMapper projectContraptionMapper;
@javax.annotation.Resource
private JyjcInspectionApplicationServiceImpl inspectionApplicationService;
/** /**
* 报检推送主题, 第一位为接收单位标识 * 报检推送主题, 第一位为接收单位标识
...@@ -134,8 +149,10 @@ public class InspectionApplicationPushEventListener implements ApplicationListen ...@@ -134,8 +149,10 @@ public class InspectionApplicationPushEventListener implements ApplicationListen
*/ */
private final static List<String> DSJ_ARRAY = Arrays.asList("DQJY", "SCJY"); private final static List<String> DSJ_ARRAY = Arrays.asList("DQJY", "SCJY");
private static final BigDecimal ZERO = new BigDecimal("0.000");
@Override @TransactionalEventListener(value = InspectionApplicationPushEvent.class)
public void onApplicationEvent(InspectionApplicationPushEvent event) { public void onApplicationEvent(InspectionApplicationPushEvent event) {
log.info("收到报检推送请求:{}", event); log.info("收到报检推送请求:{}", event);
queue.add(event.getJyjcInspectionApplicationModel()); queue.add(event.getJyjcInspectionApplicationModel());
...@@ -145,20 +162,11 @@ public class InspectionApplicationPushEventListener implements ApplicationListen ...@@ -145,20 +162,11 @@ public class InspectionApplicationPushEventListener implements ApplicationListen
public void init() { public void init() {
ExecutorService executorService = Executors.newFixedThreadPool(threadNum); ExecutorService executorService = Executors.newFixedThreadPool(threadNum);
companyCodeRegNameMap = JsonUtils.getResourceJson(regNameJson); companyCodeRegNameMap = JsonUtils.getResourceJson(regNameJson);
// 可处理的检验检测类型,目前只处理检验的,不处理检测业务
List<String> canDealInspectionTypes = getCanDealInspectionType();
for (int i = 0; i < threadNum; i++) { for (int i = 0; i < threadNum; i++) {
executorService.execute(() -> { executorService.execute(() -> {
while (true) { while (true) {
try { try {
JyjcInspectionApplicationModel applicationModel = queue.take(); JyjcInspectionApplicationModel applicationModel = queue.take();
if (!canDealInspectionTypes.contains(applicationModel.getInspectionType())) {
return;
}
if(applicationModel.getEquipClassify().equals(EquipmentClassifityEnum.YLGD.getCode())){
log.info("压力管道暂不处理");
return;
}
//构建数据 //构建数据
JyjcInspectionApplicationPushLog pushLog = this.createPushData(applicationModel); JyjcInspectionApplicationPushLog pushLog = this.createPushData(applicationModel);
// 发送数据 // 发送数据
...@@ -175,7 +183,7 @@ public class InspectionApplicationPushEventListener implements ApplicationListen ...@@ -175,7 +183,7 @@ public class InspectionApplicationPushEventListener implements ApplicationListen
// 发送kafka指定的主题 // 发送kafka指定的主题
String topic = String.format(INSPECTION_APPLICATION_PUSH_TOPIC, dockingUnitCode); String topic = String.format(INSPECTION_APPLICATION_PUSH_TOPIC, dockingUnitCode);
kafkaProducer.sendMessage(topic, pushLog.getPushData()); kafkaProducer.sendMessage(topic, pushLog.getPushData());
pushLog.setPushStatus("2"); pushLog.setPushStatus(BizCommonConstant.PUSH_STATUS_SUCCESS);
pushLogService.updateById(pushLog); pushLogService.updateById(pushLog);
} }
...@@ -186,7 +194,7 @@ public class InspectionApplicationPushEventListener implements ApplicationListen ...@@ -186,7 +194,7 @@ public class InspectionApplicationPushEventListener implements ApplicationListen
pushLog.setApplicationSeq(applicationModel.getSequenceNbr()); pushLog.setApplicationSeq(applicationModel.getSequenceNbr());
// 初始状态 // 初始状态
pushLog.setSequenceNbr(id); pushLog.setSequenceNbr(id);
pushLog.setPushStatus("1"); pushLog.setPushStatus(BizCommonConstant.PUSH_STATUS_INIT);
pushLog.setPushData(this.buildData(id, applicationModel)); pushLog.setPushData(this.buildData(id, applicationModel));
pushLog.setRecDate(new Date()); pushLog.setRecDate(new Date());
pushLogService.save(pushLog); pushLogService.save(pushLog);
...@@ -199,7 +207,44 @@ public class InspectionApplicationPushEventListener implements ApplicationListen ...@@ -199,7 +207,44 @@ public class InspectionApplicationPushEventListener implements ApplicationListen
return canDealInspectionTypes; return canDealInspectionTypes;
} }
private String calTotalLength(List<PipelineResultItemDto> pipelines) {
if (pipelines == null || pipelines.isEmpty()) {
return ZERO.toPlainString();
}
return pipelines.stream()
.map(PipelineResultItemDto::getPipeLength)
.filter(Objects::nonNull)
.map(String::trim)
.filter(s -> !s.isEmpty())
.map(this::parseToBigDecimal)
.reduce(BigDecimal.ZERO, BigDecimal::add)
.setScale(3, RoundingMode.HALF_UP)
.toPlainString();
}
private BigDecimal parseToBigDecimal(String value) {
try {
return new BigDecimal(value);
} catch (NumberFormatException e) {
return BigDecimal.ZERO;
}
}
private String buildData(long traceId, JyjcInspectionApplicationModel applicationModel) { private String buildData(long traceId, JyjcInspectionApplicationModel applicationModel) {
String jsonStr = "";
EquipmentClassifityEnum classifyEnum = EquipmentClassifityEnum.getOne(applicationModel.getEquipClassify());
if (classifyEnum == EquipmentClassifityEnum.YLGD) {
InspectionApplicationPushDataPipeline pushDataPipeline = new InspectionApplicationPushDataPipeline();
BeanUtil.copyProperties(applicationModel, pushDataPipeline);
pushDataPipeline.setPipelineClass(applicationModel.getEquCategory());
pushDataPipeline.setSuperviseOrgName(this.getSuperviseNameByCode(applicationModel.getApplicationUnitCode()));
this.setProjectContraptionInfo(applicationModel.getProjectContraptionId(), pushDataPipeline);
pushDataPipeline.setInspectionEquips(this.getPipelines(applicationModel));
pushDataPipeline.setTotalLength(calTotalLength(pushDataPipeline.getInspectionEquips()));
pushDataPipeline.setTraceId(traceId + "");
jsonStr = JSONObject.toJSONString(pushDataPipeline);
} else {
InspectionApplicationPushData pushData = new InspectionApplicationPushData(); InspectionApplicationPushData pushData = new InspectionApplicationPushData();
BeanUtil.copyProperties(applicationModel, pushData); BeanUtil.copyProperties(applicationModel, pushData);
// 监管机构 // 监管机构
...@@ -207,7 +252,39 @@ public class InspectionApplicationPushEventListener implements ApplicationListen ...@@ -207,7 +252,39 @@ public class InspectionApplicationPushEventListener implements ApplicationListen
// 报检的设备信息 // 报检的设备信息
pushData.setInspectionEquips(this.buildInspectionEquipInfo(applicationModel)); pushData.setInspectionEquips(this.buildInspectionEquipInfo(applicationModel));
pushData.setTraceId(traceId + ""); pushData.setTraceId(traceId + "");
return JSONObject.toJSONString(pushData); jsonStr = JSONObject.toJSONString(pushData);
}
return jsonStr;
}
private List<PipelineResultItemDto> getPipelines(JyjcInspectionApplicationModel applicationModel) {
List<Map<String, Object>> pipelines = inspectionApplicationService.getPipelines(applicationModel);
return pipelines.stream().map(p -> {
PipelineResultItemDto resultItemDto = new PipelineResultItemDto();
BeanUtil.copyProperties(p, resultItemDto);
resultItemDto.setEquipId(p.get("record").toString());
return resultItemDto;
}).collect(Collectors.toList());
}
private void setProjectContraptionInfo(String projectContraptionId, InspectionApplicationPushDataPipeline pushDataPipeline) {
IdxBizJgProjectContraption idxBizJgProjectContraption = projectContraptionMapper.selectById(projectContraptionId);
if (idxBizJgProjectContraption != null) {
pushDataPipeline.setDeviceName(idxBizJgProjectContraption.getProjectContraption());
pushDataPipeline.setAddress(getDetailAddress(idxBizJgProjectContraption));
pushDataPipeline.setUseRegistrationCode(idxBizJgProjectContraption.getUseRegistrationCode());
}
}
private String getDetailAddress(IdxBizJgProjectContraption projectContraption) {
return trimIfNull(projectContraption.getProvinceName()) + trimIfNull(projectContraption.getCityName()) + trimIfNull(projectContraption.getCountyName()) + trimIfNull(projectContraption.getStreetName() + trimIfNull(projectContraption.getAddress()));
}
private String trimIfNull(String str) {
if (StringUtils.isBlank(str)) {
return "";
}
return str.trim();
} }
private List<InspectionEquipData> buildInspectionEquipInfo(JyjcInspectionApplicationModel applicationModel) { private List<InspectionEquipData> buildInspectionEquipInfo(JyjcInspectionApplicationModel applicationModel) {
...@@ -413,7 +490,7 @@ public class InspectionApplicationPushEventListener implements ApplicationListen ...@@ -413,7 +490,7 @@ public class InspectionApplicationPushEventListener implements ApplicationListen
private String getSuperviseNameByCode(String applicationUnitCode) { private String getSuperviseNameByCode(String applicationUnitCode) {
//查询监管单位名称 //查询监管单位名称
TzBaseEnterpriseInfo tzBaseEnterpriseInfo = baseEnterpriseInfoMapper.selectOne(new LambdaQueryWrapper<TzBaseEnterpriseInfo>().eq(TzBaseEnterpriseInfo::getUseCode, applicationUnitCode)); TzBaseEnterpriseInfo tzBaseEnterpriseInfo = baseEnterpriseInfoMapper.selectOne(new LambdaQueryWrapper<TzBaseEnterpriseInfo>().eq(TzBaseEnterpriseInfo::getUseCode, applicationUnitCode));
return tzBaseEnterpriseInfo.getSuperviseOrgName(); return Optional.ofNullable(tzBaseEnterpriseInfo).map(TzBaseEnterpriseInfo::getSuperviseOrgName).orElse(null);
} }
......
package com.yeejoin.amos.boot.module.jyjc.biz.event.listener; package com.yeejoin.amos.boot.module.jyjc.biz.event.listener;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.boot.biz.common.utils.SnowflakeIdUtil;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResult; import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResult;
import com.yeejoin.amos.boot.module.jyjc.biz.event.InspectionDetectionSaveToDbEvent; import com.yeejoin.amos.boot.module.jyjc.biz.event.InspectionDetectionSaveToDbEvent;
import com.yeejoin.amos.boot.module.jyjc.biz.event.listener.service.InspectionDetectionInfoUpdateService; import com.yeejoin.amos.boot.module.jyjc.biz.event.listener.service.InspectionDetectionInfoUpdateService;
import com.yeejoin.amos.boot.module.jyjc.biz.event.publisher.BizEmqPublisher;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.CommonServiceImpl;
import com.yeejoin.amos.boot.module.ymt.api.entity.InspectionDetectionInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzsUserInfo;
import com.yeejoin.amos.boot.module.ymt.api.mapper.InspectionDetectionInfoMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationListener; import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import java.util.Date;
import java.util.List;
import java.util.concurrent.BlockingQueue; import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.LinkedBlockingQueue;
import java.util.stream.Collectors;
/** /**
* @author Administrator * @author Administrator
...@@ -68,9 +56,4 @@ public class InspectionDetectionSaveToDbEventListener implements ApplicationList ...@@ -68,9 +56,4 @@ public class InspectionDetectionSaveToDbEventListener implements ApplicationList
} }
} }
package com.yeejoin.amos.boot.module.jyjc.biz.event.listener;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResult;
import com.yeejoin.amos.boot.module.jyjc.biz.event.UseInfoSaveToDbEvent;
import com.yeejoin.amos.boot.module.ymt.api.mapper.UseInfoMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
/**
* @author Administrator
*/
@Component
@Slf4j
public class UseInfoSaveToDbEventListener implements ApplicationListener<UseInfoSaveToDbEvent> {
@Value("${user.info.save.thread.number:3}")
private int threadNumber;
@Autowired
UseInfoMapper useInfoMapper;
private BlockingQueue<JyjcInspectionResult> blockingQueue = new LinkedBlockingQueue<>();
@Override
public void onApplicationEvent(UseInfoSaveToDbEvent event) {
log.info("收到更新使用信息的检验检测字段消息:{}", JSONObject.toJSONString(event.getJyjcInspectionResultList()));
blockingQueue.addAll(event.getJyjcInspectionResultList());
}
@PostConstruct
public void init() {
ExecutorService executorService = Executors.newFixedThreadPool(threadNumber);
for (int i = 0; i < threadNumber; i++) {
executorService.execute(() -> {
while (true) {
try {
JyjcInspectionResult jyjcInspectionResult = blockingQueue.take();
//更新使用信息表
useInfoMapper.updateByRecord(jyjcInspectionResult.getEquipUnicode(), jyjcInspectionResult.getNextInspectionDate(), jyjcInspectionResult.getInspectionType(), jyjcInspectionResult.getApplicationNo());
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
});
}
}
}
package com.yeejoin.amos.boot.module.jyjc.biz.event.listener.result;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.google.common.collect.Sets;
import com.yeejoin.amos.boot.biz.common.utils.SnowflakeIdUtil;
import com.yeejoin.amos.boot.module.common.api.enums.EquipmentClassifityEnum;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResult;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResultAttachment;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResultParam;
import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionResultParamService;
import com.yeejoin.amos.boot.module.jyjc.biz.event.publisher.BizEmqPublisher;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.CommonServiceImpl;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcInspectionResultServiceImpl;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgInspectionDetectionInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgTechParamsPipeline;
import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgInspectionDetectionInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgTechParamsPipelineMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.UseInfoMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import java.util.*;
@Component
@RequiredArgsConstructor
public class BatchEquipResultDataProcessor implements SupportableResultDataProcessor {
private final IJyjcInspectionResultParamService iJyjcInspectionResultParamService;
private final ObjectMapper objectMapper;
private final IdxBizJgTechParamsPipelineMapper techParamPipelineMapper;
private final IdxBizJgInspectionDetectionInfoMapper inspectionDetectionInfoMapper;
private final BizEmqPublisher bizEmqPublisher;
private final CommonServiceImpl commonService;
private final SnowflakeIdUtil sequence;
private final UseInfoMapper useInfoMapper;
private final JyjcInspectionResultServiceImpl inspectionResultService;
private static final Set<String> SUPPORTED_TYPES = Sets.newHashSet(EquipmentClassifityEnum.YLGD.getCode());
@Override
public boolean support(String equList) {
return SUPPORTED_TYPES.contains(equList);
}
@Override
public void process(JyjcInspectionResult jyjcInspectionResult) {
Set<String> records = new HashSet<>();
JyjcInspectionResultParam param = iJyjcInspectionResultParamService.getOneParamByResultSeq(jyjcInspectionResult.getSequenceNbr());
if (!ObjectUtils.isEmpty(param.getParamJson())) {
JSONObject paramObj = JSON.parseObject(param.getParamJson());
try {
List<Map<String, Object>> equips = objectMapper.readValue(
objectMapper.writeValueAsString(paramObj.get("equip")),
new TypeReference<ArrayList<Map<String, Object>>>() {
}
);
equips.forEach(e -> {
String record = String.valueOf(e.get("equipId"));
records.add(record);
// 1.更新管道的技术参数
updateTechParams(e, record);
// 2.检验信息更新或者插入
IdxBizJgInspectionDetectionInfo info = new IdxBizJgInspectionDetectionInfo();
LambdaQueryWrapper<IdxBizJgInspectionDetectionInfo> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(IdxBizJgInspectionDetectionInfo::getResultSeq, jyjcInspectionResult.getSequenceNbr());
wrapper.eq(IdxBizJgInspectionDetectionInfo::getRecord, record);
List<IdxBizJgInspectionDetectionInfo> list = inspectionDetectionInfoMapper.selectList(wrapper);
JyjcInspectionResultAttachment jybgFile = inspectionResultService.getReportAttachment(jyjcInspectionResult.getSequenceNbr());
if (CollectionUtils.isEmpty(list)) {
// 无则插入
commonService.buildInspectInfo(jyjcInspectionResult, info, jybgFile, record);
info.setSequenceNbr(sequence.nextId() + "");
inspectionDetectionInfoMapper.insert(info);
// 对方不查询库 所以无事务操作
bizEmqPublisher.sendInspectionMsgAfterSave(info, "insert");
} else {
// 已经维护过则更新
info = list.get(0);
commonService.buildInspectInfo(jyjcInspectionResult, info, jybgFile, record);
inspectionDetectionInfoMapper.updateById(info);
// 对方不查询库 所以无事务操作
bizEmqPublisher.sendInspectionMsgAfterSave(info, "update");
}
// 3.更新使用信息表,最新检验信息
useInfoMapper.updateByRecord(record, jyjcInspectionResult.getNextInspectionDate(), jyjcInspectionResult.getInspectionType(), jyjcInspectionResult.getApplicationNo());
// 4.更新es下次检验日期
commonService.updateEquipNextInspectDate(jyjcInspectionResult, record);
});
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
// 5.更新单据信息的json(公共)
inspectionResultService.updateHisDataAfterResultUpdate(jyjcInspectionResult.getApplicationNo());
// 6.发送数据刷新消息
inspectionResultService.sendDataRefreshMsg(records);
}
}
private void updateTechParams(Map<String, Object> e, String record) {
JyjcInspectionResultServiceImpl.doUpdatePipelineTechParams(e, record, techParamPipelineMapper);
}
}
package com.yeejoin.amos.boot.module.jyjc.biz.event.listener.result;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResult;
public interface ResultDataProcessor {
void process(JyjcInspectionResult jyjcInspectionResult);
}
package com.yeejoin.amos.boot.module.jyjc.biz.event.listener.result;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResult;
public class ResultDataProcessorWrapper implements ResultDataProcessor {
private final SupportableResultDataProcessor delegate;
public ResultDataProcessorWrapper(SupportableResultDataProcessor delegate) {
this.delegate = delegate;
}
@Override
public void process(JyjcInspectionResult jyjcInspectionResult) {
delegate.process(jyjcInspectionResult);
}
}
package com.yeejoin.amos.boot.module.jyjc.biz.event.listener.result;
import com.yeejoin.amos.component.robot.BadRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@Component
@RequiredArgsConstructor
public class ResultProcessorFactory {
private final Map<String, ResultDataProcessor> processorMap = new ConcurrentHashMap<>();
private final List<SupportableResultDataProcessor> processors;
public ResultDataProcessor getProcessor(String equList) {
return processorMap.computeIfAbsent(equList, k ->
new ResultDataProcessorWrapper(
processors.stream()
.filter(p -> p.support(equList))
.findFirst()
.orElseThrow(() -> new BadRequest("No processor found for: " + equList))
)
);
}
}
package com.yeejoin.amos.boot.module.jyjc.biz.event.listener.result;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.collect.Sets;
import com.yeejoin.amos.boot.biz.common.utils.SnowflakeIdUtil;
import com.yeejoin.amos.boot.module.common.api.constant.TZSCommonConstant;
import com.yeejoin.amos.boot.module.common.api.enums.EquipmentClassifityEnum;
import com.yeejoin.amos.boot.module.common.biz.refresh.DataRefreshEvent;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResult;
import com.yeejoin.amos.boot.module.jyjc.biz.event.publisher.BizEmqPublisher;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.CommonServiceImpl;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcInspectionResultServiceImpl;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgInspectionDetectionInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzsUserInfo;
import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgInspectionDetectionInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.UseInfoMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.nio.charset.StandardCharsets;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Component
@RequiredArgsConstructor
@Slf4j
public class SingleEquipResultDataProcessor implements SupportableResultDataProcessor {
private final CommonServiceImpl commonService;
private final SnowflakeIdUtil sequence;
private final IdxBizJgInspectionDetectionInfoMapper inspectionDetectionInfoMapper;
private final BizEmqPublisher bizEmqPublisher;
private final UseInfoMapper useInfoMapper;
private final JyjcInspectionResultServiceImpl inspectionResultService;
private static final Set<String> SUPPORTED_TYPES = Sets.newHashSet(
EquipmentClassifityEnum.GL.getCode(),
EquipmentClassifityEnum.YLRQ.getCode(),
EquipmentClassifityEnum.DT.getCode(),
EquipmentClassifityEnum.QZJX.getCode(),
EquipmentClassifityEnum.CC.getCode(),
EquipmentClassifityEnum.YLSS.getCode(),
EquipmentClassifityEnum.KYSD.getCode()
);
@Override
public boolean support(String equList) {
return SUPPORTED_TYPES.contains(equList);
}
@Override
public void process(JyjcInspectionResult jyjcInspectionResult) {
IdxBizJgInspectionDetectionInfo info = new IdxBizJgInspectionDetectionInfo();
QueryWrapper<IdxBizJgInspectionDetectionInfo> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(IdxBizJgInspectionDetectionInfo::getInspectReportNo, jyjcInspectionResult.getSequenceNbr());
List<IdxBizJgInspectionDetectionInfo> list = inspectionDetectionInfoMapper.selectList(wrapper);
String record;
if (CollectionUtils.isEmpty(list)) {
fillInspectionFields(jyjcInspectionResult, info);
info.setSequenceNbr(sequence.nextId() + "");
inspectionDetectionInfoMapper.insert(info);
record = info.getRecord();
bizEmqPublisher.sendInspectionMsgAfterSave(info, "insert");
} else {
info = list.get(0);
fillInspectionFields(jyjcInspectionResult, info);
inspectionDetectionInfoMapper.updateById(info);
record = info.getRecord();
bizEmqPublisher.sendInspectionMsgAfterSave(info, "update");
}
try {
bizEmqPublisher.getEmqKeeper().getMqttClient().publish(String.format(TZSCommonConstant.DATA_REFRESH_TOPIC, DataRefreshEvent.DataType.equipment.name(), DataRefreshEvent.Operation.UPDATE), JSONObject.toJSONString(Collections.singletonList(record)).getBytes(StandardCharsets.UTF_8), 2, false);
} catch (MqttException e) {
log.error("发送数据变更emq消息失败:{}", e.getMessage(), e);
}
// 3.更新使用信息表最新的检验信息
useInfoMapper.updateByRecord(jyjcInspectionResult.getEquipUnicode(), jyjcInspectionResult.getNextInspectionDate(), jyjcInspectionResult.getInspectionType(), jyjcInspectionResult.getApplicationNo());
// 4.es更新下次检验日期
commonService.updateEquipNextInspectDate(jyjcInspectionResult, jyjcInspectionResult.getEquipUnicode());
// 更新单据信息的json(公共)
inspectionResultService.updateHisDataAfterResultUpdate(jyjcInspectionResult.getApplicationNo());
// 发送数据刷新消息
inspectionResultService.sendDataRefreshMsg(Collections.singleton(record));
}
private void fillInspectionFields(JyjcInspectionResult jyjcInspectionResult, IdxBizJgInspectionDetectionInfo info) {
info.setInspectOrgName(jyjcInspectionResult.getInspectionTypeName());
info.setInspectType(jyjcInspectionResult.getInspectionType());
info.setRecord(jyjcInspectionResult.getEquipUnicode());
info.setInspectDate(jyjcInspectionResult.getInspectionDate());
info.setInspectStaff(getInspectUserName(jyjcInspectionResult));
info.setInspectStaffCode(jyjcInspectionResult.getInspector());
info.setInspectConclusion(jyjcInspectionResult.getInspectionConclusion());
info.setProblemRemark(jyjcInspectionResult.getNonConformance());
info.setNextInspectDate(jyjcInspectionResult.getNextInspectionDate());
info.setSequenceCode(jyjcInspectionResult.getEquipUnicode());
info.setInspectOrgCode(jyjcInspectionResult.getInspectionUnitCode());
info.setInspectReportNo(jyjcInspectionResult.getResultNo());
info.setRecDate(new Date());
}
private String getInspectUserName(JyjcInspectionResult model) {
List<TzsUserInfo> userInfos = commonService.getUserInfosByUnitCode(model.getInspectionUnitCode());
return userInfos.stream().filter(u -> model.getInspector().contains(u.getSequenceNbr() + "")).map(TzsUserInfo::getName).collect(Collectors.joining(","));
}
}
package com.yeejoin.amos.boot.module.jyjc.biz.event.listener.result;
public interface SupportableResultDataProcessor extends ResultDataProcessor{
boolean support(String equList);
}
package com.yeejoin.amos.boot.module.jyjc.biz.event.listener.service; package com.yeejoin.amos.boot.module.jyjc.biz.event.listener.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.boot.biz.common.utils.SnowflakeIdUtil;
import com.yeejoin.amos.boot.module.common.api.constant.TZSCommonConstant;
import com.yeejoin.amos.boot.module.common.biz.refresh.DataRefreshEvent;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResult; import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResult;
import com.yeejoin.amos.boot.module.jyjc.biz.event.publisher.BizEmqPublisher; import com.yeejoin.amos.boot.module.jyjc.biz.event.listener.result.ResultProcessorFactory;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.CommonServiceImpl; import lombok.RequiredArgsConstructor;
import com.yeejoin.amos.boot.module.ymt.api.entity.InspectionDetectionInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzsUserInfo;
import com.yeejoin.amos.boot.module.ymt.api.mapper.InspectionDetectionInfoMapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.typroject.tyboot.component.emq.EmqKeeper;
import java.nio.charset.StandardCharsets;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@Component @Component
@Slf4j @Slf4j
@RequiredArgsConstructor
public class InspectionDetectionInfoUpdateService { public class InspectionDetectionInfoUpdateService {
@Autowired private final ResultProcessorFactory resultProcessorFactory;
CommonServiceImpl commonService;
@Autowired
private SnowflakeIdUtil sequence;
@Autowired
InspectionDetectionInfoMapper inspectionDetectionInfoMapper;
@Autowired
BizEmqPublisher bizEmqPublisher;
@Autowired
private EmqKeeper emqKeeper;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void update(JyjcInspectionResult jyjcInspectionResult) { public void update(JyjcInspectionResult jyjcInspectionResult) {
InspectionDetectionInfo info = new InspectionDetectionInfo(); resultProcessorFactory.getProcessor(jyjcInspectionResult.getEquList()).process(jyjcInspectionResult);
QueryWrapper<InspectionDetectionInfo> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(InspectionDetectionInfo::getInspectReportNo, jyjcInspectionResult.getResultNo());
List<InspectionDetectionInfo> list = inspectionDetectionInfoMapper.selectList(wrapper);
String record;
if (CollectionUtils.isEmpty(list)) {
fillInspectionFields(jyjcInspectionResult, info);
info.setSequenceNbr(sequence.nextId() + "");
inspectionDetectionInfoMapper.insert(info);
record = info.getRecord();
bizEmqPublisher.sendInspectionMsgAfterSave(info, "insert");
} else {
info = list.get(0);
fillInspectionFields(jyjcInspectionResult, info);
inspectionDetectionInfoMapper.updateById(info);
record = info.getRecord();
bizEmqPublisher.sendInspectionMsgAfterSave(info, "update");
}
try {
emqKeeper.getMqttClient().publish(String.format(TZSCommonConstant.DATA_REFRESH_TOPIC, DataRefreshEvent.DataType.equipment.name(), DataRefreshEvent.Operation.UPDATE), JSONObject.toJSONString(Collections.singletonList(record)).getBytes(StandardCharsets.UTF_8), 2, false);
} catch (MqttException e) {
log.error("发送数据变更emq消息失败:{}", e.getMessage(), e);
}
} }
private void fillInspectionFields(JyjcInspectionResult jyjcInspectionResult, InspectionDetectionInfo info) {
info.setInspectOrgName(jyjcInspectionResult.getInspectionTypeName());
info.setInspectType(jyjcInspectionResult.getInspectionType());
info.setRecord(jyjcInspectionResult.getEquipUnicode());
info.setInspectDate(jyjcInspectionResult.getInspectionDate());
info.setInspectStaff(getInspectUserName(jyjcInspectionResult));
info.setInspectStaffCode(jyjcInspectionResult.getInspector());
info.setInspectConclusion(jyjcInspectionResult.getInspectionConclusion());
info.setProblemRemark(jyjcInspectionResult.getNonConformance());
info.setNextInspectDate(jyjcInspectionResult.getNextInspectionDate());
info.setSequenceCode(jyjcInspectionResult.getEquipUnicode());
info.setInspectOrgCode(jyjcInspectionResult.getInspectionUnitCode());
info.setInspectReportNo(jyjcInspectionResult.getResultNo());
info.setRecDate(new Date());
}
private String getInspectUserName(JyjcInspectionResult model) {
List<TzsUserInfo> userInfos = commonService.getUserInfosByUnitCode(model.getInspectionUnitCode());
return userInfos.stream().filter(u -> model.getInspector().contains(u.getSequenceNbr() + "")).map(TzsUserInfo::getName).collect(Collectors.joining(","));
}
} }
package com.yeejoin.amos.boot.module.jyjc.biz.event.publisher; package com.yeejoin.amos.boot.module.jyjc.biz.event.publisher;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.yeejoin.amos.boot.module.ymt.api.entity.InspectionDetectionInfo; import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgInspectionDetectionInfo;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.MqttException; import org.eclipse.paho.client.mqttv3.MqttException;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -15,6 +16,7 @@ import java.util.List; ...@@ -15,6 +16,7 @@ import java.util.List;
*/ */
@Component @Component
@Slf4j @Slf4j
@Getter
public class BizEmqPublisher { public class BizEmqPublisher {
private final EmqKeeper emqKeeper; private final EmqKeeper emqKeeper;
...@@ -29,14 +31,14 @@ public class BizEmqPublisher { ...@@ -29,14 +31,14 @@ public class BizEmqPublisher {
private static final String INSPECTION_DETECTION_SAVE_TO_DB_TOPIC_PREFIX = "safetyProblemTracing/jy/bj"; private static final String INSPECTION_DETECTION_SAVE_TO_DB_TOPIC_PREFIX = "safetyProblemTracing/jy/bj";
private static final String INSPECTION_DETECTION_SAVE_TO_DB_TOPIC_TYPE_UPDATE = "update"; private static final String INSPECTION_DETECTION_SAVE_TO_DB_TOPIC_TYPE_UPDATE = "update";
public void sendInspectionMsgAfterSave(InspectionDetectionInfo info, String type) { public void sendInspectionMsgAfterSave(IdxBizJgInspectionDetectionInfo info, String type) {
try { try {
if (emqKeeper.getMqttClient() == null) { if (emqKeeper.getMqttClient() == null) {
return; return;
} }
// 安全追溯目前只需要type=update的信息 // 安全追溯目前只需要type=update的信息
if (INSPECTION_DETECTION_SAVE_TO_DB_TOPIC_TYPE_UPDATE.equals(type)) { if (INSPECTION_DETECTION_SAVE_TO_DB_TOPIC_TYPE_UPDATE.equals(type)) {
List<InspectionDetectionInfo> list = new ArrayList<>(); List<IdxBizJgInspectionDetectionInfo> list = new ArrayList<>();
list.add(info); list.add(info);
emqKeeper.getMqttClient().publish(this.buildSave2DbEmqTopic(type), JSON.toJSONBytes(list), 2, false); emqKeeper.getMqttClient().publish(this.buildSave2DbEmqTopic(type), JSON.toJSONBytes(list), 2, false);
} }
......
...@@ -10,13 +10,12 @@ import org.springframework.stereotype.Component; ...@@ -10,13 +10,12 @@ import org.springframework.stereotype.Component;
*/ */
@Component @Component
public class EventPublisher { public class EventPublisher {
private ApplicationEventPublisher publisher; private final ApplicationEventPublisher publisher;
public EventPublisher(ApplicationEventPublisher publisher) { public EventPublisher(ApplicationEventPublisher publisher) {
this.publisher = publisher; this.publisher = publisher;
} }
@Async
public void publish(ApplicationEvent event) { public void publish(ApplicationEvent event) {
publisher.publishEvent(event); publisher.publishEvent(event);
} }
......
package com.yeejoin.amos.boot.module.jyjc.biz.service.impl; package com.yeejoin.amos.boot.module.jyjc.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
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;
...@@ -14,14 +14,22 @@ import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl; ...@@ -14,14 +14,22 @@ import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey; import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.common.api.constant.TZSCommonConstant; import com.yeejoin.amos.boot.module.common.api.constant.TZSCommonConstant;
import com.yeejoin.amos.boot.module.jg.api.entity.JgRegistrationHistory; 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.common.biz.refresh.DataRefreshEvent;
import com.yeejoin.amos.boot.module.jg.api.vo.SortVo; import com.yeejoin.amos.boot.module.jg.api.vo.SortVo;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplication;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionHistory; import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionHistory;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResult;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResultAttachment;
import com.yeejoin.amos.boot.module.jyjc.api.enums.OpenBizTypeEnum; import com.yeejoin.amos.boot.module.jyjc.api.enums.OpenBizTypeEnum;
import com.yeejoin.amos.boot.module.jyjc.api.enums.PersonTypeEnum; import com.yeejoin.amos.boot.module.jyjc.api.enums.PersonTypeEnum;
import com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcBaseMapper; import com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcBaseMapper;
import com.yeejoin.amos.boot.module.jyjc.api.model.InstanceRuntimeData; import com.yeejoin.amos.boot.module.jyjc.api.model.InstanceRuntimeData;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationModel;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionResultModel;
import com.yeejoin.amos.boot.module.ymt.api.dto.TzBaseEnterpriseInfoDto; import com.yeejoin.amos.boot.module.ymt.api.dto.TzBaseEnterpriseInfoDto;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgInspectionDetectionInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo; import com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzsUserInfo; import com.yeejoin.amos.boot.module.ymt.api.entity.TzsUserInfo;
import com.yeejoin.amos.boot.module.ymt.api.mapper.TzBaseEnterpriseInfoMapper; import com.yeejoin.amos.boot.module.ymt.api.mapper.TzBaseEnterpriseInfoMapper;
...@@ -30,8 +38,9 @@ import com.yeejoin.amos.component.feign.model.FeignClientResult; ...@@ -30,8 +38,9 @@ import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.privilege.Privilege; import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel; import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.CompanyModel; import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import com.yeejoin.amos.feign.systemctl.model.RegionModel; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.redisson.api.RBucket; import org.redisson.api.RBucket;
import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -41,14 +50,17 @@ import org.typroject.tyboot.core.foundation.context.RequestContext; ...@@ -41,14 +50,17 @@ import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest; import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.nio.charset.StandardCharsets;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
/** /**
* @author Administrator * @author Administrator
*/ */
@Service @Service
@Slf4j
public class CommonServiceImpl { public class CommonServiceImpl {
@Value("${jyjc.user-post:6615}") @Value("${jyjc.user-post:6615}")
...@@ -88,8 +100,18 @@ public class CommonServiceImpl { ...@@ -88,8 +100,18 @@ public class CommonServiceImpl {
@Resource @Resource
private JyjcInspectionHistoryServiceImpl inspectionHistoryService; private JyjcInspectionHistoryServiceImpl inspectionHistoryService;
@Resource
private ESEquipmentCategory esEquipmentCategory;
private static Map<Integer, RegionModel> regionCodeRegionMap = new ConcurrentHashMap<>(); /**
* 可发起单位的单位类型(角色与单位类型已绑定,在业务系统增加的账号不会出现角色与的单位类型不匹配场景)
*/
private final static String[] applyIdentityDefine = {"使用单位", "安装改造维修单位"};
/**
* 可进行检验检测申请接收的单位类型,在业务系统增加的账号不会出现角色与的单位类型不匹配场景
*/
private final static String[] receiveIdentityDefine = {"检验机构", "检测机构"};
/** /**
...@@ -121,7 +143,7 @@ public class CommonServiceImpl { ...@@ -121,7 +143,7 @@ public class CommonServiceImpl {
public void castPersonType2Post(LambdaQueryWrapper<TzsUserInfo> userInfoQueryWrapper, String personType) { public void castPersonType2Post(LambdaQueryWrapper<TzsUserInfo> userInfoQueryWrapper, String personType) {
if (personType.contains(PersonTypeEnum.jc.name()) && personType.contains(PersonTypeEnum.jy.name()) && personType.contains(PersonTypeEnum.charge.name())) { if (personType.contains(PersonTypeEnum.jc.name()) && personType.contains(PersonTypeEnum.jy.name()) && personType.contains(PersonTypeEnum.charge.name())) {
userInfoQueryWrapper.and(w-> w.like(TzsUserInfo::getPost, jyUserPost).or().like(TzsUserInfo::getPost, jcUserPost).or().like(TzsUserInfo::getPost, chargeUserPost)); userInfoQueryWrapper.and(w -> w.like(TzsUserInfo::getPost, jyUserPost).or().like(TzsUserInfo::getPost, jcUserPost).or().like(TzsUserInfo::getPost, chargeUserPost));
return; return;
} }
if (personType.equals(OpenBizTypeEnum.JY.getCode())) { if (personType.equals(OpenBizTypeEnum.JY.getCode())) {
...@@ -240,9 +262,6 @@ public class CommonServiceImpl { ...@@ -240,9 +262,6 @@ public class CommonServiceImpl {
} }
/** /**
* 撤回时校验流程是否已经执行 * 撤回时校验流程是否已经执行
* *
...@@ -350,12 +369,96 @@ public class CommonServiceImpl { ...@@ -350,12 +369,96 @@ public class CommonServiceImpl {
} }
public String getDictName(List<String> dictTypes, String dictKey) { public String getDictName(List<String> dictTypes, String dictKey) {
if(StringUtils.isEmpty(dictKey)){ if (StringUtils.isEmpty(dictKey)) {
return ""; return "";
} }
List<DataDictionary> dataDictionaries = dictionaryService.list(new LambdaQueryWrapper<DataDictionary>().in(DataDictionary::getType, dictTypes).select(BaseEntity::getSequenceNbr, DataDictionary::getName, DataDictionary::getCode)); List<DataDictionary> dataDictionaries = dictionaryService.list(new LambdaQueryWrapper<DataDictionary>().in(DataDictionary::getType, dictTypes).select(BaseEntity::getSequenceNbr, DataDictionary::getName, DataDictionary::getCode));
return dataDictionaries.stream().filter(d->d.getCode().equals(dictKey)).findFirst().map(DataDictionary::getName).orElse(""); return dataDictionaries.stream().filter(d -> d.getCode().equals(dictKey)).findFirst().map(DataDictionary::getName).orElse("");
}
public static String getCompanyIdentityByType(String companyType) {
boolean isApplyIdentityMatch = false;
boolean isReceiveIdentityMatch = false;
if (Arrays.stream(applyIdentityDefine).anyMatch(companyType::contains)) {
isApplyIdentityMatch = true;
}
if (Arrays.stream(receiveIdentityDefine).anyMatch(companyType::contains)) {
isReceiveIdentityMatch = true;
}
if (isApplyIdentityMatch && !isReceiveIdentityMatch) {
return "apply";
}
if (!isApplyIdentityMatch && isReceiveIdentityMatch) {
return "receive";
}
if (isApplyIdentityMatch) {
return "all";
}
return "no";
}
public void updateEquipNextInspectDate(JyjcInspectionResultModel model, String record) {
updateEsInspectDate(record, model.getNextInspectionDate());
}
public void updateEquipNextInspectDate(JyjcInspectionResult model, String record) {
updateEsInspectDate(record, model.getNextInspectionDate());
} }
private void updateEsInspectDate(String record, Date nextInspectionDate) {
if (nextInspectionDate != null) {
Optional<ESEquipmentCategoryDto> optional = esEquipmentCategory.findById(record);
if (optional.isPresent()) {
ESEquipmentCategoryDto esEquipmentCategoryDto = optional.get();
esEquipmentCategoryDto.setNEXT_INSPECT_DATE(nextInspectionDate.getTime());
esEquipmentCategory.save(esEquipmentCategoryDto);
}
}
}
public void buildInspectInfo(JyjcInspectionResultModel model, IdxBizJgInspectionDetectionInfo info, JyjcInspectionResultAttachment jybgFile, String record) {
info.setInspectOrgName(model.getInspectionUnitName());
info.setInspectType(model.getInspectionType());
info.setRecord(record);
info.setInspectDate(model.getInspectionDate());
info.setInspectStaff(getInspectUserName(model));
info.setInspectStaffCode(model.getInspector());
info.setInspectReport(jybgFile.getAttachmentUrl());
info.setInspectConclusion(model.getInspectionConclusion());
// json字段暂时注释
// info.setProblemRemark(model.getNonConformance());
info.setNextInspectDate(model.getNextInspectionDate());
info.setSequenceCode(record);
info.setInspectOrgCode(model.getInspectionUnitCode());
info.setInspectReportNo(model.getResultNo());
info.setRecDate(new Date());
}
public void buildInspectInfo(JyjcInspectionResult model, IdxBizJgInspectionDetectionInfo info, JyjcInspectionResultAttachment jybgFile, String record) {
info.setInspectOrgName(model.getInspectionUnitName());
info.setInspectType(model.getInspectionType());
info.setRecord(record);
info.setInspectDate(model.getInspectionDate());
info.setInspectStaff(getInspectUserName(model));
info.setInspectStaffCode(model.getInspector());
info.setInspectReport(jybgFile.getAttachmentUrl());
info.setInspectConclusion(model.getInspectionConclusion());
// json字段暂时注释
// info.setProblemRemark(model.getNonConformance());
info.setNextInspectDate(model.getNextInspectionDate());
info.setSequenceCode(record);
info.setInspectOrgCode(model.getInspectionUnitCode());
info.setInspectReportNo(model.getResultNo());
info.setRecDate(new Date());
}
private String getInspectUserName(JyjcInspectionResult model) {
List<TzsUserInfo> userInfos = this.getUserInfosByUnitCode(model.getInspectionUnitCode());
return userInfos.stream().filter(u -> model.getInspector().contains(u.getSequenceNbr() + "")).map(TzsUserInfo::getName).collect(Collectors.joining(","));
}
private String getInspectUserName(JyjcInspectionResultModel model) {
List<TzsUserInfo> userInfos = this.getUserInfosByUnitCode(model.getInspectionUnitCode());
return userInfos.stream().filter(u -> model.getInspector().contains(u.getSequenceNbr() + "")).map(TzsUserInfo::getName).collect(Collectors.joining(","));
}
} }
...@@ -36,25 +36,4 @@ public class JyjcInspectionApplicationPushLogServiceImpl extends BaseService<Jyj ...@@ -36,25 +36,4 @@ public class JyjcInspectionApplicationPushLogServiceImpl extends BaseService<Jyj
return this.queryForList("" , false); return this.queryForList("" , false);
} }
/**
* 记录日志
*
*
* @param params params
* @return {@link boolean}
* @author yangyang
* @throws
* @date 2023/12/15 15:53
*/
public boolean saveInspectionApplicationPushLog(Map<String, Object> params) {
JyjcInspectionApplicationModel inspectionApplicationModel = (JyjcInspectionApplicationModel) params.get("inspectionApplication");
List<JyjcInspectionApplicationEquipModel> applicationEquipModels = (List<JyjcInspectionApplicationEquipModel>) params.get("applicationEquips");
JyjcInspectionApplicationPushLog logEntity = new JyjcInspectionApplicationPushLog();
logEntity.setApplicationSeq(inspectionApplicationModel.getSequenceNbr());
logEntity.setInspectionUnitCode(inspectionApplicationModel.getInspectionUnitCode());
logEntity.setPushData(JSON.toJSONString(applicationEquipModels));
logEntity.setPushStatus("0");
return this.save(logEntity);
}
} }
\ No newline at end of file
...@@ -9,7 +9,6 @@ import com.alibaba.fastjson.JSONArray; ...@@ -9,7 +9,6 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo; import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
...@@ -24,6 +23,7 @@ import com.yeejoin.amos.boot.module.common.api.dto.AttachmentDto; ...@@ -24,6 +23,7 @@ import com.yeejoin.amos.boot.module.common.api.dto.AttachmentDto;
import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto; import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto;
import com.yeejoin.amos.boot.module.common.api.enums.JYJCBusinessTypeEnum; import com.yeejoin.amos.boot.module.common.api.enums.JYJCBusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.vo.SortVo; import com.yeejoin.amos.boot.module.jg.api.vo.SortVo;
import com.yeejoin.amos.boot.module.common.api.dto.ContraptionQueryParams;
import com.yeejoin.amos.boot.module.jyjc.api.entity.*; import com.yeejoin.amos.boot.module.jyjc.api.entity.*;
import com.yeejoin.amos.boot.module.jyjc.api.enums.*; import com.yeejoin.amos.boot.module.jyjc.api.enums.*;
import com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcBaseMapper; import com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcBaseMapper;
...@@ -37,6 +37,8 @@ import com.yeejoin.amos.boot.module.jyjc.biz.event.publisher.EventPublisher; ...@@ -37,6 +37,8 @@ import com.yeejoin.amos.boot.module.jyjc.biz.event.publisher.EventPublisher;
import com.yeejoin.amos.boot.module.jyjc.biz.feign.JgFeignClient; import com.yeejoin.amos.boot.module.jyjc.biz.feign.JgFeignClient;
import com.yeejoin.amos.boot.module.jyjc.biz.feign.TzsServiceFeignClient; import com.yeejoin.amos.boot.module.jyjc.biz.feign.TzsServiceFeignClient;
import com.yeejoin.amos.boot.module.jyjc.biz.service.TaskModelServiceImpl; import com.yeejoin.amos.boot.module.jyjc.biz.service.TaskModelServiceImpl;
import com.yeejoin.amos.boot.module.jyjc.biz.typeHandler.EquipCategoryTypeHandler;
import com.yeejoin.amos.boot.module.jyjc.biz.util.CompareUtils;
import com.yeejoin.amos.boot.module.ymt.api.dto.TzBaseEnterpriseInfoDto; import com.yeejoin.amos.boot.module.ymt.api.dto.TzBaseEnterpriseInfoDto;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgProjectConstruction; import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgProjectConstruction;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgProjectContraption; import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgProjectContraption;
...@@ -44,7 +46,6 @@ import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum; ...@@ -44,7 +46,6 @@ import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquimentEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.EquimentEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentClassifityEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentClassifityEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgProjectConstructionMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgProjectContraptionMapper; import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgProjectContraptionMapper;
import com.yeejoin.amos.feign.privilege.Privilege; import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.CompanyModel; import com.yeejoin.amos.feign.privilege.model.CompanyModel;
...@@ -167,6 +168,9 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec ...@@ -167,6 +168,9 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
@Resource @Resource
private JyjcInspectionHistoryServiceImpl inspectionHistoryService; private JyjcInspectionHistoryServiceImpl inspectionHistoryService;
@Resource
private EquipCategoryTypeHandler typeHandler;
@NotNull @NotNull
public static List<DictionarieModel> getDictionarieModels(String bizType) { public static List<DictionarieModel> getDictionarieModels(String bizType) {
...@@ -402,7 +406,7 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec ...@@ -402,7 +406,7 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
} }
private String getAllSupervisoryCode(List<JyjcInspectionApplicationEquip> equipInfos) { private String getAllSupervisoryCode(List<JyjcInspectionApplicationEquip> equipInfos) {
return equipInfos.stream().map(JyjcInspectionApplicationEquip::getSupervisoryCode).collect(Collectors.joining(",")); return equipInfos.stream().map(JyjcInspectionApplicationEquip::getSupervisoryCode).filter(supervisoryCode -> !CompareUtils.isNullOrEmpty(supervisoryCode)).collect(Collectors.joining(","));
} }
private void setEquipCategoryIfPieLine(JyjcInspectionApplicationModel model, JyjcInspectionApplicationEquip equipInfo, JyjcInspectionApplicationEquipDto equipDto) { private void setEquipCategoryIfPieLine(JyjcInspectionApplicationModel model, JyjcInspectionApplicationEquip equipInfo, JyjcInspectionApplicationEquipDto equipDto) {
...@@ -420,14 +424,10 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec ...@@ -420,14 +424,10 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
private String buildTaskContent(JyjcInspectionApplicationModel model) { private String buildTaskContent(JyjcInspectionApplicationModel model) {
String equListName = EquipmentClassifityEnum.getNameByCode(model.getEquipClassify()); String equListName = EquipmentClassifityEnum.getNameByCode(model.getEquipClassify());
return String.format("来自%s%s的业务办理,【申请单号:%s】", equListName, StringUtils.isNotBlank(model.getSupervisoryCode()) ? "【" + model.getSupervisoryCode() + "】" : "", model.getApplicationNo()); return String.format("来自%s%s的业务办理,【申请单号:%s】", equListName, !CompareUtils.isNullOrEmpty(model.getSupervisoryCode()) ? "【" + model.getSupervisoryCode() + "】" : "", model.getApplicationNo());
} }
private String null2String(Object obj) {
return obj == null ? "" : obj.toString();
}
private void setNameAndIsMustAccept(JyjcInspectionApplicationModel model) { private void setNameAndIsMustAccept(JyjcInspectionApplicationModel model) {
if (model.getInspectionUnitCode() != null) { if (model.getInspectionUnitCode() != null) {
String[] inspectionUnit = model.getInspectionUnitCode().split("_"); String[] inspectionUnit = model.getInspectionUnitCode().split("_");
...@@ -470,6 +470,7 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec ...@@ -470,6 +470,7 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
if (StringUtils.isNotEmpty(model.getInspectionType())) { if (StringUtils.isNotEmpty(model.getInspectionType())) {
model.setInspectionTypeName(getInspectionTypeName(model.getInspectionType())); model.setInspectionTypeName(getInspectionTypeName(model.getInspectionType()));
} }
model.setEquListName(typeHandler.handle(model.getEquList()));
return model; return model;
} }
...@@ -506,7 +507,7 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec ...@@ -506,7 +507,7 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
return new Page<>(0, 10, 0); return new Page<>(0, 10, 0);
} }
// 判断当前登录人身份(报检机构、接收机构、即时报检又是接收机构、都不是(不存在此情况)) // 判断当前登录人身份(报检机构、接收机构、即时报检又是接收机构、都不是(不存在此情况))
String identity = this.getCompanyIdentityByType(reginParams.getCompany().getCompanyType()); String identity = CommonServiceImpl.getCompanyIdentityByType(reginParams.getCompany().getCompanyType());
if (ValidationUtil.equals("apply", identity)) { if (ValidationUtil.equals("apply", identity)) {
currentApplicationUnitCode = companyCode; currentApplicationUnitCode = companyCode;
} }
...@@ -543,30 +544,6 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec ...@@ -543,30 +544,6 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
ExcelUtil.createTemplate(response, typeName + "数据", typeName, exportData, JyjcInspectionApplicationVo.class, null, false); ExcelUtil.createTemplate(response, typeName + "数据", typeName, exportData, JyjcInspectionApplicationVo.class, null, false);
} }
private String getCompanyIdentityByType(String companyType) {
// 可发起单位的单位类型(角色与单位类型已绑定,在业务系统增加的账号不会出现角色与的单位类型不匹配场景)
String[] applyIdentityDefine = {"使用单位", "安装改造维修单位"};
// 可进行检验检测申请接收的单位类型,在业务系统增加的账号不会出现角色与的单位类型不匹配场景
String[] receiveIdentityDefine = {"检验检测机构"};
boolean isApplyIdentityMatch = false;
boolean isReceiveIdentityMatch = false;
if (Arrays.stream(applyIdentityDefine).anyMatch(companyType::contains)) {
isApplyIdentityMatch = true;
}
if (Arrays.stream(receiveIdentityDefine).anyMatch(companyType::contains)) {
isReceiveIdentityMatch = true;
}
if (isApplyIdentityMatch && !isReceiveIdentityMatch) {
return "apply";
}
if (!isApplyIdentityMatch && isReceiveIdentityMatch) {
return "receive";
}
if (isApplyIdentityMatch) {
return "all";
}
return "no";
}
/** /**
* 列表查询 示例 * 列表查询 示例
...@@ -848,9 +825,9 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec ...@@ -848,9 +825,9 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
} }
} }
private void pushInspectionApplication(JyjcInspectionApplicationModel inspectionApplicationModel) { public void pushInspectionApplication(JyjcInspectionApplicationModel inspectionApplicationModel) {
// 将检验检测申请信息推送至对应的检验机构 // 将检验检测申请信息推送至对应的检验机构
if (inspectionApplicationModel.getResultType().equals(ResultTypeEnum.INTEGRATED.getCode())) { if (ResultTypeEnum.INTEGRATED.getCode().equals(inspectionApplicationModel.getResultType())) {
InspectionApplicationPushEvent event = new InspectionApplicationPushEvent(this, inspectionApplicationModel); InspectionApplicationPushEvent event = new InspectionApplicationPushEvent(this, inspectionApplicationModel);
eventPublisher.publish(event); eventPublisher.publish(event);
} }
...@@ -1533,13 +1510,13 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec ...@@ -1533,13 +1510,13 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
return getDictionarieModels(bizType); return getDictionarieModels(bizType);
} }
public IPage<IdxBizJgProjectContraption> getJgProjectContraptionPage(String inspectionType, Page<IdxBizJgProjectContraption> page, String companyCode, String equCategory) { public IPage<IdxBizJgProjectContraption> getJgProjectContraptionPage(ContraptionQueryParams queryParams, Page<IdxBizJgProjectContraption> page, String companyCode) {
// 兼容个人业务 // 兼容个人业务
if (companyCode.contains("_")) { if (companyCode.contains("_")) {
companyCode = companyCode.split("_")[1]; companyCode = companyCode.split("_")[1];
} }
// 定期检验,查询当前使用单位,工业管道: 查询当前使用单位下已纳管且有使用登记证的装置,且非流程中的 ;公用管道、长输管道:已纳管且做过检验的,且非流程中的 // 定期检验,查询当前使用单位,工业管道: 查询当前使用单位下已纳管且有使用登记证的装置,且非流程中的 ;公用管道、长输管道:已纳管且做过检验的,且非流程中的
return idxBizJgProjectContraptionMapper.queryJgProjectContraptionPage(page, inspectionType, companyCode, equCategory); return idxBizJgProjectContraptionMapper.queryJgProjectContraptionPage(page, queryParams, companyCode);
} }
...@@ -1582,13 +1559,17 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec ...@@ -1582,13 +1559,17 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
*/ */
public JSONObject getDeviceListByProjectContraption2(JyjcInspectionApplicationModel applicationModel) { public JSONObject getDeviceListByProjectContraption2(JyjcInspectionApplicationModel applicationModel) {
IdxBizJgProjectContraption projectContraption = idxBizJgProjectContraptionMapper.selectById(applicationModel.getProjectContraptionId()); IdxBizJgProjectContraption projectContraption = idxBizJgProjectContraptionMapper.selectById(applicationModel.getProjectContraptionId());
List<JyjcInspectionApplicationEquipModel> applicationEquipModels = applicationEquipService.listApplicationEquipByApplicationSeq(applicationModel.getSequenceNbr()); List<Map<String, Object>> equList = getPipelines(applicationModel);
List<String> records = applicationEquipModels.stream().map(JyjcInspectionApplicationEquipModel::getEquipUnicode).collect(Collectors.toList());
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
List<Map<String, Object>> equList = this.getBaseMapper().selectPieLineListOfInspect(records);
return setPieLineInfo(applicationModel, projectContraption, jsonObject, equList); return setPieLineInfo(applicationModel, projectContraption, jsonObject, equList);
} }
public List<Map<String, Object>> getPipelines(JyjcInspectionApplicationModel applicationModel) {
List<JyjcInspectionApplicationEquipModel> applicationEquipModels = applicationEquipService.listApplicationEquipByApplicationSeq(applicationModel.getSequenceNbr());
List<String> records = applicationEquipModels.stream().map(JyjcInspectionApplicationEquipModel::getEquipUnicode).collect(Collectors.toList());
return this.getBaseMapper().selectPieLineListOfInspect(records);
}
@NotNull @NotNull
private JSONObject setPieLineInfo(JyjcInspectionApplicationModel applicationModel, IdxBizJgProjectContraption projectContraption, JSONObject jsonObject, List<Map<String, Object>> equList) { private JSONObject setPieLineInfo(JyjcInspectionApplicationModel applicationModel, IdxBizJgProjectContraption projectContraption, JSONObject jsonObject, List<Map<String, Object>> equList) {
jsonObject.put("equip", equList); jsonObject.put("equip", equList);
......
...@@ -39,4 +39,11 @@ public class JyjcInspectionResultAttachmentServiceImpl extends BaseService<JyjcI ...@@ -39,4 +39,11 @@ public class JyjcInspectionResultAttachmentServiceImpl extends BaseService<JyjcI
wrapper.eq(JyjcInspectionResultAttachment::getResultSeq, resultSeq); wrapper.eq(JyjcInspectionResultAttachment::getResultSeq, resultSeq);
return this.baseMapper.selectList(wrapper); return this.baseMapper.selectList(wrapper);
} }
public JyjcInspectionResultAttachment getOneByUniKey(Long resultSeq, String attachmentType) {
LambdaQueryWrapper<JyjcInspectionResultAttachment> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(JyjcInspectionResultAttachment::getResultSeq, resultSeq);
wrapper.likeLeft(JyjcInspectionResultAttachment::getAttachmentType, attachmentType);
return this.baseMapper.selectOne(wrapper);
}
} }
\ No newline at end of file
...@@ -20,13 +20,12 @@ import com.yeejoin.amos.boot.biz.common.utils.RedisKey; ...@@ -20,13 +20,12 @@ import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.biz.common.utils.SnowflakeIdUtil; import com.yeejoin.amos.boot.biz.common.utils.SnowflakeIdUtil;
import com.yeejoin.amos.boot.module.common.api.constant.TZSCommonConstant; import com.yeejoin.amos.boot.module.common.api.constant.TZSCommonConstant;
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.common.biz.refresh.DataRefreshEvent; import com.yeejoin.amos.boot.module.common.biz.refresh.DataRefreshEvent;
import com.yeejoin.amos.boot.module.jg.api.dto.DynamicColumnDto; import com.yeejoin.amos.boot.module.jg.api.dto.DynamicColumnDto;
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.vo.SortVo; import com.yeejoin.amos.boot.module.jg.api.vo.SortVo;
import com.yeejoin.amos.boot.module.jyjc.api.common.StringUtil; import com.yeejoin.amos.boot.module.jyjc.api.common.StringUtil;
import com.yeejoin.amos.boot.module.jyjc.api.dto.PipelineInspectionResultDto;
import com.yeejoin.amos.boot.module.jyjc.api.entity.*; import com.yeejoin.amos.boot.module.jyjc.api.entity.*;
import com.yeejoin.amos.boot.module.jyjc.api.enums.*; import com.yeejoin.amos.boot.module.jyjc.api.enums.*;
import com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionResultMapper; import com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionResultMapper;
...@@ -38,7 +37,7 @@ import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionResultParamS ...@@ -38,7 +37,7 @@ import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionResultParamS
import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionResultService; import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionResultService;
import com.yeejoin.amos.boot.module.jyjc.api.vo.JyjcInspectionResultVo; import com.yeejoin.amos.boot.module.jyjc.api.vo.JyjcInspectionResultVo;
import com.yeejoin.amos.boot.module.jyjc.biz.event.InspectionDetectionSaveToDbEvent; import com.yeejoin.amos.boot.module.jyjc.biz.event.InspectionDetectionSaveToDbEvent;
import com.yeejoin.amos.boot.module.jyjc.biz.event.UseInfoSaveToDbEvent; import com.yeejoin.amos.boot.module.jyjc.biz.event.listener.result.BatchEquipResultDataProcessor;
import com.yeejoin.amos.boot.module.jyjc.biz.event.publisher.BizEmqPublisher; import com.yeejoin.amos.boot.module.jyjc.biz.event.publisher.BizEmqPublisher;
import com.yeejoin.amos.boot.module.jyjc.biz.event.publisher.EventPublisher; import com.yeejoin.amos.boot.module.jyjc.biz.event.publisher.EventPublisher;
import com.yeejoin.amos.boot.module.jyjc.biz.feign.TzsServiceFeignClient; import com.yeejoin.amos.boot.module.jyjc.biz.feign.TzsServiceFeignClient;
...@@ -90,7 +89,6 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -90,7 +89,6 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
private static final String JYJC_SUBMIT_FILE_JYBG = "JYBG"; private static final String JYJC_SUBMIT_FILE_JYBG = "JYBG";
private static final String JYJC_SUBMIT_KEY = "inspectResult"; private static final String JYJC_SUBMIT_KEY = "inspectResult";
private static final String EQU_LIST = "equip"; private static final String EQU_LIST = "equip";
private static final String JYJC_RESULT_STATUS = "2"; private static final String JYJC_RESULT_STATUS = "2";
@Autowired @Autowired
...@@ -115,7 +113,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -115,7 +113,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
UseInfoMapper useInfoMapper; UseInfoMapper useInfoMapper;
@Autowired @Autowired
InspectionDetectionInfoMapper inspectionDetectionInfoMapper; IdxBizJgInspectionDetectionInfoMapper inspectionDetectionInfoMapper;
@Autowired @Autowired
private SnowflakeIdUtil sequence; private SnowflakeIdUtil sequence;
...@@ -133,9 +131,6 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -133,9 +131,6 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
BizEmqPublisher bizEmqPublisher; BizEmqPublisher bizEmqPublisher;
@Autowired @Autowired
private ESEquipmentCategory esEquipmentCategory;
@Autowired
@Lazy @Lazy
JyjcInspectionApplicationServiceImpl inspectionApplicationService; JyjcInspectionApplicationServiceImpl inspectionApplicationService;
...@@ -146,7 +141,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -146,7 +141,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
private ObjectMapper objectMapper; private ObjectMapper objectMapper;
@Autowired @Autowired
private EquipTechParamPipelineMapper techParamPipelineMapper; private IdxBizJgTechParamsPipelineMapper techParamPipelineMapper;
@Autowired @Autowired
TzsServiceFeignClient tzsServiceFeignClient; TzsServiceFeignClient tzsServiceFeignClient;
...@@ -163,6 +158,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -163,6 +158,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
@Autowired @Autowired
private EmqKeeper emqKeeper; private EmqKeeper emqKeeper;
/** /**
* 检验检测单位分页查询 * 检验检测单位分页查询
*/ */
...@@ -199,7 +195,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -199,7 +195,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
model = new JyjcInspectionResultModel(); model = new JyjcInspectionResultModel();
} }
// 判断当前登录人身份(报检机构、接收机构、即时报检又是接收机构、都不是(不存在此情况)) // 判断当前登录人身份(报检机构、接收机构、即时报检又是接收机构、都不是(不存在此情况))
String identity = this.getCompanyIdentityByType(reginParams.getCompany().getCompanyType()); String identity = CommonServiceImpl.getCompanyIdentityByType(reginParams.getCompany().getCompanyType());
model.setCompanyCode(reginParams.getCompany().getCompanyCode()); model.setCompanyCode(reginParams.getCompany().getCompanyCode());
Page<JyjcInspectionResultModel> resultPage = resultMapper.selectForPage(page, model, identity, sortMap); Page<JyjcInspectionResultModel> resultPage = resultMapper.selectForPage(page, model, identity, sortMap);
resultPage.getRecords().forEach(v -> { resultPage.getRecords().forEach(v -> {
...@@ -215,30 +211,6 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -215,30 +211,6 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
return resultPage; return resultPage;
} }
private String getCompanyIdentityByType(String companyType) {
// 可发起单位的单位类型(角色与单位类型已绑定,在业务系统增加的账号不会出现角色与的单位类型不匹配场景)
String[] applyIdentityDefine = {"使用单位", "安装改造维修单位"};
// 可进行检验检测申请接收的单位类型,在业务系统增加的账号不会出现角色与的单位类型不匹配场景
String[] receiveIdentityDefine = {"检验检测机构"};
boolean isApplyIdentityMatch = false;
boolean isReceiveIdentityMatch = false;
if (Arrays.stream(applyIdentityDefine).anyMatch(companyType::contains)) {
isApplyIdentityMatch = true;
}
if (Arrays.stream(receiveIdentityDefine).anyMatch(companyType::contains)) {
isReceiveIdentityMatch = true;
}
if (isApplyIdentityMatch && !isReceiveIdentityMatch) {
return "apply";
}
if (!isApplyIdentityMatch && isReceiveIdentityMatch) {
return "receive";
}
if (isApplyIdentityMatch) {
return "all";
}
return "no";
}
static String getPersonIdentityByType(String companyType) { static String getPersonIdentityByType(String companyType) {
if ("使用单位".equals(companyType)) { if ("使用单位".equals(companyType)) {
...@@ -251,6 +223,10 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -251,6 +223,10 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
} }
public JyjcInspectionResultAttachment getReportAttachment(Long resultSeq){
return Optional.ofNullable(attachmentService.getOneByUniKey(resultSeq, JYJC_SUBMIT_FILE_JYBG)).orElse(new JyjcInspectionResultAttachment());
}
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public JyjcInspectionResultModel updateJyjcInspectionResult(Map<String, Map<String, Object>> tableModel) { public JyjcInspectionResultModel updateJyjcInspectionResult(Map<String, Map<String, Object>> tableModel) {
...@@ -325,12 +301,12 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -325,12 +301,12 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
// 更新使用信息、检验信息、技术参数 // 更新使用信息、检验信息、技术参数
Set<String> records = this.updateTechParamAndInspectInfo(dbResultModel, jybgFile); Set<String> records = this.updateTechParamAndInspectInfo(dbResultModel, jybgFile);
// 更新单据信息的json(公共) // 更新单据信息的json(公共)
this.updateHisDataAfterResultUpdate(dbResultModel); this.updateHisDataAfterResultUpdate(dbResultModel.getApplicationNo());
sendDataRefreshMsg(records); sendDataRefreshMsg(records);
return dbResultModel; return dbResultModel;
} }
private void sendDataRefreshMsg(Set<String> records) { public void sendDataRefreshMsg(Set<String> records) {
try { try {
emqKeeper.getMqttClient().publish(String.format(TZSCommonConstant.DATA_REFRESH_TOPIC, DataRefreshEvent.DataType.equipment.name(), DataRefreshEvent.Operation.UPDATE), JSONObject.toJSONString(new ArrayList<>(records)).getBytes(StandardCharsets.UTF_8), 2, false); emqKeeper.getMqttClient().publish(String.format(TZSCommonConstant.DATA_REFRESH_TOPIC, DataRefreshEvent.DataType.equipment.name(), DataRefreshEvent.Operation.UPDATE), JSONObject.toJSONString(new ArrayList<>(records)).getBytes(StandardCharsets.UTF_8), 2, false);
} catch (MqttException e) { } catch (MqttException e) {
...@@ -339,9 +315,9 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -339,9 +315,9 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
} }
private Set<String> updateTechParamAndInspectInfo(JyjcInspectionResultModel model, JyjcInspectionResultAttachment jybgFile){ private Set<String> updateTechParamAndInspectInfo(JyjcInspectionResultModel model, JyjcInspectionResultAttachment jybgFile) {
Set<String> records = new HashSet<>(); Set<String> records = new HashSet<>();
if(model.getEquList().equals(EquipmentClassifityEnum.YLGD.getCode())){ if (model.getEquList().equals(EquipmentClassifityEnum.YLGD.getCode())) {
// 管道逻辑: 循环更新技术参数、检验信息更新或者插入、使用信息更新(数据库及es) // 管道逻辑: 循环更新技术参数、检验信息更新或者插入、使用信息更新(数据库及es)
JyjcInspectionResultParam param = iJyjcInspectionResultParamService.getOneParamByResultSeq(model.getSequenceNbr()); JyjcInspectionResultParam param = iJyjcInspectionResultParamService.getOneParamByResultSeq(model.getSequenceNbr());
if (!ObjectUtils.isEmpty(param.getParamJson())) { if (!ObjectUtils.isEmpty(param.getParamJson())) {
...@@ -352,35 +328,21 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -352,35 +328,21 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
new TypeReference<ArrayList<Map<String, Object>>>() { new TypeReference<ArrayList<Map<String, Object>>>() {
} }
); );
equips.forEach(e->{ equips.forEach(e -> {
String record = String.valueOf(e.get("record")); String record = String.valueOf(e.get("record"));
records.add(record); records.add(record);
// 1.更新管道的技术参数 // 1.更新管道的技术参数
EquipTechParamPipeline techParamPipeline = new EquipTechParamPipeline(); doUpdatePipelineTechParams(e, record, techParamPipelineMapper);
BeanUtil.copyProperties(e, techParamPipeline,true);
LambdaUpdateWrapper<EquipTechParamPipeline> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(AbstractEquipBaseEntity::getRecord, record);
updateWrapper.set(EquipTechParamPipeline::getNominalDiameter, techParamPipeline.getNominalDiameter());
updateWrapper.set(EquipTechParamPipeline::getWallThickness, techParamPipeline.getWallThickness());
updateWrapper.set(EquipTechParamPipeline::getPipeLength, techParamPipeline.getPipeLength());
updateWrapper.set(EquipTechParamPipeline::getPressure, techParamPipeline.getPressure());
updateWrapper.set(EquipTechParamPipeline::getTemperature, techParamPipeline.getTemperature());
updateWrapper.set(EquipTechParamPipeline::getMedium, techParamPipeline.getMedium());
updateWrapper.set(EquipTechParamPipeline::getWorkMedium, techParamPipeline.getWorkMedium());
updateWrapper.set(EquipTechParamPipeline::getWorkPressure, techParamPipeline.getWorkPressure());
updateWrapper.set(EquipTechParamPipeline::getWorkTemperature, techParamPipeline.getWorkTemperature());
updateWrapper.set(EquipTechParamPipeline::getRemarks, techParamPipeline.getRemarks());
techParamPipelineMapper.update(null,updateWrapper);
// 2.检验信息更新或者插入 // 2.检验信息更新或者插入
InspectionDetectionInfo info = new InspectionDetectionInfo(); IdxBizJgInspectionDetectionInfo info = new IdxBizJgInspectionDetectionInfo();
LambdaQueryWrapper<InspectionDetectionInfo> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<IdxBizJgInspectionDetectionInfo> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(InspectionDetectionInfo::getInspectReportNo, model.getResultNo()); wrapper.eq(IdxBizJgInspectionDetectionInfo::getInspectReportNo, model.getResultNo());
wrapper.eq(InspectionDetectionInfo::getRecord, record); wrapper.eq(IdxBizJgInspectionDetectionInfo::getRecord, record);
wrapper.eq(InspectionDetectionInfo::getInspectOrgCode, model.getInspectionUnitCode()); wrapper.eq(IdxBizJgInspectionDetectionInfo::getInspectOrgCode, model.getInspectionUnitCode());
List<InspectionDetectionInfo> list = inspectionDetectionInfoMapper.selectList(wrapper); List<IdxBizJgInspectionDetectionInfo> list = inspectionDetectionInfoMapper.selectList(wrapper);
if (CollectionUtils.isEmpty(list)) { if (CollectionUtils.isEmpty(list)) {
// 无则插入 // 无则插入
extracted(model, info, jybgFile, record); commonService.buildInspectInfo(model, info, jybgFile, record);
info.setSequenceNbr(sequence.nextId() + ""); info.setSequenceNbr(sequence.nextId() + "");
inspectionDetectionInfoMapper.insert(info); inspectionDetectionInfoMapper.insert(info);
// 对方不查询库 所以无事务操作 // 对方不查询库 所以无事务操作
...@@ -388,7 +350,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -388,7 +350,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
} else { } else {
// 已经维护过则更新 // 已经维护过则更新
info = list.get(0); info = list.get(0);
extracted(model, info, jybgFile, record); commonService.buildInspectInfo(model, info, jybgFile, record);
inspectionDetectionInfoMapper.updateById(info); inspectionDetectionInfoMapper.updateById(info);
// 对方不查询库 所以无事务操作 // 对方不查询库 所以无事务操作
bizEmqPublisher.sendInspectionMsgAfterSave(info, "update"); bizEmqPublisher.sendInspectionMsgAfterSave(info, "update");
...@@ -396,7 +358,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -396,7 +358,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
// 3.更新使用信息表,最新检验信息 // 3.更新使用信息表,最新检验信息
useInfoMapper.updateByRecord(record, model.getNextInspectionDate(), model.getInspectionType(), model.getApplicationNo()); useInfoMapper.updateByRecord(record, model.getNextInspectionDate(), model.getInspectionType(), model.getApplicationNo());
// 4.更新es下次检验日期 // 4.更新es下次检验日期
this.updateEquipNextInspectDate(model, record); commonService.updateEquipNextInspectDate(model, record);
}); });
} catch (JsonProcessingException e) { } catch (JsonProcessingException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
...@@ -410,7 +372,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -410,7 +372,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
if (param != null) { if (param != null) {
if (!ObjectUtils.isEmpty(param.getParamJson())) { if (!ObjectUtils.isEmpty(param.getParamJson())) {
JSONObject paramObj = JSON.parseObject(param.getParamJson()); JSONObject paramObj = JSON.parseObject(param.getParamJson());
paramObj.forEach((k,v)->{ paramObj.forEach((k, v) -> {
DynamicColumnDto columnDto = new DynamicColumnDto(); DynamicColumnDto columnDto = new DynamicColumnDto();
columnDto.setColumnName(String.format("\"%s\"", StrUtil.toUnderlineCase(k).toUpperCase())); columnDto.setColumnName(String.format("\"%s\"", StrUtil.toUnderlineCase(k).toUpperCase()));
columnDto.setColumnValue(v == null ? null : String.valueOf(v)); columnDto.setColumnValue(v == null ? null : String.valueOf(v));
...@@ -421,19 +383,19 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -421,19 +383,19 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
} }
} }
// 2.检验信息更新或者插入 // 2.检验信息更新或者插入
InspectionDetectionInfo info = new InspectionDetectionInfo(); IdxBizJgInspectionDetectionInfo info = new IdxBizJgInspectionDetectionInfo();
QueryWrapper<InspectionDetectionInfo> wrapper = new QueryWrapper<>(); QueryWrapper<IdxBizJgInspectionDetectionInfo> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(InspectionDetectionInfo::getInspectReportNo, model.getResultNo()); wrapper.lambda().eq(IdxBizJgInspectionDetectionInfo::getResultSeq, model.getSequenceNbr());
List<InspectionDetectionInfo> list = inspectionDetectionInfoMapper.selectList(wrapper); List<IdxBizJgInspectionDetectionInfo> list = inspectionDetectionInfoMapper.selectList(wrapper);
if (CollectionUtils.isEmpty(list)) { if (CollectionUtils.isEmpty(list)) {
extracted(model, info, jybgFile, model.getEquipUnicode()); commonService.buildInspectInfo(model, info, jybgFile, model.getEquipUnicode());
info.setSequenceNbr(sequence.nextId() + ""); info.setSequenceNbr(sequence.nextId() + "");
inspectionDetectionInfoMapper.insert(info); inspectionDetectionInfoMapper.insert(info);
// 对方不查询库 所以无事务操作 // 对方不查询库 所以无事务操作
bizEmqPublisher.sendInspectionMsgAfterSave(info, "insert"); bizEmqPublisher.sendInspectionMsgAfterSave(info, "insert");
} else { } else {
info = list.get(0); info = list.get(0);
extracted(model, info, jybgFile, model.getEquipUnicode()); commonService.buildInspectInfo(model, info, jybgFile, model.getEquipUnicode());
inspectionDetectionInfoMapper.updateById(info); inspectionDetectionInfoMapper.updateById(info);
// 对方不查询库 所以无事务操作 // 对方不查询库 所以无事务操作
bizEmqPublisher.sendInspectionMsgAfterSave(info, "update"); bizEmqPublisher.sendInspectionMsgAfterSave(info, "update");
...@@ -441,7 +403,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -441,7 +403,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
// 3.更新使用信息表最新的检验信息 // 3.更新使用信息表最新的检验信息
useInfoMapper.updateByRecord(model.getEquipUnicode(), model.getNextInspectionDate(), model.getInspectionType(), model.getApplicationNo()); useInfoMapper.updateByRecord(model.getEquipUnicode(), model.getNextInspectionDate(), model.getInspectionType(), model.getApplicationNo());
// 4.es更新下次检验日期 // 4.es更新下次检验日期
this.updateEquipNextInspectDate(model, model.getEquipUnicode()); commonService.updateEquipNextInspectDate(model, model.getEquipUnicode());
records.add(model.getEquipUnicode()); records.add(model.getEquipUnicode());
} }
return records; return records;
...@@ -451,45 +413,11 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -451,45 +413,11 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
return String.format("\"%s\"", StrUtil.toUnderlineCase(paramType)); return String.format("\"%s\"", StrUtil.toUnderlineCase(paramType));
} }
private void updateHisDataAfterResultUpdate(JyjcInspectionResultModel model) { public void updateHisDataAfterResultUpdate(String applicationNo) {
JyjcInspectionApplication application = inspectionApplicationService.getOne(new LambdaQueryWrapper<JyjcInspectionApplication>().eq(JyjcInspectionApplication::getApplicationNo, model.getApplicationNo())); JyjcInspectionApplication application = inspectionApplicationService.getOne(new LambdaQueryWrapper<JyjcInspectionApplication>().eq(JyjcInspectionApplication::getApplicationNo,applicationNo));
inspectionApplicationService.createHisAfterReceive(BeanUtil.copyProperties(application, JyjcInspectionApplicationModel.class)); inspectionApplicationService.createHisAfterReceive(BeanUtil.copyProperties(application, JyjcInspectionApplicationModel.class));
} }
private void updateEquipNextInspectDate(JyjcInspectionResultModel model, String record) {
if (model.getNextInspectionDate() != null) {
Optional<ESEquipmentCategoryDto> optional = esEquipmentCategory.findById(record);
if (optional.isPresent()) {
ESEquipmentCategoryDto esEquipmentCategoryDto = optional.get();
esEquipmentCategoryDto.setNEXT_INSPECT_DATE(model.getNextInspectionDate().getTime());
esEquipmentCategory.save(esEquipmentCategoryDto);
}
}
}
private void extracted(JyjcInspectionResultModel model, InspectionDetectionInfo info, JyjcInspectionResultAttachment jybgFile, String record) {
info.setInspectOrgName(model.getInspectionUnitName());
info.setInspectType(model.getInspectionType());
info.setRecord(record);
info.setInspectDate(model.getInspectionDate());
info.setInspectStaff(getInspectUserName(model));
info.setInspectStaffCode(model.getInspector());
info.setInspectReport(jybgFile.getAttachmentUrl());
info.setInspectConclusion(model.getInspectionConclusion());
// json字段暂时注释
// info.setProblemRemark(model.getNonConformance());
info.setNextInspectDate(model.getNextInspectionDate());
info.setSequenceCode(record);
info.setInspectOrgCode(model.getInspectionUnitCode());
info.setInspectReportNo(model.getResultNo());
info.setRecDate(new Date());
}
private String getInspectUserName(JyjcInspectionResultModel model) {
List<TzsUserInfo> userInfos = commonService.getUserInfosByUnitCode(model.getInspectionUnitCode());
return userInfos.stream().filter(u -> model.getInspector().contains(u.getSequenceNbr() + "")).map(TzsUserInfo::getName).collect(Collectors.joining(","));
}
/** /**
* 列表查询 示例 * 列表查询 示例
*/ */
...@@ -571,7 +499,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -571,7 +499,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
// 1.数据合法性检查 // 1.数据合法性检查
this.checkMustFieldIsValid(resultDataModels); this.checkMustFieldIsValid(resultDataModels);
// 2.组织数据 // 2.组织数据
List<JyjcInspectionResult> resultList = queryResultList(resultDataModels); List<JyjcInspectionResult> resultList = queryResultList(resultDataModels.stream().map(JyjcInspectionResultDataModel::getApplicationNo).collect(Collectors.toList()));
// key为{record}, value为{JyjcInspectionResult},首次检验时,设备无监管码,用record作为设备标识,可适用与所有的检验结果的接收 // key为{record}, value为{JyjcInspectionResult},首次检验时,设备无监管码,用record作为设备标识,可适用与所有的检验结果的接收
Map<String, JyjcInspectionResult> recordResultMap = getRecordKeyResultMap(resultList); Map<String, JyjcInspectionResult> recordResultMap = getRecordKeyResultMap(resultList);
// key为{supervisoryCode}, value为{JyjcInspectionResult} ,适用于非首次检验之外的检验结果接收 // key为{supervisoryCode}, value为{JyjcInspectionResult} ,适用于非首次检验之外的检验结果接收
...@@ -580,8 +508,8 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -580,8 +508,8 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
List<JyjcInspectionResultAttachment> resultAttachments = new ArrayList<>(); List<JyjcInspectionResultAttachment> resultAttachments = new ArrayList<>();
List<JyjcInspectionResultParam> resultParams = new ArrayList<>(); List<JyjcInspectionResultParam> resultParams = new ArrayList<>();
resultDataModels.forEach(r -> { resultDataModels.forEach(r -> {
JyjcInspectionResult result = this.getJyjcInspectionResult(r,recordResultMap, superviseCodeKeyResultMap); JyjcInspectionResult result = this.getJyjcInspectionResult(r, recordResultMap, superviseCodeKeyResultMap);
if(result != null) { if (result != null) {
// 填充主表数据 // 填充主表数据
this.fillResultData(r, result, updateResultList); this.fillResultData(r, result, updateResultList);
// 填充附件数据 // 填充附件数据
...@@ -591,14 +519,12 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -591,14 +519,12 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
} }
}); });
// 3.数据入库 // 3.数据入库
if(!updateResultList.isEmpty()){ if (!updateResultList.isEmpty()) {
// 3.1 批量保存主表数据 // 3.1 批量保存主表数据
this.updateBatchById(updateResultList); this.updateBatchById(updateResultList);
// 3.2 批量保存子表数据 // 3.2 批量保存子表数据
deleteAndCreateSubTable(updateResultList, resultAttachments, resultParams); deleteAndCreateSubTable(updateResultList, resultAttachments, resultParams);
// 3.3 异步更新最新一次检验信息 // 3.4 异步更新设备的检验检测信息
eventPublisher.publish(new UseInfoSaveToDbEvent(this, new ArrayList<>(updateResultList)));
// 4.4 异步更新设备的检验检测信息
eventPublisher.publish(new InspectionDetectionSaveToDbEvent(this, new ArrayList<>(updateResultList))); eventPublisher.publish(new InspectionDetectionSaveToDbEvent(this, new ArrayList<>(updateResultList)));
} }
return resultDataModels; return resultDataModels;
...@@ -606,28 +532,27 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -606,28 +532,27 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
private void checkMustFieldIsValid(List<JyjcInspectionResultDataModel> resultDataModels) { private void checkMustFieldIsValid(List<JyjcInspectionResultDataModel> resultDataModels) {
int i = 0; int i = 0;
for(JyjcInspectionResultDataModel resultDataModel : resultDataModels){ for (JyjcInspectionResultDataModel resultDataModel : resultDataModels) {
i++; i++;
if(StringUtils.isEmpty(resultDataModel.getEquipId()) && StringUtils.isEmpty(resultDataModel.getSupervisoryCode())){ if (StringUtils.isEmpty(resultDataModel.getEquipId()) && StringUtils.isEmpty(resultDataModel.getSupervisoryCode())) {
throw new BadRequest("第" + i + "条数据存在问题,supervisoryCode和equipId不能同时为空!"); throw new BadRequest("第" + i + "条数据存在问题,supervisoryCode和equipId不能同时为空!");
} }
} }
} }
private JyjcInspectionResult getJyjcInspectionResult(JyjcInspectionResultDataModel resultDataModel, private JyjcInspectionResult getJyjcInspectionResult(JyjcInspectionResultDataModel resultDataModel,
Map<String, JyjcInspectionResult> recordResultMap , Map<String, JyjcInspectionResult> recordResultMap,
Map<String, JyjcInspectionResult> superviseCodeKeyResultMap){ Map<String, JyjcInspectionResult> superviseCodeKeyResultMap) {
if(StringUtils.isNotEmpty(resultDataModel.getEquipId())){ if (StringUtils.isNotEmpty(resultDataModel.getEquipId())) {
return recordResultMap.get(resultDataModel.getApplicationNo() + ":" + resultDataModel.getEquipId()); return recordResultMap.get(resultDataModel.getApplicationNo() + ":" + resultDataModel.getEquipId());
} }
if(StringUtils.isNotEmpty(resultDataModel.getSupervisoryCode())){ if (StringUtils.isNotEmpty(resultDataModel.getSupervisoryCode())) {
return superviseCodeKeyResultMap.get(resultDataModel.getApplicationNo() + ":" + resultDataModel.getSupervisoryCode()); return superviseCodeKeyResultMap.get(resultDataModel.getApplicationNo() + ":" + resultDataModel.getSupervisoryCode());
} }
return null; return null;
} }
private void deleteAndCreateSubTable(List<JyjcInspectionResult> resultList, List<JyjcInspectionResultAttachment> resultAttachments, List<JyjcInspectionResultParam> resultParams) { private void deleteAndCreateSubTable(List<JyjcInspectionResult> resultList, List<JyjcInspectionResultAttachment> resultAttachments, List<JyjcInspectionResultParam> resultParams) {
List<Long> resultIds = resultList.stream().map(BaseEntity::getSequenceNbr).collect(Collectors.toList()); List<Long> resultIds = resultList.stream().map(BaseEntity::getSequenceNbr).collect(Collectors.toList());
if (!resultAttachments.isEmpty()) { if (!resultAttachments.isEmpty()) {
...@@ -653,6 +578,18 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -653,6 +578,18 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
resultParams.add(resultParam); resultParams.add(resultParam);
} }
private void fillResultParamData(PipelineInspectionResultDto r, JyjcInspectionResult jyjcInspectionResult, List<JyjcInspectionResultParam> resultParams) {
JyjcInspectionResultParam resultParam = new JyjcInspectionResultParam();
resultParam.setResultSeq(jyjcInspectionResult.getSequenceNbr());
resultParam.setParamJson(JSON.toJSONString(r.getInspectionEquips()));
resultParam.setRecUserId(RequestContext.getExeUserId());
resultParam.setRecDate(new Date());
resultParam.setRemark("同步数据");
// 将设备种类code换成技术参数枚举
resultParam.setParamType(this.getTypeByEquipList(jyjcInspectionResult.getEquList()));
resultParams.add(resultParam);
}
private String getTypeByEquipList(String equList) { private String getTypeByEquipList(String equList) {
EquipCategoryEnum categoryEnum = EquipCategoryEnum.of(Integer.parseInt(equList)); EquipCategoryEnum categoryEnum = EquipCategoryEnum.of(Integer.parseInt(equList));
assert categoryEnum != null; assert categoryEnum != null;
...@@ -693,7 +630,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -693,7 +630,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
private String getUserSeqByPersonCode(String innerPersonCode) { private String getUserSeqByPersonCode(String innerPersonCode) {
if (StrUtil.isNotEmpty(innerPersonCode)) { if (StrUtil.isNotEmpty(innerPersonCode)) {
List<TzsUserInfo> tzsUserInfos = tzsUserInfoMapper.selectList(new LambdaQueryWrapper<TzsUserInfo>().in(TzsUserInfo::getInnerPersonCode, Arrays.asList(innerPersonCode.split(",")))); List<TzsUserInfo> tzsUserInfos = tzsUserInfoMapper.selectList(new LambdaQueryWrapper<TzsUserInfo>().in(TzsUserInfo::getCertificateNum, Arrays.asList(innerPersonCode.split(","))));
return tzsUserInfos.stream().map(u -> u.getSequenceNbr() + "").collect(Collectors.joining(",")); return tzsUserInfos.stream().map(u -> u.getSequenceNbr() + "").collect(Collectors.joining(","));
} }
log.error("检验人员内部编号为空"); log.error("检验人员内部编号为空");
...@@ -701,15 +638,14 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -701,15 +638,14 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
} }
private Map<String, JyjcInspectionResult> getSuperviseCodeKeyResultMap(List<JyjcInspectionResult> resultList) { private Map<String, JyjcInspectionResult> getSuperviseCodeKeyResultMap(List<JyjcInspectionResult> resultList) {
return resultList.stream().filter(r-> StringUtils.isNotEmpty(r.getSupervisoryCode())).collect(Collectors.toMap((c) -> c.getApplicationNo() + ":" + c.getSupervisoryCode(), Function.identity())); return resultList.stream().filter(r -> StringUtils.isNotEmpty(r.getSupervisoryCode())).collect(Collectors.toMap((c) -> c.getApplicationNo() + ":" + c.getSupervisoryCode(), Function.identity()));
} }
private Map<String, JyjcInspectionResult> getRecordKeyResultMap(List<JyjcInspectionResult> resultList) { private Map<String, JyjcInspectionResult> getRecordKeyResultMap(List<JyjcInspectionResult> resultList) {
return resultList.stream().collect(Collectors.toMap((c) -> c.getApplicationNo() + ":" + c.getEquipUnicode(), Function.identity())); return resultList.stream().collect(Collectors.toMap((c) -> c.getApplicationNo() + ":" + c.getEquipUnicode(), Function.identity()));
} }
private List<JyjcInspectionResult> queryResultList(List<JyjcInspectionResultDataModel> resultDataModels) { private List<JyjcInspectionResult> queryResultList(List<String> applicationNos) {
List<String> applicationNos = resultDataModels.stream().map(JyjcInspectionResultDataModel::getApplicationNo).collect(Collectors.toList());
LambdaQueryWrapper<JyjcInspectionResult> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<JyjcInspectionResult> wrapper = new LambdaQueryWrapper<>();
wrapper.in(JyjcInspectionResult::getApplicationNo, applicationNos); wrapper.in(JyjcInspectionResult::getApplicationNo, applicationNos);
return this.list(wrapper); return this.list(wrapper);
...@@ -730,6 +666,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -730,6 +666,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
/** /**
* 检验检测结果列表数据导出 * 检验检测结果列表数据导出
*
* @param response * @param response
* @param ids * @param ids
*/ */
...@@ -840,11 +777,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -840,11 +777,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
throw new BadRequest("数据异常,请联系管理员!"); throw new BadRequest("数据异常,请联系管理员!");
} }
} }
try { sendDataRefreshMsg(records);
emqKeeper.getMqttClient().publish(String.format(TZSCommonConstant.DATA_REFRESH_TOPIC, DataRefreshEvent.DataType.equipment.name(), DataRefreshEvent.Operation.UPDATE), JSONObject.toJSONString(records).getBytes(StandardCharsets.UTF_8), 2, false);
} catch (MqttException e) {
log.error("发送数据变更emq消息失败:{}", e.getMessage(), e);
}
return Boolean.TRUE; return Boolean.TRUE;
} }
...@@ -1000,11 +933,65 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR ...@@ -1000,11 +933,65 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
// 删除检验信息表 // 删除检验信息表
idxBizJgInspectionDetectionInfoMapper.delete(new LambdaQueryWrapper<IdxBizJgInspectionDetectionInfo>().eq(IdxBizJgInspectionDetectionInfo::getResultSeq, resultSeq.toString())); idxBizJgInspectionDetectionInfoMapper.delete(new LambdaQueryWrapper<IdxBizJgInspectionDetectionInfo>().eq(IdxBizJgInspectionDetectionInfo::getResultSeq, resultSeq.toString()));
// 删除附件表 // 删除附件表
attachmentService.getBaseMapper().delete(new LambdaQueryWrapper<JyjcInspectionResultAttachment>().eq(JyjcInspectionResultAttachment::getResultSeq,resultSeq.toString())); attachmentService.getBaseMapper().delete(new LambdaQueryWrapper<JyjcInspectionResultAttachment>().eq(JyjcInspectionResultAttachment::getResultSeq, resultSeq.toString()));
// 删除历史表 // 删除历史表
jyjcInspectionHistoryService.getBaseMapper().delete(new LambdaQueryWrapper<JyjcInspectionHistory>().eq(JyjcInspectionHistory::getSSeq, resultSeq)); jyjcInspectionHistoryService.getBaseMapper().delete(new LambdaQueryWrapper<JyjcInspectionHistory>().eq(JyjcInspectionHistory::getSSeq, resultSeq));
// 发送数据变更消息 // 发送数据变更消息
sendDataRefreshMsg(records); sendDataRefreshMsg(records);
return Boolean.TRUE; return Boolean.TRUE;
} }
public List<PipelineInspectionResultDto> receivePipelineResultData(List<PipelineInspectionResultDto> resultData) {
log.info("收到检验检测厂商推送的压力管道结果数据:{}", JSONArray.toJSONString(resultData));
// 1.数据合法性检查
this.checkMustFieldIsValid2(resultData);
// 2.组织数据
List<JyjcInspectionResult> resultList = queryResultList(resultData.stream().map(PipelineInspectionResultDto::getApplicationNo).collect(Collectors.toList()));
Map<String, JyjcInspectionResult> applyNoResultAppMap = resultList.stream().collect(Collectors.toMap(JyjcInspectionResult::getApplicationNo, Function.identity()));
List<JyjcInspectionResult> updateResultList = new ArrayList<>();
List<JyjcInspectionResultAttachment> resultAttachments = new ArrayList<>();
List<JyjcInspectionResultParam> resultParams = new ArrayList<>();
resultData.forEach(r -> {
JyjcInspectionResult result = applyNoResultAppMap.get(r.getApplicationNo());
if (result != null) {
// 填充主表数据
this.fillResultData(r, result, updateResultList);
// 填充附件数据
this.fillResultAttachmentData(r, result, resultAttachments);
// 填充技术参数数据
this.fillResultParamData(r, result, resultParams);
}
});
// 3.数据入库
if (!updateResultList.isEmpty()) {
// 3.1 批量保存主表数据
super.updateBatchById(updateResultList);
// 3.2 批量保存子表数据
deleteAndCreateSubTable(updateResultList, resultAttachments, resultParams);
// 3.3 异步更新设备的检验检测信息
eventPublisher.publish(new InspectionDetectionSaveToDbEvent(this, new ArrayList<>(updateResultList)));
}
return resultData;
}
private void checkMustFieldIsValid2(List<PipelineInspectionResultDto> resultData) {
}
public static void doUpdatePipelineTechParams(Map<String, Object> e, String record, IdxBizJgTechParamsPipelineMapper techParamPipelineMapper) {
IdxBizJgTechParamsPipeline techParamPipeline = new IdxBizJgTechParamsPipeline();
BeanUtil.copyProperties(e, techParamPipeline, true);
LambdaUpdateWrapper<IdxBizJgTechParamsPipeline> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(IdxBizJgTechParamsPipeline::getRecord, record);
updateWrapper.set(IdxBizJgTechParamsPipeline::getNominalDiameter, techParamPipeline.getNominalDiameter());
updateWrapper.set(IdxBizJgTechParamsPipeline::getWallThickness, techParamPipeline.getWallThickness());
updateWrapper.set(IdxBizJgTechParamsPipeline::getPipeLength, techParamPipeline.getPipeLength());
updateWrapper.set(IdxBizJgTechParamsPipeline::getPressure, techParamPipeline.getPressure());
updateWrapper.set(IdxBizJgTechParamsPipeline::getTemperature, techParamPipeline.getTemperature());
updateWrapper.set(IdxBizJgTechParamsPipeline::getMedium, techParamPipeline.getMedium());
updateWrapper.set(IdxBizJgTechParamsPipeline::getWorkMedium, techParamPipeline.getWorkMedium());
updateWrapper.set(IdxBizJgTechParamsPipeline::getWorkPressure, techParamPipeline.getWorkPressure());
updateWrapper.set(IdxBizJgTechParamsPipeline::getWorkTemperature, techParamPipeline.getWorkTemperature());
updateWrapper.set(IdxBizJgTechParamsPipeline::getRemarks, techParamPipeline.getRemarks());
techParamPipelineMapper.update(null, updateWrapper);
}
} }
\ No newline at end of file
package com.yeejoin.amos.boot.module.jyjc.biz.typeHandler;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.biz.common.typeHandler.TypeHandler;
import com.yeejoin.amos.boot.module.ymt.api.entity.EquipmentCategory;
import com.yeejoin.amos.boot.module.ymt.api.mapper.EquipmentCategoryMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* 特种设备目录处理器
*/
@Component("equipCategoryTypeHandler")
@RequiredArgsConstructor
public class EquipCategoryTypeHandler implements TypeHandler<String> {
private final Map<String, String> CODE_NAME_MAP = new ConcurrentHashMap<>();
private final EquipmentCategoryMapper equipmentCategoryMapper;
@Override
public String handle(String code) {
return code != null ? CODE_NAME_MAP.computeIfAbsent(code, (k) -> {
EquipmentCategory equipmentCategory = equipmentCategoryMapper.selectOne(new LambdaQueryWrapper<EquipmentCategory>().eq(EquipmentCategory::getCode, code).select(EquipmentCategory::getName, EquipmentCategory::getId));
return equipmentCategory == null ? "" : equipmentCategory.getName();
}) : null;
}
}
package com.yeejoin.amos.boot.module.jyjc.biz.util;
public class CompareUtils {
public static boolean isNullOrEmpty(String str) {
return str == null || str.trim().isEmpty() || "null".equals(str);
}
}
...@@ -65,13 +65,13 @@ spring.kafka.security.protocol=SASL_PLAINTEXT ...@@ -65,13 +65,13 @@ spring.kafka.security.protocol=SASL_PLAINTEXT
spring.kafka.properties.sasl.mechanism=PLAIN spring.kafka.properties.sasl.mechanism=PLAIN
#定期检验是否启用规则:true-启用,false-不启用,默认不配置时不启动规则 #定期检验是否启用规则:true-启用,false-不启用,默认不配置时不启动规则
inspection.rule.enabled.DQJY=true inspection.rule.enabled.DQJY=false
#安装监督检验是否启用规则:true-启用,false-不启用 #安装监督检验是否启用规则:true-启用,false-不启用
inspection.rule.enabled.AZJDJY=true inspection.rule.enabled.AZJDJY=false
#改造监督检验是否启用规则:true-启用,false-不启用 #改造监督检验是否启用规则:true-启用,false-不启用
inspection.rule.enabled.GZJDJY=true inspection.rule.enabled.GZJDJY=false
#维修监督检验是否启用规则:true-启用,false-不启用 #维修监督检验是否启用规则:true-启用,false-不启用
inspection.rule.enabled.WXJDJY=true inspection.rule.enabled.WXJDJY=false
#电梯检测是否启用规则:true-启用,false-不启用 #电梯检测是否启用规则:true-启用,false-不启用
inspection.rule.enabled.DTJC=true inspection.rule.enabled.DTJC=false
inspection.rule.enabled.WTJY=true inspection.rule.enabled.WTJY=false
...@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.ymt.api.mapper; ...@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.ymt.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.common.api.dto.ContraptionQueryParams;
import com.yeejoin.amos.boot.module.ymt.api.dto.ProjectWaitRefreshDataQualityScore; import com.yeejoin.amos.boot.module.ymt.api.dto.ProjectWaitRefreshDataQualityScore;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgProjectContraption; import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgProjectContraption;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -66,12 +67,11 @@ public interface IdxBizJgProjectContraptionMapper extends BaseMapper<IdxBizJgPro ...@@ -66,12 +67,11 @@ public interface IdxBizJgProjectContraptionMapper extends BaseMapper<IdxBizJgPro
* 查询检验的装置 * 查询检验的装置
* *
* @param page 分页 * @param page 分页
* @param inspectionType 检验类型 * @param queryParams 查询参数
* @param companyCode 公司code * @param companyCode 公司code
* @param equCategory 设备类别
* @return 分页 * @return 分页
*/ */
IPage<IdxBizJgProjectContraption> queryJgProjectContraptionPage(Page<IdxBizJgProjectContraption> page, @Param("inspectionType") String inspectionType, @Param("companyCode") String companyCode, @Param("equCategory") String equCategory); IPage<IdxBizJgProjectContraption> queryJgProjectContraptionPage(Page<IdxBizJgProjectContraption> page, @Param("params") ContraptionQueryParams queryParams, @Param("companyCode") String companyCode);
/** /**
* 获取管道信息分页 * 获取管道信息分页
......
...@@ -280,15 +280,30 @@ ...@@ -280,15 +280,30 @@
idx_biz_jg_project_contraption pc idx_biz_jg_project_contraption pc
where where
1=1 1=1
<if test="params.equList != null and params.equList != ''">
and pc.equ_list= #{params.equList}
</if>
<if test="params.equCategory != null and params.equCategory != ''">
and pc.equ_category= #{params.equCategory}
</if>
<if test="params.equDefine != null and params.equDefine != ''">
and pc.equ_define= #{params.equDefine}
</if>
<if test="params.city != null and params.city != ''">
and pc.city= #{params.city}
</if>
<if test="params.county != null and params.county != ''">
and pc.county= #{params.county}
</if>
<choose> <choose>
<when test="inspectionType == 'AZJDJY'"> <when test="params.inspectionType == 'AZJDJY'">
and pc.usc_unit_credit_code=#{companyCode} and pc.usc_unit_credit_code=#{companyCode}
and pc.is_into_management = true and pc.is_into_management = true
and (pc.use_registration_code is null or pc.use_registration_code = '' ) and (pc.use_registration_code is null or pc.use_registration_code = '' )
</when> </when>
<otherwise> <otherwise>
<choose> <choose>
<when test="equCategory == '8300'"> <when test="params.equCategory == '8300'">
and pc.use_unit_credit_code=#{companyCode} and pc.use_unit_credit_code=#{companyCode}
and pc.is_into_management = true and pc.is_into_management = true
and pc.use_registration_code <![CDATA[<>]]> '' and pc.use_registration_code <![CDATA[<>]]> ''
...@@ -302,10 +317,9 @@ ...@@ -302,10 +317,9 @@
</choose> </choose>
and not EXISTS (SELECt 1 FROM tz_jyjc_inspection_application a where a.status='6611' and a.application_unit_code=#{companyCode} and a.project_contraption_id = pc.sequence_nbr) and not EXISTS (SELECt 1 FROM tz_jyjc_inspection_application a where a.status='6611' and a.application_unit_code=#{companyCode} and a.project_contraption_id = pc.sequence_nbr)
and (pc.project_contraption_parent_id is null or pc.project_contraption_parent_id = '') and (pc.project_contraption_parent_id is null or pc.project_contraption_parent_id = '')
and pc.equ_category = #{equCategory}
) s ) s
<where> <where>
<if test="inspectionType == 'DQJY' and equCategory != '8300'"> <if test="params.inspectionType == 'DQJY' and params.equCategory != '8300'">
s.inspectNum = s.totalNum s.inspectNum = s.totalNum
and s.inspectNum > 0 and s.inspectNum > 0
</if> </if>
......
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