fuliqi
2025-01-21 f59d7f75a997872935d55288d37cd80b3acb6dff
批量审核离线工单修改pingonline
3个文件已修改
64 ■■■■ 已修改文件
ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderErrorTypeMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/WorkOrderErrorTypeMapper.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderErrorTypeMapper.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ycl.platform.domain.entity.WorkOrderErrorType;
import com.ycl.platform.domain.vo.WorkOrderVO;
import com.ycl.system.entity.SysDictData;
import org.apache.ibatis.annotations.Param;
import org.springframework.security.core.parameters.P;
@@ -87,12 +88,12 @@
     * @return
     */
    int addMany(@Param("errorTypeList") List<WorkOrderErrorType> errorTypeList);
    List<SysDictData> getErrorList(@Param("workOrderNo") String workOrderNo);
    /**
     * 获取故障类型,连表字典
     * 获取多个工单故障类型
     *
     * @param workOrderNo
     * @param workOrderNos
     * @return
     */
    List<SysDictData> getErrorList(@Param("workOrderNo") String workOrderNo);
    List<WorkOrderVO> getErrorListByNumbers(@Param("workOrderNos") List<String> workOrderNos);
}
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -35,6 +35,7 @@
import com.ycl.utils.http.HttpUtils;
import com.ycl.utils.redis.RedisCache;
import com.ycl.utils.uuid.IdUtils;
import constant.ApiConstants;
import constant.Constants;
import constant.RedisConstant;
import enumeration.ErrorType;
@@ -471,18 +472,22 @@
                UrgentLevelEnum.WARNING,
                workOrder.getWorkOrderNo());
        notifyService.save(notify);
        List<String> errorList = workOrderErrorTypeMapper.getErrorList(workOrder.getWorkOrderNo())
                .stream().map(SysDictData::getDictValue).collect(Collectors.toList());
        List<WorkOrderVO> workOrderVOS = workOrderErrorTypeMapper.getErrorListByNumbers(Arrays.asList(workOrder.getWorkOrderNo()));
        // 同步点位状态
        if (form.getAuditingResult() == WorkOrderStatusEnum.AUDITING_SUCCESS) {
            ywPointService.updateRecovery(Collections.singletonList(workOrder.getSerialNumber()), 0);
            //如果工单为离线工单那么修改点位pingOnline为在线
            if(!CollectionUtils.isEmpty(errorList) && errorList.contains(ErrorType.DEVICE_OFFLINE.getValue())){
                new LambdaUpdateChainWrapper<>(ywPointMapper)
                        .eq(YwPoint::getSerialNumber, workOrder.getSerialNumber())
                        .set(YwPoint::getUpdateTime, new Date())
                        .set(YwPoint::getPingOnline, 1)
                        .update();
            if (!CollectionUtils.isEmpty(workOrderVOS)) {
                List<String> ips = new ArrayList<>();
                for (WorkOrderVO workOrderVO : workOrderVOS) {
                    if(ErrorType.DEVICE_OFFLINE.getValue().equals(workOrderVO.getErrorType())){
                        ips.add(workOrderVO.getIp());
                    }
                }
                if(!CollectionUtils.isEmpty(ips)) {
                    monitorMapper.batchUpdateOnline(ips, new Date(), ApiConstants.UY_OnlineSite_Online);
                }
            }
        }
@@ -525,11 +530,30 @@
                    workOrder.getWorkOrderNo());
            notifies.add(notify);
        }
        notifyService.saveBatch(notifies);
        // 同步点位状态
        if (form.getAuditingResult() == WorkOrderStatusEnum.AUDITING_SUCCESS) {
            ywPointService.updateRecovery(serialNumbers, 0);
            //筛选出离线工单ip并修改在线状态
            if (!CollectionUtils.isEmpty(serialNumbers)) {
                Map<String, List<String>> errorTypes = workOrderErrorTypeMapper.getErrorListByNumbers(serialNumbers).stream().collect(Collectors.groupingBy(
                        WorkOrderVO::getIp,
                        Collectors.mapping(
                                WorkOrderVO::getErrorType,
                                Collectors.toList()
                        )
                ));
                List<String> ips = new ArrayList<>();
                errorTypes.forEach((key, value) -> {
                    if (!CollectionUtils.isEmpty(value) && value.contains(ErrorType.DEVICE_OFFLINE.getValue())) {
                        ips.add(key);
                    }
                });
                if(!CollectionUtils.isEmpty(ips)) {
                    monitorMapper.batchUpdateOnline(ips, new Date(), ApiConstants.UY_OnlineSite_Online);
                }
            }
        }
        notifyService.saveBatch(notifies);
        return Result.ok("操作成功");
    }
ycl-server/src/main/resources/mapper/zgyw/WorkOrderErrorTypeMapper.xml
@@ -97,12 +97,15 @@
        </foreach>
    </insert>
    <select id="getErrorList" resultType="com.ycl.system.entity.SysDictData">
        SELECT da.dict_value, da.dict_label
    <select id="getErrorListByNumbers" resultMap="com.ycl.platform.domain.vo.WorkOrderVO">
        SELECT oer.serial_number,oer.ip,da.dict_value as errorType
        FROM t_work_order_error_type oer
            INNER JOIN sys_dict_data da ON oer.error_name = da.dict_value
        WHERE oer.work_order_no = #{workOrderNo}
        INNER JOIN sys_dict_data da ON oer.error_name = da.dict_value
        WHERE oer.work_order_no in
        <foreach collection="workOrderNos" separator="," open="(" close=")" item="workOrderNo">
            #{workOrderNo}
        </foreach>
        ORDER BY oer.create_time
    </select>
</mapper>