Commit d1e7f194 authored by 刘林's avatar 刘林

Merge branch 'refs/heads/develop_tzs_bugfix' into develop_tzs_register

parents c75c8efd b3311585
...@@ -6,6 +6,7 @@ import java.text.ParseException; ...@@ -6,6 +6,7 @@ import java.text.ParseException;
import java.text.ParsePosition; import java.text.ParsePosition;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.*; import java.util.*;
/** /**
...@@ -660,10 +661,25 @@ public class DateUtils { ...@@ -660,10 +661,25 @@ public class DateUtils {
return now; return now;
} }
public static Date getDateByStr(String dateStr) {
//String dateStr = "2025-08-20T10:41:02.584+08:00";
OffsetDateTime offsetDateTime = OffsetDateTime.parse(dateStr);
// 转换为Date对象
Date date = Date.from(offsetDateTime.toInstant());
return date;
}
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
System.out.println(DateUtils.convertDateToString(new Date(), DateUtils.CHN_DATE_PATTERN)); String dateStr = "2025-08-20T10:41:02.584+08:00";
// 解析为OffsetDateTime(包含时区信息)
OffsetDateTime offsetDateTime = OffsetDateTime.parse(dateStr);
// 转换为Date对象
Date date = Date.from(offsetDateTime.toInstant());
System.out.println(date); // 输出对应的Date对象
// System.out.println(DateUtils.convertDateToString(new Date(), DateUtils.CHN_DATE_PATTERN));
/*System.out.println(dateTimeToDate(new Date())); /*System.out.println(dateTimeToDate(new Date()));
System.out.println(dateParse("2017-02-04 14:58:20", null)); System.out.println(dateParse("2017-02-04 14:58:20", null));
...@@ -690,10 +706,10 @@ public class DateUtils { ...@@ -690,10 +706,10 @@ public class DateUtils {
// System.out.println(secondsToTimeStr(3600)); // System.out.println(secondsToTimeStr(3600));
// System.out.println(getTimeString(dateParse("2023-09-07 16:15:15", DATE_TIME_PATTERN), dateParse("2023-09-06 " + // System.out.println(getTimeString(dateParse("2023-09-07 16:15:15", DATE_TIME_PATTERN), dateParse("2023-09-06 " +
// "16:15:15", DATE_TIME_PATTERN))); // "16:15:15", DATE_TIME_PATTERN)));
long diff = dateParse("2022-09-07 16:16:16", DATE_TIME_PATTERN).getTime() - dateParse("2023-09-06 10:15:15", // long diff = dateParse("2022-09-07 16:16:16", DATE_TIME_PATTERN).getTime() - dateParse("2023-09-06 10:15:15",
DATE_TIME_PATTERN).getTime(); // DATE_TIME_PATTERN).getTime();
System.out.println(diff/1000); // System.out.println(diff/1000);
System.out.println(secondsToTimeStr((int) diff/1000)); // System.out.println(secondsToTimeStr((int) diff/1000));
} }
/** /**
......
...@@ -8,14 +8,14 @@ import lombok.EqualsAndHashCode; ...@@ -8,14 +8,14 @@ import lombok.EqualsAndHashCode;
import java.util.Date; import java.util.Date;
/** /**
* 单位下摄像头表 * 单位下摄像头配置
* *
* @author system_generator * @author system_generator
* @date 2024-10-09 * @date 2024-10-09
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ApiModel(value="BaseEnterpriseVideoDto", description="单位下摄像头表") @ApiModel(value="BaseEnterpriseVideoDto", description="单位下摄像头配置表")
public class BaseEnterpriseVideoDto extends BaseDto { public class BaseEnterpriseVideoDto extends BaseDto {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
......
package com.yeejoin.amos.boot.module.common.api.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 单位下摄像头表
*
* @author system_generator
* @date 2024-10-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="BaseEnterpriseVideoNodeDto", description="单位下摄像头表")
public class BaseEnterpriseVideoNodeDto extends BaseDto {
private static final long serialVersionUID = 1L;
/**
* 使用单位名称
*/
@ApiModelProperty(value = "使用单位名称")
private String useUnitName;
/**
* 使用单位统一信用代码
*/
@ApiModelProperty(value = "使用单位统一信用代码")
private String useUnitCode;
/**
* 区域名称
*/
@ApiModelProperty(value = "区域名称")
private String regionName;
/**
* 区域代码
*/
@ApiModelProperty(value = "区域代码")
private String regionCode;
/**
* 视频名称
*/
@ApiModelProperty(value = "视频名称")
private String videoName;
/**
* 设备使用登记代码
*/
@ApiModelProperty(value = "设备使用登记代码")
private String devUseCode;
/**
* 是否删除
*/
@ApiModelProperty(value = "是否删除")
private Boolean isDelete;
/**
* 组织代码
*/
@ApiModelProperty(value = "组织代码")
private String orgCode;
/**
* 视频ID
*/
@ApiModelProperty(value = "视频ID")
private String cameraIndexCode;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
private Date updatesTime;
@ApiModelProperty(value = "标识什么设种类使用的摄像头")
private String equListCode;
/**
* 视频配置表主键
*/
@ApiModelProperty(value = "视频配置表主键")
private Long videoSeq;
}
...@@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode; ...@@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
/** /**
* 单位下摄像头表 * 单位下摄像头配置
* *
* @author system_generator * @author system_generator
* @date 2024-10-09 * @date 2024-10-09
......
package com.yeejoin.amos.boot.module.common.api.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yeejoin.amos.boot.biz.common.entity.BaseRelationEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
* 单位下摄像头表
*
* @author system_generator
* @date 2024-10-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("tz_base_enterprise_video_node")
public class BaseEnterpriseVideoNode extends BaseRelationEntity {
private static final long serialVersionUID = 1L;
/**
* 使用单位名称
*/
@TableField("use_unit_name")
private String useUnitName;
/**
* 使用单位统一信用代码
*/
@TableField("use_unit_code")
private String useUnitCode;
/**
* 区域名称
*/
@TableField("region_name")
private String regionName;
/**
* 区域代码
*/
@TableField("region_code")
private String regionCode;
/**
* 视频名称
*/
@TableField("video_name")
private String videoName;
/**
* 设备使用登记代码
*/
@TableField("dev_use_code")
private String devUseCode;
/**
* 是否删除
*/
@TableField("is_delete")
private Boolean isDelete;
/**
* 组织代码
*/
@TableField("org_code")
private String orgCode;
/**
* 视频ID
*/
@TableField("camera_index_code")
private String cameraIndexCode;
/**
* 更新时间
*/
@TableField("updates_time")
private Date updatesTime;
/**
* 标识什么设种类使用的摄像头
*/
@TableField("equ_list_code")
private String equListCode;
/**
* 视频配置表主键
*/
@TableField(value = "video_seq")
private Long videoSeq;
}
package com.yeejoin.amos.boot.module.common.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.common.api.entity.BaseEnterpriseVideo;
import com.yeejoin.amos.boot.module.common.api.entity.BaseEnterpriseVideoNode;
/**
* 单位下摄像头表 Mapper 接口
*
* @author system_generator
* @date 2024-10-09
*/
public interface BaseEnterpriseVideoNodeMapper extends BaseMapper<BaseEnterpriseVideoNode> {
}
package com.yeejoin.amos.boot.module.common.api.service;
/**
* 单位下摄像头表接口类
*
* @author system_generator
* @date 2024-10-09
*/
public interface IBaseEnterpriseVideoNodeService {
}
...@@ -6,6 +6,8 @@ import java.text.ParseException; ...@@ -6,6 +6,8 @@ import java.text.ParseException;
import java.text.ParsePosition; import java.text.ParsePosition;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
/** /**
* @description: 时间工具类 * @description: 时间工具类
...@@ -285,6 +287,14 @@ public class DateUtils { ...@@ -285,6 +287,14 @@ public class DateUtils {
return null; return null;
} }
public static Date dateParseWithZonedDateTime(String dateTimeString) throws ParseException {
// 1. 解析原始字符串为ZonedDateTime(含时区信息)
ZonedDateTime zonedDateTime = ZonedDateTime.parse(dateTimeString);
// 2. 定义目标格式:yyyy-MM-dd HH:mm:ss
DateTimeFormatter targetFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = zonedDateTime.format(targetFormatter);
return dateParseWithPattern(formattedDateTime);
}
/** /**
* 将日期时间格式成只有日期的字符串(可以直接使用dateFormat,Pattern为Null进行格式化) * 将日期时间格式成只有日期的字符串(可以直接使用dateFormat,Pattern为Null进行格式化)
* *
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.boot.module.common.api.mapper.BaseEnterpriseVideoNodeMapper">
</mapper>
package com.yeejoin.amos.boot.module.common.biz.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.boot.module.common.api.dto.BaseEnterpriseVideoNodeDto;
import com.yeejoin.amos.boot.module.common.api.entity.BaseEnterpriseVideoNode;
import com.yeejoin.amos.boot.module.common.api.mapper.BaseEnterpriseVideoNodeMapper;
import com.yeejoin.amos.boot.module.common.api.service.IBaseEnterpriseVideoNodeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.rdbms.service.BaseService;
/**
* 单位下摄像头表服务实现类
*
* @author system_generator
* @date 2024-10-09
*/
@Service
@Slf4j
public class BaseEnterpriseVideoNodeServiceImpl extends BaseService<BaseEnterpriseVideoNodeDto, BaseEnterpriseVideoNode, BaseEnterpriseVideoNodeMapper> implements IBaseEnterpriseVideoNodeService {
public Boolean saveOrUpdates(BaseEnterpriseVideoNode enterpriseVideoNode, String cameraIndexCode){
return this.saveOrUpdate(enterpriseVideoNode, new QueryWrapper<BaseEnterpriseVideoNode>().lambda().eq(BaseEnterpriseVideoNode::getCameraIndexCode, cameraIndexCode));
}
}
\ No newline at end of file
...@@ -2721,7 +2721,7 @@ ...@@ -2721,7 +2721,7 @@
FROM FROM
tzs_user_permission tup tzs_user_permission tup
LEFT JOIN tzs_user_info tui ON tup.user_seq = tui.sequence_nbr LEFT JOIN tzs_user_info tui ON tup.user_seq = tui.sequence_nbr
LEFT JOIN tz_base_enterprise_info ei ON ei.use_unit_code = tui.unit_code LEFT JOIN tz_base_enterprise_info ei ON ei.use_code = tui.unit_code
WHERE WHERE
tup.expiry_date <![CDATA[<]]> CURRENT_DATE AND tup.permission_post IN ('permissionData66151', 'permissionData66152', 'permissionData6552'); tup.expiry_date <![CDATA[<]]> CURRENT_DATE AND tup.permission_post IN ('permissionData66151', 'permissionData66152', 'permissionData6552');
......
...@@ -1150,7 +1150,8 @@ public class CommonEquipDataProcessService { ...@@ -1150,7 +1150,8 @@ public class CommonEquipDataProcessService {
public void beforeCheckForUseOrgCode(ProjectContraptionChangeDataDto dto) { public void beforeCheckForUseOrgCode(ProjectContraptionChangeDataDto dto) {
LambdaQueryWrapper<IdxBizJgProjectContraption> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<IdxBizJgProjectContraption> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(IdxBizJgProjectContraption::getUseRegistrationCode, dto.getUseRegistrationCode()) queryWrapper.eq(IdxBizJgProjectContraption::getUseRegistrationCode, dto.getUseRegistrationCode())
.ne(BaseEntity::getSequenceNbr, dto.getProjectContraptionId()); .ne(BaseEntity::getSequenceNbr, dto.getProjectContraptionId())
.ne(IdxBizJgProjectContraption::getUseUnitCreditCode, dto.getUseUnitCreditCode());
if (idxBizJgProjectContraptionServiceImpl.count(queryWrapper) > 0) { if (idxBizJgProjectContraptionServiceImpl.count(queryWrapper) > 0) {
throw new BadRequest("使用登记证编号已存在!"); throw new BadRequest("使用登记证编号已存在!");
} }
......
...@@ -158,6 +158,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD ...@@ -158,6 +158,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
private static final Logger logger = LogManager.getLogger(JgUseRegistrationServiceImpl.class); private static final Logger logger = LogManager.getLogger(JgUseRegistrationServiceImpl.class);
private static final String DEFINITION_KEY = "useRegistration"; private static final String DEFINITION_KEY = "useRegistration";
private static final String JIAN_CHA_ROLE_ID = "1864242478501093377";
private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");; private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");;
private static final int BATCH_SIZE = 1000; private static final int BATCH_SIZE = 1000;
private final List<String> NOT_FLOWING_STATE = Arrays.asList("使用单位待提交", "一级受理已驳回", "使用单位已撤回", "已作废"); private final List<String> NOT_FLOWING_STATE = Arrays.asList("使用单位待提交", "一级受理已驳回", "使用单位已撤回", "已作废");
...@@ -2236,6 +2237,20 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD ...@@ -2236,6 +2237,20 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
//通过 //通过
//一级通过,且是特殊登记,需要监察,approvalStatus=2 //一级通过,且是特殊登记,需要监察,approvalStatus=2
if ("2".equals(jgUseRegistration.getRegType()) && (WorkFlowStatusEnum.USE_RECEIVE.getPass().equals(jgUseRegistration.getStatus()) || WorkFlowStatusEnum.USE_RECEIVE.getReject().equals(jgUseRegistration.getStatus()))) { if ("2".equals(jgUseRegistration.getRegType()) && (WorkFlowStatusEnum.USE_RECEIVE.getPass().equals(jgUseRegistration.getStatus()) || WorkFlowStatusEnum.USE_RECEIVE.getReject().equals(jgUseRegistration.getStatus()))) {
List<AgencyUserModel> taskExecutor = Privilege.agencyUserClient
.queryByRoleId(String.join(",", JIAN_CHA_ROLE_ID), null,
true, true, "", buildOrgCodePrefixes(orgCode)).getResult();
if (!ValidationUtil.isEmpty(taskExecutor)) {
String companyCodes = taskExecutor.stream()
.map(AgencyUserModel::getCompanys)
.filter(Objects::nonNull)
.filter(list -> !list.isEmpty())
.map(list -> list.get(0).getCompanyCode())
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.joining(","));
dto.setNextExecuteUserCompanyCode(companyCodes);
}
dto.setResultCode("approvalStatus"); dto.setResultCode("approvalStatus");
map.put("approvalStatus", "9"); map.put("approvalStatus", "9");
map.put("nextExecuteUserOrgCode", orgCode); map.put("nextExecuteUserOrgCode", orgCode);
...@@ -2270,6 +2285,15 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD ...@@ -2270,6 +2285,15 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
} }
} }
public static String buildOrgCodePrefixes(String orgCode) {
if (orgCode == null || orgCode.isEmpty()) return "";
String[] parts = orgCode.split("\\*");
List<String> prefixes = new ArrayList<>();
if (parts.length >= 3) prefixes.add(String.join("*", Arrays.copyOfRange(parts, 0, 3)));
if (parts.length >= 2) prefixes.add(String.join("*", Arrays.copyOfRange(parts, 0, 2)));
return String.join(",", prefixes);
}
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 6000000) @GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 6000000)
public void withdraw(String instanceId, String nextTaskId, String manageType) { public void withdraw(String instanceId, String nextTaskId, String manageType) {
......
...@@ -77,6 +77,21 @@ public class SafetyProblemTracingGenServiceImpl{ ...@@ -77,6 +77,21 @@ public class SafetyProblemTracingGenServiceImpl{
executePersonnalCertificationCheck(); executePersonnalCertificationCheck();
} }
@Scheduled(cron = "0 0 5 ? * SAT")
@SchedulerLock(name = "correctOverdueProblem", lockAtMostFor = "PT5H", lockAtLeastFor = "PT60M")
public void correctOverdueProblem() {
try {
logger.info("开始执行 overdue problem 修复任务");
long startTime = System.currentTimeMillis();
repairMaintenanceAndInspectionOverdueProblem();
long endTime = System.currentTimeMillis();
logger.info("overdue problem 修复任务执行完成,耗时: {} ms", (endTime - startTime));
} catch (Exception e) {
logger.error("执行 overdue problem 修复任务时发生异常", e);
}
}
public void executePersonnalCertificationCheck() { public void executePersonnalCertificationCheck() {
logger.info("开始人员资质超期检查"); logger.info("开始人员资质超期检查");
List<Map<String, Object>> certificationRecords = commonMapper.queryOutOfCertificationRecord(); List<Map<String, Object>> certificationRecords = commonMapper.queryOutOfCertificationRecord();
...@@ -236,7 +251,7 @@ public class SafetyProblemTracingGenServiceImpl{ ...@@ -236,7 +251,7 @@ public class SafetyProblemTracingGenServiceImpl{
} }
public void repairMaintenanceAndInspectionOverdueProblem() { public void repairMaintenanceAndInspectionOverdueProblem() {
logger.info("开始设备维保备案和建议检查超期数据修正"); logger.info("开始设备维保备案和检验检测超期数据修正");
Set<String> realOutOfMaintenanceRecord = commonMapper.queryOutOfMaintenanceRecord().stream().map(m -> m.get("RECORD").toString()).collect(Collectors.toSet()); Set<String> realOutOfMaintenanceRecord = commonMapper.queryOutOfMaintenanceRecord().stream().map(m -> m.get("RECORD").toString()).collect(Collectors.toSet());
Set<String> realOutOfInspectRecord = commonMapper.queryOutOfInspectionRecord().stream().map(m -> m.get("RECORD").toString()).collect(Collectors.toSet()); Set<String> realOutOfInspectRecord = commonMapper.queryOutOfInspectionRecord().stream().map(m -> m.get("RECORD").toString()).collect(Collectors.toSet());
// 需要修正业务表+es的数据 // 需要修正业务表+es的数据
...@@ -262,17 +277,27 @@ public class SafetyProblemTracingGenServiceImpl{ ...@@ -262,17 +277,27 @@ public class SafetyProblemTracingGenServiceImpl{
correctData.addAll(inspectionSet); correctData.addAll(inspectionSet);
} else if (!maintenanceSet.isEmpty()) { } else if (!maintenanceSet.isEmpty()) {
// 再次查询维保备案这些数据有没有检验超期的问题 // 再次查询维保备案这些数据有没有检验超期的问题
maintenanceSet.removeAll(realOutOfInspectRecord); // 找出仅在maintenanceSet中而不在realOutOfInspectRecord中的元素(真正需要更新的维保数据)
// 没有则可以愉快地更新设备状态为正常 List<String> maintenanceOnly = maintenanceSet.stream()
correctData.addAll(maintenanceSet); .filter(id -> !realOutOfMaintenanceRecord.contains(id))
// 再次查询检验这些数据有没有维保超期问题 .collect(Collectors.toList());
inspectionSet.removeAll(realOutOfMaintenanceRecord); // 找出仅在inspectionSet中而不在realOutOfMaintenanceRecord中的元素(真正需要更新的检验数据)
// 没有则可以愉快地更新设备状态为正常 List<String> inspectionOnly = inspectionSet.stream()
correctData.addAll(inspectionSet); .filter(id -> !realOutOfInspectRecord.contains(id))
.collect(Collectors.toList());
correctData.addAll(maintenanceOnly);
correctData.addAll(inspectionOnly);
}
if (!ValidationUtil.isEmpty(correctData)) {
logger.info("开始更新设备表和ES数据状态--updateOtherTableAndES");
int batchSize = 1000;
for (int i = 0; i < correctData.size(); i += batchSize) {
List<String> batch = correctData.subList(i, Math.min(i + batchSize, correctData.size()));
safetyProblemTracingService.updateOtherTableAndES(Sets.newHashSet(batch));
}
logger.info("更新设备表和ES数据状态完成--updateOtherTableAndES,更新数据:{}条", correctData.size());
} }
safetyProblemTracingService.updateOtherTableAndES(Sets.newHashSet(correctData));
logger.info("设备维保备案和检验超期数据修正完成,更新数据:{}条", correctData.size());
} }
private List<String> handleOutOfMaintenanceErrorData(Set<String> realOutOfMaintenanceRecord) { private List<String> handleOutOfMaintenanceErrorData(Set<String> realOutOfMaintenanceRecord) {
...@@ -280,6 +305,7 @@ public class SafetyProblemTracingGenServiceImpl{ ...@@ -280,6 +305,7 @@ public class SafetyProblemTracingGenServiceImpl{
if (ValidationUtil.isEmpty(realOutOfMaintenanceRecord)) { if (ValidationUtil.isEmpty(realOutOfMaintenanceRecord)) {
return Lists.newArrayList(); return Lists.newArrayList();
} }
logger.info("设备维保超期safety表数据修正开始,实际检验超期数据:{}条", realOutOfMaintenanceRecord.size());
List<SafetyProblemTracing> problemList = safetyProblemTracingService.list(new LambdaQueryWrapper<SafetyProblemTracing>() List<SafetyProblemTracing> problemList = safetyProblemTracingService.list(new LambdaQueryWrapper<SafetyProblemTracing>()
.select(SafetyProblemTracing::getSourceId) .select(SafetyProblemTracing::getSourceId)
.eq(SafetyProblemTracing::getProblemStatusCode, SafetyProblemStatusEnum.UNHANDLED.getCode()) .eq(SafetyProblemTracing::getProblemStatusCode, SafetyProblemStatusEnum.UNHANDLED.getCode())
...@@ -290,20 +316,29 @@ public class SafetyProblemTracingGenServiceImpl{ ...@@ -290,20 +316,29 @@ public class SafetyProblemTracingGenServiceImpl{
return Lists.newArrayList(); return Lists.newArrayList();
} }
// 追溯问题表中未处理的维保超期设备 // 追溯问题表中未处理的维保超期设备
List<String> outOfMaintenanceEquipIds = problemList.stream().map(SafetyProblemTracing::getSourceId).collect(Collectors.toList());
// 未超期但错误生成的维保超期设备 // 未超期但错误生成的维保超期设备
outOfMaintenanceEquipIds.removeIf(realOutOfMaintenanceRecord::contains); List<String> outOfMaintenanceEquipIds = problemList.stream()
.map(SafetyProblemTracing::getSourceId)
.filter(id -> !realOutOfMaintenanceRecord.contains(id))
.collect(Collectors.toList());
if (ValidationUtil.isEmpty(outOfMaintenanceEquipIds)) { if (ValidationUtil.isEmpty(outOfMaintenanceEquipIds)) {
return Lists.newArrayList(); return Lists.newArrayList();
} }
logger.info("设备维保超期safety表数据修正开始,待更新数据:{}条", outOfMaintenanceEquipIds.size());
// 分批处理更新
int batchSize = 1000;
for (int i = 0; i < outOfMaintenanceEquipIds.size(); i += batchSize) {
List<String> batch = outOfMaintenanceEquipIds.subList(i, Math.min(i + batchSize, outOfMaintenanceEquipIds.size()));
safetyProblemTracingService.lambdaUpdate() safetyProblemTracingService.lambdaUpdate()
.set(SafetyProblemTracing::getProblemStatusCode, SafetyProblemStatusEnum.HANDLED.getCode()) .set(SafetyProblemTracing::getProblemStatusCode, SafetyProblemStatusEnum.HANDLED.getCode())
.set(SafetyProblemTracing::getProblemStatus, SafetyProblemStatusEnum.HANDLED.getName()) .set(SafetyProblemTracing::getProblemStatus, SafetyProblemStatusEnum.HANDLED.getName())
.set(SafetyProblemTracing::getRecDate, new Date()) .set(SafetyProblemTracing::getRecDate, new Date())
.in(SafetyProblemTracing::getSourceId, outOfMaintenanceEquipIds) .in(SafetyProblemTracing::getSourceId, batch)
.eq(SafetyProblemTracing::getProblemTypeCode, SafetyProblemTypeEnum.WBCQ.getProblemTypeCode()) .eq(SafetyProblemTracing::getProblemTypeCode, SafetyProblemTypeEnum.WBCQ.getProblemTypeCode())
.eq(SafetyProblemTracing::getIsDelete,Boolean.FALSE) .eq(SafetyProblemTracing::getIsDelete,Boolean.FALSE)
.update(); .update();
}
logger.info("设备维保超期safety表数据修正完成,已更新数据:{}条", outOfMaintenanceEquipIds.size());
return outOfMaintenanceEquipIds; return outOfMaintenanceEquipIds;
} }
...@@ -312,6 +347,7 @@ public class SafetyProblemTracingGenServiceImpl{ ...@@ -312,6 +347,7 @@ public class SafetyProblemTracingGenServiceImpl{
if (ValidationUtil.isEmpty(realOutOfInspectRecord)) { if (ValidationUtil.isEmpty(realOutOfInspectRecord)) {
return Lists.newArrayList(); return Lists.newArrayList();
} }
logger.info("设备检验超期safety表数据修正开始,实际检验超期数据:{}条", realOutOfInspectRecord.size());
List<SafetyProblemTracing> problemList = safetyProblemTracingService.list(new LambdaQueryWrapper<SafetyProblemTracing>() List<SafetyProblemTracing> problemList = safetyProblemTracingService.list(new LambdaQueryWrapper<SafetyProblemTracing>()
.select(SafetyProblemTracing::getSourceId) .select(SafetyProblemTracing::getSourceId)
.eq(SafetyProblemTracing::getProblemStatusCode, SafetyProblemStatusEnum.UNHANDLED.getCode()) .eq(SafetyProblemTracing::getProblemStatusCode, SafetyProblemStatusEnum.UNHANDLED.getCode())
...@@ -322,20 +358,29 @@ public class SafetyProblemTracingGenServiceImpl{ ...@@ -322,20 +358,29 @@ public class SafetyProblemTracingGenServiceImpl{
return Lists.newArrayList(); return Lists.newArrayList();
} }
// 追溯问题表中未处理的检验超期设备 // 追溯问题表中未处理的检验超期设备
List<String> outOfInspectionEquipIds = problemList.stream().map(SafetyProblemTracing::getSourceId).collect(Collectors.toList());
// 未超期但错误生成的检验超期设备 // 未超期但错误生成的检验超期设备
outOfInspectionEquipIds.removeIf(realOutOfInspectRecord::contains); List<String> outOfInspectionEquipIds = problemList.stream()
.map(SafetyProblemTracing::getSourceId)
.filter(id -> !realOutOfInspectRecord.contains(id))
.collect(Collectors.toList());
if (ValidationUtil.isEmpty(outOfInspectionEquipIds)) { if (ValidationUtil.isEmpty(outOfInspectionEquipIds)) {
return Lists.newArrayList(); return Lists.newArrayList();
} }
logger.info("设备检验超期safety表数据修正开始,待更新数据:{}条", outOfInspectionEquipIds.size());
// 分批处理更新
int batchSize = 1000;
for (int i = 0; i < outOfInspectionEquipIds.size(); i += batchSize) {
List<String> batch = outOfInspectionEquipIds.subList(i, Math.min(i + batchSize, outOfInspectionEquipIds.size()));
safetyProblemTracingService.lambdaUpdate() safetyProblemTracingService.lambdaUpdate()
.set(SafetyProblemTracing::getProblemStatusCode, SafetyProblemStatusEnum.HANDLED.getCode()) .set(SafetyProblemTracing::getProblemStatusCode, SafetyProblemStatusEnum.HANDLED.getCode())
.set(SafetyProblemTracing::getProblemStatus, SafetyProblemStatusEnum.HANDLED.getName()) .set(SafetyProblemTracing::getProblemStatus, SafetyProblemStatusEnum.HANDLED.getName())
.set(SafetyProblemTracing::getRecDate, new Date()) .set(SafetyProblemTracing::getRecDate, new Date())
.in(SafetyProblemTracing::getSourceId, outOfInspectionEquipIds) .in(SafetyProblemTracing::getSourceId, batch)
.eq(SafetyProblemTracing::getProblemTypeCode, SafetyProblemTypeEnum.JYCQ.getProblemTypeCode()) .eq(SafetyProblemTracing::getProblemTypeCode, SafetyProblemTypeEnum.JYCQ.getProblemTypeCode())
.eq(SafetyProblemTracing::getIsDelete,Boolean.FALSE) .eq(SafetyProblemTracing::getIsDelete,Boolean.FALSE)
.update(); .update();
}
logger.info("设备检验超期safety表数据修正完成,已更新数据:{}条", outOfInspectionEquipIds.size());
return outOfInspectionEquipIds; return outOfInspectionEquipIds;
} }
......
...@@ -466,7 +466,7 @@ ...@@ -466,7 +466,7 @@
v.use_unit_code useUnitCode, v.use_unit_code useUnitCode,
(SELECT use_unit FROM tz_base_enterprise_info WHERE use_code = v.use_unit_code) useUnit (SELECT use_unit FROM tz_base_enterprise_info WHERE use_code = v.use_unit_code) useUnit
FROM FROM
tz_base_enterprise_video v tz_base_enterprise_video_node v
WHERE WHERE
region_code LIKE CONCAT('%', #{cityCode}, '%') region_code LIKE CONCAT('%', #{cityCode}, '%')
GROUP BY GROUP BY
......
...@@ -60,4 +60,11 @@ public class VideoController { ...@@ -60,4 +60,11 @@ public class VideoController {
List<CommonVideoDto> re = videoService.getVideoList(useUnitCode, regionCode); List<CommonVideoDto> re = videoService.getVideoList(useUnitCode, regionCode);
return ResponseHelper.buildResponse(re); return ResponseHelper.buildResponse(re);
} }
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "查询骏景视频平台的视频数据并写入数据库", httpMethod = "GET")
@GetMapping(value = "/junjing/hk")
public ResponseModel<Boolean> saveOrUpdateVideos(@RequestParam(value = "sequenceNbr") String sequenceNbr) {
boolean re = videoService.saveOrUpdateVideos(sequenceNbr);
return ResponseHelper.buildResponse(re);
}
} }
{
"西安":"610000#610100",
"铜川":"610000#610200",
"宝鸡":"610000#610300",
"咸阳":"610000#610400",
"渭南":"610000#610500",
"延安":"610000#610600",
"汉中":"610000#610700",
"榆林":"610000#610800",
"安康":"610000#610900",
"商洛":"610000#611000"
}
\ No newline at end of file
...@@ -208,4 +208,9 @@ public class TzBaseEnterpriseInfo extends BaseEntity { ...@@ -208,4 +208,9 @@ public class TzBaseEnterpriseInfo extends BaseEntity {
*/ */
@TableField(value = "create_date") @TableField(value = "create_date")
private Date createDate; private Date createDate;
/**
* 组织机构
*/
@TableField(value = "org_code")
private String orgCode;
} }
...@@ -81,8 +81,7 @@ public class TzBaseEnterpriseInfoServiceImpl ...@@ -81,8 +81,7 @@ public class TzBaseEnterpriseInfoServiceImpl
@Autowired @Autowired
DataDictionaryServiceImpl iDataDictionaryService; DataDictionaryServiceImpl iDataDictionaryService;
@Autowired
RegUnitInfoMapper regUnitInfoMapper;
@Autowired @Autowired
StartPlatformTokenService platformTokenService; StartPlatformTokenService platformTokenService;
......
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