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