package com.qianwen.mdc.service;
|
|
import java.text.DateFormat;
|
import java.text.SimpleDateFormat;
|
import java.util.List;
|
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.scheduling.annotation.Async;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.qianwen.mdc.domain.Machine;
|
import com.qianwen.mdc.domain.MachineAccount;
|
import com.qianwen.mdc.domain.MachineStatus;
|
import com.qianwen.mdc.domain.MachineStatusHistory;
|
import com.qianwen.mdc.domain.MachineUtilization;
|
import com.qianwen.mdc.domain.Section;
|
import com.qianwen.mdc.domain.workshop.Workshop;
|
import com.qianwen.mdc.mapper.MachineAccountMapper;
|
import com.qianwen.mdc.mapper.MachineMapper;
|
import com.qianwen.mdc.mapper.MachineStatusHistoryMapper;
|
import com.qianwen.mdc.mapper.MachineStatusMapper;
|
import com.qianwen.mdc.mapper.MdcUtilizationMapper;
|
import com.qianwen.mdc.mapper.SectionMapper;
|
import com.qianwen.mdc.mapper.WorkshopMapper;
|
import com.qianwen.mdc.utils.TimestampUtil;
|
|
|
/**
|
* 数据归档服务,将 machine_status 数据导入machine_status_history表,并加入最新的machine_status数据
|
*/
|
@Component
|
@Async
|
public class MdcDataArchiveService {
|
|
@Autowired
|
private MachineMapper machineMapper;
|
@Autowired
|
private WorkshopMapper workshopMapper;
|
@Autowired
|
private SectionMapper sectionMapper;
|
@Autowired
|
private MachineStatusMapper machineStatusMapper;
|
@Autowired
|
private MachineStatusHistoryMapper machineStatusHistoryMapper;
|
|
@Autowired
|
private MachineAccountMapper machineAccountMapper;
|
@Autowired
|
private MdcUtilizationMapper mdcUtilizationMapper;
|
|
|
|
@Scheduled(cron = "0 10 8 * * ?")
|
public void dataArchive() {
|
int dayStart = (int) TimestampUtil.getShiftDayStartTimestamp();
|
/*
|
Example statusExample = new Example(MdcMachineStatus.class);
|
statusExample.createCriteria().andLessThan("time", dayStart);
|
List<MdcMachineStatus> mdcMachineStatusList = mdcMachineStatusMapper.selectByExample(statusExample);
|
*/
|
LambdaQueryWrapper<MachineStatus> wrapper = Wrappers.lambdaQuery();
|
wrapper.lt(MachineStatus::getTime, dayStart);
|
|
List<MachineStatus> machineStatusList = machineStatusMapper.selectList(wrapper);
|
|
for (MachineStatus status : machineStatusList) {
|
MachineStatusHistory statusHistory = new MachineStatusHistory();
|
BeanUtils.copyProperties(status, statusHistory);
|
statusHistory.setId(null);
|
|
machineStatusHistoryMapper.insert(statusHistory);
|
machineStatusMapper.deleteById(status.getId());
|
|
MachineUtilization mdcUtilization = new MachineUtilization();
|
mdcUtilization.setId(null);
|
/*
|
Example accountExample = new Example(MdcMachineAccount.class);
|
accountExample.setOrderByClause("id desc");
|
accountExample.createCriteria().andEqualTo("machineId", status.getMachineId());
|
RowBounds rowBounds = new RowBounds(0, 1);
|
List<MdcMachineAccount> list = mdcMachineAccountMapper.selectByExampleAndRowBounds(accountExample, rowBounds);
|
*/
|
QueryWrapper<MachineAccount> wrapperAcc = Wrappers.query();
|
wrapperAcc.eq("machine_id", status.getMachineId());
|
wrapperAcc.orderByDesc("id");
|
|
//List<MdcMachineAccount> list = mdcMachineAccountMapper.selectList(wrapperAcc);
|
List<MachineAccount> list = machineAccountMapper.lastByMachineId(status.getMachineId());
|
if (list.isEmpty()) {
|
continue;
|
}
|
MachineAccount account = list.get(0);
|
|
//统计利用率数据并入库
|
mdcUtilization.setUid(account.getUuid());
|
mdcUtilization.setName(account.getCategory());
|
//mdcUtilization.setModel(account.getModel());
|
//TODO 设备类型??如果是,就是mdcUtilization.setModel(account.getType());
|
//mdcUtilization.setCategory(account.getType());
|
mdcUtilization.setModel(account.getType());
|
mdcUtilization.setCategory(account.getCategory());
|
|
|
mdcUtilization.setCncSystem(account.getCncSystem());
|
|
Machine machine = machineMapper.selectById(status.getMachineId());
|
Workshop workshop = workshopMapper.selectById(machine.getWorkshopId());
|
Section section = sectionMapper.selectById(machine.getSectionId());
|
if(workshop != null) {
|
mdcUtilization.setWorkshop(workshop.getName());
|
}
|
|
if(section != null) {
|
mdcUtilization.setSection(section.getName());
|
}
|
mdcUtilization.setShift(machine.getShiftType());
|
|
DateFormat df = new SimpleDateFormat("yyyyMMdd");
|
mdcUtilization.setCdate(df.format((long) status.getTime() * 1000));
|
|
//mdcUtilization.setCutTime(Integer.valueOf(status.getVar2()));
|
mdcUtilization.setCutTime(status.getCycleTime());
|
//mdcUtilization.setBootTime(Integer.valueOf(status.getVar3()));
|
mdcUtilization.setBootTime(status.getMachineOnTime());
|
|
String downTime = status.getVar8();
|
if ("".equals(downTime)) {
|
mdcUtilization.setDownTime(0);
|
} else {
|
mdcUtilization.setDownTime(Integer.valueOf(status.getVar8()));
|
}
|
mdcUtilization.setThreeShiftTime(3600 * 21);
|
mdcUtilization.setTwoShiftTime((int) (3600 * 15.5));
|
mdcUtilization.setFactory(2);
|
|
mdcUtilizationMapper.insert(mdcUtilization);
|
}
|
|
}
|
|
}
|