yangys
2024-11-21 fe82f1f9a9be911d1420fe3b018ea85dd5fff1a3
collect/src/main/java/com/qianwen/mdc/collect/service/feedback/NoImmediateFeedbackHandlerStrategy.java
@@ -26,6 +26,7 @@
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;
/**
 * 时间段反馈的处理策略
@@ -69,20 +70,24 @@
        */
        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()));
@@ -102,6 +107,32 @@
        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);
@@ -118,40 +149,47 @@
        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) {
@@ -197,18 +235,5 @@
        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;
    }
}