xiangpei
2024-09-01 1b74e131111650d28b5d67b7e6c1b62db57736ad
定时任务工单生成优化
6个文件已修改
186 ■■■■■ 已修改文件
ycl-pojo/src/main/java/com/ycl/platform/domain/query/PlatformQuery.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/UYTask.java 126 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/PlatformMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/query/PlatformQuery.java
@@ -13,5 +13,11 @@
@Data
@ApiModel(value = "Platform查询", description = "平台运行监控查询")
public class PlatformQuery extends AbsQuery {
    /**
     * 关键字搜索
     */
    private String keyword;
}
ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java
@@ -84,4 +84,12 @@
     * @return
     */
    int updateMany(List<WorkOrder> workOrderList);
    /**
     * 获取未完成的工单
     *
     * @param serialNumberList
     * @return
     */
    List<WorkOrder> getNotFinishedWorkOrders(@Param("list") List<String> serialNumberList);
}
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -118,11 +118,14 @@
                )).values().stream().collect(Collectors.toList());
        List<String> serialNumberList = workOrderList.stream().map(WorkOrder::getSerialNumber).collect(Collectors.toList());
        // 查出数据库中国标码对应的未完成的工单
        List<WorkOrder> inDatabaseWorkOrderList = new LambdaQueryChainWrapper<>(baseMapper)
                .select(WorkOrder::getId, WorkOrder::getSerialNumber, WorkOrder::getStatus, WorkOrder::getWorkOrderNo)
                .in(WorkOrder::getSerialNumber, serialNumberList)
                .ne(WorkOrder::getStatus, WorkOrderStatusEnum.AUDITING_SUCCESS)
                .list();
        List<WorkOrder> inDatabaseWorkOrderList = baseMapper.getNotFinishedWorkOrders(serialNumberList);
        inDatabaseWorkOrderList.stream().forEach(item -> {
            if (StringUtils.hasText(item.getErrorType())) {
                item.setErrorTypeList(List.of(item.getErrorType().split(",")));
            } else {
                item.setErrorTypeList(new ArrayList<>(1));
            }
        });
        Map<String, WorkOrder> mapping = inDatabaseWorkOrderList.stream().collect((Collectors.toMap(WorkOrder::getSerialNumber, workOrder -> workOrder)));
        List<WorkOrder> waitAddList = new ArrayList<>(48);
        List<WorkOrderErrorType> waitAddErrorTypeList = new ArrayList<>(48);
@@ -137,7 +140,7 @@
        for (WorkOrder workOrder : workOrderList) {
            WorkOrder databaseWorkOrder = mapping.get(workOrder.getSerialNumber());
            if (Objects.nonNull(databaseWorkOrder)) {
                List<String> errorNameList = workOrderErrorTypeService.getBaseMapper().getNotFinishWorkOrderErrors(databaseWorkOrder.getWorkOrderNo());
                List<String> errorNameList = databaseWorkOrder.getErrorTypeList();
                List<String> errorTypes = workOrder.getErrorTypeList();
                if (errorNameList.containsAll(errorTypes)) {
                    // 如果,国标码、故障类型都一样,则跳过不处理
ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -62,42 +62,42 @@
    // 图像检测
    public void imageDetection() {
        log.info("开始执行图像检测数据同步");
        ImageDetectionParam param = new ImageDetectionParam();
        param.setPageNum(ApiConstants.PageNo);
        param.setPageSize(ApiConstants.PageSize);
        param.setArealayerno(ApiConstants.AreaNo);
        JSONObject jsonObject = uyClient.imageDetection(param);
        if (jsonObject != null) {
            log.info("数据格式" + jsonObject);
            Integer statusCode = jsonObject.getInteger("statusCode");
            if (ApiConstants.UYSuccessCode.equals(statusCode)) {
                JSONObject data = jsonObject.getJSONObject("data");
                if (data != null) {
                    List<ImageDetectionResult> records = data.getList("records", ImageDetectionResult.class);
                    if (!CollectionUtils.isEmpty(records)) {
                        //如果今天存在之前的数据先删除
                        Query query = new Query(Criteria
                                .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
                        DeleteResult result = mongoTemplate.remove(query, ImageDetectionResult.class);
                        //存放在mongo中
                        mongoTemplate.insertAll(records);
                        // 工单生成
                        uyErrorTypeCheckService.imageDetectionCheck(records);
                    } else {
                        log.error("图像监测数据为空{}", data);
                    }
                } else {
                    log.error("图像监测数据为空{}", jsonObject);
                }
            } else {
                log.error("图像监测请求失败{}", jsonObject);
            }
        } else {
            log.error("图像监测数据为空");
        }
//        ImageDetectionParam param = new ImageDetectionParam();
//        param.setPageNum(ApiConstants.PageNo);
//        param.setPageSize(ApiConstants.PageSize);
//        param.setArealayerno(ApiConstants.AreaNo);
//        JSONObject jsonObject = uyClient.imageDetection(param);
//        if (jsonObject != null) {
//            log.info("数据格式" + jsonObject);
//            Integer statusCode = jsonObject.getInteger("statusCode");
//            if (ApiConstants.UYSuccessCode.equals(statusCode)) {
//                JSONObject data = jsonObject.getJSONObject("data");
//                if (data != null) {
//                    List<ImageDetectionResult> records = data.getList("records", ImageDetectionResult.class);
//                    if (!CollectionUtils.isEmpty(records)) {
//                        //如果今天存在之前的数据先删除
//                        Query query = new Query(Criteria
//                                .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
//                        DeleteResult result = mongoTemplate.remove(query, ImageDetectionResult.class);
//                        //存放在mongo中
//                        mongoTemplate.insertAll(records);
//                        // 工单生成
//                        uyErrorTypeCheckService.imageDetectionCheck(records);
//                    } else {
//                        log.error("图像监测数据为空{}", data);
//                    }
//                } else {
//                    log.error("图像监测数据为空{}", jsonObject);
//                }
//            } else {
//                log.error("图像监测请求失败{}", jsonObject);
//            }
//        } else {
//            log.error("图像监测数据为空");
//        }
        // 本地测试
//        Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date())));
//        uyErrorTypeCheckService.imageDetectionCheck(mongoTemplate.find(query, ImageDetectionResult.class));
        Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date())));
        uyErrorTypeCheckService.imageDetectionCheck(mongoTemplate.find(query, ImageDetectionResult.class));
        log.info("结束执行图像监测数据同步");
    }
@@ -190,35 +190,35 @@
    public void recordMetaDSumTask() {
        //录像可用率
        log.info("开始执行录像可用数据同步");
        RecordMetaDSumParam param = new RecordMetaDSumParam();
        param.setTenantId(tenantId);
        Calendar instance = Calendar.getInstance();
        instance.setTime(new Date());
        instance.add(Calendar.DAY_OF_MONTH, -1);
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        String yesterday = format.format(instance.getTime());
        param.setStatTime(yesterday);
        JSONObject jsonObject = uyClient.recordMetaDSumList(param);
        if (jsonObject != null) {
            if (ApiConstants.UYSuccessCodeStr.equals(jsonObject.getString("code"))) {
                List<RecordMetaDSumResult> records = jsonObject.getList("data", RecordMetaDSumResult.class);
                if (!CollectionUtils.isEmpty(records)) {
                    //如果今天存在之前的数据先删除
                    Query query = new Query(Criteria
                            .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
                    DeleteResult result = mongoTemplate.remove(query, RecordMetaDSumResult.class);
                    //存放在mongo中
                    mongoTemplate.insertAll(records);
                    // 工单生成
                    uyErrorTypeCheckService.recordMetaDSumCheck(records);
                }
            } else {
                log.error("录像可用数据为空{}", jsonObject);
            }
        }
//        RecordMetaDSumParam param = new RecordMetaDSumParam();
//        param.setTenantId(tenantId);
//        Calendar instance = Calendar.getInstance();
//        instance.setTime(new Date());
//        instance.add(Calendar.DAY_OF_MONTH, -1);
//        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
//        String yesterday = format.format(instance.getTime());
//        param.setStatTime(yesterday);
//        JSONObject jsonObject = uyClient.recordMetaDSumList(param);
//        if (jsonObject != null) {
//            if (ApiConstants.UYSuccessCodeStr.equals(jsonObject.getString("code"))) {
//                List<RecordMetaDSumResult> records = jsonObject.getList("data", RecordMetaDSumResult.class);
//                if (!CollectionUtils.isEmpty(records)) {
//                    //如果今天存在之前的数据先删除
//                    Query query = new Query(Criteria
//                            .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
//                    DeleteResult result = mongoTemplate.remove(query, RecordMetaDSumResult.class);
//                    //存放在mongo中
//                    mongoTemplate.insertAll(records);
//                    // 工单生成
//                    uyErrorTypeCheckService.recordMetaDSumCheck(records);
//                }
//            } else {
//                log.error("录像可用数据为空{}", jsonObject);
//            }
//        }
        // 本地测试
//        Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date())));
//        uyErrorTypeCheckService.recordMetaDSumCheck(mongoTemplate.find(query, RecordMetaDSumResult.class));
        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/resources/mapper/zgyw/PlatformMapper.xml
@@ -52,6 +52,9 @@
            t_platform TP
        WHERE
            TP.deleted = 0
            <if test="query.keyword != null and query.keyword != ''">
                AND (TP.platform_name like concat('%', #{query.keyword}, '%') or TP.platform_ip like concat('%', #{query.keyword}, '%'))
            </if>
    </select>
</mapper>
ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -254,4 +254,32 @@
            WHERE id = #{item.id}
        </foreach>
    </update>
    <select id="getNotFinishedWorkOrders" resultMap="GenWorkOrderMap">
        SELECT
            wo.id,
            wo.serial_number,
            wo.status,
            wo.work_order_no,
            GROUP_CONCAT(DISTINCT et.error_name SEPARATOR ',') AS error_names
        FROM
             t_work_order wo
                LEFT JOIN t_work_order_error_type et ON et.work_order_no = wo.work_order_no
        WHERE
            wo.status != 'AUDITING_SUCCESS'
            AND wo.deleted = 0
            AND wo.serial_number in <foreach collection="list" open="(" separator="," close=")" item="serialNumber">
                #{serialNumber}
            </foreach>
        GROUP BY
            wo.id, wo.serial_number, wo.status, wo.work_order_no
    </select>
    <resultMap id="GenWorkOrderMap" type="com.ycl.platform.domain.entity.WorkOrder">
        <id column="id" property="id"/>
        <result column="serial_number" property="serialNumber"/>
        <result column="status" property="status" typeHandler="com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler"/>
        <result column="error_names" property="errorType"/>
    </resultMap>
</mapper>