package com.jcdm.main.da.paramCollection.service.impl; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jcdm.common.utils.DateUtils; import com.jcdm.main.bs.formulaChild.domain.BsFormulaChildInfo; import com.jcdm.main.bs.formulaChild.mapper.BsFormulaChildInfoMapper; import com.jcdm.main.da.collectionParamConf.domain.DaCollectionParamConf; import com.jcdm.main.da.collectionParamConf.mapper.DaCollectionParamConfMapper; import com.jcdm.main.da.paramCollection.domain.DaParamCollection; import com.jcdm.main.da.paramCollection.mapper.DaParamCollectionMapper; import com.jcdm.main.da.paramCollection.service.IDaParamCollectionService; import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection; import com.jcdm.main.da.passingStationCollection.mapper.DaPassingStationCollectionMapper; import com.jcdm.main.da.passingStationCollection.service.IDaPassingStationCollectionService; import com.jcdm.main.plcserver.sub.OPCUaSubscription; import com.kangaroohy.milo.model.ReadWriteEntity; import com.kangaroohy.milo.service.MiloService; import org.apache.ibatis.session.ExecutorType; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.*; /** * 设备产品过程参数采集Service业务层处理 * * @author yyt * @date 2023-12-13 */ @Service public class DaParamCollectionServiceImpl extends ServiceImpl implements IDaParamCollectionService { @Autowired private DaParamCollectionMapper daParamCollectionMapper; @Autowired private DaCollectionParamConfMapper daCollectionParamConfMapper; @Autowired private BsFormulaChildInfoMapper bsFormulaChildInfoMapper; @Autowired private MiloService miloService; @Autowired private DaPassingStationCollectionMapper daPassingStationCollectionMapper; @Resource private SqlSessionFactory sqlSessionFactory; /** * 查询设备产品过程参数采集 * * @param id 设备产品过程参数采集主键 * @return 设备产品过程参数采集 */ @Override public DaParamCollection selectDaParamCollectionById(Long id) { return daParamCollectionMapper.selectDaParamCollectionById(id); } /** * 查询设备产品过程参数采集列表 * * @param daParamCollection 设备产品过程参数采集 * @return 设备产品过程参数采集 */ @Override public List selectDaParamCollectionList(DaParamCollection daParamCollection) { return daParamCollectionMapper.selectDaParamCollectionList(daParamCollection); } @Override public void saveBeachDaParamCollection(List list) { // ExecutorType.SIMPLE: 这个执行器类型不做特殊的事情。它为每个语句的执行创建一个新的预处理语句。 // ExecutorType.REUSE: 这个执行器类型会复用预处理语句。 // ExecutorType.BATCH: 这个执行器会批量执行所有更新语句,如果 SELECT 在它们中间执行还会标定它们是 必须的,来保证一个简单并易于理解的行为。 // 关闭session的自动提交 SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); try { DaParamCollectionMapper userMapper = sqlSession.getMapper(DaParamCollectionMapper.class); list.stream().forEach(DaParamCollection -> userMapper.insertDaParamCollection(DaParamCollection)); // 提交数据 sqlSession.commit(); sqlSession.rollback(); } catch (Exception e) { sqlSession.rollback(); } finally { sqlSession.close(); } } /** * 新增设备产品过程参数采集 * * @param daParamCollection 设备产品过程参数采集 * @return 结果 */ @Override public int insertDaParamCollection(DaParamCollection daParamCollection) { daParamCollection.setCreateTime(DateUtils.getNowDate()); return daParamCollectionMapper.insertDaParamCollection(daParamCollection); } /** * 修改设备产品过程参数采集 * * @param daParamCollection 设备产品过程参数采集 * @return 结果 */ @Override public int updateDaParamCollection(DaParamCollection daParamCollection) { daParamCollection.setUpdateTime(DateUtils.getNowDate()); return daParamCollectionMapper.updateDaParamCollection(daParamCollection); } /** * 批量删除设备产品过程参数采集 * * @param ids 需要删除的设备产品过程参数采集主键 * @return 结果 */ @Override public int deleteDaParamCollectionByIds(Long[] ids) { return daParamCollectionMapper.deleteDaParamCollectionByIds(ids); } /** * 删除设备产品过程参数采集信息 * * @param id 设备产品过程参数采集主键 * @return 结果 */ @Override public int deleteDaParamCollectionById(Long id) { return daParamCollectionMapper.deleteDaParamCollectionById(id); } @Override public void addBasicParameters(DaParamCollection daParamCollection) { // 假设这是从数据库或其他地方获取的参数数据 Map map = new HashMap<>(); map.put("GC", "南浔工厂"); map.put("CXBH", "Pack线"); map.put("SBBH", "设备001"); map.put("YGBH", "员工001"); map.put("GDBH", daParamCollection.getWorkOrderNo()); map.put("CPXH", daParamCollection.getModel()); map.put("INT", DateUtil.formatDateTime(new Date())); map.forEach((key, value) -> { DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf(); daCollectionParamConf.setProcessesCode(daParamCollection.getLocationCode()); daCollectionParamConf.setCollectParameterId(key); List daCollectionParamConfs = daCollectionParamConfMapper.selectDaCollectionParamConfList(daCollectionParamConf); DaParamCollection saveData = new DaParamCollection(); saveData.setWorkOrderNo(daParamCollection.getWorkOrderNo()); saveData.setProductCode(daParamCollection.getProductCode()); saveData.setLocationCode(daParamCollection.getLocationCode()); saveData.setSfcCode(daParamCollection.getProductBarcode()); saveData.setParamCode(daCollectionParamConfs.get(0).getCollectParameterId()); saveData.setParamName(daCollectionParamConfs.get(0).getCollectParameterName()); saveData.setCollectionTime(new Date()); saveData.setParamValue(value); daParamCollectionMapper.insertDaParamCollection(saveData); }); } @Override public void addTighteningParameters(DaParamCollection daParamCollection) { String tightenData = daParamCollection.getTightenTheArray(); tightenData = tightenData.replace("[", "").replace("]", "").replace(" ", ""); String[] tightenDataParts = tightenData.split(","); String paramCode = daParamCollection.getParamCode(); String[] paramCodeParts = paramCode.split(","); for (int i = 0; i < paramCodeParts.length; i++) { daParamCollection.setParamValue(tightenDataParts[i]); daParamCollection.setParamCode(paramCodeParts[i]); daParamCollection.setCollectionTime(new Date()); daParamCollection.setSfcCode(daParamCollection.getProductBarcode()); daParamCollectionMapper.insertDaParamCollection(daParamCollection); } } @Override public void saveCampaignTimeParameters(DaParamCollection daParamCollection) { BsFormulaChildInfo bsFormulaChildInfo = new BsFormulaChildInfo(); bsFormulaChildInfo.setProcessesCode(daParamCollection.getLocationCode()); bsFormulaChildInfo.setProductCode(daParamCollection.getProductCode()); bsFormulaChildInfo.setSpareField4("1"); List bsFormulaChildInfos = bsFormulaChildInfoMapper.selectBsFormulaChildInfoList(bsFormulaChildInfo); String result = bsFormulaChildInfos.get(0).getResults(); if(result != null && !result.isEmpty()){ try { //过站参数采集记录出站时间 DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf(); daCollectionParamConf.setProcessesCode(daParamCollection.getLocationCode()); daCollectionParamConf.setCollectParameterId("OUTT"); List daCollectionParamConfs = daCollectionParamConfMapper.selectDaCollectionParamConfList(daCollectionParamConf); DaParamCollection saveData = new DaParamCollection(); saveData.setWorkOrderNo(daParamCollection.getWorkOrderNo()); saveData.setProductCode(daParamCollection.getProductCode()); saveData.setLocationCode(daParamCollection.getLocationCode()); saveData.setSfcCode(daParamCollection.getProductBarcode()); saveData.setParamCode(daCollectionParamConfs.get(0).getCollectParameterId()); saveData.setParamName(daCollectionParamConfs.get(0).getCollectParameterName()); saveData.setCollectionTime(new Date()); saveData.setParamValue(DateUtil.formatDateTime(new Date())); daParamCollectionMapper.insertDaParamCollection(saveData); //更新过站记录表出站时间 DaPassingStationCollection daPassingStationCollection = new DaPassingStationCollection(); daPassingStationCollection.setWorkOrderNo(daParamCollection.getWorkOrderNo()); List daPassingStationCollections = daPassingStationCollectionMapper.selectDaPassingStationCollectionList(daPassingStationCollection); daPassingStationCollections.get(0).setOutboundTime(new Date()); int i = daPassingStationCollectionMapper.updateDaPassingStationCollection(daPassingStationCollections.get(0)); OPCUaSubscription.SaveParamData(daParamCollection.getProductBarcode(),"OP",daParamCollection.getLocationCode(),daParamCollection.getWorkOrderNo(),daParamCollection.getProductCode()); //给opc发21 miloService.writeToOpcShort(ReadWriteEntity.builder().identifier("OP."+daParamCollection.getLocationCode()+".RecordDataDone").value(21).build()); } catch (Exception e) { throw new RuntimeException(e); } } } }