package com.iailab.module.model.mcs.sche.service.impl; import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.common.service.impl.BaseServiceImpl; import com.iailab.framework.common.util.collection.CollectionUtils; import com.iailab.framework.common.util.object.BeanUtils; import com.iailab.module.model.mcs.sche.dao.StSuggestOperationRecordDao; import com.iailab.module.model.mcs.sche.entity.StSuggestOperationRecordEntity; import com.iailab.module.model.mcs.sche.service.StSuggestOperationRecordService; import com.iailab.module.model.mcs.sche.service.StSuggestSnapshotConfDetService; import com.iailab.module.model.mcs.sche.service.StSuggestSnapshotConfMainService; import com.iailab.module.model.mcs.sche.service.StSuggestSnapshotRecordService; import com.iailab.module.model.mcs.sche.vo.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.Date; import java.util.List; import java.util.UUID; /** * @author Jay */ @Service public class StSuggestOperationRecordServiceImpl extends BaseServiceImpl implements StSuggestOperationRecordService { @Autowired private StSuggestSnapshotConfMainService stSuggestSnapshotConfMainService; @Autowired private StSuggestSnapshotConfDetService stSuggestSnapshotConfDetService; @Autowired private StSuggestSnapshotRecordService stSuggestSnapshotRecordService; @Override public PageResult page(StSuggestOperationRecordPageReqVO reqVO) { return baseDao.selectPage(reqVO); } @Override public void create(StSuggestOperationRecordReqVO reqVo) { StSuggestOperationRecordEntity entity = BeanUtils.toBean(reqVo, StSuggestOperationRecordEntity.class); entity.setId(UUID.randomUUID().toString()); entity.setHandleTime(new Date()); baseDao.insert(entity); if (!"采纳建议".equals(reqVo.getOperate())){ return; } //获取调度建议快照配置表信息 StSuggestSnapshotConfMainRespVO confMain = stSuggestSnapshotConfMainService.getByModelIdAndScheduleObj(reqVo.getModelId(), reqVo.getScheduleObj()); if (confMain == null) { return; } List confDetList = stSuggestSnapshotConfDetService.getByConfId(confMain.getId()); if (CollectionUtils.isAnyEmpty(confDetList)) { return; } confDetList.forEach(confDet -> { StSuggestSnapshotRecordSaveReqVO snapshotRecordSaveReqVO = new StSuggestSnapshotRecordSaveReqVO(); snapshotRecordSaveReqVO.setSuggestId(reqVo.getSuggestId()); snapshotRecordSaveReqVO.setModelId(entity.getModelId()); snapshotRecordSaveReqVO.setOperationId(entity.getId()); snapshotRecordSaveReqVO.setDataNo(confDet.getDataNo()); snapshotRecordSaveReqVO.setDataType(confDet.getDataType()); snapshotRecordSaveReqVO.setDataName(confDet.getDataName()); snapshotRecordSaveReqVO.setScheduleTime(entity.getScheduleTime()); //计算开始时间,开始时间为当前调度时间减去快照配置表配置的左侧时间长度 LocalDateTime localStartDateTime = entity.getScheduleTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().minusMinutes(confDet.getLeftLength() == null ? 60 : confDet.getLeftLength()); Date startTime = Date.from(localStartDateTime.atZone(ZoneId.systemDefault()).toInstant()); snapshotRecordSaveReqVO.setStartTime(startTime); //计算结束时间,结束时间为当前调度时间加上快照配置表配置的右侧时间长度 LocalDateTime localEndDateTime = entity.getScheduleTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().plusMinutes(confDet.getRightLength() == null ? 60 : confDet.getLeftLength()); Date endTime = Date.from(localEndDateTime.atZone(ZoneId.systemDefault()).toInstant()); snapshotRecordSaveReqVO.setEndTime(endTime); stSuggestSnapshotRecordService.create(snapshotRecordSaveReqVO); }); } }