From 28a7821e43bd5763739fe67384cfea6693b3500b Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期二, 08 九月 2020 13:19:26 +0800 Subject: [PATCH] Merge branches 'gdwcs' and 'jswcs' of https://gitee.com/luxiaotao1123/zy-wcs into jswcs --- src/main/java/com/zy/asrs/controller/SiteController.java | 61 src/main/java/com/zy/core/thread/LedThread.java | 355 ++++++++ src/main/webapp/views/console.html | 241 ++++- src/main/resources/lib/slf4j-api-1.7.30.jar | 0 pom.xml | 81 ++ src/main/java/com/zy/core/model/command/LedCommand.java | 28 src/main/java/com/zy/core/model/protocol/CrnProtocol.java | 118 +- src/main/java/com/zy/core/model/protocol/CrnTemp1.java | 47 + src/main/java/com/zy/core/model/protocol/StaProtocol.java | 2 src/main/webapp/views/crn.html | 65 + src/main/java/com/zy/asrs/utils/Utils.java | 22 src/main/resources/lib/slf4j-simple-1.7.30.jar | 0 src/main/java/com/zy/Boot.java | 10 src/main/java/com/zy/core/MainProcess.java | 7 src/main/java/com/zy/core/thread/CrnThread.java | 267 ++++-- src/main/webapp/static/js/common.js | 2 src/main/java/com/zy/common/service/CommonService.java | 95 +- src/main/java/com/zy/asrs/service/WrkDetlService.java | 3 src/main/java/com/zy/core/model/CrnSlave.java | 2 src/main/java/com/zy/asrs/domain/enums/CrnStatusType.java | 4 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 249 ++++- src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java | 6 src/main/java/com/zy/core/cache/MessageQueue.java | 5 src/main/java/com/zy/core/model/LedSlave.java | 24 src/main/resources/mapper/WrkMastMapper.xml | 32 src/main/webapp/views/pipeline.html | 8 src/main/java/com/zy/asrs/controller/CrnController.java | 68 + src/main/java/com/zy/core/thread/DevpThread.java | 108 +- src/main/java/com/zy/asrs/domain/vo/CrnStateTableVo.java | 39 src/main/java/com/zy/core/ServerBootstrap.java | 30 src/main/java/com/zy/common/model/MatDto.java | 11 src/main/java/com/zy/core/properties/SlaveProperties.java | 3 src/main/java/com/zy/asrs/controller/ConsoleController.java | 27 src/main/java/com/zy/core/enums/CrnStatusType.java | 2 src/main/java/com/zy/core/model/protocol/CrnError1.java | 63 src/main/java/com/zy/asrs/domain/vo/CrnMsgTableVo.java | 61 + src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | 16 src/main/webapp/static/css/console.css | 70 - src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java | 16 src/main/java/com/zy/common/utils/CollectionUtils.java | 20 src/main/resources/application.yml | 99 + 41 files changed, 1,756 insertions(+), 611 deletions(-) diff --git a/pom.xml b/pom.xml index a209627..3cb25c2 100644 --- a/pom.xml +++ b/pom.xml @@ -103,10 +103,89 @@ <artifactId>okhttp</artifactId> <version>3.10.0</version> </dependency> + + <!-- led sdk --> + <dependency> + <groupId>com.wcs.led</groupId> + <artifactId>5m3</artifactId> + <scope>system</scope> + <version>0.5.0</version> + <systemPath>${project.basedir}/src/main/resources/lib/bx05-0.5.0-SNAPSHOT.jar</systemPath> + </dependency> + <dependency> + <groupId>com.wcs.led</groupId> + <artifactId>5m3message</artifactId> + <scope>system</scope> + <version>0.5.0</version> + <systemPath>${project.basedir}/src/main/resources/lib/bx05.message-0.5.0-SNAPSHOT.jar</systemPath> + </dependency> + <dependency> + <groupId>com.wcs.led</groupId> + <artifactId>5m3doc</artifactId> + <scope>system</scope> + <version>0.5.0</version> + <systemPath>${project.basedir}/src/main/resources/lib/bx05-0.5.0-SNAPSHOT-javadoc.jar</systemPath> + </dependency> + <dependency> + <groupId>com.wcs.led</groupId> + <artifactId>rxtx</artifactId> + <scope>system</scope> + <version>2.1.7</version> + <systemPath>${project.basedir}/src/main/resources/lib/rxtx-2.1.7.jar</systemPath> + </dependency> + <dependency> + <groupId>com.wcs.led</groupId> + <artifactId>simple-xml</artifactId> + <scope>system</scope> + <version>2.7.1</version> + <systemPath>${project.basedir}/src/main/resources/lib/simple-xml-2.7.1.jar</systemPath> + </dependency> + <dependency> + <groupId>com.wcs.led</groupId> + <artifactId>stax</artifactId> + <scope>system</scope> + <version>1.2.0</version> + <systemPath>${project.basedir}/src/main/resources/lib/stax-1.2.0.jar</systemPath> + </dependency> + <dependency> + <groupId>com.wcs.led</groupId> + <artifactId>stax-api</artifactId> + <scope>system</scope> + <version>1.0.1</version> + <systemPath>${project.basedir}/src/main/resources/lib/stax-api-1.0.1.jar</systemPath> + </dependency> + <dependency> + <groupId>com.wcs.led</groupId> + <artifactId>uia-comm</artifactId> + <scope>system</scope> + <version>0.5.1</version> + <systemPath>${project.basedir}/src/main/resources/lib/uia-comm-0.5.1.jar</systemPath> + </dependency> + <dependency> + <groupId>com.wcs.led</groupId> + <artifactId>uia-message</artifactId> + <scope>system</scope> + <version>0.6.0</version> + <systemPath>${project.basedir}/src/main/resources/lib/uia-message-0.6.0.jar</systemPath> + </dependency> + <dependency> + <groupId>com.wcs.led</groupId> + <artifactId>uia-utils</artifactId> + <scope>system</scope> + <version>0.2.0</version> + <systemPath>${project.basedir}/src/main/resources/lib/uia-utils-0.2.0.jar</systemPath> + </dependency> + <dependency> + <groupId>com.wcs.led</groupId> + <artifactId>xpp3</artifactId> + <scope>system</scope> + <version>1.1.3.3</version> + <systemPath>${project.basedir}/src/main/resources/lib/xpp3-1.1.3.3.jar</systemPath> + </dependency> </dependencies> <build> - <finalName>jswcs</finalName> + <finalName>gdwcs</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> diff --git a/src/main/java/com/zy/Boot.java b/src/main/java/com/zy/Boot.java index d3929b2..f25a356 100644 --- a/src/main/java/com/zy/Boot.java +++ b/src/main/java/com/zy/Boot.java @@ -1,8 +1,6 @@ package com.zy; -import com.core.common.SpringUtils; import com.zy.common.utils.RandomValidateCodeUtil; -import com.zy.core.ServerBootstrap; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @@ -15,10 +13,10 @@ public static void main(String[] args) { RandomValidateCodeUtil.init(); SpringApplication.run(Boot.class, args); - new Thread(()-> { - ServerBootstrap serverBootstrap = SpringUtils.getBean(ServerBootstrap.class); - serverBootstrap.init(); - }).start(); +// new Thread(()-> { +// ServerBootstrap serverBootstrap = SpringUtils.getBean(ServerBootstrap.class); +// serverBootstrap.init(); +// }).start(); } diff --git a/src/main/java/com/zy/asrs/controller/ConsoleController.java b/src/main/java/com/zy/asrs/controller/ConsoleController.java index ef9a2c0..5e79f59 100644 --- a/src/main/java/com/zy/asrs/controller/ConsoleController.java +++ b/src/main/java/com/zy/asrs/controller/ConsoleController.java @@ -73,7 +73,7 @@ return R.error("鍙d护閿欒"); } } - Thread.sleep(2000L); + Thread.sleep(200L); SystemProperties.WCS_RUNNING_STATUS.set(param.getOperatorType()==1?Boolean.TRUE:Boolean.FALSE); return R.ok().add(Cools.add("status", SystemProperties.WCS_RUNNING_STATUS.get())); } @@ -112,12 +112,10 @@ // 鑾峰彇鍫嗗灈鏈轰俊鎭� CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); if (crnThread == null) { - log.error("{}鍙峰爢鍨涙満杩炴帴澶辫触", crn.getId()); continue; } CrnProtocol crnProtocol = crnThread.getCrnProtocol(); if (crnProtocol == null) { - log.error("{}鍙峰爢鍨涙満杩炴帴澶辫触", crn.getId()); continue; } CrnLatestDataVo vo = new CrnLatestDataVo(); @@ -126,17 +124,23 @@ // Short totalBay = locMastMapper.selectTotalBay(); vo.setOffset((double) new Random().nextInt(560)); // 鍫嗗灈鏈哄亸绉婚噺 - vo.setBay(crnProtocol.getBay()); // 褰撳墠鍒� + vo.setBay((short) (crnProtocol.getBay() - crn.getOffset())); // 褰撳墠鍒� /** * 鍫嗗灈鏈虹姸鎬佸垽鏂� */ - if (crnProtocol.getTaskNo()>0) { - WrkMast wrkMast = wrkMastService.selectById(crnProtocol.getTaskNo()); - if (wrkMast != null) { - vo.setCrnStatus(CrnStatusType.process(wrkMast.getIoType())); - } + if (crnProtocol.getAlarm() > 0) { + vo.setCrnStatus(CrnStatusType.MACHINE_ERROR); } else { - vo.setCrnStatus(crnProtocol.modeType.equals(CrnModeType.AUTO)? CrnStatusType.MACHINE_AUTO: CrnStatusType.MACHINE_UN_AUTO); + if (crnProtocol.getTaskNo()>0) { + WrkMast wrkMast = wrkMastService.selectById(crnProtocol.getTaskNo()); + if (wrkMast != null) { + vo.setCrnStatus(CrnStatusType.process(wrkMast.getIoType())); + } else { + vo.setCrnStatus(crnProtocol.modeType.equals(CrnModeType.AUTO)? CrnStatusType.MACHINE_AUTO: CrnStatusType.MACHINE_UN_AUTO); + } + } else { + vo.setCrnStatus(crnProtocol.modeType.equals(CrnModeType.AUTO)? CrnStatusType.MACHINE_AUTO: CrnStatusType.MACHINE_UN_AUTO); + } } vos.add(vo); @@ -150,6 +154,9 @@ List<BarcodeDataVo> list = new ArrayList<>(); for (Slave barcode : slaveProperties.getBarcode()) { BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcode.getId()); + if (null == barcodeThread) { + continue; + } BarcodeDataVo vo = new BarcodeDataVo(); vo.setBarcodeId(barcode.getId()); vo.setCodeValue(barcodeThread.getBarcode()); diff --git a/src/main/java/com/zy/asrs/controller/CrnController.java b/src/main/java/com/zy/asrs/controller/CrnController.java index de0fd9b..7829f11 100644 --- a/src/main/java/com/zy/asrs/controller/CrnController.java +++ b/src/main/java/com/zy/asrs/controller/CrnController.java @@ -1,6 +1,7 @@ package com.zy.asrs.controller; import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.annotations.ManagerAuth; import com.core.common.R; import com.core.exception.CoolException; @@ -10,12 +11,15 @@ import com.zy.asrs.domain.vo.CrnMsgTableVo; import com.zy.asrs.domain.vo.CrnStateTableVo; import com.zy.asrs.entity.BasCrnError; +import com.zy.asrs.entity.BasCrnp; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.mapper.BasCrnErrorMapper; +import com.zy.asrs.service.BasCrnpService; import com.zy.asrs.service.WrkMastService; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.OutputQueue; import com.zy.core.cache.SlaveConnection; +import com.zy.core.enums.CrnLiftPosType; import com.zy.core.enums.CrnModeType; import com.zy.core.enums.CrnTaskModeType; import com.zy.core.enums.SlaveType; @@ -49,6 +53,8 @@ private WrkMastService wrkMastService; @Autowired private BasCrnErrorMapper basCrnErrorMapper; + @Autowired + private BasCrnpService basCrnpService; @ManagerAuth(memo = "杩涜涓殑鍛戒护") @@ -82,21 +88,21 @@ @ManagerAuth(memo = "鍫嗗灈鏈轰俊鎭〃") public R crnStateTable(){ List<CrnStateTableVo> list = new ArrayList<>(); - for (CrnSlave crn : slaveProperties.getCrn()) { + List<BasCrnp> crnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().orderBy("crn_no")); + for (BasCrnp basCrnp : crnps) { + // 琛ㄦ牸琛� + CrnStateTableVo vo = new CrnStateTableVo(); + vo.setCrnNo(basCrnp.getCrnNo()); // 鍫嗗灈鏈哄彿 + list.add(vo); // 鑾峰彇鍫嗗灈鏈轰俊鎭� - CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); + CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, basCrnp.getCrnNo()); if (crnThread == null) { - log.error("{}鍙峰爢鍨涙満杩炴帴澶辫触", crn.getId()); continue; } CrnProtocol crnProtocol = crnThread.getCrnProtocol(); if (crnProtocol == null) { - log.error("{}鍙峰爢鍨涙満杩炴帴澶辫触", crn.getId()); continue; } - // 琛ㄦ牸琛� - CrnStateTableVo vo = new CrnStateTableVo(); - vo.setCrnNo(crn.getId()); // 鍫嗗灈鏈哄彿 vo.setWorkNo(crnProtocol.getTaskNo()); // 浠诲姟鍙� if (crnProtocol.getTaskNo()>0) { WrkMast wrkMast = wrkMastService.selectById(crnProtocol.getTaskNo()); @@ -107,14 +113,16 @@ vo.setStatusType(crnProtocol.modeType.equals(CrnModeType.AUTO)? CrnStatusType.MACHINE_AUTO.getDesc(): CrnStatusType.MACHINE_UN_AUTO.getDesc()); // 妯″紡鐘舵�� } vo.setStatus(crnProtocol.getStatusType().desc); // 鐘舵�� - vo.setWarn(""); // 鎶ヨ todo - vo.setLoading(crnProtocol.getLoaded()==1?"Y":"N"); // 鏈夌墿 + vo.setLoading(crnProtocol.getLoaded()==1?"鏈夌墿":"鏃犵墿"); // 鏈夌墿 vo.setBay(crnProtocol.getBay()); // 鍒� vo.setLev(crnProtocol.getLevel()); // 灞� - vo.setForkOffset(crnProtocol.getForkPosType().desc); // 璐у弶浣嶇疆 - vo.setLiftPos(crnProtocol.getLiftPosType().desc); // 杞借揣鍙颁綅缃� - vo.setWorkNo(crnProtocol.getAlarm1()); // 寮傚父鐮� - list.add(vo); + vo.setXOrigin(crnProtocol.getBay()==1?"鏄�":"鍚�"); // 璧拌鍘熺偣 + vo.setYOrigin(crnProtocol.getLevel()==1?"鏄�":"鍚�"); // 鍗囬檷鍘熺偣 + vo.setForkOffset(crnProtocol.getForkPosType().desc); // 璐у弶浣嶇疆 + vo.setXLocation(crnProtocol.getWalkPos() == 1?"鏄�":"鍚�"); // 璧拌瀹氫綅 + vo.setYLocation(crnProtocol.getLiftPosType().equals(CrnLiftPosType.NONE)?"鍚�":"鏄�"); // 鍗囬檷瀹氫綅 + vo.setStop(crnProtocol.getCrnTemp1().stop?"鏄�":"鍚�"); // 鎬ュ仠 + vo.setWarnCode(String.valueOf(crnProtocol.getAlarm())); // 寮傚父鐮� } return R.ok().add(list); } @@ -123,9 +131,14 @@ @ManagerAuth(memo = "鍫嗗灈鏈烘暟鎹〃") public R crnMsgTable(){ List<CrnMsgTableVo> list = new ArrayList<>(); - for (CrnSlave crn : slaveProperties.getCrn()) { + List<BasCrnp> crnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().orderBy("crn_no")); + for (BasCrnp basCrnp : crnps) { + // 琛ㄦ牸琛� + CrnMsgTableVo vo = new CrnMsgTableVo(); + vo.setCrnNo(basCrnp.getCrnNo()); // 鍫嗗灈鏈哄彿 + list.add(vo); // 鑾峰彇鍫嗗灈鏈轰俊鎭� - CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); + CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, basCrnp.getCrnNo()); if (crnThread == null) { continue; } @@ -133,13 +146,11 @@ if (crnProtocol == null) { continue; } - // 琛ㄦ牸琛� - CrnMsgTableVo vo = new CrnMsgTableVo(); - vo.setCrnNo(crn.getId()); // 鍫嗗灈鏈哄彿 + vo.setWorkNo(crnProtocol.getTaskNo()); // 浠诲姟鍙� - BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm1()); + BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm()); if (null != crnError) { - vo.setError(crnError.getErrorCode() + crnError.getErrName()); + vo.setError(crnError.getErrName()); } if (crnProtocol.getTaskNo()>0) { WrkMast wrkMast = wrkMastService.selectById(crnProtocol.getTaskNo()); @@ -153,8 +164,13 @@ } else { vo.setStatus(crnProtocol.modeType.equals(CrnModeType.AUTO)? CrnStatusType.MACHINE_AUTO.getDesc(): CrnStatusType.MACHINE_UN_AUTO.getDesc()); // 妯″紡鐘舵�� } - list.add(vo); - + vo.setXspeed(crnProtocol.getXSpeed()); // 璧拌閫熷害锛坢/min) + vo.setYspeed(crnProtocol.getYSpeed()); // 鍗囬檷閫熷害锛坢/min) + vo.setZspeed(crnProtocol.getZSpeed()); // 鍙夌墮閫熷害锛坢/min) + vo.setXdistance(crnProtocol.getXDistance()); // 璧拌璺濈(Km) + vo.setYdistance(crnProtocol.getYDistance()); // 鍗囬檷璺濈(Km) + vo.setXduration(crnProtocol.getXDuration()); // 璧拌鏃堕暱(H) + vo.setYduration(crnProtocol.getYDuration()); // 鍗囬檷鏃堕暱(H) } return R.ok().add(list); } @@ -392,15 +408,15 @@ throw new CoolException("鍫嗗灈鏈轰笉鍦ㄧ嚎"); } // 绌洪棽鍒ゆ柇 - if (crnProtocol.getStatusType().equals(com.zy.core.enums.CrnStatusType.IDLE) && crnProtocol.getTaskNo() == 0) { +// if (crnProtocol.getStatusType().equals(com.zy.core.enums.CrnStatusType.IDLE) && crnProtocol.getTaskNo() == 0) { if (MessageQueue.offer(SlaveType.Crn, crn.getId(), new Task(2, command))) { return true; } else { throw new CoolException("鍛戒护涓嬪彂澶辫触"); } - } else { - throw new CoolException("鍫嗗灈鏈轰笉鍦ㄧ┖闂茬姸鎬�"); - } +// } else { +// throw new CoolException("鍫嗗灈鏈轰笉鍦ㄧ┖闂茬姸鎬�"); +// } } } return false; diff --git a/src/main/java/com/zy/asrs/controller/SiteController.java b/src/main/java/com/zy/asrs/controller/SiteController.java index 0a5d393..30500f8 100644 --- a/src/main/java/com/zy/asrs/controller/SiteController.java +++ b/src/main/java/com/zy/asrs/controller/SiteController.java @@ -1,9 +1,12 @@ package com.zy.asrs.controller; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.annotations.ManagerAuth; import com.core.common.R; import com.zy.asrs.domain.vo.PlcErrorTableVo; import com.zy.asrs.domain.vo.SiteTableVo; +import com.zy.asrs.entity.BasDevp; +import com.zy.asrs.service.BasDevpService; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.OutputQueue; import com.zy.core.cache.SlaveConnection; @@ -17,6 +20,7 @@ import org.springframework.web.bind.annotation.*; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -30,31 +34,35 @@ @Autowired private SlaveProperties slaveProperties; + @Autowired + private BasDevpService basDevpService; @PostMapping("/table/site") @ManagerAuth(memo = "绔欑偣淇℃伅琛�") public R siteTable(){ List<SiteTableVo> list = new ArrayList<>(); - + // 鍐呭瓨鏁版嵁 + Map<Integer, StaProtocol> station = new HashMap<>(); for (DevpSlave devp : slaveProperties.getDevp()) { DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); - Map<Integer, StaProtocol> station = devpThread.getStation(); - for (Map.Entry<Integer, StaProtocol> entry : station.entrySet()) { - StaProtocol staProtocol = entry.getValue(); - SiteTableVo vo = new SiteTableVo(); - - vo.setDevNo(entry.getKey()); // 绔欑偣缂栧彿 - vo.setWorkNo(staProtocol.getWorkNo()); // 宸ヤ綔鍙� - vo.setAutoing(staProtocol.isAutoing()?"Y":"N"); // 鑷姩 - vo.setLoading(staProtocol.isLoading()?"Y":"N"); // 鏈夌墿 - vo.setInEnable(staProtocol.isInEnable()?"Y":"N"); // 鍙叆 - vo.setOutEnable(staProtocol.isOutEnable()?"Y":"N"); // 鍙嚭 - vo.setInreq1(staProtocol.isInreq1()?"Y":"N"); // 闇�姹�1 - vo.setEmptyMk(staProtocol.isEmptyMk()?"Y":"N"); // 绌烘澘淇″彿 - vo.setStaNo(staProtocol.getStaNo()); // 鐩爣绔� - - list.add(vo); - } + station.putAll(devpThread.getStation()); + } + // 鎸佷箙鏁版嵁 + List<BasDevp> basDevps = basDevpService.selectList(new EntityWrapper<BasDevp>().orderBy("dev_no")); + for (BasDevp devp : basDevps) { + SiteTableVo vo = new SiteTableVo(); + vo.setDevNo(devp.getDevNo()); // 绔欑偣缂栧彿 + list.add(vo); + StaProtocol staProtocol = station.get(devp.getDevNo()); + if (null == staProtocol) { continue; } + vo.setWorkNo(staProtocol.getWorkNo()); // 宸ヤ綔鍙� + vo.setAutoing(staProtocol.isAutoing()?"Y":"N"); // 鑷姩 + vo.setLoading(staProtocol.isLoading()?"Y":"N"); // 鏈夌墿 + vo.setInEnable(staProtocol.isInEnable()?"Y":"N"); // 鍙叆 + vo.setOutEnable(staProtocol.isOutEnable()?"Y":"N"); // 鍙嚭 + vo.setPakMk(staProtocol.isPakMk()?"Y":"N"); // 鍏ュ簱鏍囪 + vo.setEmptyMk(staProtocol.isEmptyMk()?"Y":"N"); // 绌烘澘淇″彿 + vo.setStaNo(staProtocol.getStaNo()); // 鐩爣绔� } return R.ok().add(list); } @@ -68,12 +76,15 @@ Map<Integer, StaProtocol> station = devpThread.getStation(); for(Map.Entry<Integer, StaProtocol> entry : station.entrySet()) { - PlcErrorTableVo vo = new PlcErrorTableVo(); - vo.setNo(entry.getKey()); // 搴忓彿 - - vo.setPlcDesc(""); // todo:luxiaotao plc閿欒鎻忚堪 - vo.setError(""); // todo:luxiaotao 寮傚父淇℃伅 - list.add(vo); + StaProtocol staProtocol = entry.getValue(); +// if (staProtocol) { +// PlcErrorTableVo vo = new PlcErrorTableVo(); +// vo.setNo(entry.getKey()); // 搴忓彿 +// +// vo.setPlcDesc(""); // todo:luxiaotao plc閿欒鎻忚堪 +// vo.setError(""); // todo:luxiaotao 寮傚父淇℃伅 +// list.add(vo); +// } } } @@ -123,7 +134,7 @@ vo.setLoading(staProtocol.isLoading()?"Y":"N"); // 鏈夌墿 vo.setInEnable(staProtocol.isInEnable()?"Y":"N"); // 鍙叆 vo.setOutEnable(staProtocol.isOutEnable()?"Y":"N"); // 鍙嚭 - vo.setInreq1(staProtocol.isInreq1()?"Y":"N"); // 闇�姹�1 + vo.setPakMk(staProtocol.isPakMk()?"Y":"N"); // 闇�姹�1 vo.setEmptyMk(staProtocol.isEmptyMk()?"Y":"N"); // 绌烘澘淇″彿 vo.setStaNo(staProtocol.getStaNo()); // 鐩爣绔� return R.ok().add(vo); diff --git a/src/main/java/com/zy/asrs/domain/enums/CrnStatusType.java b/src/main/java/com/zy/asrs/domain/enums/CrnStatusType.java index 138f91b..99b6d01 100644 --- a/src/main/java/com/zy/asrs/domain/enums/CrnStatusType.java +++ b/src/main/java/com/zy/asrs/domain/enums/CrnStatusType.java @@ -38,9 +38,9 @@ public static CrnStatusType process(Integer ioType){ if (ioType>100) { - return MACHINE_PAKIN; - } else if (ioType < 100 && ioType!=3 && ioType!=6 && ioType!=11) { return MACHINE_PAKOUT; + } else if (ioType < 100 && ioType!=3 && ioType!=6 && ioType!=11) { + return MACHINE_PAKIN; } else if (ioType == 3) { return MACHINE_SITE_MOVE; } else if (ioType == 11) { diff --git a/src/main/java/com/zy/asrs/domain/vo/CrnMsgTableVo.java b/src/main/java/com/zy/asrs/domain/vo/CrnMsgTableVo.java index 25e5472..ef124a3 100644 --- a/src/main/java/com/zy/asrs/domain/vo/CrnMsgTableVo.java +++ b/src/main/java/com/zy/asrs/domain/vo/CrnMsgTableVo.java @@ -1,5 +1,6 @@ package com.zy.asrs.domain.vo; +import com.zy.asrs.utils.Utils; import lombok.Data; /** @@ -12,22 +13,22 @@ private Integer crnNo; // 宸ヤ綔鍙� - private Short workNo; + private Short workNo = 0; // 鐘舵�� - private String status = ""; + private String status = "-"; // 婧愮珯 - private String sourceStaNo = ""; + private String sourceStaNo = "-"; // 鐩爣绔� - private String staNo = ""; + private String staNo = "-"; // 婧愬簱浣� - private String sourceLocNo = ""; + private String sourceLocNo = "-"; // 鐩爣搴撲綅 - private String locNo = ""; + private String locNo = "-"; // 寮傚父 private String error = ""; @@ -38,4 +39,52 @@ // 鍛戒护 private String command = ""; + // 璧拌閫熷害锛坢/min) + private Float xspeed = 0.0F; + + // 鍗囬檷閫熷害锛坢/min) + private Float yspeed = 0.0F; + + // 鍙夌墮閫熷害锛坢/min) + private Float zspeed = 0.0F; + + // 璧拌璺濈(Km) + private Float xdistance = 0.0F; + + // 鍗囬檷璺濈(Km) + private Float ydistance = 0.0F; + + // 璧拌鏃堕暱(H) + private Float xduration = 0.0F; + + // 鍗囬檷鏃堕暱(H) + private Float yduration = 0.0F; + + public void setXspeed(Float xspeed) { + this.xspeed = Utils.scale(xspeed); + } + + public void setYspeed(Float yspeed) { + this.yspeed = Utils.scale(yspeed); + } + + public void setZspeed(Float zspeed) { + this.zspeed = Utils.scale(zspeed); + } + + public void setXdistance(Float xdistance) { + this.xdistance = Utils.scale(xdistance); + } + + public void setYdistance(Float ydistance) { + this.ydistance = Utils.scale(ydistance); + } + + public void setXduration(Float xduration) { + this.xduration = Utils.scale(xduration); + } + + public void setYduration(Float yduration) { + this.yduration = Utils.scale(yduration); + } } diff --git a/src/main/java/com/zy/asrs/domain/vo/CrnStateTableVo.java b/src/main/java/com/zy/asrs/domain/vo/CrnStateTableVo.java index e2cd14b..e1e514f 100644 --- a/src/main/java/com/zy/asrs/domain/vo/CrnStateTableVo.java +++ b/src/main/java/com/zy/asrs/domain/vo/CrnStateTableVo.java @@ -12,13 +12,10 @@ private Integer crnNo; // 妯″紡 - private String statusType; - - // 鎶ヨ - private String warn; + private String statusType = "-"; // 鏈夌墿 - private String loading; + private String loading = "-"; // 鍒� private Short bay; @@ -26,29 +23,43 @@ // 灞� private Short lev; + // 璧拌鍘熺偣 + private String xOrigin = "-"; + + // 鍗囬檷鍘熺偣 + private String yOrigin = "-"; + + // 璧拌瀹氫綅 + private String xLocation = "-"; + + // 鍗囬檷瀹氫綅 + private String yLocation = "-"; + // 璐у弶浣嶇疆 - private String forkOffset; + private String forkOffset = "-"; // 杞借揣鍙颁綅缃� - private String liftPos; + private String liftPos = "-"; + + // 鎬ュ仠 + private String stop = "-"; // 鍒楀潗鏍� - private String bayCoor; + private String bayCoor = "-"; // 灞傚潗鏍� - private String levCoor; + private String levCoor = "-"; // 瀹屾垚 - private String complete; + private String complete = "-"; // 浠诲姟鍙� - private Short workNo; + private Short workNo = 0; // 鐘舵�� - private String status; + private String status = "-"; // 寮傚父鐮� - private String warnCode; - + private String warnCode = "-"; } diff --git a/src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java b/src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java index 54cde54..aa3f0d3 100644 --- a/src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java +++ b/src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java @@ -12,27 +12,27 @@ private Integer devNo; // 宸ヤ綔鍙� - private Short workNo; + private Short workNo = 0; // 鑷姩 - private String autoing; + private String autoing = "-"; // 鏈夌墿 - private String loading; + private String loading = "-"; // 鍙叆 - private String inEnable; + private String inEnable = "-"; // 鍙嚭 - private String outEnable; + private String outEnable = "-"; // 闇�姹�1 - private String inreq1; + private String pakMk = "-"; // 绌烘澘淇″彿 - private String emptyMk; + private String emptyMk = "-"; // 鐩爣绔� - private Short staNo; + private Short staNo = 0; } diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java index 81bf173..8e26d07 100644 --- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java +++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java @@ -18,31 +18,33 @@ // wcs --------------------------------------------- // 鍏ュ簱绗竴姝ワ紝鎵爜浠幏鍙栨潯鐮佷俊鎭椂鏌ヨ - @Select("select top 1 * from asr_wrk_mast where source_sta_no=#{sourceStaNo} and wrk_sts=2 and barcode=#{barcode} and (io_type=1 or io_type=10) order by io_pri desc,io_time,wrk_no ASC") +// @Select("select top 1 * from asr_wrk_mast where source_sta_no=#{sourceStaNo} and wrk_sts=2 and barcode=#{barcode} and (io_type=1 or io_type=10) order by io_pri desc,io_time,wrk_no ASC") WrkMast selectPakInStep1(@Param("sourceStaNo")Integer sourceStaNo, @Param("barcode")String barcode); + WrkMast selectPakInStep11(@Param("sourceStaNo")Integer sourceStaNo); + // 鍏ュ簱绗簩姝ワ紝褰撴墭鐩樼墿鏂欏湪鍫嗗灈鏈哄叆搴撶珯鏃舵椂鏌ヨ - @Select("select top 1 * from dbo.asr_wrk_mast where wrk_sts=2 and crn_no=#{crnNo} and wrk_no=#{workNo} and (io_type=1 or io_type=10 or io_type=53 or io_type=54 or io_type=57) order by io_pri desc,io_time,wrk_no ASC") +// @Select("select top 1 * from dbo.asr_wrk_mast where wrk_sts=2 and crn_no=#{crnNo} and wrk_no=#{workNo} and (io_type=1 or io_type=10 or io_type=53 or io_type=54 or io_type=57) order by io_pri desc,io_time,wrk_no ASC") WrkMast selectPakInStep2(@Param("crnNo")Integer crnNo, @Param("workNo")Integer workNo); // 鍏ュ簱绗笁姝ワ紝褰撳爢鍨涙満鎶婅揣鏀惧叆搴撲綅鏃� - @Select("select top 1 from dbo.asr_wrk_mast where wrk_no=#{workNo}") +// @Select("select top 1 from dbo.asr_wrk_mast where wrk_no=#{workNo}") WrkMast selectPakInStep3(@Param("workNo")Integer workNo); // 鎷f枡鍐嶅叆搴撴椂锛岀珯鐐规湁鐗╀笖闇�姹傛椂鏌ヨ - @Select("select top 1 * from asr_wrk_mast where wrk_no=#{workNo} and wrk_sts=14 and (io_type=103 or io_type=107 or io_type=104)") +// @Select("select top 1 * from asr_wrk_mast where wrk_no=#{workNo} and wrk_sts=14 and (io_type=103 or io_type=107 or io_type=104)") WrkMast selectPickStep(@Param("workNo")Integer workNo); // 鍑哄簱绗竴姝ワ紝浠庡簱浣嶅埌鍫嗗灈鏈哄嚭搴撶珯 - @Select("select top 1 * from dbo.asr_wrk_mast where crn_no=#{crnNo} and wrk_sts=11 and io_type>100 order by io_pri desc,io_time,wrk_no asc") +// @Select("select top 1 * from dbo.asr_wrk_mast where crn_no=#{crnNo} and wrk_sts=11 and io_type>100 order by io_pri desc,io_time,wrk_no asc") WrkMast selectPakOutStep1(@Param("crnNo")Integer crnNO); // 鍑哄簱绗簩姝ワ紝浠庡爢鍨涙満鍑哄簱绔欏埌鐩爣鍑哄簱绔欙紝鍫嗗灈鏈哄嚭搴撶珯鏈夌墿鏃舵墽琛� - @Select("select top 1 * from dbo.asr_wrk_mast where source_sta_no=#{sourceStaNo} and wrk_sts=12 and io_type>100 order by io_pri desc,io_time desc,wrk_no ASC") +// @Select("select top 1 * from dbo.asr_wrk_mast where source_sta_no=#{sourceStaNo} and wrk_sts=12 and io_type>100 order by io_pri desc,io_time desc,wrk_no ASC") WrkMast selectPakOutStep2(@Param("sourceStaNo")Integer sourceStaNo); // 搴撲綅绉昏浆宸ヤ綔妗o紝鍦ㄨ繘琛屼竴娆″叆鍑哄簱浣滀笟鍚庣揣璺熷簱浣嶇Щ杞� - @Select("select top 1 * from dbo.asr_wrk_mast where wrk_sts=11 and (io_type=11 or io_type=110) and crn_no=#{crnNo} order by io_time,wrk_no") +// @Select("select top 1 * from dbo.asr_wrk_mast where wrk_sts=11 and (io_type=11 or io_type=110) and crn_no=#{crnNo} order by io_time,wrk_no") WrkMast selectLocMove(@Param("crnNo")Integer crnNo); // work log ------------------------------------------------------- diff --git a/src/main/java/com/zy/asrs/service/WrkDetlService.java b/src/main/java/com/zy/asrs/service/WrkDetlService.java index 92b410d..7e93d07 100644 --- a/src/main/java/com/zy/asrs/service/WrkDetlService.java +++ b/src/main/java/com/zy/asrs/service/WrkDetlService.java @@ -8,7 +8,8 @@ public interface WrkDetlService extends IService<WrkDetl> { - void createWorkDetail(Integer workNo, List<WaitPakin> waitPakins, String barcode); + List<WrkDetl> findByWorkNo(Integer workNo); + } diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java index 1b76bc0..dc5ff4a 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -9,20 +9,26 @@ import com.zy.asrs.mapper.WaitPakinMapper; import com.zy.asrs.mapper.WrkMastMapper; import com.zy.asrs.service.*; +import com.zy.common.model.MatDto; import com.zy.common.model.StartupDto; +import com.zy.common.service.CommonService; +import com.zy.common.utils.CollectionUtils; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.*; import com.zy.core.model.CrnSlave; import com.zy.core.model.DevpSlave; +import com.zy.core.model.LedSlave; import com.zy.core.model.Task; import com.zy.core.model.command.CrnCommand; +import com.zy.core.model.command.LedCommand; import com.zy.core.model.protocol.CrnProtocol; import com.zy.core.model.protocol.StaProtocol; import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.BarcodeThread; import com.zy.core.thread.CrnThread; import com.zy.core.thread.DevpThread; +import com.zy.core.thread.LedThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; @@ -30,8 +36,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -79,9 +84,12 @@ // 鑾峰彇鍏ュ簱绔欎俊鎭� DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); + if (staProtocol == null) { + continue; + } // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 if (staProtocol.isAutoing() && staProtocol.isLoading() - && !staProtocol.isEmptyMk() && staProtocol.isInreq1() && staProtocol.getWorkNo()==0 + && !staProtocol.isEmptyMk() && staProtocol.getWorkNo() == 0 && staProtocol.isPakMk() && !Cools.isEmpty(barcode)) { // 鍒ゆ柇閲嶅宸ヤ綔妗� WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode); @@ -147,7 +155,6 @@ staProtocol.setWorkNo((short) workNo); staProtocol.setStaNo(startupDto.getStaNo().shortValue()); staProtocol.setPakMk(false); - staProtocol.setInreq1(false); boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); if (!result) { throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); @@ -161,6 +168,55 @@ } + /** + * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 1 ==>> 2 + */ + @Async + public void generateStoreWrkFile2() { + // 鏍规嵁杈撻�佺嚎plc閬嶅巻 + for (DevpSlave devp : slaveProperties.getDevp()) { + // 閬嶅巻鍏ュ簱鍙� + for (DevpSlave.Sta inSta : devp.getInSta()) { + // 鑾峰彇鍏ュ簱绔欎俊鎭� + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); + if (staProtocol == null) { continue; } + // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 + if (staProtocol.isAutoing() && staProtocol.isLoading() + && !staProtocol.isEmptyMk() && staProtocol.getWorkNo() == 0 + && staProtocol.isPakMk()) { + // 鍒ゆ柇閲嶅宸ヤ綔妗� + WrkMast wrkMast = wrkMastMapper.selectPakInStep11(inSta.getStaNo()); + if (wrkMast == null) { + continue; + } + + // 鏇存柊宸ヤ綔涓绘。 + wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細2.璁惧涓婅蛋 + wrkMast.setModiTime(new Date()); + Integer update = wrkMastMapper.updateById(wrkMast); + if (update == 0) { + throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�"); + } + + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + + // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 + staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); + staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); + staProtocol.setPakMk(false); + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + if (!result) { + throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); + } + + } + + + } + } + + } /** * 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱 @@ -173,8 +229,8 @@ // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭� DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo()); - - if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInreq1() + if (staProtocol == null) { continue; } + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.getWorkNo() > 0 && staProtocol.isPakMk()){ WrkMast wrkMast = wrkMastMapper.selectPickStep(staProtocol.getWorkNo().intValue()); if (wrkMast == null) { @@ -227,7 +283,6 @@ staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); staProtocol.setPakMk(false); - staProtocol.setInreq1(false); boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); if (!result) { throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); @@ -245,12 +300,13 @@ */ @Async public void crnStnToOutStn() { - for (DevpSlave devp : slaveProperties.getDevp()) { - // 閬嶅巻鎷f枡鍏ュ簱鍙� - for (DevpSlave.Sta outSta : devp.getOutSta()) { + for (CrnSlave crnSlave : slaveProperties.getCrn()) { + // 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯 + for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) { // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); - StaProtocol staProtocol = devpThread.getStation().get(outSta.getStaNo()); + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); + if (staProtocol == null) { continue; } if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == null)) { // 鏌ヨ宸ヤ綔妗� WrkMast wrkMast = wrkMastMapper.selectPakOutStep2(staProtocol.getSiteId()); @@ -268,32 +324,32 @@ // 绉诲姩涓� continue; } - // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触 todo:luxiaotao + // 鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁� if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(wrkMast.getWrkNo().shortValue()) - && crnProtocol.statusType == CrnStatusType.IDLE + && crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.forkPosType == CrnForkPosType.HOME) { + + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + + // 1.澶嶄綅鍫嗗灈鏈� + crnThread.setResetFlag(true); + + // 2.涓嬪彂绔欑偣淇℃伅 + staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); + staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); + if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) { + throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); + } + + // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触 wrkMast.setWrkSts(14L); wrkMast.setCrnEndTime(new Date()); if (wrkMastMapper.updateById(wrkMast) == 0) { throw new CoolException("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛屽伐浣滃彿"+wrkMast.getWrkNo()); } + } - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - - // 1.澶嶄綅鍫嗗灈鏈� 鏇存柊鍫嗗灈鏈轰俊鎭� 涓� 涓嬪彂plc鍛戒护 todo:luxiaotao - crnProtocol.setStatus(CrnStatusType.IDLE); - crnProtocol.setTaskNo((short)0); - if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(4, crnProtocol))) { - throw new CoolException("鏇存柊鍫嗗灈鏈轰俊鎭け璐�"); - } - - // 2.涓嬪彂绔欑偣淇℃伅 - staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); - staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); - if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) { - throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); - } } } } @@ -308,6 +364,7 @@ // 鑾峰彇鍫嗗灈鏈轰俊鎭� CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); CrnProtocol crnProtocol = crnThread.getCrnProtocol(); + if (crnProtocol == null) { continue; } BasCrnp basCrnp = basCrnpService.selectById(crn.getId()); if (basCrnp == null) { log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId()); @@ -318,26 +375,26 @@ // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡 if (crnProtocol.getLastIo().equals("I")) { if (basCrnp.getInEnable().equals("Y")) { - this.crnStnToLoc(crn); // 鍏ュ簱 + this.crnStnToLoc(crn, crnProtocol); // 鍏ュ簱 crnProtocol.setLastIo("O"); } else if (basCrnp.getOutEnable().equals("Y")) { - this.locToCrnStn(crn); // 鍑哄簱 + this.locToCrnStn(crn, crnProtocol); // 鍑哄簱 crnProtocol.setLastIo("I"); } } // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡 else if (crnProtocol.getLastIo().equals("O")) { if (basCrnp.getOutEnable().equals("Y")) { - this.locToCrnStn(crn); // 鍑哄簱 + this.locToCrnStn(crn, crnProtocol); // 鍑哄簱 crnProtocol.setLastIo("I"); } else if (basCrnp.getInEnable().equals("Y")) { - this.crnStnToLoc(crn); // 鍏ュ簱 + this.crnStnToLoc(crn, crnProtocol); // 鍏ュ簱 crnProtocol.setLastIo("O"); } } } // 搴撲綅绉昏浆 - this.locToLoc(crn); + this.locToLoc(crn, crnProtocol); } } @@ -345,19 +402,21 @@ * 鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鍒板簱浣� */ @Async - public void crnStnToLoc(CrnSlave slave){ + public void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol){ for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) { boolean flag = false; // 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅 DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); + if (staProtocol == null) { continue; } // 鏌ヨ绔欑偣璇︾粏淇℃伅 BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); if (staDetl == null) { log.error("鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo()); continue; } - if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staDetl.getCanining().equals("Y")) { + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 + && staDetl.getCanining()!=null && staDetl.getCanining().equals("Y")) { flag = true; } if (!flag) { @@ -377,6 +436,11 @@ } if (!locMast.getLocSts().equals("S") && !locMast.getLocSts().equals("Q")) { log.error("鍏ュ簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), locMast.getLocSts()); + continue; + } + + // 鍫嗗灈鏈烘帶鍒惰繃婊� + if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { continue; } @@ -411,7 +475,7 @@ * 鍑哄簱 ===>> 搴撲綅鍒板爢鍨涙満绔� */ @Async - public void locToCrnStn(CrnSlave slave){ + public void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){ for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) { // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗� WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId()); @@ -432,6 +496,7 @@ // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); + if (staProtocol == null) { continue; } // 鏌ヨ绔欑偣璇︾粏淇℃伅 BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); if (staDetl == null) { @@ -439,9 +504,14 @@ continue; } // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵�� - if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting().equals("Y") + if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() !=null && staDetl.getCanouting().equals("Y") && staProtocol.getWorkNo() == 0) { // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + + // 鍫嗗灈鏈烘帶鍒惰繃婊� + if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { + continue; + } // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔� CrnCommand crnCommand = new CrnCommand(); @@ -475,7 +545,7 @@ * 搴撲綅绉昏浆 */ @Async - public void locToLoc(CrnSlave slave){ + public void locToLoc(CrnSlave slave, CrnProtocol crnProtocol){ // 鑾峰彇宸ヤ綔妗d俊鎭� WrkMast wrkMast = wrkMastMapper.selectLocMove(slave.getId()); if (null == wrkMast) { @@ -502,6 +572,12 @@ if (!basCrnp.getInEnable().equals("Y") && !basCrnp.getOutEnable().equals("Y")) { return; } + + // 鍫嗗灈鏈烘帶鍒惰繃婊� + if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { + return; + } + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- CrnCommand crnCommand = new CrnCommand(); crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� @@ -516,7 +592,17 @@ crnCommand.setDestinationPosZ(sta.getLev1().shortValue()); // 鐩爣搴撲綅灞� if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); + } else { + // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� + Date now = new Date(); + wrkMast.setWrkSts(12L); + wrkMast.setCrnStrTime(now); + wrkMast.setModiTime(now); + if (wrkMastMapper.updateById(wrkMast) == 0) { + log.error("銆愬簱浣嶇Щ杞�� 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } } + } /** @@ -528,6 +614,7 @@ // 鑾峰彇鍫嗗灈鏈轰俊鎭� CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); CrnProtocol crnProtocol = crnThread.getCrnProtocol(); + if (crnProtocol == null) { continue; } // 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1 if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) { // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。 @@ -540,25 +627,25 @@ if (wrkMast.getWrkSts() == 3 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)){ wrkMast.setWrkSts(4L); // 鍑哄簱 + 鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓細12.鍚婅溅鍑哄簱涓� ==> 14.鍑哄簱瀹屾垚 - } else if (wrkMast.getWrkSts() == 12) { - wrkMast.setWrkSts(14L); + // todo:luxiaotao +// } else if (wrkMast.getWrkSts() == 12) { +// wrkMast.setWrkSts(14L); + } else { + continue; } Date now = new Date(); wrkMast.setCrnEndTime(now); wrkMast.setModiTime(now); // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 if (wrkMastMapper.updateById(wrkMast) > 0) { - // 鍛戒护涓嬪彂鍖� ------------------------------------------------------------------------- // 鍫嗗灈鏈哄浣� - if (!MessageQueue.offer(SlaveType.Crn, crn.getId(), new Task(3, new CrnCommand()))) { - log.error("鍫嗗灈鏈哄浣嶅懡浠や笅鍙戝け璐ワ紝宸ヤ綔鍙�={}", wrkMast.getWrkNo()); - } + crnThread.setResetFlag(true); } // 瀹屾垚閫氱煡妗� - if (wrkMastMapper.updateWaitPakInStep2(wrkMast.getBarcode()) == 0) { - log.error("鍏ュ簱閫氱煡妗d慨鏀圭粨鏉熺姸鎬佸け璐ワ紝workNo=[{}]", wrkMast.getWrkNo()); - } +// if (wrkMastMapper.updateWaitPakInStep2(wrkMast.getBarcode()) == 0) { +// log.error("鍏ュ簱閫氱煡妗d慨鏀圭粨鏉熺姸鎬佸け璐ワ紝workNo=[{}]", wrkMast.getWrkNo()); +// } } } @@ -585,13 +672,14 @@ // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭� DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); StaProtocol staProtocol = devpThread.getStation().get(emptyInSta.getStaNo()); + if (staProtocol == null) { continue; } // 绔欑偣鏉′欢鍒ゆ柇 - if (staProtocol.isAutoing() && staProtocol.isLoading() && !staProtocol.isInreq1() + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isEmptyMk() && staProtocol.getWorkNo() == 0 && staProtocol.isPakMk()) { // 宸ヤ綔鍙� int workNo = commonService.getWorkNo(0); // 妫�绱㈠簱浣� - StartupDto startupDto = commonService.getLocNo(1, 1, emptyInSta.getStaNo(), null); + StartupDto startupDto = commonService.getLocNo(1, 10, emptyInSta.getStaNo(), null); // 鎻掑叆宸ヤ綔涓绘。 WrkMast wrkMast = new WrkMast(); @@ -630,12 +718,12 @@ staProtocol.setWorkNo((short) workNo); staProtocol.setStaNo(startupDto.getStaNo().shortValue()); staProtocol.setPakMk(false); - staProtocol.setInreq1(false); boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); if (!result) { throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); } + } @@ -643,4 +731,63 @@ } } + /** + * 鍑哄簱 ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣� + */ + @Async + public void ledExecute() { + for (LedSlave led : slaveProperties.getLed()) { + // 鑾峰彇杈撻�佺嚎plc绾跨▼ + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId()); + // 鍛戒护闆嗗悎 + List<LedCommand> commands = new ArrayList<>(); + // 宸ヤ綔妗i泦鍚� + List<WrkMast> wrkMasts = new ArrayList<>(); + for (Integer staNo : led.getStaArr()) { + // 鑾峰彇鍙夎溅绔欑偣 + StaProtocol staProtocol = devpThread.getStation().get(staNo); + if (null == staProtocol || null == staProtocol.getWorkNo() || 0 == staProtocol.getWorkNo()) { continue; } + // 鑾峰彇宸ヤ綔妗f暟鎹� + WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo()); + if (wrkMast.getWrkSts() == 14L || wrkMast.getWrkSts() == 15L) { + wrkMasts.add(wrkMast); + // 娣诲姞鍛戒护 + List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo()); + LedCommand ledCommand = new LedCommand(); + ledCommand.setWorkNo(wrkMast.getWrkNo()); + ledCommand.setSourceLocNo(wrkMast.getSourceLocNo()); + ledCommand.setStaNo(wrkMast.getStaNo()); + wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMatnr(), wrkDetl.getAnfme()))); + commands.add(ledCommand); + } + } + Set<Integer> workNos = wrkMasts.stream().map(WrkMast::getWrkNo).collect(Collectors.toSet()); + // 鑾峰彇LED绾跨▼ + LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId()); + // 鐩稿悓宸ヤ綔鍙烽泦鍚堝垯杩囨护 + if (CollectionUtils.equals(ledThread.getWorkNos(), workNos)) { + continue; + } + // 鍛戒护涓嬪彂 ------------------------------------------------------------------------------- + if (!commands.isEmpty()) { + if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) { + continue; + } + } + + // 淇敼涓绘。led鏍囪 + for (WrkMast wrkMast : wrkMasts) { + wrkMast.setOveMk("Y"); + wrkMast.setModiTime(new Date()); + if (wrkMastMapper.updateById(wrkMast) == 0) { + throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�"); + } + } + + // 鏇存柊绾跨▼褰撳墠宸ヤ綔鍙烽泦鍚� + ledThread.setWorkNos(workNos); + + } + } + } diff --git a/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java index 18af108..e9282ab 100644 --- a/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java @@ -1,5 +1,6 @@ package com.zy.asrs.service.impl; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.core.common.Cools; import com.core.exception.CoolException; @@ -49,4 +50,9 @@ } } + @Override + public List<WrkDetl> findByWorkNo(Integer workNo) { + return this.baseMapper.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo)); + } + } diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java new file mode 100644 index 0000000..cc7426b --- /dev/null +++ b/src/main/java/com/zy/asrs/utils/Utils.java @@ -0,0 +1,22 @@ +package com.zy.asrs.utils; + +import com.core.common.Arith; + +import java.math.BigDecimal; +import java.text.DecimalFormat; + +/** + * Created by vincent on 2020/8/27 + */ +public class Utils { + + private static final DecimalFormat fmt = new DecimalFormat("##0.00"); + + public static float scale(Float f){ + if (f == null || f == 0f || Float.isNaN(f)) { + return 0f; + } + return (float) Arith.multiplys(2, f, 1); + } + +} diff --git a/src/main/java/com/zy/common/model/MatDto.java b/src/main/java/com/zy/common/model/MatDto.java index e8e488b..e5b625b 100644 --- a/src/main/java/com/zy/common/model/MatDto.java +++ b/src/main/java/com/zy/common/model/MatDto.java @@ -11,7 +11,18 @@ // 鐗╂枡缂栧彿 private String matNo; + // 鐗╂枡鍚嶇О + private String maknx; + // 鐗╂枡鏁伴噺 private Double count; + public MatDto() { + } + + public MatDto(String matNo, String maknx, Double count) { + this.matNo = matNo; + this.maknx = maknx; + this.count = count; + } } diff --git a/src/main/java/com/zy/asrs/service/impl/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java similarity index 71% rename from src/main/java/com/zy/asrs/service/impl/CommonService.java rename to src/main/java/com/zy/common/service/CommonService.java index 48ab58c..431da27 100644 --- a/src/main/java/com/zy/asrs/service/impl/CommonService.java +++ b/src/main/java/com/zy/common/service/CommonService.java @@ -1,4 +1,4 @@ -package com.zy.asrs.service.impl; +package com.zy.common.service; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; @@ -89,12 +89,19 @@ * @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿 */ public StartupDto getLocNo(Integer whsType, Integer staDescId, Integer sourceStaNo, List<String> matNos) { + if (sourceStaNo == 3) { + whsType = 1; + } else if (sourceStaNo == 7) { + whsType = 2; + } else { + throw new CoolException("鏃犳晥鍏ュ簱绔�"); + } StartupDto startupDto = new StartupDto(); RowLastno rowLastno = rowLastnoService.selectById(whsType); if (Cools.isEmpty(rowLastno)) { throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�"); } - if (rowLastno.getWhsType() == 1){ + if (whsType == 1 || whsType == 2){ int curRow = rowLastno.getCurrentRow(); int sRow = rowLastno.getsRow(); int eRow = rowLastno.geteRow(); @@ -106,48 +113,54 @@ LocMast locMast = null; // 鍚屼竴澶╁悓瑙勬牸璐х墿闈犺繎鎽嗘硶瑙勫垯 - if (!Cools.isEmpty(matNos)) { - List<String> locNos = locDetlService.getSameDetlToday(matNos.get(0)); - for (String locNo : locNos) { - // 鑾峰彇鎺� - int row = Integer.parseInt(locNo.substring(0, 2)); - // 鍒ゆ柇鏄惁涓烘繁搴撲綅 - double remainder = Arith.remainder(row, rowCount / crn_qty); - int targetRow; - if (remainder == 1) { - // 寰楀埌褰撳墠搴撲綅鐨勫鍥村簱浣� - targetRow = row + 1; - } else if (remainder == 0) { - // 寰楀埌褰撳墠搴撲綅鐨勫唴鍥村簱浣� - targetRow = row - 1; - } else { - continue; - } - String targetLocNo = zerofill(String.valueOf(targetRow), 2)+locNo.substring(2); - // 妫�娴嬬洰鏍囧簱浣嶆槸鍚︿负绌哄簱浣� - LocMast targetLocMast = locMastService.selectById(targetLocNo); - if (targetLocMast != null && targetLocMast.getLocSts().equals("O")) { - locMast = targetLocMast; - crnNo = locMast.getCrnNo(); - break; - } - } - } +// if (!Cools.isEmpty(matNos)) { +// List<String> locNos = locDetlService.getSameDetlToday(matNos.get(0)); +// for (String locNo : locNos) { +// // 鑾峰彇鎺� +// int row = Integer.parseInt(locNo.substring(0, 2)); +// // 鍒ゆ柇鏄惁涓烘繁搴撲綅 +// double remainder = Arith.remainder(row, rowCount / crn_qty); +// int targetRow; +// if (remainder == 1) { +// // 寰楀埌褰撳墠搴撲綅鐨勫鍥村簱浣� +// targetRow = row + 1; +// } else if (remainder == 0) { +// // 寰楀埌褰撳墠搴撲綅鐨勫唴鍥村簱浣� +// targetRow = row - 1; +// } else { +// continue; +// } +// String targetLocNo = zerofill(String.valueOf(targetRow), 2)+locNo.substring(2); +// // 妫�娴嬬洰鏍囧簱浣嶆槸鍚︿负绌哄簱浣� +// LocMast targetLocMast = locMastService.selectById(targetLocNo); +// if (targetLocMast != null && targetLocMast.getLocSts().equals("O")) { +// locMast = targetLocMast; +// crnNo = locMast.getCrnNo(); +// break; +// } +// } +// } // 濡傛灉娌℃湁鐩歌繎鐗╂枡锛屽垯鎸夎鍒欒疆璇㈣揣鏋� if (null == locMast) { - // 鑾峰彇鐩爣绔欐墍鍦ㄨ揣鏋舵帓鍙� - Shelves shelves = new Shelves(rowCount, crn_qty); - curRow = shelves.start(curRow); - if (curRow < 0) { - throw new CoolException("妫�绱㈠簱浣嶅け璐ワ紝璇疯仈绯荤鐞嗗憳"); + // 鑾峰彇鐩爣绔欐墍鍦ㄨ揣鏋舵帓鍙� todo:luxiaotao + if (curRow == sRow) { + curRow = eRow; + } else { + curRow = sRow; } - for (List<Integer> node : shelves.nodes){ - if (node.contains(curRow)) { - crnNo = shelves.nodes.indexOf(node) + 1; - break; - } - } + crnNo = whsType; +// Shelves shelves = new Shelves(rowCount, crn_qty); +// curRow = shelves.start(curRow); +// if (curRow < 0) { +// throw new CoolException("妫�绱㈠簱浣嶅け璐ワ紝璇疯仈绯荤鐞嗗憳"); +// } +// for (List<Integer> node : shelves.nodes){ +// if (node.contains(curRow)) { +// crnNo = shelves.nodes.indexOf(node) + 1; +// break; +// } +// } } basCrnpService.checkSiteStatus(crnNo); @@ -162,7 +175,7 @@ } BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn()); int inQty = staNo.getInQty()==null?0:staNo.getInQty(); - if (staNo.getInEnable().equals("Y") && staNo.getAutoing().equals("Y") && inQty<2) { + if (staNo.getAutoing().equals("Y") && inQty<2) { // 鏌ユ壘搴撲綅 if (locMast == null) { locMast = locMastService.queryFreeLocMast(curRow); diff --git a/src/main/java/com/zy/common/utils/CollectionUtils.java b/src/main/java/com/zy/common/utils/CollectionUtils.java new file mode 100644 index 0000000..4f0fe4c --- /dev/null +++ b/src/main/java/com/zy/common/utils/CollectionUtils.java @@ -0,0 +1,20 @@ +package com.zy.common.utils; + +import java.util.Set; + +/** + * Created by vincent on 2020/9/3 + */ +public class CollectionUtils { + + public static boolean equals(Set<?> set1, Set<?> set2) { + if(set1 == null || set2 ==null){ + return false; + } + if(set1.size()!=set2.size()){ + return false; + } + return set1.containsAll(set2); + } + +} diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java index 9a4fdff..ffc21dc 100644 --- a/src/main/java/com/zy/core/MainProcess.java +++ b/src/main/java/com/zy/core/MainProcess.java @@ -37,10 +37,11 @@ // 闂撮殧 Thread.sleep(1500); - log.info("WCS 宸ヤ綔涓� ....................."); +// log.info("WCS 宸ヤ綔涓� ....................."); // 鍏ュ簱 ===>> 鍏ュ簱绔欏埌鍫嗗灈鏈虹珯锛屾牴鎹潯鐮佹壂鎻忕敓鎴愬叆搴撳伐浣滄。 - mainService.generateStoreWrkFile(); +// mainService.generateStoreWrkFile(); + mainService.generateStoreWrkFile2(); // 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱 mainService.stnToCrnStnPick(); // 鍑哄簱 ===>> 鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯 @@ -53,6 +54,8 @@ mainService.recCrnErr(); // 鍏ュ簱 ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐� mainService.storeEmptyPlt(); + // 鍑哄簱 ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣� + mainService.ledExecute(); } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/java/com/zy/core/ServerBootstrap.java b/src/main/java/com/zy/core/ServerBootstrap.java index dd1f8dd..4023026 100644 --- a/src/main/java/com/zy/core/ServerBootstrap.java +++ b/src/main/java/com/zy/core/ServerBootstrap.java @@ -5,14 +5,17 @@ import com.zy.core.enums.SlaveType; import com.zy.core.model.CrnSlave; import com.zy.core.model.DevpSlave; +import com.zy.core.model.LedSlave; import com.zy.core.properties.SlaveProperties; -import com.zy.core.thread.BarcodeThread; import com.zy.core.thread.CrnThread; import com.zy.core.thread.DevpThread; +import com.zy.core.thread.LedThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; +import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; /** @@ -28,14 +31,17 @@ private MainProcess mainProcess; -// @PostConstruct + @PostConstruct + @Async public void init(){ + log.info("鏍稿績鎺у埗灞傚紑濮嬪垵濮嬪寲..............................................."); // 鍒濆鍖栨秷鎭槦鍒� initMq(); // 鍒濆鍖栦笅浣嶆満绾跨▼ initThread(); // 寮�濮嬩富娴佺▼杩涚▼ mainProcess.start(); + log.info("鏍稿績鎺у埗灞傚凡鍚姩..............................................."); } private void initMq(){ @@ -63,6 +69,7 @@ private void initThread(){ // 鍒濆鍖栧爢鍨涙満绾跨▼ + log.info("鍒濆鍖栧爢鍨涙満绾跨▼..................................................."); for (CrnSlave crn : slaveProperties.getCrn()) { CrnThread crnThread = new CrnThread(crn); new Thread(crnThread).start(); @@ -70,18 +77,27 @@ } // 鍒濆鍖栬緭閫佺嚎绾跨▼ + log.info("鍒濆鍖栬緭閫佺嚎绾跨▼..................................................."); for (DevpSlave devp : slaveProperties.getDevp()) { DevpThread devpThread = new DevpThread(devp); new Thread(devpThread).start(); SlaveConnection.put(SlaveType.Devp, devp.getId(), devpThread); } - // 鍒濆鍖栨潯鐮佹壂鎻忎华绾跨▼ - for (Slave barcode : slaveProperties.getBarcode()) { - BarcodeThread barcodeThread = new BarcodeThread(barcode); - new Thread(barcodeThread).start(); - SlaveConnection.put(SlaveType.Barcode, barcode.getId(), barcodeThread); +// // 鍒濆鍖栨潯鐮佹壂鎻忎华绾跨▼ +// for (Slave barcode : slaveProperties.getBarcode()) { +// BarcodeThread barcodeThread = new BarcodeThread(barcode); +// new Thread(barcodeThread).start(); +// SlaveConnection.put(SlaveType.Barcode, barcode.getId(), barcodeThread); +// } + // 鍒濆鍖朙ED绾跨▼ + log.info("鍒濆鍖朙ED绾跨▼..................................................."); + for (LedSlave led : slaveProperties.getLed()) { + LedThread ledThread = new LedThread(led); + new Thread(ledThread).start(); + SlaveConnection.put(SlaveType.Led, led.getId(), ledThread); } + } diff --git a/src/main/java/com/zy/core/cache/MessageQueue.java b/src/main/java/com/zy/core/cache/MessageQueue.java index 11d207d..5f27eba 100644 --- a/src/main/java/com/zy/core/cache/MessageQueue.java +++ b/src/main/java/com/zy/core/cache/MessageQueue.java @@ -7,6 +7,7 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.LinkedBlockingQueue; /** * 娑堟伅闃熷垪 @@ -21,7 +22,7 @@ // 鏉$爜鎵弿浠猰q浜ゆ崲鏈� private static final Map<Integer, ConcurrentLinkedQueue<Task>> BARCODE_EXCHANGE = new ConcurrentHashMap<>(); // Led鐏� mq浜ゆ崲鏈� - private static final Map<Integer, ConcurrentLinkedQueue<Task>> LED_EXCHANGE = new ConcurrentHashMap<>(); + private static final Map<Integer, LinkedBlockingQueue<Task>> LED_EXCHANGE = new ConcurrentHashMap<>(); // 纾呯Оmq浜ゆ崲鏈� private static final Map<Integer, ConcurrentLinkedQueue<Task>> SCALE_EXCHANGE = new ConcurrentHashMap<>(); @@ -40,7 +41,7 @@ BARCODE_EXCHANGE.put(slave.getId(), new ConcurrentLinkedQueue<>()); break; case Led: - LED_EXCHANGE.put(slave.getId(), new ConcurrentLinkedQueue<>()); + LED_EXCHANGE.put(slave.getId(), new LinkedBlockingQueue<>(1)); break; case Scale: SCALE_EXCHANGE.put(slave.getId(), new ConcurrentLinkedQueue<>()); diff --git a/src/main/java/com/zy/core/enums/CrnStatusType.java b/src/main/java/com/zy/core/enums/CrnStatusType.java index c236c79..28d89c7 100644 --- a/src/main/java/com/zy/core/enums/CrnStatusType.java +++ b/src/main/java/com/zy/core/enums/CrnStatusType.java @@ -11,7 +11,7 @@ ORIGIN(6, "鍙嶅師鐐�"), LOC_MOVE(7, "搴撲綅绉讳綅"), WAITING(90, "浠诲姟瀹屾垚绛夊緟WCS纭"), -// SOS(99, "鎶ヨ"), + SOS(99, "鎶ヨ"), ; public Integer id; diff --git a/src/main/java/com/zy/core/model/CrnSlave.java b/src/main/java/com/zy/core/model/CrnSlave.java index 457fa29..42d2822 100644 --- a/src/main/java/com/zy/core/model/CrnSlave.java +++ b/src/main/java/com/zy/core/model/CrnSlave.java @@ -29,7 +29,7 @@ @Data public static class CrnStn { - // 鍫嗗灈鏈簆lc缂栧彿 + // 杈撻�佺嚎plc缂栧彿 private Integer devpPlcId; // 鍫嗗灈鏈虹珯鐐圭紪鍙� diff --git a/src/main/java/com/zy/core/model/LedSlave.java b/src/main/java/com/zy/core/model/LedSlave.java new file mode 100644 index 0000000..af02dfc --- /dev/null +++ b/src/main/java/com/zy/core/model/LedSlave.java @@ -0,0 +1,24 @@ +package com.zy.core.model; + +import com.zy.core.Slave; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.ArrayList; +import java.util.List; + +/** + * LED閰嶇疆 + * Created by vincent on 2020/8/6 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class LedSlave extends Slave { + + // 杈撻�佺嚎plc缂栧彿 + private Integer devpPlcId; + + // 鍙夎溅绔欑偣鏁扮粍 + private List<Integer> staArr = new ArrayList<>(); + +} diff --git a/src/main/java/com/zy/core/model/command/LedCommand.java b/src/main/java/com/zy/core/model/command/LedCommand.java new file mode 100644 index 0000000..58f4c88 --- /dev/null +++ b/src/main/java/com/zy/core/model/command/LedCommand.java @@ -0,0 +1,28 @@ +package com.zy.core.model.command; + +import com.zy.common.model.MatDto; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * led鍛戒护鎶ユ枃 + * Created by vincent on 2020/8/11 + */ +@Data +public class LedCommand extends Object { + + private Integer workNo; + + private Integer staNo; + + private Integer sourceStaNo; + + private String locNo; + + private String sourceLocNo; + + private List<MatDto> matDtos = new ArrayList<>(); + +} diff --git a/src/main/java/com/zy/core/model/protocol/CrnError1.java b/src/main/java/com/zy/core/model/protocol/CrnError1.java index 0ae2829..c1fe5be 100644 --- a/src/main/java/com/zy/core/model/protocol/CrnError1.java +++ b/src/main/java/com/zy/core/model/protocol/CrnError1.java @@ -8,53 +8,50 @@ @Data public class CrnError1 { - // 閬ユ帶鍣ㄦ�ュ仠 - public boolean remoteStop; + // 琛岃蛋瓒呴�� + public boolean walkOverspeedErr; - // 涓绘帶鐩樻�ュ仠 - public boolean mainStop; + // 琛岃蛋閫熷害瓒呰寖鍥� + public boolean walkOverspeedRangeErr; - // 鎿嶄綔鐩樻�ュ仠 - public boolean controlStop; + // 琛岃蛋閫熷害鏈夊亸宸� + public boolean walkSpeedOffsetErr; - // X琛岃蛋鍙橀鍣ㄦ晠闅� - public boolean xCoverErr; + // 琛岃蛋浣嶇疆鏈夊亸宸� + public boolean walkLocationOffsetErr; - // Y鍗囬檷鍙橀鍣ㄦ晠闅� - public boolean yCoverErr; + // 琛岃蛋娴嬭窛鍣ㄥ紓甯� + public boolean walkDiastimeterErr; - // Z璐у弶鍙橀鍣ㄦ晠闅� - public boolean zCoverErr; + // 琛岃蛋鐩爣浣嶇疆鍑虹晫 + public boolean walkOutsideErr; - // 婵�鍏夋晠闅� - public boolean laserErr; + // 琛岃蛋闄愪綅寮�鍏宠Е鍙� + public boolean walkLimitSwitchErr; - // 鏉$爜闃呰鍣ㄦ晠闅� - public boolean barcodeErr; + // 琛岃蛋鍒跺姩搴忓垪寮傚父 + public boolean walkBrakeErr; - // X鍓嶆瀬闄� - public boolean xFrontLimitErr; + // 琛岃蛋娴嬭窛鍣ㄦ晠闅� + public boolean walkDiastimeterFau; - // X鍚庢瀬闄� - public boolean xBackLimitErr; + // 鍗囬檷瓒呴�� + public boolean liftOverSpeedErr; - // Y涓婃瀬闄� - public boolean yUpLimitErr; + // 鍗囬檷閫熷害瓒呰寖鍥� + public boolean liftOverspeedRangeErr; - // Y涓嬫瀬闄� - public boolean yDownLimitErr; + // 鍗囬檷閫熷害鏈夊亸宸� + public boolean liftSpeedOffsetErr; - // Z宸︽瀬闄� - public boolean zLeftLimitErr; + // 鍗囬檷浣嶇疆鏈夊亸宸� + public boolean liftLocationOffsetErr; - // Z鍙虫瀬闄� - public boolean zRightLimitErr; + // 鍗囬檷娴嬭窛鍣ㄥ紓甯� + public boolean liftDiastimeterErr; - // 宸﹁秴瀹�1 - public boolean leftOverWidthErr1; - - // 宸﹁秴瀹�2 - public boolean leftOverWidthErr2; + // 鍗囬檷鐩爣浣嶇疆鍑虹晫 + public boolean liftOutsideErr; } diff --git a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java index f1f265a..c2f073a 100644 --- a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java @@ -108,6 +108,16 @@ */ private Short alarm1; + private boolean[] temp1; + + private CrnTemp1 crnTemp1; + + private Short temp2; + + private Short temp3; + + private Short temp4; + /** * 寮傚父1 */ @@ -228,83 +238,39 @@ public void setError1(boolean[] error1){ this.error1 = error1; this.crnError1 = new CrnError1(); - this.crnError1.remoteStop = error1[0]; - this.crnError1.mainStop = error1[1]; - this.crnError1.controlStop = error1[2]; - this.crnError1.xCoverErr = error1[3]; - this.crnError1.yCoverErr = error1[4]; - this.crnError1.zCoverErr = error1[5]; - this.crnError1.laserErr = error1[6]; - this.crnError1.barcodeErr = error1[7]; - this.crnError1.xFrontLimitErr = error1[8]; - this.crnError1.xBackLimitErr = error1[9]; - this.crnError1.yUpLimitErr = error1[10]; - this.crnError1.yDownLimitErr = error1[11]; - this.crnError1.zLeftLimitErr = error1[12]; - this.crnError1.zRightLimitErr = error1[13]; - this.crnError1.leftOverWidthErr1 = error1[14]; - this.crnError1.leftOverWidthErr2 = error1[15]; + this.crnError1.walkOverspeedErr = error1[1]; + this.crnError1.walkOverspeedRangeErr = error1[2]; + this.crnError1.walkSpeedOffsetErr = error1[3]; + this.crnError1.walkLocationOffsetErr = error1[4]; + this.crnError1.walkDiastimeterErr = error1[5]; + this.crnError1.walkOutsideErr = error1[6]; + this.crnError1.walkLimitSwitchErr = error1[7]; + this.crnError1.walkBrakeErr = error1[8]; + this.crnError1.walkDiastimeterFau = error1[9]; + this.crnError1.liftOverSpeedErr = error1[10]; + this.crnError1.liftOverspeedRangeErr = error1[11]; + this.crnError1.liftSpeedOffsetErr = error1[12]; + this.crnError1.liftLocationOffsetErr = error1[13]; + this.crnError1.liftDiastimeterErr = error1[14]; + this.crnError1.liftOutsideErr = error1[15]; } - public void setError2(boolean[] error2){ - this.error2 = error2; - this.crnError2 = new CrnError2(); - this.crnError2.leftOverLenErr1 = error2[0]; - this.crnError2.leftOverLenErr2 = error2[1]; - this.crnError2.leftOverHighErr = error2[2]; - this.crnError2.rightOverWidthErr1 = error2[3]; - this.crnError2.rightOverWidthErr2 = error2[4]; - this.crnError2.rightOverLenErr1 = error2[5]; - this.crnError2.rightOverLenErr2 = error2[6]; - this.crnError2.rightOverHighErr = error2[7]; - this.crnError2.leftLooseRopeErr = error2[8]; - this.crnError2.rightLooseRopeErr = error2[9]; - this.crnError2.frontDoorErr = error2[10]; - this.crnError2.backDoorErr = error2[11]; - this.crnError2.startupErr = error2[12]; - this.crnError2.xFrontLocaUpErr = error2[13]; - this.crnError2.xFrontLocaDownErr = error2[14]; - this.crnError2.xBackLocaUpErr = error2[15]; - } - public void setError3(boolean[] error3) { - this.error3 = error3; - this.crnError3 = new CrnError3(); - this.crnError3.xBackLocaDownErr = error3[0]; - this.crnError3.yUpLocaUpErr = error3[1]; - this.crnError3.yUpLocaDownErr = error3[2]; - this.crnError3.yDownLocaUpErr = error3[3]; - this.crnError3.yDownLocaDownErr = error3[4]; - this.crnError3.zLeftLocaUpErr = error3[5]; - this.crnError3.zLeftLocaDownErr = error3[6]; - this.crnError3.zRightLocaUpErr = error3[7]; - this.crnError3.zRightLocaDownErr = error3[8]; - this.crnError3.leftTakeNoneErr = error3[9]; - this.crnError3.rightTakeNoneErr = error3[10]; - this.crnError3.leftTakeThenLoadErr = error3[11]; - this.crnError3.rightTakeThenLoadErr = error3[12]; - this.crnError3.leftPutAndLoadErr = error3[13]; - this.crnError3.rightPutAndLoadErr = error3[14]; - this.crnError3.leftPutThenNoneErr = error3[15]; - } - - public void setError4(boolean[] error4) { - this.error4 = error4; - this.crnError4 = new CrnError4(); - this.crnError4.rightPutThenNoneErr = error4[0]; - this.crnError4.xLooseBrakeTimeout = error4[1]; - this.crnError4.yLooseBrakeTimeout = error4[2]; - this.crnError4.zLooseBrakeTimeout = error4[3]; - } - - public void setError5(boolean[] error5) { - this.error5 = error5; - this.crnError5 = new CrnError5(); - } - - public void setError6(boolean[] error6) { - this.error6 = error6; - this.crnError6 = new CrnError6(); + public void setTemp1(boolean[] temp1) { + this.temp1 = temp1; + this.crnTemp1 = new CrnTemp1(); + this.crnTemp1.liftLimitSwitchErr = temp1[0]; + this.crnTemp1.liftBrakeErr = temp1[1]; + this.crnTemp1.liftDiastimeterFau = temp1[2]; + this.crnTemp1.stop = temp1[3]; + this.crnTemp1.warn = temp1[4]; + this.crnTemp1.overHighErr = temp1[5]; + this.crnTemp1.leftOverWidthErr = temp1[6]; + this.crnTemp1.rightOverWidthErr = temp1[7]; + this.crnTemp1.leftOverLenErr = temp1[8]; + this.crnTemp1.rightOverLenErr = temp1[9]; + this.crnTemp1.pakinThenLoadedErr = temp1[10]; + this.crnTemp1.pakOutThenNoneErr = temp1[11]; } /** @@ -316,7 +282,9 @@ public BasCrnp toSqlModel(BasCrnp basCrnp){ - basCrnp.setCrnErr(alarm1.longValue()); + if (alarm!=null) { + basCrnp.setCrnErr(alarm.longValue()); + } basCrnp.setWrkNo(taskNo.intValue()); return basCrnp; } diff --git a/src/main/java/com/zy/core/model/protocol/CrnTemp1.java b/src/main/java/com/zy/core/model/protocol/CrnTemp1.java new file mode 100644 index 0000000..3ca39e4 --- /dev/null +++ b/src/main/java/com/zy/core/model/protocol/CrnTemp1.java @@ -0,0 +1,47 @@ +package com.zy.core.model.protocol; + +import lombok.Data; + +/** + * Created by vincent on 2020/8/17 + */ +@Data +public class CrnTemp1 { + + // 鍗囬檷闄愪綅寮�鍏宠Е鍙� + public boolean liftLimitSwitchErr; + + // 琛岃蛋鍒跺姩搴忓垪寮傚父 + public boolean liftBrakeErr; + + // 琛岃蛋娴嬭窛鍣ㄦ晠闅� + public boolean liftDiastimeterFau; + + // 鎬ュ仠 + public boolean stop; + + // 鐩稿簭鎶ヨ + public boolean warn; + + // 瓒呴珮 + public boolean overHighErr; + + // 宸﹁秴瀹� + public boolean leftOverWidthErr; + + // 鍙宠秴瀹� + public boolean rightOverWidthErr; + + // 宸﹁秴闀� + public boolean leftOverLenErr; + + // 鍙宠秴闀� + public boolean rightOverLenErr; + + // 鏈夌墿鍏� + public boolean pakinThenLoadedErr; + + // 鏃犵墿鍑� + public boolean pakOutThenNoneErr; + +} diff --git a/src/main/java/com/zy/core/model/protocol/StaProtocol.java b/src/main/java/com/zy/core/model/protocol/StaProtocol.java index 4c141f2..4cc0e75 100644 --- a/src/main/java/com/zy/core/model/protocol/StaProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/StaProtocol.java @@ -41,7 +41,7 @@ private boolean inreq1; // 閿佸畾鏍囪 - private boolean pakMk; + private boolean pakMk = true; public BasDevp toSqlModel(){ BasDevp basDevp = new BasDevp(); diff --git a/src/main/java/com/zy/core/properties/SlaveProperties.java b/src/main/java/com/zy/core/properties/SlaveProperties.java index 5f5e393..a6931f3 100644 --- a/src/main/java/com/zy/core/properties/SlaveProperties.java +++ b/src/main/java/com/zy/core/properties/SlaveProperties.java @@ -3,6 +3,7 @@ import com.zy.core.Slave; import com.zy.core.model.CrnSlave; import com.zy.core.model.DevpSlave; +import com.zy.core.model.LedSlave; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; @@ -24,7 +25,7 @@ private List<Slave> barcode = new ArrayList<>(); - private List<Slave> led = new ArrayList<>(); + private List<LedSlave> led = new ArrayList<>(); private List<Slave> scale = new ArrayList<>(); diff --git a/src/main/java/com/zy/core/thread/CrnThread.java b/src/main/java/com/zy/core/thread/CrnThread.java index fcc56e1..9a4f4ea 100644 --- a/src/main/java/com/zy/core/thread/CrnThread.java +++ b/src/main/java/com/zy/core/thread/CrnThread.java @@ -2,11 +2,11 @@ import HslCommunication.Core.Types.OperateResult; import HslCommunication.Core.Types.OperateResultExOne; -import HslCommunication.Profinet.Siemens.SiemensPLCS; -import HslCommunication.Profinet.Siemens.SiemensS7Net; +import HslCommunication.Profinet.Melsec.MelsecMcNet; import com.alibaba.fastjson.JSON; import com.core.common.DateUtils; import com.core.common.SpringUtils; +import com.core.exception.CoolException; import com.zy.asrs.entity.BasCrnp; import com.zy.asrs.service.BasCrnpService; import com.zy.core.ThreadHandler; @@ -33,9 +33,10 @@ @Slf4j public class CrnThread implements Runnable, ThreadHandler { - private SiemensS7Net siemensNet; + private MelsecMcNet melsecMcNet; private CrnSlave slave; private CrnProtocol crnProtocol; + private boolean resetFlag = false; public CrnThread(CrnSlave slave) { this.slave = slave; @@ -48,7 +49,7 @@ while (true) { try { int step = 1; - Task task = MessageQueue.poll(SlaveType.Devp, slave.getId()); + Task task = MessageQueue.poll(SlaveType.Crn, slave.getId()); if (task != null) { step = task.getStep(); } @@ -93,19 +94,17 @@ @Override public boolean connect() { boolean result = false; - siemensNet = new SiemensS7Net(SiemensPLCS.S300, slave.getIp()); - siemensNet.setRack(slave.getRack().byteValue()); - siemensNet.setSlot(slave.getSlot().byteValue()); - OperateResult connect = siemensNet.ConnectServer(); + melsecMcNet = new MelsecMcNet(slave.getIp(), slave.getPort()); + OperateResult connect = melsecMcNet.ConnectServer(); if(connect.IsSuccess){ result = true; - OutputQueue.CRN.offer(MessageFormat.format( "銆恵0}銆戝爢鍨涙満plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); - log.info("鍫嗗灈鏈簆lc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); + OutputQueue.CRN.offer(MessageFormat.format( "銆恵0}銆戝爢鍨涙満plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); + log.info("鍫嗗灈鏈簆lc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); } else { - OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝爢鍨涙満plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); - log.error("鍫嗗灈鏈簆lc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); + OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝爢鍨涙満plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}] ", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); + log.error("鍫嗗灈鏈簆lc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); } - siemensNet.ConnectClose(); + melsecMcNet.ConnectClose(); return result; } @@ -113,60 +112,91 @@ * 璇诲彇鐘舵�� */ private void readStatus(){ - OperateResultExOne<byte[]> result = siemensNet.Read("DB8.18", (short) 56); - if (result.IsSuccess) { - OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); - if (null == crnProtocol) { - crnProtocol = new CrnProtocol(); - } - crnProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0)); - crnProtocol.setTaskNo(siemensNet.getByteTransform().TransInt16(result.Content, 2)); - crnProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 4)); - crnProtocol.setBay(siemensNet.getByteTransform().TransInt16(result.Content, 6)); - crnProtocol.setLevel(siemensNet.getByteTransform().TransInt16(result.Content, 8)); - crnProtocol.setForkPos(siemensNet.getByteTransform().TransInt16(result.Content, 10)); - crnProtocol.setLiftPos(siemensNet.getByteTransform().TransInt16(result.Content, 12)); - crnProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 14)); -// crnProtocol.setTaskFinish(siemensNet.getByteTransform().TransInt16(result.Content, 16)); - crnProtocol.setLoaded(siemensNet.getByteTransform().TransInt16(result.Content, 18)); - crnProtocol.setAlarm1(siemensNet.getByteTransform().TransInt16(result.Content, 20)); - // 寮傚父淇℃伅 - crnProtocol.setError1(siemensNet.getByteTransform().TransBool(result.Content, 22, 2)); - crnProtocol.setError2(siemensNet.getByteTransform().TransBool(result.Content, 24, 2)); - crnProtocol.setError3(siemensNet.getByteTransform().TransBool(result.Content, 26, 2)); - crnProtocol.setError4(siemensNet.getByteTransform().TransBool(result.Content, 28, 2)); - crnProtocol.setError5(siemensNet.getByteTransform().TransBool(result.Content, 30, 2)); - crnProtocol.setError6(siemensNet.getByteTransform().TransBool(result.Content, 32, 2)); - crnProtocol.setXSpeed(siemensNet.getByteTransform().TransSingle(result.Content, 34)); - crnProtocol.setYSpeed(siemensNet.getByteTransform().TransSingle(result.Content, 38)); - crnProtocol.setZSpeed(siemensNet.getByteTransform().TransSingle(result.Content, 42)); - crnProtocol.setXDistance(siemensNet.getByteTransform().TransSingle(result.Content, 46)); - crnProtocol.setYDistance(siemensNet.getByteTransform().TransSingle(result.Content, 50)); - crnProtocol.setXDuration(siemensNet.getByteTransform().TransSingle(result.Content, 54)); - crnProtocol.setYDuration(siemensNet.getByteTransform().TransSingle(result.Content, 58)); + try { - /** - * 褰撹鍒皊tatus == 90.浠诲姟瀹屾垚绛夊緟WCS纭 鏃� - * 涓嬪彂浠诲姟瀹屾垚鎸囦护 - */ - if (crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) { - CrnCommand crnCommand = new CrnCommand(); - crnCommand.setAckFinish((short)1); - write(crnCommand); - } + /* 鏂规硶1 */ + OperateResultExOne<byte[]> result = melsecMcNet.Read("D2231", (short) 62); + if (result.IsSuccess) { + if (null == crnProtocol) { + crnProtocol = new CrnProtocol(); + } + crnProtocol.setMode(melsecMcNet.getByteTransform().TransInt16(result.Content, 0)); + crnProtocol.setTaskNo(melsecMcNet.getByteTransform().TransInt16(result.Content, 4)); + crnProtocol.setStatus(melsecMcNet.getByteTransform().TransInt16(result.Content, 6)); + crnProtocol.setBay(melsecMcNet.getByteTransform().TransInt16(result.Content, 8)); + crnProtocol.setLevel(melsecMcNet.getByteTransform().TransInt16(result.Content, 10)); + crnProtocol.setForkPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 12)); + crnProtocol.setLiftPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 14)); + crnProtocol.setWalkPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 16)); +// crnProtocol.setTaskFinish(melsecMcNet.getByteTransform().TransInt16(result.Content, 18)); + crnProtocol.setLoaded(melsecMcNet.getByteTransform().TransInt16(result.Content, 20)); + crnProtocol.setAlarm(melsecMcNet.getByteTransform().TransInt16(result.Content, 22)); + crnProtocol.setError1(melsecMcNet.getByteTransform().TransBool(result.Content, 24, 2)); + crnProtocol.setTemp1(melsecMcNet.getByteTransform().TransBool(result.Content, 26, 2)); + crnProtocol.setTemp2(melsecMcNet.getByteTransform().TransInt16(result.Content, 28)); + crnProtocol.setTemp3(melsecMcNet.getByteTransform().TransInt16(result.Content, 30)); + crnProtocol.setTemp4(melsecMcNet.getByteTransform().TransInt16(result.Content, 32)); + crnProtocol.setXSpeed(melsecMcNet.getByteTransform().TransSingle(result.Content, 34)); + crnProtocol.setYSpeed(melsecMcNet.getByteTransform().TransSingle(result.Content, 38)); + crnProtocol.setZSpeed(melsecMcNet.getByteTransform().TransSingle(result.Content, 42)); + crnProtocol.setXDistance(melsecMcNet.getByteTransform().TransSingle(result.Content, 46)); + crnProtocol.setYDistance(melsecMcNet.getByteTransform().TransSingle(result.Content, 50)); + crnProtocol.setXDuration(melsecMcNet.getByteTransform().TransSingle(result.Content, 54)); + crnProtocol.setYDuration(melsecMcNet.getByteTransform().TransSingle(result.Content, 58)); - // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴� - BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class); - BasCrnp basCrnp = new BasCrnp(); - basCrnp.setCrnNo(slave.getId()); - if (basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))){ - log.error("鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); - } + OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); - } else { - OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戣鍙栧爢鍨涙満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); - log.error("璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); + // 澶嶄綅淇″彿 + if (crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) { + if (resetFlag) { + if (melsecMcNet.Write("D2218", (short) 1).IsSuccess) { + resetFlag = false; + } + } + } + + // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴� + BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class); + BasCrnp basCrnp = new BasCrnp(); + basCrnp.setCrnNo(slave.getId()); + if (!basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))){ + log.error("鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + } + + } else { + OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆憑1}鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐�",DateUtils.convert(new Date()), slave.getId())); + throw new CoolException(MessageFormat.format( "鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{0}] [ip:{1}] [port:{2}]", slave.getId(), slave.getIp(), slave.getPort())); + } + /* 鏂规硶2 */ +// crnProtocol.setMode(melsecMcNet.ReadInt16("D2231").Content); +// crnProtocol.setTaskNo(melsecMcNet.ReadInt16("D2233").Content); +// crnProtocol.setStatus(melsecMcNet.ReadInt16("D2234").Content); +// crnProtocol.setBay(melsecMcNet.ReadInt16("D2231").Content); +// crnProtocol.setLevel(melsecMcNet.ReadInt16("D2231").Content); +// crnProtocol.setForkPos(melsecMcNet.ReadInt16("D2231").Content); +// crnProtocol.setLiftPos(melsecMcNet.ReadInt16("D2231").Content); +// crnProtocol.setWalkPos(melsecMcNet.ReadInt16("D2231").Content); +//// crnProtocol.setTaskFinish(siemensNet.getByteTransform().TransInt16(result.Content, 16)); +// crnProtocol.setLoaded(melsecMcNet.ReadInt16("D2231").Content); +// crnProtocol.setAlarm(melsecMcNet.ReadInt16("D2231").Content); +// crnProtocol.setError1(melsecMcNet.ReadBool("D2231", (short) 2).Content); +// crnProtocol.setTemp1(melsecMcNet.ReadInt16("D2231").Content); +// crnProtocol.setTemp2(melsecMcNet.ReadInt16("D2231").Content); +// crnProtocol.setTemp3(melsecMcNet.ReadInt16("D2231").Content); +// crnProtocol.setTemp4(melsecMcNet.ReadInt16("D2231").Content); +// crnProtocol.setXSpeed(melsecMcNet.ReadFloat("D2231").Content); +// crnProtocol.setYSpeed(melsecMcNet.ReadFloat("D2231").Content); +// crnProtocol.setZSpeed(melsecMcNet.ReadFloat("D2231").Content); +// crnProtocol.setXDistance(melsecMcNet.ReadFloat("D2231").Content); +// crnProtocol.setYDistance(melsecMcNet.ReadFloat("D2231").Content); +// crnProtocol.setXDuration(melsecMcNet.ReadFloat("D2231").Content); +// crnProtocol.setYDuration(melsecMcNet.ReadFloat("D2231").Content); + } catch (Exception e) { + e.printStackTrace(); + OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戣鍙栧爢鍨涙満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); + log.error("璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); } + } /** @@ -178,38 +208,65 @@ return; } command.setCrnNo(slave.getId()); - short[] array = new short[9]; - array[0] = command.getAckFinish(); - array[1] = command.getTaskNo(); - array[2] = command.getTaskMode(); - array[3] = command.getSourcePosX(); - array[4] = command.getSourcePosY(); - array[5] = command.getSourcePosZ(); - array[6] = command.getDestinationPosX(); - array[7] = command.getDestinationPosY(); - array[8] = command.getDestinationPosZ(); - OperateResult result = siemensNet.Write("DB8.0", array); - if (result.IsSuccess) { - System.out.println(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); + /* 鏂规硶 1 */ + do { + if (command.getDestinationPosZ() != null) { + if (!melsecMcNet.Write("D2202", command.getDestinationPosZ()).IsSuccess) { break; } + } + if (command.getDestinationPosY() != null) { + if (!melsecMcNet.Write("D2204", command.getDestinationPosY()).IsSuccess) { break; } + } + if (command.getDestinationPosX() != null) { + if (!melsecMcNet.Write("D2208", command.getDestinationPosX()).IsSuccess) { break; } + } + if (command.getSourcePosZ() != null) { + if (!melsecMcNet.Write("D2210", command.getSourcePosZ()).IsSuccess) { break; } + } + if (command.getSourcePosY() != null) { + if (!melsecMcNet.Write("D2212", command.getSourcePosY()).IsSuccess) { break; } + } + if (command.getDestinationPosX() != null) { + if (!melsecMcNet.Write("D2214", command.getSourcePosX()).IsSuccess) { break; } + } + if (command.getTaskMode() != null) { + if (!melsecMcNet.Write("D2216", command.getTaskMode()).IsSuccess) { break; } + } + if (command.getTaskNo() != null) { + if (!melsecMcNet.Write("D2217", command.getTaskNo()).IsSuccess) { break; } + } + if (command.getAckFinish() != null) { + if (!melsecMcNet.Write("D2218", command.getAckFinish()).IsSuccess) { break; } + } + + log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); -// readStatus(); - } else { - System.out.println(MessageFormat.format("銆恵0}銆戝啓鍏ュ爢鍨涙満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); - OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ爢鍨涙満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); - log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); - } + + return; + } while (false); + + + System.out.println(MessageFormat.format("銆恵0}銆戝啓鍏ュ爢鍨涙満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); + OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ爢鍨涙満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); + log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + + + + /* 鏂规硶 2 */ +// melsecMcNet.Write("D2218", command.getAckFinish()); +// melsecMcNet.Write("D2217", command.getTaskNo()); +// melsecMcNet.Write("D2216", command.getTaskMode()); +// melsecMcNet.Write("D2214", command.getSourcePosX()); +// melsecMcNet.Write("D2212", command.getSourcePosY()); +// melsecMcNet.Write("D2210", command.getSourcePosZ()); +// melsecMcNet.Write("D2208", command.getDestinationPosX()); +// melsecMcNet.Write("D2204", command.getDestinationPosY()); +// melsecMcNet.Write("D2202", command.getDestinationPosZ()); + } @Override public void close() { - siemensNet.ConnectClose(); - } - - public CrnProtocol getCrnProtocol(){ - if (crnProtocol == null) { - readStatus(); - } - return this.crnProtocol; + melsecMcNet.ConnectClose(); } @@ -219,14 +276,14 @@ public static void main(String[] args) throws InterruptedException { CrnSlave slave = new CrnSlave(); slave.setId(1); - slave.setIp("192.168.6.9"); + slave.setIp("192.168.3.39"); + slave.setPort(5015); slave.setRack(0); slave.setSlot(0); CrnThread crnThread = new CrnThread(slave); crnThread.connect(); crnThread.readStatus(); System.out.println(JSON.toJSONString(crnThread.crnProtocol)); - Thread.sleep(3000L); // 1.鍏ュ簱 婧愬拰鐩爣閮藉彂 // CrnCommand command = new CrnCommand(); @@ -299,19 +356,19 @@ // command.setDestinationPosZ((short) 0); // 鐩爣搴撲綅灞� // crnThread.write(command); -// // 7.鍧愭爣绉昏 鐩爣鍙� pass -// CrnCommand command = new CrnCommand(); -// command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙� -// command.setTaskNo((short) 0); // 宸ヤ綔鍙� -// command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� -// command.setTaskMode(CrnTaskModeType.OFFSET_MOVE); // 浠诲姟妯″紡 -// command.setSourcePosX((short) 0); // 婧愬簱浣嶆帓 -// command.setSourcePosY((short) 0); // 婧愬簱浣嶅垪 -// command.setSourcePosZ((short) 0); // 婧愬簱浣嶅眰 -// command.setDestinationPosX((short) 2); // 鐩爣搴撲綅鎺� -// command.setDestinationPosY((short) 1); // 鐩爣搴撲綅鍒� -// command.setDestinationPosZ((short) 1); // 鐩爣搴撲綅灞� -// crnThread.write(command); + // 7.鍧愭爣绉昏 鐩爣鍙� pass + CrnCommand command = new CrnCommand(); + command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙� + command.setTaskNo((short) 0); // 宸ヤ綔鍙� + command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + command.setTaskMode(CrnTaskModeType.OFFSET_MOVE); // 浠诲姟妯″紡 + command.setSourcePosX((short) 0); // 婧愬簱浣嶆帓 + command.setSourcePosY((short) 0); // 婧愬簱浣嶅垪 + command.setSourcePosZ((short) 0); // 婧愬簱浣嶅眰 + command.setDestinationPosX((short) 1); // 鐩爣搴撲綅鎺� + command.setDestinationPosY((short) 3); // 鐩爣搴撲綅鍒� + command.setDestinationPosZ((short) 3); // 鐩爣搴撲綅灞� + crnThread.write(command); // 鍙湁鍑虹幇鎸囧畾寮傚父鎵嶈繘琛屽浣� // if (crnThread.crnProtocol.getCrnError2().leftTakeNoneErr diff --git a/src/main/java/com/zy/core/thread/DevpThread.java b/src/main/java/com/zy/core/thread/DevpThread.java index 7382103..ac4cc27 100644 --- a/src/main/java/com/zy/core/thread/DevpThread.java +++ b/src/main/java/com/zy/core/thread/DevpThread.java @@ -2,8 +2,7 @@ import HslCommunication.Core.Types.OperateResult; import HslCommunication.Core.Types.OperateResultExOne; -import HslCommunication.Profinet.Siemens.SiemensPLCS; -import HslCommunication.Profinet.Siemens.SiemensS7Net; +import HslCommunication.Profinet.Melsec.MelsecMcNet; import com.alibaba.fastjson.JSON; import com.core.common.DateUtils; import com.core.common.SpringUtils; @@ -35,7 +34,7 @@ public class DevpThread implements Runnable, ThreadHandler { private DevpSlave slave; - private SiemensS7Net siemensS7Net; + private MelsecMcNet melsecMcNet; private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>(); private short heartBeatVal = 1; @@ -76,7 +75,7 @@ } // 蹇冭烦 - heartbeat(); +// heartbeat(); Thread.sleep(400); } catch (Exception e) { e.printStackTrace(); @@ -88,27 +87,25 @@ @Override public boolean connect() { boolean result = false; - siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp()); - siemensS7Net.setRack(slave.getRack().byteValue()); - siemensS7Net.setSlot(slave.getSlot().byteValue()); - OperateResult connect = siemensS7Net.ConnectServer(); + melsecMcNet = new MelsecMcNet(slave.getIp(), slave.getPort()); + OperateResult connect = melsecMcNet.ConnectServer(); if(connect.IsSuccess){ result = true; - OutputQueue.DEVP.offer(MessageFormat.format( "銆恵0}銆戣緭閫佺嚎plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); + OutputQueue.DEVP.offer(MessageFormat.format( "銆恵0}銆戣緭閫佺嚎plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); log.info("杈撻�佺嚎plc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); } else { - OutputQueue.DEVP.offer(MessageFormat.format( "銆恵0}銆戣緭閫佺嚎plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); + OutputQueue.DEVP.offer(MessageFormat.format( "銆恵0}銆戣緭閫佺嚎plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); log.error("杈撻�佺嚎plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); } - siemensS7Net.ConnectClose(); + melsecMcNet.ConnectClose(); return result; } /** * 璇诲彇鐘舵�� ====> 鏁村潡plc */ - private void read(){ - OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) 40); + private void read() throws InterruptedException { + OperateResultExOne<byte[]> result = melsecMcNet.Read("D101", (short) 30); if (result.IsSuccess) { for (int i = 1; i <= 8; i++) { StaProtocol staProtocol = station.get(i); @@ -117,20 +114,24 @@ staProtocol.setSiteId(i); station.put(i, staProtocol); } - staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, (i-1)*2)); // 宸ヤ綔鍙� - staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, (i-1)*2+20)); // 鐩爣绔� + staProtocol.setWorkNo(melsecMcNet.getByteTransform().TransInt16(result.Content, (i-1)*2)); // 宸ヤ綔鍙� + staProtocol.setStaNo(melsecMcNet.getByteTransform().TransInt16(result.Content, (i-1)*2+40)); // 鐩爣绔� } } - OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB100.40", (short) 8); + Thread.sleep(100); + OperateResultExOne<boolean[]> result1 = melsecMcNet.ReadBool("M800", (short) 64); if (result1.IsSuccess) { for (int i = 1; i <= 8; i++) { - boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i-1, 1); StaProtocol staProtocol = station.get(i); - staProtocol.setAutoing(status[0]); // 鑷姩 - staProtocol.setLoading(status[1]); // 鏈夌墿 - staProtocol.setInEnable(status[2]); // 鍙叆 - staProtocol.setOutEnable(status[3]);// 鍙嚭 - staProtocol.setEmptyMk(status[4]); // 绌烘澘淇″彿 + staProtocol.setAutoing(result1.Content[(i-1)*8]); // 鑷姩 + staProtocol.setLoading(result1.Content[(i-1)*8+1]); // 鏈夌墿 + staProtocol.setInEnable(result1.Content[(i-1)*8+2]); // 鍙叆 + staProtocol.setOutEnable(result1.Content[(i-1)*8+3]);// 鍙嚭 + staProtocol.setEmptyMk(result1.Content[(i-1)*8+4]); // 绌烘澘淇″彿 + + if (!staProtocol.isPakMk() && !staProtocol.isLoading()) { + staProtocol.setPakMk(true); + } } } if (result.IsSuccess && result1.IsSuccess) { @@ -148,25 +149,26 @@ throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�"); } } catch (Exception e) { - OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戞洿鏂版暟鎹簱鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); - log.error("鏇存柊鏁版嵁搴撴暟鎹け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); + OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戞洿鏂版暟鎹簱鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); + log.error("鏇存柊鏁版嵁搴撴暟鎹け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); } } else { - OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戣鍙栬緭閫佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); - log.error("璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); + OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戣鍙栬緭閫佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); + log.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort()); } } /** * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏� */ - private void write(StaProtocol staProtocol){ + private void write(StaProtocol staProtocol) throws InterruptedException { if (null == staProtocol) { return; } - OperateResult write = siemensS7Net.Write("DB100." + (staProtocol.getSiteId() - 1) * 2, staProtocol.getWorkNo()); // 宸ヤ綔鍙� - OperateResult write1 = siemensS7Net.Write("DB100." + ((staProtocol.getSiteId() - 1) * 2 + 20), staProtocol.getStaNo()); // 鐩爣绔� + OperateResult write = melsecMcNet.Write("D10" + staProtocol.getSiteId(), staProtocol.getWorkNo()); // 宸ヤ綔鍙� + Thread.sleep(100); + OperateResult write1 = melsecMcNet.Write("D12" + staProtocol.getSiteId(), staProtocol.getStaNo()); // 鐩爣绔� // boolean[] status = new boolean[8]; // status[0] = staProtocol.isAutoing(); // status[1] = staProtocol.isLoading(); @@ -175,10 +177,14 @@ // status[4] = staProtocol.isEmptyMk(); // OperateResult write2 = siemensS7Net.Write("DB100." + ((staProtocol.getSiteId() - 1) + 40), status); // 鐘舵�� if (!write.IsSuccess || !write1.IsSuccess) { + if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) { + staProtocol.setPakMk(true); + } OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol))); log.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol)); } else { - OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol))); + OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 杈撻�佺嚎鍛戒护涓嬪彂 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol))); + log.info("杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}", slave.getId(), JSON.toJSON(staProtocol)); } } @@ -189,7 +195,7 @@ if (null == staProtocol) { return; } - OperateResult write = siemensS7Net.Write("DB100." + (staProtocol.getSiteId() - 1) * 2, staProtocol.getWorkNo()); // 宸ヤ綔鍙� + OperateResult write = melsecMcNet.Write("D10" + staProtocol.getSiteId(), staProtocol.getWorkNo()); // 宸ヤ綔鍙� if (!write.IsSuccess ) { OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol))); log.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol)); @@ -205,7 +211,7 @@ if (null == staProtocol) { return; } - OperateResult write = siemensS7Net.Write("DB100." + ((staProtocol.getSiteId() - 1) * 2 + 20), staProtocol.getStaNo()); // 鐩爣绔� + OperateResult write = melsecMcNet.Write("D12" + staProtocol.getSiteId(), staProtocol.getStaNo()); // 鐩爣绔� if (!write.IsSuccess ) { OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol))); log.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol)); @@ -223,7 +229,7 @@ } else { heartBeatVal = 1; } - OperateResult write = siemensS7Net.Write("DB100.50", heartBeatVal); + OperateResult write = melsecMcNet.Write("DB100.50", heartBeatVal); if (!write.IsSuccess) { log.error("杈撻�佺嚎plc缂栧彿={} 蹇冭烦澶辫触", slave.getId()); } @@ -231,26 +237,36 @@ @Override public void close() { - siemensS7Net.ConnectClose(); + melsecMcNet.ConnectClose(); } - public static void main(String[] args) { + public static void main(String[] args) throws Exception { DevpSlave slave = new DevpSlave(); - slave.setIp("192.168.2.125"); + slave.setIp("192.168.3.65"); + slave.setPort(6000); DevpThread devpThread = new DevpThread(slave); devpThread.connect(); - devpThread.read(); + OperateResult d1021 = devpThread.melsecMcNet.Write("D102", (short) 234); + if (d1021.IsSuccess) { + System.out.println("success"); + } + OperateResultExOne<Short> d102 = devpThread.melsecMcNet.ReadInt16("D102"); + System.out.println(d102.Content); +// devpThread.read(); + System.out.println("绗竴娆¤"); // 鍐� - StaProtocol staProtocol = devpThread.getStation().get(1); - staProtocol.setWorkNo((short) 232); - staProtocol.setStaNo((short) 6); - staProtocol.setAutoing(true); - staProtocol.setEmptyMk(true); - staProtocol.setInEnable(true); - devpThread.write(staProtocol); - System.out.println("----------------------------------------"); +// StaProtocol staProtocol = devpThread.getStation().get(1); +// staProtocol.setWorkNo((short) 232); +// staProtocol.setStaNo((short) 6); +// staProtocol.setAutoing(true); +// staProtocol.setEmptyMk(true); +// staProtocol.setInEnable(true); +// devpThread.write(staProtocol); +// System.out.println("----------------------------------------"); + Thread.sleep(400); // 璇� - devpThread.read(); +// devpThread.read(); + System.out.println("绗簩娆¤"); System.out.println(JSON.toJSONString(devpThread.station)); } diff --git a/src/main/java/com/zy/core/thread/LedThread.java b/src/main/java/com/zy/core/thread/LedThread.java new file mode 100644 index 0000000..0384e64 --- /dev/null +++ b/src/main/java/com/zy/core/thread/LedThread.java @@ -0,0 +1,355 @@ +package com.zy.core.thread; + +import com.zy.common.model.MatDto; +import com.zy.core.Slave; +import com.zy.core.ThreadHandler; +import com.zy.core.cache.MessageQueue; +import com.zy.core.enums.SlaveType; +import com.zy.core.model.Task; +import com.zy.core.model.command.LedCommand; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import onbon.bx05.Bx5GEnv; +import onbon.bx05.Bx5GException; +import onbon.bx05.Bx5GScreen; +import onbon.bx05.Bx5GScreenClient; +import onbon.bx05.area.TextCaptionBxArea; +import onbon.bx05.area.page.TextBxPage; +import onbon.bx05.file.ProgramBxFile; +import onbon.bx05.message.led.ReturnControllerStatus; +import onbon.bx05.utils.DisplayStyleFactory; + +import java.awt.*; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +/** + * Created by vincent on 2020/9/1 + */ +@Data +@Slf4j +public class LedThread implements Runnable, ThreadHandler { + + private Slave slave; + private Bx5GScreenClient screen; + ProgramBxFile pf; + TextCaptionBxArea area; + DisplayStyleFactory.DisplayStyle[] styles = DisplayStyleFactory.getStyles().toArray(new DisplayStyleFactory.DisplayStyle[0]); + private Set<Integer> workNos = new HashSet<>(); + + public LedThread(Slave slave) { + this.slave = slave; + try { + Bx5GEnv.initial(3000); + screen = new Bx5GScreenClient("my"); + screen.turnOn(); + pf = new ProgramBxFile( 0, screen.getProfile()); + pf.setFrameShow(false); + // 鍒嗗埆杈撳叆X锛孻锛寃idth锛宧eight + area = new TextCaptionBxArea( 0,0,192,128,screen.getProfile()); + } catch (Exception e) { + e.printStackTrace(); + log.info("led杩炴帴鏋勯�犲櫒閿欒 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + } + } + + @Override + @SuppressWarnings({"InfiniteLoopStatement", "unchecked"}) + public void run() { + connect(); + while (true) { + try { + Task task = MessageQueue.poll(SlaveType.Led, slave.getId()); + if (task != null) { + switch (task.getStep()) { + // 鍐欐暟鎹� + case 1: + write((List<LedCommand>)task.getData()); + break; + default: + break; + } + } + + Thread.sleep(3000); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + @Override + public boolean connect() { + boolean connRes = false; + try { + connRes = screen.connect(slave.getIp(),slave.getPort()); + } catch (Exception ignore) { + } + if (connRes) { + log.info("led杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + } else { + log.error("led杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + } + return connRes; + } + + @Override + public void close() { + screen.disconnect(); + } + + + private void write(List<LedCommand> list) throws Bx5GException { + // 鍒涘缓涓�涓暟鎹〉 + TextBxPage page = new TextBxPage(); + for (LedCommand command : list) { + page.newLine("鍑哄簱浠诲姟锛�"+command.getWorkNo()+")"); + page.newLine("婧愬簱浣嶏細"+command.getSourceLocNo()); + page.newLine("鐩爣绔欙細"+command.getStaNo()); + for (MatDto matDto : command.getMatDtos()) { + page.newLine(matDto.getMaknx() + "銆愭暟閲�" + matDto.getCount() +"銆�"); + } + page.newLine("\n"); + } + + // 璁剧疆瀛椾綋 + page.setFont(new Font("瀹嬩綋",Font.PLAIN,12)); + // 璁剧疆鏄剧ず鐗规妧涓哄揩閫熸墦鍑� + page.setDisplayStyle(styles[6]); + area.addPage(page); + pf.addArea(area); + // 鏇存柊鑺傜洰 + screen.writeProgram(pf); + } + + + + + public static void main(String[] args) throws Exception { + Bx5GEnv.initial(3000); + Bx5GScreenClient screen = new Bx5GScreenClient("my"); + DisplayStyleFactory.DisplayStyle[] styles = DisplayStyleFactory.getStyles().toArray(new DisplayStyleFactory.DisplayStyle[0]); + if (!screen.connect("192.168.10.61",5005)) { + System.err.println("杩炴帴澶辫触锛侊紒锛侊紒"); + return; + } + screen.turnOn(); + ProgramBxFile pf = new ProgramBxFile( 0, screen.getProfile()); + pf.setFrameShow(false); + // 鍒嗗埆杈撳叆X锛孻锛寃idth锛宧eigth + TextCaptionBxArea area = new TextCaptionBxArea( 0,0,192,128,screen.getProfile()); + // 鍒涘缓涓�涓暟鎹〉 + // 绗竴琛屾暟鎹� + TextBxPage page = new TextBxPage("鍏ㄦ澘鍏ュ簱"); + page.newLine("鐩爣搴撲綅锛�0100204"); + // 绗簩琛屾暟鎹� + page.newLine("鎺ユ敹鍣� RX18 XH 6V 銆愭暟閲忥細2銆�"); + page.newLine("涓帶 BM钃濈墮 鑻辨枃 6V 銆愭暟閲忥細1銆�"); + page.newLine("绾挎潫 S2588-1-XX 鏃犲疄鐗┿�愭暟閲忥細5銆�"); + page.newLine("鎺ユ敹鍣� RX18 XH 6V 銆愭暟閲忥細2銆�"); + page.newLine("涓帶 BM钃濈墮 鑻辨枃 6V 銆愭暟閲忥細1銆�"); + page.newLine("绾挎潫 S2588-1-XX 鏃犲疄鐗┿�愭暟閲忥細5銆�"); + page.newLine("鎺ユ敹鍣� RX18 XH 6V 銆愭暟閲忥細2銆�"); + page.newLine("涓帶 BM钃濈墮 鑻辨枃 6V 銆愭暟閲忥細1銆�"); + page.newLine("绾挎潫 S2588-1-XX 鏃犲疄鐗┿�愭暟閲忥細5銆�"); + // 璁剧疆瀛椾綋 + page.setFont( new Font("瀹嬩綋",Font.PLAIN,12)); + // 璁剧疆鏄剧ず鐗规妧涓哄揩閫熸墦鍑� + page.setDisplayStyle(styles[6]); + area.addPage(page); + pf.addArea( area ); + // 鏇存柊鑺傜洰 + screen.writeProgram(pf); + // 缁у紑涓庢帶鍒跺櫒涔嬮棿鐨勯摼鎺� + screen.disconnect(); + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + public static void main1(String[] args) throws Exception { + Bx5GEnv.initial(3000); + // 鍒涘缓screen瀵硅薄锛岀敤浜庡鎺у埗鍣ㄨ繘琛岃闂紝瀹㈡埛绔ā寮� + Bx5GScreenClient screen = new Bx5GScreenClient("my"); + // 鍒涘缓screen瀵硅薄锛岀敤浜庡鎺у埗鍣ㄨ繘琛岃闂紝涓插彛妯″紡 + // Bx5GScreenRS screen = new Bx5GScreenRS("MyScreen"); + + // 鍦ㄥ鎺у埗鍣ㄤ氦浜掍箣鍓嶏紝闇�瑕佸厛涓庢帶鍒跺櫒寤虹珛杩炴帴 + boolean conn = screen.connect("192.168.10.61",5005); + System.out.println(conn); + // 涓庢帶鍒跺櫒浜や簰瀹屾垚鍚庯紝闇�鏂紑涓庢帶鍒跺櫒涔嬮棿鐨勮繛鎺� +// screen.disconnect(); + + // 浠ヤ笅涓轰竴浜涚畝鍗曟帶鍒跺懡浠ょ殑浣跨敤鏂规硶 + // 寮�鍏虫満鍛戒护 +// screen.turnOff();// 鍏虫満 + screen.turnOn();// 寮�鏈� +// screen.syncTime();// 鏍℃椂 +// screen.ping();// ping鍛戒护 +// // 鏌ヨ鎺у埗鍣ㄧ姸鎬� +// screen.checkControllerStatus(); +// // 鏌ヨ鎺у埗鍣ㄥ綋鍓嶅浐浠剁増鏈� +// screen.checkFirmware(); +// // 鏌ヨ鎺у埗鍣ㄥ唴瀛� +// screen.checkMemVolumes(); +// // 閿佸畾灞忓箷褰撳墠鐢婚潰 +// screen.lock(); +// // 瑙i櫎閿佸畾灞忓箷褰撳墠鐢婚潰 +// screen.unlock(); + + Bx5GScreen.Result <ReturnControllerStatus> result1 = + screen.checkControllerStatus(); + if (result1.isOK()) + { + ReturnControllerStatus status = result1.reply; + System.out.println(status.getBrightness()); + System.out.println(status.getRtcDay()); + System.out.println(status.getScreenOnOff()); + // + // status 杩樻湁寰堝鍏朵粬鎺ュ彛锛屽彲浠ユ牴鎹疄闄呴渶姹傚啀娆¤皟鐢ㄤ互鑾峰彇鐩稿簲鐘舵�� + } + +// + // 浠ヤ笅鏄潤鎬佸尯閮ㄥ垎 Demo + + // 鍒涘缓鑺傜洰鏂囦欢 + ProgramBxFile pf = new ProgramBxFile( 0,screen.getProfile() ); +// 鏄惁鏄剧ず鑺傜洰杈规 + pf.setFrameShow(true); +// 鑺傜洰杈规鐨勭Щ鍔ㄩ�熷害 + pf.setFrameSpeed(20); +// 浣跨敤绗嚑涓唴缃竟妗� + pf.loadFrameImage(13); + + DisplayStyleFactory.DisplayStyle[] styles = DisplayStyleFactory.getStyles().toArray(new DisplayStyleFactory.DisplayStyle[0]); +// 鍒涘缓涓�涓枃鏈尯 + // 鍒嗗埆杈撳叆X锛孻锛寃idth锛宧eigth + // 娉ㄦ剰鍖哄煙鍧愭爣鍜屽搴﹂珮搴︼紝涓嶈瓒婄晫 + TextCaptionBxArea area = new TextCaptionBxArea( 0,0,160,64,screen.getProfile() ); + + // 鍒涘缓涓�涓暟鎹〉 + // 绗竴琛屾暟鎹� + TextBxPage page = new TextBxPage("鍏ュ簱"); + // 绗簩琛屾暟鎹� + page.newLine( "鐗╂枡锛�" ); + page.newLine("鎺ユ敹鍣� RX18 XH 6V 锛堟暟閲忥細2锛�"); + page.newLine("涓帶 BM钃濈墮 鑻辨枃 6V 锛堟暟閲忥細1锛�"); + page.newLine("绾挎潫 S2588-1-XX 鏃犲疄鐗╋紙鏁伴噺锛�5锛�"); + page.newLine("鐩爣搴撲綅锛�0100204"); + // 璁剧疆瀛椾綋 + page.setFont( new Font("瀹嬩綋",Font.PLAIN,12) ); + // 璁剧疆鏄剧ず鐗规妧涓哄揩閫熸墦鍑� + page.setDisplayStyle( styles[2] ); + + // 鏁版嵁椤靛彲浠ユ槸鍥剧墖 +// ImageFileBxPage iPage = new ImageFileBxPage( "E;a/001.bmp" ); +// +// // 鏁版嵁椤靛彲浠ユ槸txt鏂囦欢 +// TextFileBxPage tPage = new TextFileBxPage("E:a/001.txt"); + + // 灏嗗墠闈㈢殑page娣诲姞鍒癮rea涓� area涓彲浠ユ坊鍔犲涓猵age 鍏朵腑page鍙互鏄瓧绗︿覆锛屽彲浠ユ槸txt鏂囦欢锛屽彲浠ユ槸鍥剧墖锛屼笉鍙互鏄〃鏍硷紝濡傛灉闇�瑕丩ed灞忎笂鏄剧ず琛ㄦ牸锛岃鍏堝皢琛ㄦ牸缁樺埗鎴愬浘鐗� + area.addPage( page ); +// area.addPage( iPage ); +// area.addPage( tPage ); + // 灏哸rea娣诲姞鍒拌妭鐩腑 鑺傜洰涓彲浠ユ坊鍔犲涓猘rea + pf.addArea( area ); + + // 鏇存柊鑺傜洰 + screen.writeProgram( pf ); + + + + + + + + + + + // + // 浠ヤ笅鏄姩鎬佸尯閮ㄥ垎 Demo + // 鍔ㄦ�佸尯鐨勭壒鐐� + + // DynamicBxAreaRule(id, runMode, immediatePlay, timeout) + // runMode 杩愯妯″紡锛� + // 0锛氬惊鐜樉绀恒�� + // 1锛氭樉绀哄畬鎴愬悗闈欐鏄剧ず鏈�鍚庝竴椤垫暟鎹�� + // 2锛氬惊鐜樉绀猴紝瓒呰繃璁惧畾鏃堕棿鍚庢暟鎹粛鏈洿鏂版椂涓嶅啀鏄剧ず銆� + // 3锛氬惊鐜樉绀猴紝瓒呰繃璁惧畾鏃堕棿鍚庢暟鎹粛鏈洿鏂版椂鏄剧ず Logo 淇℃伅銆� + // 4锛氬惊鐜樉绀猴紝鏄剧ず瀹屾渶鍚庝竴椤靛悗灏变笉鍐嶆樉绀恒�� + // immediatePlay 鏄惁绔嬪嵆鎾斁锛� + // 0锛氫笌寮傛鑺傜洰涓�璧锋挱鏀俱�� + // 1锛氬紓姝ヨ妭鐩仠姝㈡挱鏀撅紝浠呮挱鏀惧姩鎬佸尯鍩熴�� + // 2锛氬綋鎾斁瀹岃妭鐩紪鍙锋渶楂樼殑寮傛鑺傜洰鍚庢挱鏀捐鍔ㄦ�佸尯鍩熴�� + + // + // 瀹氫箟涓�涓姩鎬佸尯 + // 鍙互閫氳繃ID鏉ユ洿鏂颁笉鍚岀殑鍔ㄦ�佸尯鍐呭, 姝ゅ ID 涓� 0 +// DynamicBxAreaRule dynRule = new DynamicBxAreaRule(0, (byte) 0, (byte) 1, 0); + //dArea.addProgram("P000"); + //dArea.addProgram("P001"); + +// int posX = 440; +// int posY = 4; +// TextCaptionBxArea dAreaContent = new TextCaptionBxArea(posX, posY, 64, 16, screen.getProfile()); +// TextBxPage page = new TextBxPage("鍔ㄦ�佺涓�娆″皾璇�"); +// page.setDisplayStyle(DisplayStyleFactory.getStyle(4)); +// dAreaContent.addPage(page); +// +// // 鍙戦�佸姩鎬佸尯涔嬪墠锛屽鏋滈渶瑕佸垹闄や箣鍓嶇殑鍔ㄦ�佸尯锛屽彲浠ヨ皟鐢ㄤ互涓嬫帴鍙� +// // 閫氬父濡傛灉鍔ㄦ�佸尯鐨勪綅缃垨澶у皬娌℃湁鍙戠敓鏀瑰彉锛屼笉鐢ㄥ垹闄� +// screen.deleteAllDynamic(); +// +// // 鏇存柊鍔ㄦ�佸尯 +// screen.writeDynamic(dynRule, dAreaContent); +// Thread.sleep(15000); +// +// // +// // 涓嬮潰妯℃嫙鍐嶆鏇存柊鍔ㄦ�佸尯 +// page = new TextBxPage("鍐嶆灏濊瘯"); +// TextBxPage page2 = new TextBxPage("鎴愬姛"); +// +// dAreaContent.clearPages(); +// dAreaContent.addPage(page); +// dAreaContent.addPage(page2); +// +// // 鏇存柊鍔ㄦ�佸尯 +// screen.writeDynamic(dynRule, dAreaContent); + + // + // 缁у紑涓庢帶鍒跺櫒涔嬮棿鐨勯摼鎺� + screen.disconnect(); + + + } + +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 682d88f..9746d36 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,15 +1,18 @@ server: port: 9090 servlet: - context-path: /@pom.build.finalName@ + context-path: /gdwcs spring: application: - name: @pom.build.finalName@ + name: gdwcs datasource: # sql-server driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver - url: jdbc:sqlserver://127.0.0.1:1433;databasename=jsasrs + #url: jdbc:sqlserver://192.168.3.99:1433;databasename=gdasrs + #username: sa + #password: eisoft + url: jdbc:sqlserver://localhost:1433;databasename=gdasrs username: sa password: sa@123 mvc: @@ -22,11 +25,11 @@ mybatis-plus: mapper-locations: classpath:mapper/*.xml - global-config: - field-strategy: 0 +# global-config: +# field-strategy: 0 logging: - path: /stock/out/logs + path: /stock/out/wcs/logs super: pwd: xltys1995 @@ -35,64 +38,106 @@ enable: false # 涓嬩綅鏈洪厤缃� -#wcs-slave: - # 鍫嗗灈鏈� +wcs-slave: + # 鍫嗗灈鏈�1 crn[0]: id: 1 - ip: 192.168.6.9 - port: 102 + ip: 192.168.10.39 + port: 5015 rack: 0 slot: 0 - # 鍋忕Щ閲忥紝褰撳爢鍨涙満绔欑偣鍒楀彿=1鏃讹紝鍋忕Щ閲�=0 - offset: 1 + # 鍋忕Щ閲忥紝褰撳爢鍨涙満绔欑偣鍒楀彿=1鏃讹紝鍋忕Щ閲�=2 + offset: 2 # 鍫嗗灈鏈哄叆搴撶珯鐐� crnInStn[0]: devpPlcId: ${wcs-slave.devp[0].id} - staNo: 5 + staNo: 4 row: 2 bay: 1 lev: 1 # 鍫嗗灈鏈哄嚭搴撶珯鐐� crnOutStn[0]: devpPlcId: ${wcs-slave.devp[0].id} - staNo: 6 + staNo: 2 row: 1 + bay: 1 + lev: 1 + # 鍫嗗灈鏈�2 + crn[1]: + id: 2 + ip: 192.168.10.40 + port: 5016 + rack: 0 + slot: 0 + # 鍋忕Щ閲忥紝褰撳爢鍨涙満绔欑偣鍒楀彿=1鏃讹紝鍋忕Щ閲�=0 + offset: 2 + # 鍫嗗灈鏈哄叆搴撶珯鐐� + crnInStn[0]: + devpPlcId: ${wcs-slave.devp[0].id} + staNo: 8 + row: 4 + bay: 1 + lev: 1 + # 鍫嗗灈鏈哄嚭搴撶珯鐐� + crnOutStn[0]: + devpPlcId: ${wcs-slave.devp[0].id} + staNo: 6 + row: 3 bay: 1 lev: 1 # 杈撻�佺嚎 devp[0]: id: 1 - ip: 192.168.2.125 - port: 102 + ip: 192.168.10.65 + port: 6000 rack: 0 slot: 1 - # 鍏ュ簱鍙� + # 鍏ュ簱鍙�1 inSta[0]: - staNo: 2 + staNo: 3 barcode: ${wcs-slave.barcode[0].id} - # 绌烘澘鍏ュ簱鍙� + # 鍏ュ簱鍙�2 + inSta[1]: + staNo: 7 + barcode: ${wcs-slave.barcode[0].id} + # 绌烘澘鍏ュ簱鍙�1 emptyInSta[0]: - staNo: 2 - # 鍑哄簱鍙� + staNo: 3 + # 绌烘澘鍏ュ簱鍙�2 + emptyInSta[1]: + staNo: 7 + # 鍑哄簱鍙�1 outSta[0]: - staNo: 6 + staNo: 1 + # 鍑哄簱鍙�2 + outSta[1]: + staNo: 5 # 鎷f枡鍏ュ簱鍙� pickSta[0]: staNo: 2 # 鏉$爜鎵弿浠� barcode[0]: id: 1 - ip: 192.168.2.150 + ip: 192.168.10.150 port: 51236 - # LED + # LED1 led[0]: id: 1 - ip: 192.168.1.1 - port: 8888 + ip: 192.168.10.61 + port: 5005 + devpPlcId: ${wcs-slave.devp[0].id} + staArr: 1,2 + # LED2 + led[1]: + id: 2 + ip: 192.168.10.62 + port: 5005 + devpPlcId: ${wcs-slave.devp[0].id} + staArr: 5,6 # 纾呯О scale[0]: id: 1 - ip: 192.168.1.1 + ip: 192.168.10.152 port: 8888 diff --git a/src/main/resources/lib/slf4j-api-1.7.30.jar b/src/main/resources/lib/slf4j-api-1.7.30.jar new file mode 100644 index 0000000..29ac26f --- /dev/null +++ b/src/main/resources/lib/slf4j-api-1.7.30.jar Binary files differ diff --git a/src/main/resources/lib/slf4j-simple-1.7.30.jar b/src/main/resources/lib/slf4j-simple-1.7.30.jar new file mode 100644 index 0000000..6debaa9 --- /dev/null +++ b/src/main/resources/lib/slf4j-simple-1.7.30.jar Binary files differ diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml index ee48a59..271942d 100644 --- a/src/main/resources/mapper/WrkMastMapper.xml +++ b/src/main/resources/mapper/WrkMastMapper.xml @@ -75,4 +75,36 @@ order by io_time,wrk_no asc </select> + <select id="selectPakInStep1" resultMap="BaseResultMap"> + select top 1 * from asr_wrk_mast where source_sta_no=#{sourceStaNo} and wrk_sts=2 and barcode=#{barcode} and (io_type=1 or io_type=10) order by io_pri desc,io_time,wrk_no ASC + </select> + + <select id="selectPakInStep11" resultMap="BaseResultMap"> + select top 1 * from asr_wrk_mast where source_sta_no=#{sourceStaNo} and wrk_sts=1 and (io_type=1 or io_type=10) order by io_pri desc,io_time,wrk_no ASC + </select> + + <select id="selectPakInStep2" resultMap="BaseResultMap"> + select top 1 * from dbo.asr_wrk_mast where wrk_sts=2 and crn_no=#{crnNo} and wrk_no=#{workNo} and (io_type=1 or io_type=10 or io_type=53 or io_type=54 or io_type=57) order by io_pri desc,io_time,wrk_no ASC + </select> + + <select id="selectPakInStep3" resultMap="BaseResultMap"> + select top 1 * from dbo.asr_wrk_mast where wrk_no=#{workNo} + </select> + + <select id="selectPickStep" resultMap="BaseResultMap"> + select top 1 * from asr_wrk_mast where wrk_no=#{workNo} and wrk_sts=14 and (io_type=103 or io_type=107 or io_type=104) + </select> + + <select id="selectPakOutStep1" resultMap="BaseResultMap"> + select top 1 * from dbo.asr_wrk_mast where crn_no=#{crnNo} and wrk_sts=11 and io_type>100 order by io_pri desc,io_time,wrk_no asc + </select> + + <select id="selectPakOutStep2" resultMap="BaseResultMap"> + select top 1 * from dbo.asr_wrk_mast where source_sta_no=#{sourceStaNo} and wrk_sts=12 and io_type>100 order by io_pri desc,io_time desc,wrk_no ASC + </select> + + <select id="selectLocMove" resultMap="BaseResultMap"> + select top 1 * from dbo.asr_wrk_mast where wrk_sts=11 and io_type=11 and crn_no=#{crnNo} order by io_time,wrk_no + </select> + </mapper> diff --git a/src/main/webapp/static/css/console.css b/src/main/webapp/static/css/console.css index fca1374..a14069d 100644 --- a/src/main/webapp/static/css/console.css +++ b/src/main/webapp/static/css/console.css @@ -118,7 +118,7 @@ } /* 杈撻�佺嚎绗竴鍒� */ .site-row-1 { - left: 200px; + left: 100px; } .site-row-1 .site { width: 100px; @@ -162,40 +162,15 @@ background-color: yellow; } -/* ------------------ 鍙拌溅 ------------------ */ -/* 杞ㄩ亾 */ -.car-track { - position: absolute; - background: url(../image/bg.jpg); -} -#car-track-1 { - top: 122px; - left: 100px; - width: 100px; - height: 200px; -} - -/* 杞� */ -.car { - position: absolute; -} -.site-8 { - top: 122px; - left: 100px; - width: 100px; - height: 40px; - line-height: 40px -} - /* ------------------ 璐ф灦鎬绘垚 ------------------ */ .main-part { position: absolute; top: 100px; - left: 300px; + left: 200px; } .main-part .lane { - margin-bottom: 30px; + /*margin-bottom: 30px;*/ } /* 鎺掑彿 */ .row-no { @@ -291,37 +266,37 @@ /* 鍏ュ簱 */ -.machine-put { +.machine-put-flag { background-color: #90d0f3; } /* 鍑哄簱 */ -.machine-take { +.machine-take-flag { background-color: yellow; } /* 搴撳埌搴� */ -.machine-stock-move { +.machine-stock-move-flag { background-color: #0c24fb; color: #fff; } /* 绔欏埌绔� */ -.machine-site-move { +.machine-site-move-flag { background-color: #faa328; } /* PToP */ -.machine-p-move { +.machine-p-move-flag { background-color: #128014; color: #fff; } /* 寮傚父 */ -.machine-error { +.machine-error-flag { background-color: red; } /* 鑷姩 */ -.machine-auto { +.machine-auto-flag { background-color: rgb(42,253,47); } /* 闈炶嚜鍔�/鏀跺埌 */ -.machine-unauto { +.machine-unauto-flag { background-color: #aaaaaa; } @@ -332,7 +307,7 @@ position: absolute; background-color:#333!important; color: #333 !important; - width: 90%; + width: 95%; margin-top: 10px; } @@ -343,9 +318,9 @@ /* 鍏ュ簱鍙� */ .cargo-put { - transform: rotateY(180deg); - top: 285px; - left: 313px; + /*transform: rotateY(180deg);*/ + top: 160px; + left: 43px; position: absolute; width: 50px; height: 40px; @@ -373,8 +348,8 @@ } /* 鎵爜鍣�1 */ #code-decoder-1 { - top: 320px; - left: 200px; + top: 144px; + left: 100px; } /* 鎵爜鍣ㄦ暟鎹�1 */ #code-decoder-data-1 { @@ -382,6 +357,17 @@ margin-left: 35px; } +/* 鎵爜鍣�1 */ +#code-decoder-2 { + top: 204px; + left: 100px; +} +/* 鎵爜鍣ㄦ暟鎹�1 */ +#code-decoder-data-2 { + font-size: xx-small; + margin-left: 35px; +} + /* 寮圭獥 */ form .form-item { display: inline-block; diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js index 2009a2e..2f45f5f 100644 --- a/src/main/webapp/static/js/common.js +++ b/src/main/webapp/static/js/common.js @@ -1,4 +1,4 @@ -var baseUrl = "/jswcs"; +var baseUrl = "/gdwcs"; // 璧嬪�� function setVal(el, val) { diff --git a/src/main/webapp/views/console.html b/src/main/webapp/views/console.html index 8197622..57c5e84 100644 --- a/src/main/webapp/views/console.html +++ b/src/main/webapp/views/console.html @@ -51,14 +51,14 @@ <div class="tips-item"> <label>鍫嗗灈鏈虹姸鎬侀鑹�: </label> <div class="item-group"> - <span class="machine-put">鍏ュ簱</span> - <span class="machine-take">鍑哄簱</span> - <span class="machine-stock-move">搴撳埌搴�</span> - <span class="machine-site-move">绔欏埌绔�</span> - <span class="machine-p-move">PToP</span> - <span class="machine-error">寮傚父</span> - <span class="machine-auto">鑷姩</span> - <span class="machine-unauto">闈炶嚜鍔�/鎵嬪姩</span> + <span class="machine-put-flag">鍏ュ簱</span> + <span class="machine-take-flag">鍑哄簱</span> + <span class="machine-stock-move-flag">搴撳埌搴�</span> + <span class="machine-site-move-flag">绔欏埌绔�</span> + <span class="machine-p-move-flag">PToP</span> + <span class="machine-error-flag">寮傚父</span> + <span class="machine-auto-flag">鑷姩</span> + <span class="machine-unauto-flag">闈炶嚜鍔�/鎵嬪姩</span> </div> </div> <div class="tips-item"> @@ -79,27 +79,26 @@ <!----------- 宸ュ叿鏍� ----------> <!-- 鍏ュ簱鍙� --> <div class="cargo-put"></div> - <!-- 鎵爜鍣� --> - <div id="code-decoder-1" class="code-decoder"> - <span id="code-decoder-data-1" class="code-decoder-data">0</span> - </div> + +<!-- <!– 鎵爜鍣� 1–>--> +<!-- <div id="code-decoder-1" class="code-decoder">--> +<!-- <span id="code-decoder-data-1" class="code-decoder-data">0</span>--> +<!-- </div>--> + +<!-- <!– 鎵爜鍣� 2–>--> +<!-- <div id="code-decoder-2" class="code-decoder">--> +<!-- <span id="code-decoder-data-2" class="code-decoder-data">0</span>--> +<!-- </div>--> <!----------- 宸﹁緭閫佺嚎 ----------> - <!-- 鍙拌溅杞ㄩ亾 --> - <div id="car-track-1" class="car-track"></div> - - <!-- 鍙拌溅瀹炰緥 --> - <div id="site-8" class="site car">8</div> - <!-- 绗竴鍒楋紙瀹藉害 100px锛� --> <div class="site-row site-row-1"> - <div id="site-7" class="site" style="height: 40px;line-height: 40px">7</div> - <div id="site-4" class="site" style="height: 40px;line-height: 40px">4</div> - <div id="site-3" class="site" style="height: 40px;line-height: 40px;">3</div> - <div id="site-2" class="site" style="height: 40px;line-height: 40px">2</div> - <div id="site-1" class="site" style="height: 40px;line-height: 40px">1</div> + <div id="site-1" class="site" style="height: 20px;line-height: 20px;">1</div> + <div id="site-3" class="site" style="height: 20px;line-height: 20px; margin-top: 20px">3</div> + <div id="site-5" class="site" style="height: 20px;line-height: 20px; margin-top: 0px">5</div> + <div id="site-7" class="site" style="height: 20px;line-height: 20px; margin-top: 20px">7</div> </div> <!-- 璐ф灦 + 鍫嗗灈鏈� + 鍏ュ簱绔欑偣 + 鍑哄簱绔欑偣 --> @@ -109,8 +108,7 @@ <span class="row-no">1#</span> <!-- 璐ф灦 --> <div class="stock-group"> - <div id="site-6" class="site" style="">6</div> - <button class="item">1</button> + <div id="site-2" class="site" style="">2</div> <button class="item">2</button> <button class="item">3</button> <button class="item">4</button> @@ -144,6 +142,23 @@ <button class="item">32</button> <button class="item">33</button> <button class="item">34</button> + <button class="item">35</button> + <button class="item">36</button> + <button class="item">37</button> + <button class="item">38</button> + <button class="item">39</button> + <button class="item">40</button> + <button class="item">41</button> + <button class="item">42</button> + <button class="item">43</button> + <button class="item">44</button> + <button class="item">45</button> + <button class="item">46</button> + <button class="item">47</button> + <button class="item">48</button> + <button class="item">49</button> + <button class="item">50</button> + <button class="item">51</button> <div class="site site-none"> </div> </div> <!-- 鍫嗗灈鏈� --> @@ -153,8 +168,7 @@ </div> <!-- 璐ф灦 --> <div class="stock-group"> - <div id="site-5" class="site" style="">5</div> - <button class="item">1</button> + <div id="site-4" class="site" style="">4</div> <button class="item">2</button> <button class="item">3</button> <button class="item">4</button> @@ -188,9 +202,143 @@ <button class="item">32</button> <button class="item">33</button> <button class="item">34</button> + <button class="item">35</button> + <button class="item">36</button> + <button class="item">37</button> + <button class="item">38</button> + <button class="item">39</button> + <button class="item">40</button> + <button class="item">41</button> + <button class="item">42</button> + <button class="item">43</button> + <button class="item">44</button> + <button class="item">45</button> + <button class="item">46</button> + <button class="item">47</button> + <button class="item">48</button> + <button class="item">49</button> + <button class="item">50</button> + <button class="item">51</button> <div class="site site-none"> </div> </div> - <span class="row-no">2#</span> + </div> + <div class="lane"> + <!-- 璐ф灦 --> + <div class="stock-group"> + <div id="site-6" class="site" style="">6</div> + <button class="item">2</button> + <button class="item">3</button> + <button class="item">4</button> + <button class="item">5</button> + <button class="item">6</button> + <button class="item">7</button> + <button class="item">8</button> + <button class="item">9</button> + <button class="item">10</button> + <button class="item">11</button> + <button class="item">12</button> + <button class="item">13</button> + <button class="item">14</button> + <button class="item">15</button> + <button class="item">16</button> + <button class="item">17</button> + <button class="item">18</button> + <button class="item">19</button> + <button class="item">20</button> + <button class="item">21</button> + <button class="item">22</button> + <button class="item">23</button> + <button class="item">24</button> + <button class="item">25</button> + <button class="item">26</button> + <button class="item">27</button> + <button class="item">28</button> + <button class="item">29</button> + <button class="item">30</button> + <button class="item">31</button> + <button class="item">32</button> + <button class="item">33</button> + <button class="item">34</button> + <button class="item">35</button> + <button class="item">36</button> + <button class="item">37</button> + <button class="item">38</button> + <button class="item">39</button> + <button class="item">40</button> + <button class="item">41</button> + <button class="item">42</button> + <button class="item">43</button> + <button class="item">44</button> + <button class="item">45</button> + <button class="item">46</button> + <button class="item">47</button> + <button class="item">48</button> + <button class="item">49</button> + <button class="item">50</button> + <button class="item">51</button> + <div class="site site-none"> </div> + </div> + <!-- 鍫嗗灈鏈� --> + <div class="crn"> + <hr class="pathway"> + <div id="crn-2" class="machine"></div> + </div> + <!-- 璐ф灦 --> + <div class="stock-group"> + <div id="site-8" class="site" style="">8</div> + <button class="item">2</button> + <button class="item">3</button> + <button class="item">4</button> + <button class="item">5</button> + <button class="item">6</button> + <button class="item">7</button> + <button class="item">8</button> + <button class="item">9</button> + <button class="item">10</button> + <button class="item">11</button> + <button class="item">12</button> + <button class="item">13</button> + <button class="item">14</button> + <button class="item">15</button> + <button class="item">16</button> + <button class="item">17</button> + <button class="item">18</button> + <button class="item">19</button> + <button class="item">20</button> + <button class="item">21</button> + <button class="item">22</button> + <button class="item">23</button> + <button class="item">24</button> + <button class="item">25</button> + <button class="item">26</button> + <button class="item">27</button> + <button class="item">28</button> + <button class="item">29</button> + <button class="item">30</button> + <button class="item">31</button> + <button class="item">32</button> + <button class="item">33</button> + <button class="item">34</button> + <button class="item">35</button> + <button class="item">36</button> + <button class="item">37</button> + <button class="item">38</button> + <button class="item">39</button> + <button class="item">40</button> + <button class="item">41</button> + <button class="item">42</button> + <button class="item">43</button> + <button class="item">44</button> + <button class="item">45</button> + <button class="item">46</button> + <button class="item">47</button> + <button class="item">48</button> + <button class="item">49</button> + <button class="item">50</button> + <button class="item">51</button> + <div class="site site-none"> </div> + </div> + <span class="row-no">4#</span> </div> </div> </main> @@ -459,7 +607,7 @@ } else if (res.code === 403){ window.location.href = baseUrl+"/login"; } else { - alert(res.msg); + console.log(res.msg); } } }); @@ -486,7 +634,7 @@ } else if (res.code === 403){ window.location.href = baseUrl+"/login"; } else { - alert(res.msg); + console.log(res.msg); } } }); @@ -511,9 +659,9 @@ } } } else if (res.code === 403){ - window.location.href = baseUrl+"/login"; + parent.location.href = baseUrl+"/login"; } else { - alert(res.msg); + console.log(res.msg); } } }); @@ -532,12 +680,13 @@ var crnEl = $("#crn-"+crns[i].crnId); crnEl.attr("class", "machine " + crns[i].crnStatus); // crnAnimate(crns[i].crnId, crns[i].offset); - crnEl.animate({left: (crns[i].bay * ($('.item').eq(0).width()+4)) +'px'}, 1000); + var unit = $('.item').eq(0).width()+4; + crnEl.animate({left: (crns[i].bay * unit + 20) +'px'}, 1000); } } else if (res.code === 403){ window.location.href = baseUrl+"/login"; } else { - alert(res.msg); + console.log(res.msg); } } }); @@ -558,7 +707,7 @@ } else if (res.code === 403){ window.location.href = baseUrl+"/login"; } else { - alert(res.msg); + console.log(res.msg); } } }); @@ -678,17 +827,17 @@ } - // 鍙拌溅鐐瑰嚮浜嬩欢 - $(document).on("click", ".car", function () { - var value = prompt('鐩爣绔欙細', "1"); - if (value == null) { - alert('涓嶈兘涓虹┖锛�'); - } else if (value === '') { - alert('涓嶈兘涓虹┖锛�'); - } else { - carAnimate(8, Number(value)); - } - }) + // // 鍙拌溅鐐瑰嚮浜嬩欢 + // $(document).on("click", ".item", function () { + // var value = prompt('鐩爣绔欙細', "1"); + // if (value == null) { + // alert('涓嶈兘涓虹┖锛�'); + // } else if (value === '') { + // alert('涓嶈兘涓虹┖锛�'); + // } else { + // carAnimate(8, Number(value)); + // } + // }) </script> </html> \ No newline at end of file diff --git a/src/main/webapp/views/crn.html b/src/main/webapp/views/crn.html index 7f74fb4..bc1fd92 100644 --- a/src/main/webapp/views/crn.html +++ b/src/main/webapp/views/crn.html @@ -27,11 +27,11 @@ <span> </span> <input id="crn1" disabled="disabled"> </div> -<!-- <div class="crn-command-item">--> -<!-- <label>2#</label>--> -<!-- <span> </span>--> -<!-- <input id="crn2" disabled="disabled">--> -<!-- </div>--> + <div class="crn-command-item"> + <label>2#</label> + <span> </span> + <input id="crn2" disabled="disabled"> + </div> </div> <!-- 鍫嗗灈鏈虹姸鎬佷綅淇℃伅 --> <div class="crn-state"> @@ -39,15 +39,17 @@ <thead> <tr> <th>鍫嗗灈鏈�</th> - <th>浠诲姟鍙�</th> <th>妯″紡</th> <th>鐘舵��</th> - <th>鎶ヨ</th> <th>鏈夌墿</th> <th>鍒�</th> <th>灞�</th> + <th>璧拌鍘熺偣</th> + <th>鍗囬檷鍘熺偣</th> <th>璐у弶浣嶇疆</th> - <th>杞借揣鍙颁綅缃�</th> + <th>璧拌瀹氫綅</th> + <th>鍗囬檷瀹氫綅</th> + <th>鎬ュ仠</th> <th>寮傚父鐮�</th> </tr> </thead> @@ -69,6 +71,13 @@ <th>婧愬簱浣�</th> <th>鐩爣搴撲綅</th> <th>寮傚父</th> + <th>璧拌閫熷害锛坢/min)</th> + <th>鍗囬檷閫熷害锛坢/min)</th> + <th>鍙夌墮閫熷害锛坢/min)</th> + <th>璧拌璺濈(Km)</th> + <th>鍗囬檷璺濈(Km)</th> + <th>璧拌鏃堕暱(H)</th> + <th>鍗囬檷鏃堕暱(H)</th> </tr> </thead> <tbody> @@ -92,7 +101,7 @@ <span class="select-title">鍫嗗灈鏈哄彿</span> <div class="select-container"> <label><input type="radio" name="crnSelect" value="1" checked> 1鍙峰爢鍨涙満</label> -<!-- <label><input type="radio" name="crnSelect" value="2"> 2鍙峰爢鍨涙満</label>--> + <label><input type="radio" name="crnSelect" value="2"> 2鍙峰爢鍨涙満</label> </div> </div> <!-- 婧愮珯/婧愬簱浣� 閫夋嫨 --> @@ -247,16 +256,18 @@ for (var i=1;i<=table.length;i++){ var tr = tableEl.find("tr").eq(i); setVal(tr.children("td").eq(0), table[i-1].crnNo); - setVal(tr.children("td").eq(1), table[i-1].workNo); - setVal(tr.children("td").eq(2), table[i-1].statusType); - setVal(tr.children("td").eq(3), table[i-1].status); - setVal(tr.children("td").eq(4), table[i-1].warn); - setVal(tr.children("td").eq(5), table[i-1].loading); - setVal(tr.children("td").eq(6), table[i-1].bay); - setVal(tr.children("td").eq(7), table[i-1].lev); + setVal(tr.children("td").eq(1), table[i-1].statusType); + setVal(tr.children("td").eq(2), table[i-1].status); + setVal(tr.children("td").eq(3), table[i-1].loading); + setVal(tr.children("td").eq(4), table[i-1].bay); + setVal(tr.children("td").eq(5), table[i-1].lev); + setVal(tr.children("td").eq(6), table[i-1].xorigin); + setVal(tr.children("td").eq(7), table[i-1].yorigin); setVal(tr.children("td").eq(8), table[i-1].forkOffset); - setVal(tr.children("td").eq(9), table[i-1].liftPos); - setVal(tr.children("td").eq(10), table[i-1].warnCode); + setVal(tr.children("td").eq(9), table[i-1].xlocation); + setVal(tr.children("td").eq(10), table[i-1].ylocation); + setVal(tr.children("td").eq(11), table[i-1].stop); + setVal(tr.children("td").eq(12), table[i-1].warnCode); } } else if (res.code === 403){ window.location.href = baseUrl+"/login"; @@ -290,7 +301,14 @@ setVal(tr.children("td").eq(4), table[i-1].staNo); setVal(tr.children("td").eq(5), table[i-1].sourceLocNo); setVal(tr.children("td").eq(6), table[i-1].locNo); - setVal(tr.children("td").eq(6), table[i-1].error); + setVal(tr.children("td").eq(7), table[i-1].error); + setVal(tr.children("td").eq(8), table[i-1].xspeed); + setVal(tr.children("td").eq(9), table[i-1].yspeed); + setVal(tr.children("td").eq(10), table[i-1].zspeed); + setVal(tr.children("td").eq(11), table[i-1].xdistance); + setVal(tr.children("td").eq(12), table[i-1].ydistance); + setVal(tr.children("td").eq(13), table[i-1].xduration); + setVal(tr.children("td").eq(14), table[i-1].yduration); } } else if (res.code === 403){ window.location.href = baseUrl+"/login"; @@ -457,6 +475,8 @@ " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + " </tr>\n"; } $('#crn-state-table tbody').after(html); @@ -486,6 +506,13 @@ " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + " </tr>\n"; } $('#crn-msg-table tbody').after(html); diff --git a/src/main/webapp/views/pipeline.html b/src/main/webapp/views/pipeline.html index 8bd1f02..8c19df6 100644 --- a/src/main/webapp/views/pipeline.html +++ b/src/main/webapp/views/pipeline.html @@ -62,7 +62,7 @@ <th>鏈夌墿</th> <th>鍙叆</th> <th>鍙嚭</th> - <th>闇�姹�1</th> + <th>鍏ュ簱鏍囪</th> <th>绌烘澘淇″彿</th> <th>鐩爣绔�</th> </tr> @@ -147,7 +147,7 @@ } else if (res.code === 403){ window.location.href = baseUrl+"/login"; } else { - alert(res.msg); + console.log(res.msg); } } }); @@ -175,14 +175,14 @@ setVal(tr.children("td").eq(3), table[i-1].loading); setVal(tr.children("td").eq(4), table[i-1].inEnable); setVal(tr.children("td").eq(5), table[i-1].outEnable); - setVal(tr.children("td").eq(6), table[i-1].inreq1); + setVal(tr.children("td").eq(6), table[i-1].pakMk); setVal(tr.children("td").eq(7), table[i-1].emptyMk); setVal(tr.children("td").eq(8), table[i-1].staNo); } } else if (res.code === 403){ window.location.href = baseUrl+"/login"; } else { - alert(res.msg); + console.log(res.msg); } } }); -- Gitblit v1.9.1