Commit 1d7059e0408a6b658d2b5149317aea74dfc5ca29

Authored by 肖超群
1 parent 959f49b6

模拟工位叫料

ant-design-vue-jeecg/src/api/api.js
... ... @@ -275,7 +275,7 @@ export const qualityInventoryDetail = (params) => postAction('/inventory/invento
275 275 //质检登记
276 276 export const qualityRegister = (params) => postAction('/task/taskHeader/qualityRegister', params);
277 277 //创建出库任务,AGV去接
278   -export const createShipmentTaskByAgv = (params) => postAction('/shipment/shipmentCombination/createShipmentTask', params);
  278 +export const createShipmentTaskByAgv = (params) => postAction('/shipment/shipmentCombination/createShipmentTaskByAgv', params);
279 279  
280 280 // 中转HTTP请求
281 281 export const transitRESTful = {
... ...
ant-design-vue-jeecg/src/views/system/shipment/ShipmentContainerHeaderList.vue
... ... @@ -122,8 +122,8 @@
122 122 </span>
123 123  
124 124 <span slot="action" slot-scope="text, record">
125   - <a v-if="record.status == 0 && record.zoneType =='A'" @click="createShipmentTaskByAgv(record)"><a-button type="primary">生成任务</a-button><a-divider type="vertical"/></a>
126   - <a v-if="record.status == 0 && record.zoneType !='A'" @click="selectPort(record)"><a-button type="primary">生成任务</a-button><a-divider type="vertical"/></a>
  125 +<!-- <a v-if="record.status == 0 && record.zoneType =='A'" @click="selectPort(record)"><a-button type="primary">生成任务</a-button><a-divider type="vertical"/></a>-->
  126 + <a v-if="record.status == 0 && record.zoneType =='L'" @click="selectPort(record)"><a-button type="primary">生成任务</a-button><a-divider type="vertical"/></a>
127 127 <a-popconfirm v-if="record.status == 0" v-has="'shipmentContainerHeader:delete'" title="确定取消配盘吗?" @confirm="() => handleDelete(record.id)">
128 128 <a><a-button type="danger">取消配盘</a-button> <a-divider type="vertical"/></a>
129 129 </a-popconfirm>
... ... @@ -140,6 +140,7 @@
140 140  
141 141 <shipmentContainerHeader-modal ref="modalForm" @ok="modalFormOk"></shipmentContainerHeader-modal>
142 142 <shipmentContainerSelect-modal ref="modalForm2" @ok="modalFormOk"></shipmentContainerSelect-modal>
  143 + <createShipmentTaskByAgv-modal ref="modalForm3" @ok="modalFormOk"></createShipmentTaskByAgv-modal>
143 144 </a-card>
144 145 </template>
145 146  
... ... @@ -154,11 +155,13 @@ import &#39;@/assets/less/TableExpand.less&#39;
154 155 import {createShipmentTask, execute, getCompanyList, getCustomerList, getShipmentTypeList, getZoneList} from '@/api/api'
155 156 import {selectSortingPort, createShipmentTaskByAgv} from '@/api/api'
156 157 import ShipmentContainerSelectModal from "./modules/ShipmentContainerSelectModal";
  158 +import CreateShipmentTaskByAgvModal from "./modules/CreateShipmentTaskByAgvModal";
157 159  
158 160 export default {
159 161 name: "ShipmentContainerHeaderList",
160 162 mixins: [JeecgListMixin],
161 163 components: {
  164 + CreateShipmentTaskByAgvModal,
162 165 ShipmentContainerSelectModal,
163 166 ShipmentContainerDetailList,
164 167 ShipmentContainerHeaderModal
... ... @@ -341,6 +344,10 @@ export default {
341 344 this.$refs.modalForm2.edit(record);
342 345 this.$refs.modalForm2.title = "选择出库口";
343 346 },
  347 + openCreateShipmentTaskAgv(record) {
  348 + this.$refs.modalForm3.edit(record);
  349 + this.$refs.modalForm3.title = "选择出库口";
  350 + },
344 351 createShipmentTaskByAgv(record) {
345 352 this.loading = true;
346 353 createShipmentTaskByAgv(record).then((res) => {
... ...
ant-design-vue-jeecg/src/views/system/shipment/modules/CreateShipmentTaskByAgvModal.vue 0 → 100644
  1 +<template>
  2 + <j-modal
  3 + :title="title"
  4 + :width="width"
  5 + :visible="visible"
  6 + :confirmLoading="confirmLoading"
  7 + switchFullscreen
  8 + @ok="handleOk"
  9 + @cancel="handleCancel"
  10 + cancelText="关闭">
  11 + <a-spin :spinning="confirmLoading">
  12 + <a-form-model ref="form" :model="model" :rules="validatorRules">
  13 + <a-row>
  14 + <a-col :span="24">
  15 + <a-form-model-item label="出库口" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="toPort">
  16 + <a-select
  17 + show-search
  18 + placeholder="请选择出库口"
  19 + option-filter-prop="children"
  20 + v-model="model.toPort">
  21 + <a-select-option v-for="item in portList" :key="item.name" :value="item.code">{{
  22 + item.name
  23 + }}
  24 + </a-select-option>
  25 + </a-select>
  26 + </a-form-model-item>
  27 + <a-col :span="24">
  28 + <a-form-model-item label="去向工位" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="toAgvPort">
  29 + <a-input v-model="model.toAgvPort" placeholder="请输入去向工位" style="width: 100%"/>
  30 + </a-form-model-item>
  31 + </a-col>
  32 + </a-col>
  33 + </a-row>
  34 + </a-form-model>
  35 + </a-spin>
  36 + </j-modal>
  37 +</template>
  38 +
  39 +<script>
  40 +
  41 +import {httpAction} from '@/api/manage'
  42 +import {validateDuplicateValue} from '@/utils/util'
  43 +import {createShipmentTask, createShipmentTaskByAgv, createShipmentBatchTask} from '@/api/api'
  44 +import {selectSortingPort} from '@/api/api'
  45 +
  46 +export default {
  47 + name: "CreateShipmentTaskByAgvModal",
  48 + components: {},
  49 + props: {
  50 + mainId: {
  51 + type: String,
  52 + required: false,
  53 + default: ''
  54 + }
  55 + },
  56 + data() {
  57 + return {
  58 + portList: [],
  59 + flag:'0',
  60 + shipmentContainerHeaderList:[],
  61 + title: "操作",
  62 + width: 500,
  63 + visible: false,
  64 + model: {},
  65 + labelCol: {
  66 + xs: {span: 24},
  67 + sm: {span: 5},
  68 + },
  69 + wrapperCol: {
  70 + xs: {span: 24},
  71 + sm: {span: 16},
  72 + },
  73 +
  74 + confirmLoading: false,
  75 + validatorRules: {},
  76 + url: {
  77 + createTask: "/shipment/shipmentContainerHeader/createShipmentTask",
  78 + }
  79 +
  80 + }
  81 + },
  82 + created() {
  83 + //备份model原始值
  84 + this.modelDefault = JSON.parse(JSON.stringify(this.model));
  85 + },
  86 + methods: {
  87 + add() {
  88 + this.edit(this.modelDefault);
  89 + },
  90 + edit(record) {
  91 + this.flag='0';
  92 + this.getPortList(record);
  93 + },
  94 + batchEdit(record) {
  95 + this.visible = true;
  96 + this.flag='1';
  97 + this.getPortList(record[0])
  98 + this.shipmentContainerHeaderList=record;
  99 + },
  100 + close() {
  101 + this.$emit('close');
  102 + this.visible = false;
  103 + this.$refs.form.clearValidate();
  104 + },
  105 + handleOk() {
  106 + const that = this;
  107 + if (this.flag=='1'){
  108 + this.$refs.form.validate(valid => {
  109 + if (valid) {
  110 + this.shipmentContainerHeaderList.forEach(x=>{
  111 + x["toPort"]=that.model.toPort;
  112 + x["toAgvPort"]=that.model.toAgvPort;
  113 + })
  114 + createShipmentBatchTask(this.shipmentContainerHeaderList).then((res) => {
  115 + if (res.success) {
  116 + that.$message.success(res.message);
  117 + that.$emit('ok');
  118 + } else {
  119 + that.$message.warning(res.message);
  120 + }
  121 + }).finally(() => {
  122 + that.confirmLoading = false;
  123 + that.close();
  124 + });
  125 + }else {
  126 + return false
  127 + }
  128 + })
  129 +
  130 + }else{
  131 + // 触发表单验证
  132 + this.$refs.form.validate(valid => {
  133 + if (valid) {
  134 + that.confirmLoading = true;
  135 + createShipmentTaskByAgv(this.model).then((res) => {
  136 + if (res.success) {
  137 + that.$message.success(res.message);
  138 + that.$emit('ok');
  139 + } else {
  140 + that.$message.warning(res.message);
  141 + }
  142 + }).finally(() => {
  143 + that.confirmLoading = false;
  144 + that.close();
  145 + });
  146 + } else {
  147 + return false
  148 + }
  149 + })
  150 + }
  151 +
  152 +
  153 + },
  154 + handleCancel() {
  155 + this.close()
  156 + },
  157 + getPortList(record) {
  158 + console.log("getPortList");
  159 + selectSortingPort(record).then((res) => {
  160 + if (res.success) {
  161 + this.portList = res.result;
  162 + console.log("getPortList11");
  163 + this.model = Object.assign({}, record);
  164 + this.visible = true;
  165 + }
  166 + });
  167 + }
  168 +
  169 + }
  170 +}
  171 +</script>
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/job/AutoCreateAgvTask.java
... ... @@ -36,18 +36,18 @@ public class AutoCreateAgvTask implements Job {
36 36  
37 37 @Override
38 38 public void execute(JobExecutionContext context) throws JobExecutionException {
39   - log.info(String.format("AutoSendAgvTask 下发AGV任务开始执行,时间:" + DateUtils.getTimestamp()));
  39 + log.info(String.format("AutoCreateAgvTask 生成AGV任务开始执行,时间:" + DateUtils.getTimestamp()));
40 40 LambdaQueryWrapper<TaskHeader> taskHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
41   - taskHeaderLambdaQueryWrapper.eq(TaskHeader::getSendAgv, QuantityConstant.AGV_NEED_SEND).le(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_RELEASE)
42   - .eq(TaskHeader::getTaskType, QuantityConstant.TASK_TYPE_WHOLESHIPMENT).ge(TaskHeader::getCreateTime, DateUtil.offsetDay(new Date(), -180))
43   - .orderByAsc(TaskHeader::getCreateTime);
  41 + taskHeaderLambdaQueryWrapper.eq(TaskHeader::getCreateAgvTask, QuantityConstant.AGV_CREATE_NEED)
  42 + .eq(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_COMPLETED).eq(TaskHeader::getTaskType, QuantityConstant.TASK_TYPE_WHOLESHIPMENT)
  43 + .ge(TaskHeader::getCreateTime, DateUtil.offsetDay(new Date(), -180)).orderByAsc(TaskHeader::getCreateTime);
44 44 List<TaskHeader> taskHeaderList = taskHeaderService.list(taskHeaderLambdaQueryWrapper);
45 45 for (TaskHeader taskHeader : taskHeaderList) {
46 46 String containerCode = taskHeader.getContainerCode();
47 47 String warehouseCode = taskHeader.getWarehouseCode();
48 48 String zoneCode = taskHeader.getZoneCode();
49   - String fromPortCode = taskHeader.getFromLocationCode();
50   - String toPortCode = taskHeader.getToPortCode();
  49 + String fromPortCode = taskHeader.getToPortCode();
  50 + String toPortCode = taskHeader.getToAgvPort();
51 51 AgvTask agvTask = new AgvTask();
52 52 agvTask.setWarehouseCode(warehouseCode);
53 53 agvTask.setZoneCode(zoneCode);
... ... @@ -63,7 +63,7 @@ public class AutoCreateAgvTask implements Job {
63 63 taskHeader = new TaskHeader();
64 64 taskHeader.setId(taskHeaderId);
65 65 taskHeader.setAgvTaskId(agvTask.getId());
66   - taskHeader.setSendAgv(QuantityConstant.AGV_SEND_OK);
  66 + taskHeader.setCreateAgvTask(QuantityConstant.AGV_CREATE_OK);
67 67 if (!taskHeaderService.updateById(taskHeader)) {
68 68 throw new JeecgBootException("更新下发任务状态失败");
69 69 }
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/controller/ShipmentCombinationController.java
... ... @@ -240,10 +240,11 @@ public class ShipmentCombinationController {
240 240 }
241 241  
242 242 /**
243   - * 创建出库任务,AGV去接
  243 + * 立库区
  244 + * 创建出库任务, 出库任务完成以后,AGV去接
244 245 * @return
245 246 */
246   - @ApiOperation(value = "创建出库任务,AGV去接", notes = "创建出库任务,AGV去接")
  247 + @ApiOperation(value = "创建出库任务, 出库任务完成以后,AGV去接", notes = "创建出库任务, 出库任务完成以后,AGV去接")
247 248 @PostMapping("/createShipmentTaskByAgv")
248 249 @ResponseBody
249 250 public Result createShipmentTaskByAgv(@RequestBody ShipmentContainerHeader shipmentContainerHeader, HttpServletRequest req) {
... ... @@ -251,4 +252,19 @@ public class ShipmentCombinationController {
251 252 Result result = shipmentCombinationService.createShipmentTask(shipmentContainerHeader, QuantityConstant.TASK_TYPE_WHOLESHIPMENT, warehouseCode, 0, 0, 0);
252 253 return result;
253 254 }
  255 +
  256 + /**
  257 + * AGV库区
  258 + * 同时创建出库任务和AGV任务
  259 + * @return
  260 + */
  261 + @ApiOperation(value = "同时创建出库任务和AGV任务", notes = "同时创建出库任务和AGV任务")
  262 + @PostMapping("/createShipmentTaskAndAgvTask")
  263 + @ResponseBody
  264 + public Result createShipmentTaskAndAgvTask(@RequestBody ShipmentContainerHeader shipmentContainerHeader, HttpServletRequest req) {
  265 + String warehouseCode = HuahengJwtUtil.getWarehouseCodeByToken(req);
  266 + Result result = shipmentCombinationService.createShipmentTask(shipmentContainerHeader, QuantityConstant.TASK_TYPE_WHOLESHIPMENT, warehouseCode, 0, 0, 0);
  267 +
  268 + return result;
  269 + }
254 270 }
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java
... ... @@ -852,6 +852,8 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi
852 852 int sequenceNumber) {
853 853 Integer preTaskNo = 0;
854 854 boolean success = false;
  855 + String toPort = shipmentContainerHeader.getToPort();
  856 + String toAgvPort = shipmentContainerHeader.getToAgvPort();
855 857 shipmentContainerHeader = shipmentContainerHeaderService.getById(shipmentContainerHeader.getId());
856 858 if (shipmentContainerHeader == null) {
857 859 return Result.error("生成出库任务时, 出库组盘头" + "未找到,操作中止");
... ... @@ -871,7 +873,6 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi
871 873 String fromLocationCode = shipmentContainerHeader.getFromLocationCode();
872 874 String toLocationCode = shipmentContainerHeader.getToLocationCode();
873 875 String containerCode = shipmentContainerHeader.getContainerCode();
874   - String toPort = shipmentContainerHeader.getToPort();
875 876 if (StringUtils.isEmpty(fromLocationCode)) {
876 877 return Result.error("生成出库任务时, 出库组盘头没有起始库位编码");
877 878 }
... ... @@ -936,13 +937,16 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi
936 937 taskHeader.setInnernalTaskType(QuantityConstant.TASK_INTENERTYPE_SHIPMENT);
937 938 taskHeader.setZoneCode(zoneCode);
938 939 taskHeader.setShipmentOrder(shipmentOrder);
939   - taskHeader.setToAgvPort(shipmentContainerHeader.getToAgvPort());
  940 + if (StringUtils.isNotEmpty(toAgvPort)) {
  941 + taskHeader.setToAgvPort(toAgvPort);
  942 + taskHeader.setCreateAgvTask(QuantityConstant.AGV_CREATE_NEED);
  943 + }
940 944 taskHeader.setSequence(sequence);
941 945 taskHeader.setSequenceNumber(sequenceNumber);
942 946 taskHeader.setWarehouseCode(warehouseCode);
943 947 taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD);
944 948 taskHeader.setContainerCode(containerCode);
945   - taskHeader.setToPortCode(shipmentContainerHeader.getToPort());
  949 + taskHeader.setToPortCode(toPort);
946 950 taskHeader.setFromLocationCode(fromLocationCode);
947 951 if (taskType == QuantityConstant.TASK_TYPE_SORTINGSHIPMENT) {
948 952 taskHeader.setToLocationCode(toLocationCode);
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/agvTask/service/IAgvTaskService.java
... ... @@ -16,30 +16,32 @@ public interface IAgvTaskService extends IService&lt;AgvTask&gt; {
16 16 /**
17 17 * 新建AGV任务
18 18 */
19   - public Result addAgvTask(AgvTask agvTask, String warehouseCode);
  19 + Result addAgvTask(AgvTask agvTask, String warehouseCode);
20 20  
21 21 /**
22 22 * 下发AGV任务给ACS系统
23 23 */
24   - public Result sendAgvTaskToAcs(Integer taskId);
  24 + Result sendAgvTaskToAcs(Integer taskId);
25 25  
26 26 /**
27 27 * 完成AGV任务
28 28 */
29   - public Result completeAgvTask(Integer taskId);
  29 + Result completeAgvTask(Integer taskId);
30 30  
31 31 /**
32 32 * 取消AGV任务
33 33 */
34   - public Result cancelAgvTask(Integer taskId);
  34 + Result cancelAgvTask(Integer taskId);
35 35  
36   - public AgvTask getAgvTaskByPort(String portCode, String warehouseCode);
  36 + AgvTask getAgvTaskByPort(String portCode, String warehouseCode);
37 37  
38   - public AgvTask getAgvTaskBuFromPort(String fromPortCode, String warehouseCode);
  38 + AgvTask getAgvTaskBuContainerCode(String containerCode, String warehouseCode);
39 39  
40   - public AgvTask getAgvTaskBuToPort(String toPortCode, String warehouseCode);
  40 + AgvTask getAgvTaskBuFromPort(String fromPortCode, String warehouseCode);
41 41  
42   - public AgvTask getAgvTaskById(Integer agvTaskId, String warehouseCode);
  42 + AgvTask getAgvTaskBuToPort(String toPortCode, String warehouseCode);
43 43  
44   - public Result editAgvTask(AgvTask agvTask,String warehouseCode);
  44 + AgvTask getAgvTaskById(Integer agvTaskId, String warehouseCode);
  45 +
  46 + Result editAgvTask(AgvTask agvTask, String warehouseCode);
45 47 }
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/agvTask/service/impl/AgvTaskServiceImpl.java
... ... @@ -43,6 +43,8 @@ public class AgvTaskServiceImpl extends ServiceImpl&lt;AgvTaskMapper, AgvTask&gt; impl
43 43 private ITaskHeaderService taskHeaderService;
44 44 @Resource
45 45 private IInventoryDetailService inventoryDetailService;
  46 + @Resource
  47 + private IAgvTaskService agvTaskService;
46 48  
47 49 @Override
48 50 public Result addAgvTask(AgvTask agvTask, String warehouseCode) {
... ... @@ -54,16 +56,19 @@ public class AgvTaskServiceImpl extends ServiceImpl&lt;AgvTaskMapper, AgvTask&gt; impl
54 56 if (container == null) {
55 57 return Result.error("生成AGV任务,容器号:" + containerCode + "未找到");
56 58 }
57   - if (!container.getStatus().equals(QuantityConstant.STATUS_CONTAINER_LOCK)) {
58   - if (!containerService.updateStatus(containerCode, QuantityConstant.STATUS_CONTAINER_LOCK, warehouseCode)) {
59   - throw new JeecgBootException("生成AGV任务,锁定容器失败:" + containerCode);
60   - }
  59 +// if (!container.getStatus().equals(QuantityConstant.STATUS_CONTAINER_LOCK)) {
  60 +// if (!containerService.updateStatus(containerCode, QuantityConstant.STATUS_CONTAINER_LOCK, warehouseCode)) {
  61 +// throw new JeecgBootException("生成AGV任务,锁定容器失败:" + containerCode);
  62 +// }
  63 +// }
  64 + if (agvTaskService.getAgvTaskBuContainerCode(containerCode, warehouseCode) != null) {
  65 + return Result.error("生成AGV任务失败,已经生成AGV任务");
61 66 }
62 67 agvTask.setWarehouseCode(warehouseCode);
63 68 agvTask.setTaskType(QuantityConstant.AGV_TYPE_TAKE_AND_RELEASE);
64 69 agvTask.setStatus(QuantityConstant.AGV_TASK_STATUS_BUILD);
65 70 agvTask.setPriority(10);
66   - boolean success = save(agvTask);
  71 + boolean success = agvTaskService.save(agvTask);
67 72 if (!success) {
68 73 return Result.OK("添加失败");
69 74 }
... ... @@ -182,20 +187,12 @@ public class AgvTaskServiceImpl extends ServiceImpl&lt;AgvTaskMapper, AgvTask&gt; impl
182 187 throw new JeecgBootException("取消AGV任务。 更新终点库位状态失败");
183 188 }
184 189 }
185   - Container container = containerService.getContainerByCode(containerCode, warehouseCode);
186   - if (container == null) {
187   - throw new JeecgBootException("取消AGV任务。 根据容器编码没有找到容器");
188   - }
189 190 // 2023-04-11 托盘状态与填充状态分离
190 191 // String containerStatus = QuantityConstant.STATUS_CONTAINER_EMPTY;
191 192 // List<InventoryDetail> inventoryDetailList = inventoryDetailService.getInventoryDetailListByContainerCode(containerCode, warehouseCode);
192 193 // if (inventoryDetailList.size() != 0) {
193 194 // containerStatus = QuantityConstant.STATUS_CONTAINER_SOME;
194 195 // }
195   - success = containerService.updateStatus(containerCode, QuantityConstant.STATUS_CONTAINER_EMPTY, warehouseCode);
196   - if (!success) {
197   - throw new JeecgBootException("取消AGV任务。 更新容器状态失败");
198   - }
199 196 int status = agvTask.getStatus();
200 197 if (status != QuantityConstant.AGV_TASK_STATUS_BUILD) {
201 198 Result result = acsService.cancelAGVTask(agvTask);
... ... @@ -220,9 +217,19 @@ public class AgvTaskServiceImpl extends ServiceImpl&lt;AgvTaskMapper, AgvTask&gt; impl
220 217 }
221 218  
222 219 @Override
  220 + public AgvTask getAgvTaskBuContainerCode(String containerCode, String warehouseCode) {
  221 + LambdaQueryWrapper<AgvTask> agvTaskLambdaQueryWrapper = Wrappers.lambdaQuery();
  222 + agvTaskLambdaQueryWrapper.eq(AgvTask::getContainerCode, containerCode).eq(AgvTask::getWarehouseCode, warehouseCode).lt(AgvTask::getStatus,
  223 + QuantityConstant.AGV_TASK_STATUS_COMPLETED);
  224 + AgvTask agvTask = getOne(agvTaskLambdaQueryWrapper);
  225 + return agvTask;
  226 + }
  227 +
  228 + @Override
223 229 public AgvTask getAgvTaskBuFromPort(String fromPortCode, String warehouseCode) {
224 230 LambdaQueryWrapper<AgvTask> agvTaskLambdaQueryWrapper = Wrappers.lambdaQuery();
225   - agvTaskLambdaQueryWrapper.eq(AgvTask::getFromPort, fromPortCode).eq(AgvTask::getWarehouseCode, warehouseCode);
  231 + agvTaskLambdaQueryWrapper.eq(AgvTask::getFromPort, fromPortCode).eq(AgvTask::getWarehouseCode, warehouseCode).lt(AgvTask::getStatus,
  232 + QuantityConstant.AGV_TASK_STATUS_COMPLETED);
226 233 AgvTask agvTask = getOne(agvTaskLambdaQueryWrapper);
227 234 return agvTask;
228 235 }
... ... @@ -230,7 +237,8 @@ public class AgvTaskServiceImpl extends ServiceImpl&lt;AgvTaskMapper, AgvTask&gt; impl
230 237 @Override
231 238 public AgvTask getAgvTaskBuToPort(String toPortCode, String warehouseCode) {
232 239 LambdaQueryWrapper<AgvTask> agvTaskLambdaQueryWrapper = Wrappers.lambdaQuery();
233   - agvTaskLambdaQueryWrapper.eq(AgvTask::getToPort, toPortCode).eq(AgvTask::getWarehouseCode, warehouseCode);
  240 + agvTaskLambdaQueryWrapper.eq(AgvTask::getToPort, toPortCode).eq(AgvTask::getWarehouseCode, warehouseCode).lt(AgvTask::getStatus,
  241 + QuantityConstant.AGV_TASK_STATUS_COMPLETED);
234 242 AgvTask agvTask = getOne(agvTaskLambdaQueryWrapper);
235 243 return agvTask;
236 244 }
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/entity/TaskHeader.java
... ... @@ -123,7 +123,7 @@ public class TaskHeader implements Serializable {
123 123 @ApiModelProperty(value = "AGV关联任务ID")
124 124 private Integer agvTaskId;
125 125 @ApiModelProperty(value = "生成agv任务")
126   - private Integer sendAgv;
  126 + private Integer createAgvTask;
127 127 @ApiModelProperty(value = "回传MES信息")
128 128 private Integer backMes;
129 129 @ApiModelProperty(value = "MES提交次数")
... ...
huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java
... ... @@ -487,12 +487,12 @@ public class QuantityConstant {
487 487 // 待确认
488 488 public static final String QUALITY_DISUSSED = "discussed";
489 489  
  490 + // 需要发送AGV任务成功
  491 + public static final int AGV_CREATE_NEED = 1;
490 492 // 发送AGV任务成功
491   - public static final int AGV_NEED_SEND = 0;
492   - // 发送AGV任务成功
493   - public static final int AGV_SEND_OK = 1;
  493 + public static final int AGV_CREATE_OK = 2;
494 494 // 发送AGV任务异常
495   - public static final int AGV_SEND_ERROR = 2;
  495 + public static final int AGV_CREATE_ERROR = 3;
496 496 // 回传MES成功
497 497 public static final int MES_SEND_OK = 1;
498 498 // 回传MES异常
... ...