package com.northglass.service.tidy;
|
|
import java.util.Date;
|
import java.util.List;
|
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import com.northglass.constants.StateConstants.ConnectState;
|
import com.northglass.constants.StateConstants.CutMachineState;
|
import com.northglass.constants.StateConstants.CutMachineTaskState;
|
import com.northglass.entity.CutMachine;
|
import com.northglass.entity.CutMachineTask;
|
import com.northglass.entity.LoadMachine;
|
import com.northglass.entity.LoadMachineRack;
|
import com.northglass.entity.LoadMachineTask;
|
import com.northglass.entity.RawPackage;
|
import com.northglass.entity.RawPackageTxt;
|
import com.northglass.entity.TidyMachine;
|
import com.northglass.listener.CutMachineClientListener;
|
import com.northglass.listener.TidyMachineClientListener;
|
import com.northglass.repository.CutMachineDao;
|
import com.northglass.repository.CutMachineTaskDao;
|
import com.northglass.repository.LoadMachineDao;
|
import com.northglass.repository.LoadMachineRackDao;
|
import com.northglass.repository.LoadMachineTaskDao;
|
import com.northglass.repository.RawPackageDao;
|
import com.northglass.repository.RawPackageTxtDao;
|
import com.northglass.repository.TidyMachineDao;
|
import com.northglass.service.cutmachinetask.CutMachineTaskService;
|
import com.northglass.service.loadmachinerack.LoadMachineRackService;
|
import com.northglass.service.message.CutMachineMessageProcessor;
|
import com.northglass.service.message.TidyMachineMessageProcessor;
|
|
@Component
|
@Transactional
|
public class TidyMachineService {
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(TidyMachineService.class);
|
|
@Autowired
|
private CutMachineDao cutMachineDao;
|
|
@Autowired
|
private CutMachineTaskDao cutMachineTaskDao;
|
|
@Autowired
|
private CutMachineTaskService cutMachineTaskService;
|
|
@Autowired
|
private LoadMachineRackService loadMachineRackService;
|
|
@Autowired
|
private LoadMachineTaskDao loadMachineTaskDao;
|
|
@Autowired
|
private LoadMachineRackDao loadMachineRackDao;
|
|
@Autowired
|
private RawPackageDao rawPackageDao;
|
|
@Autowired
|
private RawPackageTxtDao rawPackageTxtDao;
|
|
@Autowired
|
private LoadMachineDao loadMachineDao;
|
|
@Autowired
|
private TidyMachineMessageProcessor messageProcessor;
|
|
@Autowired
|
private TidyMachineDao tidyMachineDao;
|
|
public List<CutMachine> getAll() {
|
return cutMachineDao.findAll();
|
}
|
|
public void connect() {
|
List<TidyMachine> tidyMachineList = tidyMachineDao.findAll();
|
// 若监听线程为空,则新建监听线程
|
for (TidyMachine tidyMachine : tidyMachineList) {
|
if (tidyMachine.getServerConnection().getThread() == null) {
|
LOGGER.debug("创建新的理片大车【" + tidyMachine.getNumber() + "】监听线程!");
|
Thread thread = new Thread(new TidyMachineClientListener(tidyMachine,this));
|
thread.start();
|
setConnectState(tidyMachine, ConnectState.CONNECTING);
|
tidyMachine.getServerConnection().setThread(thread);
|
}
|
}
|
|
|
LOGGER.debug("> End connect");
|
}
|
|
public void resetState() {
|
List<CutMachine> cutMachineList = cutMachineDao.findAll();
|
|
for (CutMachine cutMachine : cutMachineList) {
|
cutMachine.setConnectState(ConnectState.NO_CONNECT);
|
cutMachine.setState(CutMachineState.STOPPED);
|
}
|
|
cutMachineDao.save(cutMachineList);
|
}
|
|
public CutMachine save(CutMachine cutMachine) {
|
return cutMachineDao.save(cutMachine);
|
}
|
|
public CutMachine getById(Long id) {
|
return cutMachineDao.findOne(id);
|
}
|
|
/**
|
* 获取待分配的切割任务
|
*
|
* @return
|
*/
|
public List<CutMachineTask> getToAssignTask() {
|
return cutMachineTaskDao.findToAssignTasks();
|
}
|
|
/**
|
* 获取正在工作的切割任务
|
*
|
* @return
|
*/
|
public List<CutMachineTask> getInWorkTask() {
|
return cutMachineTaskDao.findInWorkTasks();
|
}
|
|
/**
|
* 获取上片位没有原片的任务
|
*
|
* @return
|
*/
|
public List<CutMachineTask> getWarningTask() {
|
return cutMachineTaskDao.findWarningTasks();
|
}
|
|
/**
|
* 获取等待中的切割任务
|
*
|
* @return
|
*/
|
public List<CutMachineTask> getWaitingTask() {
|
return cutMachineTaskDao.findWaitingTasks();
|
}
|
|
/**
|
* 获取已完成的切割任务
|
*
|
* @return
|
*/
|
public List<CutMachineTask> getCompletedTask() {
|
return cutMachineTaskDao.findCompletedTasks();
|
}
|
|
public void assignTasks(Long cutMachineId, String taskIds) {
|
LOGGER.debug("> Start assignTasks");
|
LOGGER.debug("cutMachineId: " + cutMachineId);
|
LOGGER.debug("taskIds: " + taskIds);
|
|
CutMachine cutMachine = cutMachineDao.findOne(cutMachineId);
|
LoadMachine loadMachine = loadMachineDao.findOne(1L);
|
LoadMachineRack loadMachineRack = loadMachine.getLoadMachineRacks().iterator().next();
|
|
String[] taskIdArray = taskIds.split(";");
|
for (String taskId : taskIdArray) {
|
// 给每个任务分配切割机,并且将任务状态设置为等待中
|
CutMachineTask cutMachineTask = cutMachineTaskDao.findOne(Long.valueOf(taskId));
|
cutMachineTask.setCutMachine(cutMachine);
|
cutMachineTask.setState(CutMachineTaskState.WAITING);
|
cutMachineTaskDao.save(cutMachineTask);
|
}
|
|
// 判断上片位上是否有满足需求的原片,如果没有,则设置上片位为缺片;
|
if (loadMachineRack.getRawPackage() == null) {
|
loadMachineRack.setRawPackageReady(false);
|
loadMachineRackService.saveLoadMachineRack(loadMachineRack);
|
return;
|
}
|
|
|
List<LoadMachineTask> loadMachineTaskList = loadMachineTaskDao.findWaitingTasksByLoadMachine(loadMachine.getId());
|
LOGGER.debug("loadMachineTaskList: " + loadMachineTaskList.size());
|
|
if (loadMachineTaskList.size() > 0) {
|
LoadMachineTask waitingTask = loadMachineTaskList.get(0);
|
// OptPattern optPattern = waitingTask.getOptPattern();
|
// LOGGER.debug("optPattern: " + optPattern.getDescription());
|
}
|
|
LOGGER.debug("> End assignTasks");
|
}
|
|
public void setConnectState(TidyMachine tidyMachine, String connectState) {
|
tidyMachine.setConnectState(connectState);
|
tidyMachine.setModifyTime(new Date());
|
tidyMachineDao.save(tidyMachine);
|
}
|
|
public CutMachine getCutMachineByNumber(String number) {
|
return cutMachineDao.findCutMachineByNumber(number);
|
}
|
|
public boolean isDownloadButtonDisplayed(Long cutMachineId) {
|
LOGGER.debug("> Start isDownloadButtonDisplayed");
|
LOGGER.debug("cutMachineId: " + cutMachineId);
|
|
List<CutMachineTask> cutMachineTasks = cutMachineTaskDao.findExecuteTasksByCutMachineId(cutMachineId);
|
LOGGER.debug("cutMachineTasks.size : " + cutMachineTasks.size());
|
|
if (cutMachineTasks.size() == 0) {
|
return false;
|
}
|
|
CutMachineTask cutMachineTask = cutMachineTaskService.getWorkingCutMachineTask(cutMachineId);
|
if (cutMachineTask == null) {
|
return false;
|
}
|
|
CutMachine cutMachine = getById(cutMachineId);
|
LOGGER.debug("> End isDownloadButtonDisplayed");
|
return true;
|
}
|
|
public boolean isDownload(Long cutMachineId) {
|
RawPackageTxt misiion = rawPackageTxtDao.findAcceptedByGroup(cutMachineId.toString());
|
if(misiion==null){
|
return false;
|
}
|
return true;
|
}
|
|
|
//上片机破损管理
|
public void bokenManager(Long cutMachineId,String number){
|
LoadMachineRack rack=loadMachineRackDao.findOne(cutMachineId);
|
if(rack!=null){
|
RawPackage rawPackage=rack.getRawPackage();
|
if(rawPackage!=null){
|
int leftPiece=rawPackage.getLeftPieces();
|
if(leftPiece>0){
|
int nowPiece=leftPiece-Integer.valueOf(number).intValue();
|
rawPackage.setLeftPieces(nowPiece);
|
rawPackageDao.save(rawPackage);
|
|
}
|
}
|
}
|
}
|
|
public String processMessage(String sendMessageHex,TidyMachine tidymachine) {
|
return messageProcessor.generateReturnMessage(sendMessageHex, tidymachine);
|
}
|
}
|