diff --git a/shkj-wms/src/main/java/com/shkj/wcs/plc/PlcEventTask.java b/shkj-wms/src/main/java/com/shkj/wcs/plc/PlcEventTask.java index 5ed2cad..c86b624 100644 --- a/shkj-wms/src/main/java/com/shkj/wcs/plc/PlcEventTask.java +++ b/shkj-wms/src/main/java/com/shkj/wcs/plc/PlcEventTask.java @@ -97,7 +97,7 @@ public class PlcEventTask { @Autowired PlcInit plcInit; - // @Scheduled(fixedDelay = 8000) + @Scheduled(fixedDelay = 8000) public void init() { //查询需要连接的PLC,初始化连接对象 List plcList = iWcsPlcConnectService.selectWcsPlcConnectList(new WcsPlcConnect().setIsActive("1")); @@ -107,11 +107,11 @@ public class PlcEventTask { } for (WcsPlcConnectVo conn : plcList) { - if (conn.getPlcIp().contains("150.154")){ + if (conn.getPlcIp().contains("1.20")){ plcTask(plcInit.getPlcOperate_stk(), conn, conn.getPointTables()); } - if (conn.getPlcIp().contains("150.150")){ + if (conn.getPlcIp().contains("1.10")){ plcTask(plcInit.getPlcOperate_dps(), conn, conn.getPointTables()); } } @@ -119,7 +119,7 @@ public class PlcEventTask { - // @Scheduled(fixedDelay = 4000) + @Scheduled(fixedDelay = 4000) public void writePlcheartbeat(){ //根据连接的plcId获取属性 PlcOperate plcOperate = plcInit.getPlcOperate_dps(); @@ -350,7 +350,7 @@ public class PlcEventTask { twoAllotAddress = plcProperty.getAddress(); } else if (pointType.equals("oneAllotTask")) { oneAllotTaskId = plcProperty.getAddress(); - oneAllotTaskId = plcProperty.getValueType(); + oneAllotTaskIdVt = plcProperty.getValueType(); } else if (pointType.equals("twoAllotTask")) { twoAllotTaskId = plcProperty.getAddress(); twoAllotTaskIdVt = plcProperty.getValueType(); @@ -423,7 +423,7 @@ public class PlcEventTask { cargoHeight = data.getType();//获取托盘或模具类型 }else { redisTemplate.opsForValue().set(RedisConstant.redisPutInExeMsg+orderResult.getMsg(),orderResult.getMsg()); - log.error("获取任务信息失败:"+orderResult.getMsg()+"托盘条码:"+barcodeValue); + log.info("获取任务信息失败:"+orderResult.getMsg()+"托盘条码:"+barcodeValue); //回填任务号 Map writeMap = new HashMap<>(1); writeMap.put(oneEcsErrExitVT, true); @@ -508,7 +508,7 @@ public class PlcEventTask { Map writeMap = new HashMap<>(1); writeMap.put(twoAllotTaskIdVt, taskId); Map allMap = new HashMap<>(1); - allMap.put(oneAllotTaskId, writeMap); + allMap.put(twoAllotTaskId, writeMap); Map cargoHeightMap = new HashMap<>(1); cargoHeightMap.put(twoHignTypeVT, cargoHeight); @@ -649,7 +649,7 @@ public class PlcEventTask { return; } //执行dps任务,给堆垛机下发命令 - dpsTask(taskId) ; + dpsTask(taskId,1) ; } //2楼是否请求入库 if (pointMap.containsKey(twoReqPutin) && Boolean.valueOf(pointMap.get(twoReqPutin).toString())) { @@ -661,7 +661,7 @@ public class PlcEventTask { return; } //执行dps任务,给堆垛机下发命令 - dpsTask(taskId) ; + dpsTask(taskId,2) ; } } }catch (Exception e){ @@ -694,7 +694,7 @@ public class PlcEventTask { for (WcsPlcProperty wcsPlcProperty : propertyList) { if (wcsPlcProperty.getPointType().equals("4")) { readfinishPoint = wcsPlcProperty.getAddress(); - } else if (wcsPlcProperty.getPointType().equals("101")) { + } else if (wcsPlcProperty.getPointType().equals("111")) { readTaskPoint = wcsPlcProperty.getAddress(); } } @@ -764,7 +764,7 @@ public class PlcEventTask { * @param taskId * @return */ - public Boolean dpsTask(Long taskId){ + public Boolean dpsTask(Long taskId,Integer reqLayer){ //下发任务时,先查询是否有正在执行的入库任务或出库任务,如果有,则不下发入库任务 Object taskInId = redisTemplate.opsForValue().get(RedisConstant.redisTaskIn); @@ -773,6 +773,8 @@ public class PlcEventTask { return false; } + + Object taskOutId = redisTemplate.opsForValue().get(RedisConstant.redisTaskOut); if (taskOutId !=null ){ log.info("有出库任务在执行,无法下发入库任务:"+taskOutId); @@ -808,16 +810,17 @@ public class PlcEventTask { String toLayerValueType=""; String plcFromRow = ""; - String FromRowValueType=""; + String fromRowValueType=""; String plcFromColumn = ""; - String FromColumnValueType = ""; + String fromColumnValueType = ""; String plcFromLayer = ""; - String FromLayerValueType=""; + String fromLayerValueType=""; + + String plcPlatform=""; + String plcPlatformValueType=""; + String plcOrderType = ""; String plcOrderTypeValue = ""; - //启动设备 - String plcStartEq = ""; - String plcStartEqValueType = ""; //堆垛机完成状态 String readfinish =""; @@ -835,13 +838,16 @@ public class PlcEventTask { taskIdvalueType = stkProperty.getValueType(); } else if (stkProperty.getPointType().equals("104")) { plcFromRow = stkProperty.getAddress(); - FromRowValueType = stkProperty.getValueType(); + fromRowValueType = stkProperty.getValueType(); + } else if (stkProperty.getPointType().equals("103")) { + plcPlatform = stkProperty.getAddress(); + plcPlatformValueType = stkProperty.getValueType(); } else if (stkProperty.getPointType().equals("105")) { plcFromColumn = stkProperty.getAddress(); - FromColumnValueType=stkProperty.getValueType(); + fromColumnValueType=stkProperty.getValueType(); } else if (stkProperty.getPointType().equals("106")) { plcFromLayer = stkProperty.getAddress(); - FromLayerValueType=stkProperty.getValueType(); + fromLayerValueType=stkProperty.getValueType(); } else if (stkProperty.getPointType().equals("108")) { plcToRow = stkProperty.getAddress(); toRowValueType = stkProperty.getValueType(); @@ -854,9 +860,6 @@ public class PlcEventTask { } else if (stkProperty.getPointType().equals("102")) { plcOrderType = stkProperty.getAddress(); plcOrderTypeValue=stkProperty.getValueType(); - }else if (stkProperty.getPointType().equals(PlcPropertyEnum.twentythree.getValue())){ - plcStartEq=stkProperty.getAddress(); - plcStartEqValueType=stkProperty.getValueType(); }else if (stkProperty.getPointType().equals("4")) { readfinish = stkProperty.getAddress(); readfinishValueType=stkProperty.getValueType(); @@ -876,49 +879,49 @@ public class PlcEventTask { } } - Integer stkRunV = 0; + Boolean stkRunV = false; if (pointMap.containsKey(stkRun)) { - stkRunV = Integer.valueOf(pointMap.get(stkRun).toString()); + stkRunV = Boolean.valueOf(pointMap.get(stkRun).toString()); } log.info("堆垛机运行状态:"+stkRunV); - if (stkRunV!=1){ - log.info("请求入库时,堆垛机尚未运行"); + if (!stkRunV){ + log.info(taskId+"请求入库时,堆垛机尚未运行"); return false; } - Integer stkAutoManualV=0; + Boolean stkAutoManualV=null; if (pointMap.containsKey(stkAutoManual)) { - stkAutoManualV = Integer.valueOf(pointMap.get(stkAutoManual).toString()); + stkAutoManualV = Boolean.valueOf(pointMap.get(stkAutoManual).toString()); } - log.info("堆垛机自动状态:"+stkAutoManualV); - if(stkAutoManualV ==0 ){ - log.info("请求入库时,堆垛机手动状态"); + log.info(taskId+"堆垛机自动状态:"+stkAutoManualV); + if(!stkAutoManualV ){ + log.info(taskId+"请求入库时,堆垛机手动状态"); return false; } - Integer stkGroundV= 0; + Boolean stkGroundV= false; if (pointMap.containsKey(stkGround)) { - stkGroundV = Integer.valueOf(pointMap.get(stkGround).toString()); + stkGroundV = Boolean.valueOf(pointMap.get(stkGround).toString()); } - log.info("地面柜自动状态:"+stkGroundV); - if(stkGroundV==0){ - log.info("请求入库时,堆垛机地面柜手动状态"); + log.info(taskId+"地面柜自动状态:"+stkGroundV); + if(!stkGroundV){ + log.info(taskId+"请求入库时,堆垛机地面柜手动状态"); return false; } - Integer stkidleV = 0; + Boolean stkidleV = false; if (pointMap.containsKey(stkidle)) { - stkidleV = Integer.valueOf(pointMap.get(stkidle).toString()); + stkidleV = Boolean.valueOf(pointMap.get(stkidle).toString()); } - log.info("堆垛机是状态:"+stkidleV); + log.info(taskId+"堆垛机是状态:"+stkidleV); //1空闲 0繁忙 - if(stkidleV==0){ - log.info("请求入库时,堆垛机繁忙"); + if(!stkidleV){ + log.info(taskId+"请求入库时,堆垛机繁忙"); return false; } - //给堆垛机写命令 + //给堆垛机写命令 Map allMap = new HashMap<>(1); Map plcTaskIdMap = new HashMap<>(1); plcTaskIdMap.put(taskIdvalueType, taskId); @@ -936,37 +939,37 @@ public class PlcEventTask { Map plcOrderTypeMap = new HashMap<>(1); plcOrderTypeMap.put(plcOrderTypeValue, 1); allMap.put(plcOrderType, plcOrderTypeMap); - Map plcFromRowMap = new HashMap<>(1); - plcFromRowMap.put(FromRowValueType, "1"); + /* Map plcFromRowMap = new HashMap<>(1); + plcFromRowMap.put(fromRowValueType, fromRow); allMap.put(plcFromRow, plcFromRowMap); Map plcFromColumnMap = new HashMap<>(1); - plcFromColumnMap.put(FromColumnValueType, "22"); + plcFromColumnMap.put(fromColumnValueType, fromColumn); allMap.put(plcFromColumn, plcFromColumnMap); Map plcFromLayerMap = new HashMap<>(1); - plcFromLayerMap.put(FromLayerValueType, "1"); - allMap.put(plcFromLayer, plcFromLayerMap); - //启动设备 - Map plcStartEqMap = new HashMap<>(1); - plcStartEqMap.put(plcStartEqValueType, true); - allMap.put(plcStartEq, plcStartEqMap); + plcFromLayerMap.put(fromLayerValueType, fromLayer); + allMap.put(plcFromLayer, plcFromLayerMap);*/ + //入库起始站台 + Map plcPlatformMap = new HashMap<>(1); + plcPlatformMap.put(plcPlatformValueType,reqLayer); + allMap.put(plcPlatform,plcPlatformMap); //堆垛机完成状态,下命令时写入0,未完成状态 Map readfinishMap = new HashMap<>(1); readfinishMap.put(readfinishValueType, 0); allMap.put(readfinish, readfinishMap); - log.info("请求入库:任务下发之前"+JsonUtil.toJSONString(allMap)); + + log.info(taskId+"请求入库:任务下发之前"+JsonUtil.toJSONString(allMap)); if (plcReadAndWrite.execWrite(stkOperate, JsonUtil.toJSONString(allMap))) { - log.info("请求入库,任务下发成功:"+taskId); + log.info(taskId+"请求入库,任务下发成功:"); //请求成功,记录已下发 redisTemplate.opsForValue().set(RedisConstant.redisReqWare + taskId, taskId,24,TimeUnit.HOURS); //请求分配任务ID dps redisTemplate.delete(RedisConstant.redisContainer+taskId); return true; }else { - log.info("请求入库任务下发失败"); + log.info(taskId+"请求入库任务下发失败"); return false; } } - } diff --git a/shkj-wms/src/main/java/com/shkj/wcs/plc/PlcInit.java b/shkj-wms/src/main/java/com/shkj/wcs/plc/PlcInit.java index 1834992..add7c18 100644 --- a/shkj-wms/src/main/java/com/shkj/wcs/plc/PlcInit.java +++ b/shkj-wms/src/main/java/com/shkj/wcs/plc/PlcInit.java @@ -32,7 +32,7 @@ public class PlcInit { RedisTemplate redisTemplate; private ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1); - //@PostConstruct + @PostConstruct public void init(){ log.info("初始化连接对象"); executorService.scheduleWithFixedDelay( @@ -50,23 +50,23 @@ public class PlcInit { for (WcsPlcConnectVo conn : plcList) { redisTemplate.opsForValue().set(RedisConstant.redisPlcConnect+conn.getDevCode(),conn); PlcHelper plc = new PlcHelper(conn.getPlcType(), conn.getPlcIp(), conn.getPlcFactory(), conn.getPort()); - if (conn.getPlcIp().contains("150.154")){ + if (conn.getPlcIp().contains("1.20")){ plcOperate_stk = plc.getAutomation(); OperateResult connect = plcOperate_stk.connect(); if (connect.IsSuccess){ - log.info(conn.getPlcIp()+"stk初始化成功"); + log.info(conn.getPlcIp()+"stk连接成功"); }else { - log.info(conn.getPlcIp()+"stk初始化失败"); + log.info(conn.getPlcIp()+"stk连接失败"); } } - if (conn.getPlcIp().contains("150.150")){ + if (conn.getPlcIp().contains("1.10")){ plcOperate_dps = plc.getAutomation(); OperateResult connect = plcOperate_dps.connect(); if (connect.IsSuccess){ - log.info(conn.getPlcIp()+"dps初始化成功"); + log.info(conn.getPlcIp()+"dps连接成功"); }else { - log.info(conn.getPlcIp()+"dps初始化失败"); + log.info(conn.getPlcIp()+"dps连接失败"); } } } @@ -90,10 +90,10 @@ public class PlcInit { public PlcOperate getPlcOperateByIp(String plcIp){ - if (plcIp.contains("150.154")){ + if (plcIp.contains("1.20")){ return plcOperate_stk; } - if (plcIp.contains("150.150")){ + if (plcIp.contains("1.10")){ return plcOperate_dps; } return null; diff --git a/shkj-wms/src/main/java/com/shkj/wcs/third/stacker/StkCallUtil.java b/shkj-wms/src/main/java/com/shkj/wcs/third/stacker/StkCallUtil.java index 029efaa..5b6a1da 100644 --- a/shkj-wms/src/main/java/com/shkj/wcs/third/stacker/StkCallUtil.java +++ b/shkj-wms/src/main/java/com/shkj/wcs/third/stacker/StkCallUtil.java @@ -70,13 +70,13 @@ public class StkCallUtil { //下发任务时,先查询是否有正在执行的入库任务,如果有,则不下发出库任务 Object taskInId = redisTemplate.opsForValue().get(RedisConstant.redisTaskIn); if (taskInId !=null ){ - log.error("有入库任务在执行,无法下发出库任务:"+taskInId); + log.info("有入库任务在执行,无法下发出库任务:"+taskInId); return Result.err().msg("有入库任务在执行,无法下发出库任务"); } Object taskOutId = redisTemplate.opsForValue().get(RedisConstant.redisTaskOut); if (taskOutId !=null ){ - log.error("有出库任务在执行,无法下发出库任务:"+taskOutId); + log.info("有出库任务在执行,无法下发出库任务:"+taskOutId); return Result.err().msg("有出库任务在执行,无法下发出库任"); } SysThirdExceptionRequest one = sysThirdExceptionRequestService.getOneByOrderNo(stkMoveBo.getTaskId().toString()); @@ -90,7 +90,7 @@ public class StkCallUtil { String fromLayer = stkMoveBo.getFromLayer(); String fromColumn = stkMoveBo.getFromColumn(); String fromRow = stkMoveBo.getFromRow(); - log.info("出库对应的排层列:"+fromRow+fromLayer+fromColumn); + log.info(stkMoveBo.getTaskId()+"出库对应的排层列:"+fromRow+fromLayer+fromColumn); //获取堆垛机 WcsPlcConnectQueryBo plcConnect = new WcsPlcConnectQueryBo(); plcConnect.setDevType("1"); @@ -142,7 +142,7 @@ public class StkCallUtil { log.info("1楼是否允许出库::"+oneDpsidle+" 出库的值:"+oneDpsidleV); log.info("2楼是否允许出库::"+twoDpsidle+" 出库的值:"+twoDpsidleV); - Integer layer = one.getLayer(); + Integer layer = 1; if (layer==1){ //false不允许出库 if (!Boolean.valueOf(oneDpsidleV)){ @@ -179,6 +179,10 @@ public class StkCallUtil { String finishPoint=""; String finishPointVT=""; + //站台 + String plcPlatform=""; + String plcPlatformValueType=""; + String stkAutoManual="", stkGround="",stkidle="", stkRun=""; for (WcsPlcProperty stkProperty : propertyList) { //获取要堆垛机要写入的点位 @@ -194,6 +198,9 @@ public class StkCallUtil { } else if (stkProperty.getPointType().equals("106")) { plcFromLayer = stkProperty.getAddress(); FromLayerValueType=stkProperty.getValueType(); + } else if (stkProperty.getPointType().equals("107")) { + plcPlatform = stkProperty.getAddress(); + plcPlatformValueType = stkProperty.getValueType(); } else if (stkProperty.getPointType().equals("108")) { plcToRow = stkProperty.getAddress(); toRowValueType = stkProperty.getValueType(); @@ -229,45 +236,47 @@ public class StkCallUtil { Thread.sleep(2000); - Integer stkRunV = 0; + Boolean stkRunV = false; if (stkPointMap.containsKey(stkRun)) { - stkRunV = Integer.valueOf(stkPointMap.get(stkRun).toString()); + stkRunV = Boolean.valueOf(stkPointMap.get(stkRun).toString()); } log.info("堆垛机运行状态:"+stkRunV); - if (stkRunV!=1){ + if (!stkRunV){ + log.info("堆垛机尚未运行:"+stkRunV); return Result.err().msg("堆垛机尚未运行"); } - Integer stkAutoManualV=0; + Boolean stkAutoManualV=false; if (stkPointMap.containsKey(stkAutoManual)) { - stkAutoManualV = Integer.valueOf(stkPointMap.get(stkAutoManual).toString()); + stkAutoManualV = Boolean.valueOf(stkPointMap.get(stkAutoManual).toString()); } log.info("堆垛机自动状态:"+stkAutoManualV); - if(stkAutoManualV ==0 ){ + if(!stkAutoManualV ){ + log.info("堆垛机手动状态:"+stkAutoManualV); return Result.err().msg("堆垛机手动状态"); } - Integer stkGroundV= 0; + Boolean stkGroundV= false; if (stkPointMap.containsKey(stkGround)) { - stkGroundV = Integer.valueOf(stkPointMap.get(stkGround).toString()); + stkGroundV = Boolean.valueOf(stkPointMap.get(stkGround).toString()); } log.info("地面柜自动状态:"+stkGroundV); - if(stkGroundV==0){ + if(!stkGroundV){ + log.info("堆垛机地面柜手动状态:"+stkGroundV); return Result.err().msg("堆垛机地面柜手动状态"); } - Integer stkidleV = 0; + Boolean stkidleV = false; if (stkPointMap.containsKey(stkidle)) { - stkidleV = Integer.valueOf(stkPointMap.get(stkidle).toString()); + stkidleV = Boolean.valueOf(stkPointMap.get(stkidle).toString()); } - log.info("堆垛机是状态:"+stkidleV); - //1空闲 0繁忙 - if(stkidleV==0){ + if(!stkidleV){ + log.info("堆垛机繁忙:"+stkidleV); return Result.err().msg("堆垛机繁忙"); } - if((!Boolean.valueOf(oneDpsidleV) || !Boolean.valueOf(twoDpsidleV)) && stkidleV == 0){ + if((!Boolean.valueOf(oneDpsidleV) || !Boolean.valueOf(twoDpsidleV)) && !stkidleV){ return Result.err().msg("出库状态与堆垛机的状态都不可出库"); }else{ log.info("出库状态与堆垛机的状态可出库one: "+Boolean.valueOf(oneDpsidleV)+" two:"+twoDpsidleV+" --"+stkidleV); @@ -277,15 +286,11 @@ public class StkCallUtil { Map plcTaskIdMap = new HashMap<>(1); plcTaskIdMap.put(taskIdvalueType, stkMoveBo.getTaskId()); allMap.put(plcTaskId, plcTaskIdMap); - Map plcToRowMap = new HashMap<>(1); - plcToRowMap.put(toRowValueType, "1"); - allMap.put(plcToRow, plcToRowMap); - Map plcToColumnMap = new HashMap<>(1); - plcToColumnMap.put(toColumnValueType, "22"); - allMap.put(plcToColumn, plcToColumnMap); - Map plcToLayerMap = new HashMap<>(1); - plcToLayerMap.put(toLayerValueType, "1"); - allMap.put(plcToLayer, plcToLayerMap); + + //出库目标站台 + Map plcPlatformMap = new HashMap<>(1); + plcPlatformMap.put(plcPlatformValueType,layer); + allMap.put(plcPlatform,plcPlatformMap); Map plcOrderTypeMap = new HashMap<>(1); plcOrderTypeMap.put(plcOrderTypeValue, 2); @@ -300,9 +305,6 @@ public class StkCallUtil { plcFromLayerMap.put(FromLayerValueType, fromLayer); allMap.put(plcFromLayer, plcFromLayerMap); - Map plcStartEqMap = new HashMap<>(1); - plcStartEqMap.put(plcStartEqValueType, true); - allMap.put(plcStartEq, plcStartEqMap); //堆垛机完成入库状态 Map finishPointMap = new HashMap<>(1); finishPointMap.put(finishPointVT, 0); diff --git a/shkj-wms/src/main/java/com/shkj/wms/service/impl/BusinOutInPlanServiceImpl.java b/shkj-wms/src/main/java/com/shkj/wms/service/impl/BusinOutInPlanServiceImpl.java index 62f6e40..73584b4 100644 --- a/shkj-wms/src/main/java/com/shkj/wms/service/impl/BusinOutInPlanServiceImpl.java +++ b/shkj-wms/src/main/java/com/shkj/wms/service/impl/BusinOutInPlanServiceImpl.java @@ -1376,7 +1376,7 @@ public class BusinOutInPlanServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); wrapper.eq(SysThirdExceptionRequest::getStatus, ThirdApiStatusEnum.fail.getValue()); diff --git a/shkj-wms/src/main/java/com/shkj/wms/vo/PlanOrderLocationVo.java b/shkj-wms/src/main/java/com/shkj/wms/vo/PlanOrderLocationVo.java index 5dc91d8..679f05a 100644 --- a/shkj-wms/src/main/java/com/shkj/wms/vo/PlanOrderLocationVo.java +++ b/shkj-wms/src/main/java/com/shkj/wms/vo/PlanOrderLocationVo.java @@ -14,7 +14,7 @@ public class PlanOrderLocationVo { private static final long serialVersionUID = 1L; /** - * 类型 1空托盘,2矮货位,3高货位 + * 类型 1空托盘,2货位710,3货位910 4 货位1110 */ private String type; diff --git a/shkj-wms/src/main/resources/mapper/wms/BaseContainerMapper.xml b/shkj-wms/src/main/resources/mapper/wms/BaseContainerMapper.xml index ecb03c7..a1feb3e 100644 --- a/shkj-wms/src/main/resources/mapper/wms/BaseContainerMapper.xml +++ b/shkj-wms/src/main/resources/mapper/wms/BaseContainerMapper.xml @@ -73,6 +73,7 @@ AND ( LOWER(bc.container_code) LIKE LOWER(CONCAT('%',#{containerCode},'%')) + or LOWER(bc.container_name) LIKE LOWER(CONCAT('%',#{containerCode},'%')) )