|
@@ -0,0 +1,198 @@
|
|
|
+package com.rongwei.sfcommon.sys.strategy.riskSyncStrategy;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
+import com.rongwe.scentity.domian.*;
|
|
|
+import com.rongwei.rwcommon.base.BaseDo;
|
|
|
+import com.rongwei.sfcommon.sys.service.impl.*;
|
|
|
+import com.rongwei.sfcommon.utils.CommonUtil;
|
|
|
+import com.rongwei.sfcommon.utils.Result;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.Comparator;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+import static com.rongwei.safecommon.utils.SaveConstans.AsyncAddress.T_MBCDZY;
|
|
|
+import static com.rongwei.safecommon.utils.SaveConstans.AsyncStatus.FAILURESYNC;
|
|
|
+import static com.rongwei.safecommon.utils.SaveConstans.AsyncStatus.SUCCESSSYNC;
|
|
|
+import static com.rongwei.safecommon.utils.SaveConstans.DatePattern.DATE_PATTERN_YMD14;
|
|
|
+
|
|
|
+/**
|
|
|
+ * MBCTStrategy class
|
|
|
+ * 盲板抽堵
|
|
|
+ *
|
|
|
+ * @author XH
|
|
|
+ * @date 2025/06/05
|
|
|
+ */
|
|
|
+@Component
|
|
|
+public class MBCDStrategy implements RiskDataConversionStrategy {
|
|
|
+ private static final Logger log = LoggerFactory.getLogger(GCStrategy.class);
|
|
|
+ @Autowired
|
|
|
+ private AspMbcdzyServiceImpl dtzyService;
|
|
|
+ @Autowired
|
|
|
+ private AspOperatorInformationServiceImpl aspOperatorInformationService;
|
|
|
+ @Autowired
|
|
|
+ private AspInspectrecordsServiceImpl aspInspectrecordsService;
|
|
|
+ @Autowired
|
|
|
+ private AspSafetyBriefingServiceImpl aspSafetyBriefingService;
|
|
|
+ @Autowired
|
|
|
+ private AspAcceptanceApplicationServiceImpl aspAcceptanceApplicationService;
|
|
|
+ //姓名、身份证号、特殊作业工种、特殊工作证号
|
|
|
+ public static final String HOMEWORKER_INFORMATION = "%s:%s";
|
|
|
+ @Value("${third-party.service.ip}")
|
|
|
+ private String ip;
|
|
|
+ @Value("${third-party.service.token}")
|
|
|
+ private String token;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void convertCellValue(List<String> id) {
|
|
|
+
|
|
|
+ List<AspMbcdzyDo> aspDhzyDos = dtzyService.getBaseMapper().selectBatchIds(id);
|
|
|
+ if (aspDhzyDos.isEmpty()) {
|
|
|
+ log.error("无法通过:{}获取到需要同步的动火作业信息", id);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat(DATE_PATTERN_YMD14);
|
|
|
+ // 作业人员
|
|
|
+ List<AspOperatorInformationDo> list = aspOperatorInformationService.list(new LambdaQueryWrapper<AspOperatorInformationDo>()
|
|
|
+ .in(AspOperatorInformationDo::getJobid, aspDhzyDos.stream().map(AspMbcdzyDo::getId).collect(Collectors.toList()))
|
|
|
+ .eq(BaseDo::getDeleted, 0)
|
|
|
+ );
|
|
|
+ // 措施检查
|
|
|
+ List<AspInspectrecordsDo> aspInspectrecordsDos = aspInspectrecordsService.list(new LambdaQueryWrapper<AspInspectrecordsDo>()
|
|
|
+ .in(AspInspectrecordsDo::getJobid, aspDhzyDos.stream().map(AspMbcdzyDo::getId).collect(Collectors.toList()))
|
|
|
+ .eq(BaseDo::getDeleted, 0)
|
|
|
+ );
|
|
|
+ // 安全交底
|
|
|
+ List<AspSafetyBriefingDo> aspSafetyBriefingDos = aspSafetyBriefingService.list(new LambdaQueryWrapper<AspSafetyBriefingDo>()
|
|
|
+ .in(AspSafetyBriefingDo::getJobid, aspDhzyDos.stream().map(AspMbcdzyDo::getId).collect(Collectors.toList()))
|
|
|
+ .eq(BaseDo::getDeleted, 0)
|
|
|
+ );
|
|
|
+ // 验收申请
|
|
|
+ List<AspAcceptanceApplicationDo> aspAcceptanceApplicationDos = aspAcceptanceApplicationService.list(new LambdaQueryWrapper<AspAcceptanceApplicationDo>()
|
|
|
+ .in(AspAcceptanceApplicationDo::getJobid, aspDhzyDos.stream().map(AspMbcdzyDo::getId).collect(Collectors.toList()))
|
|
|
+ .eq(BaseDo::getDeleted, 0));
|
|
|
+ aspDhzyDos.forEach(zyDo -> {
|
|
|
+ Map<String, Object> dataMap = new HashMap<>();
|
|
|
+ String workUsers = list.stream()
|
|
|
+ .filter(data -> zyDo.getId().equals(data.getJobid()))
|
|
|
+ .map(info -> String.format(HOMEWORKER_INFORMATION, info.getName(), info.getIdcard()))
|
|
|
+ .collect(Collectors.joining(","));
|
|
|
+ // 降序排序
|
|
|
+ AspInspectrecordsDo aspInspectrecordsDo = aspInspectrecordsDos.stream()
|
|
|
+ .filter(data -> zyDo.getId().equals(data.getJobid()))
|
|
|
+ .max(Comparator.comparing(AspInspectrecordsDo::getCreatedate))
|
|
|
+ .orElse(null);
|
|
|
+ // 降序排序
|
|
|
+ AspSafetyBriefingDo aspSafetyBriefingDo = aspSafetyBriefingDos.stream()
|
|
|
+ .filter(data -> zyDo.getId().equals(data.getJobid()))
|
|
|
+ .max(Comparator.comparing(AspSafetyBriefingDo::getCreatedate))
|
|
|
+ .orElse(null);
|
|
|
+ AspAcceptanceApplicationDo aspAcceptanceApplicationDo = aspAcceptanceApplicationDos.stream()
|
|
|
+ .filter(data -> zyDo.getId().equals(data.getJobid()))
|
|
|
+ .findFirst()
|
|
|
+ .orElse(null);
|
|
|
+
|
|
|
+
|
|
|
+ // 基础信息组(1-7)
|
|
|
+ dataMap.put("UUID", zyDo.getId()); // 作业ID
|
|
|
+ dataMap.put("SFSSTQY", zyDo.getSfsstqy()); // 是否在四色图区域内
|
|
|
+ dataMap.put("FSSSTID", zyDo.getFssstid()); // 风险四色图ID
|
|
|
+ dataMap.put("ZYZBH", zyDo.getZyzbh()); // 作业证编号
|
|
|
+ dataMap.put("SQDW", zyDo.getSqdw()); // 作业申请单位
|
|
|
+ dataMap.put("SQR", zyDo.getSqr()); // 作业申请人
|
|
|
+ dataMap.put("ZYSQSJ", zyDo.getZysqsj() == null ? "" : sdf.format(zyDo.getZysqsj())); // 作业申请时间
|
|
|
+
|
|
|
+ // 盲板专项组(8-16)
|
|
|
+ dataMap.put("GDJZ", zyDo.getGdjz()); // 管道介质(M/O)
|
|
|
+ dataMap.put("GDWDU", zyDo.getGdwdu()); // 管道温度(M/O,带计量单位)
|
|
|
+ dataMap.put("GDYL", zyDo.getGdyl()); // 管道压力(M/O,带计量单位)
|
|
|
+ dataMap.put("MBCZ", zyDo.getMbcz()); // 盲板材质(M/O)
|
|
|
+ dataMap.put("MBGG", zyDo.getMbgg()); // 盲板规格(M/O)
|
|
|
+ dataMap.put("MBBM", zyDo.getMbbm()); // 盲板编码(M/O)
|
|
|
+ dataMap.put("MBWZTBH", zyDo.getMbwztbh()); // 盲板位置图编号(M)
|
|
|
+ dataMap.put("MBWZT", CommonUtil.fileConvertBase64(zyDo.getMbwzt())); // 盲板位置图(M/O,PNG/JPEG base64)
|
|
|
+
|
|
|
+ // 实施信息组(17-23)
|
|
|
+ dataMap.put("SCDWZYZH", zyDo.getScdwzyzh()); // 生产单位作业指挥(O)
|
|
|
+ dataMap.put("ZYKSSJ", zyDo.getZykssj() == null ? "" : sdf.format(zyDo.getZykssj())); // 作业实施开始时间
|
|
|
+ dataMap.put("ZYJSSJ", zyDo.getZyjssj() == null ? "" : sdf.format(zyDo.getZyjssj())); // 作业实施结束时间
|
|
|
+ dataMap.put("ZYFZR", zyDo.getZyfzr()); // 作业负责人
|
|
|
+ dataMap.put("ZYRYXX", workUsers); // 作业人员信息(姓名:身份证号)
|
|
|
+ dataMap.put("MBDSJ", zyDo.getMbdsj() == null ? "" : sdf.format(zyDo.getMbdsj())); // 盲板堵时间(d14)
|
|
|
+ dataMap.put("MBCSJ", zyDo.getMbcsj() == null ? "" : sdf.format(zyDo.getMbcsj())); // 盲板抽时间(d14)
|
|
|
+
|
|
|
+ // 作业属性组(24-27)
|
|
|
+ dataMap.put("QRR", zyDo.getQrr()); // 编制人(M)
|
|
|
+ dataMap.put("BZSJ", zyDo.getBzsj() == null ? "" : sdf.format(zyDo.getBzsj())); // 编制时间(M/O,yyyyMMddHHmmss)
|
|
|
+ dataMap.put("ZYLB", zyDo.getZylb()); // 作业类别(1:堵盲板/2:抽盲板)
|
|
|
+ dataMap.put("ZYWZ", zyDo.getZywz()); // 作业位置(本次任务位置)
|
|
|
+
|
|
|
+ // 关联单位组(28-30)
|
|
|
+ dataMap.put("ZYDWLX", zyDo.getZydwlx()); // 作业单位类型
|
|
|
+ dataMap.put("ZYDWMC", zyDo.getZydwmc()); // 作业单位名称
|
|
|
+
|
|
|
+ dataMap.put("SFSJQTTSZY", zyDo.getSfsjqttszy()); // 涉及的其他特殊作业
|
|
|
+ dataMap.put("SJQTTSZYZBH", zyDo.getSjqttszyzbh()); // 其他特殊作业证编号
|
|
|
+
|
|
|
+
|
|
|
+ // 风险管控组(31-33)
|
|
|
+ // 风险管控组(20-22)
|
|
|
+ if (aspInspectrecordsDo != null) {
|
|
|
+ dataMap.put("FXBS", aspInspectrecordsDo.getFxbs()); // 风险辨识
|
|
|
+ dataMap.put("FHYP", aspInspectrecordsDo.getFhyp()); // 防护用品
|
|
|
+ dataMap.put("JSAFileUrl", CommonUtil.fileConvertBase64(aspInspectrecordsDo.getJasfj())); // JAS附件
|
|
|
+ }
|
|
|
+ dataMap.put("FXYFCS", ""); // 风险预防措施
|
|
|
+
|
|
|
+
|
|
|
+ // 安全监管组(34-40)
|
|
|
+ dataMap.put("JHR", zyDo.getJhr()); // 监护人
|
|
|
+ dataMap.put("JHRGW", ""); // 监护人岗位
|
|
|
+ dataMap.put("JHRZJBH", zyDo.getJhrzjbh()); // 监护人证件编号
|
|
|
+ if (aspAcceptanceApplicationDo != null) {
|
|
|
+ dataMap.put("YSR", aspAcceptanceApplicationDo.getAcceptancepeople()); // 验收人
|
|
|
+ }
|
|
|
+ if (aspSafetyBriefingDo != null) {
|
|
|
+ dataMap.put("AQJDR", aspSafetyBriefingDo.getAqjdr()); // 安全交底人
|
|
|
+ dataMap.put("JSJDR", aspSafetyBriefingDo.getJsjdr()); // 接受交底人
|
|
|
+ }
|
|
|
+ dataMap.put("DQZT", 3); // 当前状态(1:作业前/2:作业中/3:作业后)
|
|
|
+
|
|
|
+ // 地理信息组(41-42)
|
|
|
+ dataMap.put("LONGITUDE", zyDo.getLongitude().toString()); // 经度
|
|
|
+ dataMap.put("LATITUDE", zyDo.getLatitude().toString()); // 纬度
|
|
|
+
|
|
|
+ // 系统管理组(43-52)
|
|
|
+ dataMap.put("VIDEO_URL", ""); // 视频回放地址
|
|
|
+ dataMap.put("CREATE_TIME", zyDo.getCreatedate() == null ? "" : sdf.format(zyDo.getCreatedate())); // 创建时间
|
|
|
+ dataMap.put("CREATE_BY", zyDo.getCreateusername()); // 创建人
|
|
|
+ dataMap.put("UPDATE_TIME", zyDo.getModifydate() == null ? "" : sdf.format(zyDo.getModifydate())); // 最后修改时间
|
|
|
+ dataMap.put("UPDATE_BY", zyDo.getModifyusername()); // 最后修改人
|
|
|
+ dataMap.put("DELETE_MARK", zyDo.getDeleted()); // 删除标识
|
|
|
+ dataMap.put("COMPANY_CODE", ""); // 企业编码(n..9)
|
|
|
+ dataMap.put("FileUrl", ""); // 电子作业票附件(PDF base64)
|
|
|
+
|
|
|
+ // 计划信息组(53-55)
|
|
|
+ dataMap.put("JHKSSJ", zyDo.getJhkssj() == null ? "" : sdf.format(zyDo.getJhkssj())); // 计划开始时间
|
|
|
+ dataMap.put("JHJSSJ", zyDo.getJhjssj() == null ? "" : sdf.format(zyDo.getJhjssj())); // 计划结束时间
|
|
|
+ Result result = this.dataPush(ip, T_MBCDZY, dataMap, token);
|
|
|
+
|
|
|
+ String state = 200 == result.getStatus() ? SUCCESSSYNC : FAILURESYNC;
|
|
|
+ String resultContent = 200 == result.getStatus() ? "同步成功" : result.getMessage();
|
|
|
+ // 状态更新
|
|
|
+ dtzyService.update(new LambdaUpdateWrapper<AspMbcdzyDo>().eq(AspMbcdzyDo::getId, id)
|
|
|
+ .set(AspMbcdzyDo::getSyncresult, resultContent)
|
|
|
+ .set(AspMbcdzyDo::getSyncstate, state));
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+}
|