package org.jeecg.modules.mdc.job;
|
|
import lombok.extern.slf4j.Slf4j;
|
import org.jeecg.common.constant.CommonConstant;
|
import org.jeecg.common.system.vo.DictModel;
|
import org.jeecg.modules.mdc.dto.CurrentElectricDto;
|
import org.jeecg.modules.mdc.dto.EquipmentMachiningHistoryDto;
|
import org.jeecg.modules.mdc.dto.MachineXYZHistoryDto;
|
import org.jeecg.modules.mdc.entity.Equipment;
|
import org.jeecg.modules.mdc.entity.EquipmentElectricStatistical;
|
import org.jeecg.modules.mdc.service.*;
|
import org.jeecg.modules.mdc.util.DateUtils;
|
import org.jeecg.modules.mdc.util.ThrowableUtil;
|
import org.jeecg.modules.quartz.entity.QuartzJob;
|
import org.jeecg.modules.quartz.entity.SysQuartzLog;
|
import org.jeecg.modules.quartz.service.IQuartzJobService;
|
import org.jeecg.modules.quartz.service.ISysQuartzLogService;
|
import org.jeecg.modules.system.service.ISysAnnouncementService;
|
import org.jeecg.modules.system.service.ISysDictService;
|
import org.quartz.*;
|
|
import javax.annotation.Resource;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* 设备运行最大电流统计
|
*
|
* @author Lius
|
* @date 2024/7/18 15:59
|
*/
|
@PersistJobDataAfterExecution
|
@DisallowConcurrentExecution
|
@Slf4j
|
public class StatisticalElectricJob implements Job {
|
|
@Resource
|
private IQuartzJobService quartzJobService;
|
|
@Resource
|
private ISysQuartzLogService sysQuartzLogService;
|
|
@Resource
|
private ISysAnnouncementService sysAnnouncementService;
|
|
@Resource
|
private IEquipmentService equipmentService;
|
|
@Resource
|
private ISysDictService sysDictService;
|
|
@Resource
|
private IEquipmentElectricStatisticalService equipmentElectricStatisticalService;
|
|
@Resource
|
private IEquipmentWorkLineService equipmentWorkLineService;
|
|
@Resource
|
private IEquipmentXYZService equipmentXYZService;
|
|
@Override
|
public void execute(JobExecutionContext context) throws JobExecutionException {
|
SysQuartzLog quartzLog = new SysQuartzLog();
|
quartzLog.setCreateTime(new Date());
|
List<QuartzJob> byJobClassName = this.quartzJobService.findByJobClassName(this.getClass().getName());
|
if (byJobClassName != null && !byJobClassName.isEmpty()) {
|
quartzLog.setJobId(byJobClassName.get(0).getId());
|
}
|
log.info("设备运行最大电流统计 StatisticalElectricJob start! 时间:" + DateUtils.getNow());
|
long startTime = System.currentTimeMillis();
|
try {
|
List<Equipment> equipmentList = equipmentService.list();
|
if (equipmentList != null && !equipmentList.isEmpty()) {
|
Date initDate = null;
|
EquipmentElectricStatistical electricStatistical;
|
List<EquipmentElectricStatistical> resultList = new ArrayList<>();
|
List<DictModel> dictList = sysDictService.queryEnableDictItemsByCode(CommonConstant.AXIS_TYPE);
|
if (dictList != null && !dictList.isEmpty()) {
|
for (Equipment equipment : equipmentList) {
|
if (equipment.getDrivetype().equals("SIEMENSOpcUa")) {
|
String saveTableName = equipment.getSavetablename();
|
Date lastDate = equipmentElectricStatisticalService.getMaxDate(equipment.getEquipmentid());
|
if (lastDate == null) {
|
Date minCollectTime = equipmentWorkLineService.getMinDate(saveTableName);
|
if (minCollectTime == null) {
|
continue;
|
}
|
initDate = DateUtils.removeTime(minCollectTime);
|
} else {
|
initDate = DateUtils.plusTime(lastDate, 1);
|
}
|
for (DictModel dictModel : dictList) {
|
electricStatistical = new EquipmentElectricStatistical();
|
Integer axisType = Integer.parseInt(dictModel.getValue());
|
CurrentElectricDto currentElectricDto = equipmentWorkLineService.getMaxElectric(saveTableName, axisType, initDate, DateUtils.plusTime(initDate, 1));
|
if (currentElectricDto == null) {
|
continue;
|
}
|
electricStatistical.setAxistype(axisType);
|
electricStatistical.setEquipmentid(equipment.getEquipmentid());
|
electricStatistical.setEquipmentname(equipment.getEquipmentname());
|
electricStatistical.setElectrictime(currentElectricDto.getCollectTime());
|
electricStatistical.setElectricvalue(currentElectricDto.getCurrentValue());
|
electricStatistical.setCreatedate(initDate);
|
EquipmentMachiningHistoryDto machiningHistoryDto = equipmentWorkLineService.getNearTimeSpindleLoad(saveTableName, initDate, DateUtils.plusTime(initDate, 1), currentElectricDto.getCollectTime());
|
if (machiningHistoryDto != null) {
|
electricStatistical.setSpindlespeed(machiningHistoryDto.getSpindleSpeed());
|
electricStatistical.setSpindleload(machiningHistoryDto.getSpindleLoad());
|
electricStatistical.setSpindletime(machiningHistoryDto.getCollectTime());
|
}
|
MachineXYZHistoryDto machineXYZHistoryDto = equipmentXYZService.getNearAxisType(equipment.getEquipmentid(), initDate, DateUtils.plusTime(initDate, 1), currentElectricDto.getCollectTime());
|
if (machineXYZHistoryDto != null) {
|
electricStatistical.setAxistime(machineXYZHistoryDto.getCollectTime());
|
if (axisType == 1) {
|
electricStatistical.setAxisvalue(machineXYZHistoryDto.getXMachine());
|
} else if (axisType == 2) {
|
electricStatistical.setAxisvalue(machineXYZHistoryDto.getYMachine());
|
} else if (axisType == 3) {
|
electricStatistical.setAxisvalue(machineXYZHistoryDto.getZMachine());
|
} else if (axisType == 4) {
|
electricStatistical.setAxisvalue(machineXYZHistoryDto.getAMachine());
|
} else if (axisType == 5) {
|
electricStatistical.setAxisvalue(machineXYZHistoryDto.getBMachine());
|
}
|
}
|
resultList.add(electricStatistical);
|
}
|
}
|
}
|
}
|
if(!resultList.isEmpty()) {
|
equipmentElectricStatisticalService.saveBatch(resultList);
|
}
|
}
|
quartzLog.setIsSuccess(0);
|
} catch (Exception e) {
|
quartzLog.setIsSuccess(-1);
|
quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e));
|
// 发送消息通知
|
sysAnnouncementService.jobSendMessage("设备运行最大电流统计", quartzLog.getExceptionDetail());
|
}
|
long endTime = System.currentTimeMillis();
|
quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
|
sysQuartzLogService.save(quartzLog);
|
}
|
}
|