diff --git a/wcs/src/main/java/org/wcs/serve/controller/app/StackerController.java b/wcs/src/main/java/org/wcs/serve/controller/app/StackerController.java index f859a43..87e0f43 100644 --- a/wcs/src/main/java/org/wcs/serve/controller/app/StackerController.java +++ b/wcs/src/main/java/org/wcs/serve/controller/app/StackerController.java @@ -14,6 +14,7 @@ import org.wcs.model.vo.serve.AppServeResponse; import org.wcs.model.vo.serve.stacker.QueryStackerInfoVo; import org.wcs.model.vo.serve.stacker.QueryStackerStandVo; import org.wcs.model.vo.serve.stacker.StackerStatusVo; +import org.wcs.model.vo.serve.trayConveyLocation.TrayConveyStatusVo; import org.wcs.serve.service.intf.IStackerService; import java.util.List; @@ -105,6 +106,17 @@ public class StackerController { return stackerService.getStackerRunningInfo(); } + /** + * 获取输送机站台运行信息 + * @param standId 站台号 + * @return 结果 + */ + @SaCheckPermission("stackerManage:queryStand") + @GetMapping("/queryStackerStandStatus") + public AppServeDataResponse> queryStandStatus(@RequestParam("standId") @NotBlank(message = "站台号不能为空") String standId) { + return stackerService.queryStandStatus(standId); + } + } diff --git a/wcs/src/main/java/org/wcs/serve/service/impl/StackerService.java b/wcs/src/main/java/org/wcs/serve/service/impl/StackerService.java index 8a9ac46..1ed693f 100644 --- a/wcs/src/main/java/org/wcs/serve/service/impl/StackerService.java +++ b/wcs/src/main/java/org/wcs/serve/service/impl/StackerService.java @@ -10,6 +10,7 @@ import org.wcs.factory.AppServeResponseFactory; import org.wcs.mapper.intf.AppStackerInfoService; import org.wcs.mapper.intf.AppStackerStandService; import org.wcs.model.bo.stacker.StackerStatusData; +import org.wcs.model.bo.tuple.Tuple2; import org.wcs.model.dto.serve.stacker.AddOrUpdateStackerStandReq; import org.wcs.model.dto.serve.stacker.AddStackerReq; import org.wcs.model.dto.serve.stacker.UpdateStackerInfoReq; @@ -20,9 +21,14 @@ import org.wcs.model.vo.serve.AppServeResponse; import org.wcs.model.vo.serve.stacker.QueryStackerInfoVo; import org.wcs.model.vo.serve.stacker.QueryStackerStandVo; import org.wcs.model.vo.serve.stacker.StackerStatusVo; +import org.wcs.model.vo.serve.trayConveyLocation.TrayConveyStatusVo; +import org.wcs.plugin.plc.PlcCommunicationFactory; +import org.wcs.plugin.plc.communication.IPlcCommunication; import org.wcs.plugin.plc.model.StackerStatus; +import org.wcs.plugin.plc.model.TaskConveyStatus; import org.wcs.serve.service.intf.IStackerService; import org.wcs.utils.AppBeanUtils; +import org.wcs.utils.AppStringUtils; import java.util.ArrayList; import java.util.List; @@ -196,4 +202,32 @@ public class StackerService implements IStackerService { } return AppServeResponseFactory.success("查询成功", stackerStatusVos); } + + /** + * 根据堆垛机站台查询状态 + * @param standId 站台号 + * @return 堆垛机运行信息 + */ + @Override + public AppServeDataResponse> queryStandStatus(String standId) { + List stackerStands = appStackerStandService.queryStandInfo(standId); + if(stackerStands == null || stackerStands.isEmpty()) { + return AppServeResponseFactory.fail("数据服务异常或者点位不存在", null); + } + AppStackerStand stand = stackerStands.getFirst(); + IPlcCommunication plcCommunicationByPlcId = PlcCommunicationFactory.getPlcCommunicationByPlcId(stand.getPlcId()); + if(plcCommunicationByPlcId == null) { + return AppServeResponseFactory.fail("该PLCID对应的连接不存在", null); + } + Tuple2> standStatusTuple2 = plcCommunicationByPlcId.readTaskMultiConveyStatus(standId); + if(AppStringUtils.isNotEmpty(standStatusTuple2.item1)) { + return AppServeResponseFactory.fail(standStatusTuple2.item1, null); + } + if(standStatusTuple2.item2 == null) { + return AppServeResponseFactory.fail("查询失败", null); + } + List standStatusList = AppBeanUtils.copyListProperties(standStatusTuple2.item2, TrayConveyStatusVo::new); + return AppServeResponseFactory.success("查询成功", standStatusList); + } + } diff --git a/wcs/src/main/java/org/wcs/serve/service/intf/IStackerService.java b/wcs/src/main/java/org/wcs/serve/service/intf/IStackerService.java index 2178a16..ffac6c0 100644 --- a/wcs/src/main/java/org/wcs/serve/service/intf/IStackerService.java +++ b/wcs/src/main/java/org/wcs/serve/service/intf/IStackerService.java @@ -8,6 +8,7 @@ import org.wcs.model.vo.serve.AppServeResponse; import org.wcs.model.vo.serve.stacker.QueryStackerInfoVo; import org.wcs.model.vo.serve.stacker.QueryStackerStandVo; import org.wcs.model.vo.serve.stacker.StackerStatusVo; +import org.wcs.model.vo.serve.trayConveyLocation.TrayConveyStatusVo; import java.util.List; @@ -21,4 +22,5 @@ public interface IStackerService { AppServeResponse deleteWithStandId(String standId); // 删除一个站台 AppServeDataResponse> getStackerRunningInfo(); + AppServeDataResponse> queryStandStatus(String standId); // 查询站台状态 } diff --git a/wcs_web/src/api/stacker.ts b/wcs_web/src/api/stacker.ts index ab6c688..afb7d84 100644 --- a/wcs_web/src/api/stacker.ts +++ b/wcs_web/src/api/stacker.ts @@ -39,6 +39,14 @@ export default class StackerApi { // 获取堆垛机运行信息 static getStackerRunningInfo() { return axiosInstance.get("app/stacker/getStackerRunningInfo"); - } + }; + // 获取站台状态 + static queryStandStatus(standId: string) { + return axiosInstance.get("app/stacker/queryStackerStandStatus", { + params: { + standId: standId + } + }); + }; } \ No newline at end of file diff --git a/wcs_web/src/components/page/stacker/StackerStandComponent.vue b/wcs_web/src/components/page/stacker/StackerStandComponent.vue index 1e63356..69d0c18 100644 --- a/wcs_web/src/components/page/stacker/StackerStandComponent.vue +++ b/wcs_web/src/components/page/stacker/StackerStandComponent.vue @@ -11,6 +11,7 @@ import StackerInTypeFormatter from "@/plugin/formatter/StackerInTypeFormatter.ts import type {AppServeResponse} from "@/interface/api/AppServeResponse.ts"; import StringUtils from "@/utils/StringUtils.ts"; import AppPermission from "@/components/manage/AppPermission.vue"; +import StackerStandStatus from "@/components/page/stacker/StackerStandStatus.vue"; const trueFalseTagStyleFormatter = new TrueFalseTagStyleFormatter(); // 是否枚举格式化 const stackerInTypeFormatter = new StackerInTypeFormatter(); // 入库方式 @@ -19,6 +20,8 @@ const props = defineProps(['stackerData']); // const emit = defineEmits(['reLoadingTableData']); const standIdDisable = ref(false); // 站台号不允许编辑 const tableData = ref([]); // 站台表格数据 +const selectStandId = ref(''); // 选择的站台 +const showStandStatus = ref(false); // 是否展示站台状态弹窗 const formData = ref({ standId: '', plcId: 0, @@ -133,9 +136,16 @@ const deleteRow = (index: number, row: any) => { }); }).catch(() => {}); }; +const selectedChange = (item: IStackerStandTableData | undefined) => { + selectStandId.value = item?.standId; +} // 查看站台状态 const queryStandStatus = () => { - + if(selectStandId.value == undefined || selectStandId.value.trim() == '') { + MessageUtils.warningMessageBox('请选择站台'); + return; + } + showStandStatus.value = true; }; @@ -197,7 +207,7 @@ const queryStandStatus = () => { - + @@ -218,8 +228,12 @@ const queryStandStatus = () => { - - + + + + @@ -266,6 +280,9 @@ const queryStandStatus = () => { + + + \ No newline at end of file