Commit 5e1dcc99 authored by Lambertliu's avatar Lambertliu

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

parents b5eba7ba 6e37557a
......@@ -37,6 +37,8 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
......@@ -168,6 +170,10 @@ public class IdxBizJgProjectContraptionServiceImpl extends BaseService<IdxBizJgP
.orderByDesc(IdxBizJgProjectContraption::getRecDate)
.page(page);
pageList.getRecords().forEach(record -> {
BigDecimal pipelineLength = BigDecimal.valueOf(record.getPipelineLength());
BigDecimal roundedValue = pipelineLength.setScale(3, RoundingMode.HALF_UP);
BigDecimal strippedValue = roundedValue.stripTrailingZeros();
record.setPipelineLength(Double.valueOf(strippedValue.toPlainString()));
record.setDataSourceName(EquipSourceEnum.getDataSourceName(record.getDataSource()));
record.setFullAddress(
Stream.of(record.getProvinceName(), record.getCityName(), record.getCountyName(), record.getStreetName(), record.getAddress())
......@@ -176,10 +182,27 @@ public class IdxBizJgProjectContraptionServiceImpl extends BaseService<IdxBizJgP
);
record.setCanEdit(this.checkContraptionIsCanEdit(record.getSequenceNbr()));
record.setCanDelete(this.checkContraptionIsCanDelete(record.getSequenceNbr()));
//判断是否有检验结果录入
judgeCheckResult(record);
});
return pageList;
}
/**
* 此处判断是否有检验结果 所有的管道信息都需要有检验结果才可以展示
* @param record
*/
private void judgeCheckResult(IdxBizJgProjectContraption record) {
record.setDisableBasicButton(true);
if("8200".equals(record.getEquCategory()) || "8100".equals(record.getEquCategory())){
int notNullCount = this.baseMapper.selectCheckCountByNotNull(String.valueOf(record.getSequenceNbr()));
long total = this.baseMapper.selectEquipCount(String.valueOf(record.getSequenceNbr()));
if(total==notNullCount && total !=0){
record.setDisableBasicButton(false);
}
}
}
private Boolean checkContraptionIsCanEdit(Long projectContraptionId) {
Integer inUseTime = this.baseMapper.countContraptionInUseTimesForEdit(projectContraptionId);
return inUseTime <= 0;
......
......@@ -65,6 +65,7 @@ import io.seata.core.context.RootContext;
import io.seata.spring.annotation.GlobalTransactional;
import io.seata.tm.api.GlobalTransactionContext;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.BeanUtils;
......@@ -85,12 +86,18 @@ import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URLEncoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import static com.alibaba.fastjson.JSON.parseArray;
......@@ -183,6 +190,8 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
private IdxBizJgProjectContraptionMapper projectContraptionMapper;
@Autowired
EventPublisher eventPublisher;
@Autowired
private JgUseRegistrationServiceImpl jgUseRegistrationService;
/**
* 安装改造维修单位吱资质类型:1234-安改维、1236-制造单位
......@@ -656,7 +665,69 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
// jgInstallationNotice.setNoticeReportUrl(url);
// this.updateById(jgInstallationNotice);
map.put("equipBasicInfoList", maps);
WordTemplateUtils.templateToPdfDownload(tempFileName, "installation-notification-report.ftl", map, response);
// WordTemplateUtils.templateToPdfDownload(tempFileName, "installation-notification-report.ftl", map, response);
byte[] templateToPdfData = WordTemplateUtils.getTemplateToPdfData(tempFileName, "installation-notification-report.ftl", map);
//获取管道和气瓶的基本信息汇总表
List<CompletableFuture<byte[]>> exportSummaryBasicInfoData = jgUseRegistrationService.getExportSummaryBasicInfoData(Collections.singletonList(Long.valueOf(sequenceNbr)), jgInstallationNotice.getEquCategoryCode(),"安装告知");
//将安装告知单和汇总表压缩到zip中
toZipFileByData(response, exportSummaryBasicInfoData, templateToPdfData, jgInstallationNotice.getApplyNo(),jgInstallationNotice.getEquCategoryCode());
}
/**
* 将数据全部压缩成zip
* @param response
* @param exportSummaryBasicInfoData
* @param templateToPdfData
* @param applyNo
* @param category
*/
private void toZipFileByData(HttpServletResponse response, List<CompletableFuture<byte[]>> exportSummaryBasicInfoData, byte[] templateToPdfData, String applyNo, String category) {
String filePrefix ="汇总表";
String customFileName="设备基本信息汇总表";
if ("8300".equals(category) || "8200".equals(category) || "8100".equals(category)) {
// 文件名前缀
filePrefix= "压力管道基本信息汇总表_";
customFileName="压力管道告知单_设备基本信息汇总表_" + applyNo + ".zip";
}else if ("2300".equals(category)) {
// 文件名前缀
filePrefix = "气瓶基本信息汇总表_";
customFileName="气瓶告知单_设备基本信息汇总表_" + applyNo + ".zip";
}
// 打包zip
try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ZipOutputStream zip = new ZipOutputStream(outputStream)) {
for (int i = 0; i < exportSummaryBasicInfoData.size(); i++) {
try {
zip.putNextEntry(new ZipEntry(filePrefix + "第" + (i + 1) + "页" + ".pdf"));
IOUtils.write(exportSummaryBasicInfoData.get(i).join(), zip);
zip.closeEntry(); // 每个条目结束后关闭
} catch (IOException e) {
log.error("打包zip失败:" + e.getMessage());
throw new BadRequest("打包zip失败");
}
}
//添加安装告知单到zip中
try {
String tempFileName = "安装告知单_" + System.currentTimeMillis() + "_temp";
zip.putNextEntry(new ZipEntry(tempFileName + ".pdf"));
IOUtils.write(templateToPdfData, zip);
zip.closeEntry();
} catch (IOException e) {
log.error("打包zip失败:" + e.getMessage());
throw new BadRequest("打包zip失败");
}
// 所有条目写入完成后关闭 ZipOutputStream
zip.finish();
// 设置响应头并将压缩文件写入 HttpServletResponse
response.setCharacterEncoding("UTF-8");
response.setHeader("content-Type", "application/zip");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(customFileName, "UTF-8"));
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
IOUtils.write(outputStream.toByteArray(), response.getOutputStream());
} catch (IOException e) {
throw new RuntimeException("导出异常:", e);
}
}
public Map<String, Object> fullFillTemplateObj(List<Map<String, Object>> informationList, String businessType) {
......
......@@ -2302,12 +2302,13 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
}
/**
* 导出基本信息汇总表(工业管道/气瓶)
*
* 获取导出基本信息数据
* @param useRegistrationSeqs
* @param response
* @param category
* @return
*/
public void exportSummaryBasicInfo(List<Long> useRegistrationSeqs, HttpServletResponse response, String category) {
public List<CompletableFuture<byte[]>> getExportSummaryBasicInfoData(List<Long> useRegistrationSeqs, String category,String type){
List<CompletableFuture<byte[]>> futureList = new ArrayList<>();
// 总数
double total;
// 每页显示条数,默认 10
......@@ -2322,55 +2323,91 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
registrationHistoryList.forEach(historyList -> {
JSONObject jsonObject = JSONObject.parseObject(historyList.getChangeData());
JSONArray equipmentLists = (JSONArray) jsonObject.get("equipmentLists");
if("安装告知".equals(type)){
equipmentLists =(JSONArray) jsonObject.get("deviceList");
}
// 填充投用年月
String useDateValue = (String) jsonObject.get("useDate");
if(CollectionUtils.isNotEmpty(equipmentLists)){
for (int i = 0; i < equipmentLists.size(); i++) {
JSONObject equipmentItem = equipmentLists.getJSONObject(i);
equipmentItem.put("useDate", timeToMonths(useDateValue));
}
allEquipment.addAll(equipmentLists);
}
});
total = allEquipment.size();
AgencyUserModel result = new AgencyUserModel();
JgUseRegistration jgUseRegistration = jgUseRegistrationMapper.selectOne(new QueryWrapper<JgUseRegistration>().lambda()
.eq(JgUseRegistration::getSequenceNbr, useRegistrationSeqs.get(0)).eq(JgUseRegistration::getIsDelete, false));
// 暂时拿第一条的 监管部门和安全管理人员
JSONObject jsonObjectFirst = new JSONObject();
if (!ValidationUtil.isEmpty(registrationHistoryList.get(0))) {
JgRegistrationHistory jgRegistrationHistory = registrationHistoryList.get(0);
jsonObjectFirst = JSONObject.parseObject(jgRegistrationHistory.getChangeData());
}
if("安装告知".equals(type)){
//人员信息去registrationHistoryList的第一条信息的创建人
JgRegistrationHistory jgRegistrationHistory = registrationHistoryList.get(0);
if (!ValidationUtil.isEmpty(jgRegistrationHistory)) {
String createUserId = jsonObjectFirst.getString("createUserId");
if (!ValidationUtil.isEmpty(createUserId)) {
result = Privilege.agencyUserClient.queryByUserId(createUserId).getResult();
}
}
}else {
JgUseRegistration jgUseRegistration = jgUseRegistrationMapper.selectOne(new QueryWrapper<JgUseRegistration>().lambda()
.eq(JgUseRegistration::getSequenceNbr, useRegistrationSeqs.get(0)).eq(JgUseRegistration::getIsDelete, false));
if (!ValidationUtil.isEmpty(jgUseRegistration.getCreateUserId())) {
result = Privilege.agencyUserClient.queryByUserId(jgUseRegistration.getCreateUserId()).getResult();
}
if ("8300".equals(category)) {// 压力管道基本信息汇总表
}
if ("8300".equals(category) || "8200".equals(category) || "8100".equals(category)) {// 压力管道基本信息汇总表
// 模板
String wordPath = "PressurePipeBasicInformationSummary.ftl";
// 文件名前缀
String filePrefix = "压力管道基本信息汇总表_";
// 压力包名称
String customFileName = filePrefix + jgUseRegistration.getApplyNo() + ".zip";
// 总页数
int page = (int) Math.ceil(total / size);
// 异步获取数据
List<CompletableFuture<byte[]>> futures = pressurePipeDataPreparation(page, jsonObjectFirst, size, total, allEquipment, wordPath, filePrefix, result);
// byte[]压缩zip
toZipFile(response, futures, filePrefix, customFileName);
futureList = pressurePipeDataPreparation(page, jsonObjectFirst, size, total, allEquipment, wordPath, filePrefix, result,category);
} else if ("2300".equals(category)) {// 气瓶基本信息汇总表
// 模板
String wordPath = "CylinderBasicInformationSummary.ftl";
// 文件名前缀
String filePrefix = "气瓶基本信息汇总表_";
// 压力包名称
String customFileName = filePrefix + jgUseRegistration.getApplyNo() + ".zip";
// 总页数
int page = (int) Math.ceil(total / size);
// 异步获取数据
List<CompletableFuture<byte[]>> futures = cylinderDataPreparation(page, jsonObjectFirst, size, total, allEquipment, wordPath, filePrefix, result);
futureList = cylinderDataPreparation(page, jsonObjectFirst, size, total, allEquipment, wordPath, filePrefix, result);
}
return futureList;
}
/**
* 导出基本信息汇总表(工业管道/气瓶)
*
* @param useRegistrationSeqs
* @param response
*/
public void exportSummaryBasicInfo(List<Long> useRegistrationSeqs, HttpServletResponse response, String category) {
JgUseRegistration jgUseRegistration = jgUseRegistrationMapper.selectOne(new QueryWrapper<JgUseRegistration>().lambda()
.eq(JgUseRegistration::getSequenceNbr, useRegistrationSeqs.get(0)).eq(JgUseRegistration::getIsDelete, false));
List<CompletableFuture<byte[]>> futures = getExportSummaryBasicInfoData(useRegistrationSeqs, category,"");
if ("8300".equals(category) || "8200".equals(category) || "8100".equals(category)) {
// 文件名前缀
String filePrefix = "压力管道基本信息汇总表_";
// 压力包名称
String customFileName = filePrefix + jgUseRegistration.getApplyNo() + ".zip";
// byte[]压缩zip
toZipFile(response, futures, filePrefix, customFileName);
}else if ("2300".equals(category)) {
// 文件名前缀
String filePrefix = "气瓶基本信息汇总表_";
// 压力包名称
String customFileName = filePrefix + jgUseRegistration.getApplyNo() + ".zip";
// byte[]压缩zip
toZipFile(response, futures, filePrefix, customFileName);
}
}
/**
......@@ -2429,7 +2466,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
*
* @return
*/
private List<CompletableFuture<byte[]>> pressurePipeDataPreparation(int page, JSONObject jsonObject, int size, double total, JSONArray equipmentLists, String wordPath, String filePrefix, AgencyUserModel result) {
private List<CompletableFuture<byte[]>> pressurePipeDataPreparation(int page, JSONObject jsonObject, int size, double total, JSONArray equipmentLists, String wordPath, String filePrefix, AgencyUserModel result,String category) {
Map<String, Object> exportParamsMap = new HashMap<>();
exportParamsMap.put("page", page);
LocalDate currentDate = LocalDate.now();
......@@ -2437,7 +2474,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
String formattedDate = currentDate.format(formatter);
exportParamsMap.put("printDate", formattedDate);
//获取分类名称
exportParamsMap.put("categoryName", "工业管道");
exportParamsMap.put("categoryName", PipelineEnum.getMessage(category));
// 使用单位
exportParamsMap.put("useUnitName", jsonObject.get("useUnitName"));
// 使用单位地址
......@@ -2450,9 +2487,9 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
IdxBizJgUseInfo idxBizJgUseInfo = useInfoMapper.selectOne(new LambdaQueryWrapper<IdxBizJgUseInfo>().eq(IdxBizJgUseInfo::getRecord, eqId));
exportParamsMap.put("nameOfProjectDevice", ValidationUtil.isEmpty(idxBizJgUseInfo) ? "" : idxBizJgUseInfo.getProjectContraption());
// 安全管理部门
exportParamsMap.put("orgBranchName", String.valueOf(jsonObject.get("orgBranchCode")).split("_")[1]);
exportParamsMap.put("orgBranchName", String.valueOf(jsonObject.get("orgBranchCode")).contains("_") ? String.valueOf(jsonObject.get("orgBranchCode")).split("_")[1] : jsonObject.getString("orgBranchName") == null ? "": jsonObject.getString("orgBranchName"));
// 安全管理员
exportParamsMap.put("safetyManager", String.valueOf(jsonObject.get("safetyManager")).contains("_") ? String.valueOf(jsonObject.get("safetyManager")).split("_")[1] : String.valueOf(jsonObject.get("safetyManager")));
exportParamsMap.put("safetyManager", String.valueOf(jsonObject.get("safetyManager")).contains("_") ? String.valueOf(jsonObject.get("safetyManager")).split("_")[1] : jsonObject.getString("safetyManager") == null ? "": jsonObject.getString("safetyManager"));
// 联系电话
exportParamsMap.put("phone", ValidationUtil.isEmpty(result.getMobile()) ? "" : result.getMobile());
// 经办人
......
......@@ -152,6 +152,27 @@ public class WordTemplateUtils {
return url;
}
public static byte[] getTemplateToPdfData(String pdfName, String wordPath, Map<String, Object> placeholders){
// word转pdf
File pdfFile;
try {
pdfFile = wordToPdf(pdfName, wordPath, placeholders);
} catch (Exception e) {
log.error("模板转pdf失败:", e);
throw new BadRequest("模板转pdf失败");
}
try {
return file2byte(pdfFile);
} finally {
try {
Files.deleteIfExists(pdfFile.toPath());
} catch (Exception e) {
log.error("文件找不到,删除失败:", e);
}
}
}
public static void templateToPdfDownload(String pdfName, String wordPath, Map<String, Object> placeholders, HttpServletResponse response) {
// word转pdf
File pdfFile;
......
......@@ -14,7 +14,7 @@ import java.io.Serializable;
@ApiModel(value = "InspectionEquipInfoModel")
public class InspectionEquipInfoModel implements Serializable {
@ApiModelProperty(value = "设备ID")
@ApiModelProperty(value = "设备ID或者装置id")
private String record;
@ApiModelProperty(value = "检验类型(小类)")
......@@ -23,6 +23,9 @@ public class InspectionEquipInfoModel implements Serializable {
@ApiModelProperty(value = "申请表主键")
private String appSeq;
@ApiModelProperty(value = "设备类别")
private String equCategory;
@ApiModelProperty(value = "主题,无需上送,由topic解析出来")
private String componentKey;
}
......@@ -246,7 +246,7 @@
and (res.application_unit_code = #{jyjcInspectionResultModel.companyCode} or res.inspection_unit_code = #{jyjcInspectionResultModel.companyCode})
</when>
<otherwise>
1 = 2
and 1 = 2
</otherwise>
</choose>
</where>
......@@ -275,6 +275,9 @@
<if test="jyjcInspectionResultModel.inspectionUnitName != '' and jyjcInspectionResultModel.inspectionUnitName != null">
and res.inspection_unit_name like concat('%',#{jyjcInspectionResultModel.inspectionUnitName},'%')
</if>
<if test="jyjcInspectionResultModel.useInnerCode != '' and jyjcInspectionResultModel.useInnerCode != null">
and 1 = 2
</if>
<choose>
<when test="identity == 'apply'">
and res.application_unit_code = #{jyjcInspectionResultModel.companyCode}
......@@ -286,7 +289,7 @@
and (res.application_unit_code = #{jyjcInspectionResultModel.companyCode} or res.inspection_unit_code = #{jyjcInspectionResultModel.companyCode})
</when>
<otherwise>
1 = 2
and 1 = 2
</otherwise>
</choose>
</where>
......
......@@ -166,7 +166,7 @@ public class RuleActionHandler {
// 所有符合资质的单位code
Set<String> unitCodes = unitLicenceList.stream().map(TzBaseUnitLicence::getUnitCode).collect(Collectors.toSet());
// 按照资质 + 开通区域,进行单位的筛选
if (unitCodes.size() > 0) {
if (!unitCodes.isEmpty()) {
matchEnterpriseInfos = tzBaseEnterpriseInfoMapper.getInspectionUnitListByCode(new ArrayList<>(unitCodes), areaCode, openBizType);
// 返回下一步是否可不予返回,供下一节点审核时显示判断是否显示不予受理按钮,在提交时数据会写入到主表:true-必须处理,false-可不予受理
this.setIsCanNoAccept(matchEnterpriseInfos, isCanNoAccept);
......@@ -199,7 +199,7 @@ public class RuleActionHandler {
Set<String> unitCodes = unitLicenceList.stream().map(TzBaseUnitLicence::getUnitCode).collect(Collectors.toSet());
List<TzBaseEnterpriseInfoDto> matchEnterpriseInfos = new ArrayList<>();
// 按照资质 + areaCode,进行设备单位的筛选
if (unitCodes.size() > 0) {
if (!unitCodes.isEmpty()) {
matchEnterpriseInfos = tzBaseEnterpriseInfoMapper.getInspectionUnitListByCode(new ArrayList<>(unitCodes), areaCode, openBizType);
// 返回下一步是否可不予返回,供下一节点审核时显示判断是否显示不予受理按钮,在提交时数据会写入到主表:true-必须处理,false-可不予受理
this.setIsCanNoAccept(matchEnterpriseInfos, isCanNoAccept);
......@@ -256,7 +256,7 @@ public class RuleActionHandler {
List<String> legalUnitCodes = Arrays.stream(legalInspectionCodes.split(",")).filter(unitCodes::contains).collect(Collectors.toList());
List<TzBaseEnterpriseInfoDto> matchEnterpriseInfos = new ArrayList<>();
// 按照资质 + areaCode,进行设备单位的筛选
if (legalUnitCodes.size() > 0) {
if (!legalUnitCodes.isEmpty()) {
matchEnterpriseInfos = tzBaseEnterpriseInfoMapper.getInspectionUnitListByCode(legalUnitCodes, areaCode, openBizType);
// 返回下一步是否可不予返回,供下一节点审核时显示判断是否显示不予受理按钮,在提交时数据会写入
this.setIsCanNoAccept(matchEnterpriseInfos, isCanNoAccept);
......@@ -277,7 +277,7 @@ public class RuleActionHandler {
// 所有符合单位的code
Set<String> unitCodes = unitLicenceList.stream().map(TzBaseUnitLicence::getUnitCode).collect(Collectors.toSet());
List<TzBaseEnterpriseInfoDto> matchEnterpriseInfos = new ArrayList<>();
if (unitCodes.size() > 0) {
if (!unitCodes.isEmpty()) {
matchEnterpriseInfos = tzBaseEnterpriseInfoMapper.getInspectionUnitListByCode(new ArrayList<>(unitCodes), areaCode, openBizType);
// 返回下一步是否可不予返回,供下一节点审核时显示判断是否显示不予受理按钮,在提交时数据会写入到主表:true-必须处理,false-可不予受理
this.setIsCanNoAccept(matchEnterpriseInfos, isCanNoAccept);
......
package com.yeejoin.amos.boot.module.jyjc.biz.event.listener;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.yeejoin.amos.boot.biz.common.utils.SnowflakeIdUtil;
......@@ -14,8 +15,10 @@ import com.yeejoin.amos.boot.module.jyjc.biz.event.TouchRuleEvent;
import com.yeejoin.amos.boot.module.jyjc.biz.event.publisher.EventPublisher;
import com.yeejoin.amos.boot.module.jyjc.biz.rule.InspectionEquipInfo;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.RuleCommonServiceImpl;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgProjectContraption;
import com.yeejoin.amos.boot.module.ymt.api.entity.RegistrationInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.UseInfo;
import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgProjectContraptionMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.RegistrationInfoMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
......@@ -25,6 +28,7 @@ import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.BlockingQueue;
......@@ -59,6 +63,8 @@ public class EnableRuleDataPreparationListener implements ApplicationListener<In
private List<BlockingQueue<InspectionEquipInfoModel>> hashCodeBlockingQueues = new ArrayList<>();
private final IdxBizJgProjectContraptionMapper jgProjectContraptionMapper;
@Value("${rule.data.preparation.thread.number:2}")
private int threadNumber;
......@@ -67,7 +73,7 @@ public class EnableRuleDataPreparationListener implements ApplicationListener<In
RegistrationInfoMapper registrationInfoMapper,
RuleCommonServiceImpl ruleCommonService,
InspectionRuleEnableConfig inspectionRuleEnableConfig, InspectionApplicationPushEventListener applicationPushEventListener,
JyjcInspectionApplicationNoAcceptLogMapper inspectionApplicationNoAcceptLogMapper, EventPublisher publisher) {
JyjcInspectionApplicationNoAcceptLogMapper inspectionApplicationNoAcceptLogMapper, EventPublisher publisher, IdxBizJgProjectContraptionMapper jgProjectContraptionMapper) {
this.sequence = sequence;
this.registrationInfoMapper = registrationInfoMapper;
this.ruleCommonService = ruleCommonService;
......@@ -75,6 +81,7 @@ public class EnableRuleDataPreparationListener implements ApplicationListener<In
this.applicationPushEventListener = applicationPushEventListener;
this.inspectionApplicationNoAcceptLogMapper = inspectionApplicationNoAcceptLogMapper;
this.publisher = publisher;
this.jgProjectContraptionMapper = jgProjectContraptionMapper;
}
......@@ -116,8 +123,28 @@ public class EnableRuleDataPreparationListener implements ApplicationListener<In
if (!this.getEnableConfig(equipInfoModel.getInspectionType())) {
return;
}
RegistrationInfo registrationInfo = fetchRegistrationInfo(equipInfoModel.getRecord());
InspectionEquipInfo inspectionEquipInfo = new InspectionEquipInfo();
if (equipInfoModel.getEquCategory() != null && equipInfoModel.getEquCategory().startsWith("8")) {
// 管道逻辑
String projectContraptionId = equipInfoModel.getRecord();
IdxBizJgProjectContraption projectContraption = jgProjectContraptionMapper.selectById(projectContraptionId);
if (projectContraption == null) {
log.error("未找到装置,报检规则匹配流程结束!");
return;
}
inspectionEquipInfo.setEquCategory(projectContraption.getEquCategory());
inspectionEquipInfo.setEquList(projectContraption.getEquList());
inspectionEquipInfo.setEquDefine(projectContraption.getEquDefine());
inspectionEquipInfo.setTechParams(new HashMap<>());
// 地市
UseInfo useInfo = new UseInfo();
BeanUtil.copyProperties(projectContraption, useInfo, true);
inspectionEquipInfo.setAreaCode(ruleCommonService.getArea(useInfo));
// 区县
inspectionEquipInfo.setDistrictOrCountyCode(ruleCommonService.getCounty(useInfo));
} else {
// 非管道逻辑
RegistrationInfo registrationInfo = fetchRegistrationInfo(equipInfoModel.getRecord());
if (registrationInfo == null) {
log.error("未找到设备,报检规则匹配流程结束!");
return;
......@@ -125,18 +152,23 @@ public class EnableRuleDataPreparationListener implements ApplicationListener<In
inspectionEquipInfo.setEquCategory(registrationInfo.getEquCategory());
inspectionEquipInfo.setEquList(registrationInfo.getEquList());
inspectionEquipInfo.setEquDefine(registrationInfo.getEquDefine());
inspectionEquipInfo.setTechParams(this.getTechParams(registrationInfo));
// 是否球罐 0 1 转 boolean
inspectionEquipInfo.setIsBallValve(!"0".equals(registrationInfo.getWhetherSphericalTank()));
UseInfo useInfo = ruleCommonService.getUseInfo(equipInfoModel.getRecord());
// 地市
inspectionEquipInfo.setAreaCode(ruleCommonService.getArea(useInfo));
// 区县
inspectionEquipInfo.setDistrictOrCountyCode(ruleCommonService.getCounty(useInfo));
}
inspectionEquipInfo.setComponentKey(equipInfoModel.getComponentKey());
inspectionEquipInfo.setInspectionType(equipInfoModel.getInspectionType());
inspectionEquipInfo.setRecord(equipInfoModel.getRecord());
inspectionEquipInfo.setBizType(getCategoryByType(JYJCTypeEnum.of(inspectionEquipInfo.getInspectionType())));
inspectionEquipInfo.setUuid(sequence.nextId() + "");
inspectionEquipInfo.setTechParams(this.getTechParams(registrationInfo));
this.setReginInfo(inspectionEquipInfo, equipInfoModel.getRecord());
JyjcInspectionApplicationNoAcceptLog jyjcInspectionApplicationNoAcceptLog = getLastNoAcceptLog(equipInfoModel);
inspectionEquipInfo.setRequestType(this.buildRequestType(equipInfoModel, jyjcInspectionApplicationNoAcceptLog));
inspectionEquipInfo.setLastNoAcceptInspectionCode(this.buildLastNoAcceptInspectionCode(jyjcInspectionApplicationNoAcceptLog));
// 是否球罐 0 1 转 boolean
inspectionEquipInfo.setIsBallValve(!"0".equals(registrationInfo.getWhetherSphericalTank()));
inspectionEquipInfo.setAppSeq(equipInfoModel.getAppSeq());
// 触发规则
publisher.publish(new TouchRuleEvent(this, inspectionEquipInfo));
......@@ -150,16 +182,9 @@ public class EnableRuleDataPreparationListener implements ApplicationListener<In
* @return true-启用规则,false-不启用
*/
private boolean getEnableConfig(String inspectionType) {
return inspectionRuleEnableConfig.getValueByFieldName(inspectionType) == null ? false : (Boolean) inspectionRuleEnableConfig.getValueByFieldName(inspectionType);
return inspectionRuleEnableConfig.getValueByFieldName(inspectionType) != null && (Boolean) inspectionRuleEnableConfig.getValueByFieldName(inspectionType);
}
private void setReginInfo(InspectionEquipInfo inspectionEquipInfo, String record) {
UseInfo useInfo = ruleCommonService.getUseInfo(record);
// 地市
inspectionEquipInfo.setAreaCode(ruleCommonService.getArea(useInfo));
// 区县
inspectionEquipInfo.setDistrictOrCountyCode(ruleCommonService.getCounty(useInfo));
}
private String buildLastNoAcceptInspectionCode(JyjcInspectionApplicationNoAcceptLog jyjcInspectionApplicationNoAcceptLog) {
if (jyjcInspectionApplicationNoAcceptLog != null) {
......
......@@ -274,4 +274,10 @@ public class IdxBizJgProjectContraption extends BaseEntity {
*/
@TableField("is_first_merge")
private Boolean isFirstMerge;
/**
* 是否禁用打印汇总表按钮
*/
@TableField(exist = false)
private Boolean disableBasicButton;
}
......@@ -74,4 +74,9 @@ public interface IdxBizJgProjectContraptionMapper extends BaseMapper<IdxBizJgPro
* @return
*/
List<Map<String, Object>> selectEquipListByExport(@Param("sequenceNbr") String sequenceNbr);
/**
* 获取不为空的检验信息个数
*/
int selectCheckCountByNotNull(@Param("sequenceNbr") String sequenceNbr);
}
......@@ -243,4 +243,24 @@
WHERE ibjui.project_contraption_id = #{sequenceNbr}
ORDER BY ibjtpp.REC_DATE ASC
</select>
<select id="selectCheckCountByNotNull" resultType="int">
SELECT COUNT(1)
FROM
(
SELECT
( SELECT INSPECT_ORG_NAME FROM idx_biz_jg_inspection_detection_info WHERE "RECORD" = ibjui."RECORD" ORDER BY INSPECT_DATE DESC LIMIT 1 ) inspectOrgName,
( SELECT INSPECT_CONCLUSION FROM idx_biz_jg_inspection_detection_info WHERE "RECORD" = ibjui."RECORD" ORDER BY INSPECT_DATE DESC LIMIT 1 ) inspectConclusion,
( SELECT NEXT_INSPECT_DATE FROM idx_biz_jg_inspection_detection_info WHERE "RECORD" = ibjui."RECORD" ORDER BY INSPECT_DATE DESC LIMIT 1 ) nextInspectDate
FROM
idx_biz_jg_use_info ibjui
LEFT JOIN idx_biz_jg_tech_params_pipeline ibjtpp ON ibjui.RECORD = ibjtpp.RECORD
LEFT JOIN idx_biz_jg_design_info ibjdi ON ibjui.RECORD = ibjdi.RECORD
WHERE
ibjui.project_contraption_id = #{sequenceNbr}
) A
WHERE
A.inspectOrgName != NULL AND A.inspectOrgName != '' AND A.inspectConclusion!=NULL and A.inspectConclusion!=''
and A.nextInspectDate != NULL
</select>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment