package com.qianwen.mdc.collect.handler;
|
|
import java.util.Arrays;
|
import java.util.Date;
|
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import com.qianwen.mdc.collect.cache.WorkstationCache;
|
import com.qianwen.mdc.collect.dto.PackedTelemetryData;
|
import com.qianwen.mdc.collect.entity.iotdb.DeviceState;
|
import com.qianwen.mdc.collect.entity.mgr.GlobalWcsOfRps;
|
import com.qianwen.mdc.collect.enums.FeedbackTimePointEnum;
|
import com.qianwen.mdc.collect.service.DeviceStateService;
|
|
@Component
|
public class DeviceStatusDataHandler implements TelemetryDataHandler {
|
private static final Logger log = LoggerFactory.getLogger(DeviceStatusDataHandler.class);
|
@Autowired
|
private WorkstationCache workstationCache;
|
//@Autowired
|
//private IotDBSessionConfig iotdbCfg;
|
//@Autowired
|
//private IotDBCommonService iotDBCommonService;
|
@Autowired
|
private DeviceStateService deviceStateService;
|
@Override
|
public void handleData(PackedTelemetryData data) {
|
DeviceState state = new DeviceState();
|
state.setTime(data.getTime());
|
state.setCalendarCode(data.getCalendarCode());
|
|
state.setFactoryDate(data.getFactoryDate());
|
state.setFactoryMonth(data.getFactoryMonth());
|
state.setFactoryWeek(data.getFactoryWeek());
|
state.setFactoryYear(data.getFactoryYear());
|
state.setIsFixPoint(false);
|
state.setIsSync(false);
|
state.setIsDeleted(false);
|
|
state.setEmployeeId(workstationCache.getBelongToEmployeeForWorkstation(data.getWorkstationId(), new Date(data.getTime())));
|
|
state.setFeedbackPointType(FeedbackTimePointEnum.NO_FEED_BACK_POINT.getValue());
|
//WorkstationState propertyData = (WorkstationState) Objects.requireNonNull(BeanUtil.copy(entity, WorkstationState.class));
|
state.setValueCollect(Integer.valueOf(data.getValue()));
|
state.setWcs(state.getValueCollect());
|
state.setWorkstationId(data.getWorkstationId());
|
|
state.setShiftIndex(data.getShiftIndex());
|
state.setShiftTimeType(data.getShiftTimeType());
|
fillWorkStationCondition(data, state);
|
|
//insertState(state);
|
deviceStateService.saveDeviceStates(Arrays.asList(state));
|
|
log.info("状态聚合聚合完成:数据");
|
}
|
|
private void fillWorkStationCondition(PackedTelemetryData data, DeviceState state) {
|
GlobalWcsOfRps wcsOfRps = workstationCache.getWorkstationWcsSetting(data.getWorkstationId(), data.getValue());
|
log.info("工况以及绩效信息:{}" ,wcsOfRps);
|
|
state.setRps(Integer.valueOf(wcsOfRps.getRps()));
|
state.setIsPlan(Integer.valueOf(wcsOfRps.getIsPlan()));
|
//log.info("获取包装工况以及绩效信息" + JsonUtil.toJson(workstationState));
|
|
}
|
/*
|
void insertState(DeviceState state){
|
String deviceId = IOTDBConstant.DB_PREFIX+IOTDBConstant.TEMPLATE_STATE+"_"+state.getWorkstationId();
|
try {
|
iotDBCommonService.setTemmplateIfNotSet(IOTDBConstant.TEMPLATE_STATE, deviceId);
|
|
List<MeasurementSchema> schemas = new ArrayList<>();
|
|
schemas.add(new MeasurementSchema("workstation_id", TSDataType.INT64));
|
schemas.add(new MeasurementSchema("value_collect", TSDataType.INT32));
|
schemas.add(new MeasurementSchema("calendar_code", TSDataType.TEXT));
|
schemas.add(new MeasurementSchema("factory_year", TSDataType.INT32));
|
schemas.add(new MeasurementSchema("factory_month", TSDataType.INT32));
|
schemas.add(new MeasurementSchema("factory_week", TSDataType.INT32));
|
schemas.add(new MeasurementSchema("factory_date", TSDataType.INT32));
|
schemas.add(new MeasurementSchema("shift_index", TSDataType.INT32));
|
schemas.add(new MeasurementSchema("shift_time_type", TSDataType.INT32));
|
schemas.add(new MeasurementSchema("wcs", TSDataType.INT32));
|
schemas.add(new MeasurementSchema("rps", TSDataType.INT32));
|
|
schemas.add(new MeasurementSchema("is_fix_point", TSDataType.BOOLEAN));
|
schemas.add(new MeasurementSchema("is_sync", TSDataType.BOOLEAN));
|
|
schemas.add(new MeasurementSchema("is_plan", TSDataType.INT32));
|
schemas.add(new MeasurementSchema("feedback_point_type", TSDataType.INT32));
|
schemas.add(new MeasurementSchema("feedback_id", TSDataType.INT64));
|
schemas.add(new MeasurementSchema("is_deleted", TSDataType.BOOLEAN));
|
schemas.add(new MeasurementSchema("employee_id", TSDataType.INT64));
|
|
|
Tablet tablet = new Tablet(deviceId, schemas);
|
int rowIndex = tablet.rowSize++;
|
|
tablet.timestamps[rowIndex] = state.getTime();
|
tablet.addValue("workstation_id", rowIndex, state.getWorkstationId());
|
tablet.addValue("value_collect", rowIndex, state.getValueCollect());
|
tablet.addValue("calendar_code", rowIndex, state.getCalendarCode());
|
tablet.addValue("factory_year", rowIndex, state.getFactoryYear());
|
tablet.addValue("factory_month", rowIndex, state.getFactoryMonth());
|
tablet.addValue("factory_week", rowIndex, state.getFactoryWeek());
|
tablet.addValue("factory_date", rowIndex, state.getFactoryDate());
|
tablet.addValue("shift_index", rowIndex, state.getShiftIndex());//TODO null
|
tablet.addValue("shift_time_type", rowIndex, state.getShiftTimeType());//TODO null
|
tablet.addValue("wcs", rowIndex, state.getWcs());
|
tablet.addValue("rps", rowIndex, state.getRps());
|
|
tablet.addValue("is_fix_point", rowIndex,state.getIsFixPoint());
|
tablet.addValue("is_sync", rowIndex, state.getIsSync());
|
|
tablet.addValue("is_plan", rowIndex, state.getIsPlan());
|
tablet.addValue("feedback_point_type", rowIndex, state.getFeedbackPointType());
|
tablet.addValue("feedback_id", rowIndex, state.getFeedbackId());
|
tablet.addValue("is_deleted", rowIndex, state.getIsDeleted());
|
tablet.addValue("employee_id", rowIndex, state.getEmployeeId());
|
|
iotdbCfg.getSessionPool().insertAlignedTablet(tablet);
|
|
log.info("状态汇总完成");
|
} catch (Exception e) {
|
log.error("聚合产量IODDB入库失败", e);
|
}
|
}*/
|
}
|