yangys
2024-11-21 fe82f1f9a9be911d1420fe3b018ea85dd5fff1a3
代码整理
已修改8个文件
135 ■■■■■ 文件已修改
collect/src/main/java/com/qianwen/mdc/collect/config/MqttConfig.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
collect/src/main/java/com/qianwen/mdc/collect/enums/FeedbackTypeEnum.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
collect/src/main/java/com/qianwen/mdc/collect/job/FeedbackDealJob.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
collect/src/main/java/com/qianwen/mdc/collect/service/DeviceStateAggregateService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
collect/src/main/java/com/qianwen/mdc/collect/service/feedback/NoImmediateFeedbackAnalyseResultBuilder.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
collect/src/main/java/com/qianwen/mdc/collect/service/feedback/NoImmediateFeedbackHandlerStrategy.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
collect/src/main/java/com/qianwen/mdc/collect/service/feedback/WorkstationFeedbackService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
collect/src/main/resources/application-dev.yml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
collect/src/main/java/com/qianwen/mdc/collect/config/MqttConfig.java
@@ -65,6 +65,9 @@
     */
    public static final String FEEDBACK_TOPIC = "mdc/feedback";
    
    /**
     * 工位创建消息,mdc中新建工位时发送,本应用接收并处理
     */
    public static final String WOCKSTATION_CREATE_TOPIC = "mdc/workstation-create";
    
    /**
collect/src/main/java/com/qianwen/mdc/collect/enums/FeedbackTypeEnum.java
@@ -1,5 +1,8 @@
package com.qianwen.mdc.collect.enums;
/**
 * 反馈类型
 */
public enum FeedbackTypeEnum {
    TIME_RANGE_FEEDBACK(0, "时间段反馈"),
    IMMEDIATE_FEEDBACK(1, "持续反馈"),
collect/src/main/java/com/qianwen/mdc/collect/job/FeedbackDealJob.java
@@ -25,6 +25,7 @@
            XxlJobLogger.log("XXL-JOB, 定时扫描反馈记录结束", new Object[0]);
        } catch (Exception ex) {
            log.info("定时扫描检查反馈记录,发生异常", ex);
            return ReturnT.FAIL;
        }
        return ReturnT.SUCCESS;
    }
collect/src/main/java/com/qianwen/mdc/collect/service/DeviceStateAggregateService.java
@@ -97,7 +97,7 @@
        deviceStateService.saveDeviceStates(noFeedbackStateList);//更新isSync=true
        ////使用workstationWcsFeedbackMapper更新反馈得状态,我们不需要
        //IWorkstationFeedbackService workstationFeedbackService = SpringUtil.getBean(IWorkstationFeedbackService.class);
        workstationFeedbackService.handlerFeedbackComplete(workstationId);
        workstationFeedbackService.handlerFeedbackComplete(workstationId);//处理反馈时候会生成processing状态的反馈数据,这里是完成
        
        log.info("聚合状态完成:工位{}",workstationId);
    }
collect/src/main/java/com/qianwen/mdc/collect/service/feedback/NoImmediateFeedbackAnalyseResultBuilder.java
@@ -48,7 +48,7 @@
        relatedWorkstationFeedbackList.forEach(item -> {
              WorkstationFeedbackViewDTO temp = new WorkstationFeedbackViewDTO();
              temp.setWorkstationWcsFeedback(item);
              temp.setIsDeleted(Boolean.FALSE);
              temp.setIsDeleted(false);
              if (FeedbackTypeEnum.TIME_RANGE_FEEDBACK.isEqual(Integer.valueOf(feedback.getFeedbackType()))) {
                List<WorkstationWcsFeedbackDetail> detailList = this.workstationWcsFeedbackDetailMapper.selectList(Wrappers.<WorkstationWcsFeedbackDetail>lambdaQuery()
                        .eq(WorkstationWcsFeedbackDetail::getCancel, 0)
@@ -61,7 +61,7 @@
                          .eq(WorkstationWcsFeedbackDetail::getCancel, 1).eq(WorkstationWcsFeedbackDetail::getStatus, FeedbackDetailStatusEnum.LOSE_EFFECT.getValue())
                          .eq(WorkstationWcsFeedbackDetail::getFeedbackId, item.getId()));
                  if (Func.isNotEmpty(deletedList))
                    temp.setIsDeleted(Boolean.TRUE);
                    temp.setIsDeleted(true);
                } 
              } 
              workstationFeedbackViewList.add(temp);
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;
    }
}
collect/src/main/java/com/qianwen/mdc/collect/service/feedback/WorkstationFeedbackService.java
@@ -54,7 +54,6 @@
        this.bladeRedis = bladeRedis;
    }*/
    //@Override
    /**
     * 发送消息
     * @param workstationId
@@ -86,7 +85,7 @@
        }
    }
    //@Override
   // @RedisLock(value = "lock:posting:state", param = "#workstationId", leaseTime = 240)
    /**
     * 处理状态反馈
@@ -110,7 +109,7 @@
    /**/
    /**
     * 处理反馈完成
     * 处理反馈完成,在状态聚合完成的时候调用
     * @param workstationId
     */
    public void handlerFeedbackComplete(Long workstationId) {
collect/src/main/resources/application-dev.yml
@@ -1,6 +1,6 @@
spring:
  redis:
    database: 2
    database: 5
    host: 120.46.212.231
    port: 6379
    password: root
@@ -11,7 +11,7 @@
#MQTT-服务端地址
mqtt:
  host: tcp://82.156.1.83:1884
  host: tcp://broker.emqx.io:1883
  #username=admin #MQTT-服务端用户名
  #password=public #MQTT-服务端密码
  cleansession: false #MQTT-是否清理session
@@ -35,7 +35,7 @@
#iotdb 以及其jdbc一起配置
iotdb:
  driver: org.apache.iotdb.jdbc.IoTDBDriver
  host: 120.46.212.231 #120.46.212.231 localhost
  host: 116.63.148.72 #120.46.212.231 localhost 116.63.148.72
  port: 6667
  maxSize: 100
  username: root