xiangpei
2024-08-30 1ffc844e3483cd3ac7cc73b5fb17c62e09d1ff2f
工单取图像查询工单范围调整、分页图片查询
8个文件已修改
56 ■■■■ 已修改文件
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/HKTask.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/UYTask.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/WorkOrderImgTask.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java
@@ -55,10 +55,18 @@
    /** 故障类型 */
    private List<String> errorTypeList;
    /** 故障类型 */
    private String errorType;
    /** 工单检测图片 */
    private String imgListStr;
    private List<String> imgList;
    /** 运维人员 */
    private Integer ywPeopleId;
    private String ywPeopleName;
    /** 运维处理时间 */
@@ -89,6 +97,7 @@
     * 是否扣过积分
     */
    private Boolean deduct;
    public static WorkOrderVO getVoByEntity(@NonNull WorkOrder entity, WorkOrderVO vo) {
        if(vo == null) {
            vo = new WorkOrderVO();
ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java
@@ -14,6 +14,7 @@
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -70,7 +71,7 @@
     * 查询工单设备信息
     * @return
     */
    List<DeviceInfoVO> hasErrorWorkOrderList();
    List<DeviceInfoVO> hasErrorWorkOrderList(@Param("start") Date start, @Param("end") Date end);
    List<WorkOrderVO> selectPassOrder(@Param("startTime") LocalDateTime now, @Param("endTime")LocalDateTime thirtyDaysAgo, @Param("status") String status, @Param("auditStatus") String auditStatus);
ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
@@ -13,6 +13,7 @@
import com.ycl.system.Result;
import org.bytedeco.javacv.FFmpegFrameGrabber;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -193,9 +194,11 @@
    /**
     * 查询工单:已下发、已处理、已完成的工单
     *
     * @param start 开始时间
     * @param end 结束时间
     * @return 数据
     */
    List<DeviceInfoVO> hasErrorWorkOrderList();
    List<DeviceInfoVO> hasErrorWorkOrderList(Date start, Date end);
    /**
     * 更新工单图片
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -109,6 +109,13 @@
        if (CollectionUtils.isEmpty(workOrderList)) {
            return Boolean.TRUE;
        }
        // 根据国标码去重
        workOrderList = workOrderList.stream()
                .collect(Collectors.toMap(
                        WorkOrder::getSerialNumber,
                        p -> p,
                        (existing, replacement) -> existing // 冲突时保留第一个
                )).values().stream().collect(Collectors.toList());
        List<String> serialNumberList = workOrderList.stream().map(WorkOrder::getSerialNumber).collect(Collectors.toList());
        // 查出数据库中国标码对应的未完成的工单
        List<WorkOrder> inDatabaseWorkOrderList = new LambdaQueryChainWrapper<>(baseMapper)
@@ -460,6 +467,9 @@
                if (StringUtils.hasText(item.getErrorType())) {
                    item.setErrorTypeList(List.of(item.getErrorType().split(",")));
                }
                if (StringUtils.hasText(item.getImgListStr())) {
                    item.setImgList(List.of(item.getImgListStr().split(",")));
                }
            });
        }
        return Result.ok().data(page.getRecords()).total(page.getTotal());
@@ -714,8 +724,8 @@
    }
    @Override
    public List<DeviceInfoVO> hasErrorWorkOrderList() {
        List<DeviceInfoVO> list = baseMapper.hasErrorWorkOrderList();
    public List<DeviceInfoVO> hasErrorWorkOrderList(Date start, Date end) {
        List<DeviceInfoVO> list = baseMapper.hasErrorWorkOrderList(start, end);
        return list;
    }
ycl-server/src/main/java/com/ycl/task/HKTask.java
@@ -65,6 +65,7 @@
            //同步的数据进行工单阈值处理
            ywThresholdService.carCheck(list);
        }
        // 本地测试
//        Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date())));
//        ywThresholdService.carCheck(mongoTemplate.find(query, VehicleDeviceInspectionResult.class));
        log.info("结束车辆设备全检指标监测结果数据同步");
@@ -85,7 +86,6 @@
            //存放在mongo中
            mongoTemplate.insertAll(list);
            //同步的数据进行工单阈值处理
            //TODO:可能有重复工单
            ywThresholdService.faceCheck(list);
        }
//        Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date())));
ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -95,6 +95,7 @@
        } else {
            log.error("图像监测数据为空");
        }
        // 本地测试
//        Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date())));
//        uyErrorTypeCheckService.imageDetectionCheck(mongoTemplate.find(query, ImageDetectionResult.class));
        log.info("结束执行图像监测数据同步");
@@ -135,6 +136,7 @@
        } else {
            log.error("一机一档合格率数据为空");
        }
        // 本地测试
//        Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date())));
//        uyErrorTypeCheckService.monitorQualifyCheck(mongoTemplate.find(query, MonitorQualifyResult.class));
        log.info("结束一机一档合格率数据同步");
@@ -178,6 +180,7 @@
        } else {
            log.error("点位在线结果数据为空");
        }
        // 本地测试
//        Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date())));
//        uyErrorTypeCheckService.videoOnlineCheck(mongoTemplate.find(query, VideoOnlineResult.class));
        log.info("结束执行点位在线数据同步");
@@ -213,6 +216,7 @@
                log.error("录像可用数据为空{}", jsonObject);
            }
        }
        // 本地测试
//        Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date())));
//        uyErrorTypeCheckService.recordMetaDSumCheck(mongoTemplate.find(query, RecordMetaDSumResult.class));
        log.info("结束执行录像可用数据同步");
ycl-server/src/main/java/com/ycl/task/WorkOrderImgTask.java
@@ -15,6 +15,7 @@
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;
@@ -41,13 +42,17 @@
            24,
            5000,
            TimeUnit.SECONDS,
            new ArrayBlockingQueue<>(10),
            new ArrayBlockingQueue<>(600),
            new ThreadPoolExecutor.CallerRunsPolicy()
    );
    public void run() {
        // 查出故障的设备
        List<DeviceInfoVO> deviceList = workOrderService.hasErrorWorkOrderList();
        // 查出最近一周的故障的设备
        Date now = new Date();
        Calendar ca = Calendar.getInstance();
        ca.setTime(now);
        ca.add(Calendar.DATE, -6);
        List<DeviceInfoVO> deviceList = workOrderService.hasErrorWorkOrderList(now, ca.getTime());
        if (CollectionUtils.isEmpty(deviceList)) {
            return;
        }
ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -17,6 +17,7 @@
        <result column="errorType" property="errorType"/>
        <result column="status" property="status"/>
        <result column="source" property="source"/>
        <result column="imgListStr" property="imgListStr"/>
<!--        <collection property="errorTypeList" select="getErrorType" column="{workOrderNo=work_order_no,errList=errList}" ofType="string"/>-->
    </resultMap>
@@ -35,11 +36,13 @@
        u.unit_name,
        p.yw_person_name,
        tm.name as source,
        GROUP_CONCAT(DISTINCT da.dict_label ORDER BY da.dict_label SEPARATOR ',') AS errorType
        GROUP_CONCAT(DISTINCT da.dict_label ORDER BY da.dict_label SEPARATOR ',') AS errorType,
        GROUP_CONCAT(DISTINCT ci.img_url ORDER BY ci.create_time DESC SEPARATOR ',') AS imgListStr
        FROM
        t_work_order wo
        INNER JOIN t_monitor tm ON wo.serial_number = tm.serial_number
        INNER JOIN t_work_order_error_type et ON wo.work_order_no = et.work_order_no
        INNER JOIN t_work_order_check_img ci ON ci.work_order_no = wo.work_order_no
        INNER JOIN sys_dict_data da ON da.dict_value = et.error_name AND da.dict_type = 'error_type' <if test="query.errorTypeList != null and query.errorTypeList.size() > 0">AND da.dict_value in <foreach
            collection="query.errorTypeList" open="(" separator="," close=")" item="errorType">#{errorType}</foreach> </if>
        LEFT JOIN t_yw_unit u ON wo.unit_id = u.id AND u.deleted = 0
@@ -222,7 +225,8 @@
        FROM
             t_work_order wo
        WHERE
            deleted = 0
            wo.create_time BETWEEN #{start} AND #{end}
            AND deleted = 0
    </select>
    <insert id="addMany">