From 9d0acfb65c80c4948c305ca01338f894b87346a0 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期一, 08 四月 2024 09:44:37 +0800
Subject: [PATCH] Merge branch 'Four-Way-Rack' of http://47.97.1.152:5880/r/zy-asrs-master into Four-Way-Rack
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java | 4
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/MotionTimer.java | 75 ++++
zy-asrs-flow/src/pages/device/shuttle/index.less | 15
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java | 93 +++++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java | 4
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java | 10
zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml | 18 +
zy-asrs-flow/src/pages/device/shuttle/index.jsx | 318 +++++++++++--------
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/ShuttleOperatorParam.java | 17 +
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java | 4
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/MotionCtgType.java | 3
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/BasShuttleController.java | 90 +++++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java | 2
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java | 228 ++-----------
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/TaskStsType.java | 24 +
15 files changed, 568 insertions(+), 337 deletions(-)
diff --git a/zy-asrs-flow/src/pages/device/shuttle/index.jsx b/zy-asrs-flow/src/pages/device/shuttle/index.jsx
index 13a5bb2..11d4f34 100644
--- a/zy-asrs-flow/src/pages/device/shuttle/index.jsx
+++ b/zy-asrs-flow/src/pages/device/shuttle/index.jsx
@@ -1,66 +1,18 @@
import React, { useEffect, useRef, useState } from "react";
import { getToken } from '@/utils/token-util'
-import { Badge, Descriptions } from 'antd';
+import Http from '@/utils/http';
+import { Badge, Button, Descriptions, Drawer, Input, Card, Select, message } from 'antd';
import {
PageContainer,
} from '@ant-design/pro-components';
-
-let items = [
- {
- key: '1',
- label: '浠诲姟鍙�',
- children: '1',
- },
- {
- key: '2',
- label: '宸ヤ綔鐘舵��',
- children: <Badge status="processing" text="Running" />,
- },
- {
- key: '3',
- label: '璁惧鐘舵��',
- children: <Badge status="processing" text="Running" />,
- },
- {
- key: '4',
- label: '鍧愭爣鐮�',
- children: '1,2,3',
- },
- {
- key: '5',
- label: '鐢甸噺',
- children: '50%',
- },
- {
- key: '6',
- label: '閿欒鐮�',
- children: '0',
- },
- {
- key: '7',
- label: '椤跺崌鐘舵��',
- children: 'Y',
- },
- {
- key: '8',
- label: '鍏呯數鐘舵��',
- children: 'Y',
- },
- {
- key: '9',
- label: '浣滀笟鏍囪',
- children: 'Y',
- },
- {
- key: '10',
- label: '璺戝簱寮�鍏�',
- children: 'Y',
- },
-];
+import './index.less'
const Main = () => {
const [deviceInfos, setDeviceInfos] = useState([]);
const [ws, setWs] = useState(null);
+ const [openOpera, setOpenOpera] = useState(false);
+ const [currentData, setCurrentData] = useState(null);
+ const [targetLoc, setTargetLoc] = useState("");
useEffect(() => {
var newWs = new WebSocket("ws://127.0.0.1:9090/wcs/ws/shuttle/websocket");
@@ -74,7 +26,6 @@
}, [])
useEffect(() => {
-
if (ws) {
ws.onopen = function () {
console.log("open");
@@ -122,87 +73,184 @@
}))
}
- return (
- <PageContainer
- header={{
- breadcrumb: {},
- }}
- >
- <div style={{ display: 'flex', flexWrap: 'wrap', justifyContent: 'space-around' }}>
- {deviceInfos.map(item => {
- if(item == null) {
- return;
- }
- let tmpTitle = item.shuttleNo + "鍙峰洓鍚戣溅"
- let tmpData = [
- {
- key: '1',
- label: '浠诲姟鍙�',
- children: item.taskNo,
- },
- {
- key: '2',
- label: '宸ヤ綔鐘舵��',
- children: <Badge status="processing" text={item.protocolStatusType} />,
- },
- {
- key: '3',
- label: '璁惧鐘舵��',
- children: <Badge status="processing" text={item.deviceStatus$} />,
- },
- {
- key: '4',
- label: '鍧愭爣鐮�',
- children: item.currentCode,
- },
- {
- key: '5',
- label: '鐢甸噺',
- children: item.batteryPower,
- },
- {
- key: '6',
- label: '閿欒鐮�',
- children: '0',
- },
- {
- key: '7',
- label: '椤跺崌鐘舵��',
- children: item.hasLift ? 'Y' : 'N',
- },
- {
- key: '8',
- label: '鍏呯數鐘舵��',
- children: item.hasCharge ? 'Y' : 'N',
- },
- {
- key: '9',
- label: '浣滀笟鏍囪',
- children: item.pakMk ? 'Y' : 'N',
- },
- {
- key: '10',
- label: '璺戝簱寮�鍏�',
- children: item.moveLoc ? 'Y' : 'N',
- },
- {
- key: '11',
- label: '杩愯鏂瑰悜',
- children: item.runDirection,
- },
- {
- key: '12',
- label: '鏄惁鏈夋墭鐩�',
- children: item.hasPallet ? 'Y' : 'N',
- },
- ];
- return <div key={item.id} style={{ width: '45%' }}>
- <Descriptions size="small" title={tmpTitle} bordered items={tmpData} />
+ const showOpera = (data) => {
+ setOpenOpera(true);
+ console.log(data);
+ setCurrentData(data);
+ };
+
+ const closeOpera = () => {
+ setOpenOpera(false);
+ };
+
+ const targetLocChange = (e) => {
+ setTargetLoc(e.target.value)
+ }
+
+ const shuttleOperator = async (type) => {
+ if (type == 'moveLoc') {
+ if (targetLoc == '') {
+ message.warning('璇疯緭鍏ョ洰鏍囦綅缃�');
+ return;
+ }
+ }
+
+ try {
+ const resp = await Http.doPost('api/basShuttle/operator/shuttle', {
+ shuttleNo: currentData.shuttleNo,
+ shuttleTaskMode: type,
+ targetLocNo: targetLoc
+ });
+ if (resp.code === 200) {
+ message.success("璇锋眰鎴愬姛");
+ return true;
+ } else {
+ message.warning(resp.msg);
+ return false;
+ }
+ } catch (error) {
+ message.warning("璇锋眰澶辫触");
+ return false;
+ }
+ }
+
+ let codeContent = (<PageContainer
+ header={{
+ breadcrumb: {},
+ }}
+ >
+ <div style={{ display: 'flex', flexWrap: 'wrap', justifyContent: 'space-around' }}>
+ {deviceInfos.map(item => {
+ if (item == null) {
+ return;
+ }
+ let tmpTitle = item.shuttleNo + "鍙峰洓鍚戣溅"
+ let tmpData = [
+ {
+ key: '1',
+ label: '浠诲姟鍙�',
+ children: item.taskNo,
+ },
+ {
+ key: '2',
+ label: '宸ヤ綔鐘舵��',
+ children: <Badge status="processing" text={item.protocolStatusType} />,
+ },
+ {
+ key: '3',
+ label: '璁惧鐘舵��',
+ children: <Badge status="processing" text={item.deviceStatus$} />,
+ },
+ {
+ key: '4',
+ label: '鍧愭爣鐮�',
+ children: item.currentCode,
+ },
+ {
+ key: '5',
+ label: '鐢甸噺',
+ children: item.batteryPower,
+ },
+ {
+ key: '6',
+ label: '閿欒鐮�',
+ children: '0',
+ },
+ {
+ key: '7',
+ label: '椤跺崌鐘舵��',
+ children: item.hasLift ? 'Y' : 'N',
+ },
+ {
+ key: '8',
+ label: '鍏呯數鐘舵��',
+ children: item.hasCharge ? 'Y' : 'N',
+ },
+ {
+ key: '9',
+ label: '浣滀笟鏍囪',
+ children: item.pakMk ? 'Y' : 'N',
+ },
+ {
+ key: '10',
+ label: '璺戝簱寮�鍏�',
+ children: item.moveLoc ? 'Y' : 'N',
+ },
+ {
+ key: '11',
+ label: '杩愯鏂瑰悜',
+ children: item.runDirection,
+ },
+ {
+ key: '12',
+ label: '鏄惁鏈夋墭鐩�',
+ children: item.hasPallet ? 'Y' : 'N',
+ },
+ ];
+ return <div key={item.id} style={{ width: '45%' }}>
+ <div style={{ marginBottom: '10px' }}>
+ <span style={{ marginRight: '10px' }}>{tmpTitle}</span>
+ <Button type="primary" onClick={() => showOpera(item)}>鎿嶄綔</Button>
</div>
- })}
- </div>
- </PageContainer>
- )
+ <Descriptions size="small" bordered items={tmpData} />
+ </div>
+ })}
+ </div>
+ </PageContainer>);
+
+ if (currentData) {
+ codeContent = (
+ <>
+ {codeContent}
+ <Drawer title="鎿嶄綔闈㈡澘" onClose={closeOpera} open={openOpera}>
+ <h2 style={{ marginBottom: '15px' }}>{currentData.shuttleNo}鍙峰洓鍚戣溅</h2>
+ <div style={{ marginBottom: '15px' }}>
+ <Card title="绉诲姩鎸囦护" style={{ width: 300 }}>
+ <p>
+ <Input addonBefore="鐩爣浣嶇疆" defaultValue="1-1-1" onChange={targetLocChange} />
+ </p>
+ <p>
+ <Button onClick={() => shuttleOperator('moveLoc')}>绉诲姩鍒扮洰鏍囦綅缃�</Button>
+ </p>
+ </Card>
+ </div>
+
+ <div style={{ marginBottom: '15px' }}>
+ <Card title="鐩稿叧鎸囦护" style={{ width: 300 }}>
+ <div className="commandItem">
+ <Button onClick={() => shuttleOperator('palletLift')}>鎵樼洏椤跺崌</Button>
+ <Button onClick={() => shuttleOperator('palletDown')}>鎵樼洏涓嬮檷</Button>
+ <Button onClick={() => shuttleOperator('chargeOpen')}>鍏呯數寮�</Button>
+ <Button onClick={() => shuttleOperator('chargeClose')}>鍏呯數鍏�</Button>
+ <Button onClick={() => shuttleOperator('reset')}>澶嶄綅</Button>
+ </div>
+ </Card>
+ </div>
+
+ <div style={{ marginBottom: '15px' }}>
+ <Card title="璺戝簱绯荤粺" style={{ width: 300 }}>
+ <div className="commandItem">
+ <div><Input addonBefore="X璧风偣" defaultValue="1" /></div>
+ <div><Input addonBefore="X缁堢偣" defaultValue="1" /></div>
+ <div><Input addonBefore="Y璧风偣" defaultValue="1" /></div>
+ <div><Input addonBefore="Y缁堢偣" defaultValue="1" /></div>
+ <div>
+ <Select
+ defaultValue="0"
+ style={{ width: 120 }}
+ options={[{ value: '0', label: '璺戣建閬�' }, { value: '1', label: '璺戝簱浣�' }, { value: '2', label: '姣嶈建閬撳惊鐜窇' }, { value: '3', label: '瀛愯建閬撳惊鐜窇' }]}
+ />
+ </div>
+ <Button>璺戝簱</Button>
+ </div>
+ </Card>
+ </div>
+ </Drawer>
+ </>
+ )
+ }
+
+ return (codeContent);
}
export default Main;
\ No newline at end of file
diff --git a/zy-asrs-flow/src/pages/device/shuttle/index.less b/zy-asrs-flow/src/pages/device/shuttle/index.less
new file mode 100644
index 0000000..d70f38a
--- /dev/null
+++ b/zy-asrs-flow/src/pages/device/shuttle/index.less
@@ -0,0 +1,15 @@
+.commandItem {
+ display: flex;
+ justify-content: space-between;
+ flex-wrap: wrap;
+}
+
+.commandItem > Button {
+ width: 120px;
+ margin-bottom: 10px;
+}
+
+.commandItem > div {
+ width: 120px;
+ margin-bottom: 10px;
+}
\ No newline at end of file
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/BasShuttleController.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/BasShuttleController.java
index 21b798f..763cdfe 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/BasShuttleController.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/BasShuttleController.java
@@ -2,25 +2,36 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zy.asrs.framework.common.BaseRes;
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.common.R;
+import com.zy.asrs.framework.common.SnowflakeIdWorker;
import com.zy.asrs.wcs.common.annotation.OperationLog;
import com.zy.asrs.wcs.common.domain.BaseParam;
import com.zy.asrs.wcs.common.domain.KeyValVo;
import com.zy.asrs.wcs.common.domain.PageParam;
+import com.zy.asrs.wcs.core.domain.param.ShuttleOperatorParam;
import com.zy.asrs.wcs.core.entity.BasShuttle;
+import com.zy.asrs.wcs.core.entity.Motion;
+import com.zy.asrs.wcs.core.entity.Task;
+import com.zy.asrs.wcs.core.entity.TaskCtg;
+import com.zy.asrs.wcs.core.kernel.AnalyzeService;
+import com.zy.asrs.wcs.core.model.enums.TaskStsType;
import com.zy.asrs.wcs.core.service.BasShuttleService;
+import com.zy.asrs.wcs.core.service.MotionService;
+import com.zy.asrs.wcs.core.service.TaskCtgService;
+import com.zy.asrs.wcs.core.service.TaskService;
+import com.zy.asrs.wcs.core.utils.Utils;
+import com.zy.asrs.wcs.rcs.News;
import com.zy.asrs.wcs.system.controller.BaseController;
import com.zy.asrs.wcs.utils.ExcelUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
@RestController
@RequestMapping("/api")
@@ -28,6 +39,16 @@
@Autowired
private BasShuttleService basShuttleService;
+ @Autowired
+ private TaskCtgService taskCtgService;
+ @Autowired
+ private SnowflakeIdWorker snowflakeIdWorker;
+ @Autowired
+ private TaskService taskService;
+ @Autowired
+ private AnalyzeService analyzeService;
+ @Autowired
+ private MotionService motionService;
@PreAuthorize("hasAuthority('core:basShuttle:list')")
@PostMapping("/basShuttle/page")
@@ -99,4 +120,65 @@
ExcelUtil.build(ExcelUtil.create(basShuttleService.list(), BasShuttle.class), response);
}
+ @PreAuthorize("hasAuthority('core:basShuttle:operator')")
+ @PostMapping("/basShuttle/operator/shuttle")
+ @Transactional
+ public R shuttleOperator(@RequestBody ShuttleOperatorParam param) {
+ if (Cools.isEmpty(param.getShuttleNo(), param.getShuttleTaskMode())) {
+ return R.error("鍙傛暟涓虹┖");
+ }
+
+ Integer shuttleNo = param.getShuttleNo();
+
+ //鑾峰彇杩佺Щ浠诲姟绫诲瀷
+ TaskCtg taskCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>()
+ .eq(TaskCtg::getFlag, "MANUAL")
+ .eq(TaskCtg::getStatus, 1));
+ if (taskCtg == null) {
+ return R.error();
+ }
+
+ String targetLoc = null;//浠诲姟鐩爣(鍊熺敤瀛楁)
+ String targetSite = param.getShuttleTaskMode();//浠诲姟绫诲瀷(鍊熺敤瀛楁)
+ if (param.getShuttleTaskMode().equals("moveLoc")) {
+ //杩佺Щ浠诲姟
+ targetLoc = param.getTargetLocNo();
+ }
+
+ Task task = new Task();
+ task.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
+ task.setTaskNo(String.valueOf(Utils.getTaskNo("MANUAL")));
+ task.setTaskSts(TaskStsType.NEW_MANUAL.getId());
+ task.setTaskCtg(taskCtg.getId());
+ task.setPriority(10);
+ task.setOriginSite(null);
+ task.setOriginLoc(null);
+ task.setDestSite(targetSite);
+ task.setDestLoc(targetLoc);
+ task.setIoTime(new Date());
+ task.setStartTime(new Date());
+ task.setStatus(1);
+ task.setMemo("manual");
+ task.setShuttleNo(param.getShuttleNo());
+ boolean result = taskService.save(task);
+ if (!result) {
+ return R.error();
+ }
+
+ // generate motion list
+ List<Motion> motionList = analyzeService.generateShuttleManualMotion(task);
+ if (Cools.isEmpty(motionList)) {
+ News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鎵嬪姩浠诲姟澶辫触!!!", shuttleNo);
+ return R.error();
+ }
+ motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo()));
+
+ task.setTaskSts(TaskStsType.ANALYZE_MANUAL.getId());
+ if (!taskService.updateById(task)) {
+ News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鎵嬪姩浠诲姟澶辫触!!!", shuttleNo);
+ return R.error();
+ }
+ return R.ok();
+ }
+
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/ShuttleOperatorParam.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/ShuttleOperatorParam.java
new file mode 100644
index 0000000..00ddd3a
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/ShuttleOperatorParam.java
@@ -0,0 +1,17 @@
+package com.zy.asrs.wcs.core.domain.param;
+
+import lombok.Data;
+
+@Data
+public class ShuttleOperatorParam {
+
+ // 鍥涘悜绌挎杞﹀彿
+ private Integer shuttleNo;
+
+ // 鍛戒护绫诲瀷
+ private String shuttleTaskMode;
+
+ // 鐩爣搴撲綅
+ private String targetLocNo;
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
index 08280d0..f2ce497 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
@@ -4,6 +4,7 @@
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.wcs.core.domain.dto.MotionDto;
import com.zy.asrs.wcs.core.entity.Task;
+import com.zy.asrs.wcs.core.model.enums.DeviceCtgType;
import com.zy.asrs.wcs.core.model.enums.MotionCtgType;
import com.zy.asrs.wcs.core.model.enums.TaskStsType;
import com.zy.asrs.wcs.core.model.enums.WorkZoneType;
@@ -982,6 +983,98 @@
return motionList;
}
+ /**
+ * 鐢熸垚灏忚溅鎵嬪姩鍔ㄤ綔
+ */
+ public List<Motion> generateShuttleManualMotion(Task task) {
+ List<Motion> motionList = new ArrayList<>();
+ if (task.getTaskSts() != TaskStsType.NEW_MOVE.getId()) {
+ return motionList;
+ }
+ String targetLoc = task.getDestLoc();//浠诲姟鐩爣(鍊熺敤瀛楁)
+ String targetSite = task.getDestSite();//浠诲姟绫诲瀷(鍊熺敤瀛楁)
+
+ //鑾峰彇绌挎杞︾被鍨�
+ DeviceType deviceType = deviceTypeService.getOne(new LambdaQueryWrapper<DeviceType>()
+ .eq(DeviceType::getFlag, String.valueOf(SlaveType.Shuttle))
+ .eq(DeviceType::getStatus, 1));
+ if (deviceType == null) {
+ return motionList;
+ }
+
+ Device device = deviceService.getOne(new LambdaQueryWrapper<Device>()
+ .eq(Device::getDeviceNo, task.getShuttleNo())
+ .eq(Device::getDeviceType, deviceType.getId())
+ .eq(Device::getHostId, task.getHostId())
+ .eq(Device::getStatus, 1));
+ if (device == null) {
+ return motionList;
+ }
+
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getId().intValue());
+ if (shuttleThread == null) {
+ return motionList;
+ }
+
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null || shuttleProtocol.getShuttleNo() == null) {
+ return motionList;
+ }
+
+ if (targetSite.equals("moveLoc")) {//绉诲姩
+ String shuttleLocNo = shuttleProtocol.getCurrentLocNo();
+
+ // 鍒ゆ柇绌挎杞︽槸鍚﹀湪鐩爣灞�
+ if (Utils.getLev(shuttleLocNo) == Utils.getLev(targetLoc)) {
+
+ // 绌挎杞﹁蛋琛岃嚦鐩爣搴撲綅
+ motionList.addAll(kernelService.shuttleMove(
+ MotionDto.build((dto -> {
+ dto.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());
+ dto.setLocNo(shuttleLocNo);
+ })),
+ MotionDto.build((dto -> {
+ dto.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());
+ dto.setLocNo(targetLoc);
+ })),
+ MotionCtgType.SHUTTLE_MOVE
+ ));
+
+ }
+ } else if (targetSite.equals("palletLift")) {
+ //鎵樼洏椤跺崌
+ motionList.add(Motion.build(motion -> {
+ motion.setDeviceCtg(DeviceCtgType.SHUTTLE.val());
+ motion.setDevice(String.valueOf(task.getShuttleNo()));
+ motion.setMotionCtg(MotionCtgType.SHUTTLE_PALLET_LIFT.val());
+ }));
+ } else if (targetSite.equals("palletDown")) {
+ //鎵樼洏涓嬮檷
+ motionList.add(Motion.build(motion -> {
+ motion.setDeviceCtg(DeviceCtgType.SHUTTLE.val());
+ motion.setDevice(String.valueOf(task.getShuttleNo()));
+ motion.setMotionCtg(MotionCtgType.SHUTTLE_PALLET_DOWN.val());
+ }));
+ } else if (targetSite.equals("chargeOpen")) {
+ //鍏呯數寮�
+ motionList.add(Motion.build(motion -> {
+ motion.setDeviceCtg(DeviceCtgType.SHUTTLE.val());
+ motion.setDevice(String.valueOf(task.getShuttleNo()));
+ motion.setMotionCtg(MotionCtgType.SHUTTLE_CHARGE_ON.val());
+ }));
+ } else if (targetSite.equals("chargeClose")) {
+ //鍏呯數鍏�
+ motionList.add(Motion.build(motion -> {
+ motion.setDeviceCtg(DeviceCtgType.SHUTTLE.val());
+ motion.setDevice(String.valueOf(task.getShuttleNo()));
+ motion.setMotionCtg(MotionCtgType.SHUTTLE_CHARGE_OFF.val());
+ }));
+ } else if (targetSite.equals("reset")) {
+ //澶嶄綅
+ }
+
+ return motionList;
+ }
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
index fc451d3..e276f9a 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
@@ -203,164 +203,24 @@
shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO;
break;
-// case SHUTTLE_MOVE_FROM_CONVEYOR:
-// shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
-// shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO;
-// break;
-// case SHUTTLE_MOVE_TO_CONVEYOR:
-// shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
-// shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO;
-// break;
-// case SHUTTLE_MOVE_FROM_LIFT_TO_CONVEYOR://绌挎杞﹀嚭鎻愬崌鏈哄幓杈撻�佺嚎
-// // 鍒ゆ柇鎻愬崌鏈虹姸鎬�
-// liftThread = (SiemensLiftThread) SlaveConnection.get(SlaveType.Lift, Integer.parseInt(motion.getTemp()));
-// if (liftThread == null) {
-// return false;
-// }
-// liftProtocol = liftThread.getLiftProtocol();
-// // 鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔ㄣ�佺┖闂层�佸噯澶囧氨缁�侀摼鏉℃病鏈夎浆鍔ㄣ�佹病鏈夋湭灏辩华鎶ラ敊
-// if (!liftProtocol.getMode()
-// || liftProtocol.getRunning()
-// || !liftProtocol.getReady()
-// || liftProtocol.getForwardRotationFeedback()
-// || liftProtocol.getReverseFeedback()
-// || liftProtocol.getNotReady().intValue() != 0
-// ) {
-// return false;
-// }
-//
-// if (liftProtocol.getLev().intValue() != Utils.getLev(motion.getTarget())) {//鍒ゆ柇鎻愬崌鏈烘槸鍚﹁揪鍒扮洰鏍囧眰
-// return false;
-// }
-//
-// //鍒ゆ柇鎻愬崌鏈烘槸鍚﹁閿佸畾
-// if (!liftProtocol.getLiftLock()) {
-// //閿佸畾鎻愬崌鏈�
-// LiftCommand lockCommand = liftThread.getLockCommand(true);//鑾峰彇鎻愬崌鏈洪攣瀹氬懡浠�
-// lockCommand.setLiftNo(liftProtocol.getLiftNo());
-// lockCommand.setTaskNo(motion.getWrkNo().shortValue());//鑾峰彇浠诲姟鍙�
-// liftThread.assignWork(lockCommand);
-// return false;//绛夊緟涓嬩竴娆¤疆璇�
-// }
-//
-// //鍒ゆ柇鎻愬崌鏈哄伐浣滃彿鏄惁鍜屽綋鍓嶄换鍔$浉鍚�
-// if (liftProtocol.getTaskNo().intValue() != motion.getWrkNo()) {
-// return false;
-// }
-//
-// shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
-// shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO;
-// break;
-// case SHUTTLE_TRANSPORT:
-// shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
-// shuttleTaskModeType = ShuttleTaskModeType.PAK_IN;
-//
-// shuttleCommands.add(0, shuttleThread.getPalletCommand((short) 1));
-// shuttleCommands.add(shuttleCommands.size(), shuttleThread.getPalletCommand((short) 2));
-// break;
-// case SHUTTLE_TRANSPORT_FROM_LIFT://绌挎杞﹁浇璐у嚭鎻愬崌鏈�
-// // 鍒ゆ柇鎻愬崌鏈虹姸鎬�
-// liftThread = (SiemensLiftThread) SlaveConnection.get(SlaveType.Lift, Integer.parseInt(motion.getTemp()));
-// if (liftThread == null) {
-// return false;
-// }
-// liftProtocol = liftThread.getLiftProtocol();
-// // 鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔ㄣ�佺┖闂层�佸噯澶囧氨缁�侀摼鏉℃病鏈夎浆鍔ㄣ�佹病鏈夋湭灏辩华鎶ラ敊
-// if (!liftProtocol.getMode()
-// || liftProtocol.getRunning()
-// || !liftProtocol.getReady()
-// || liftProtocol.getForwardRotationFeedback()
-// || liftProtocol.getReverseFeedback()
-// || liftProtocol.getNotReady().intValue() != 0
-// ) {
-// return false;
-// }
-//
-// if (liftProtocol.getLev().intValue() != Utils.getLev(motion.getTarget())) {//鍒ゆ柇鎻愬崌鏈烘槸鍚﹁揪鍒扮洰鏍囧眰
-// return false;
-// }
-//
-// //鍒ゆ柇鎻愬崌鏈烘槸鍚﹁閿佸畾
-// if (!liftProtocol.getLiftLock()) {
-// //閿佸畾鎻愬崌鏈�
-// LiftCommand lockCommand = liftThread.getLockCommand(true);//鑾峰彇鎻愬崌鏈洪攣瀹氬懡浠�
-// lockCommand.setLiftNo(liftProtocol.getLiftNo());
-// lockCommand.setTaskNo(motion.getWrkNo().shortValue());//鑾峰彇浠诲姟鍙�
-// liftThread.assignWork(lockCommand);
-// return false;//绛夊緟涓嬩竴娆¤疆璇�
-// }
-//
-// //鍒ゆ柇鎻愬崌鏈哄伐浣滃彿鏄惁鍜屽綋鍓嶄换鍔$浉鍚�
-// if (liftProtocol.getTaskNo().intValue() != motion.getWrkNo()) {
-// return false;
-// }
-//
-// shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
-// shuttleTaskModeType = ShuttleTaskModeType.PAK_IN;
-// shuttleCommands.add(0, shuttleThread.getPalletCommand((short) 1));
-//// shuttleCommands.add(shuttleCommands.size(), shuttleThread.getPalletCommand((short) 2));
-// break;
-// case SHUTTLE_TRANSPORT_TO_LIFT://绌挎杞﹁浇璐ц繘鎻愬崌鏈�
-// // 鍒ゆ柇鎻愬崌鏈虹姸鎬�
-// liftThread = (SiemensLiftThread) SlaveConnection.get(SlaveType.Lift, Integer.parseInt(motion.getTemp()));
-// if (liftThread == null) {
-// return false;
-// }
-// liftProtocol = liftThread.getLiftProtocol();
-// // 鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔ㄣ�佺┖闂层�佸噯澶囧氨缁�侀摼鏉℃病鏈夎浆鍔ㄣ�佹病鏈夋湭灏辩华鎶ラ敊
-// if (!liftProtocol.getMode()
-// || liftProtocol.getRunning()
-// || !liftProtocol.getReady()
-// || liftProtocol.getForwardRotationFeedback()
-// || liftProtocol.getReverseFeedback()
-// || liftProtocol.getNotReady().intValue() != 0
-// ) {
-// return false;
-// }
-//
-// if (liftProtocol.getLev().intValue() != Utils.getLev(motion.getTarget())) {//鍒ゆ柇鎻愬崌鏈烘槸鍚﹁揪鍒扮洰鏍囧眰
-// return false;
-// }
-//
-// //鍒ゆ柇鎻愬崌鏈烘槸鍚﹁閿佸畾
-// if (!liftProtocol.getLiftLock()) {
-// //閿佸畾鎻愬崌鏈�
-// LiftCommand lockCommand = liftThread.getLockCommand(true);//鑾峰彇鎻愬崌鏈洪攣瀹氬懡浠�
-// lockCommand.setLiftNo(liftProtocol.getLiftNo());
-// lockCommand.setTaskNo(motion.getWrkNo().shortValue());//鑾峰彇浠诲姟鍙�
-// liftThread.assignWork(lockCommand);
-// return false;//绛夊緟涓嬩竴娆¤疆璇�
-// }
-//
-// //鍒ゆ柇鎻愬崌鏈哄伐浣滃彿鏄惁鍜屽綋鍓嶄换鍔$浉鍚�
-// if (liftProtocol.getTaskNo().intValue() != motion.getWrkNo()) {
-// return false;
-// }
-//
-// shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
-// shuttleTaskModeType = ShuttleTaskModeType.PAK_IN;
-//// shuttleCommands.add(0, shuttleThread.getPalletCommand((short) 1));
-// shuttleCommands.add(shuttleCommands.size(), shuttleThread.getPalletCommand((short) 2));
-// break;
-// case SHUTTLE_TRANSPORT_FROM_CONVEYOR:
-// shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
-// shuttleTaskModeType = ShuttleTaskModeType.PAK_IN;
-//
-// shuttleCommands.add(0, shuttleThread.getPalletCommand((short) 1));
-// shuttleCommands.add(shuttleCommands.size(), shuttleThread.getPalletCommand((short) 2));
-// break;
-// case SHUTTLE_TRANSPORT_TO_CONVEYOR:
-// shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
-// shuttleTaskModeType = ShuttleTaskModeType.PAK_IN;
-//
-// shuttleCommands.add(0, shuttleThread.getPalletCommand((short) 1));
-// shuttleCommands.add(shuttleCommands.size(), shuttleThread.getPalletCommand((short) 2));
-// break;
-// case SHUTTLE_CHARGE_ON:
-// shuttleTaskModeType = ShuttleTaskModeType.CHARGE;
-// shuttleCommands.add(shuttleThread.getChargeSwitchCommand((short) 1));
-// assignCommand.setCharge(Boolean.TRUE);
-// break;
+ case SHUTTLE_CHARGE_ON://鍏呯數寮�
+ shuttleTaskModeType = ShuttleTaskModeType.CHARGE;
+ shuttleCommands.add(shuttleThread.getChargeCommand(motion.getWrkNo(), true));
+ assignCommand.setCharge(Boolean.TRUE);
+ break;
+ case SHUTTLE_CHARGE_OFF://鍏呯數鍏�
+ shuttleTaskModeType = ShuttleTaskModeType.CHARGE;
+ shuttleCommands.add(shuttleThread.getChargeCommand(motion.getWrkNo(), false));
+ assignCommand.setCharge(Boolean.TRUE);
+ break;
+ case SHUTTLE_PALLET_LIFT://鎵樼洏椤跺崌
+ shuttleTaskModeType = ShuttleTaskModeType.PALLET_LIFT;
+ shuttleCommands.add(shuttleThread.getLiftCommand(motion.getWrkNo(), true));
+ break;
+ case SHUTTLE_PALLET_DOWN://鎵樼洏涓嬮檷
+ shuttleTaskModeType = ShuttleTaskModeType.PALLET_DOWN;
+ shuttleCommands.add(shuttleThread.getLiftCommand(motion.getWrkNo(), false));
+ break;
default:
throw new CoolException(motion.getMotionCtgEl() + "娌℃湁鎸囧畾浠诲姟浣滀笟娴佺▼锛侊紒锛�");
}
@@ -417,8 +277,8 @@
return false;
}
-// SiemensLiftThread liftThread = null;
-// LiftProtocol liftProtocol = null;
+ LiftThread liftThread = null;
+ LiftProtocol liftProtocol = null;
switch (Objects.requireNonNull(MotionCtgType.get(motion.getMotionCtgEl()))){
case SHUTTLE_MOVE:
@@ -430,21 +290,21 @@
return false;
}
break;
-// case SHUTTLE_MOVE_TO_LIFT:
-// case SHUTTLE_MOVE_FROM_LIFT:
-// case SHUTTLE_TRANSPORT_FROM_LIFT:
-// case SHUTTLE_TRANSPORT_TO_LIFT:
-// case SHUTTLE_MOVE_FROM_LIFT_TO_CONVEYOR:
-// liftThread = (SiemensLiftThread) SlaveConnection.get(SlaveType.Lift, Integer.parseInt(motion.getTemp()));
-// if (liftThread == null) {
-// return false;
-// }
-// liftProtocol = liftThread.getLiftProtocol();
-//
-// if (!shuttleProtocol.getCurrentLocNo().equals(motion.getTarget())) {
-// return false;
-// }
-//
+ case SHUTTLE_MOVE_TO_LIFT:
+ case SHUTTLE_MOVE_FROM_LIFT:
+ case SHUTTLE_TRANSPORT_FROM_LIFT:
+ case SHUTTLE_TRANSPORT_TO_LIFT:
+ case SHUTTLE_MOVE_FROM_LIFT_TO_CONVEYOR:
+ liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, Integer.parseInt(motion.getTemp()));
+ if (liftThread == null) {
+ return false;
+ }
+ liftProtocol = liftThread.getStatus();
+
+ if (!shuttleProtocol.getCurrentLocNo().equals(motion.getTarget())) {
+ return false;
+ }
+
// //鍒ゆ柇鎻愬崌鏈烘槸鍚﹁閿佸畾
// if (liftProtocol.getLiftLock()) {
// //瑙i攣鎻愬崌鏈�
@@ -454,18 +314,18 @@
// liftThread.assignWork(lockCommand);
// return false;
// }
-//
-// //鍒ゆ柇鎻愬崌鏈哄伐浣滃彿鏄惁鍜屽綋鍓嶄换鍔$浉鍚�
-// if (liftProtocol.getTaskNo().intValue() != motion.getWrkNo()) {
-// return false;
-// }
-//
-// if (liftProtocol.getTaskNo().intValue() != 0) {
+
+ //鍒ゆ柇鎻愬崌鏈哄伐浣滃彿鏄惁鍜屽綋鍓嶄换鍔$浉鍚�
+ if (liftProtocol.getTaskNo().intValue() != motion.getWrkNo()) {
+ return false;
+ }
+
+// if (liftProtocol.getTaskNo() != 0) {
// //娓呯┖鎻愬崌鏈哄彿
// liftThread.setTaskNo(0);
// }
-//
-// break;
+
+ break;
default:
break;
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java
index 2f74a3c..5c2c38c 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java
@@ -18,6 +18,10 @@
List<Task> selectByExecuteSts();
+ List<Task> selectManualByAnalyzeSts();
+
+ List<Task> selectManualByExecuteSts();
+
List<Task> selectWaitAnalyzeInBoundTask();
List<Task> selectPakOut();
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/MotionCtgType.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/MotionCtgType.java
index ad73d9b..6374639 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/MotionCtgType.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/MotionCtgType.java
@@ -51,6 +51,9 @@
SHUTTLE_CHARGE_ON(SHUTTLE),
SHUTTLE_CHARGE_OFF(SHUTTLE),
+ SHUTTLE_PALLET_LIFT(SHUTTLE),//鎵樼洏椤跺崌
+ SHUTTLE_PALLET_DOWN(SHUTTLE),//鎵樼洏涓嬮檷
+
// AGV ----------------------------------------------
AGV_TRANSPORT(AGV),
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/TaskStsType.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/TaskStsType.java
index 405119c..6b8b3e5 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/TaskStsType.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/TaskStsType.java
@@ -1,6 +1,10 @@
package com.zy.asrs.wcs.core.model.enums;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zy.asrs.framework.common.SpringUtils;
import com.zy.asrs.framework.exception.CoolException;
+import com.zy.asrs.wcs.core.entity.TaskSts;
+import com.zy.asrs.wcs.core.service.TaskStsService;
public enum TaskStsType {
@@ -51,4 +55,24 @@
throw new CoolException("TaskStsType Error!!!");
}
+ public static TaskStsType queryById(Long id) {
+ TaskStsService taskStsService = SpringUtils.getBean(TaskStsService.class);
+ TaskSts taskSts = taskStsService.getById(id);
+ if (taskSts == null) {
+ throw new CoolException("TaskStsType Error!!!");
+ }
+ return query(Long.valueOf(taskSts.getUuid()));
+ }
+
+ public Long getId() {
+ TaskStsService taskStsService = SpringUtils.getBean(TaskStsService.class);
+ TaskSts taskSts = taskStsService.getOne(new LambdaQueryWrapper<TaskSts>()
+ .eq(TaskSts::getUuid, sts)
+ .eq(TaskSts::getStatus, 1));
+ if (taskSts == null) {
+ throw new CoolException("TaskStsType Error!!!");
+ }
+ return taskSts.getId();
+ }
+
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java
index ef8f451..a79c50e 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java
@@ -16,6 +16,10 @@
List<Task> selectByExecuteSts();
+ List<Task> selectManualByAnalyzeSts();
+
+ List<Task> selectManualByExecuteSts();
+
List<Task> selectWaitAnalyzeInBoundTask();
List<Task> selectPakOut();
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
index e7c5592..a342164 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
@@ -268,7 +268,7 @@
Task task = new Task();
task.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
task.setTaskNo(String.valueOf(Utils.getTaskNo("CHARGE")));
- task.setTaskSts(TaskStsType.NEW_CHARGE.sts);
+ task.setTaskSts(TaskStsType.NEW_CHARGE.getId());
task.setTaskCtg(taskCtg.getId());
task.setPriority(10);
task.setOriginSite(null);
@@ -365,7 +365,7 @@
Task task = new Task();
task.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
task.setTaskNo(String.valueOf(Utils.getTaskNo("MOVE")));
- task.setTaskSts(TaskStsType.NEW_MOVE.sts);
+ task.setTaskSts(TaskStsType.NEW_MOVE.getId());
task.setTaskCtg(taskCtg.getId());
task.setPriority(10);
task.setOriginSite(null);
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java
index 3964219..0dd46fb 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java
@@ -66,6 +66,16 @@
}
@Override
+ public List<Task> selectManualByAnalyzeSts() {
+ return this.baseMapper.selectManualByAnalyzeSts();
+ }
+
+ @Override
+ public List<Task> selectManualByExecuteSts() {
+ return this.baseMapper.selectManualByExecuteSts();
+ }
+
+ @Override
public List<Task> selectWaitAnalyzeInBoundTask() {
return this.baseMapper.selectWaitAnalyzeInBoundTask();
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/MotionTimer.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/MotionTimer.java
index 5a364fb..7ef0cb4 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/MotionTimer.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/MotionTimer.java
@@ -45,7 +45,7 @@
private ShuttleCommandService shuttleCommandService;
// @Scheduled(cron = "0/1 * * * * ? ")
- public synchronized void executeWrkMast() {
+ public synchronized void executeTask() {
Date now = new Date();
// ANALYZE_INBOUND
for (Task task : taskService.selectByAnalyzeSts()) {
@@ -61,13 +61,13 @@
continue;
}
- // 鏇存柊wrkMast
- switch (TaskStsType.query(task.getTaskSts())) {
+ // 鏇存柊Task
+ switch (TaskStsType.queryById(task.getTaskSts())) {
case ANALYZE_INBOUND:
- task.setTaskSts(TaskStsType.EXECUTE_INBOUND.sts);
+ task.setTaskSts(TaskStsType.EXECUTE_INBOUND.getId());
break;
case ANALYZE_OUTBOUND:
- task.setTaskSts(TaskStsType.EXECUTE_OUTBOUND.sts);
+ task.setTaskSts(TaskStsType.EXECUTE_OUTBOUND.getId());
break;
}
task.setUpdateTime(now);
@@ -90,13 +90,13 @@
continue;
}
- // 鏇存柊wrkMast
- switch (TaskStsType.query(task.getTaskSts())) {
+ // 鏇存柊Task
+ switch (TaskStsType.queryById(task.getTaskSts())) {
case EXECUTE_INBOUND:
- task.setTaskSts(TaskStsType.COMPLETE_INBOUND.sts);
+ task.setTaskSts(TaskStsType.COMPLETE_INBOUND.getId());
break;
case EXECUTE_OUTBOUND:
- task.setTaskSts(TaskStsType.COMPLETE_OUTBOUND.sts);
+ task.setTaskSts(TaskStsType.COMPLETE_OUTBOUND.getId());
break;
}
task.setUpdateTime(now);
@@ -171,6 +171,63 @@
// }
// }
+// @Scheduled(cron = "0/1 * * * * ? ")
+ public synchronized void executeManualTask() {
+ Date now = new Date();
+ // ANALYZE_MANUAL
+ for (Task task : taskService.selectByAnalyzeSts()) {
+ Motion executingMotion = motionService.selectOfTop1(task.getUuid(), MotionStsType.EXECUTING.val(), task.getHostId());
+ if (executingMotion != null) {//瀛樺湪姝e湪鎵ц鐨刴otion
+ continue;
+ }
+
+ Motion motion = motionService.selectOfTop1(task.getUuid(), MotionStsType.INIT.val(), task.getHostId());
+ if (null != motion) {
+ boolean result = this.executeMotion(motion);
+ if (!result) {
+ continue;
+ }
+ // 鏇存柊Task
+ switch (TaskStsType.queryById(task.getTaskSts())) {
+ case ANALYZE_MANUAL:
+ task.setTaskSts(TaskStsType.EXECUTE_MANUAL.getId());
+ break;
+ }
+ task.setUpdateTime(now);
+ if (!taskService.updateById(task)) {
+ log.error("{}鍏朵粬宸ヤ綔妗f洿鏂扮姸鎬佸け璐ワ紒", task.getTaskNo());
+ }
+ }
+ }
+ // EXECUTE_MANUAL
+ for (Task task : taskService.selectManualByExecuteSts()) {
+ if (!motionService.hasRunningMotion(task.getUuid(), task.getHostId())) {
+ Motion motion = motionService.selectOfTop1(task.getUuid(), MotionStsType.WAITING.val(), task.getHostId());
+ if (null != motion) {
+ boolean result = this.executeMotion(motion);
+ if (!result) {
+ continue;
+ }
+ } else {
+ if (motionService.selectOfTop1(task.getUuid(), MotionStsType.EXECUTING.val(), task.getHostId()) != null) {
+ continue;
+ }
+
+ // 鏇存柊Task
+ switch (TaskStsType.queryById(task.getTaskSts())) {
+ case EXECUTE_MANUAL:
+ task.setTaskSts(TaskStsType.COMPLETE_MANUAL.getId());
+ break;
+ }
+ task.setUpdateTime(now);
+ if (!taskService.updateById(task)) {
+ log.error("{}浠栧伐浣滄。鏇存柊鐘舵�佸け璐ワ紒", task.getTaskNo());
+ }
+ }
+ }
+ }
+ }
+
@Scheduled(cron = "0/1 * * * * ? ")
public void scanMotionByExecuting() {
List<Motion> motionList = motionService.selectBySts(MotionStsType.EXECUTING.val());
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java
index 58d0e4b..8188546 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java
@@ -177,7 +177,7 @@
Task task = new Task();
task.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
task.setTaskNo(String.valueOf(Utils.getTaskNo("MOVE")));
- task.setTaskSts(TaskStsType.NEW_MOVE.sts);
+ task.setTaskSts(TaskStsType.NEW_MOVE.getId());
task.setTaskCtg(taskCtg.getId());
task.setPriority(10);
task.setOriginSite(null);
diff --git a/zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml b/zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml
index 7467945..7654c7e 100644
--- a/zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml
+++ b/zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml
@@ -13,14 +13,28 @@
<select id="selectByAnalyzeSts" resultType="com.zy.asrs.wcs.core.entity.Task">
select * from wcs_task
where 1=1
- and task_sts in (2, 102, 202, 302)
+ and task_sts in (2, 102)
order by priority desc,start_time,task_no asc
</select>
<select id="selectByExecuteSts" resultType="com.zy.asrs.wcs.core.entity.Task">
select * from wcs_task
where 1=1
- and task_sts in (3, 103, 203, 303)
+ and task_sts in (3, 103)
+ order by priority desc,start_time,task_no asc
+ </select>
+
+ <select id="selectManualByAnalyzeSts" resultType="com.zy.asrs.wcs.core.entity.Task">
+ select * from wcs_task
+ where 1=1
+ and task_sts in (402)
+ order by priority desc,start_time,task_no asc
+ </select>
+
+ <select id="selectManualByExecuteSts" resultType="com.zy.asrs.wcs.core.entity.Task">
+ select * from wcs_task
+ where 1=1
+ and task_sts in (403)
order by priority desc,start_time,task_no asc
</select>
--
Gitblit v1.9.1