zxl
2025-04-30 815a9b04ef7e3df21d8b679376603b335656f5e8
订单下发,订单下发定时任务处理
9个文件已修改
102 ■■■■■ 已修改文件
ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/HKTask.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/MonitorTask.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/UYTask.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/WorkOrderTask.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java
@@ -16,6 +16,7 @@
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
@@ -122,4 +123,6 @@
    List<WorkOrderVO> getHandleTimeList(@Param("workOrderNos")List<String> workOrderNos);
    WorkOrderDetailVO detailByNoButNoDistributeRecord(String workOrderNo);
    List<WorkOrderVO> distributeList(Date startDate, Date endDate);
}
ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
@@ -16,6 +16,7 @@
import org.bytedeco.javacv.FFmpegFrameGrabber;
import java.io.IOException;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -126,6 +127,7 @@
     */
    Result distributePage(DistributeWorkOrderQuery query);
    List<WorkOrderVO> distributeList(Date startDate, Date endDate);
    /**
     * 快速下发
     * @param data
ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java
@@ -19,6 +19,7 @@
import enumeration.general.WorkOrderStatusEnum;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -36,6 +37,7 @@
 */
@Service
@RequiredArgsConstructor
@Slf4j
public class UYErrorTypeCheckServiceImpl implements UYErrorTypeCheckService {
    private final WorkOrderService workOrderService;
@@ -187,6 +189,8 @@
            ywThresholdService.check(YwThreadConstants.Video_DiffTime, timeDiff, item.getDeviceNo(), ywThresholdMap, workOrder, CompareType.MORE_THAN_EQ, ErrorType.CLOCK_SKEW.getValue());
            return workOrder;
        }).collect(Collectors.toList());
        log.error("osdCheck获得插入工单:{}",workOrderList);
        workOrderService.innerAddWorkOrder(workOrderList);
    }
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -62,6 +62,7 @@
import pojo.CascadeOption;
import utils.file.FileUtils;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
@@ -806,6 +807,11 @@
    }
    @Override
    public List<WorkOrderVO> distributeList(Date startDate, Date endDate){
        return  baseMapper.distributeList(startDate,endDate);
    }
    @Override
    @Transactional
    public Result distributeFast(DistributeWorkOrderVO data) {
        // 获取当前时间
@@ -862,6 +868,9 @@
        }
    }
    @Override
    @Transactional
    public Result selectedIdsDistribute(DistributeWorkOrderQuery query) {
ycl-server/src/main/java/com/ycl/task/HKTask.java
@@ -9,13 +9,11 @@
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.param.HK.*;
import com.ycl.platform.domain.result.HK.*;
import com.ycl.platform.domain.result.UY.MonitorQualifyResult;
import com.ycl.platform.domain.result.UY.VideoOnlineResult;
import com.ycl.platform.domain.vo.UpdateOnlineVO;
import com.ycl.platform.mapper.CheckIndexCarMapper;
import com.ycl.platform.mapper.CheckIndexFaceMapper;
import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.mapper.WorkOrderMapper;
import com.ycl.platform.service.*;
import com.ycl.utils.DateUtils;
import constant.ApiConstants;
@@ -608,7 +606,6 @@
                    }
                }
                log.error("打印hkResultLabels:{}",hkResultLabels);
            }
        }
        if (faceLabelId == null || carLabelId == null){
@@ -650,7 +647,6 @@
                    //以批次id为key 放入 JSONObject对象
                    map.put(Integer.valueOf(batchIdKey),batch);
                    //批次id 下 各区信息集合
                    log.error("打印出data内容中批次id:{},以及对应的结果info:{}",batchIdKey,batch);
                }
                //获得最大的键值
                Optional<Integer> maxKey = map.keySet().stream()
@@ -720,7 +716,7 @@
                        //批次id 下 各区信息集合
                        log.error("打印出省厅人脸data内容中批次id:{},以及对应的结果info:{}",batchIdKey,batch);
                    }
                    //获得最大的键值
                //获得最大的键值
                    Optional<Integer> maxKey = map.keySet().stream()
                            .max(Integer::compareTo);
                    if (maxKey.isPresent()) {
@@ -785,8 +781,6 @@
        Map<String,List<HkResultInfo>> provincialGroupedByAreaName = provincialList.stream()
                .collect(Collectors.groupingBy(HkResultInfo::getAreaCode));
        for (Map.Entry<String, List<HkResultInfo>> entry : provincialGroupedByAreaName.entrySet()) {
            log.error("最新批次内省厅数据:{}",provincialGroupedByAreaName.get(entry.getKey()).size());
            log.error("最新批次内省厅size:{}",provincialGroupedByAreaName.get(entry.getKey()));
            CheckIndexCar car = new CheckIndexCar();
            CheckIndexFace face = new CheckIndexFace();
            score3Index(provincialGroupedByAreaName.get(entry.getKey()), car, face,entry.getKey());
ycl-server/src/main/java/com/ycl/task/MonitorTask.java
@@ -115,7 +115,7 @@
                monitorList.add(monitor);
                ywPointList.add(point);
            }
            log.error("同步mongo新ywpoint数据{}",ywPointList);
            //添加老数据
            List<String> numbers = CollectionUtils.isEmpty(monitorList) ? new ArrayList<>() : monitorList.stream().map(TMonitor::getSerialNumber).collect(Collectors.toList());
            monitorVOMap.forEach((key, value) -> {
@@ -142,7 +142,7 @@
                    ywPointList.add(value);
                }
            });
            log.error("同步mongo新加旧ywpoint数据{}",ywPointList);
            log.info("result集合{},设备集合{},点位集合{}", oneMachineFileResults.size(), monitorList.size(), ywPointList.size());
            //插入数据库
            if (!CollectionUtils.isEmpty(monitorList)) {
ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -318,6 +318,7 @@
                .map(TMonitorResult::getWorkOrder)
                .collect(Collectors.toList());
        if (!CollectionUtils.isEmpty(workOrderList)) {
            log.error("pointOnline获得插入工单:{}",workOrderList);
            workOrderService.innerAddWorkOrder(workOrderList);
        }
        log.info("点位在线监测完成");
ycl-server/src/main/java/com/ycl/task/WorkOrderTask.java
@@ -1,8 +1,12 @@
package com.ycl.task;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.ycl.platform.domain.entity.WorkOrder;
import com.ycl.platform.domain.query.DistributeWorkOrderQuery;
import com.ycl.platform.domain.vo.WorkOrderVO;
import com.ycl.platform.domain.vo.YwPointJobVO;
import com.ycl.platform.mapper.WorkOrderMapper;
import com.ycl.platform.service.WorkOrderService;
import com.ycl.system.domain.SysConfig;
import com.ycl.system.mapper.SysConfigMapper;
import com.ycl.utils.DateUtils;
@@ -13,6 +17,8 @@
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@@ -25,6 +31,7 @@
@Component("workOrderTask")
public class WorkOrderTask {
    private final WorkOrderService workOrderService;
    private final WorkOrderMapper workOrderMapper;
    private final SysConfigMapper configMapper;
@@ -74,4 +81,30 @@
            workOrderMapper.updateById(wo);
        }
    }
    public static List<String> errType = new ArrayList<>(List.of("OSD","ABNORMALPIC","DEVICEOFFLINE"));
    //工单下发定时任务, 工单因为更新导致 状态变为待下发,根据错误类型将需要直接下发工单
    //离线,图形异常,osd错误
    public void workOrderDistribute(){
        //查询今日待下发工单
        Date now = new Date();
        Date startDate = DateUtils.getDayStart(now);
        Date endDate = DateUtils.getDayEnd(now);
        //获得今日工单
        List<WorkOrderVO> list = workOrderService.distributeList(startDate,endDate);
        List<String> worderNos = new ArrayList<>();
        for (WorkOrderVO workOrderVO : list){
           for (String errType : workOrderVO.getErrorTypeList()){
               if (WorkOrderTask.errType.contains(errType)){
                   //判断工单是否包含errType中的错误类型
                   worderNos.add(workOrderVO.getWorkOrderNo());
                   break;
               }
           }
        }
        DistributeWorkOrderQuery distributeWorkOrderQuery = new DistributeWorkOrderQuery();
        distributeWorkOrderQuery.setWorkOrderNOList(worderNos);
        //下发接口
        workOrderService.selectedIdsDistribute(distributeWorkOrderQuery);
    }
}
ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -162,6 +162,44 @@
        p.yw_person_name
        ORDER BY wo.work_order_no DESC
    </select>
    <select id="distributeList" resultMap="com.ycl.platform.domain.vo.WorkOrderVO">
        SELECT
            wo.id,wo.status, wo.work_order_no,wo.create_time, wo.unit_id, wo.yw_people_id, wo.yw_handle_time, wo.yw_result,
            wo.yw_check_result, wo.overtime, wo.deduct,
            u.unit_name,
            p.yw_person_name,
            yp.serial_number,
            yp.important_tag,
            yp.important_command_image_tag,
            odr.create_time as distributeTime,
            su.nick_name as realName,
            tm.name as source,
            GROUP_CONCAT(DISTINCT da.dict_label ORDER BY da.dict_label SEPARATOR '、') AS errorType
        FROM
            t_work_order wo
                INNER JOIN t_monitor tm ON wo.serial_number = tm.serial_number
                INNER JOIN t_yw_point yp ON yp.serial_number = wo.serial_number AND yp.deleted = 0
                INNER JOIN t_yw_unit u ON wo.unit_id = u.id and u.deleted = 0
                INNER JOIN t_work_order_error_type et ON wo.work_order_no = et.work_order_no
                INNER JOIN sys_dict_data da ON da.dict_value = et.error_name AND da.dict_type = 'error_type'
                LEFT JOIN t_yw_people p ON wo.yw_people_id = p.id and p.deleted = 0
                LEFT JOIN t_work_order_distribute_record odr ON odr.work_order_no = wo.work_order_no AND odr.deleted = 0
                LEFT JOIN sys_user su ON su.user_id = odr.user_id
        WHERE
            wo.deleted = 0
          AND wo.create_time BETWEEN #{startDate} AND #{endDate}
        GROUP BY
            wo.id, wo.status, wo.work_order_no,wo.create_time, wo.unit_id, wo.yw_people_id, tm.name, wo.yw_handle_time,
            wo.yw_result, wo.yw_check_result, wo.overtime, wo.deduct,
            u.unit_name,
            p.yw_person_name,
            yp.important_tag,
            yp.important_command_image_tag,
            odr.create_time,
            su.nick_name
        ORDER BY wo.create_time DESC
    </select>
    <select id="distributePage" resultType="com.ycl.platform.domain.vo.WorkOrderVO">
        SELECT
        wo.id,wo.status, wo.work_order_no,wo.create_time, wo.unit_id, wo.yw_people_id, wo.yw_handle_time, wo.yw_result,