From 5ab19c977cfb0551a88b3885b0648183fbfff672 Mon Sep 17 00:00:00 2001 From: libo <Administrator@DESKTOP-1A6QMNS> Date: 星期一, 31 三月 2025 10:10:12 +0800 Subject: [PATCH] 调整wms出入库、返库逻辑,调整与比亚迪接口对接的类型和方法,调整配置参数,写入服务器上数据库密码 --- 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StockRepository/StockInfoRepository.cs | 214 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 208 insertions(+), 6 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockRepository/StockInfoRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockRepository/StockInfoRepository.cs" index adef8e2..e06c147 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockRepository/StockInfoRepository.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockRepository/StockInfoRepository.cs" @@ -1,6 +1,7 @@ -锘縰sing Org.BouncyCastle.Crypto; +锘縰sing Newtonsoft.Json; +using Org.BouncyCastle.Crypto; using SqlSugar; -using SqlSugar.Extensions; +//using SqlSugar.Extensions; using System; using System.Collections.Generic; using System.Linq; @@ -8,17 +9,24 @@ using System.Threading.Tasks; using WIDESEA_Core.BaseRepository; using WIDESEA_Core.Enums; +using WIDESEA_Core.Helper; +using WIDESEA_DTO.Inbound; using WIDESEA_DTO.Stock; using WIDESEA_IBasicRepository; using WIDESEA_IStockRepository; +using WIDESEA_Model; using WIDESEA_Model.Models; +using WIDESEA_Model.Models.System.Reponse; +using WIDESEA_Model.Models.System.Request; namespace WIDESEA_StockRepository { public class StockInfoRepository : RepositoryBase<Dt_StockInfo>, IStockInfoRepository { - public StockInfoRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage) + private readonly ILabelMasterRepository _labelMasterRepository; + public StockInfoRepository(IUnitOfWorkManage unitOfWorkManage, ILabelMasterRepository labelMasterRepository) : base(unitOfWorkManage) { + _labelMasterRepository = labelMasterRepository; } public List<StockViewDTO> GetAllStockViews() @@ -65,9 +73,20 @@ //return sugarQueryable.InnerJoin(sugarQueryable1, (a, b) => a.LocationCode == b.LocationCode).Select((a, b) => b).Includes(x => x.Details).ToList(); } + /// <summary> + /// 鏍规嵁鎵规鍙峰拰鐗╂枡缂栫爜鑾峰彇搴撳瓨淇℃伅 + /// </summary> + /// <param name="materielCode"></param> + /// <returns></returns> + public List<Dt_StockInfo> GetStockInfos(string materielCode, string batchNo) + { + return Db.Queryable<Dt_StockInfo>().Includes(x => x.Details).Where(x => x.Details.Any(v => v.MaterielCode == materielCode && v.BatchNo == batchNo)).ToList(); + } + public List<Dt_StockInfo> GetStockInfos(string materielCode, List<string> locationCodes) { - return Db.Queryable<Dt_StockInfo>().Where(x => locationCodes.Contains(x.LocationCode)).Includes(x => x.Details).Where(x => x.Details.Any(v => v.MaterielCode == materielCode)).ToList(); + //淇敼鍙幏鍙栧凡涓婃灦鐘舵�佺殑搴撳瓨 + return Db.Queryable<Dt_StockInfo>().Where(x => locationCodes.Contains(x.LocationCode) && x.StockStatus == (int)StockStatusEmun.宸蹭笂鏋�).Includes(x => x.Details).Where(x => x.Details.Any(v => v.MaterielCode == materielCode)).ToList(); //ISugarQueryable<Dt_LocationInfo> sugarQueryable = Db.Queryable<Dt_LocationInfo>().Where(x => locationCodes.Contains(x.LocationCode)); @@ -82,6 +101,7 @@ public List<Dt_StockInfo> GetStockInfosByPalletCodes(List<string> palletCodes) { + return Db.Queryable<Dt_StockInfo>().Where(x => palletCodes.Contains(x.PalletCode)).Includes(x => x.Details).ToList(); } @@ -94,12 +114,194 @@ { return Db.UpdateNav(stockInfo).Include(x => x.Details).ExecuteCommand(); } - public Dt_StockInfo GetPalletStockInfo(string roadwayNo) { //ISugarQueryable<string> locationCodes = Db.Queryable<Dt_LocationInfo>().Where(x => x.RoadwayNo == roadwayNo && x.LocationStatus == LocationStatusEnum.Pallet.ObjToInt() && (x.EnalbeStatus == LocationEnalbeStatusEnum.OnlyOut.ObjToInt() || LocationEnalbeStatusEnum.Normal.ObjToInt() == x.EnalbeStatus)).Select(x => x.LocationCode); + return Db.Queryable<Dt_StockInfo>().Where(x => x.StockStatus == StockStatusEmun.宸插叆搴�.ObjToInt() && SqlFunc.Subqueryable<Dt_LocationInfo>().Where(v => v.LocationCode == x.LocationCode && v.RoadwayNo == roadwayNo && v.LocationStatus == LocationStatusEnum.Pallet.ObjToInt() && (EnableStatusEnum.Normal.ObjToInt() == v.EnableStatus)).Any()).OrderBy(x => x.ModifyDate).First(); - return Db.Queryable<Dt_StockInfo>().Where(x => x.StockStatus == StockStatusEmun.宸插叆搴�.ObjToInt() && SqlFunc.Subqueryable<Dt_LocationInfo>().Where(v => v.LocationCode == x.LocationCode && v.RoadwayNo == roadwayNo && v.LocationStatus == LocationStatusEnum.Pallet.ObjToInt() && (v.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || EnableStatusEnum.Normal.ObjToInt() == v.EnableStatus)).Any()).OrderBy(x => x.ModifyDate).First(); + } + public Dt_StockInfo GetPalletStockInfo(string roadwayNo, string strayType) + { + //ISugarQueryable<string> locationCodes = Db.Queryable<Dt_LocationInfo>().Where(x => x.RoadwayNo == roadwayNo && x.LocationStatus == LocationStatusEnum.Pallet.ObjToInt() && (x.EnalbeStatus == LocationEnalbeStatusEnum.OnlyOut.ObjToInt() || LocationEnalbeStatusEnum.Normal.ObjToInt() == x.EnalbeStatus)).Select(x => x.LocationCode); + if (strayType == "1") + { + return Db.Queryable<Dt_StockInfo>().Where(x => x.StockStatus == StockStatusEmun.宸插叆搴�.ObjToInt() && x.PalletCode.Substring(0, 1) == "T" && SqlFunc.Subqueryable<Dt_LocationInfo>().Where(v => v.LocationCode == x.LocationCode && v.RoadwayNo == roadwayNo && v.LocationStatus == LocationStatusEnum.Pallet.ObjToInt() && (EnableStatusEnum.Normal.ObjToInt() == v.EnableStatus)).Any()).OrderBy(x => x.ModifyDate).First(); + } + else + { + return Db.Queryable<Dt_StockInfo>().Where(x => x.StockStatus == StockStatusEmun.宸插叆搴�.ObjToInt() && x.PalletCode.Substring(0, 1) == "B" && SqlFunc.Subqueryable<Dt_LocationInfo>().Where(v => v.LocationCode == x.LocationCode && v.RoadwayNo == roadwayNo && v.LocationStatus == LocationStatusEnum.Pallet.ObjToInt() && (EnableStatusEnum.Normal.ObjToInt() == v.EnableStatus)).Any()).OrderBy(x => x.ModifyDate).First(); + } + } + + + /// <summary> + /// 绔嬪簱WMS搴撳瓨淇℃伅鎺ュ彛锛屼緵涓婃父绯荤粺璋冪敤 + /// </summary> + /// <param name="inventoryQueryRequest"></param> + /// <returns></returns> + public InventoryQueryResponse InventoryQuery(string inventoryQueryRequeststr) + { + InventoryQueryResponse inventoryQueryResponse = new InventoryQueryResponse(); + try + { + InventoryQueryRequest inventoryQueryRequest = JsonConvert.DeserializeObject<InventoryQueryRequest>(inventoryQueryRequeststr); + if (inventoryQueryRequest != null) + { + List<StockItem> DATA = new List<StockItem>(); + inventoryQueryResponse.DATA = DATA; + List<StockViewDTO> stockviews = GetAllStockViews(); + foreach (var view in stockviews) + { + foreach (var detail in view.Details) + { + Dt_LabelMaster labelMaster = _labelMasterRepository.QueryFirst(x => x.LABEL_NO == detail.SerialNumber); + StockItem stockItem = new StockItem(); + stockItem.BATCH = detail.BatchNo; + stockItem.LABEL_NO = detail.SerialNumber; + stockItem.LGORT = "0030";//搴撲綅 + if (labelMaster != null) + { + if (labelMaster.WH_NUMBER == inventoryQueryRequest.DATA[0].WH_NUMBER && labelMaster.WERKS == inventoryQueryRequest.DATA[0].WERKS) + { + stockItem.LIFNR = labelMaster.LIFNR; + stockItem.LIKTX = labelMaster.LIKTX; + stockItem.LK_BIN_CODE = view.LocationCode; + stockItem.MAKTX = labelMaster.MAKTX; + stockItem.MATNR = labelMaster.MATNR; + stockItem.MEINS = labelMaster.UNIT; + stockItem.QTY = labelMaster.BOX_QTY; + var sobkz = "闈為檺鍒�"; + if (labelMaster.SOBKZ == "0") + { + sobkz = "闈為檺鍒�"; + } + else if (labelMaster.SOBKZ == "1") + { + sobkz = "鍐荤粨"; + } + else if (labelMaster.SOBKZ == "2") + { + sobkz = "寰呰川妫�"; + } + stockItem.SOBKZ = sobkz; + stockItem.TPNUM = view.PalletCode; + stockItem.WERKS = labelMaster.WERKS;//宸ュ巶 + stockItem.WH_NUMBER = labelMaster.WH_NUMBER;//浠撳簱鍙� + DATA.Add(stockItem); + } + } + } + } + if (DATA.Count > 0) + { + inventoryQueryResponse.MSGTY = "S"; + inventoryQueryResponse.MSGTX = ""; + } + else + { + inventoryQueryResponse.MSGTY = "I"; + inventoryQueryResponse.MSGTX = ""; + } + } + } + catch (Exception ex) + { + inventoryQueryResponse.MSGTY = "E"; + inventoryQueryResponse.MSGTX = ex.Message; + + } + return inventoryQueryResponse; + + } + + /// <summary> + /// 绔嬪簱WMS鍐荤粨/瑙e喕淇℃伅鎺ュ彛锛屼緵涓婃父绯荤粺璋冪敤 + /// </summary> + /// <param name="freezeByCustomerResponse"></param> + /// <returns></returns> + public freezeByCustomerResponse freezeByCustomer(string freezeRequeststr) + { + + freezeByCustomerResponse freezeResponse = new freezeByCustomerResponse(); + try + { + freezeByCustomerRequest freezeRequest = JsonConvert.DeserializeObject<freezeByCustomerRequest>(freezeRequeststr); + if (freezeRequest.WERKS == AppSettings.Configuration["WERKS"] && freezeRequest.WH_NUMBER == AppSettings.Configuration["WERKS"]) + { + //鏍规嵁鎵规鍜岀墿鏂欏彿鏌ユ壘瀵瑰簲鐨勬墭鐩樺彿锛屽喕缁撳簱瀛橈紝鍙湁鍏ュ簱鎴愬姛浜嗭紝鎵嶈兘琚喕缁� + List<Dt_StockInfo> stockInfos = GetStockInfos(freezeRequest.MATNR, freezeRequest.BATCH); + + List<Dt_LabelMaster> labelInfos = _labelMasterRepository.QueryData(x => x.MATNR == freezeRequest.MATNR && x.BATCH == freezeRequest.BATCH); + if (freezeRequest.YWLX == "00")//00鍐荤粨 + { + foreach (var item in stockInfos) + { + if (item.StockStatus == (int)StockStatusEmun.宸插叆搴�) + { + item.StockStatus = (int)StockStatusEmun.鍑哄簱鍐荤粨; + UpdateData(item); + } + } + + foreach (var li in labelInfos) + { + li.SOBKZ = "1"; + } + _labelMasterRepository.UpdateData(labelInfos); + + freezeResponse.MSGTY = "S"; + freezeResponse.MSGTX = ""; + } + else if (freezeRequest.YWLX == "01") //01瑙e喕 + { + foreach (var item in stockInfos) + { + if (item.StockStatus == (int)StockStatusEmun.鍑哄簱鍐荤粨) + { + item.StockStatus = (int)StockStatusEmun.宸插叆搴�; + UpdateData(item); + } + } + + foreach (var li in labelInfos) + { + //if (li.LABEL_STATUS == "01") + //{ + // li.SOBKZ = "2"; + //} + //else + //{ + li.SOBKZ = "0"; + //} + } + _labelMasterRepository.UpdateData(labelInfos); + + freezeResponse.MSGTY = "S"; + freezeResponse.MSGTX = ""; + + } + else + { + freezeResponse.MSGTY = "E"; + freezeResponse.MSGTX = "涓嶆敮鎸佽涓氬姟绫诲瀷"; + } + } + else + { + freezeResponse.MSGTY = "E"; + freezeResponse.MSGTX = "璇蜂紶鍏ユ纭殑宸ュ巶鍙峰拰浠撳簱鍙�"; + + } + + } + catch (Exception ex) + { + freezeResponse.MSGTY = "E"; + freezeResponse.MSGTX = ex.Message; + + } + return freezeResponse; + } } } -- Gitblit v1.9.3