cl
2024-02-23 73bc0656dc15cd9cc95c6f4f51949ef0437088ce
提交 | 用户 | 时间
d43481 1 package cn.stylefeng.guns.plcserver.callback;
C 2
3
4 import cn.stylefeng.guns.modular.bs.collectionParamConf.model.params.CollectionParamConfParam;
5 import cn.stylefeng.guns.modular.bs.collectionParamConf.model.result.CollectionParamConfResult;
6 import cn.stylefeng.guns.modular.bs.collectionParamConf.service.CollectionParamConfService;
7 import cn.stylefeng.guns.modular.bs.equipmentInfo.model.params.EquipmentInfoParam;
8 import cn.stylefeng.guns.modular.bs.equipmentInfo.model.result.EquipmentInfoResult;
9 import cn.stylefeng.guns.modular.bs.equipmentInfo.service.EquipmentInfoService;
10 import cn.stylefeng.guns.modular.bs.locationInfo.model.params.LocationInfoParam;
11 import cn.stylefeng.guns.modular.bs.locationInfo.model.result.LocationInfoResult;
12 import cn.stylefeng.guns.modular.bs.locationInfo.service.LocationInfoService;
13 import cn.stylefeng.guns.modular.cm.paramCollection.model.params.ParamCollectionParam;
14 import cn.stylefeng.guns.modular.cm.paramCollection.service.ParamCollectionService;
15 import cn.stylefeng.guns.modular.cm.passingStationCollection.model.params.PassingStationCollectionParam;
16 import cn.stylefeng.guns.modular.cm.passingStationCollection.service.PassingStationCollectionService;
17 import cn.stylefeng.guns.modular.dq.materialTraceability.model.params.MaterialTraceabilityParam;
18 import cn.stylefeng.guns.modular.dq.materialTraceability.service.MaterialTraceabilityService;
19 import cn.stylefeng.guns.modular.em.equipmentAlarm.model.params.EquipmentAlarmParam;
20 import cn.stylefeng.guns.modular.em.equipmentAlarm.service.EquipmentAlarmService;
21 import cn.stylefeng.guns.modular.em.equipmentStatus.model.params.EquipmentStatusParam;
22 import cn.stylefeng.guns.modular.em.equipmentStatus.model.result.EquipmentStatusResult;
23 import cn.stylefeng.guns.modular.em.equipmentStatus.service.EquipmentStatusService;
24 import cn.stylefeng.guns.modular.gm.greaseManage.model.params.GreaseManageParam;
25 import cn.stylefeng.guns.modular.gm.greaseManage.model.result.GreaseManageResult;
26 import cn.stylefeng.guns.modular.gm.greaseManage.service.GreaseManageService;
27 import cn.stylefeng.guns.modular.om.productionOrdeInfo.model.params.ProductionOrdeInfoParam;
28 import cn.stylefeng.guns.modular.om.productionOrdeInfo.model.result.ProductionOrdeInfoResult;
29 import cn.stylefeng.guns.modular.om.productionOrdeInfo.service.ProductionOrdeInfoService;
30 import cn.stylefeng.guns.modular.om.productionOrderBatchInfo.model.params.ProductionOrderBatchInfoParam;
31 import cn.stylefeng.guns.modular.om.productionOrderBatchInfo.model.result.ProductionOrderBatchInfoResult;
32 import cn.stylefeng.guns.modular.om.productionOrderBatchInfo.service.ProductionOrderBatchInfoService;
33 import cn.stylefeng.guns.modular.om.productionOrderRecords.service.ProductionOrderRecordsService;
34 import cn.stylefeng.guns.modular.sc.repairManageInfo.model.params.RepairManageInfoParam;
35 import cn.stylefeng.guns.modular.sc.repairManageInfo.model.result.RepairManageInfoResult;
36 import cn.stylefeng.guns.modular.sc.repairManageInfo.service.RepairManageInfoService;
37 import cn.stylefeng.guns.modular.sc.serialNumbersConf.service.SerialNumbersConfService;
38 import cn.stylefeng.guns.plcserver.opc.GlobalVariable;
39 import cn.stylefeng.guns.plcserver.opc.OPCElement;
40 import cn.stylefeng.guns.plcserver.opc.unit.OPCUnit;
41 import cn.stylefeng.guns.plcserver.tool.DateTool;
42 import cn.stylefeng.guns.plcserver.tool.LogUtil;
43 import com.kangaroohy.milo.model.ReadWriteEntity;
44 import com.kangaroohy.milo.runner.subscription.SubscriptionCallback;
45 import com.kangaroohy.milo.service.MiloService;
46 import org.apache.log4j.Logger;
47 import org.openscada.opc.lib.da.Item;
48 import org.springframework.beans.factory.annotation.Autowired;
49 import org.springframework.stereotype.Component;
50
51 import java.text.SimpleDateFormat;
52 import java.time.LocalDate;
53 import java.time.format.DateTimeFormatter;
54 import java.time.temporal.ChronoUnit;
55 import java.util.ArrayList;
56 import java.util.Date;
57 import java.util.List;
58 import java.util.Random;
59
60 @Component
73bc06 61 public class StateCallback{
d43481 62
C 63     public MiloService miloService;
64
65     @Autowired
66     public ProductionOrdeInfoService productionOrdeInfoService;
67     @Autowired
68     public PassingStationCollectionService passingStationCollectionService;
69     @Autowired
70     public ParamCollectionService paramCollectionService;
71     @Autowired
72     public CollectionParamConfService collectionParamConfService;
73     @Autowired
74     public SerialNumbersConfService serialNumbersConfService;
75     @Autowired
76     private EquipmentStatusService equipmentStatusService;
77
78     @Autowired
79     private EquipmentAlarmService equipmentAlarmService;
80     @Autowired
81     private MaterialTraceabilityService materialTraceabilityService;
82     @Autowired
83     private EquipmentInfoService equipmentInfoService;
84     @Autowired
85     private RepairManageInfoService repairManageInfoService;
86
87     @Autowired
88     private LocationInfoService locationInfoService;
89
90     @Autowired
91     private GreaseManageService greaseManageService;
92
93     @Autowired
94     private ProductionOrderRecordsService productionOrderRecordsService;
95
96     @Autowired
97     private ProductionOrderBatchInfoService productionOrderBatchInfoService;
98
99     private static Logger logger;
100     LogUtil logUtil = new LogUtil();
101     static {
102         logger = Logger.getLogger(StateCallback.class);
103     }
104     private static Date IN_TIME = null;
105     private static String S_ORDER_CODE = "";//工单编号
106     private static String S_PRODUCT_CODE = "";//产品编号
107     private static String S_PRODUCT_TYPE= "";//产品类型
108     private static String S_SFC_CODE = "";//总成编码
109     private static String PRODUCTION_LINE  = "BOP";//产线号
110     private static String LOCATION_CODE  = "BOP010";//工位号
111     private static List list = null;
112
113     public StateCallback(MiloService miloService,
114                          ProductionOrdeInfoService productionOrdeInfoService,
115                          PassingStationCollectionService passingStationCollectionService,
116                          ParamCollectionService paramCollectionService,
117                          CollectionParamConfService collectionParamConfService,
118                          SerialNumbersConfService serialNumbersConfService,
119                          EquipmentStatusService equipmentStatusService,
120                          EquipmentAlarmService equipmentAlarmService,
121                          MaterialTraceabilityService materialTraceabilityService,
122                          EquipmentInfoService equipmentInfoService,
123                          RepairManageInfoService repairManageInfoService,
124                          LocationInfoService locationInfoService,
125                          GreaseManageService greaseManageService,
126                          ProductionOrderRecordsService productionOrderRecordsService,
127                          ProductionOrderBatchInfoService productionOrderBatchInfoService) {
128         this.miloService = miloService;
129         this.productionOrdeInfoService = productionOrdeInfoService;
130         this.passingStationCollectionService = passingStationCollectionService;
131         this.paramCollectionService = paramCollectionService;
132         this.collectionParamConfService = collectionParamConfService;
133         this.serialNumbersConfService = serialNumbersConfService;
134         this.equipmentStatusService = equipmentStatusService;
135         this.equipmentAlarmService = equipmentAlarmService;
136         this.materialTraceabilityService = materialTraceabilityService;
137         this.equipmentInfoService = equipmentInfoService;
138         this.repairManageInfoService = repairManageInfoService;
139         this.locationInfoService = locationInfoService;
140         this.greaseManageService = greaseManageService;
141         this.productionOrderRecordsService = productionOrderRecordsService;
142         this.productionOrderBatchInfoService = productionOrderBatchInfoService;
143     }
73bc06 144
d43481 145     public void handleInfo() throws Exception {
C 146         logger.info("OP100工位,handleInfo START!");
147
148         if(null == list ){
149             EquipmentInfoParam equipmentInfoParam = new EquipmentInfoParam();
150             list = equipmentInfoService.findListBySpec(equipmentInfoParam);
151         }
152         if(null != list && list.size()>0) {
153             for (int i = 0; i < list.size(); i++) {
154                 EquipmentInfoResult result = (EquipmentInfoResult) list.get(i);
155                 Item item = result.getItem();
156                 String value = OPCUnit.read(item);//读参数值  设备状态
157                 String equipmentNo = result.getEquipmentNo();
158
159                 EquipmentStatusParam equipmentStatusParam = new EquipmentStatusParam();
160                 equipmentStatusParam.setEquipmentNo(equipmentNo);
161                 List statuslist = equipmentStatusService.findListBySpec(equipmentStatusParam);
162                 if(statuslist.size()>0){
163                     EquipmentStatusResult equipmentStatusResult = (EquipmentStatusResult) statuslist.get(0);
164                     if(!value.equals(equipmentStatusResult.getStatus())){
165                         equipmentStatusParam.setId(equipmentStatusResult.getId());
166                         equipmentStatusParam.setStatus(value);
167                         equipmentStatusParam.setUpdateTime(DateTool.getLocalTimeForDate());
168                         equipmentStatusService.update(equipmentStatusParam);//更新设备状态
169
170                         //添加设备报警
171                         if("3".equals(value)){
172                             EquipmentAlarmParam equipmentAlarmParam = new EquipmentAlarmParam();
173                             equipmentAlarmParam.setEquipmentNo(equipmentNo);
174                             equipmentAlarmParam.setEquipmentName(result.getEquipmentName());
175                             equipmentAlarmParam.setWorkshopCode(result.getWorkshopCode());
176                             equipmentAlarmParam.setProductionLineCode(result.getProductionLineCode());
177                             equipmentAlarmParam.setLocationCode(result.getLocationCode());
178                             equipmentAlarmParam.setErrorDesc(result.getEquipmentName()+"报警!");
179                             equipmentAlarmParam.setAlarmTime(DateTool.getLocalTimeForDate());
180                             equipmentAlarmService.add(equipmentAlarmParam);
181                         }
182                     }
183
184                 }else{
185                     equipmentStatusParam.setEquipmentName(result.getEquipmentName());
186                     equipmentStatusParam.setWorkshopCode(result.getWorkshopCode());
187                     equipmentStatusParam.setProductionLineCode(result.getProductionLineCode());
188                     equipmentStatusParam.setLocationCode(result.getLocationCode());
189                     equipmentStatusParam.setStatus(value);
190                     equipmentStatusParam.setUpdateTime(DateTool.getLocalTimeForDate());
191                     equipmentStatusService.add(equipmentStatusParam);
192
193                     //添加设备报警
194                     if("3".equals(value)){
195                         EquipmentAlarmParam equipmentAlarmParam = new EquipmentAlarmParam();
196                         equipmentAlarmParam.setEquipmentNo(equipmentNo);
197                         equipmentAlarmParam.setEquipmentName(result.getEquipmentName());
198                         equipmentAlarmParam.setWorkshopCode(result.getWorkshopCode());
199                         equipmentAlarmParam.setProductionLineCode(result.getProductionLineCode());
200                         equipmentAlarmParam.setLocationCode(result.getLocationCode());
201                         equipmentAlarmParam.setErrorDesc(result.getEquipmentName()+"报警!");
202                         equipmentAlarmParam.setAlarmTime(DateTool.getLocalTimeForDate());
203                         equipmentAlarmService.add(equipmentAlarmParam);
204                     }
205                 }
206
207             }
208         }
209
210
211         Thread.sleep(60*1000);
212     }
213
214     public void handleOilStateDOP020(String LOCATION_CODE) throws Exception {
215         GreaseManageParam param = new GreaseManageParam();
216         param.setLocationCode(LOCATION_CODE);
217         List<GreaseManageResult> list = greaseManageService.findListBySpec(param);
218         if(!list.isEmpty()) {
219             String duaDate = list.get(0).getDuaDate();
220
221             SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
222             String currentDate = format.format(new Date());
223             long  daysBetween = getRemainder(currentDate,duaDate);
224             if(daysBetween>0){
225                 ReadWriteEntity entity = new ReadWriteEntity(OPCElement.DOP020_OIL_STATE,false);
226                 miloService.writeToOpcUa(entity);//写PC完成
227             }else{
228                 ReadWriteEntity entity = new ReadWriteEntity(OPCElement.DOP020_OIL_STATE,true);
229                 miloService.writeToOpcUa(entity);//写PC完成
230             }
231         }
232     }
233
234     public  void handleOilStateOP050(String LOCATION_CODE) throws Exception {
235         GreaseManageParam param = new GreaseManageParam();
236         param.setLocationCode(LOCATION_CODE);
237         List<GreaseManageResult> list = greaseManageService.findListBySpec(param);
238         if(!list.isEmpty()) {
239             String duaDate = list.get(0).getDuaDate();
240
241             SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
242             String currentDate = format.format(new Date());
243             long  daysBetween = getRemainder(currentDate,duaDate);
244             if(daysBetween>0){
245                 ReadWriteEntity entity = new ReadWriteEntity(OPCElement.OP050_OIL_STATE,false);
246                 miloService.writeToOpcUa(entity);//写PC完成
247             }else{
248                 ReadWriteEntity entity = new ReadWriteEntity(OPCElement.OP050_OIL_STATE,true);
249                 miloService.writeToOpcUa(entity);//写PC完成
250             }
251         }
252     }
253
254     public  void handleOilStateBOP030(String LOCATION_CODE) throws Exception {
255         GreaseManageParam param = new GreaseManageParam();
256         param.setLocationCode(LOCATION_CODE);
257         List<GreaseManageResult> list = greaseManageService.findListBySpec(param);
258         if(!list.isEmpty()) {
259             String duaDate = list.get(0).getDuaDate();
260
261             SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
262             String currentDate = format.format(new Date());
263             long  daysBetween = getRemainder(currentDate,duaDate);
264             if(daysBetween>0){
265                 ReadWriteEntity entity = new ReadWriteEntity(OPCElement.BOP030_OIL_STATE,false);
266                 miloService.writeToOpcUa(entity);//写PC完成
267             }else{
268                 ReadWriteEntity entity = new ReadWriteEntity(OPCElement.BOP030_OIL_STATE,true);
269                 miloService.writeToOpcUa(entity);//写PC完成
270             }
271         }
272     }
273
274     public static long getRemainder(String currentDate,String tableDate){
275         DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyyMMdd");
276         LocalDate localDate1 = LocalDate.parse(currentDate, dateFormatter);
277         LocalDate localDate2 = LocalDate.parse(tableDate, dateFormatter);
278         long days = ChronoUnit.DAYS.between(localDate1, localDate2);
279         return days;
280     }
281 }