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