pom.xml
@@ -9,13 +9,13 @@ <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.zy</groupId> <artifactId>jdzwcs</artifactId> <artifactId>scwcs</artifactId> <version>1.0.0</version> <packaging>war</packaging> <properties> <java.version>1.8</java.version> <cool.version>3.4.5</cool.version> <cool.version>3.4.0</cool.version> <mysql-driver.version>5.1.47</mysql-driver.version> <mybatis-plus.version>2.3.2</mybatis-plus.version> <fastjson.version>1.2.58</fastjson.version> @@ -200,7 +200,7 @@ </dependencies> <build> <finalName>jdzwcs</finalName> <finalName>scwcs</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> src/main/java/com/zy/asrs/controller/CrnController.java
@@ -429,12 +429,12 @@ command.setTaskNo((short) 0); // 工作号 command.setAckFinish((short) 0); // 任务完成确认位 command.setTaskMode(CrnTaskModeType.LOC_MOVE); // 任务模式 command.setSourcePosZ(param.getSourceRow()); // 源库位排 command.setSourcePosX(param.getSourceBay()); // 源库位列 command.setSourcePosY(param.getSourceLev()); // 源库位层 command.setDestinationPosZ(param.getRow()); // 目标库位排 command.setDestinationPosX(param.getBay()); // 目标库位列 command.setDestinationPosY(param.getLev()); // 目标库位层 command.setSourcePosX(param.getSourceRow()); // 源库位排 command.setSourcePosY(param.getSourceBay()); // 源库位列 command.setSourcePosZ(param.getSourceLev()); // 源库位层 command.setDestinationPosX(param.getRow()); // 目标库位排 command.setDestinationPosY(param.getBay()); // 目标库位列 command.setDestinationPosZ(param.getLev()); // 目标库位层 // command.setCommand((short)1); LocMast sourceLoc = locMastService.selectOne(new EntityWrapper<LocMast>().eq("row1", command.getSourcePosX()) .eq("bay1", command.getSourcePosY()).eq("lev1", command.getSourcePosZ())); src/main/java/com/zy/asrs/entity/param/StorageEscalationParam.java
@@ -10,4 +10,8 @@ private Integer WCSStatus=0; //错误信息 具体的错误信息(超高,超重等) private String WCSErrorMessage=""; //是否满板 1满板 0空板 private int StaType=1; //库位类型 1高库位 0低库位 private int LocType=0; } src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -30,7 +30,7 @@ LocMast queryDemoSourceLoc(@Param("crnNo") Integer crnNo); LocMast queryDemoLoc(@Param("crnNo") Integer crnNo); LocMast queryDemoLoc(@Param("crnNo") Integer crnNo,@Param("locType1") short locType1); @Select("select count(*) as count from asr_loc_mast where 1=1 and loc_sts = 'O' and loc_type1 = #{locType1} and crn_no = #{crnNo}") Integer selectEmptyLocCount(@Param("locType1") Short locType1, @Param("crnNo") Integer crnNo); src/main/java/com/zy/asrs/service/LocMastService.java
@@ -37,7 +37,7 @@ * @param crn * @return */ LocMast queryDemoLoc(Integer crn); LocMast queryDemoLoc(Integer crn,short locType1); /** * 检查当前库位所属巷道的空库位数量 src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -59,8 +59,8 @@ } @Override public LocMast queryDemoLoc(Integer crn) { return this.baseMapper.queryDemoLoc(crn); public LocMast queryDemoLoc(Integer crn,short locType1) { return this.baseMapper.queryDemoLoc(crn,locType1); } @Override src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -113,6 +113,70 @@ private CrnController crnController; @Autowired private SiteController siteController; /** * 堆垛机演示 ===>> 库位移转 */ public synchronized void crnDemoOfLocMove1() { try { List <BasCrnp> basCrnps =basCrnpService.selectList(new EntityWrapper<BasCrnp>()); for (BasCrnp crn : basCrnps) { if (!crn.getEmpIn().equals("1")) { continue; } // 必须为演示状态 CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getCrnNo()); CrnProtocol crnProtocol = crnThread.getCrnProtocol(); if (crnProtocol == null) { continue; } // 只有当堆垛机空闲 并且 无任务时才继续执行 if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) { // 获取移库工作档信息 WrkMast wrkMast = wrkMastMapper.selectLocMove(crn.getCrnNo()); if (null != wrkMast) { continue; } LocMast sourceLoc = locMastService.queryDemoSourceLoc(crn.getCrnNo()); LocMast loc = locMastService.queryDemoLoc(crn.getCrnNo(),sourceLoc.getLocType1()); if (null == sourceLoc || null == loc) { continue; } String sourceLocNo = sourceLoc.getLocNo(); String locNo = loc.getLocNo(); // 获取工作号 int workNo = commonService.getWorkNo(0); // 保存工作档 TaskWrk taskWrk = new TaskWrk(); taskWrk.setWrkNo(workNo); taskWrk.setTaskNo(workNo+"");//任务号 taskWrk.setWrkSts(11); // 工作状态:11.生成出库ID taskWrk.setIoType(3); // 入出库状态: 3.库格移载 taskWrk.setIoPri(13); taskWrk.setCrnNo(crn.getCrnNo()); taskWrk.setStartPoint(sourceLocNo);//起点 taskWrk.setTargetPoint(locNo); taskWrk.setBarcode(sourceLoc.getBarcode()); // 托盘码 taskWrk.setModiTime(new Date()); int res = taskWrkMapper.insert(taskWrk); if (res == 0) { throw new CoolException("保存工作档失败"); }else { loc.setCtnKind(1); locMastService.updateById(loc); } } } } catch (Exception e) { e.printStackTrace(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } } @Synchronized public void shiftTargetToCyclePoint() throws IOException, InterruptedException { try { @@ -164,7 +228,7 @@ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(4, staProtocol5)); } } else { if(staProtocol.isLoading() && (staProtocol.getStaNo() == 105 || staProtocol.getStaNo() == 110 || staProtocol.getStaNo() == 111)){ if (staProtocol.isLoading() && (staProtocol.getStaNo() == 105 || staProtocol.getStaNo() == 110 || staProtocol.getStaNo() == 111)) { short workNo = staProtocol.getWorkNo(); staProtocol.setWorkNo(workNo); staProtocol.setStaNo((short) 112); @@ -221,9 +285,6 @@ } public synchronized void generateStoreWrkFile1() throws IOException, InterruptedException { try { // 根据输送线plc遍历 @@ -276,7 +337,7 @@ // 判断是否满足入库条件 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && !staProtocol.isEmptyMk() && workNo >= 9790 && workNo >= 9990 && staProtocol.isPakMk()) { // 获取条码扫描仪信息 BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode()); @@ -303,6 +364,10 @@ } log.info("组托入库={}", storageEscalationParam); storageEscalationParam.setBoxNo(BoxNo); //是否满板 1满板 0空板 storageEscalationParam.setStaType(staProtocol.isEmptyMk()? 0:1); //库位类型 1高库位 0低库位 storageEscalationParam.setLocType(staProtocol.isHigh()? 1:0); String response = ""; Boolean success = false; try { @@ -313,20 +378,13 @@ .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); if(back){ if(staProtocol.getWorkNo()>=9801&&staProtocol.getWorkNo()<=9825){ staProtocol.setStaNo((short)105); } else if (staProtocol.getWorkNo()>=9826&&staProtocol.getWorkNo()<=9850) { staProtocol.setStaNo((short)107); }else if (staProtocol.getWorkNo()>=9851&&staProtocol.getWorkNo()<=9875) { staProtocol.setStaNo((short)109); }else if (staProtocol.getWorkNo()>=9876 && staProtocol.getWorkNo() <= 9900){ staProtocol.setStaNo((short)110); } if (back) { staProtocol.setWorkNo((short) 9991); staProtocol.setStaNo(inSta.getBackSta().shortValue()); devpThread.setPakMk(staProtocol.getSiteId(), false); MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); }else{ if (!Cools.isEmpty(response)&&!Cools.isEmpty(jsonObject.get("ReturnStatus"))&&jsonObject.get("ReturnStatus").equals(0) && !Cools.isEmpty(jsonObject.get("Result").toString())) { } else { if (!Cools.isEmpty(response) && !Cools.isEmpty(jsonObject.get("ReturnStatus")) && jsonObject.get("ReturnStatus").equals(0) && !Cools.isEmpty(jsonObject.get("Result").toString())) { Result result = JSON.parseObject(jsonObject.get("Result").toString(), Result.class); // 创新一个入库工作档 TaskWrk taskWrk = taskWrkService.selectByTaskNo(result.getTaskNo()); @@ -342,7 +400,7 @@ staProtocol.setStaNo(staDesc.getCrnStn().shortValue()); MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); HashMap<String, Object> hashMap = new HashMap<>(); hashMap.put("TaskNo",taskWrk.getTaskNo()); hashMap.put("TaskNo", taskWrk.getTaskNo()); try { //开始上报,任务开始时,WCS回调WMS response = new HttpHandler.Builder() @@ -353,7 +411,7 @@ .doPost(); JSONObject jsonObject1 = JSON.parseObject(response); Boolean bool = false; if(jsonObject1.get("ReturnStatus").equals(0)){ if (jsonObject1.get("ReturnStatus").equals(0)) { taskWrk.setStatus(2);//派发任务 bool = true; taskWrkService.updateById(taskWrk); @@ -371,22 +429,14 @@ } } } else { // staProtocol.setWorkNo((short) 9991); if(staProtocol.getWorkNo()>=9801&&staProtocol.getWorkNo()<=9825){ staProtocol.setStaNo((short)105); } else if (staProtocol.getWorkNo()>=9826&&staProtocol.getWorkNo()<=9850) { staProtocol.setStaNo((short)107); }else if (staProtocol.getWorkNo()>=9851&&staProtocol.getWorkNo()<=9875) { staProtocol.setStaNo((short)109); }else{ staProtocol.setStaNo((short)110); } staProtocol.setWorkNo((short) 9991); staProtocol.setStaNo(inSta.getBackSta().shortValue()); devpThread.setPakMk(staProtocol.getSiteId(), false); MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); } } else { // staProtocol.setWorkNo((short) 9991); staProtocol.setWorkNo((short) 9991); staProtocol.setStaNo(inSta.getBackSta().shortValue()); devpThread.setPakMk(staProtocol.getSiteId(), false); MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); @@ -876,7 +926,7 @@ crnCommand.setDestinationPosY(Utils.getBayShort(taskWrk.getTargetPoint())); // 目标库位层 crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrk.getTargetPoint())); // 目标库位排 crnCommand.setCommand((short) 1); log.info("堆垛机入库任务下发={}",crnCommand); log.info("堆垛机入库任务下发={}", crnCommand); if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand), false)) { log.error("堆垛机命令生成失败,堆垛机号={},任务数据={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand)); throw new CoolException("堆垛机命令生成失败"); @@ -896,7 +946,7 @@ * 出库 ===>> 库位到堆垛机站 * 2022-06-09 TQS修改,查询工作档LIST,遍历下发,防止第一个任务堵塞出库 */ public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol) { public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol) { List<TaskWrk> taskWrksInitial = taskWrkMapper.selectPakOut(slave.getId(), null); if (taskWrksInitial.size() == 0) { return; @@ -916,24 +966,24 @@ continue; } LocMast locMast=locMastService.selectByLocNo(taskWrk.getStartPoint()); LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint()); //判断其库位是否为深库位,如果为深库位找其浅库位是都有货 if(locMast.getRow1()==1||locMast.getRow1()==5){ LocMast locMast1=locMastService.selectOne(new EntityWrapper<LocMast>() .eq("row1", (locMast.getRow1()+1)) .eq("bay1",locMast.getBay1()) .eq("lev1",locMast.getLev1()).eq("loc_sts","F")); if (!Cools.isEmpty(locMast1)){ log.info(locMast.getLocNo()+"出深库位,浅库位有货"); if (locMast.getRow1() == 1 || locMast.getRow1() == 5) { LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>() .eq("row1", (locMast.getRow1() + 1)) .eq("bay1", locMast.getBay1()) .eq("lev1", locMast.getLev1()).eq("loc_sts", "F")); if (!Cools.isEmpty(locMast1)) { log.info(locMast.getLocNo() + "出深库位,浅库位有货"); continue; } }else if(locMast.getRow1()==4||locMast.getRow1()==8){ LocMast locMast1=locMastService.selectOne(new EntityWrapper<LocMast>() .eq("row1", (locMast.getRow1()-1)) .eq("bay1",locMast.getBay1()) .eq("lev1",locMast.getLev1()).eq("loc_sts","F")); if (!Cools.isEmpty(locMast1)){ log.info(locMast.getLocNo()+"出深库位,浅库位有货"); } else if (locMast.getRow1() == 4 || locMast.getRow1() == 8) { LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>() .eq("row1", (locMast.getRow1() - 1)) .eq("bay1", locMast.getBay1()) .eq("lev1", locMast.getLev1()).eq("loc_sts", "F")); if (!Cools.isEmpty(locMast1)) { log.info(locMast.getLocNo() + "出深库位,浅库位有货"); continue; } } @@ -964,8 +1014,8 @@ break; } int storeCount = basDevpService.getStoreCount(); if(storeCount >= maxCount){ log.error("输送线暂存数达到上限{}",storeCount); if (storeCount >= maxCount) { log.error("输送线暂存数达到上限{}", storeCount); break; } @@ -1104,7 +1154,7 @@ log.error("修改工作档状态 11.生成出库ID => 12.吊车出库中 失败!!,工作号={}", taskWrk.getWrkNo()); } String response = ""; Boolean bool=false; Boolean bool = false; HashMap<String, Object> headParam = new HashMap<>(); headParam.put("TaskNo", taskWrk.getTaskNo()); try { @@ -1116,7 +1166,7 @@ .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); if(jsonObject.get("ReturnStatus").equals(0)){ if (jsonObject.get("ReturnStatus").equals(0)) { bool = true; taskWrk.setStatus(2); taskWrkMapper.updateById(taskWrk); @@ -1125,7 +1175,7 @@ } catch (Exception e) { log.error("wcs派发移库库任务上报wms失败", taskWrk); // throw new CoolException("wcs派发移库库任务上报wms失败"); }finally { } finally { apiLogService.save("wcs派发移库任务上报wms" , wmsUrl + taskStatusFeedbackPath , null @@ -1216,7 +1266,7 @@ crnOperatorParam.setCrnNo(crn.getId()); R r = crnController.crnTaskComplete(crnOperatorParam); Thread.sleep(1000); if(!r.get("code").equals(200)){ if (!r.get("code").equals(200)) { return; } if (!Cools.isEmpty(taskWrk)) { src/main/java/com/zy/asrs/task/TaskLogScheduler.java
@@ -11,7 +11,10 @@ import com.zy.asrs.service.*; import com.zy.asrs.service.impl.TaskWrkLogServiceImpl; import com.zy.asrs.utils.PostMesDataUtils; import com.zy.common.service.CommonService; import com.zy.common.utils.HttpHandler; import com.zy.system.entity.Config; import com.zy.system.service.ConfigService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -57,30 +60,15 @@ private String TaskExecCallback; @Value("${wms.taskStatusFeedbackPath}") private String taskStatusFeedbackPath; @Autowired private ConfigService configService; @Scheduled(cron = "0/3 * * * * ? ") public void execute() throws IOException { for (TaskWrk taskWrk : taskWrkService.selectToBeHistoryData()) { HashMap<String, Object> headParam = new HashMap<>(); if (taskWrk.getStatus().equals(TaskStatusType.OVER.id) || taskWrk.getStatus() == 7) {//完成 headParam.put("Result", 1); } else if (taskWrk.getStatus().equals(TaskStatusType.CANCEL.id)) { headParam.put("Result", 2); } String response = ""; Boolean bool = false; try { headParam.put("TaskNo", taskWrk.getTaskNo()); log.info("wcs手动完成任务上报wms={}", taskWrk); response = new HttpHandler.Builder() // .setHeaders(headParam) .setUri(wmsUrl) .setPath(TaskExecCallback) .setJson(JSON.toJSONString(headParam)) .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); Config config =configService.selectByCode("ysms"); if(config.getValue().equals("Y")&&taskWrk.getIoType()==3){ TaskWrkLog taskWrkLog = new TaskWrkLog(taskWrk); if (!wrkLogService.insert(taskWrkLog)) { throw new CoolException("转历史档失败" + taskWrkLog); @@ -88,19 +76,48 @@ if (!taskWrkService.deleteById(taskWrk)) { throw new CoolException("任务档删除失败" + taskWrkLog); } bool = true; } catch (Exception e) { log.error("wcs手动完成任务上报wms失败{},返回值={}", taskWrk, response); } finally { apiLogService.save("wcs完成或者取消任务上报wms" , wmsUrl + TaskExecCallback , null , "127.0.0.1" , JSON.toJSONString(headParam) , response , bool ); }else{ HashMap<String, Object> headParam = new HashMap<>(); if (taskWrk.getStatus().equals(TaskStatusType.OVER.id) || taskWrk.getStatus() == 7) {//完成 headParam.put("Result", 1); } else if (taskWrk.getStatus().equals(TaskStatusType.CANCEL.id)) { headParam.put("Result", 2); } String response = ""; Boolean bool = false; try { headParam.put("TaskNo", taskWrk.getTaskNo()); log.info("wcs手动完成任务上报wms={}", taskWrk); response = new HttpHandler.Builder() // .setHeaders(headParam) .setUri(wmsUrl) .setPath(TaskExecCallback) .setJson(JSON.toJSONString(headParam)) .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); TaskWrkLog taskWrkLog = new TaskWrkLog(taskWrk); if (!wrkLogService.insert(taskWrkLog)) { throw new CoolException("转历史档失败" + taskWrkLog); } if (!taskWrkService.deleteById(taskWrk)) { throw new CoolException("任务档删除失败" + taskWrkLog); } bool = true; } catch (Exception e) { log.error("wcs手动完成任务上报wms失败{},返回值={}", taskWrk, response); } finally { apiLogService.save("wcs完成或者取消任务上报wms" , wmsUrl + TaskExecCallback , null , "127.0.0.1" , JSON.toJSONString(headParam) , response , bool ); } } } } src/main/java/com/zy/core/MainProcess.java
@@ -47,7 +47,7 @@ } // 演示 // mainService.crnDemoOfLocMove1(); mainService.crnDemoOfLocMove1(); // 入库 ===>> 入库站到堆垛机站,根据条码扫描生成入库工作档 mainService.generateStoreWrkFile1(); // 组托 // 出库 ===>> 堆垛机出库站到出库站 @@ -68,13 +68,13 @@ //环形循环函数 // mainService.shiftTargetToCyclePoint(); // mainService.shiftCyclePointToTarget(); i++; if (i > 2) { //环形循环函数 mainService.shiftTargetToCyclePoint(); mainService.shiftCyclePointToTarget(); i = 0; } // i++; // if (i > 2) { // //环形循环函数 // mainService.shiftTargetToCyclePoint(); // mainService.shiftCyclePointToTarget(); // i = 0; // } //自动派发任务 // mainService.autoDistribute(); src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -192,7 +192,7 @@ OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId())); OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功", DateUtils.convert(new Date()), slave.getId())); // 复位信号 if (crnProtocol.getTaskFinish() == 0) { src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -49,32 +49,72 @@ private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>(); private short heartBeatVal = 1; public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{ add(100);add(101);add(102);add(103);add(104); add(105);add(106);add(107);add(108);add(109); add(110);add(111);add(112);add(113);add(114); add(115);add(116);add(117);add(118);add(119); add(120);add(121);add(122);add(123);add(124); add(125);add(1001);add(1002);add(1003);add(1004); add(1001); add(1002); add(1003); add(1004); add(1005); add(1010); add(1006); add(1007); add(1008); add(1009); add(1011); add(1012); add(1013); add(1014); add(1015); add(1016); add(1017); add(1018); add(1019); add(1020); }}; /*public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{ add(200);add(201);add(202);add(203); add(204);add(205);add(206);add(207); add(208);add(209);add(210);add(211); add(212);add(213);add(214);add(215); add(216);add(217);add(218);add(219); add(220);add(221);add(222);add(223); add(224);add(225);add(226);add(227); add(228);add(229);add(230);add(231); add(232);add(233);add(234);add(235); public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{ add(2001); add(2002); add(2003); add(2004); add(2005); add(2006); add(2007); add(2008); add(2009); add(2010); add(2011); add(2012); add(2013); add(2014); add(2015); add(2016); add(2017); add(2018); add(2019); }}; public static final ArrayList<Integer> staNos3 = new ArrayList<Integer>() {{ add(300);add(301);add(302);add(303); add(304);add(305);add(306);add(307); add(1051); add(1052); add(1053); add(1054); add(1055); add(1056); add(1057); add(1058); }}; public static final ArrayList<Integer> staNos4 = new ArrayList<Integer>() {{ add(400);add(401);add(402);add(403); add(404);add(405);add(406);add(407); }};*/ add(2051); add(2052); add(2053); add(2054); add(2055); add(2056); add(2057); add(2058); }}; /** * 条码数量 @@ -90,17 +130,18 @@ * 4.出库模式 */ public IoModeType ioModeOf2F = IoModeType.NONE; // public IoModeType ioMode = IoModeType.NONE; // public IoModeType ioMode = IoModeType.NONE; private ArrayList<Integer> getStaNo() { switch (slave.getId()) { case 1: return staNos1; /*case 2: case 2: return staNos2; case 3: return staNos3; case 4: return staNos4;*/ return staNos4; default: throw new CoolException("服务器异常"); } @@ -128,12 +169,12 @@ break; // 写数据 ID+目标站 case 2: write((StaProtocol)task.getData()); write((StaProtocol) task.getData()); read(); break; // 写数据 ID+目标站 case 4: writeCycle((StaProtocol)task.getData()); writeCycle((StaProtocol) task.getData()); read(); break; /* case 3: @@ -187,12 +228,12 @@ siemensS7Net.setRack(slave.getRack().byteValue()); siemensS7Net.setSlot(slave.getSlot().byteValue()); OperateResult connect = siemensS7Net.ConnectServer(); if(connect.IsSuccess){ 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}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); 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}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); log.error("输送线plc连接失败!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); // DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); // deviceErrorService.addDeviceError("devp", slave.getId(), "输送线plc连接失败"); @@ -210,7 +251,7 @@ // updateIoMode(); ArrayList<Integer> staNos = getStaNo(); int staNoSize = staNos.size(); OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize*8)); OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize * 8)); if (result.IsSuccess) { for (int i = 0; i < staNoSize; i++) { Integer siteId = staNos.get(i); // 站点编号 @@ -220,11 +261,11 @@ staProtocol.setSiteId(siteId); station.put(siteId, staProtocol); } staProtocol.setWorkNo((short)siemensS7Net.getByteTransform().TransInt32(result.Content, i*8)); // 工作号 staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, i * 8)); // 工作号 staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*8 + 4)); // 目标站 staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 8 + 4)); // 目标站 boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i*8 + 6, 2); boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i * 8 + 6, 2); staProtocol.setAutoing(status[0]); // 自动 staProtocol.setLoading(status[1]); // 有物 staProtocol.setInEnable(status[2]); // 可入 @@ -240,90 +281,38 @@ } } // OperateResultExOne<byte[]> resultAgvAndPlc = siemensS7Net.Read("DB102.0", (short) 30); // if (resultAgvAndPlc.IsSuccess) { // for (int i = 0; i < staNoSize; i++) { // int sign =(i+2)/2-1; // if ((i+2)%2!=0){ // Integer siteId = staNos.get(i); // 站点编号 // StaProtocol staProtocol = station.get(siteId); // if (null == staProtocol) { // staProtocol = new StaProtocol(); // staProtocol.setSiteId(siteId); // station.put(siteId, staProtocol); // } // staProtocol.setAgvStartPick(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlc.Content, sign*6+4)); // 允许取货 // staProtocol.setAgvStartPlace((short)0); // 允许放货 // continue; // } // Integer siteId = staNos.get(i); // 站点编号 // StaProtocol staProtocol = station.get(siteId); // if (null == staProtocol) { // staProtocol = new StaProtocol(); // staProtocol.setSiteId(siteId); // station.put(siteId, staProtocol); // } // staProtocol.setAgvStartPick(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlc.Content, sign*6)); // 允许取货 // staProtocol.setAgvStartPlace(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlc.Content, sign*6 + 2)); // 允许放货 // } // } // OperateResultExOne<byte[]> resultAgvAndPlcOk = siemensS7Net.Read("DB132.0", (short) 30); // if (resultAgvAndPlcOk.IsSuccess) { // for (int i = 0; i < staNoSize; i++) { // int sign =(i+2)/2-1; // if ((i+2)%2!=0){ // Integer siteId = staNos.get(i); // 站点编号 // StaProtocol staProtocol = station.get(siteId); // if (null == staProtocol) { // staProtocol = new StaProtocol(); // staProtocol.setSiteId(siteId); // station.put(siteId, staProtocol); // } // staProtocol.setAgvTargetPick(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlcOk.Content, sign*6+4)); // 允许取货 // staProtocol.setAgvTargetPlace((short)0); // 允许放货 // continue; // } // Integer siteId = staNos.get(i); // 站点编号 // StaProtocol staProtocol = station.get(siteId); // if (null == staProtocol) { // staProtocol = new StaProtocol(); // staProtocol.setSiteId(siteId); // station.put(siteId, staProtocol); // } // try{ // staProtocol.setAgvTargetPick(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlcOk.Content, sign*6)); // 取货完成 // if (staProtocol.getAgvTargetPick()!=0){ // System.out.println(staProtocol.getAgvTargetPick()); // } // staProtocol.setAgvTargetPlace(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlcOk.Content, sign*6 + 2)); // 放货完成 // if (staProtocol.getAgvTargetPlace()!=0){ // System.out.println(staProtocol.getAgvTargetPlace()); // } // }catch (Exception e){ // log.error(""+e); // } // } // } if (slave.getId() == 1) { //条码 //Thread.sleep(200); OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.848.0", (short) 8); if (result2.IsSuccess) { for (int i = 0; i < 1; i++) { String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 8, "UTF-8"); BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1); if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) { barcodeThread.setBarcode(barcode); } //条码 Thread.sleep(200); OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.840.0", (short) 8); if (result2.IsSuccess) { for (int i = 0; i < 1; i++) { String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 8, "UTF-8"); BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1); if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) { barcodeThread.setBarcode(barcode); } } } //外形检测 OperateResultExOne<byte[]> resultErr1 = siemensS7Net.Read("DB101.810.0", (short) (barcodeSize*1)); StaProtocol staProtocol1 = station.get(116); //外形检测 OperateResultExOne<byte[]> resultErr1 = siemensS7Net.Read("DB101.802.0", (short) (barcodeSize * 1)); if (resultErr1.IsSuccess) { int sta = 0; switch (slave.getId()) { case 1: sta = 1014; break; case 2: sta = 2007; break; case 3: sta = 1052; break; case 4: sta = 2056; break; } StaProtocol staProtocol1 = station.get(sta); boolean[] status1 = siemensS7Net.getByteTransform().TransBool(resultErr1.Content, 0, 1); staProtocol1.setFrontErr(status1[0]); staProtocol1.setBackErr(status1[1]); @@ -332,25 +321,25 @@ staProtocol1.setRightErr(status1[4]); staProtocol1.setWeightErr(status1[5]); staProtocol1.setBarcodeErr(status1[6]); } OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.922.0", (short) (staNoSize * 4)); if (resultErr.IsSuccess) { for (int i = 0; i < staNoSize; i++) { Integer siteId = staNos.get(i); // 站点编号 boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i * 4, 1); StaProtocol staProtocol = station.get(siteId); staProtocol.setBreakerErr(status[0]); staProtocol.setInfraredErr(status[1]); staProtocol.setOutTimeErr(status[2]); staProtocol.setSeizeSeatErr(status[3]); staProtocol.setWrkYgoodsN(status[4]); staProtocol.setInverterErr(status[5]); staProtocol.setContactErr(status[6]); staProtocol.setUpcontactErr(status[7]); } OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.922.0", (short) (staNoSize * 4)); if (resultErr.IsSuccess) { for (int i = 0; i < staNoSize; i++) { Integer siteId = staNos.get(i); // 站点编号 boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i * 4, 1); StaProtocol staProtocol = station.get(siteId); staProtocol.setBreakerErr(status[0]); staProtocol.setInfraredErr(status[1]); staProtocol.setOutTimeErr(status[2]); staProtocol.setSeizeSeatErr(status[3]); staProtocol.setWrkYgoodsN(status[4]); staProtocol.setInverterErr(status[5]); staProtocol.setContactErr(status[6]); staProtocol.setUpcontactErr(status[7]); } } @@ -377,9 +366,8 @@ // this.ioMode = IoModeType.get(result2.Content); // } if (result.IsSuccess ) { OutputQueue.DEVP.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId())); if (result.IsSuccess) { OutputQueue.DEVP.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功", DateUtils.convert(new Date()), slave.getId())); // 根据实时信息更新数据库 try { @@ -418,48 +406,48 @@ } ArrayList<Integer> staNos = getStaNo(); int index = staNos.indexOf(staProtocol.getSiteId()); if (staProtocol.getAgvTypeSign()==0 || staProtocol.getAgvTypeSign()==2 ){ //0取货 switch (staProtocol.getSiteId()){ if (staProtocol.getAgvTypeSign() == 0 || staProtocol.getAgvTypeSign() == 2) { //0取货 switch (staProtocol.getSiteId()) { case 100: index=32; index = 32; break; case 101: index=34; index = 34; break; case 102: index=38; index = 38; break; case 103: index=40; index = 40; break; case 104: index=44; index = 44; break; case 105: index=46; index = 46; break; case 106: index=50; index = 50; break; case 107: index=52; index = 52; break; default: return; } }else { switch (staProtocol.getSiteId()){ } else { switch (staProtocol.getSiteId()) { case 100: index=30; index = 30; break; case 102: index=36; index = 36; break; case 104: index=42; index = 42; break; case 106: index=48; index = 48; break; default: return; @@ -471,28 +459,29 @@ int writeCount = 0; do { short textWrite = 1;// 任务完成 if (staProtocol.getAgvTypeSign()>1){ if (staProtocol.getAgvTypeSign() > 1) { textWrite = 0;// 任务复位 } write = siemensS7Net.Write("DB102." + index, textWrite); if(write.IsSuccess){ writeCount=6; }else { if (write.IsSuccess) { writeCount = 6; } else { writeCount++; log.error("写入输送线取放货完成命令后读取失败。输送线plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); } }while (writeCount<5); } while (writeCount < 5); 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)); } else { 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)); log.info("输送线取放货完成命令下发码垛完成 给输送线写任务完成 [id:{}] >>>>> 命令下发: {}", slave.getId(), JSON.toJSON(staProtocol)); } } private void write(StaProtocol staProtocol) throws InterruptedException { if (staProtocol == null) { return; @@ -510,7 +499,7 @@ boolean writeFlag = false; // 任务下发成功标记 String plcAddressWorkNo = "DB100." + index * 6; String plcAddressStaNo = "DB100." + (index * 6 + 4); Thread.sleep(100); while (writeCount < 5) { // **读取当前PLC状态,避免不必要的写入** OperateResultExOne<byte[]> readResult = siemensS7Net.Read(plcAddressWorkNo, (short) 6); @@ -561,8 +550,8 @@ int writeCount = 0; // 任务下发尝试次数 boolean writeFlag = false; // 任务下发成功标记 String plcAddressWorkNo = ""; String plcAddressStaNo = "" ; switch (staProtocol.getSiteId()){ String plcAddressStaNo = ""; switch (staProtocol.getSiteId()) { case 105: plcAddressWorkNo = "DB73." + 0; plcAddressStaNo = "DB73." + 4; @@ -689,16 +678,16 @@ int writeCount = 0; //任务下发成功标识 boolean writeFlag = false; while(writeCount < 5){ writeResult = siemensS7Net.Write("DB100." + index*4, array); // 工作号、目标站 while (writeCount < 5) { writeResult = siemensS7Net.Write("DB100." + index * 4, array); // 工作号、目标站 if(writeResult.IsSuccess){ if (writeResult.IsSuccess) { Thread.sleep(200); OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index*4, (short)4); if(readResult.IsSuccess){ OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index * 4, (short) 4); if (readResult.IsSuccess) { short workNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 0); short staNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 2); if(staProtocol.getWorkNo().equals(workNo) && staProtocol.getStaNo().equals(staNo)){ if (staProtocol.getWorkNo().equals(workNo) && staProtocol.getStaNo().equals(staNo)) { //任务命令写入成功 writeFlag = true; log.info("写入输送线命令后返回成功,并且回读成功。输送线plc编号={},{},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); @@ -708,7 +697,7 @@ } else {//返回结果是成功了,但是真实值不相同 writeCount++; OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线命令后返回成功,但是读取任务值不一致。输送线plc编号={1},站点数据={2},写入次数={3}", slave.getId(), JSON.toJSON(staProtocol),writeCount)); slave.getId(), JSON.toJSON(staProtocol), writeCount)); log.error("写入输送线命令后返回成功,但是读取任务值不一致。输送线plc编号={},{},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); } @@ -722,7 +711,7 @@ } else { writeCount++; OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线命令失败。输送线plc编号={1},站点数据={2},写入次数={3}", slave.getId(), JSON.toJSON(staProtocol),writeCount)); slave.getId(), JSON.toJSON(staProtocol), writeCount)); log.error("写入输送线命令失败。输送线plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); } @@ -730,9 +719,9 @@ } //写命令尝试了5次还是失败了 if(!writeFlag){ if (!writeFlag) { staProtocol = station.get(staProtocol.getSiteId()); if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) { if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() == 0) { staProtocol.setPakMk(true); } OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线命令尝试5次失败。输送线plc编号={1},站点数据={2}", slave.getId(), JSON.toJSON(staProtocol))); @@ -748,7 +737,7 @@ Integer siteId = staProtocol.getSiteId(); staProtocol = station.get(siteId); if ((siteId == 101 || siteId == 201)&&(staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0)) { if ((siteId == 101 || siteId == 201) && (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() == 0)) { staProtocol.setPakMk(true); } @@ -805,7 +794,7 @@ /** * 心跳 */ private void heartbeat(){ private void heartbeat() { if (heartBeatVal == 1) { heartBeatVal = 2; } else { @@ -837,14 +826,14 @@ ArrayList<Integer> staNos = staNos1; System.out.println(staNos.indexOf(129)); System.out.println(staNos.size()); for (int i = 0; i<staNos.size(); i++) { for (int i = 0; i < staNos.size(); i++) { // System.out.println(i*2); // System.out.println(i*2 + 200); // System.out.println(i); } int index = staNos.indexOf(128); System.out.println(index*2); System.out.println(index*2 + 200); System.out.println(index * 2); System.out.println(index * 2 + 200); } // public static void main(String[] args) throws Exception { src/main/resources/application-prod.yml
@@ -1,6 +1,6 @@ wcs-slave: doubleDeep: true #双深 doubleLocs: 1,4,5,8 #双深库位排号 1,4,5,8 doubleLocs: 1,4 #双深库位排号 1,4 groupCount: 4 #一个堆垛机负责的货架排数 crn[0]: #堆垛机1 id: 1 @@ -10,19 +10,32 @@ rack: 0 offset: 2 #偏移量,当堆垛机站点列号=1时,偏移量=2 port: 102 crnOutStn[0]: #堆垛机出库站点 staNo: 125 row: 3 crnOutStn[0]: #堆垛机出库站点--1F输送线 放货口 staNo: 1002 row: 1 bay: 1 lev: 2 lev: 1 devpPlcId: ${wcs-slave.devp[0].id} crnInStn[0]: #堆垛机入库站点1 staNo: 100 crnInStn[0]: #堆垛机入库站点1--1F输送线 取货口 staNo: 1004 row: 2 bay: 1 lev: 2 lev: 1 backSta: 102 devpPlcId: ${wcs-slave.devp[0].id} crnOutStn[1]: #堆垛机出库站点--2F输送线 放货口 staNo: 2002 row: 1 bay: 59 lev: 11 devpPlcId: ${wcs-slave.devp[1].id} crnInStn[1]: #堆垛机入库站点--2F输送线 取货口 staNo: 2003 row: 2 bay: 59 lev: 11 backSta: 102 devpPlcId: ${wcs-slave.devp[1].id} crn[1]: #堆垛机2 id: 2 ip: 10.10.10.120 @@ -31,43 +44,224 @@ rack: 0 offset: 2 #偏移量,当堆垛机站点列号=1时,偏移量=2 port: 102 crnOutStn[0]: #堆垛机出库站点 staNo: 115 row: 7 crnOutStn[0]: #堆垛机出库站点--1F输送线 放货口 staNo: 1006 row: 3 bay: 1 lev: 2 lev: 1 devpPlcId: ${wcs-slave.devp[0].id} crnInStn[0]: #堆垛机入库站点1 staNo: 120 row: 6 crnInStn[0]: #堆垛机入库站点1--1F输送线 取货口 staNo: 1008 row: 4 bay: 1 lev: 2 lev: 1 backSta: 106 devpPlcId: ${wcs-slave.devp[0].id} devp[0]: #输送线 crnOutStn[1]: #堆垛机出库站点--2F输送线 放货口 staNo: 2002 row: 3 bay: 59 lev: 11 devpPlcId: ${wcs-slave.devp[1].id} crnInStn[1]: #堆垛机入库站点1--2F输送线 取货口 staNo: 2003 row: 4 bay: 59 lev: 11 backSta: 106 devpPlcId: ${wcs-slave.devp[1].id} crn[2]: #堆垛机3 id: 3 ip: 192.168.110.10 slot: 0 demo: false rack: 0 offset: 2 #偏移量,当堆垛机站点列号=1时,偏移量=2 port: 102 crnOutStn[0]: #堆垛机出库站点--1F输送线 放货口 staNo: 1056 row: 6 bay: 1 lev: 1 devpPlcId: ${wcs-slave.devp[2].id} crnInStn[0]: #堆垛机入库站点1--1F输送线 取货口 staNo: 1058 row: 7 bay: 1 lev: 1 backSta: 106 devpPlcId: ${wcs-slave.devp[2].id} crnOutStn[1]: #堆垛机出库站点--2F输送线 放货口 staNo: 2057 row: 7 bay: 1 lev: 13 devpPlcId: ${wcs-slave.devp[3].id} crnInStn[1]: #堆垛机入库站点1--2F输送线 取货口 staNo: 2057 row: 7 bay: 1 lev: 13 backSta: 106 devpPlcId: ${wcs-slave.devp[3].id} crnOutStn[2]: #堆垛机出库站点--2F输送线 放货口 staNo: 2058 row: 6 bay: 1 lev: 13 devpPlcId: ${wcs-slave.devp[3].id} crnInStn[2]: #堆垛机入库站点1--2F输送线 取货口 staNo: 2058 row: 6 bay: 1 lev: 13 backSta: 106 devpPlcId: ${wcs-slave.devp[3].id} crnOutStn[3]: #堆垛机出库站点--2F输送线 放货口 staNo: 2051 row: 7 bay: 13 lev: 13 devpPlcId: ${wcs-slave.devp[3].id} crnInStn[3]: #堆垛机入库站点1--2F输送线 取货口 staNo: 2051 row: 7 bay: 13 lev: 13 backSta: 106 devpPlcId: ${wcs-slave.devp[3].id} crnOutStn[4]: #堆垛机出库站点--2F输送线 放货口 staNo: 2052 row: 7 bay: 10 lev: 13 devpPlcId: ${wcs-slave.devp[3].id} crnInStn[4]: #堆垛机入库站点1--2F输送线 取货口 staNo: 2052 row: 7 bay: 10 lev: 13 backSta: 106 devpPlcId: ${wcs-slave.devp[3].id} crnOutStn[5]: #堆垛机出库站点--2F输送线 放货口 staNo: 2054 row: 7 bay: 4 lev: 13 devpPlcId: ${wcs-slave.devp[3].id} crnInStn[5]: #堆垛机入库站点1--2F输送线 取货口 staNo: 2056 row: 7 bay: 12 lev: 13 backSta: 106 devpPlcId: ${wcs-slave.devp[3].id} devp[0]: #输送线--半成品1F id: 1 ip: 10.10.10.130 ip: 192.168.110.50 rack: 0 port: 102 slot: 0 emptyInSta[0]: #空板入库口0 staNo: 116 staNo: 1014 inSta[0]: #入库口1 staNo: 116 backSta: 110 staNo: 1014 backSta: 1015 barcode: ${wcs-slave.barcode[0].id} outSta[0]: #出库口1 staNo: 105 staNo: 1019 outSta[1]: #出库口2 staNo: 107 staNo: 1010 outSta[2]: #出库口2 staNo: 109 staNo: 1020 devp[1]: #输送线--半成品2F id: 2 ip: 192.168.110.70 rack: 0 port: 102 slot: 0 emptyInSta[0]: #空板入库口0 staNo: 2007 inSta[0]: #入库口1 staNo: 2007 backSta: 2006 barcode: ${wcs-slave.barcode[1].id} outSta[0]: #出库口1 staNo: 2001 outSta[1]: #出库口2 staNo: 2019 devp[2]: #输送线--成品1F id: 3 ip: 192.168.110.30 rack: 0 port: 102 slot: 0 emptyInSta[0]: #空板入库口0 staNo: 1058 inSta[0]: #入库口1 staNo: 1052 backSta: 1051 barcode: ${wcs-slave.barcode[2].id} inSta[1]: #入库口2 #空板入库口0 staNo: 1058 backSta: 1053 barcode: ${wcs-slave.barcode[2].id} outSta[0]: #出库口1 staNo: 1053 devp[3]: #输送线--成品2F id: 4 ip: 192.168.110.70 rack: 0 port: 102 slot: 0 emptyInSta[0]: #空板入库口0 staNo: 2056 inSta[0]: #入库口1 staNo: 2056 backSta: 2055 barcode: ${wcs-slave.barcode[3].id} outSta[0]: #出库口1 staNo: 1053 outSta[1]: #出库口1 staNo: 251 outSta[2]: #出库口1 staNo: 252 outSta[3]: #出库口1 staNo: 110 staNo: 257 outSta[4]: #出库口1 staNo: 258 # 拣料入库口1 pickSta[0]: staNo: 2051 barcode: ${wcs-slave.barcode[3].id} # 拣料入库口2 pickSta[1]: staNo: 2052 barcode: ${wcs-slave.barcode[3].id} # 拣料入库口3 pickSta[2]: staNo: 2057 barcode: ${wcs-slave.barcode[3].id} # 拣料入库口4 pickSta[3]: staNo: 2058 barcode: ${wcs-slave.barcode[3].id} barcode[0]: #条码扫描仪 port: 51236 ip: 172.17.91.39 id: 1 barcode[1]: #条码扫描仪 port: 51236 ip: 172.17.91.39 id: 1 barcode[2]: #条码扫描仪 port: 51236 ip: 172.17.91.39 id: 1 barcode[3]: #条码扫描仪 port: 51236 ip: 172.17.91.39 id: 1 # crn[0]: #堆垛机1 # rack: 0 # offset: 2 #偏移量,当堆垛机站点列号=1时,偏移量=2 src/main/resources/application.yml
@@ -1,5 +1,5 @@ server: port: 8080 port: 8081 servlet: context-path: /@pom.build.finalName@ @@ -8,7 +8,7 @@ name: @pom.build.finalName@ datasource: driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver url: jdbc:sqlserver://10.10.10.220:1433;databasename=rywxasrs url: jdbc:sqlserver://127.0.0.1:1433;databasename=czscwcs username: sa password: sa@123 mvc: @@ -37,7 +37,7 @@ #License相关配置 license: subject: jdzwcs subject: scwcs publicAlias: publicCert storePass: public_zhongyang_123456789 licensePath: license.lic src/main/resources/mapper/LocMastMapper.xml
@@ -51,12 +51,12 @@ <select id="queryDemoSourceLoc" resultMap="BaseResultMap"> select top 1 * from asr_loc_mast where crn_no = #{crnNo} and loc_sts='D' and loc_sts='F' ORDER BY NEWID() </select> <select id="queryDemoLoc" resultMap="BaseResultMap"> select top 1 * from asr_loc_mast where crn_no = #{crnNo} and loc_sts = 'O' select top 1 * from asr_loc_mast where crn_no = #{crnNo} and loc_type1 = #{locType1} and loc_sts = 'O' and (ctn_kind=0 or ctn_kind is null) ORDER BY NEWID() </select> src/main/webapp/static/wcs/js/common.js
@@ -1,4 +1,4 @@ var baseUrl = "/jdzwcs"; var baseUrl = "/scwcs"; // 赋值 function setVal(el, val) { src/main/webapp/static/wcs/js/console.map.js
@@ -1,5 +1,5 @@ mapInfo = { "mapName": "jdzwcs", "mapName": "scwcs", "rackCount": 13, "crnCount": 4, "stbCount": 4, src/main/webapp/static/wms/js/common.js
@@ -1,4 +1,4 @@ var baseUrl = "/jdzwcs"; var baseUrl = "/scwcs"; // 详情窗口-高度 var detailHeight = '80%';