fuliqi
2024-11-12 d22bbb827940050d4df2bf3fb16dae79eba91d4e
批量审核bug,离线时间点回显
7个文件已修改
99 ■■■■■ 已修改文件
ycl-pojo/src/main/java/com/ycl/platform/domain/form/WorkOrderAuditingForm.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/form/WorkOrderBatchAuditingForm.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/UYTask.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/form/WorkOrderAuditingForm.java
@@ -1,8 +1,10 @@
package com.ycl.platform.domain.form;
import com.ycl.platform.base.AbsForm;
import com.ycl.system.domain.group.Update;
import enumeration.general.WorkOrderStatusEnum;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
@@ -17,7 +19,7 @@
    /**
     * 审核结果
     */
    @NotBlank(message = "审核结果不能为空")
    @NotNull(message = "审核结果不能为空", groups = {Update.class})
    private WorkOrderStatusEnum auditingResult;
    /**
ycl-pojo/src/main/java/com/ycl/platform/domain/form/WorkOrderBatchAuditingForm.java
@@ -1,8 +1,10 @@
package com.ycl.platform.domain.form;
import com.ycl.system.domain.group.Update;
import enumeration.general.WorkOrderStatusEnum;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.util.List;
@@ -19,7 +21,7 @@
    /**
     * 审核结果
     */
    @NotBlank(message = "审核结果不能为空")
    @NotNull(message = "审核结果不能为空", groups = {Update.class})
    private WorkOrderStatusEnum auditingResult;
    /**
@@ -30,7 +32,7 @@
    /**
     * 工单编号
     */
    @NotEmpty(message = "工单不能为空")
    private List<String> workOrderNos;
    @NotEmpty(message = "请先勾选需要审核的工单", groups = {Update.class})
    private List<String> workOrderNumbers;
}
ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java
@@ -82,19 +82,21 @@
    @PutMapping("/yw-condition")
    @ApiOperation(value = "运维情况", notes = "运维情况")
    public Result ywCondition(@RequestBody @Validated(Update.class) WorkOrderYWConditionForm form) {
    public Result ywCondition(@RequestBody @Validated WorkOrderYWConditionForm form) {
        return workOrderService.ywCondition(form);
    }
    //现在没用
    @PutMapping("/yw-result")
    @ApiOperation(value = "运维结果", notes = "运维结果")
    public Result ywCondition(@RequestBody @Validated(Update.class) WorkOrderYWResultForm form) {
    public Result ywResult(@RequestBody @Validated WorkOrderYWResultForm form) {
        return workOrderService.ywResult(form);
    }
    //现在没用
    @PutMapping("/check-result")
    @ApiOperation(value = "检测结果", notes = "检测结果")
    public Result ywCondition(@RequestBody @Validated(Update.class) WorkOrderCheckResultForm form) {
    public Result ywCheckResult(@RequestBody @Validated WorkOrderCheckResultForm form) {
        return workOrderService.checkResult(form);
    }
@@ -105,12 +107,12 @@
        return workOrderService.removeById(id);
    }
    @DeleteMapping("/batch")
    @ApiOperation(value = "批量删除", notes = "批量删除")
    @PreAuthorize("@ss.hasPermi('work:order:remove')")
    public Result remove(@RequestBody @NotEmpty(message = "请选择数据") List<String> ids) {
        return workOrderService.remove(ids);
    }
//    @DeleteMapping("/batch")
//    @ApiOperation(value = "批量删除", notes = "批量删除")
//    @PreAuthorize("@ss.hasPermi('work:order:remove')")
//    public Result remove(@RequestBody @NotEmpty(message = "请选择数据") List<String> ids) {
//        return workOrderService.remove(ids);
//    }
    @PostMapping("/page")
    @ApiOperation(value = "分页", notes = "分页")
@@ -241,7 +243,7 @@
     */
    @DeleteMapping("/batchDelete")
    @PreAuthorize("@ss.hasPermi('work:order:delete')")
    @ApiOperation(value = "批量删除工单白名单", notes = "批量删除工单白名单")
    @ApiOperation(value = "批量删除工单", notes = "批量删除工单")
    public Result batchDeleteWorkOrder(@RequestBody List<String> workOrderNos) {
        return workOrderService.batchDeleteWorkOrder(workOrderNos);
    }
ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java
@@ -108,17 +108,19 @@
                item.setOnlineStr("未知");
            }
            List<Date> offLineTime = item.getOffLineTime();
            //后续可以改成配置的离线次数(提取前n次,n为配置的离线次数)
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            if(CollectionUtils.isNotEmpty(offLineTime) && offLineTime.size()>1){
                offLineTime = offLineTime.subList(0,1);
            if(!CollectionUtils.isEmpty(offLineTime)) {
                //后续可以改成配置的离线次数(提取前n次,n为配置的离线次数)
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                if (offLineTime.size() > 1) {
                    offLineTime = offLineTime.subList(0, 2);
                }
                List<String> dateStr = new ArrayList<>();
                for (Date date : offLineTime) {
                    String formatDate = format.format(date);
                    dateStr.add(formatDate);
                }
                item.setOffLineTimeStr(dateStr);
            }
            List<String> dateStr = new ArrayList<>();
            for (Date date : offLineTime) {
                String formatDate = format.format(date);
                dateStr.add(formatDate);
            }
            item.setOffLineTimeStr(dateStr);
        });
        params.setDeptTag(-1);
        params.setDeviceType(1);
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -425,9 +425,9 @@
    @Transactional(rollbackFor = Exception.class)
    public Result batchAuditing(WorkOrderBatchAuditingForm form) {
        //根据工单编号获取工单
        List<WorkOrder> list = baseMapper.selectByNos(form.getWorkOrderNos());
        List<WorkOrder> list = baseMapper.selectByNos(form.getWorkOrderNumbers());
        if (list.isEmpty()) {
            return Result.error("没有工单可以审核");
            return Result.error("没有待审核工单");
        }
        List<String> workOrderNoList = list.stream().map(WorkOrder::getWorkOrderNo).collect(Collectors.toList());
        List<String> serialNumbers = list.stream().map(WorkOrder::getSerialNumber).toList();
@@ -572,7 +572,17 @@
    public Result removeById(String id) {
        WorkOrder workOrder = baseMapper.selectById(id);
        String workOrderNo = workOrder.getWorkOrderNo();
        workOrderDistributeRecordMapper.deleteByWorkOrder(workOrderNo);
        //删除工单审核记录
        workOrderAuditingRecordMapper.delete(new QueryWrapper<WorkOrderAuditingRecord>().eq("work_order_no", workOrderNo));
        //删除工单图片记录
        workOrderCheckImgMapper.delete(new QueryWrapper<WorkOrderCheckImg>().eq("work_order_no", workOrderNo));
        //删除工单下发记录
        workOrderDistributeRecordMapper.delete(new QueryWrapper<WorkOrderDistributeRecord>().eq("work_order_no", workOrderNo));
        //删除工单故障类型
        workOrderErrorTypeMapper.delete(new QueryWrapper<WorkOrderErrorType>().eq("work_order_no", workOrderNo));
        //删除工单情况记录
        workOrderYwConditionRecordMapper.delete(new QueryWrapper<WorkOrderYwConditionRecord>().eq("work_order_no", workOrderNo));
        if (baseMapper.deleteById(id) > 0) {
            return Result.ok("删除成功");
        }
ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -189,6 +189,15 @@
        }
        // 先查出设备IP集合,剔除掉在线情况是未知的,并且只检测正在考核的设备避免多余工单
        List<TMonitorResult> monitorList = monitorMapper.getDistinctIP();
        //补充错误时间点
        Query onlineQuery = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
        Map<String, TMonitorResult> mongoMap = mongoTemplate.find(onlineQuery, TMonitorResult.class).stream().collect(Collectors.toMap(TMonitorResult::getNo, Function.identity()));
        for (TMonitorResult result : monitorList) {
            TMonitorResult mongoData = mongoMap.get(result.getNo());
            if(mongoData!=null){
                result.setOffLineTime(mongoData.getOffLineTime());
            }
        }
        List<TMonitorResult> dataList = new ArrayList<>(48);
        Integer time = times;
        List<CompletableFuture<TMonitorResult>> futureList = monitorList.stream()
@@ -214,6 +223,10 @@
                            monitor.setPingOnline(Boolean.FALSE);
                            monitor.setCheckCount(checkTimes);
                            monitor.setOffLineCount(offLineTimes);
                            List<Date> offLineTime = monitor.getOffLineTime();
                            if(CollectionUtils.isEmpty(offLineTime)) offLineTime = new ArrayList<>();
                            offLineTime.add(new Date());
                            monitor.setOffLineTime(offLineTime);
                            if (monitor.getOffLineCount() >= time) {
                                WorkOrder workOrder = new WorkOrder();
                                workOrder.setSerialNumber(monitor.getNo());
@@ -321,13 +334,13 @@
                        }).collect(Collectors.toList());
                        monitorMapper.updateOnline(willUpdateList);
                        //离线生成工单,一个ip只生成一个工单
                        List<VideoOnlineResult> workOrders = (List<VideoOnlineResult>) records.stream()
                        List<VideoOnlineResult> workOrders = new ArrayList<>(records.stream()
                                .filter(item -> ApiConstants.UY_OnlineSite_Offline.equals(item.getStatus()))
                                .collect(Collectors.toMap(
                                        VideoOnlineResult::getIpAddr,
                                        Function.identity(),
                                        (existing, replacement) -> existing // 如果遇到相同的 IP,保留第一个(existing)
                                )).values();
                                )).values());
                        uyErrorTypeCheckService.videoOnlineCheck(workOrders);
                    } else {
                        log.error("点位在线结果数据为空{}", data);
ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -438,12 +438,10 @@
        from t_work_order wo
        <where>
            wo.deleted = 0 and wo.status = 'YW_HANDLE'
            <if test="workOrderNos != null and workOrderNos.size() > 0">
                wo.work_order_no in
                <foreach collection="workOrderNos" open="(" separator="," close=")" item="workOrderNo">
                    #{workOrderNo}
                </foreach>
            </if>
            and wo.work_order_no in
            <foreach collection="workOrderNos" open="(" separator="," close=")" item="workOrderNo">
                #{workOrderNo}
            </foreach>
        </where>
    </select>
</mapper>