fuliqi
2024-11-12 9d69a278fcb5c159ec62eec3ce78ae15eb5d5ece
离线工单ip去重只生成一个工单
6个文件已修改
54 ■■■■ 已修改文件
ycl-pojo/src/main/java/com/ycl/platform/domain/form/WorkOrderBatchAuditingForm.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/UYTask.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/form/WorkOrderBatchAuditingForm.java
@@ -28,9 +28,9 @@
    private String auditingRemark;
    /**
     * 故障类型
     * 工单编号
     */
    @NotEmpty(message = "故障类型不能为空")
    private List<String> errorTypes;
    @NotEmpty(message = "工单不能为空")
    private List<String> workOrderNos;
}
ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java
@@ -111,6 +111,6 @@
     */
    List<WorkOrderVO> getRecoveryInfo(List<String> orders);
    List<WorkOrder> batchGetByError(@Param("form") WorkOrderBatchAuditingForm form);
    List<WorkOrder> selectByNos(@Param("workOrderNos") List<String> workOrderNos);
}
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -424,13 +424,8 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result batchAuditing(WorkOrderBatchAuditingForm form) {
        // 根据故障类型获取列表
        List<WorkOrder> list = baseMapper.batchGetByError(form);
//        List<WorkOrder> list = new LambdaQueryChainWrapper<>(baseMapper)
//                .in(WorkOrder::getStatus, WorkOrderStatusEnum.YW_HANDLE.getValue())
//                .in(WorkOrder::getErrorType, form.getErrorTypes())
//                .select(WorkOrder::getId, WorkOrder::getUnitId, WorkOrder::getWorkOrderNo, WorkOrder::getSerialNumber)
//                .list();
        //根据工单编号获取工单
        List<WorkOrder> list = baseMapper.selectByNos(form.getWorkOrderNos());
        if (list.isEmpty()) {
            return Result.error("没有工单可以审核");
        }
ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -40,6 +40,7 @@
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.Function;
import java.util.stream.Collectors;
//优云对接数据任务
@@ -260,9 +261,16 @@
            //存放在mongo中
            mongoTemplate.insertAll(dataList);
        }
        //工单
        //工单(同一IP只生成一个工单)
        List<WorkOrder> workOrderList = dataList.stream()
                .filter(item -> Objects.nonNull(item.getWorkOrder()))
                .collect(Collectors.toMap(
                        TMonitorResult::getIp,
                        Function.identity(),
                        (existing, replacement) -> existing // 如果遇到相同的 IP,保留第一个 TMonitorResult 对象
                ))
                .values()
                .stream()
                .map(TMonitorResult::getWorkOrder)
                .collect(Collectors.toList());
        if (!CollectionUtils.isEmpty(workOrderList)) {
@@ -312,8 +320,14 @@
                            return vo;
                        }).collect(Collectors.toList());
                        monitorMapper.updateOnline(willUpdateList);
                        //离线生成工单
                        List<VideoOnlineResult> workOrders = records.stream().filter(item -> ApiConstants.UY_OnlineSite_Offline.equals(item.getStatus())).collect(Collectors.toList());
                        //离线生成工单,一个ip只生成一个工单
                        List<VideoOnlineResult> workOrders = (List<VideoOnlineResult>) records.stream()
                                .filter(item -> ApiConstants.UY_OnlineSite_Offline.equals(item.getStatus()))
                                .collect(Collectors.toMap(
                                        VideoOnlineResult::getIpAddr,
                                        Function.identity(),
                                        (existing, replacement) -> existing // 如果遇到相同的 IP,保留第一个(existing)
                                )).values();
                        uyErrorTypeCheckService.videoOnlineCheck(workOrders);
                    } else {
                        log.error("点位在线结果数据为空{}", data);
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -683,7 +683,7 @@
        from t_monitor m
            left join t_yw_point p on m.serial_number = p.serial_number
            left join sys_dept d on p.dept_id = d.dept_id
            where p.online != 0 and p.examine_status = 1
        where p.online != 0 and p.examine_status = 1
    </select>
    <update id="updateOnline">
ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -433,21 +433,16 @@
        p.yw_person_name
    </select>
    <select id="batchGetByError" resultType="com.ycl.platform.domain.entity.WorkOrder">
    <select id="selectByNos" resultType="com.ycl.platform.domain.entity.WorkOrder">
        select wo.id,wo.unit_id,wo.work_order_no,wo.serial_number
        from t_work_order wo
        <where>
            wo.deleted = 0 and wo.status = 'YW_HANDLE'
            <if test="form.errorTypes != null and form.errorTypes.size() > 0">
                AND (EXISTS (
                SELECT 1
                FROM t_work_order_error_type twoet
                WHERE twoet.work_order_no = wo.work_order_no
                AND twoet.error_name in
                <foreach collection="form.errorTypes" open="(" separator="," close=")" item="errorType">
                    #{errorType}
            <if test="workOrderNos != null and workOrderNos.size() > 0">
                wo.work_order_no in
                <foreach collection="workOrderNos" open="(" separator="," close=")" item="workOrderNo">
                    #{workOrderNo}
                </foreach>
                ))
            </if>
        </where>
    </select>