using Castle.Components.DictionaryAdapter.Xml; using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEA_Core; using WIDESEA_Core.BaseServices; using WIDESEA_Core.Enums; using WIDESEA_Core.Helper; using WIDESEA_ISystemRepository; using WIDESEA_ISystemService; using WIDESEA_Model.Models; using WIDESEA_Model.Models.System; namespace WIDESEA_SystemService { public class Dt_RepairService : ServiceBase, IDt_RepairService { public readonly ISys_UserRepository _UserRepository; public Dt_RepairService(IDt_RepairRepository BaseDal, ISys_UserRepository userRepository) : base(BaseDal) { _UserRepository = userRepository; } public IDt_RepairRepository Repository => BaseDal; public WebResponseContent GetBarcodeMessage(string barocde) { List dt_Repairs = BaseDal.QueryData(x => x.Current_PalletCode == barocde && (x.Current_Static == (int)StockStatusEmun.检修出库锁定 || x.Current_Static == (int)StockStatusEmun.检修中)).ToList(); foreach (var item in dt_Repairs) { switch (item.CreateSta) { case "1010": item.CreateSta = "1号站台"; break; case "1014": item.CreateSta = "2号站台"; break; case "1020": item.CreateSta = "3号站台"; break; case "1024": item.CreateSta = "4号站台"; break; case "1030": item.CreateSta = "5号站台"; break; case "1034": item.CreateSta = "6号站台"; break; case "1040": item.CreateSta = "7号站台"; break; case "1044": item.CreateSta = "8号站台"; break; default: break; } } int useriddep = _UserRepository.GetDeptId(App.User.UserName); if (useriddep == 0) { dt_Repairs = dt_Repairs.Where(x => x.Creater == App.User.UserName).ToList(); } return WebResponseContent.Instance.OK(data: dt_Repairs); } public WebResponseContent UpdateBarcode(string barocde) { List dt_Repairs = BaseDal.QueryData(x => x.Current_PalletCode == barocde && x.Current_Static == (int)StockStatusEmun.检修出库锁定).ToList(); foreach (var item in dt_Repairs) { item.ModifyDate = DateTime.Now; item.Current_Static = (int)StockStatusEmun.检修中; BaseDal.UpdateData(item); } List Craet = BaseDal._CreateTaskRepository.QueryData(x => x.Current_PalletCode == barocde && x.Current_Static == (int)StockStatusEmun.检修出库锁定).ToList(); foreach (var item in Craet) { item.Current_Static = (int)StockStatusEmun.检修中; BaseDal._CreateTaskRepository.UpdateData(item); } return WebResponseContent.Instance.OK(); } public string ToWcsWriteBrplc = WIDESEA_Core.Helper.AppSettings.Configuration["ToWcsWriteBrplc"]; public WebResponseContent UpdateBarcoend(string barocde,int wcount,int selectvalue) { try { List dt_Repairs = BaseDal.QueryData(x => x.Current_PalletCode == barocde && x.Current_Static == (int)StockStatusEmun.检修中).ToList(); foreach (var item in dt_Repairs) { item.Current_begin = DateTime.Now; item.Current_Outcome = selectvalue == 1 ? "合格" : "半检修"; item.Current_alter = wcount; item.Current_Static = (int)StockStatusEmun.检修完成; BaseDal.UpdateData(item); } if (wcount >= 0) { List dt_StockInfos = BaseDal._stockInfoRepository.QueryData(x => x.PalletCode == barocde).ToList(); foreach (var item in dt_StockInfos) { item.Wlstatus = selectvalue == 1 ? (int)InventoryMaterialStatus.合格 : (int)InventoryMaterialStatus.半检修; item.Materialweight = item.Materialweight - wcount; BaseDal._stockInfoRepository.UpdateData(item); } } List Craet = BaseDal._CreateTaskRepository.QueryData(x => x.Current_PalletCode == barocde).ToList(); BaseDal._CreateTaskRepository.DeleteData(Craet); HttpHelper.Post(ToWcsWriteBrplc, Craet[0].CreateSta, "入库任务下发"); return WebResponseContent.Instance.OK(); } catch (Exception ex) { return WebResponseContent.Instance.Error(); throw; } } public WebResponseContent UpdateBarcoendwj(string barocde) { try { List dt_Repairs = BaseDal.QueryData(x => x.Current_PalletCode == barocde && x.Current_Static == (int)StockStatusEmun.检修出库锁定 && x.Current_Static != (int)StockStatusEmun.检修中).ToList(); if (dt_Repairs.Count ==0) { return WebResponseContent.Instance.Error("未检回库失败!"); } foreach (var item in dt_Repairs) { item.Current_begin = DateTime.Now; item.Current_Outcome = "未检回库"; item.Current_alter = item.Current_count; item.Current_Static = (int)StockStatusEmun.检修完成; BaseDal.UpdateData(item); } List Craet = BaseDal._CreateTaskRepository.QueryData(x => x.Current_PalletCode == barocde).ToList(); BaseDal._CreateTaskRepository.DeleteData(Craet); HttpHelper.Post(ToWcsWriteBrplc, Craet[0].CreateSta, "入库任务下发"); return WebResponseContent.Instance.OK(); } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); throw; } } public virtual PageGridData GetPageData(PageDataOptions options) { string wheres = options.ValidatePageOptions(TProperties); int useriddep = _UserRepository.GetDeptId(App.User.UserName); if (useriddep == 0) { if (wheres != "") { wheres += $" and Creater={App.User.UserName}"; } else { wheres += $"(Creater={App.User.UserName})"; } } //获取排序字段 Dictionary orderbyDic = options.GetPageDataSort(TProperties); PageGridData pageGridData = new PageGridData(); pageGridData = BaseDal.QueryPage(wheres, options.Page, options.Rows, orderbyDic); return pageGridData; } public object NumberOverhauls() { var startDate = DateTime.Today.AddDays(-7); // 获取当前日期之前15天的日期 var today = DateTime.Today; var dateRange = Enumerable.Range(0, 7).Select(offset => today.AddDays(-offset)); // 获取最近15天的日期范围 var data2 = BaseDal.QueryData(x => x.CreateDate >= startDate && x.CreateDate < today.AddDays(1)).ToList(); var result = dateRange.Reverse().Select(date => { // 统计当日入库数量 var dayInventory = data2.Where(x => x.CreateDate >= date && x.CreateDate < date.AddDays(1) && x.Current_Static == (int)StockStatusEmun.检修完成 && x.Current_Outcome == "合格").Count(); // 统计当日出库数量 var dayOutbound = data2.Where(x => x.CreateDate >= date && x.CreateDate < date.AddDays(1) && x.Current_Static == (int)StockStatusEmun.检修完成 && x.Current_Outcome == "合格").Sum(x => x.Current_alter); return new { Date = date.ToString("MM-dd"), Day_inventory = dayInventory, Day_outbound = dayOutbound }; }); var data = new { Daily_statistics = result.ToList(), }; return data; } } }