package com.sandu.ximon.admin.service; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.sandu.common.domain.CommonPage; import com.sandu.common.execption.BusinessException; import com.sandu.common.object.BaseConditionVO; import com.sandu.ximon.admin.dto.ErrorMsgDto; import com.sandu.ximon.admin.utils.ListPagingUtils; import com.sandu.ximon.dao.bo.C3ReportErrorBo; import com.sandu.ximon.dao.bo.LightReportErrorBo; import com.sandu.ximon.dao.domain.C3mCharging; import com.sandu.ximon.dao.domain.Light; import lombok.AllArgsConstructor; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; /** * @author LiuHaoNan * @date 2022/7/25 * 设备错误信息 */ @Service @AllArgsConstructor public class ErrorMsgService { private final LightReportErrorService lightReportErrorService; private final LightService lightService; private final C3mReportErrorService c3mReportErrorService; private final C3ChargingService c3ChargingService; public CommonPage listMsg(BaseConditionVO baseConditionVO, String type) { if (StringUtils.isEmpty(type)) { throw new BusinessException("设备故障类型不能为空!"); } CommonPage commonPage = null; switch (type) { case "单灯故障": //单灯故障数据 commonPage = lightReportErrorService.queryErrorCode(baseConditionVO); if (!commonPage.getList().isEmpty()) { for (LightReportErrorBo lightReportError : (List) commonPage.getList()) { ErrorMsgDto errorMsgDto = new ErrorMsgDto(); errorMsgDto.setMac(lightReportError.getDeviceCode()); errorMsgDto.setErrorCode(lightReportError.getErrorCode()); errorMsgDto.setErrorDesc(lightReportError.getErrorMsg()); errorMsgDto.setErrorTime(lightReportError.getCreateTime()); errorMsgDto.setDeviceType(1); Light one = lightService.getOne(Wrappers.lambdaQuery(Light.class).eq(Light::getDeviceCode, lightReportError.getDeviceCode())); if (one != null) { errorMsgDto.setDeviceJson(JSON.toJSONString(one)); } } } break; case "充电桩故障": //充电桩故障数据 List c3ReportErrorBos = c3mReportErrorService.listReportError(baseConditionVO); if (!c3ReportErrorBos.isEmpty()) { List list = c3ReportErrorBos; list.forEach(c3ReportError -> { ErrorMsgDto errorMsgDto = new ErrorMsgDto(); errorMsgDto.setMac(c3ReportError.getC3Mac()); errorMsgDto.setErrorDesc(c3ReportError.getErrorMsg()); errorMsgDto.setErrorTime(c3ReportError.getCreateTime()); errorMsgDto.setDeviceType(3); C3mCharging one = c3ChargingService.getOne(Wrappers.lambdaQuery(C3mCharging.class).eq(C3mCharging::getC3Mac, c3ReportError.getC3Mac())); if (one != null) { errorMsgDto.setDeviceJson(JSON.toJSONString(one)); } }); commonPage = new CommonPage(); commonPage.setList(c3ReportErrorBos); } break; case "大气故障": //大气故障数据 todo 暂无 break; default: throw new BusinessException("类型不正确,请确认!"); } // // // //对errorMsgDtos按创建时间倒叙 // errorMsgDtos.sort((a, b) -> b.getErrorTime().compareTo(a.getErrorTime())); // //手动分页 baseConditionVO.getPageNo() 当前页 baseConditionVO.getPageSize() 每页条数 //// return errorMsgDtos.subList((baseConditionVO.getPageNo() - 1) * baseConditionVO.getPageSize(), baseConditionVO.getPageNo() * baseConditionVO.getPageSize()); // ListPagingUtils.pages(errorMsgDtos, baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); return commonPage; } }