Browse Source

实现线边库解锁处理设备目标地址的bug

oyq28 3 years ago
parent
commit
14c489a616

+ 12 - 7
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/mq/TaskWorkNode.java

@@ -728,9 +728,9 @@ public class TaskWorkNode {
             // 获取锁定节点ID
             Long campId = xbkStorage.getCampId();
             // 获取锁定节点
-            TaskNode targetNode = taskNodeService.getById(campId);
+            TWorkpiece workpiece = workpieceService.getWorkPiece(campId);
             // 锁定节点对应设备ID
-            Long targetId = targetNode.getResourceId();
+            Long targetId = Long.parseLong(workpiece.getTpointId());
             if(!taskNodeService.getRunStatus(targetId)){
                 map.put("result", false);
                 map.put("msg", DictionaryKey.NodeException.RUNNING_FALSE);
@@ -741,19 +741,24 @@ public class TaskWorkNode {
             Productionresource productionresource = productionresourceService.getOne(new QueryWrap<Productionresource>().eq("id", targetId));
             //任意设备条件判断
             boolean bool = resourcePosition!=null && resourcePosition.getLockStatus() == "1" && resourcePosition.getStatus() == "1" && resourcePosition.getHaveGoods() == "0";
+            Storge storge = null;
             if(productionresource.getModuleDesc()=="接驳位"){
-                //目标对象是接驳位
+                //目标对象是接驳位上托盘的库位
                 String[] jbwarr = new String[]{productionresource.getCode()};
                 //获取托盘的库位
                 Map plateMap = storgeService.getPlateStorgeByNo(jbwarr, task.getCompleteBatchNo());
-                Storge plantStorge = plateMap.get("storge") == null ? null : (Storge) plateMap.get("storge");
-                bool = bool && (plantStorge!=null );
+                storge = plateMap.get("storge") == null ? null : (Storge) plateMap.get("storge");
+                bool = bool && (storge!=null );
             }else{
-                Storge storge = storgeService.getById(resourcePosition.getStorgeId());
-                bool = bool && (storge!=null && storge.getLockStatus() == "1");
+                //目标地址是加工设备
+                storge = storgeService.getById(resourcePosition.getStorgeId());
+                bool = bool && (storge!=null && storge.getLockStatus() == "1" && storge.getId() == workpiece.getTaskNodeId());
             }
             if(bool){
+                //预先锁定目标设备
+                storgeService.lockStorge(storge, taskNode.getId());
                 //实现移动操作到具体设备
+
                 //线边库解锁
                 storgeService.unlockStorge(xbkStorage);
                 //更新workpiece的库位信息

+ 13 - 0
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/operationManagementCenter/entity/TWorkpiece.java

@@ -154,6 +154,17 @@ public class TWorkpiece extends Entity implements Serializable {
     @TableField(value = "ppoint_id", condition = LIKE)
     private String ppointId;
 
+
+    @ApiModelProperty(value = "目标库位ID")
+    @TableField("tstorge_id")
+    @Excel(name = "目标库位ID")
+    private Long tstorgeId;
+
+    @ApiModelProperty(value = "目标点位ID")
+    @Length(max = 4, message = "目标点位ID")
+    @TableField(value = "tpoint_id", condition = LIKE)
+    private String tpointId;
+
     @ApiModelProperty(value = "订单名称")
     @Length(max = 256, message = "订单名称")
     @TableField(value = "order_name", condition = LIKE)
@@ -263,6 +274,8 @@ public class TWorkpiece extends Entity implements Serializable {
                 ", pointId='" + pointId + '\'' +
                 ", pstorgeId=" + pstorgeId +
                 ", ppointId='" + ppointId + '\'' +
+                ", tstorgeId=" + tstorgeId +
+                ", tpointId='" + tpointId + '\'' +
                 ", orderName='" + orderName + '\'' +
                 ", procedureId=" + procedureId +
                 ", procedureName='" + procedureName + '\'' +