任务管理新增功能增加分配拆垛工位功能;调整分拣码垛页面,更改拆垛机器人属性
| | |
| | | public int? Qty { get; set; } |
| | | public string? LineNo { get; set; } |
| | | public string? PZNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 设备类型 |
| | | /// </summary> |
| | | public PLCTypeEnum Type { get; set; } |
| | | } |
| | |
| | | public async Task<List<WcsDeviceTaskOrderDto>> WcsPackStationPlcList([FromQuery] WcsDeviceBaseInput entry) |
| | | { |
| | | return await _wcsDeviceRep.Context.Queryable<WcsDevice>() |
| | | .LeftJoin<WcsCheckTask>((device, task) => device.StationNum == task.Port) |
| | | .Where((device, task) => device.PlcId == entry.PlcId) |
| | | .OrderBy((device, task) => device.CreateTime) |
| | | .Select((device, task) => new WcsDeviceTaskOrderDto() |
| | | .InnerJoin<WcsPlc>((device, plc) => device.PlcId == plc.Id) |
| | | .LeftJoin<WcsCheckTask>((device, plc, task) => device.StationNum == task.Port) |
| | | .Where((device, plc, task) => device.PlcId == entry.PlcId) |
| | | .OrderBy((device, plc, task) => device.CreateTime) |
| | | .Select((device, plc, task) => new WcsDeviceTaskOrderDto() |
| | | { |
| | | Id = device.Id, |
| | | Text = device.Text, |
| | |
| | | LineNo = task.LineNo, |
| | | Status = task.Status, |
| | | PZNo = task.PZNo, |
| | | Qty = task.Qty |
| | | Qty = task.Qty, |
| | | |
| | | Type = plc.Type |
| | | }) |
| | | .ToListAsync(); |
| | | } |
| | |
| | | |
| | | using AngleSharp.Dom; |
| | | using COSXML.Network; |
| | | using Elastic.Clients.Elasticsearch.Tasks; |
| | | using Furion.DatabaseAccessor; |
| | | using Microsoft.AspNetCore.SignalR; |
| | |
| | | throw Oops.Oh("任务状态异常"); |
| | | } |
| | | } |
| | | |
| | | public async Task UploadTask(UpdateWcsTaskInput input) |
| | | { |
| | | var modTask = await _wcsTaskRep.GetByIdAsync(input.Id); |
| | | if (modTask.Status != TaskStatusEnum.Complete) |
| | | { |
| | | throw Oops.Oh("任务状态异常"); |
| | | } |
| | | if (modTask.Origin != "WMS") |
| | | { |
| | | throw Oops.Oh("该任务来源不是WMS"); |
| | | } |
| | | // 反馈WMS |
| | | //var requestMode = new TaskRequest() |
| | | //{ |
| | | // TaskNo = modTask.TaskNo, |
| | | // PalletNo = modTask.PalletNo, |
| | | // TaskType = (TaskTypeEnum)modTask.TaskType,//TaskTypeEnum.In, |
| | | // TaskStatus = TaskStatusEnum.Complete |
| | | //}; |
| | | //HttpService httpService = new HttpService(); |
| | | //var modResponseTask = httpService.RequestTask(requestMode).Result; |
| | | //if (modResponseTask.StatusCode == "0") |
| | | //{ |
| | | // modcTaskMonitor.InteractiveMsg = "任务完成,返回给WMS任务完成"; |
| | | //} |
| | | } |
| | | } |
| | |
| | | PageWcsTask = '/api/wcsTask/page', |
| | | DetailWcsTask = '/api/wcsTask/detail', |
| | | FinshWcsTask = '/api/wcsTask/Finsh', |
| | | UploadWcsTask = '/api/wcsTask/UploadTask', |
| | | } |
| | | |
| | | // 增加任务表 |
| | |
| | | url: Api.FinshWcsTask, |
| | | method: 'post', |
| | | data: params, |
| | | }); |
| | | |
| | | // 上传任务 |
| | | export const uploadWcsTask = (params?: any) => |
| | | request({ |
| | | url: Api.UploadWcsTask, |
| | | method: 'post', |
| | | data: params, |
| | | }); |
| | |
| | | </div> |
| | | <div class="otherValuefix" > |
| | | <el-form label-position="left" label-width="90px"> |
| | | <el-form-item label="WMS明细单号"> |
| | | <el-form-item label="WMS明细单号" v-if="deviceInfo.type==5"> |
| | | <el-input v-model="deviceInfo.orderNo" readonly></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="任务号"> |
| | |
| | | <el-form-item label="物料名称"> |
| | | <el-input v-model="deviceInfo.skuName" readonly></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="分拣线编号"> |
| | | <el-form-item label="分拣线编号" v-if="deviceInfo.type==5"> |
| | | <el-input v-model="deviceInfo.lineNo" readonly></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="绑定状态"> |
| | |
| | | <el-form-item label="托盘号"> |
| | | <el-input readonly></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="插码数量"> |
| | | <el-form-item label="插码箱数" v-if="deviceInfo.type==5"> |
| | | <el-input readonly></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="托盘上箱数量"> |
| | | </el-form-item> |
| | | <el-form-item label="拆垛箱数" v-if="deviceInfo.type==6"> |
| | | <el-input readonly></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="整跺箱数"> |
| | | <el-input readonly></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="WMS下发数量"> |
| | | <el-form-item label="完成箱数"> |
| | | <el-input readonly></el-input> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="WMS下发数量"> |
| | | <el-input v-model="deviceInfo.qty" readonly></el-input> |
| | | </el-form-item> --> |
| | | <el-form-item label="状态"> |
| | | <el-input :value="deviceInfo.status ? '在线' : '离线'" readonly></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div v-if="!deviceInfo.text.includes('拆垛')" class="otherButtonfix"> |
| | | <!-- 设备类型为码垛机器人 --> |
| | | <div v-if="deviceInfo.type==5" class="otherButtonfix"> |
| | | <el-form label-position="left"> |
| | | <el-form-item> |
| | | <el-button type="primary" @click="openBindDialog(deviceInfo.id)">绑定</el-button> |
| | |
| | | </el-form-item> |
| | | |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> |
| | | <el-form-item label="拆垛箱数" prop="qty"> |
| | | <el-input-number v-model="ruleForm.qty" placeholder="请输入拆垛箱数" clearable /> |
| | | </el-form-item> |
| | | |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <template #footer> |
| | |
| | | <el-table-column prop="startLocate" label="起始位置" show-overflow-tooltip="" /> |
| | | <el-table-column prop="endLocate" label="结束位置" show-overflow-tooltip="" /> |
| | | <el-table-column prop="palletNo" label="托盘号" show-overflow-tooltip="" /> |
| | | <el-table-column prop="completeQty" label="拆垛箱数" show-overflow-tooltip="" /> |
| | | <el-table-column prop="qty" label="拆垛箱数" show-overflow-tooltip="" /> |
| | | <el-table-column prop="palletQty" label="整跺箱数" show-overflow-tooltip="" /> |
| | | <el-table-column prop="lotNo" label="批次号" show-overflow-tooltip="" /> |
| | | <el-table-column prop="skuNo" label="物料编码" show-overflow-tooltip="" /> |
| | |
| | | <ModifyRecord :data="scope.row" /> |
| | | </template> |
| | | </el-table-column> --> |
| | | <el-table-column prop="操作" label="操作" width="130" align="center" fixed="right" show-overflow-tooltip="" |
| | | <el-table-column prop="操作" label="操作" width="200" align="center" fixed="right" show-overflow-tooltip="" |
| | | v-if="auth('wcsTask:complete') || auth('wcsTask:cancell')"> |
| | | <template #default="scope"> |
| | | <template v-if="scope.row.status <= 1"> |
| | |
| | | v-auth="'wcsTask:complete'"> 完成 </el-button> |
| | | <el-button icon="ele-Close" size="small" text="" type="primary" @click="cancellTask(scope.row)" |
| | | v-auth="'wcsTask:cancell'"> 取消 </el-button> |
| | | <el-button icon="ele-Upload" size="small" text="" type="primary" @click="uploadTask(scope.row)" |
| | | v-auth="'wcsTask:cancell'"> 上传 </el-button> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | |
| | | import printDialog from '/@/views/system/print/component/hiprint/preview.vue' |
| | | import editDialog from '/@/views/wcs/wcsTask/component/editDialog.vue' |
| | | import { pageWcsTask, finshWcsTask } from '/@/api/wcs/wcsTask'; |
| | | import { pageWcsTask, finshWcsTask,uploadWcsTask } from '/@/api/wcs/wcsTask'; |
| | | import { pageWcsMonitorTask } from '/@/api/wcs/wcsTaskMonitor'; |
| | | import { signalR } from './signalR'; |
| | | |
| | |
| | | .catch(() => { }); |
| | | |
| | | } |
| | | //上传任务 |
| | | const uploadTask = async (row: any) => { |
| | | ElMessageBox.confirm(`确定要上传任务吗?`, "提示", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(async () => { |
| | | var param = Object.assign(row); |
| | | await uploadWcsTask(param); |
| | | handleQuery(); |
| | | handleQuery2(); |
| | | ElMessage.success("上传任务成功"); |
| | | }) |
| | | .catch(() => { }); |
| | | |
| | | } |
| | | // 点击表格 |
| | | const handleClick = (row, column, cell, event) => { |
| | | if (column.property === '操作') { |