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_Comm.TaskNo; 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 OutsourceInbound(SaveModel saveModel) { WebResponseContent content = new WebResponseContent(); try { string stationNo = saveModel.MainData["stationNo"].ToString(); //缓存架编号 if (string.IsNullOrEmpty(stationNo)) return content.Error("请选择下料口!"); string user = saveModel.MainData["creator"].ToString(); string sn = saveModel.MainData["dataSN"].ToString(); //车轮SN号 #region 判断SN号长度、是否存在相同SN号 bool strOK = false; bool SNOK = false; for (int i = 1; i < sn.Split(",").Length; i++) { for (int j = 0; j < i; j++) { if (sn.Split(",")[j] == sn.Split(",")[i]) strOK = true; if (sn.Split(",")[j].Length != 10) SNOK = true; } } if (strOK) return content.Error("存在相同SN号的车轮信息!请重新扫描!"); if (SNOK) return content.Error("车轮SN号有误!请重新扫描!"); #endregion //dt_mes_detail info = null; //dt_mes_head mes_head = null; VV_Mes_Workinfo mes_Work = null; int count = 0; //车轮数量 string bindSN = ""; List list = new List(); foreach (var SN in sn.Split(",")) { if (!string.IsNullOrEmpty(SN)) list.Add(SN); } foreach (var item in list) { if (item != null) { count++; bindSN += bindSN == "" ? item : "," + item; mes_Work = freeDB.Select().Where(x => x.SN == item && x.processCode == "28").First(); if (mes_Work == null) return content.Error($"第{count}个车轮无检测上料工单信息,请核查工单后在扫描!"); //info = freeDB.Select().Where(x => x.SN == item).First(); //if (info == null) // return content.Error($"第{count}个车轮无检测上料工单详情,请核查工单后在扫描!"); //mes_head = freeDB.Select().Where(x => x.jobID == info.jobID && x.processCode == "28").First(); //if (mes_head == null) // return content.Error($"第{count}个车轮无检测上料工单信息,请核查工单后在扫描!"); } } VOLContext Context = new VOLContext(); Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context); var station = freeDB.Select().Where(x => x.stationCode == stationNo).First(); if (freeDB.Select().Where(x => x.agv_fromaddress == station.stationCode).Any()) return content.Error($"下料口{stationNo}存在AGV任务,请核实!"); if (!station.enable) return content.Error($"下料口{stationNo}被禁用,请核实!"); station.quantity = count; station.bindSN = bindSN; station.stationType = mes_Work.drawingNo; station.location_state = "Stroge"; station.Number = mes_Work.jobID; if (mes_Work.heatID != null) station.heatNumber = mes_Work.heatID; station.tray_status = "StrogeTray"; stationinfoRepository.Update(station, true); #region MyRegion //dt_agvtask agvtask = new dt_agvtask //{ // //agv_barcode = stationNo, // //agv_code = user, // agv_createtime = DateTime.Now, // agv_fromaddress = stationNo, // agv_qty = i, // agv_grade = 1, // agv_tasktype = AGVTaskTypeEnum.TaskType_Inbound.ToString(), // agv_taskstate = AGVTaskStateEnum.Create.ToString(), // agv_toaddress = "", //}; #endregion dt_agvtask agvtask = new dt_agvtask() { agv_fromaddress = station.stationCode, agv_id = Guid.NewGuid(), agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"), agv_grade = 3, agv_createtime = DateTime.Now, agv_taskstate = "Queue", agv_materielid = station.stationType, agv_qty = station.quantity, agv_tasktype = "TaskType_OutsourceOutbound", agv_toaddress = "", agv_userid = user,//"系统", jobID = mes_Work.jobID, bindSN = station.bindSN, agv_worktype = Convert.ToInt32(mes_Work.processCode), agv_materbarcode = mes_Work.materialCode, agv_Traytype = station.tray_type, agv_TrayStatus = station.tray_status }; freeDB.Add(agvtask); return content.OK(); } catch (Exception ex) { return content.Error($"呼叫AGV失败:{ex.Message}"); } } } }