cl
2024-05-23 ba1a7a9ef126296e2798e313dc5b43f775a1123c
提交 | 用户 | 时间
d43481 1 package cn.stylefeng.guns.plcserver.callback;
C 2
3
ba1a7a 4 import cn.hutool.core.collection.CollUtil;
C 5 import cn.hutool.core.util.ObjectUtil;
d43481 6 import cn.stylefeng.guns.modular.bs.collectionParamConf.model.params.CollectionParamConfParam;
C 7 import cn.stylefeng.guns.modular.bs.collectionParamConf.model.result.CollectionParamConfResult;
8 import cn.stylefeng.guns.modular.bs.collectionParamConf.service.CollectionParamConfService;
9 import cn.stylefeng.guns.modular.bs.equipmentInfo.service.EquipmentInfoService;
10 import cn.stylefeng.guns.modular.bs.locationInfo.service.LocationInfoService;
ba1a7a 11 import cn.stylefeng.guns.modular.cm.paramCollection.entity.ParamCollection;
d43481 12 import cn.stylefeng.guns.modular.cm.paramCollection.model.params.ParamCollectionParam;
C 13 import cn.stylefeng.guns.modular.cm.paramCollection.service.ParamCollectionService;
14 import cn.stylefeng.guns.modular.cm.passingStationCollection.model.params.PassingStationCollectionParam;
15 import cn.stylefeng.guns.modular.cm.passingStationCollection.service.PassingStationCollectionService;
16 import cn.stylefeng.guns.modular.dq.materialTraceability.model.params.MaterialTraceabilityParam;
17 import cn.stylefeng.guns.modular.dq.materialTraceability.service.MaterialTraceabilityService;
18 import cn.stylefeng.guns.modular.em.equipmentAlarm.service.EquipmentAlarmService;
19 import cn.stylefeng.guns.modular.em.equipmentStatus.service.EquipmentStatusService;
20 import cn.stylefeng.guns.modular.gm.greaseManage.service.GreaseManageService;
21 import cn.stylefeng.guns.modular.om.productionOrdeInfo.service.ProductionOrdeInfoService;
22 import cn.stylefeng.guns.modular.om.productionOrderBatchInfo.model.params.ProductionOrderBatchInfoParam;
23 import cn.stylefeng.guns.modular.om.productionOrderBatchInfo.model.result.ProductionOrderBatchInfoResult;
24 import cn.stylefeng.guns.modular.om.productionOrderBatchInfo.service.ProductionOrderBatchInfoService;
25 import cn.stylefeng.guns.modular.om.productionOrderRecords.service.ProductionOrderRecordsService;
26 import cn.stylefeng.guns.modular.sc.repairManageInfo.service.RepairManageInfoService;
27 import cn.stylefeng.guns.modular.sc.serialNumbersConf.service.SerialNumbersConfService;
28 import cn.stylefeng.guns.plcserver.opc.GlobalVariable;
29 import cn.stylefeng.guns.plcserver.opc.OPCElement;
30 import cn.stylefeng.guns.plcserver.tool.DateTool;
31 import cn.stylefeng.guns.plcserver.tool.LogUtil;
32 import com.kangaroohy.milo.model.ReadWriteEntity;
33 import com.kangaroohy.milo.runner.subscription.SubscriptionCallback;
34 import com.kangaroohy.milo.service.MiloService;
35 import org.apache.log4j.Logger;
36 import org.springframework.beans.factory.annotation.Autowired;
37 import org.springframework.stereotype.Component;
38
39 import java.util.ArrayList;
40 import java.util.Date;
41 import java.util.List;
42
43 @Component
73bc06 44 public class DOP020Callback {
d43481 45
C 46     public MiloService miloService;
47
48     @Autowired
49     public ProductionOrdeInfoService productionOrdeInfoService;
50     @Autowired
51     public PassingStationCollectionService passingStationCollectionService;
52     @Autowired
53     public ParamCollectionService paramCollectionService;
54     @Autowired
55     public CollectionParamConfService collectionParamConfService;
56     @Autowired
57     public SerialNumbersConfService serialNumbersConfService;
58     @Autowired
59     private EquipmentStatusService equipmentStatusService;
60
61     @Autowired
62     private EquipmentAlarmService equipmentAlarmService;
63     @Autowired
64     private MaterialTraceabilityService materialTraceabilityService;
65     @Autowired
66     private EquipmentInfoService equipmentInfoService;
67     @Autowired
68     private RepairManageInfoService repairManageInfoService;
69
70     @Autowired
71     private LocationInfoService locationInfoService;
72
73     @Autowired
74     private GreaseManageService greaseManageService;
75
76     @Autowired
77     private ProductionOrderRecordsService productionOrderRecordsService;
78
79     @Autowired
80     private ProductionOrderBatchInfoService productionOrderBatchInfoService;
81
82     private static Logger logger;
83     LogUtil logUtil = new LogUtil();
84     static {
85         logger = Logger.getLogger(DOP020Callback.class);
86     }
87     private static Date IN_TIME = null;
88     private static String S_ORDER_CODE = "";//工单编号
89     private static String S_PRODUCT_CODE = "";//产品编号
90     private static String S_PRODUCT_TYPE= "";//产品类型
91     private static String S_SFC_CODE = "";//总成编码
92     private static String PRODUCTION_LINE  = "EOP";//产线号
93     private static String LOCATION_CODE  = "DOP020";//工位号
94     private static List list = null;
95
96     public DOP020Callback(MiloService miloService,
97                           ProductionOrdeInfoService productionOrdeInfoService,
98                           PassingStationCollectionService passingStationCollectionService,
99                           ParamCollectionService paramCollectionService,
100                           CollectionParamConfService collectionParamConfService,
101                           SerialNumbersConfService serialNumbersConfService,
102                           EquipmentStatusService equipmentStatusService,
103                           EquipmentAlarmService equipmentAlarmService,
104                           MaterialTraceabilityService materialTraceabilityService,
105                           EquipmentInfoService equipmentInfoService,
106                           RepairManageInfoService repairManageInfoService,
107                           LocationInfoService locationInfoService,
108                           GreaseManageService greaseManageService,
109                           ProductionOrderRecordsService productionOrderRecordsService,
110                           ProductionOrderBatchInfoService productionOrderBatchInfoService) {
111         this.miloService = miloService;
112         this.productionOrdeInfoService = productionOrdeInfoService;
113         this.passingStationCollectionService = passingStationCollectionService;
114         this.paramCollectionService = paramCollectionService;
115         this.collectionParamConfService = collectionParamConfService;
116         this.serialNumbersConfService = serialNumbersConfService;
117         this.equipmentStatusService = equipmentStatusService;
118         this.equipmentAlarmService = equipmentAlarmService;
119         this.materialTraceabilityService = materialTraceabilityService;
120         this.equipmentInfoService = equipmentInfoService;
121         this.repairManageInfoService = repairManageInfoService;
122         this.locationInfoService = locationInfoService;
123         this.greaseManageService = greaseManageService;
124         this.productionOrderRecordsService = productionOrderRecordsService;
125         this.productionOrderBatchInfoService = productionOrderBatchInfoService;
126     }
73bc06 127
d43481 128
C 129     //PC读工单
130     public void handleOrder() throws Exception {
131         logger.info("handleOrder PC处理开始!");
132         IN_TIME = DateTool.getLocalTimeForDate();
133         List<String> lists = new ArrayList<>();
134         lists.add(OPCElement.DOP020_S_ORDER_CODE);
135         lists.add(OPCElement.DOP020_S_PRODUCT_CODE);
136         lists.add(OPCElement.DOP020_S_SFC_CODE);
137         List<ReadWriteEntity> returnLists= miloService.readFromOpcUa(lists);
138         returnLists.forEach(element->{
139             switch(element.getIdentifier()){
140                 case OPCElement.DOP020_S_ORDER_CODE:
141                     S_ORDER_CODE = element.getValue().toString();
142                     break;
143                 case OPCElement.DOP020_S_PRODUCT_CODE:
144                     S_PRODUCT_TYPE = element.getValue().toString();
145                     S_PRODUCT_CODE = GlobalVariable.PRODUCT_CODE_MAP.get(S_PRODUCT_TYPE);
146                     break;
147                 case OPCElement.DOP020_S_SFC_CODE:
148                     S_SFC_CODE = element.getValue().toString();
149                     break;
150                 default:
151                     break;
152             }
153         });
154         ReadWriteEntity entity = new ReadWriteEntity(OPCElement.DOP020_J_PC_WRITE_ORDER,true);
155         miloService.writeToOpcUa(entity);
156         logger.info("handleOrder PC处理完成!");
157     }
158
159     public void handleFinsh() throws Exception {
160         logger.info("handleFinsh PC处理开始!");
161         String S_PRODUCT_STATE_CODE = miloService.
162                 readFromOpcUa(OPCElement.DOP020_S_PRODUCT_STATE_CODE)
163                 .getValue().toString();
164
165         //处理过站信息
166         PassingStationCollectionParam param = new PassingStationCollectionParam();
167         param.setWorkOrderNo(S_ORDER_CODE);
168         param.setProductCode(S_PRODUCT_CODE);
169         param.setSfcCode(S_SFC_CODE);
170         param.setProductionLine(PRODUCTION_LINE);
171         param.setLocationCode(LOCATION_CODE);
172         param.setInboundTime(IN_TIME);
173         param.setOutboundTime(DateTool.getLocalTimeForDate());
174         param.setOutRsSign(S_PRODUCT_STATE_CODE);//出站是否合格
175         passingStationCollectionService.add(param);
176
177         ReadWriteEntity entity = new ReadWriteEntity(OPCElement.DOP020_J_PC_FINISH,true);
178         miloService.writeToOpcUa(entity);//写PC完成
179         logger.info("handleFinsh PC处理完成!");
180     }
181
182     public void handleMaterial() {
ba1a7a 183         if(S_ORDER_CODE.isEmpty()){
C 184             return;
185         }
d43481 186         //查询批次上料信息
C 187         ProductionOrderBatchInfoParam productionOrderBatchInfoParam = new ProductionOrderBatchInfoParam();
188         productionOrderBatchInfoParam.setWorkOrderNo(S_ORDER_CODE);
189         productionOrderBatchInfoParam.setLocationCode(LOCATION_CODE);
190         List<ProductionOrderBatchInfoResult> list = productionOrderBatchInfoService.findListBySpec(productionOrderBatchInfoParam);
191         for(int i=0;i<list.size();i++){
192             ProductionOrderBatchInfoResult productionOrderBatchInfoResult = list.get(i);
193             int remainingQuantity =  productionOrderBatchInfoResult.getResidueQuantity();//剩余数量
194             if(remainingQuantity>0 ){
195                 //新增物料追溯
196                 MaterialTraceabilityParam materialTraceabilityParam = new MaterialTraceabilityParam();
197                 materialTraceabilityParam.setWorkOrderNo(S_ORDER_CODE);
198                 materialTraceabilityParam.setProductCode(S_PRODUCT_CODE);
199                 materialTraceabilityParam.setProductNo(S_SFC_CODE);
200                 materialTraceabilityParam.setLineCode(PRODUCTION_LINE);
201                 materialTraceabilityParam.setLocationCode(LOCATION_CODE);
202                 materialTraceabilityParam.setAssemblyQty(1);
203                 materialTraceabilityParam.setAssemblyTime(DateTool.getLocalTimeForDate());
204                 materialTraceabilityParam.setMaterialCode(productionOrderBatchInfoResult.getMaterialCode());//物料编码
205                 materialTraceabilityParam.setMaterialBatchNo(productionOrderBatchInfoResult.getBatch());//物料批次
206
207                 materialTraceabilityService.add(materialTraceabilityParam);
208                 //更新剩余数量
209                 productionOrderBatchInfoParam.setId(productionOrderBatchInfoResult.getId());
210                 productionOrderBatchInfoParam.setResidueQuantity(remainingQuantity-1);//剩余数量
211                 productionOrderBatchInfoService.update(productionOrderBatchInfoParam);
212             }
213         }
214     }
215
216     //PC读参数信息
217     public void handleInfo() throws Exception {
218         logger.info("handleInfo START!");
219
220         if(null == list){
221             CollectionParamConfParam collectionParamConfParam = new CollectionParamConfParam();
222             collectionParamConfParam.setLocationCode(LOCATION_CODE);
223             list = collectionParamConfService.findListBySpec(collectionParamConfParam);
224         }
225         if(null != list && !list.isEmpty()) {
ba1a7a 226
C 227             List<String> nodeIdList = new ArrayList<>();
d43481 228             for (int i = 0; i < list.size(); i++) {
C 229                 CollectionParamConfResult result = (CollectionParamConfResult) list.get(i);
ba1a7a 230                 nodeIdList.add(result.getGatherAddress());
C 231             }
232
233             List<ReadWriteEntity> readWriteEntityList = new ArrayList<>();
234             if(CollUtil.isNotEmpty(nodeIdList)){
235                 readWriteEntityList = miloService.readFromOpcUa(nodeIdList);
236             }
237
238             List<ParamCollection> paramCollectionlist = new ArrayList<>();
239             if (CollUtil.isNotEmpty(nodeIdList)){
240                 for(int i=0;i<nodeIdList.size();i++){
241                     if(ObjectUtil.isNotEmpty(readWriteEntityList.get(i).getValue())){
242                         CollectionParamConfResult result = (CollectionParamConfResult) list.get(i);
243
244                         String value = "0";
245                         if (readWriteEntityList.get(i).getValue() != null){
246                             value = readWriteEntityList.get(i).getValue().toString();
247                         }
248                         ParamCollection paramCollectionParam = new ParamCollection();
249                         paramCollectionParam.setParamCode(result.getParamCode());
250                         paramCollectionParam.setParamName(result.getParamName());
251                         paramCollectionParam.setWorkOrderNo(S_ORDER_CODE);
252                         paramCollectionParam.setSfcCode(S_SFC_CODE);
253                         paramCollectionParam.setProductCode(S_PRODUCT_CODE);
254                         paramCollectionParam.setProductionLine(result.getProductionLine());
255                         paramCollectionParam.setLocationCode(result.getLocationCode());
256                         paramCollectionParam.setParamValue(value.toString());
257                         paramCollectionParam.setParamLower(result.getParamLower());
258                         paramCollectionParam.setParamUpper(result.getParamUpper());
259                         paramCollectionParam.setParamStandard(result.getParamCentral());
260                         paramCollectionParam.setCollectionTime(DateTool.getLocalTimeForDate());
261                         paramCollectionParam.setUnit(result.getUnit());
262                         paramCollectionlist.add(paramCollectionParam);
263                     }
6dadf3 264                 }
ba1a7a 265                 paramCollectionService.saveBatch(paramCollectionlist);
d43481 266             }
C 267         }
268
269         logger.info("handleInfo END!");
270     }
271 }