| | |
| | | import com.qianwen.mdc.collect.mapper.iotdb.DeviceStateMapper; |
| | | import com.qianwen.mdc.collect.mapper.mgr.WorkstationWcsFeedbackMapper; |
| | | import com.qianwen.mdc.collect.service.DeviceStateAggregateService; |
| | | import com.qianwen.mdc.collect.service.DeviceStateService; |
| | | import com.qianwen.mdc.collect.service.WorkstationService; |
| | | /** |
| | | * 时间段反馈的处理策略 |
| | |
| | | */ |
| | | List<DeviceState> fixPointStateList = stateMapper.workstationFixPointStatesInTimeRange(analyseResult.getWorkstationId(),analyseResult.getEffectiveStartDate().getTime(),analyseResult.getEffectiveEndDate().getTime()); |
| | | List<DeviceState> newFeedbackStateList = new ArrayList<>(); |
| | | if (Func.isNotEmpty(analyseResult.getEffectiveFeedbackTimePointList())) |
| | | for (WorkstationFeedbackTimePointDTO item : analyseResult.getEffectiveFeedbackTimePointList()) { |
| | | newFeedbackStateList.add(convertFeedbackPointToWorkstationState(analyseResult.getWorkstationId(), item, fixPointStateList, stateMapper)); |
| | | } |
| | | if (Func.isNotEmpty(analyseResult.getEffectiveFeedbackTimePointList())) { |
| | | for (WorkstationFeedbackTimePointDTO item : analyseResult.getEffectiveFeedbackTimePointList()) { |
| | | newFeedbackStateList.add(convertFeedbackPointToWorkstationState(analyseResult.getWorkstationId(), item, fixPointStateList, stateMapper)); |
| | | } |
| | | } |
| | | List<DeviceState> insertData = generateWorkstationState(newFeedbackStateList, effectiveStateList); |
| | | |
| | | //insertData.addAll((Collection<? extends WorkstationState>)analyseResult.getCompensateStateList().stream().map(item -> wrapperShiftInfo(item, stateMapper)).collect(Collectors.toList())); |
| | | insertData.addAll(analyseResult.getCompensateStateList().stream().map(item -> wrapperShiftInfo(item, stateMapper)).collect(Collectors.toList())); |
| | | |
| | | insertData.forEach(s -> {s.setWorkstationId(feedback.getWorkstationId());}); |
| | | //stateMapper.batchSave(feedback.getWorkstationId(), insertData); |
| | | //我们使用servcie保存 |
| | | DeviceStateService stateService = SpringUtil.getBean(DeviceStateService.class); |
| | | stateService.saveDeviceStates(insertData); |
| | | |
| | | List<WorkstationFeedbackTimeQuantumDTO> effectiveFeedbackTimeQuantumList = analyseResult.getEffectiveFeedbackTimeQuantumList(); |
| | | List<WorkstationWcsFeedbackDetail> detailList = (List<WorkstationWcsFeedbackDetail>)effectiveFeedbackTimeQuantumList.stream().map(x -> convertFeedbackTimeQuantumToDetail(analyseResult.getWorkstationId(), x)).collect(Collectors.toList()); |
| | | List<WorkstationWcsFeedbackDetail> detailList = effectiveFeedbackTimeQuantumList.stream().map(x -> convertFeedbackTimeQuantumToDetail(analyseResult.getWorkstationId(), x)).collect(Collectors.toList()); |
| | | |
| | | this.workstationFeedbackDetailService.remove(Wrappers.<WorkstationWcsFeedbackDetail>lambdaQuery() |
| | | .eq(WorkstationWcsFeedbackDetail::getFeedbackId, analyseResult.getFeedbackId()) |
| | | .eq(WorkstationWcsFeedbackDetail::getStatus, FeedbackDetailStatusEnum.BE_EFFECTIVE.getValue())); |
| | |
| | | deviceStateAggregateService.stateAggregate(feedback.getWorkstationId()); |
| | | } |
| | | |
| | | /** |
| | | * 非固定点改为删除状态;固定点设置为初始状态 |
| | | * @param deviceState |
| | | * @return |
| | | */ |
| | | private DeviceState resetEffectiveWorkstationState(DeviceState deviceState) { |
| | | if (deviceState.getIsFixPoint()) { |
| | | deviceState.setFeedbackPointType(FeedbackTimePointEnum.NO_FEED_BACK_POINT.getValue()); |
| | | deviceState.setValueCollect(0); |
| | | deviceState.setWcs(0); |
| | | deviceState.setIsPlan(null); |
| | | deviceState.setRps(0); |
| | | deviceState.setIsSync(false); |
| | | deviceState.setIsDeleted(false); |
| | | } else { |
| | | deviceState.setIsDeleted(true); |
| | | } |
| | | return deviceState; |
| | | } |
| | | |
| | | /** |
| | | * 以newFeedbackStateList为基础,如果effectiveStateList中的点与newFeedbackStateList中的数据时间不相等,则将effectiveStateList中的点加入 |
| | | * @param newFeedbackStateList 根据反馈转换出来的状态数据 |
| | | * @param effectiveStateList 反馈时间段内的非反馈点 |
| | | * @return |
| | | */ |
| | | private List<DeviceState> generateWorkstationState(List<DeviceState> newFeedbackStateList, List<DeviceState> effectiveStateList) { |
| | | List<DeviceState> resultList = new ArrayList<>(); |
| | | resultList.addAll(newFeedbackStateList); |
| | |
| | | return resultList; |
| | | } |
| | | |
| | | /** |
| | | * 将反馈的时间点转换为设备状态 |
| | | * @param workstationId |
| | | * @param timePoint |
| | | * @param fixPointStateList |
| | | * @param stateMapper |
| | | * @return |
| | | */ |
| | | private DeviceState convertFeedbackPointToWorkstationState(Long workstationId, WorkstationFeedbackTimePointDTO timePoint, List<DeviceState> fixPointStateList, DeviceStateMapper stateMapper) { |
| | | DeviceState workstationState = new DeviceState(); |
| | | workstationState.setTime(Long.valueOf(timePoint.getFeedbackTime().getTime())); |
| | | workstationState.setWcs(Integer.valueOf(timePoint.getWcs())); |
| | | workstationState.setValueCollect(Integer.valueOf(timePoint.getWcs())); |
| | | workstationState.setWorkstationId(workstationId); |
| | | workstationState.setIsDeleted(Boolean.FALSE); |
| | | workstationState.setIsSync(false); |
| | | workstationState.setIsFixPoint(Boolean.FALSE); |
| | | workstationState.setFeedbackId(timePoint.getFeedbackId()); |
| | | workstationState.setFeedbackPointType(timePoint.getPointEnum().getValue()); |
| | | DeviceState state = new DeviceState(); |
| | | state.setTime(timePoint.getFeedbackTime().getTime()); |
| | | state.setWcs(Integer.valueOf(timePoint.getWcs())); |
| | | state.setValueCollect(Integer.valueOf(timePoint.getWcs())); |
| | | state.setWorkstationId(workstationId); |
| | | state.setIsDeleted(false); |
| | | state.setIsSync(false); |
| | | state.setIsFixPoint(false); |
| | | state.setFeedbackId(timePoint.getFeedbackId()); |
| | | state.setFeedbackPointType(timePoint.getPointEnum().getValue()); |
| | | DeviceState matchRecord = fixPointStateList.stream().filter(x -> { |
| | | return x.getTime().equals(Long.valueOf(timePoint.getFeedbackTime().getTime())); |
| | | }).findFirst().orElse(null); |
| | | if (Func.isNotEmpty(matchRecord)) { |
| | | workstationState.setCalendarCode(matchRecord.getCalendarCode()); |
| | | workstationState.setFactoryYear(matchRecord.getFactoryYear()); |
| | | workstationState.setFactoryWeek(matchRecord.getFactoryWeek()); |
| | | workstationState.setFactoryMonth(matchRecord.getFactoryMonth()); |
| | | workstationState.setFactoryDate(matchRecord.getFactoryDate()); |
| | | workstationState.setIsFixPoint(matchRecord.getIsFixPoint()); |
| | | workstationState.setShiftTimeType(matchRecord.getShiftTimeType()); |
| | | workstationState.setShiftIndex(matchRecord.getShiftIndex()); |
| | | state.setCalendarCode(matchRecord.getCalendarCode()); |
| | | state.setFactoryYear(matchRecord.getFactoryYear()); |
| | | state.setFactoryWeek(matchRecord.getFactoryWeek()); |
| | | state.setFactoryMonth(matchRecord.getFactoryMonth()); |
| | | state.setFactoryDate(matchRecord.getFactoryDate()); |
| | | state.setIsFixPoint(matchRecord.getIsFixPoint()); |
| | | state.setShiftTimeType(matchRecord.getShiftTimeType()); |
| | | state.setShiftIndex(matchRecord.getShiftIndex()); |
| | | } else { |
| | | workstationState = wrapperShiftInfo(workstationState, stateMapper); |
| | | state = wrapperShiftInfo(state, stateMapper); |
| | | } |
| | | |
| | | |
| | | //GlobalWcsOfRps setting = WorkstationCache.getWorkstationWcsSetting(workstationId, timePoint.getWcs()); |
| | | WorkstationCache workstationCache = SpringUtil.getBean(WorkstationCache.class); |
| | | GlobalWcsOfRps setting = workstationCache.getWorkstationWcsSetting(workstationId, timePoint.getWcs()); |
| | | workstationState.setRps(setting.getRps()); |
| | | workstationState.setIsPlan(setting.getIsPlan()); |
| | | return workstationState; |
| | | state.setRps(setting.getRps()); |
| | | state.setIsPlan(setting.getIsPlan()); |
| | | return state; |
| | | } |
| | | |
| | | private DeviceState wrapperShiftInfo(DeviceState workstationState, DeviceStateMapper stateMapper) { |
| | |
| | | return detail; |
| | | } |
| | | |
| | | private DeviceState resetEffectiveWorkstationState(DeviceState workstationState) { |
| | | if (workstationState.getIsFixPoint().booleanValue()) { |
| | | workstationState.setFeedbackPointType(FeedbackTimePointEnum.NO_FEED_BACK_POINT.getValue()); |
| | | workstationState.setValueCollect(0); |
| | | workstationState.setWcs(0); |
| | | workstationState.setIsPlan(null); |
| | | workstationState.setRps(0); |
| | | workstationState.setIsSync(Boolean.FALSE); |
| | | workstationState.setIsDeleted(Boolean.FALSE); |
| | | } else { |
| | | workstationState.setIsDeleted(Boolean.TRUE); |
| | | } |
| | | return workstationState; |
| | | } |
| | | |
| | | } |