package com.northglass.service.washmachine;
|
|
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.WashMachineState;
|
import com.northglass.entity.CutMachine;
|
import com.northglass.entity.WashMachine;
|
import com.northglass.listener.CutMachineClientListener;
|
import com.northglass.listener.WashMachineClientListener;
|
import com.northglass.repository.WashMachineDao;
|
import com.northglass.service.cutmachine.CutMachineService;
|
import com.northglass.service.message.WashMachineMessageProcessor;
|
|
@Component
|
@Transactional
|
public class WashMachineService {
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(CutMachineService.class);
|
|
@Autowired
|
private WashMachineDao washMachineDao;
|
|
@Autowired
|
private WashMachineMessageProcessor messageProcessor;
|
|
public void resetState() {
|
List<WashMachine> machineList = washMachineDao.findAll();
|
|
for (WashMachine machine : machineList) {
|
machine.setConnectState(ConnectState.CONNECTING);
|
machine.setState(WashMachineState.STOPPED);
|
}
|
|
washMachineDao.save(machineList);
|
}
|
|
public List<WashMachine> getAll() {
|
return washMachineDao.findAll();
|
}
|
|
public WashMachine getById(Long id) {
|
return washMachineDao.findOne(id);
|
}
|
|
public WashMachine save(WashMachine washMachine) {
|
return washMachineDao.save(washMachine);
|
}
|
|
public void setConnectState(WashMachine machineClient, String string) {
|
machineClient.setConnectState(string);
|
machineClient.setModifyTime(new Date());
|
washMachineDao.save(machineClient);
|
}
|
|
public String processMessage(String sendMessageHex, WashMachine machineClient) {
|
return messageProcessor.generateReturnMessage(sendMessageHex, machineClient);
|
}
|
|
|
public void connect() {
|
List<WashMachine> washMachineList = washMachineDao.findAll();
|
// 若监听线程为空,则新建监听线程
|
for (WashMachine washMachine : washMachineList) {
|
if (washMachine.getServerConnection().getThread() == null) {
|
LOGGER.debug("创建新的清洗机【" + washMachine.getNumber() + "】监听线程!");
|
Thread thread = new Thread(new WashMachineClientListener(washMachine,this));
|
thread.start();
|
setConnectState(washMachine, ConnectState.CONNECTING);
|
washMachine.getServerConnection().setThread(thread);
|
}
|
}
|
|
|
LOGGER.debug("> End connect");
|
}
|
}
|