From 5180e5b28a4187e49a113140df8350428db7c36b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LAPTOP-S9HJSOEB=5C=E6=98=8A=E5=A4=A9?= Date: Mon, 24 Nov 2025 16:42:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=A4=E4=BA=95=E8=B4=A1=E9=85=92=E6=9C=80?= =?UTF-8?q?=E5=90=8Ebug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/StockController.java | 5 +- .../java/com/zhehekeji/web/entity/Order.java | 1 + .../com/zhehekeji/web/pojo/OrderSearch.java | 1 + .../web/pojo/stock/CheckLogSearch.java | 1 + .../web/pojo/stock/StockExportExcel.java | 4 +- .../web/service/CheckLogService.java | 1 + .../com/zhehekeji/web/service/PlcService.java | 50 ++++++++++++++++++- .../zhehekeji/web/service/StockService.java | 21 ++++---- web/src/main/resources/mapper/OrderMapper.xml | 3 ++ 9 files changed, 72 insertions(+), 15 deletions(-) diff --git a/web/src/main/java/com/zhehekeji/web/controller/StockController.java b/web/src/main/java/com/zhehekeji/web/controller/StockController.java index d8f608b..35f4be6 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/StockController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/StockController.java @@ -26,6 +26,7 @@ import java.net.URLEncoder; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; +import java.util.Map; @Api(value = "Stock", tags = "库存管理") @RestController @@ -150,8 +151,8 @@ public class StockController { } @ApiOperation(value = "获取品规列表") @RequestMapping(value = "/getCategoryList", method = RequestMethod.POST) - public Result> getCategoryList() { - List list = stockService.getCategoryList(); + public Result> getCategoryList() { + Map list = stockService.getCategoryList(); return Result.success(list); } 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..676eece 100644 --- a/web/src/main/java/com/zhehekeji/web/entity/Order.java +++ b/web/src/main/java/com/zhehekeji/web/entity/Order.java @@ -59,6 +59,7 @@ public class Order { * 后两个 列号 */ private Integer column2; + private String code; /** * 后两个 行号 diff --git a/web/src/main/java/com/zhehekeji/web/pojo/OrderSearch.java b/web/src/main/java/com/zhehekeji/web/pojo/OrderSearch.java index d3ad39e..59c40d0 100644 --- a/web/src/main/java/com/zhehekeji/web/pojo/OrderSearch.java +++ b/web/src/main/java/com/zhehekeji/web/pojo/OrderSearch.java @@ -17,6 +17,7 @@ public class OrderSearch { @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") private LocalDateTime endTimestamp; + private String code; private Integer streetId; private Integer pageSize; diff --git a/web/src/main/java/com/zhehekeji/web/pojo/stock/CheckLogSearch.java b/web/src/main/java/com/zhehekeji/web/pojo/stock/CheckLogSearch.java index 356c0e7..9c4061c 100644 --- a/web/src/main/java/com/zhehekeji/web/pojo/stock/CheckLogSearch.java +++ b/web/src/main/java/com/zhehekeji/web/pojo/stock/CheckLogSearch.java @@ -29,6 +29,7 @@ public class CheckLogSearch { private Integer row; private Integer column; + private String wmsTrayCode; private Integer pageSize; diff --git a/web/src/main/java/com/zhehekeji/web/pojo/stock/StockExportExcel.java b/web/src/main/java/com/zhehekeji/web/pojo/stock/StockExportExcel.java index 6af134f..64c7272 100644 --- a/web/src/main/java/com/zhehekeji/web/pojo/stock/StockExportExcel.java +++ b/web/src/main/java/com/zhehekeji/web/pojo/stock/StockExportExcel.java @@ -12,8 +12,8 @@ public class StockExportExcel { @ExcelProperty(index = 0, value = "巷道名称") private String streetName; - @ExcelProperty(index = 1, value = "盘点批次号") - private String lotnum; + @ExcelProperty(index = 1, value = "托盘号") + private String trayCode; @ExcelProperty(index = 2, value = "位置" ) diff --git a/web/src/main/java/com/zhehekeji/web/service/CheckLogService.java b/web/src/main/java/com/zhehekeji/web/service/CheckLogService.java index 3d26e6f..43ddd20 100644 --- a/web/src/main/java/com/zhehekeji/web/service/CheckLogService.java +++ b/web/src/main/java/com/zhehekeji/web/service/CheckLogService.java @@ -34,6 +34,7 @@ public class CheckLogService { wrapper.eq(!StringUtils.isEmpty(search.getLotnum()), "lotnum", search.getLotnum()) .ge(search.getStartTimestamp() != null , "create_time", search.getStartTimestamp()) .le(search.getEndTimestamp() != null,"create_time", search.getEndTimestamp()) + .eq(search.getWmsTrayCode()!= null &&search.getWmsTrayCode().length() > 0, "wms_tray_code", search.getWmsTrayCode()) .eq(search.getLeftRight() != null && (search.getLeftRight() != 0 && search.getLeftRight() != -1), "`direction`", search.getLeftRight()) .eq(search.getSide() != null && (search.getSide() != 0 && search.getSide() != -1), "`side`", search.getSide()) .eq(search.getRow() != null && (search.getRow() != 0 && search.getRow() != -1), "`row`", search.getRow()) 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 565c7bc..23eefc4 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcService.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcService.java @@ -182,6 +182,7 @@ public class PlcService { order.setInOut2(plcCmdInfo.getSide2()); order.setLeftRight2(plcCmdInfo.getLeftRight2()); order.setColumn2(plcCmdInfo.getColumn2()); + order.setRow2(plcCmdInfo.getRow2()); //todo 昆船的项目 ,取货 放货是独立的 //取货是是不知道放货的位置的,所以订单开始的时候只写1位置 @@ -190,6 +191,51 @@ public class PlcService { } } + /** + * 开始工单 robotic plcId是plcId,昆船的plcId是来自包体,即srmNumber + * + * @param plcCmdInfo + */ + public void orderStart(PlcCmdInfo plcCmdInfo,String code) { + Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId()); + //打开光源 + streetController.openStreetLightSource(street.getId()); + + Integer cameraId = (plcCmdInfo.getFromAround() == 1) ? street.getCamera1Id() : street.getCamera2Id(); + gyrateCameraByCode(cameraId, "C5", plcCmdInfo.getTaskId()); + + 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()); + order.setInOut2(plcCmdInfo.getSide2()); + order.setLeftRight2(plcCmdInfo.getLeftRight2()); + order.setColumn2(plcCmdInfo.getColumn2()); + order.setCode(code); + order.setRow2(plcCmdInfo.getRow2()); + //todo 昆船的项目 ,取货 放货是独立的 + //取货是是不知道放货的位置的,所以订单开始的时候只写1位置 + //订单结束写2位置 + orderMapper.insert(order); + } + } /** * 工单结束信息 * 判断有没有告警,有告警的不做处理 @@ -756,6 +802,7 @@ public class PlcService { .wmsCount(algorithmPojo.getGoodsNumber()) .wmsCategory(algorithmPojo.getGoodsType()) .streetId(orderInfo.getStreetId()) + .wmsTrayCode(dataInfo.getTrayCode()) .direction(plcCmdInfo.getFromDirection()) .side(orderInfo.getSeparation()) .row(orderInfo.getRow()) @@ -769,6 +816,7 @@ public class PlcService { stock.setStatus(status); stock.setLotnum(plcCmdInfo.getLotnum()); stock.setExportTime(LocalDateTime.now()); + stock.setWmsTrayCode(dataInfo.getTrayCode()); stock.setCount(algorithmPojo.getGoodsNumberResult()); stock.setCategory(algorithmPojo.getGoodsTypeResult()); stock.setWmsCategory(algorithmPojo.getGoodsType()); @@ -943,7 +991,7 @@ public class PlcService { //任务开始 旋转到原点位 gyrateCamera(plcCmdInfo, Cmd.C5.name()); - orderStart(plcCmdInfo); + orderStart(plcCmdInfo,dataInfo.getTrayCode()); // 添加延时任务 PlcCmdInfo finalPlcCmdInfo = plcCmdInfo; ScheduledFuture future = scheduler.schedule(() -> { diff --git a/web/src/main/java/com/zhehekeji/web/service/StockService.java b/web/src/main/java/com/zhehekeji/web/service/StockService.java index caad750..bec7851 100644 --- a/web/src/main/java/com/zhehekeji/web/service/StockService.java +++ b/web/src/main/java/com/zhehekeji/web/service/StockService.java @@ -7,10 +7,7 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.zhehekeji.core.util.Assert; import com.zhehekeji.web.config.ConfigProperties; -import com.zhehekeji.web.entity.Stock; -import com.zhehekeji.web.entity.CheckLog; -import com.zhehekeji.web.entity.StockLog; -import com.zhehekeji.web.entity.Street; +import com.zhehekeji.web.entity.*; import com.zhehekeji.web.mapper.CheckLogMapper; import com.zhehekeji.web.mapper.StockLogMapper; import com.zhehekeji.web.mapper.StockMapper; @@ -280,7 +277,7 @@ public class StockService { stocks.forEach(stock -> { StockExportExcel stockExportExcel = new StockExportExcel(); stockExportExcel.setStreetName(street.getName()); - stockExportExcel.setLotnum(stock.getLotnum()); + stockExportExcel.setTrayCode(stock.getWmsTrayCode()); stockExportExcel.setDirection((stock.getDirection() == 1 ? "左侧" : "右侧")+"-"+(stock.getSide()==1?"浅货位":"深货位")+"-"+stock.getRow()+"层"+"-"+stock.getColumn()+"列"); stockExportExcel.setWmsCategory(stock.getWmsCategory()); stockExportExcel.setCategory((stock.getCategory() == null||stock.getWmsCategory() == null) ? "无" : (stock.getWmsCategory().equals(stock.getCategory())?"一致":"不一致")); @@ -320,7 +317,7 @@ public class StockService { stocks.forEach(stock -> { StockExportExcel stockExportExcel = new StockExportExcel(); stockExportExcel.setStreetName(streetMap.get(stock.getStreetId())); - stockExportExcel.setLotnum(stock.getLotnum()); + stockExportExcel.setTrayCode(stock.getWmsTrayCode()); stockExportExcel.setDirection((stock.getDirection() == 1 ? "左侧" : "右侧")+"-"+(stock.getSide()==1?"浅货位":"深货位")+"-"+stock.getRow()+"层"+"-"+stock.getColumn()+"列"); stockExportExcel.setWmsCategory(stock.getWmsCategory()); stockExportExcel.setCategory((stock.getCategory() == null||stock.getWmsCategory() == null) ? "无" : (stock.getWmsCategory().equals(stock.getCategory())?"一致":"不一致")); @@ -506,10 +503,10 @@ public class StockService { stockQueryWrapper.eq("status","0").or().eq("status","1").or().eq("status","4") .ne(ToolUtil.isNotEmpty(id),"id",id) - .orderByDesc("export_time").last("limit 1"); + .orderByDesc("export_time").orderByDesc("status").last("limit 1"); Stock stock =stockMapper.selectOne(stockQueryWrapper); Street street = streetService.getById(stock.getStreetId()); - + stock.setStreetName(street.getName()); String ip ="http://"+ street.getPlcIp()+":9002/pic/"; if (stock.getPreoperationPic() != null&& stock.getPreoperationPic().length() > 0) { @@ -533,10 +530,14 @@ public class StockService { public void truncateStock() { stockMapper.truncate(); } + @Resource + private CategoryService categoryService; - public List getCategoryList() { + public Map getCategoryList() { + List categoryList = categoryService.list(); + Map countLayersMap = categoryList.stream().collect(Collectors.toMap(Category::getCode, Category::getName)); - return new ArrayList<>(countLayersMap.keySet()); + return countLayersMap; } diff --git a/web/src/main/resources/mapper/OrderMapper.xml b/web/src/main/resources/mapper/OrderMapper.xml index 1b1b283..de9880a 100644 --- a/web/src/main/resources/mapper/OrderMapper.xml +++ b/web/src/main/resources/mapper/OrderMapper.xml @@ -15,6 +15,9 @@ and t.street_id = #{req.streetId} + + and t.code like concat('%',#{req.code},'%') + order by t.id desc