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/package.json
@@ -49,6 +49,7 @@ "js-cookie": "3.0.1", "jsencrypt": "3.0.0-rc.1", "nprogress": "0.2.0", "qrcode-reader": "^1.0.4", "quill": "1.3.7", "screenfull": "5.0.2", "sortablejs": "1.10.2", @@ -73,6 +74,7 @@ "eslint": "7.15.0", "eslint-plugin-vue": "7.2.0", "lint-staged": "10.5.3", "qrcodejs2": "^0.0.2", "runjs": "4.4.2", "sass": "1.32.13", "sass-loader": "10.1.1", 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
@@ -24,14 +24,15 @@ <el-row :gutter="0" > <el-col :span="14"> <el-card class="box-card" style="margin-top: 5px" > <el-form ref="form" :model="form" label-width="25%" > <el-form-item prop="engineNo" style="margin-top: 16px"> <span slot="label" style="font-size:22px;color:black;"><strong>åå¨æºå·</strong></span> <el-input style="font-size:20px" v-model="form.engineNo" placeholder="请è¾å ¥åå¨æºå·" clearable @input="EngineNohandleChange"> <el-button slot="append" plain type="info" @click="EngineNohandleChange" icon="el-icon-search"></el-button> </el-input> <el-form :model="form" size="large" :inline="true" label-width="68px" @submit.native.prevent> <el-form-item label-width="200" label="åå¨æºç " :prop="form.engineNo" style="align-content: center"> <input v-model="form.engineNo" ref="inputdata" style="height: 39px; width: 300px" placeholder="请è¾å ¥åå¨æºç " /> </el-form-item> </el-form> </el-form> <el-form ref="form" :model="form" label-width="25%" > <el-form-item prop="productType"style="margin-top: 30px" > <span slot="label" style="font-size:22px;color:black"><strong>æºå</strong></span> @@ -54,7 +55,7 @@ <el-row :gutter="10" class="mb8" type="flex" justify="center" style="text-align: center"> <el-col :span="1.5"> <el-button plain :disabled="buttondisabled" type="primary" style="width:400px;height:160px" v-hasPermi="['bs:formula:add']" @click="forceOnline"> <el-button plain :disabled="buttondisabled" type="primary" style="width:400px;height:160px" v-hasPermi="['bs:formula:add']"> <span class="el-icon-thumb" style="font-size:40px;color:black"></span> <span style="font-size:45px;color:black"><strong>强å¶ä¸çº¿</strong></span> </el-button> @@ -78,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 { @@ -94,16 +94,11 @@ engineCheckList:[], showFlag:false, buttondisabled:true, locationCode: "æªé ç½®", locationCode: "æªé 置工ä½", locationName: "æªé 置工ä½", codeValue: "", code: "", lastTime: "", nextTime: "", lastCode: "", nextCode: "", dtmainId: "", scannerFlag: false, barcode: "", // æ¥è¯¢åæ° queryParams: { @@ -132,40 +127,84 @@ }, computed: {}, watch: {}, created() { window.document.onkeypress = (e) => { if (window.event) { this.nextCode = e.keyCode; } else if (e.which) { this.nextCode = e.which; } if (e.which === 13) { // é®çå车äºä»¶ if (this.code.length < 3) return; // æ«ç æªçé度å¾å¿«ï¼æå¨è¾å ¥çæ¶é´ä¸ä¼è®©codeçé¿åº¦å¤§äº2ï¼æ以è¿éä¸ä¼å¯¹æ«ç æªææ this.parseQRCode(this.code); // è·åå°æ«ç æªè¾å ¥çå 容ï¼åå«çæä½ this.lastCode = ""; this.lastTime = ""; return; } this.nextTime = new Date().getTime(); if (!this.lastTime && !this.lastCode) { this.code = ""; // æ¸ ç©ºä¸æ¬¡çæ¡å½¢ç this.code += e.key; } if (this.lastCode && this.lastTime && this.nextTime - this.lastTime > 500) { // å½æ«ç åækeypressäºä»¶æ¶,é²æ¢é¦å缺失 this.code = e.key; } else if (this.lastCode && this.lastTime) { this.code += e.key; } this.lastCode = this.nextCode; this.lastTime = this.nextTime; }; beforeDestroy() { this.$refs.inputdata.removeEventListener('keydown',this.handleScannerInput) }, mounted() { this.setFocus() this.$refs.inputdata.addEventListener('keydown',this.handleScannerInput) this.getStationConf(); }, methods: { refresh() { location.reload(); }, setFocus(){ this.$nextTick(()=>{ this.$refs.inputdata.focus() }) }, handleScannerInput(event){ if (this.scannerFlag){ this.form.engineNo = '' this.$refs.inputdata.value = '' this.scannerFlag = false } const input = event.target const inputValue = input.value this.form.engineNo = inputValue if (event.key === 'Enter'){ this.scannerFlag = true console.log("æ¡ç ï¼",this.form.engineNo) if(this.form.engineNo !== null && this.form.engineNo !== undefined) { 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 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 }); } } // 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 => { let queryParams = { @@ -192,62 +231,14 @@ this.resetForm("form"); }, 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 = 'ææ æ°æ®' } });*/ } }, parseQRCode(code) { this.form.engineNo = code; }, }, } </script> <style scoped> @@ -272,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]: '' package-lock.json
@@ -1,5 +1,5 @@ { "name": "Jcdm-Mes", "name": "Jcdm041-MesCVT", "lockfileVersion": 2, "requires": true, "packages": {}