春风项目四线(合箱线、总装线)
yyt
2024-02-21 a9406b6b18ee5a8e29cad3248f46320a36ac9749
批量数据采集方法更新
已修改3个文件
76 ■■■■ 文件已修改
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/cert/MethodName.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/IDaParamCollectionService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/impl/DaParamCollectionServiceImpl.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/cert/MethodName.java
@@ -1,5 +1,6 @@
package com.jcdm.main.da.opcuaconfig.cert;
import cn.hutool.core.date.StopWatch;
import com.jcdm.main.da.collectionParamConf.domain.DaCollectionParamConf;
import com.jcdm.main.da.collectionParamConf.service.IDaCollectionParamConfService;
import com.jcdm.main.da.opcuaconfig.client.ClientHandler;
@@ -51,22 +52,28 @@
                DaCollectionParamConf daCollectionParamConf=new DaCollectionParamConf();
                daCollectionParamConf.setGatherAddress(parts[0]+"."+parts[1]);
                b=collectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf);
                List<NodeId> nodeId = b.stream().map(info -> {
                    NodeId nodeid = new NodeId(2,info.getGatherAddress());
                    return nodeid;
                }).collect(Collectors.toList());
                List<DataValue> s=readValues(nodeId);
                //保存PLC采集数据
                for(int i=0;i<nodeId.size();i++)
                {
                    DaParamCollection Config=new DaParamCollection();
                    Config.setParamCode(nodeId.get(i).getIdentifier().toString().split("[.]")[2]);
                    Config.setLocationCode(nodeId.get(i).getIdentifier().toString().split("[.]")[1]);
                    Config.setParamValue(s.get(i).getValue().getValue().toString());
                    Config.setSfcCode(SNCode);
                    Config.setParamName(b.get(i).getGatherAddress());
                    daParamCollectionService.insertDaParamCollection(Config);
                if(b!=null&&b.size()>0){
                    List<NodeId> nodeId = b.stream().map(info -> {
                        NodeId nodeid = new NodeId(2,info.getGatherAddress());
                        return nodeid;
                    }).collect(Collectors.toList());
                    List<DataValue> s=readValues(nodeId);
                    //保存PLC采集数据
//                  StopWatch stopWatch = new StopWatch();
//                  stopWatch.start();
                    List<DaParamCollection> DaParamCollectionlist = new ArrayList<>();
                    for(int i=0;i<nodeId.size();i++){
                        DaParamCollection ParamCollection = new DaParamCollection();
                        ParamCollection.setParamCode(nodeId.get(i).getIdentifier().toString().split("[.]")[2]);
                        ParamCollection.setLocationCode(nodeId.get(i).getIdentifier().toString().split("[.]")[1]);
                        ParamCollection.setParamValue(s.get(i).getValue().getValue().toString());
                        ParamCollection.setSfcCode(SNCode);
                        ParamCollection.setParamName(b.get(i).getGatherAddress());
                        DaParamCollectionlist.add(ParamCollection);
                    }
                    daParamCollectionService.saveBeachDaParamCollection(DaParamCollectionlist);
//                  stopWatch.stop();
//                  System.out.println("使用sqlSessionFactory实现批量插入耗时:" + stopWatch.getTotalTimeMillis());
                }
                //记录过站,并计算节拍。
                DaPassingStationCollection PassingStationCollection=new DaPassingStationCollection();
jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/IDaParamCollectionService.java
@@ -59,4 +59,12 @@
     * @return 结果
     */
    public int deleteDaParamCollectionById(Long id);
    /**
     * 使用sqlSessionFactory实现批量插入数据
     *
     * @param list 设备产品过程参数采集主键
     * @return 结果
     */
    void saveBeachDaParamCollection(List<DaParamCollection> list);
}
jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/impl/DaParamCollectionServiceImpl.java
@@ -6,8 +6,13 @@
import com.jcdm.main.da.paramCollection.mapper.DaParamCollectionMapper;
import com.jcdm.main.da.paramCollection.service.IDaParamCollectionService;
import com.jcdm.main.om.productionOrde.service.IOmProductionOrdeInfoService;
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;
/**
 * 设备产品过程参数采集Service业务层处理
@@ -23,6 +28,9 @@
    @Autowired
    private IDaParamCollectionService daParamCollectionService;
    @Resource
    private SqlSessionFactory sqlSessionFactory;
    /**
     * 查询设备产品过程参数采集
@@ -102,4 +110,25 @@
    {
        return daParamCollectionMapper.deleteDaParamCollectionById(id);
    }
    @Override
    public void saveBeachDaParamCollection(List<DaParamCollection> 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();
        }
    }
}