using System; using System.Collections.Generic; using System.Runtime.Remoting.Lifetime; using System.ServiceModel; using Newtonsoft.Json; using SSWMS.Common; namespace SSWMS.Server { [ServiceBehavior(IncludeExceptionDetailInFaults = true, InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple, MaxItemsInObjectGraph = int.MaxValue, UseSynchronizationContext = false)] public class S_StorageService : I_StorageService { public GOODS_MAIN GetGoodsMain(int iGoodsID) { return S_BaseService._P_GOODS_MAIN.GetModel(iGoodsID); } public GOODS_MAIN GetGoodsMainByGoodsCode(string sGoodsCode) { return S_BaseService._P_GOODS_MAIN.GetModelByGoodsCode(sGoodsCode); } public string GetStockBarcode(string sCellCode) { STORAGE_MAIN sm = S_BaseService._P_STORAGE_MAIN.GetModelByCellCode(sCellCode); return sm == null ? string.Empty : sm.STOCK_BARCODE; } public IList GetStorageList(string sStockBarcode) { return S_BaseService._P_STORAGE_LIST.GetListByStockBarcode(sStockBarcode); } public bool DeleteStorage(int iStorageID, int iStorageListID, string sOperator, out string sResult) { bool bResult = true; sResult = string.Empty; try { S_BaseService._P_Base_House.BeginTransaction(); STORAGE_MAIN sm = S_BaseService._P_STORAGE_MAIN.GetModel(iStorageID); IList lStorageList = S_BaseService._P_STORAGE_LIST.GetListByStorageID(iStorageID); if (sm == null || lStorageList == null || lStorageList.Count == 0) { S_BaseService._P_Base_House.RollBackTransaction(); sResult = "未找到库存"; return false; } if (S_BaseService._P_MANAGE_MAIN.GetModelByStockBarcode(sm.STOCK_BARCODE) != null) { S_BaseService._P_Base_House.RollBackTransaction(); sResult = string.Format("托盘条码 {0} 存在任务", sm.STOCK_BARCODE); return false; } string sCurrentTime = StringUtils.GetCurrentTime(); if (lStorageList.Count == 1) { S_BaseService._P_STORAGE_MAIN.Delete(iStorageID); S_BaseService._P_STORAGE_LIST.DeleteByStorageID(iStorageID); } else { S_BaseService._P_STORAGE_LIST.Delete(iStorageListID); sm.UPDATE_TIME = sCurrentTime; S_BaseService._P_STORAGE_MAIN.Update(sm); } S_BaseService._P_SYS_LOG.Add(new SYS_LOG() { OPERATOR = sOperator, LOG_TYPE = "库存删除", LOG_TIME = sCurrentTime, LOG_TEXT = string.Format("托盘条码 {0} 货位编码 {1} 操作人员 {2}", sm.STOCK_BARCODE, sm.CELL_CODE, sOperator) }); S_BaseService._P_Base_House.CommitTransaction(); } catch (Exception ex) { S_BaseService._P_Base_House.RollBackTransaction(); bResult = false; sResult = ex.Message; } return bResult; } public bool StorageUpdate(List lStorageList, string sOperator, out string sResult) { bool bResult = true; sResult = string.Empty; try { S_BaseService._P_Base_House.BeginTransaction(); string sCurrentTime = StringUtils.GetCurrentTime(); Dictionary dStorageBase = new Dictionary(); foreach (STORAGE_LIST sl in lStorageList) { STORAGE_LIST slBase = S_BaseService._P_STORAGE_LIST.GetModel(sl.STORAGE_LIST_ID); if (slBase != null) { slBase.BOX_BARCODE = sl.BOX_BARCODE; slBase.GOODS_BARCODE = sl.GOODS_BARCODE; slBase.STORAGE_PROPERTY_01 = sl.STORAGE_PROPERTY_01; slBase.STORAGE_PROPERTY_02 = sl.STORAGE_PROPERTY_02; slBase.STORAGE_PROPERTY_03 = sl.STORAGE_PROPERTY_03; slBase.STORAGE_PROPERTY_04 = sl.STORAGE_PROPERTY_04; slBase.STORAGE_PROPERTY_05 = sl.STORAGE_PROPERTY_05; slBase.STORAGE_PROPERTY_06 = sl.STORAGE_PROPERTY_06; slBase.STORAGE_PROPERTY_07 = sl.STORAGE_PROPERTY_07; slBase.STORAGE_PROPERTY_08 = sl.STORAGE_PROPERTY_08; slBase.STORAGE_PROPERTY_09 = sl.STORAGE_PROPERTY_09; slBase.STORAGE_PROPERTY_10 = sl.STORAGE_PROPERTY_10; slBase.STORAGE_PROPERTY_11 = sl.STORAGE_PROPERTY_11; slBase.STORAGE_PROPERTY_12 = sl.STORAGE_PROPERTY_12; slBase.STORAGE_LIST_QUANTITY = sl.STORAGE_LIST_QUANTITY; S_BaseService._P_STORAGE_LIST.Update(slBase); if (!dStorageBase.ContainsKey(slBase.STORAGE_ID)) { STORAGE_MAIN smBase = S_BaseService._P_STORAGE_MAIN.GetModel(slBase.STORAGE_ID); if (smBase != null) { dStorageBase.Add(slBase.STORAGE_ID, smBase); } } } } foreach (STORAGE_MAIN smBase in dStorageBase.Values) { this.UpdateStorageProperty(smBase); smBase.UPDATE_TIME = sCurrentTime; S_BaseService._P_STORAGE_MAIN.Update(smBase); S_BaseService._P_SYS_LOG.Add(new SYS_LOG() { LOG_TYPE = "库存更新", LOG_TEXT = $"托盘条码 {smBase.STOCK_BARCODE}", OPERATOR = sOperator, LOG_TIME = sCurrentTime, }); } S_BaseService._P_Base_House.CommitTransaction(); } catch (Exception ex) { S_BaseService._P_Base_House.RollBackTransaction(); sResult = ex.Message; bResult = false; } return bResult; } public void UpdateStorageProperty(STORAGE_MAIN sm, IList lStorageList = null) { if (lStorageList == null) { lStorageList = S_BaseService._P_STORAGE_LIST.GetListByStorageID(sm.STORAGE_ID); } if (lStorageList.Count == 0) { sm.GOODS_ID = SystemCode.GOODS_ID.MultiGoods; sm.STORAGE_PROPERTY = string.Empty; return; } sm.GOODS_ID = -1; foreach (STORAGE_LIST sl in lStorageList) { if (sm.GOODS_ID < 0) { sm.GOODS_ID = sl.GOODS_ID; sm.STORAGE_PROPERTY = sl.STORAGE_PROPERTY_01.ToString(); } else if (sm.GOODS_ID != sl.GOODS_ID) { sm.GOODS_ID = SystemCode.GOODS_ID.MultiGoods; sm.STORAGE_PROPERTY = string.Empty; return; } } } public bool EditStorage(STORAGE_MAIN sm, IList lStorageList, string sOperator, out string sResult) { bool bResult = true; sResult = string.Empty; //try //{ // S_BaseService._P_Base_House.BeginTransaction(); // if (!this.UpdateStorage(sm, lStorageList, false, sOperator, out sResult)) // { // S_BaseService._P_Base_House.RollBackTransaction(); // return false; // } // S_BaseService._P_Base_House.CommitTransaction(); //} //catch (Exception ex) //{ // S_BaseService._P_Base_House.RollBackTransaction(); // sResult = ex.Message; // bResult = false; //} return bResult; } public List GetStorageListERP(string sStockBarcode, out string sResult) { if (StringUtils.StockBarcodeValidate(sStockBarcode)) { return S_BaseService._S_ERPService.ERPGetBarCode(sStockBarcode, out sResult); } else { StockBarcodeData data = JsonConvert.DeserializeObject(sStockBarcode); if (data != null && StringUtils.StockBarcodeValidate(data.salverNumver)) { return S_BaseService._S_ERPService.ERPGetBarCode(sStockBarcode, out sResult); } else { sResult = $"物料条码 {sStockBarcode} 格式错误"; } } return null; } public bool StorageUpdateERP(List lGoodsBarcode, out string sResult) { bool bResult = true; sResult = string.Empty; try { string sSingleResult = string.Empty; List lStorageList = new List(); foreach (string sGoodsBarcode in lGoodsBarcode) { List lStorageListNew = S_BaseService._S_ERPService.ERPGetBarCode(sGoodsBarcode, out sSingleResult); if (lStorageListNew == null) { bResult = false; sResult += $"物料条码 {sGoodsBarcode} {sSingleResult}\n"; } else { foreach (STORAGE_LIST slNew in lStorageListNew) { STORAGE_LIST slOld = S_BaseService._P_STORAGE_LIST.GetModelByGoodsBarcode(slNew.GOODS_BARCODE); if (slOld == null) { bResult = false; sResult += $"物料条码 {sGoodsBarcode} 未找到库存\n"; continue; } if (slOld.STORAGE_PROPERTY_01 == slNew.STORAGE_PROPERTY_01 && slOld.STORAGE_PROPERTY_02 == slNew.STORAGE_PROPERTY_02 && slOld.STORAGE_PROPERTY_03 == slNew.STORAGE_PROPERTY_03 && slOld.STORAGE_PROPERTY_04 == slNew.STORAGE_PROPERTY_04 && slOld.STORAGE_PROPERTY_05 == slNew.STORAGE_PROPERTY_05 && slOld.STORAGE_PROPERTY_06 == slNew.STORAGE_PROPERTY_06 && slOld.STORAGE_PROPERTY_07 == slNew.STORAGE_PROPERTY_07 && slOld.STORAGE_PROPERTY_08 == slNew.STORAGE_PROPERTY_08 && slOld.STORAGE_PROPERTY_09 == slNew.STORAGE_PROPERTY_09 && slOld.STORAGE_PROPERTY_10 == slNew.STORAGE_PROPERTY_10 && slOld.STORAGE_PROPERTY_11 == slNew.STORAGE_PROPERTY_11 && slOld.STORAGE_PROPERTY_12 == slNew.STORAGE_PROPERTY_12) { sResult += $"物料条码 {sGoodsBarcode} 更新成功\n"; } else { slOld.STORAGE_PROPERTY_01 = slNew.STORAGE_PROPERTY_01; slOld.STORAGE_PROPERTY_02 = slNew.STORAGE_PROPERTY_02; slOld.STORAGE_PROPERTY_03 = slNew.STORAGE_PROPERTY_03; slOld.STORAGE_PROPERTY_04 = slNew.STORAGE_PROPERTY_04; slOld.STORAGE_PROPERTY_05 = slNew.STORAGE_PROPERTY_05; slOld.STORAGE_PROPERTY_06 = slNew.STORAGE_PROPERTY_06; slOld.STORAGE_PROPERTY_07 = slNew.STORAGE_PROPERTY_07; slOld.STORAGE_PROPERTY_08 = slNew.STORAGE_PROPERTY_08; slOld.STORAGE_PROPERTY_09 = slNew.STORAGE_PROPERTY_09; slOld.STORAGE_PROPERTY_10 = slNew.STORAGE_PROPERTY_10; slOld.STORAGE_PROPERTY_11 = slNew.STORAGE_PROPERTY_11; slOld.STORAGE_PROPERTY_12 = slNew.STORAGE_PROPERTY_12; lStorageList.Add(slOld); } } } } if (lStorageList.Count > 0) { try { S_BaseService._P_Base_House.BeginTransaction(); foreach (STORAGE_LIST sl in lStorageList) { S_BaseService._P_STORAGE_LIST.Update(sl); sResult += $"物料条码 {sl.GOODS_BARCODE} 更新成功\n"; } S_BaseService._P_Base_House.CommitTransaction(); } catch (Exception ex) { S_BaseService._P_Base_House.RollBackTransaction(); bResult = false; sResult += $"{ex.Message}\n"; } } } catch (Exception ex) { bResult = false; sResult += $"{ex.Message}\n"; } sResult.TrimEnd('\n'); return bResult; } } }