严智鑫
2025-11-13 945bc394f40d8af1072a53da9a94f24207124e6d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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");
    }
}