wujian
2024-05-13 6a462fcca2e65cc3a38ed79522d966306756341f
提交 | 用户 | 时间
e57a89 1 package com.jcdm.main.da.paramCollection.service.impl;
2
6a462f 3 import cn.hutool.core.collection.CollUtil;
b64ed2 4 import cn.hutool.core.date.DateUtil;
6a462f 5 import cn.hutool.core.util.StrUtil;
8f0f8d 6 import cn.hutool.db.Db;
6a462f 7 import cn.hutool.http.HttpRequest;
W 8 import cn.hutool.http.HttpResponse;
9 import cn.hutool.json.JSONUtil;
7bee80 10 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
0ce25f 11 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
e57a89 12 import com.jcdm.common.utils.DateUtils;
7bee80 13 import com.jcdm.main.bs.formula.service.IBsFormulaInfoService;
14 import com.jcdm.main.bs.formula.service.impl.BsFormulaInfoServiceImpl;
b77c7b 15 import com.jcdm.main.bs.formulaChild.domain.BsFormulaChildInfo;
16 import com.jcdm.main.bs.formulaChild.mapper.BsFormulaChildInfoMapper;
7bee80 17 import com.jcdm.main.bs.formulaChild.service.IBsFormulaChildInfoService;
6a462f 18 import com.jcdm.main.constant.Constants;
b64ed2 19 import com.jcdm.main.da.collectionParamConf.domain.DaCollectionParamConf;
20 import com.jcdm.main.da.collectionParamConf.mapper.DaCollectionParamConfMapper;
e57a89 21 import com.jcdm.main.da.paramCollection.domain.DaParamCollection;
22 import com.jcdm.main.da.paramCollection.mapper.DaParamCollectionMapper;
23 import com.jcdm.main.da.paramCollection.service.IDaParamCollectionService;
32483a 24 import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection;
25 import com.jcdm.main.da.passingStationCollection.mapper.DaPassingStationCollectionMapper;
26 import com.jcdm.main.da.passingStationCollection.service.IDaPassingStationCollectionService;
054a69 27 import com.jcdm.main.plcserver.sub.OPCUaSubscription;
6a462f 28 import com.jcdm.main.restful.qingYan.doman.ChildVO;
W 29 import com.jcdm.main.restful.qingYan.doman.ParentVO;
32483a 30 import com.kangaroohy.milo.model.ReadWriteEntity;
31 import com.kangaroohy.milo.service.MiloService;
054a69 32 import org.apache.ibatis.session.ExecutorType;
33 import org.apache.ibatis.session.SqlSession;
34 import org.apache.ibatis.session.SqlSessionFactory;
e57a89 35 import org.springframework.beans.factory.annotation.Autowired;
36 import org.springframework.stereotype.Service;
37
054a69 38 import javax.annotation.Resource;
b64ed2 39 import java.util.*;
6a462f 40 import java.util.stream.Collectors;
e57a89 41
42 /**
43  * 设备产品过程参数采集Service业务层处理
44  * 
45  * @author yyt
46  * @date 2023-12-13
47  */
48 @Service
0ce25f 49 public class DaParamCollectionServiceImpl extends ServiceImpl<DaParamCollectionMapper,DaParamCollection> implements IDaParamCollectionService
e57a89 50 {
51     @Autowired
52     private DaParamCollectionMapper daParamCollectionMapper;
b64ed2 53
54     @Autowired
55     private DaCollectionParamConfMapper daCollectionParamConfMapper;
b77c7b 56
57     @Autowired
58     private BsFormulaChildInfoMapper bsFormulaChildInfoMapper;
7bee80 59
60     @Autowired
61     private IBsFormulaChildInfoService bsFormulaChildInfoService;
32483a 62
63     @Autowired
64     private MiloService miloService;
65
66     @Autowired
67     private DaPassingStationCollectionMapper daPassingStationCollectionMapper;
e57a89 68
054a69 69     @Resource
70     private SqlSessionFactory sqlSessionFactory;
71
ddb300 72     @Autowired
A 73     private IDaParamCollectionService daParamCollectionService;
74
e57a89 75     /**
76      * 查询设备产品过程参数采集
77      * 
78      * @param id 设备产品过程参数采集主键
79      * @return 设备产品过程参数采集
80      */
81     @Override
82     public DaParamCollection selectDaParamCollectionById(Long id)
83     {
84         return daParamCollectionMapper.selectDaParamCollectionById(id);
85     }
86
87     /**
88      * 查询设备产品过程参数采集列表
89      * 
90      * @param daParamCollection 设备产品过程参数采集
91      * @return 设备产品过程参数采集
92      */
93     @Override
94     public List<DaParamCollection> selectDaParamCollectionList(DaParamCollection daParamCollection)
95     {
96         return daParamCollectionMapper.selectDaParamCollectionList(daParamCollection);
054a69 97     }
98
99     @Override
100     public void saveBeachDaParamCollection(List<DaParamCollection> list) {
101         // ExecutorType.SIMPLE: 这个执行器类型不做特殊的事情。它为每个语句的执行创建一个新的预处理语句。
102         // ExecutorType.REUSE: 这个执行器类型会复用预处理语句。
103         // ExecutorType.BATCH: 这个执行器会批量执行所有更新语句,如果 SELECT 在它们中间执行还会标定它们是 必须的,来保证一个简单并易于理解的行为。
104
105         // 关闭session的自动提交
106         SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
107         try {
108             DaParamCollectionMapper userMapper = sqlSession.getMapper(DaParamCollectionMapper.class);
109             list.stream().forEach(DaParamCollection -> userMapper.insertDaParamCollection(DaParamCollection));
110             // 提交数据
111             sqlSession.commit();
112             sqlSession.rollback();
113         } catch (Exception e) {
114             sqlSession.rollback();
115         } finally {
116             sqlSession.close();
117         }
e57a89 118     }
119
120     /**
121      * 新增设备产品过程参数采集
122      * 
123      * @param daParamCollection 设备产品过程参数采集
124      * @return 结果
125      */
126     @Override
127     public int insertDaParamCollection(DaParamCollection daParamCollection)
128     {
129         daParamCollection.setCreateTime(DateUtils.getNowDate());
130         return daParamCollectionMapper.insertDaParamCollection(daParamCollection);
131     }
132
133     /**
134      * 修改设备产品过程参数采集
135      * 
136      * @param daParamCollection 设备产品过程参数采集
137      * @return 结果
138      */
139     @Override
140     public int updateDaParamCollection(DaParamCollection daParamCollection)
141     {
142         daParamCollection.setUpdateTime(DateUtils.getNowDate());
143         return daParamCollectionMapper.updateDaParamCollection(daParamCollection);
144     }
145
146     /**
147      * 批量删除设备产品过程参数采集
148      * 
149      * @param ids 需要删除的设备产品过程参数采集主键
150      * @return 结果
151      */
152     @Override
153     public int deleteDaParamCollectionByIds(Long[] ids)
154     {
155         return daParamCollectionMapper.deleteDaParamCollectionByIds(ids);
156     }
157
158     /**
159      * 删除设备产品过程参数采集信息
160      * 
161      * @param id 设备产品过程参数采集主键
162      * @return 结果
163      */
164     @Override
165     public int deleteDaParamCollectionById(Long id)
166     {
167         return daParamCollectionMapper.deleteDaParamCollectionById(id);
168     }
b64ed2 169
170     @Override
171     public void addBasicParameters(DaParamCollection daParamCollection) {
172         // 假设这是从数据库或其他地方获取的参数数据
173         Map<String, String> map = new HashMap<>();
174         map.put("GC", "南浔工厂");
175         map.put("CXBH", "Pack线");
176         map.put("SBBH", "设备001");
177         map.put("YGBH", "员工001");
178         map.put("GDBH", daParamCollection.getWorkOrderNo());
179         map.put("CPXH", daParamCollection.getModel());
180         map.put("INT", DateUtil.formatDateTime(new Date()));
181
182         map.forEach((key, value) -> {
183             DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf();
184             daCollectionParamConf.setProcessesCode(daParamCollection.getLocationCode());
185             daCollectionParamConf.setCollectParameterId(key);
186             List<DaCollectionParamConf> daCollectionParamConfs = daCollectionParamConfMapper.selectDaCollectionParamConfList(daCollectionParamConf);
187             DaParamCollection saveData = new DaParamCollection();
188             saveData.setWorkOrderNo(daParamCollection.getWorkOrderNo());
189             saveData.setProductCode(daParamCollection.getProductCode());
190             saveData.setLocationCode(daParamCollection.getLocationCode());
3c2299 191             saveData.setSfcCode(daParamCollection.getProductBarcode());
b64ed2 192             saveData.setParamCode(daCollectionParamConfs.get(0).getCollectParameterId());
193             saveData.setParamName(daCollectionParamConfs.get(0).getCollectParameterName());
194             saveData.setCollectionTime(new Date());
195             saveData.setParamValue(value);
196             daParamCollectionMapper.insertDaParamCollection(saveData);
197         });
198     }
49c784 199
200     @Override
201     public void addTighteningParameters(DaParamCollection daParamCollection) {
b77c7b 202         String tightenData = daParamCollection.getTightenTheArray();
203         tightenData = tightenData.replace("[", "").replace("]", "").replace(" ", "");
204         String[] tightenDataParts = tightenData.split(",");
205         String paramCode = daParamCollection.getParamCode();
206         String[] paramCodeParts = paramCode.split(",");
207         for (int i = 0; i < paramCodeParts.length; i++) {
208             daParamCollection.setParamValue(tightenDataParts[i]);
209             daParamCollection.setParamCode(paramCodeParts[i]);
210             daParamCollection.setCollectionTime(new Date());
211             daParamCollection.setSfcCode(daParamCollection.getProductBarcode());
212             daParamCollectionMapper.insertDaParamCollection(daParamCollection);
213         }
49c784 214     }
32483a 215
216     @Override
217     public void saveCampaignTimeParameters(DaParamCollection daParamCollection) {
7bee80 218         List<BsFormulaChildInfo> list = bsFormulaChildInfoService.list(new LambdaQueryWrapper<BsFormulaChildInfo>()
219                 .eq(BsFormulaChildInfo::getProcessesCode, daParamCollection.getLocationCode())
220                 .eq(BsFormulaChildInfo::getSpareField4, "1")
221         );
222         if(!list.get(0).getResults().equals("OK")){
223             try {
224                 miloService.writeToOpcShort(ReadWriteEntity.builder().identifier("PACK."+daParamCollection.getLocationCode()+".RecordDataDone").value(22).build());
225             } catch (Exception e) {
226                 throw new RuntimeException(e);
227             }
228             return;
229         }
32483a 230         BsFormulaChildInfo bsFormulaChildInfo = new BsFormulaChildInfo();
231         bsFormulaChildInfo.setProcessesCode(daParamCollection.getLocationCode());
232         bsFormulaChildInfo.setProductCode(daParamCollection.getProductCode());
233         bsFormulaChildInfo.setSpareField4("1");
234         List<BsFormulaChildInfo> bsFormulaChildInfos = bsFormulaChildInfoMapper.selectBsFormulaChildInfoList(bsFormulaChildInfo);
235         String result = bsFormulaChildInfos.get(0).getResults();
236         if(result != null && !result.isEmpty()){
237             try {
238                 //过站参数采集记录出站时间
239                 DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf();
240                 daCollectionParamConf.setProcessesCode(daParamCollection.getLocationCode());
241                 daCollectionParamConf.setCollectParameterId("OUTT");
242                 List<DaCollectionParamConf> daCollectionParamConfs = daCollectionParamConfMapper.selectDaCollectionParamConfList(daCollectionParamConf);
243                 DaParamCollection saveData = new DaParamCollection();
244                 saveData.setWorkOrderNo(daParamCollection.getWorkOrderNo());
245                 saveData.setProductCode(daParamCollection.getProductCode());
246                 saveData.setLocationCode(daParamCollection.getLocationCode());
247                 saveData.setSfcCode(daParamCollection.getProductBarcode());
248                 saveData.setParamCode(daCollectionParamConfs.get(0).getCollectParameterId());
249                 saveData.setParamName(daCollectionParamConfs.get(0).getCollectParameterName());
250                 saveData.setCollectionTime(new Date());
251                 saveData.setParamValue(DateUtil.formatDateTime(new Date()));
252                 daParamCollectionMapper.insertDaParamCollection(saveData);
253
254                 //更新过站记录表出站时间
255                 DaPassingStationCollection daPassingStationCollection = new DaPassingStationCollection();
256                 daPassingStationCollection.setWorkOrderNo(daParamCollection.getWorkOrderNo());
1df825 257                 daPassingStationCollection.setLocationCode(daParamCollection.getLocationCode());
32483a 258                 List<DaPassingStationCollection> daPassingStationCollections = daPassingStationCollectionMapper.selectDaPassingStationCollectionList(daPassingStationCollection);
259                 daPassingStationCollections.get(0).setOutboundTime(new Date());
260                 int i = daPassingStationCollectionMapper.updateDaPassingStationCollection(daPassingStationCollections.get(0));
261
8f0f8d 262 //                OPCUaSubscription.SaveParamData(daParamCollection.getProductBarcode(),"OP",daParamCollection.getLocationCode(),daParamCollection.getWorkOrderNo(),daParamCollection.getProductCode());
054a69 263
32483a 264                 //给opc发21
7bee80 265                 miloService.writeToOpcShort(ReadWriteEntity.builder().identifier("PACK."+daParamCollection.getLocationCode()+".RecordDataDone").value(21).build());
32483a 266             } catch (Exception e) {
267                 throw new RuntimeException(e);
268             }
269         }
270     }
8f0f8d 271
272     @Override
273     public void insertBatch(List<DaParamCollection> confList){
274         try{
275             this.saveBatch(confList);
276         }catch (Exception e){
277             return;
278         }
279
280     }
ddb300 281
A 282     @Override
283     public void replaceAssemblyCode(DaParamCollection daParamCollection) {
284         List<DaParamCollection> list = daParamCollectionService.list(new LambdaQueryWrapper<DaParamCollection>()
2c7661 285                 .eq(DaParamCollection::getSfcCode, daParamCollection.getYzSfcCode())
ddb300 286         );
A 287         if(list.size() > 0){
288             for (DaParamCollection paramCollection : list) {
2c7661 289                 paramCollection.setSfcCode(daParamCollection.getSfcCode());
ddb300 290                 daParamCollectionService.saveOrUpdate(paramCollection);
A 291             }
292         }
293
294     }
4a5f2a 295
A 296     @Override
297     public void yzAddBasicParameters(DaParamCollection daParamCollection) {
298         // 假设这是从数据库或其他地方获取的参数数据
299         Map<String, String> map = new HashMap<>();
300 //        map.put("GC", "南浔工厂");
301 //        map.put("CXBH", "Pack线");
302 //        map.put("SBBH", "设备001");
303 //        map.put("YGBH", "员工001");
304 //        map.put("GDBH", daParamCollection.getWorkOrderNo());
305 //        map.put("CPXH", daParamCollection.getModel());
306         map.put("INT", DateUtil.formatDateTime(new Date()));
307
308         map.forEach((key, value) -> {
309             DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf();
310             daCollectionParamConf.setProcessesCode(daParamCollection.getLocationCode());
311             daCollectionParamConf.setCollectParameterId(key);
312             List<DaCollectionParamConf> daCollectionParamConfs = daCollectionParamConfMapper.selectDaCollectionParamConfList(daCollectionParamConf);
313             DaParamCollection saveData = new DaParamCollection();
314             saveData.setWorkOrderNo(daParamCollection.getWorkOrderNo());
315             saveData.setProductCode(daParamCollection.getProductCode());
316             saveData.setLocationCode(daParamCollection.getLocationCode());
317             saveData.setSfcCode(daParamCollection.getProductBarcode());
318             saveData.setParamCode(daCollectionParamConfs.get(0).getCollectParameterId());
319             saveData.setParamName(daCollectionParamConfs.get(0).getCollectParameterName());
320             saveData.setCollectionTime(new Date());
321             saveData.setParamValue(value);
322             daParamCollectionMapper.insertDaParamCollection(saveData);
323         });
324     }
1c84ae 325
A 326     @Override
327     public void jrmSaveCampaignTimeParameters(DaParamCollection daParamCollection) {
328         DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf();
329         daCollectionParamConf.setProcessesCode(daParamCollection.getLocationCode());
330         daCollectionParamConf.setCollectParameterId("OUTT");
331         List<DaCollectionParamConf> daCollectionParamConfs = daCollectionParamConfMapper.selectDaCollectionParamConfList(daCollectionParamConf);
332         DaParamCollection saveData = new DaParamCollection();
333         saveData.setWorkOrderNo(daParamCollection.getWorkOrderNo());
334         saveData.setProductCode(daParamCollection.getProductCode());
335         saveData.setLocationCode(daParamCollection.getLocationCode());
336         saveData.setSfcCode(daParamCollection.getProductBarcode());
337         saveData.setParamCode(daCollectionParamConfs.get(0).getCollectParameterId());
338         saveData.setParamName(daCollectionParamConfs.get(0).getCollectParameterName());
339         saveData.setCollectionTime(new Date());
340         saveData.setParamValue(DateUtil.formatDateTime(new Date()));
341         daParamCollectionMapper.insertDaParamCollection(saveData);
342
343         //更新过站记录表出站时间
344         DaPassingStationCollection daPassingStationCollection = new DaPassingStationCollection();
345         daPassingStationCollection.setWorkOrderNo(daParamCollection.getWorkOrderNo());
346         daPassingStationCollection.setLocationCode(daParamCollection.getLocationCode());
347         List<DaPassingStationCollection> daPassingStationCollections = daPassingStationCollectionMapper.selectDaPassingStationCollectionList(daPassingStationCollection);
348         daPassingStationCollections.get(0).setOutboundTime(new Date());
349         int i = daPassingStationCollectionMapper.updateDaPassingStationCollection(daPassingStationCollections.get(0));
350
351 //                OPCUaSubscription.SaveParamData(daParamCollection.getProductBarcode(),"OP",daParamCollection.getLocationCode(),daParamCollection.getWorkOrderNo(),daParamCollection.getProductCode());
352
353         //给opc发21
354         try {
355 //            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier("PACK."+daParamCollection.getLocationCode()+".RecordDataDone").value(21).build());
356             String strA = daParamCollection.getLocationCode() + "A";
357             String strB = daParamCollection.getLocationCode() + "B";
358             miloService.writeToOpcShort(ReadWriteEntity.builder().identifier("PACK."+strA+".RecordDataDone").value(21).build());
359             miloService.writeToOpcShort(ReadWriteEntity.builder().identifier("PACK."+strB+".RecordDataDone").value(21).build());
360         } catch (Exception e) {
361             throw new RuntimeException(e);
362         }
363     }
6a462f 364
W 365
366     public void sendToFactoryMes(String stationCode,String productNum ){
367         String url = "https://imes-uat-group.geelycv-test.com/api/mom-open/restful/aMesSysIntegration/deviceResultFeedback";
368         ParentVO vo =new ParentVO();
369         List<ChildVO> checkList = new ArrayList<>();
370         List<DaParamCollection> list = this.list(new LambdaQueryWrapper<DaParamCollection>()
371                 .eq(DaParamCollection::getSfcCode, productNum)
372                 .eq(DaParamCollection::getLocationCode, stationCode));
373         vo.setTotalResult("1");
374         String string = new Random(10).toString();
375         vo.setRecordId(string);
376         vo.setProductNum(productNum);
377         vo.setSiteCode("3983");
378         vo.setStationCode(stationCode);
379         if (CollUtil.isNotEmpty(list)){
380             List<DaParamCollection> collect = list.stream().filter(x -> Constants.NG.equals(x.getParamValue())).collect(Collectors.toList());
381             if (CollUtil.isNotEmpty(collect)){
382                 vo.setTotalResult("0");
383             }
384             List<BsFormulaChildInfo> bsFormulaChildInfoList = bsFormulaChildInfoService.list();
385             for (DaParamCollection daParamCollection : list) {
386                 ChildVO childVO = new ChildVO();
387                 childVO.setItemCode(daParamCollection.getParamCode());
388                 String time = daParamCollection.getCollectionTime() != null ? daParamCollection.getCollectionTime().toString() : "";
389                 childVO.setCheckResult("1");
390                 if (StrUtil.isNotBlank(daParamCollection.getParamValue())){
391                     if (Constants.NG.equals(daParamCollection.getParamValue())){
392                         childVO.setCheckResult("0");
393                     }
394                 }
395                 childVO.setCheckTime(time);
396                 childVO.setItemValue(daParamCollection.getParamValue());
397                 childVO.setItemType("3");
398                 childVO.setItemText(daParamCollection.getParamName());
399                 if (StrUtil.isNotBlank(daParamCollection.getParamCode())){
400                     List<BsFormulaChildInfo> collect1 = bsFormulaChildInfoList.stream().filter(x -> daParamCollection.getParamCode().equals(x.getParamCode())).collect(Collectors.toList());
401                     if (CollUtil.isNotEmpty(collect1)){
402                         BsFormulaChildInfo bsFormulaChildInfo = collect1.get(0);
403                         childVO.setItemType(bsFormulaChildInfo.getOperationType());
404                     }
405                 }
406
407                 checkList.add(childVO);
408             }
409         }
410         vo.setCheckList(checkList);
411         HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(vo)).execute();
412
413     }
e57a89 414 }