package com.qianwen.smartman.modules.dmpLog.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import java.util.ArrayList; import java.util.List; import com.qianwen.core.mp.support.Condition; import com.qianwen.core.mp.support.Query; import com.qianwen.core.redis.cache.BladeRedis; import com.qianwen.core.tool.utils.Func; import com.qianwen.smartman.modules.cps.entity.Machine; import com.qianwen.smartman.modules.cps.service.IMachineService; import com.qianwen.smartman.modules.dmpLog.mapper.DmpLogSignalFlowMapper; import com.qianwen.smartman.modules.dmpLog.mapper.DmpLogSignalMapper; import com.qianwen.smartman.modules.dmpLog.service.IDmpLogService; import com.qianwen.smartman.modules.dmpLog.vo.DmpLogDetailVO; import com.qianwen.smartman.modules.dmpLog.vo.DmpLogSearchVO; import com.qianwen.smartman.modules.dmpLog.vo.DmpLogVo; import org.springframework.stereotype.Service; @Service public class DmpLogServiceImpl implements IDmpLogService { private final DmpLogSignalMapper dmpLogSignalMapper; private final DmpLogSignalFlowMapper dmpLogSignalFlowMapper; private final IMachineService machineService; private final BladeRedis bladeRedis; private static final String DmpLog_CACHE = "blade:dmp-log:"; private static final String keyPrefix = ":machineId:"; public DmpLogServiceImpl(final DmpLogSignalMapper dmpLogSignalMapper, final DmpLogSignalFlowMapper dmpLogSignalFlowMapper, final IMachineService machineService, final BladeRedis bladeRedis) { this.dmpLogSignalMapper = dmpLogSignalMapper; this.dmpLogSignalFlowMapper = dmpLogSignalFlowMapper; this.machineService = machineService; this.bladeRedis = bladeRedis; } @Override public IPage pageDmpLog(DmpLogSearchVO dmpLogSearchVO, Query query) { List result; Integer total; IPage page = Condition.getPage(query); new ArrayList<>(); try { result = this.dmpLogSignalMapper.pageDmpLog(dmpLogSearchVO, Integer.valueOf((query.getCurrent().intValue() - 1) * query.getSize().intValue()), query.getSize()); result.forEach(item -> { item.setMachineCode(machineIdToMachineCode(item.getMachineCode())); }); total = this.dmpLogSignalMapper.countDmpLog(dmpLogSearchVO); } catch (Exception e) { result = new ArrayList<>(); total = 0; } page.setRecords(result); page.setTotal(total == null ? 0L : total.intValue()); return page; } private String machineIdToMachineCode(String machineId) { String machineCode = (String) this.bladeRedis.get("blade:dmp-log::machineId:" + machineId); if (machineCode == null) { Machine machine = (Machine) this.machineService.getById(machineId); if (Func.isNull(machine)) { machineCode = ""; } else { machineCode = machine.getMachineCode(); } this.bladeRedis.setEx("blade:dmp-log::machineId:" + machineId, machineCode, 60L); } return machineCode; } @Override public List getDmpLogDetail(String traceId) { return this.dmpLogSignalFlowMapper.getByTraceId(traceId); } }