hdy
2024-07-08 8069b5176a358fd4c730e34a4f30a781f1241c23
cvt更新
已修改10个文件
已添加2个文件
已删除7个文件
1486 ■■■■ 文件已修改
jcdm-admin/src/main/resources/application-druid.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-admin/src/main/resources/application.yml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/pom.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/cert/KeyStoreLoader.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/cert/MethodName.java 225 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/client/ClientHandler.java 304 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/client/ClientRunner.java 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/controller/DaOpcuaConfigController.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/init/BeanUtils.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/init/OpcusConfigInit.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/init/Properties.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/controller/DaPassingStationCollectionController.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/plcserver/callback/InitCallback.java 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/plcserver/init/CustomRunner.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/webservice/service/ReceivingServices.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/api/main/da/opcuaconfig/opcuaconfig.js 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/api/main/da/passingStationCollection/passingStationCollection.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/main/kb/cvt/index.vue 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/vue.config.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-admin/src/main/resources/application-druid.yml
@@ -22,7 +22,7 @@
            master:
                 url: jdbc:sqlserver://127.0.0.1:1433;DataBaseName=Jcdm041-MesCVT
                 username: sa
                 password: sam@123456
                 password: 123456
#            master:
#                 url: jdbc:sqlserver://127.0.0.1:1433;DataBaseName=Jcdm041-Mes
#                 username: dt
jcdm-admin/src/main/resources/application.yml
@@ -18,7 +18,7 @@
# å¼€å‘环境配置
server:
  # æœåŠ¡å™¨çš„HTTP端口,默认为8080
  port: 8081
  port: 8082
  servlet:
    # åº”用的访问路径
    context-path: /
@@ -130,3 +130,13 @@
  excludes: /system/notice
  # åŒ¹é…é“¾æŽ¥
  urlPatterns: /system/*,/monitor/*,/tool/*
kangaroohy:
  milo:
    primary: default
    config:
      default:
        endpoint: opc.tcp://127.0.0.1:49320
        security-policy: none
websocketUrl: 'ws://10.10.14.54:8081/websocket/'
jcdm-main/pom.xml
@@ -37,37 +37,7 @@
            </exclusions>
        </dependency>
        <!--Server SDK依赖-->
        <dependency>
            <groupId>org.eclipse.milo</groupId>
            <artifactId>sdk-server</artifactId>
            <version>0.3.6</version>
        </dependency>
        <!--Client SDK依赖-->
        <dependency>
            <groupId>org.eclipse.milo</groupId>
            <artifactId>sdk-client</artifactId>
            <version>0.3.6</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.milo</groupId>
            <artifactId>stack-client</artifactId>
            <version>0.3.6</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.milo</groupId>
            <artifactId>stack-client</artifactId>
            <version>0.3.6</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.milo</groupId>
            <artifactId>stack-server</artifactId>
            <version>0.3.6</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
@@ -105,6 +75,24 @@
            <groupId>com.jcdm</groupId>
            <artifactId>jcdm-system</artifactId>
        </dependency>
        <dependency>
            <groupId>com.kangaroohy</groupId>
            <artifactId>milo-spring-boot-starter</artifactId>
            <version>3.0.5</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>2.0.22</version>
        </dependency>
    </dependencies>
</project>
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/cert/KeyStoreLoader.java
ÎļþÒÑɾ³ý
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/cert/MethodName.java
ÎļþÒÑɾ³ý
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/client/ClientHandler.java
ÎļþÒÑɾ³ý
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/client/ClientRunner.java
ÎļþÒÑɾ³ý
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/controller/DaOpcuaConfigController.java
@@ -3,7 +3,7 @@
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.jcdm.main.da.opcuaconfig.client.ClientHandler;
//import com.jcdm.main.da.opcuaconfig.client.ClientHandler;
import com.jcdm.main.da.opcuaconfig.domain.DaOpcuaConfig;
import com.jcdm.main.da.opcuaconfig.domain.NodeEntity;
import com.jcdm.main.da.opcuaconfig.service.IDaOpcuaConfigService;
@@ -32,8 +32,7 @@
 */
@RestController
@RequestMapping("/da/opcuaconfig")
public class DaOpcuaConfigController extends BaseController
{
public class DaOpcuaConfigController extends BaseController {
    @Autowired
    private IDaOpcuaConfigService daOpcuaConfigService;
@@ -42,8 +41,7 @@
     */
    @PreAuthorize("@ss.hasPermi('da:opcuaconfig:list')")
    @GetMapping("/list")
    public TableDataInfo list(DaOpcuaConfig daOpcuaConfig)
    {
    public TableDataInfo list(DaOpcuaConfig daOpcuaConfig) {
        startPage();
        List<DaOpcuaConfig> list = daOpcuaConfigService.selectDaOpcuaConfigList(daOpcuaConfig);
        return getDataTable(list);
@@ -55,8 +53,7 @@
    @PreAuthorize("@ss.hasPermi('da:opcuaconfig:export')")
    @Log(title = "交互信号配置", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, DaOpcuaConfig daOpcuaConfig)
    {
    public void export(HttpServletResponse response, DaOpcuaConfig daOpcuaConfig) {
        List<DaOpcuaConfig> list = daOpcuaConfigService.selectDaOpcuaConfigList(daOpcuaConfig);
        ExcelUtil<DaOpcuaConfig> util = new ExcelUtil<DaOpcuaConfig>(DaOpcuaConfig.class);
        util.exportExcel(response, list, "交互信号配置数据");
@@ -67,8 +64,7 @@
     */
    @PreAuthorize("@ss.hasPermi('da:opcuaconfig:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id)
    {
    public AjaxResult getInfo(@PathVariable("id") Long id) {
        return success(daOpcuaConfigService.selectDaOpcuaConfigById(id));
    }
@@ -78,8 +74,7 @@
    @PreAuthorize("@ss.hasPermi('da:opcuaconfig:add')")
    @Log(title = "交互信号配置", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody DaOpcuaConfig daOpcuaConfig)
    {
    public AjaxResult add(@RequestBody DaOpcuaConfig daOpcuaConfig) {
        return toAjax(daOpcuaConfigService.insertDaOpcuaConfig(daOpcuaConfig));
    }
@@ -89,8 +84,7 @@
    @PreAuthorize("@ss.hasPermi('da:opcuaconfig:edit')")
    @Log(title = "交互信号配置", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody DaOpcuaConfig daOpcuaConfig)
    {
    public AjaxResult edit(@RequestBody DaOpcuaConfig daOpcuaConfig) {
        return toAjax(daOpcuaConfigService.updateDaOpcuaConfig(daOpcuaConfig));
    }
@@ -99,26 +93,25 @@
     */
    @PreAuthorize("@ss.hasPermi('da:opcuaconfig:remove')")
    @Log(title = "交互信号配置", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids)
    {
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids) {
        return toAjax(daOpcuaConfigService.deleteDaOpcuaConfigByIds(ids));
    }
}
    /**
     * èŽ·å–交互信号配置详细信息
     */
    @PreAuthorize("@ss.hasPermi('da:opcuaconfig:query')")
    @GetMapping(value = "/SNCode/{SNCode}/{locationCode}")
    public AjaxResult setSNCode(@PathVariable("SNCode") String SNCode,@PathVariable("locationCode") String locationCode) {
        NodeEntity node= NodeEntity.builder().index(2).identifier("CFL4CVT"+"."+locationCode+".MesSNCode").value(SNCode).type("string").build();
        Boolean out= null;
        try {
            out = ClientHandler.write(node);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        return toAjax(out);
    }
}
//    @PreAuthorize("@ss.hasPermi('da:opcuaconfig:query')")
//    @GetMapping(value = "/SNCode/{SNCode}/{locationCode}")
//    public AjaxResult setSNCode(@PathVariable("SNCode") String SNCode,@PathVariable("locationCode") String locationCode) {
//        NodeEntity node= NodeEntity.builder().index(2).identifier("CFL4CVT"+"."+locationCode+".MesSNCode").value(SNCode).type("string").build();
//        Boolean out= null;
//        try {
//            out = ClientHandler.write(node);
//        } catch (Exception e) {
//            throw new RuntimeException(e);
//        }
//
//        return toAjax(out);
//    }
//}
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/init/BeanUtils.java
ÎļþÒÑɾ³ý
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/init/OpcusConfigInit.java
ÎļþÒÑɾ³ý
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/init/Properties.java
ÎļþÒÑɾ³ý
jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/controller/DaPassingStationCollectionController.java
@@ -1,30 +1,28 @@
package com.jcdm.main.da.passingStationCollection.controller;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.jcdm.common.core.domain.R;
import com.jcdm.common.utils.DateUtils;
import com.jcdm.main.bs.orderScheduling.domain.BsOrderScheduling;
import com.jcdm.main.da.paramCollection.domain.DaParamCollection;
import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection;
import com.jcdm.main.da.passingStationCollection.service.IDaPassingStationCollectionService;
import com.jcdm.main.da.passingStationCollection.vo.DaPassingStationVO;
import com.kangaroohy.milo.model.ReadWriteEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.jcdm.common.annotation.Log;
import com.jcdm.common.core.controller.BaseController;
import com.jcdm.common.core.domain.AjaxResult;
import com.jcdm.common.enums.BusinessType;
import com.jcdm.common.utils.poi.ExcelUtil;
import com.jcdm.common.core.page.TableDataInfo;
import static com.jcdm.main.plcserver.callback.InitCallback.miloService;
/**
 * äº§å“è¿‡ç«™é‡‡é›†Controller
@@ -34,8 +32,7 @@
 */
@RestController
@RequestMapping("/da/passingStationCollection")
public class DaPassingStationCollectionController extends BaseController
{
public class DaPassingStationCollectionController extends BaseController {
    @Autowired
    private IDaPassingStationCollectionService daPassingStationCollectionService;
@@ -44,8 +41,7 @@
     */
    @PreAuthorize("@ss.hasPermi('da:passingStationCollection:list')")
    @GetMapping("/list")
    public TableDataInfo list(DaPassingStationCollection daPassingStationCollection)
    {
    public TableDataInfo list(DaPassingStationCollection daPassingStationCollection) {
        startPage();
        List<DaPassingStationCollection> list = daPassingStationCollectionService.selectDaPassingStationCollectionList(daPassingStationCollection);
        return getDataTable(list);
@@ -53,27 +49,25 @@
    @PreAuthorize("@ss.hasPermi('da:passingStationCollection:list')")
    @GetMapping("/getTopProcess")
    public TableDataInfo getTopProcess()
    {
    public TableDataInfo getTopProcess() {
        DaPassingStationCollection daPassingStationCollection = new DaPassingStationCollection();
        List<DaPassingStationVO> list = daPassingStationCollectionService.getTopProcess(daPassingStationCollection);
        return getDataTable(list);
    }
    /**
     * æŸ¥è¯¢äº§å“è¿‡ç«™é‡‡é›†åˆ—表
     */
    @PreAuthorize("@ss.hasPermi('da:passingStationCollection:list')")
    @GetMapping("/noPageList")
    public TableDataInfo noPageList(DaPassingStationCollection daPassingStationCollection)
    {
    public TableDataInfo noPageList(DaPassingStationCollection daPassingStationCollection) {
        List<DaPassingStationCollection> list = daPassingStationCollectionService.selectDaPassingStationCollectionList(daPassingStationCollection);
        return getDataTable(list);
    }
    @PreAuthorize("@ss.hasPermi('da:passingStationCollection:list')")
    @GetMapping("/getProduceNumToday")
    public R getProduceNumToday(String fieldName)
    {
    public R getProduceNumToday(String fieldName) {
        Integer num = daPassingStationCollectionService.getProduceNumToday(fieldName);
        return R.ok(num);
    }
@@ -82,8 +76,7 @@
     * æŸ¥è¯¢äº§å“è¿‡ç«™é‡‡é›†åˆ—表
     */
    @GetMapping("/insertRepairRecordByIds")
    public AjaxResult insertRepairRecordByIds(DaPassingStationCollection daPassingStationCollection)
    {
    public AjaxResult insertRepairRecordByIds(DaPassingStationCollection daPassingStationCollection) {
        daPassingStationCollectionService.insertRepairRecordByIds(daPassingStationCollection);
        return AjaxResult.success();
    }
@@ -94,8 +87,7 @@
    @PreAuthorize("@ss.hasPermi('da:passingStationCollection:export')")
    @Log(title = "产品过站采集", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, DaPassingStationCollection daPassingStationCollection)
    {
    public void export(HttpServletResponse response, DaPassingStationCollection daPassingStationCollection) {
        List<DaPassingStationCollection> list = daPassingStationCollectionService.selectDaPassingStationCollectionList(daPassingStationCollection);
        ExcelUtil<DaPassingStationCollection> util = new ExcelUtil<DaPassingStationCollection>(DaPassingStationCollection.class);
        util.exportExcel(response, list, "产品过站采集数据");
@@ -106,8 +98,7 @@
     */
    @PreAuthorize("@ss.hasPermi('da:passingStationCollection:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id)
    {
    public AjaxResult getInfo(@PathVariable("id") Long id) {
        return success(daPassingStationCollectionService.selectDaPassingStationCollectionById(id));
    }
@@ -117,8 +108,7 @@
    @PreAuthorize("@ss.hasPermi('da:passingStationCollection:add')")
    @Log(title = "产品过站采集", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody DaPassingStationCollection daPassingStationCollection)
    {
    public AjaxResult add(@RequestBody DaPassingStationCollection daPassingStationCollection) {
        daPassingStationCollection.setCreateBy(getUsername());
        daPassingStationCollection.setCreateTime(DateUtils.getNowDate());
        return toAjax(daPassingStationCollectionService.insertDaPassingStationCollection(daPassingStationCollection));
@@ -130,8 +120,7 @@
    @PreAuthorize("@ss.hasPermi('da:passingStationCollection:edit')")
    @Log(title = "产品过站采集", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody DaPassingStationCollection daPassingStationCollection)
    {
    public AjaxResult edit(@RequestBody DaPassingStationCollection daPassingStationCollection) {
        daPassingStationCollection.setUpdateBy(getUsername());
        daPassingStationCollection.setUpdateTime(DateUtils.getNowDate());
        return toAjax(daPassingStationCollectionService.updateDaPassingStationCollection(daPassingStationCollection));
@@ -142,9 +131,42 @@
     */
    @PreAuthorize("@ss.hasPermi('da:passingStationCollection:remove')")
    @Log(title = "产品过站采集", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids)
    {
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids) {
        return toAjax(daPassingStationCollectionService.deleteDaPassingStationCollectionByIds(ids));
    }
}
//    @PreAuthorize("@ss.hasPermi('da:passingStationCollection:query')")
//    @Log(title = "产品过站采集", businessType = BusinessType.INSERT)
//    @GetMapping(value = "/addPassing")
//    public R addPassing(String sfcCode,String locationCode) {
//
//        DaPassingStationCollection saveData = new DaPassingStationCollection();
//        saveData.setSfcCode(sfcCode);
//        saveData.setLocationCode(locationCode);
//        saveData.setCollectionTime(new Date());
//        daPassingStationCollectionService.insertDaPassingStationCollection(saveData);
//
//        return R.ok();
//
//    }
    @GetMapping("/initializedData")
    public AjaxResult initializedData(@RequestParam String sfcCode, @RequestParam String locationCode) {
        try {
            String nodeId = "CFL4CVT." + locationCode + ".MesSNCode";
            ReadWriteEntity entity = new ReadWriteEntity(nodeId, sfcCode);
            miloService.writeToOpcUa(entity);
            String SaveSNCode ="CFL4CVT." + locationCode + ".SaveSNCode";
            ReadWriteEntity SaveSNCodeEntity = new ReadWriteEntity(SaveSNCode, 11);
            miloService.writeToOpcUa(SaveSNCodeEntity);
            return AjaxResult.success("SFC Code updated successfully");
        } catch (Exception e) {
            throw new RuntimeException("Failed to update SFC Code in OPC UA", e);
        }
    }
}
jcdm-main/src/main/java/com/jcdm/main/plcserver/callback/InitCallback.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,167 @@
package com.jcdm.main.plcserver.callback;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.jcdm.common.core.domain.BaseEntity;
import com.jcdm.main.da.collectionParamConf.domain.DaCollectionParamConf;
import com.jcdm.main.da.collectionParamConf.service.IDaCollectionParamConfService;
import com.jcdm.main.da.paramCollection.domain.DaParamCollection;
import com.jcdm.main.da.paramCollection.service.IDaParamCollectionService;
import com.jcdm.main.da.passingStationCollection.service.impl.DaPassingStationCollectionServiceImpl;
import com.jcdm.main.da.tileMatchRules.service.IDaTileMatchRulesService;
import com.kangaroohy.milo.model.ReadWriteEntity;
import com.kangaroohy.milo.runner.subscription.SubscriptionCallback;
import com.kangaroohy.milo.service.MiloService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@Component
public class InitCallback implements SubscriptionCallback {
    public static MiloService miloService;
    public IDaCollectionParamConfService collectionParamConfService;
    public IDaParamCollectionService daParamCollectionService;
    public DaPassingStationCollectionServiceImpl passingStationCollectionServiceImpl;
    public IDaTileMatchRulesService daTileMatchRulesService;
    ;
    public InitCallback(MiloService miloService,
                        IDaCollectionParamConfService collectionParamConfService,
                        IDaParamCollectionService daParamCollectionService,
                        DaPassingStationCollectionServiceImpl passingStationCollectionServiceImpl,
                        IDaTileMatchRulesService daTileMatchRulesService) {
        InitCallback.miloService = miloService;
        this.collectionParamConfService = collectionParamConfService;
        this.daParamCollectionService = daParamCollectionService;
        this.passingStationCollectionServiceImpl = passingStationCollectionServiceImpl;
        this.daTileMatchRulesService = daTileMatchRulesService;
    }
    @Override
    public void onSubscribe(String identifier, Object value) {
        String ecpStr = "";//异常记录标记
        try {
            if (null != value) {
                //BCOP40进站校验
                if (identifier.equals("CFL4CVT.BCOP040.RecordData") && null != value && "1".equals(value.toString())) {
                    //待添加从过站采集表取sfc_code写入plc的sncode方法
                    ReadWriteEntity entity = new ReadWriteEntity("CFL4CVT.BCOP040.MesRecordDataDone", 11);
                    miloService.writeToOpcByte(entity);
                }
                //BCOP40出站校验
                else if (identifier.equals("CFL4CVT.BCOP040.RecordData") && null != value && "2".equals(value.toString())) {
                    SaveData("CFL4CVT.BCOP40.RecordData");
                    ReadWriteEntity entity = new ReadWriteEntity("CFL4CVT.BCOP040.MesRecordDataDone", 21);
                    miloService.writeToOpcByte(entity);
                }
                //BCOP60进站校验
                else if (identifier.equals("CFL4CVT.BCOP060.RecordData") && null != value && "1".equals(value.toString())) {
                    //待添加从过站采集表取sfc_code写入plc的sncode方法
                    ReadWriteEntity entity = new ReadWriteEntity("CFL4CVT.BCOP060.MesRecordDataDone", 11);
                    miloService.writeToOpcByte(entity);
                }
                //BCOP60出站校验
                else if (identifier.equals("CFL4CVT.BCOP060.RecordData") && null != value && "2".equals(value.toString())) {
                    SaveData("CFL4CVT.BCOP060.RecordData");
                    ReadWriteEntity entity = new ReadWriteEntity("CFL4CVT.BCOP060.MesRecordDataDone", 21);
                    miloService.writeToOpcByte(entity);
                }
                //BCOP100进站校验
                else if (identifier.equals("CFL4CVT.BCOP100.RecordData") && null != value && "1".equals(value.toString())) {
                    //待添加从过站采集表取sfc_code写入plc的sncode方法
                    ReadWriteEntity entity = new ReadWriteEntity("CFL4CVT.BCOP100.MesRecordDataDone", 11);
                    miloService.writeToOpcByte(entity);
                }
                //BCOP100出站校验
                else if (identifier.equals("CFL4CVT.BCOP100.RecordData") && null != value && "2".equals(value.toString())) {
                    SaveData("CFL4CVT.BCOP100.RecordData");
                    ReadWriteEntity entity = new ReadWriteEntity("CFL4CVT.BCOP100.MesRecordDataDone", 21);
                    miloService.writeToOpcByte(entity);
                }//BP020进站校验
                else if (identifier.equals("CFL4CVT.BP020.RecordData") && null != value && "1".equals(value.toString())) {
                    //待添加从过站采集表取sfc_code写入plc的sncode方法
                    ReadWriteEntity entity = new ReadWriteEntity("CFL4CVT.BP020.MesRecordDataDone", 11);
                    miloService.writeToOpcByte(entity);
                }
                //BP020出站校验
                else if (identifier.equals("CFL4CVT.BP020.RecordData") && null != value && "2".equals(value.toString())) {
                    SaveData("CFL4CVT.BP020.RecordData");
                    ReadWriteEntity entity = new ReadWriteEntity("CFL4CVT.BP020.MesRecordDataDone", 21);
                    miloService.writeToOpcByte(entity);
                }
            }
        } catch (Exception e) {
        } finally {
            if (!"".equals(ecpStr)) {
                System.out.println(ecpStr + "\r\n");
            }
        }
    }
    public void SaveData(String Node) throws Exception {
        String[] parts = Node.split("[.]");
        Object SNCodeObject = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".Code1").getValue();
        if (null != SNCodeObject) {
            String SNCode = SNCodeObject.toString();
            List<DaCollectionParamConf> list;
            DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf();
            daCollectionParamConf.setGatherAddress(parts[0] + "." + parts[1]);
            list = collectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf);
            List<String> nodeIdList = list.stream().map(info -> {
                String nodeid = info.getGatherAddress();
                return nodeid;
            }).collect(Collectors.toList());
            if (!nodeIdList.isEmpty()) {
                List<ReadWriteEntity> readWriteEntityList = miloService.readFromOpcUa(nodeIdList);
                List<DaParamCollection> daParamCollectionlist = new ArrayList<>();
                for (int i = 0; i < nodeIdList.size(); i++) {
                    DaParamCollection ParamCollection = new DaParamCollection();
                    if (!readWriteEntityList.get(i).getValue().toString().equals("0.0")) {
                        ParamCollection.setParamCode(readWriteEntityList.get(i).getIdentifier().toString().split("[.]")[2]);
                        ParamCollection.setLocationCode(parts[1]);
                        Object value = readWriteEntityList.get(i).getValue();
                        if (ObjectUtils.isNotEmpty(value)) {
                            String string = value.toString();
                            ParamCollection.setParamValue(string);
                        }
                        ParamCollection.setSfcCode(SNCode);
                        ParamCollection.setParamName(list.get(i).getCollectParameterName());
                        ParamCollection.setParamUpper(list.get(i).getParamUpper());
                        ParamCollection.setParamLower(list.get(i).getParamLower());
                        ParamCollection.setUnit(list.get(i).getCollectParameterUnit());
                        ParamCollection.setState("合格");
                        ParamCollection.setType(list.get(i).getCollectParameterType());
                        ParamCollection.setCollectionTime(new Date());
                        daParamCollectionlist.add(ParamCollection);
                    }
                }
                daParamCollectionService.saveBeachDaParamCollection(daParamCollectionlist);
            }
        }
    }
    public void WriteSNCode(String Node) throws Exception {
    }
}
jcdm-main/src/main/java/com/jcdm/main/plcserver/init/CustomRunner.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
package com.jcdm.main.plcserver.init;
import com.jcdm.main.da.collectionParamConf.service.IDaCollectionParamConfService;
import com.jcdm.main.da.paramCollection.service.IDaParamCollectionService;
import com.jcdm.main.da.passingStationCollection.service.impl.DaPassingStationCollectionServiceImpl;
import com.jcdm.main.da.tileMatchRules.service.IDaTileMatchRulesService;
import com.jcdm.main.plcserver.callback.InitCallback;
import com.kangaroohy.milo.service.MiloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@Component
public class CustomRunner implements ApplicationRunner {
    @Autowired
    public MiloService miloService;
    @Autowired
    public IDaCollectionParamConfService collectionParamConfService;
    @Autowired
    public IDaParamCollectionService daParamCollectionService;
    @Resource
    private DaPassingStationCollectionServiceImpl passingStationCollectionServiceImpl;
    @Resource
    private IDaTileMatchRulesService daTileMatchRulesService;
    @Override
    public void run(ApplicationArguments args) throws Exception {
        InitCallback InitCallback = new InitCallback(miloService,
                collectionParamConfService,
                daParamCollectionService,
                passingStationCollectionServiceImpl,
                daTileMatchRulesService);
        List<String> lists = getList();
        miloService.subscriptionFromOpcUa(lists,InitCallback);
    }
    public List<String> getList(){
        List<String> lists = new ArrayList<>();
        lists.add("CFL4CVT.BCOP010.RecordData");//请求保存
        lists.add("CFL4CVT.BCOP040.RecordData");//请求保存
        lists.add("CFL4CVT.BCOP060.RecordData");//请求保存
        lists.add("CFL4CVT.BCOP100.RecordData");//请求保存
        lists.add("CFL4CVT.BP020.RecordData");//请求保存
        return lists;
    }
}
jcdm-main/src/main/java/com/jcdm/main/webservice/service/ReceivingServices.java
@@ -8,7 +8,7 @@
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.jcdm.main.da.collectionParamConf.service.IDaCollectionParamConfService;
import com.jcdm.main.da.opcuaconfig.init.BeanUtils;
import com.jcdm.main.om.productionOrde.domain.OmProductionOrdeInfo;
import com.jcdm.main.om.productionOrde.service.IOmProductionOrdeInfoService;
import com.jcdm.main.om.workReport.service.IOmWorkReportService;
@@ -32,9 +32,9 @@
import java.util.List;
public class ReceivingServices {
    @Autowired
//    private static IOmProductionOrdeInfoService omProductionOrdeInfoService;
    private static IOmProductionOrdeInfoService omProductionOrdeInfoService = BeanUtils.getBean(IOmProductionOrdeInfoService.class);
    public static final String ProductionPlanInformationUrl = "http://podqapp.cfmoto.com.cn:50200/XISOAPAdapter/MessageServlet?senderParty=&senderService=BC_MES&receiverParty=&receiverService=&interface=SI_ZPP_CF_MES_005_SYN_OUT&interfaceNamespace=http://cfmoto.com/xi/MES";
@@ -122,7 +122,7 @@
            ordeInfo.setCreateUser(item.getZUSER());
            //ordeInfo.setCreateTime(item.getZDATE());
            ordeInfo.setDemandDate(item.getGSTRP());//开工日期
            omProductionOrdeInfoService.insertOmProductionOrdeInfo(ordeInfo);
//            omProductionOrdeInfoService.insertOmProductionOrdeInfo(ordeInfo);
        }
    }
jcdm-ui/src/api/main/da/opcuaconfig/opcuaconfig.js
@@ -18,12 +18,13 @@
}
// æŸ¥è¯¢äº¤äº’信号配置详细
export function setSNCode(SNCode,locationCode) {
  return request({
    url: '/da/opcuaconfig/SNCode/' + SNCode+'/'+locationCode,
    method: 'get'
  })
}
// export function SNCode(param) {
//   return request({
//     url: '/da/opcuaconfig/SNCode',
//     method: 'get',
//     params: param
//   })
// }
// æ–°å¢žäº¤äº’信号配置
export function addOpcuaconfig(data) {
jcdm-ui/src/api/main/da/passingStationCollection/passingStationCollection.js
@@ -75,3 +75,11 @@
    method: 'delete'
  })
}
export function initializedData(query) {
  return request({
    url: '/da/passingStationCollection/',
    method: 'get',
    params: query
  })
}
jcdm-ui/src/views/main/kb/cvt/index.vue
@@ -79,9 +79,8 @@
<script>
import { listOrderScheduling, getOrderScheduling, delOrderScheduling, addOrderScheduling, updateOrderScheduling } from "@/api/main/bs/orderScheduling/orderScheduling";
import { listPassingStationCollection, getPassingStationCollection, delPassingStationCollection, addPassingStationCollection, updatePassingStationCollection } from "@/api/main/da/passingStationCollection/passingStationCollection";
import {listPassingStationCollection, getPassingStationCollection, delPassingStationCollection, addPassingStationCollection, updatePassingStationCollection,initializedData } from "@/api/main/da/passingStationCollection/passingStationCollection";
import {listLineInfo} from "@/api/main/bs/lineInfo/lineInfo";
import {setSNCode} from "@/api/main/da/opcuaconfig/opcuaconfig";
import {getIp, listStationConf} from "@/api/main/sc/stationConf";
export default {
@@ -95,7 +94,7 @@
      engineCheckList:[],
      showFlag:false,
      buttondisabled:true,
      locationCode: "未配置",
      locationCode: "未配置工位",
      locationName: "未配置工位",
      scannerFlag: false,
@@ -160,7 +159,13 @@
        this.scannerFlag = true
        console.log("条码:",this.form.engineNo)
        if(this.form.engineNo !== null && this.form.engineNo !== undefined) {
          setSNCode(this.form.engineNo, this.locationCode)
          addPassingStationCollection({sfcCode:this.form.engineNo,locationCode:this.locationCode}).then(res =>{
            console.log("rrrrr",res)
          })
          if(this.locationCode === 'BCOP040'|| this.locationCode === 'BCOP060'|| this.locationCode === 'BCOP100'|| this.locationCode === 'BP020' ){
            initializedData({sfcCode:this.form.engineNo,locationCode:this.locationCode}).then(res =>{
            })
          }
        }else{
          this.reset();
          this.buttondisabled = true
@@ -175,9 +180,30 @@
            offset:300
          });
        }
      }
      // this.AddEngineNo();
    },
    handleScannerInput111(event){
      const param = {
        sfcCode: this.from.engineNo,
      }
      addPassingStationCollection(param).then(response => {
      });
    },
    // AddEngineNo(){
    //   const param = {
    //     locationCode: this.from.locationCode,
    //     sfcCode: this.from.engineNo,
    //     // locationCode:"OP110",
    //     // sfcCode:"666",
    //
    //   }
    //       addPassingStationCollection(param).then(response =>{});
    // },
    getStationConf() {
      getIp().then(response => {
@@ -207,52 +233,7 @@
    EngineNohandleChange(){
      console.log('条码:',this.form.engineNo)
      if(this.form.engineNo !== null && this.form.engineNo !== undefined){
        //let OrderSchedulingParam = {engineNo: null}
        setSNCode(this.form.engineNo,this.locationCode)
        //OrderSchedulingParam.engineNo = this.form.engineNo;
     /*   listOrderScheduling(OrderSchedulingParam).then(response => {
          if(response.total === 1 ){
            this.form.productType = response.rows[0].model
            this.form.orderNo = response.rows[0].orderNo
            this.form.qualityStatus = response.rows[0].qualityStatus
            this.form.currentWorkstation = response.rows[0].currentWorkstation
            this.form.add= response.rows[0].currentWorkstation+ response.rows[0].qualityStatus
            if(this.form.qualityStatus ==='不合格'){
              this.buttondisabled = false;
            }
            else{
              this.buttondisabled = true;
            }
          }
          else{
            this.reset();
            this.buttondisabled = true
            const h = this.$createElement;
            this.$message({
              message: h('p',null, [
                       h('span', null, '警告 '),
                       h('i', { style: 'color: black' }, '输入的发动机号有误'),
                       h()]),
              type: 'error',
              center: true,
              offset:300
            });
          }
        });*/
        /*let PassingStationCollectionParam = {sfcCode: null}
        PassingStationCollectionParam.sfcCode = this.form.engineNo;
        listPassingStationCollection(PassingStationCollectionParam).then(ponse =>{
          this.engineCheckList = ponse.rows.locationCode ;
          if(ponse.rows.length >= 1 && this.form.engineNo !== undefined){
            this.form.engineCheckList = ''
            for (let i = 0; i < ponse.rows.length; i++) {
              this.form.engineCheckList += '   å·¥ä½:'+ ponse.rows[i].locationCode+'['+ponse.rows[i].outRsSign+']'
            }
          }
          else{
            this.form.engineCheckList = '暂无数据'
          }
        });*/
      }
    },
@@ -282,10 +263,5 @@
  justify-content: center;
  margin-top: 5px
}
/*.my-custom-modal .el-dialog__wrapper {*/
/*  width: 400px; !* è®¾ç½®å®½åº¦ *!*/
/*  height: 200px; !* è®¾ç½®é«˜åº¦ *!*/
/*  top: 50px; !* è®¾ç½®è·ç¦»é¡µé¢é¡¶éƒ¨çš„位置 *!*/
/*  left: 50px; !* è®¾ç½®è·ç¦»é¡µé¢å·¦ä¾§çš„位置 *!*/
/*}*/
</style>
jcdm-ui/vue.config.js
@@ -34,7 +34,7 @@
    open: true,
    proxy: {
      [process.env.VUE_APP_BASE_API]: {
        target: `http://localhost:8081`,
        target: `http://localhost:8082`,
        changeOrigin: true,
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_API]: ''