diff --git a/web/src/main/java/com/zhehekeji/web/controller/ClientTestController.java b/web/src/main/java/com/zhehekeji/web/controller/ClientTestController.java index aaf8c1d..5cd00e6 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/ClientTestController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/ClientTestController.java @@ -118,10 +118,9 @@ public class ClientTestController { @GetMapping("/intoStock/picOver") public Result picOver(@ApiParam("巷道标识") @RequestParam String SRMNumber,@ApiParam("盘点批次ID") @RequestParam String taskId, @ApiParam("货位号,如L0100010002 ,R/L表示左右,01是浅货位(02深),0001是X,0002是Y") @RequestParam String goodsLocation){ - //todo 顶部拍照 - Integer row = Integer.valueOf(goodsLocation.substring(3,7)); - Integer column = Integer.valueOf(goodsLocation.substring(7)); - String picPath = plcService.IntoStock(SRMNumber,"C1",row,column); + + + String picPath = plcService.IntoStock(SRMNumber,"C1",taskId,goodsLocation); //返回普天 PTData ptData = PTData.IntoStock(SRMNumber,taskId,goodsLocation,picPath); PuTianNettyClient.write(ptData); @@ -133,9 +132,8 @@ public class ClientTestController { public Result goodsOver(@ApiParam("巷道标识") @RequestParam String SRMNumber,@ApiParam("盘点批次ID") @RequestParam String taskId, @ApiParam("货位号,如L0100010002 ,R/L表示左右,01是浅货位(02深),0001是X,0002是Y") @RequestParam String goodsLocation){ //拍入库完成后的照片 - Integer row = Integer.valueOf(goodsLocation.substring(3,7)); - Integer column = Integer.valueOf(goodsLocation.substring(7)); - String picPath = plcService.IntoStock(SRMNumber,"C2",row,column); + + String picPath = plcService.IntoStockOver(SRMNumber,"C2",taskId,goodsLocation); //向客户端发送读码指令,等待客户端返回条码 ISTransmission isTransmission = new ISTransmission(SRMNumber,taskId,goodsLocation); //为防万一,先清除code diff --git a/web/src/main/java/com/zhehekeji/web/entity/Order.java b/web/src/main/java/com/zhehekeji/web/entity/Order.java index 55c8354..04320bf 100644 --- a/web/src/main/java/com/zhehekeji/web/entity/Order.java +++ b/web/src/main/java/com/zhehekeji/web/entity/Order.java @@ -22,8 +22,8 @@ public class Order { @ApiModelProperty("订单号") private String orderNum; - @ApiModelProperty("0:正常 1:告警") - private Integer status; +// @ApiModelProperty("0:正常 1:告警") +// private Integer status; /** * 前两个命令 库内?库口? 1:库内 2:库口 @@ -45,25 +45,35 @@ public class Order { */ private Integer row1; - /** - * 后两个命令 库内?库口? 1:库内 2:库口 - */ - private Integer inOut2; + private String intoStockPic; - /** - * 后两个命令 左?右? 1:左 2:右 - */ - private Integer leftRight2; + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") + private LocalDateTime intoStockTime; - /** - * 后两个 列号 - */ - private Integer column2; + private String intoStockOverPic; - /** - * 后两个 行号 - */ - private Integer row2; + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") + private LocalDateTime intoStockOverTime; + +// /** +// * 后两个命令 库内?库口? 1:库内 2:库口 +// */ +// private Integer inOut2; +// +// /** +// * 后两个命令 左?右? 1:左 2:右 +// */ +// private Integer leftRight2; +// +// /** +// * 后两个 列号 +// */ +// private Integer column2; +// +// /** +// * 后两个 行号 +// */ +// private Integer row2; // private String shelveId; // @@ -76,16 +86,16 @@ public class Order { // @ApiModelProperty("仓位号") // private String positionNum; - @ApiModelProperty("视频图片地址") - @TableField("`video_path_1`") - private String videoPath1; - - @ApiModelProperty("视频图片地址") - @TableField("`video_path_2`") - private String videoPath2; - - @ApiModelProperty("图片地址,分隔") - private String picPaths; +// @ApiModelProperty("视频图片地址") +// @TableField("`video_path_1`") +// private String videoPath1; +// +// @ApiModelProperty("视频图片地址") +// @TableField("`video_path_2`") +// private String videoPath2; +// +// @ApiModelProperty("图片地址,分隔") +// private String picPaths; // @ApiModelProperty("入库照片") // private String putPath; @@ -96,9 +106,9 @@ public class Order { // @ApiModelProperty("货位照片") // private String goodsPath; - @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") - private LocalDateTime startTime; - - @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") - private LocalDateTime endTime; +// @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") +// private LocalDateTime startTime; +// +// @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") +// private LocalDateTime endTime; } diff --git a/web/src/main/java/com/zhehekeji/web/service/OrderService.java b/web/src/main/java/com/zhehekeji/web/service/OrderService.java index 9d4c336..4a289ea 100644 --- a/web/src/main/java/com/zhehekeji/web/service/OrderService.java +++ b/web/src/main/java/com/zhehekeji/web/service/OrderService.java @@ -47,24 +47,24 @@ public class OrderService { } //计算订单的时间 - if (orderVO.getEndTime() != null && orderVO.getStartTime() != null) { - Duration duration = Duration.between(orderVO.getStartTime(), orderVO.getEndTime()); - Long seconds = duration.getSeconds(); - int minutes = seconds.intValue() / 60; - int remainingSeconds = seconds.intValue() % 60; - String timeLength = String.format("%02d:%02d", minutes,remainingSeconds); - orderVO.setTimeLength(timeLength); - } - if (!StringUtils.isEmpty(orderVO.getPicPaths())) { - String[] pics = orderVO.getPicPaths().split(","); - orderVO.setPics(pics); - } - if(configProperties.getCameraConfig().getCameraType() == 1 && !StringUtils.isEmpty(orderVO.getVideoPath1())){ - orderVO.setCmd1(" VSPlayer "+ orderVO.getVideoPath1()); - } - if(configProperties.getCameraConfig().getCameraType() == 1 && !StringUtils.isEmpty(orderVO.getVideoPath2())){ - orderVO.setCmd1(" VSPlayer "+ orderVO.getVideoPath2()); - } +// if (orderVO.getEndTime() != null && orderVO.getStartTime() != null) { +// Duration duration = Duration.between(orderVO.getStartTime(), orderVO.getEndTime()); +// Long seconds = duration.getSeconds(); +// int minutes = seconds.intValue() / 60; +// int remainingSeconds = seconds.intValue() % 60; +// String timeLength = String.format("%02d:%02d", minutes,remainingSeconds); +// orderVO.setTimeLength(timeLength); +// } +// if (!StringUtils.isEmpty(orderVO.getPicPaths())) { +// String[] pics = orderVO.getPicPaths().split(","); +// orderVO.setPics(pics); +// } +// if(configProperties.getCameraConfig().getCameraType() == 1 && !StringUtils.isEmpty(orderVO.getVideoPath1())){ +// orderVO.setCmd1(" VSPlayer "+ orderVO.getVideoPath1()); +// } +// if(configProperties.getCameraConfig().getCameraType() == 1 && !StringUtils.isEmpty(orderVO.getVideoPath2())){ +// orderVO.setCmd1(" VSPlayer "+ orderVO.getVideoPath2()); +// } orderVO.setGoodsLocation(location(orderVO,streetMap.get(orderVO.getStreetId()))); }); return new PageInfo<>(orders); @@ -73,61 +73,19 @@ public class OrderService { public Long add(OrderSaveReq saveReq) { Order order = new Order(); String orderNum = saveReq.getOrderNum(); - order.setStatus(0); + //order.setStatus(0); order.setOrderNum(orderNum); orderMapper.insert(order); return order.getId(); } public String location(OrderVO orderVO,Street street){ - //from to 模型 - if (orderVO.getInOut1() != null && orderVO.getInOut2() != null) { - //左右货架 货位号 - //库内转库内 看 to - Integer column = 0; - Integer row = 0; - //左货架 ? 右货架 ? - Integer leftRight = 0; - if (orderVO.getInOut1() == 1 && orderVO.getInOut2() == 1) { - // 库内转库内 - leftRight = orderVO.getLeftRight2(); - column = orderVO.getColumn2(); - row = orderVO.getRow2(); - } else if (orderVO.getInOut1() == 1) { - // 库内到库外 - leftRight = orderVO.getLeftRight1(); - //看from - orderVO.setStreetType(orderVO.getLeftRight1()); - column = orderVO.getColumn1(); - row = orderVO.getRow1(); - } else if (orderVO.getInOut2() == 1) { - //库外到库内 - leftRight = orderVO.getLeftRight2(); - //看to - orderVO.setStreetType(orderVO.getLeftRight2()); - column = orderVO.getColumn2(); - row = orderVO.getRow2(); - }else { - return "库外转库外"; - } - if (leftRight > 0) { - //PLC 1是左 2是由 - if(street != null){ - if(leftRight == 1){ - orderVO.setStreetType(street.getLeftType()); - }else { - orderVO.setStreetType(street.getRightType()); - } - - } - String leftRightS = leftRight == 1 ? "左" : "右"; - //里外 现在无法判断 这个项目全是 里 - String location = "%s-里-%s列%s行"; - return String.format(location, leftRightS, column, row); - } - } - return null; + String leftRightS = orderVO.getLeftRight1() == 1 ? "左" : "右"; + String side = orderVO.getInOut1() == 1?"浅":"深"; + //里外 现在无法判断 这个项目全是 里 + String location = "%s-%s-%s层%s列"; + return String.format(location, leftRightS, side, orderVO.getRow1(),orderVO.getColumn1()); } diff --git a/web/src/main/java/com/zhehekeji/web/service/PlcService.java b/web/src/main/java/com/zhehekeji/web/service/PlcService.java index 8fec1b4..642cb33 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcService.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcService.java @@ -90,35 +90,7 @@ public class PlcService { * @param plcCmdInfo */ public void orderStart(PlcCmdInfo plcCmdInfo) { - Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId()); - if (street != null) { - if(plcCmdInfo.getLeftRight1() == 1){ - if(plcCmdInfo.getRow1()>street.getLeftRow() && plcCmdInfo.getColumn1() > street.getLeftColumn()){ - log.error("row:{},column:{},error in streetId:{} left",plcCmdInfo.getRow1(),plcCmdInfo.getColumn1(),street.getId()); - return; - } - }else { - if(plcCmdInfo.getRow1()>street.getRightRow() && plcCmdInfo.getColumn1() > street.getRightColumn()){ - log.error("row:{},column:{},error in streetId:{} right",plcCmdInfo.getRow1(),plcCmdInfo.getColumn1(),street.getId()); - return; - } - } - Order order = new Order(); - order.setOrderNum(plcCmdInfo.getOrderNum()); - order.setStatus(0); - order.setStartTime(LocalDateTime.now()); - order.setStreetId(street.getId()); - order.setInOut1(plcCmdInfo.getSide1()); - order.setLeftRight1(plcCmdInfo.getLeftRight1()); - order.setColumn1(plcCmdInfo.getColumn1()); - order.setRow1(plcCmdInfo.getRow1()); - //todo 昆船的项目 ,取货 放货是独立的 - //取货是是不知道放货的位置的,所以订单开始的时候只写1位置 - //订单结束写2位置 - orderMapper.insert(order); - OrderRealtime.startOrder(street.getId(), plcCmdInfo.getOrderNum()); - } } /** @@ -129,54 +101,11 @@ public class PlcService { * @param plcCmdInfo */ public void orderStop(PlcCmdInfo plcCmdInfo) { - LocalDateTime endTime = LocalDateTime.now(); - Street street = streetMapper.getStreetByPlcId(plcCmdInfo.getPlcId()); - if (street == null) { - return; - } - Order order = orderMapper.getOneByOrderNum(plcCmdInfo.getOrderNum()); - if (order == null) { - log.error("订单结束信号,订单不存在,orderNum:{}", plcCmdInfo.getOrderNum()); - return; - } - OrderRealtime.stopOrder(street.getId()); - Order update = new Order(); - update.setId(order.getId()); - update.setEndTime(endTime); - update.setInOut2(plcCmdInfo.getSide2()); - update.setLeftRight2(plcCmdInfo.getLeftRight2()); - update.setColumn2(plcCmdInfo.getColumn2()); - update.setRow2(plcCmdInfo.getRow2()); - LocalDateTime endDownLoadTime = endTime.plusSeconds(5); - Duration duration = Duration.between(order.getStartTime(),endDownLoadTime); - - if(duration.toMinutes() > 50){ - endDownLoadTime = order.getStartTime().plusMinutes(50); - } - if (street.getCamera1Id() != null) { - String path = cameraVideo(street.getCamera1Id(),order.getStartTime(),endDownLoadTime); - update.setVideoPath1(path); - } - if (street.getCamera2Id() != null) { - String path = cameraVideo(street.getCamera2Id(),order.getStartTime(),endDownLoadTime); - update.setVideoPath2(path); - } - orderMapper.updateById(update); } public void orderStopByWarn(String orderNum) { - Order order = orderMapper.getOneByOrderNum(orderNum); - if (order == null) { - return; - } - Order upd = new Order(); - upd.setId(order.getId()); - upd.setEndTime(LocalDateTime.now()); - //warn flag - //default 0 : normal - upd.setStatus(1); - orderMapper.updateById(upd); + } public String cameraVideo(Integer cameraId, LocalDateTime startTime, LocalDateTime endTime) { @@ -446,57 +375,7 @@ public class PlcService { * @param path */ public void captureUpdateOrderAndStock(OrderInfo orderInfo, String path) { - synchronized (orderInfo.getOrderNum().intern()) { - Order order = orderMapper.getOneByOrderNum(orderInfo.getOrderNum()); - if (order != null) { - //update picPath in stock if code is C2/C4 - if(orderInfo.getCode().startsWith("C2") || orderInfo.getCode().startsWith("C4")){ - StockLog stockLog = new StockLog(); - stockLog.setStreetId(orderInfo.getStreetId()); - stockLog.setDirection(orderInfo.getLeftRight()); - stockLog.setSide(orderInfo.getSeparation()); - stockLog.setRow(orderInfo.getRow()); - stockLog.setColumn(orderInfo.getColumn()); - stockLog.setPic(path); - String type = orderInfo.getCode().substring(1,2); - stockLog.setType(Integer.valueOf(type)); - stockLog.setOrderNum(orderInfo.getOrderNum()); - stockLog.setCreateTime(LocalDateTime.now()); - stockLogMapper.insert(stockLog); -// Stock stock = stockMapper.getByShelveIdAndRowColumn(orderInfo.getShelveId(), orderInfo.getRow(), orderInfo.getColumn()); -// if (stock == null) { -// stock = new Stock(); -// stock.setShelveId(orderInfo.getShelveId()); -// stock.setColumn(orderInfo.getColumn()); -// stock.setRow(orderInfo.getRow()); -// //stock.setStatus(0); -// //if the stock is null,take over path only -// stock.setOveroperationPic(path); -// stock.setOrderNum(order.getOrderNum()); -// stockMapper.insert(stock); -// } else { -// //take the previous picture path to the lasted over picture path -// //take the lasted picture path to the new one -// stock.setPreoperationPic(stock.getOveroperationPic()); -// stock.setOveroperationPic(path); -// stock.setOrderNum(order.getOrderNum()); -// //stock.setStatus(0); -// stockMapper.updateById(stock); -// } - } - String pics = order.getPicPaths(); - if (StringUtils.isEmpty(pics)) { - order.setPicPaths(path); - } else { - order.setPicPaths(pics + "," + path); - } - Order update = new Order(); - update.setId(order.getId()); - update.setPicPaths(order.getPicPaths()); - log.debug(" update order set pics:{},orderNum:{}", update.getPicPaths(), orderInfo.getOrderNum()); - orderMapper.updateById(update); - } - } + } public Integer getCameraByPlcCmd(PlcCmdInfo plcCmdInfo,Integer leftRight){ @@ -626,7 +505,7 @@ public class PlcService { * @param PTZCode * @return */ - public String IntoStock(String SRMNumber,String PTZCode,Integer row,Integer column){ + public String IntoStock(String SRMNumber,String PTZCode,String taskId,String goodsLocation){ Street street = streetService.getStreetByPlcId(SRMNumber); //南京烟草物流只有一个相机 Integer cameraId = street.getCamera1Id() == null ? street.getCamera2Id():street.getCamera1Id(); @@ -638,7 +517,54 @@ public class PlcService { } catch (InterruptedException e) { e.printStackTrace(); } + Integer row = Integer.valueOf(goodsLocation.substring(3,7)); + Integer column = Integer.valueOf(goodsLocation.substring(7)); + Integer leftRight = goodsLocation.substring(0,1).equals("L")?1:2; + Integer inout = Integer.valueOf(goodsLocation.substring(1,3)); String path = PathUtil.createFileNameByRowColumn("jpg",cameraId,row,column); + Order order = new Order(); + order.setStreetId(street.getId()); + order.setOrderNum(taskId); + order.setLeftRight1(leftRight); + order.setInOut1(inout); + order.setIntoStockPic(path); + order.setIntoStockTime(LocalDateTime.now()); + orderMapper.insert(order); + cameraCapture(cameraId,false,0l,path); + return configProperties.getIP()+":9007/"+path; + } + + /** + * 相机转动,拍照,并返回图片地址 + * @param SRMNumber + * @param PTZCode + * @return + */ + public String IntoStockOver(String SRMNumber,String PTZCode,String taskId,String goodsLocation){ + Street street = streetService.getStreetByPlcId(SRMNumber); + //南京烟草物流只有一个相机 + Integer cameraId = street.getCamera1Id() == null ? street.getCamera2Id():street.getCamera1Id(); + //转动拍照 + gyrateCameraByCode(cameraId,PTZCode); + //等待2s再拍照 + try { + Thread.sleep(2000l); + } catch (InterruptedException e) { + e.printStackTrace(); + } + Integer row = Integer.valueOf(goodsLocation.substring(3,7)); + Integer column = Integer.valueOf(goodsLocation.substring(7)); + Integer leftRight = goodsLocation.substring(0,1).equals("L")?1:2; + Integer inout = Integer.valueOf(goodsLocation.substring(1,3)); + String path = PathUtil.createFileNameByRowColumn("jpg",cameraId,row,column); + Order order = orderMapper.getOneByOrderNum(taskId); + if(order != null){ + Order upd = new Order(); + upd.setId(order.getId()); + upd.setIntoStockOverPic(path); + upd.setIntoStockOverTime(LocalDateTime.now()); + orderMapper.updateById(upd); + } cameraCapture(cameraId,false,0l,path); return configProperties.getIP()+":9007/"+path; }