From 01a80700ea03a332785fb8cbd16aecaf7cce2ccb Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期四, 30 五月 2024 10:29:18 +0800 Subject: [PATCH] 添加人工下料和切换托盘日志 --- 代码管理/WMS/WMS_Server/WIDESEA_WMS/ToMes/OutsourceInbound.cs | 237 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 216 insertions(+), 21 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/OutsourceInbound.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/OutsourceInbound.cs" index c2252b6..aa074ec 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/OutsourceInbound.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/OutsourceInbound.cs" @@ -1,4 +1,6 @@ -锘縰sing Newtonsoft.Json; +锘縰sing Microsoft.EntityFrameworkCore; +using Newtonsoft.Json; +using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; using System; using System.Collections.Generic; using System.Threading.Tasks; @@ -6,7 +8,9 @@ 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.BaseProvider; using WIDESEA_Core.EFDbContext; using WIDESEA_Core.ManageUser; using WIDESEA_Core.Utilities; @@ -22,7 +26,124 @@ public partial class ToMesServer { /// <summary> - /// 澶栧崗鍏ュ簱(妫�娴嬩笂鏂�) + /// 浜哄伐鍑哄簱 + /// </summary> + /// <param name="saveModel"></param> + /// <returns></returns> + public WebResponseContent Outsource(SaveModel saveModel) + { + WebResponseContent content = new WebResponseContent(); + VOLContext context = new VOLContext(); + Idt_inventoryRepository inventoryRepository = new dt_inventoryRepository(context); + Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(context); + string sn = saveModel.MainData["dataSN"].ToString(); //杞﹁疆SN鍙� + string user = saveModel.MainData["creator"].ToString(); + string str = ""; + try + { + List<string> list = new List<string>(); + foreach (var SN in sn.Split(",")) + { + if (!string.IsNullOrEmpty(SN)) + list.Add(SN); + } + var inventoryList = inventoryRepository.Find(x => list.Contains(x.SN)).ToList(); + + foreach (var inventorys in inventoryList.GroupBy(x => x.stationCode)) + { + try + { + List<detail> lists = new List<detail>(); + foreach (var inventory in inventorys) + { + detail detail = new detail(); + detail.sn = inventory.SN; + lists.Add(detail); + str += str == "" ? inventory.SN : "," + inventory.SN; + } + agvInWarehousePara outWarehousePara = new agvInWarehousePara() + { + zoneID = inventorys.Key, + details = lists, + layerNo = 1, + stackID = "1", + warehouseName = "Agv搴�", + Operator = UserContext.Current.UserName, + }; + + Idt_info_to_mesRepository mesRepository = new dt_info_to_mesRepository(context); + var postJson = JsonConvert.SerializeObject(outWarehousePara); + dt_info_to_mes info_To_Mes = new dt_info_to_mes() + { + Info = postJson, + ActionName = "agvOutWarehouse", + Createtime = DateTime.Now, + Remark = "浜哄伐鍚屾MES杞﹁疆鍑哄簱", + State = false + }; + mesRepository.Add(info_To_Mes, true); + + foreach (var inventory in inventorys) + { + var station = stationinfoRepository.Find(x => x.stationCode == inventory.stationCode).FirstOrDefault(); + station.quantity = station.quantity - 1; + if (station.quantity < 1) + { + station.quantity = 0; + station.stationType = string.Empty; + station.heatNumber = string.Empty; + station.Number = string.Empty; + station.billetID = string.Empty; + station.bindSN = string.Empty; + station.enable = false; + station.tray_status = string.Empty; + station.location_state = LocationStateEnum.Empty.ToString(); + } + else + { + var bindSNS = station.bindSN.Split(","); + station.bindSN = OperStr(bindSNS, inventory.SN); + var billetS = station.billetID.Split(","); + station.billetID = OperStr(billetS, inventory.BilletNumber.ToString()); + } + + #region 鍙栨秷璺熻釜DbContext涓璺熻釜鐨勫疄浣� + var currentEntry = stationinfoRepository.DbContext.ChangeTracker.Entries<dt_stationinfo>().FirstOrDefault(); + if (currentEntry != null) currentEntry.State = EntityState.Detached; + #endregion + + stationinfoRepository.Update(station, true); + inventoryRepository.Delete(inventory, true); + } + WriteDBLog.Write($"浜哄伐鍑哄簱鎴愬姛 ", $"璐т綅缂栧彿锛歿inventorys.Key}锛汼N鍙凤細{str}", LogState.Sucess, "PDA", user); + + } + catch (Exception ex) + { + content.Message = ex.Message; + WriteDBLog.Write($"浜哄伐鍑哄簱澶辫触 ", new { 閿欒淇℃伅 = ex.Message, 鏁版嵁 = str }, LogState.Error, "PDA", user); + } + + } + + content.OK(); + } + catch (Exception ex) + { + content.Error($"浜哄伐鍑哄簱澶辫触锛�:{ex.Message}"); + WriteDBLog.Write($"浜哄伐鍑哄簱澶辫触 ", new { 閿欒淇℃伅 = ex.Message, 鏁版嵁 = sn }, LogState.Error, "PDA", user); + } + return content; + } + public static string OperStr(string[] strArrty, string SN) + { + string[] newstr = strArrty.Where(x => x != SN).ToArray(); + string Newsn = string.Join(",", newstr); + + return Newsn; + } + /// <summary> + /// 澶栧崗鍑哄簱(妫�娴嬩笂鏂�) /// </summary> /// <param name="saveModel"></param> /// <returns></returns> @@ -32,36 +153,110 @@ try { string stationNo = saveModel.MainData["stationNo"].ToString(); //缂撳瓨鏋剁紪鍙� + if (string.IsNullOrEmpty(stationNo)) return content.Error("璇烽�夋嫨涓嬫枡鍙o紒"); string user = saveModel.MainData["creator"].ToString(); string sn = saveModel.MainData["dataSN"].ToString(); //杞﹁疆SN鍙� - int i = 1; //杞﹁疆鏁伴噺 - foreach (var item in sn.Split(",")) + #region 鍒ゆ柇SN鍙烽暱搴︺�佹槸鍚﹀瓨鍦ㄧ浉鍚孲N鍙� + bool strOK = false; + bool SNOK = false; + for (int i = 1; i < sn.Split(",").Length; i++) { - if(item!= null) + for (int j = 0; j < i; j++) { - var info = freeDB.Select<VV_MES_Info>().Where(x => x.SN == item).First(); - if (info == null) - { - return content.Error($"绗瑊i}涓溅杞棤妫�娴嬩笂鏂欏伐鍗曚俊鎭紝璇锋牳鏌ュ伐鍗曞悗鍦ㄦ壂鎻忥紒"); - } - i++; + 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_agvtask agvtask = new dt_agvtask + //dt_mes_detail info = null; + //dt_mes_head mes_head = null; + VV_Mes_Workinfo mes_Work = null; + + int count = 0; //杞﹁疆鏁伴噺 + string bindSN = ""; + List<string> list = new List<string>(); + foreach (var SN in sn.Split(",")) { - agv_barcode = stationNo, - agv_code = user, + if (!string.IsNullOrEmpty(SN)) + list.Add(SN); + } + foreach (var item in list) + { + if (item != null) + { + count++; + bindSN += bindSN == "" ? item : "," + item; + + mes_Work = freeDB.Select<VV_Mes_Workinfo>().Where(x => x.SN == item && x.processCode == "28").First(); + if (mes_Work == null) + return content.Error($"绗瑊count}涓溅杞棤妫�娴嬩笂鏂欏伐鍗曚俊鎭紝璇锋牳鏌ュ伐鍗曞悗鍦ㄦ壂鎻忥紒"); + //info = freeDB.Select<dt_mes_detail>().Where(x => x.SN == item).First(); + //if (info == null) + // return content.Error($"绗瑊count}涓溅杞棤妫�娴嬩笂鏂欏伐鍗曡鎯咃紝璇锋牳鏌ュ伐鍗曞悗鍦ㄦ壂鎻忥紒"); + //mes_head = freeDB.Select<dt_mes_head>().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<dt_stationinfo>().Where(x => x.stationCode == stationNo).First(); + if (freeDB.Select<dt_agvtask>().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_fromaddress = stationNo, - agv_qty = i, - agv_grade = 1, - agv_tasktype = AGVTaskTypeEnum.TaskType_Inbound.ToString(), - agv_taskstate = AGVTaskStateEnum.Create.ToString(), + 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(); -- Gitblit v1.9.3