using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Threading.Tasks; using WIDESEA_Comm; using WIDESEA_Comm.LogInfo; using WIDESEA_Comm.MES_Info; using WIDESEA_Comm.MES_Info.Request; using WIDESEA_Common; using WIDESEA_Core.EFDbContext; using WIDESEA_Core.ManageUser; using WIDESEA_Core.Utilities; using WIDESEA_Entity.DomainModels; using WIDESEA_Entity.DomainModels.Mes; using WIDESEA_WMS.Common; using WIDESEA_WMS.IRepositories; using WIDESEA_WMS.Repositories; using static WIDESEA_Comm.MES_Info.BasicSN; namespace WIDESEA_WMS { public partial class ToMesServer { /// /// 空盘操作 (外协空盘入库,空盘补送) /// /// /// public WebResponseContent SendEpmtyTask(SaveModel saveModel) { WebResponseContent content = new WebResponseContent(); try { string cacheNo = saveModel.MainData["cacheNo"].ToString(); //缓存架编号 string user = saveModel.MainData["creator"].ToString(); string type = saveModel.MainData["radio"].ToString(); //1为空盘入库 2为空盘出库 int number = Convert.ToInt32(saveModel.MainData["number"].ToString()); return content.Error($"{user}无操作权限!"); if (type == "1") //空盘入库 { //寻找空盘库位 dt_stationinfo emptyLocation = GetEmptyLocation(); dt_agvtask agvtask = new dt_agvtask { //agv_barcode = cacheNo, //agv_code = user, agv_createtime = DateTime.Now, agv_fromaddress = cacheNo, agv_qty = number, agv_grade = 1, agv_tasktype = AGVTaskTypeEnum.TaskType_Inbound.ToString(), agv_taskstate = AGVTaskStateEnum.Create.ToString(), agv_toaddress = emptyLocation.stationCode, }; freeDB.Add(agvtask); } else { //根据库存查询空盘库存信息 dt_inventory inventory = freeDB.Select().Where(x => x.area == "11").OrderByDescending(x => x.OnlineTime).First(); //取最晚的入库车轮 //数量? //var stationinfo = freeDB.Select().Where(x => x.stationCode == inventory.stationCode).First(); //int num = Convert.ToInt16(stationinfo.quantity); dt_agvtask agvtask = new dt_agvtask { //agv_barcode = cacheNo, //agv_code = user, agv_createtime = DateTime.Now, agv_fromaddress = inventory.stationCode, agv_qty = 5, //inventory., //告诉AGV取第几个车轮? agv_grade = 1, agv_tasktype = AGVTaskTypeEnum.TaskType_Inbound.ToString(), agv_taskstate = AGVTaskStateEnum.Create.ToString(), agv_toaddress = cacheNo, }; freeDB.Add(agvtask); } return content.OK(); } catch (Exception ex) { return content.Error($"呼叫AGV失败:{ ex.Message}"); } } private dt_stationinfo GetEmptyLocation() { VOLContext context = new VOLContext(); Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(context); var station = stationinfoRepository.Find(x => x.line == 9 && x.location_state == LocationStateEnum.Empty.ToString() && x.area == "11").FirstOrDefault(); // todo区分大小托盘 if (station != null) { return station; } else { throw new Exception("空盘库位已满,无法入库!"); } } } }