巨石化纤
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

315 lines
14 KiB

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<STORAGE_LIST> 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<STORAGE_LIST> 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<STORAGE_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<int, STORAGE_MAIN> dStorageBase = new Dictionary<int, STORAGE_MAIN>();
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<STORAGE_LIST> 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<STORAGE_LIST> 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<STORAGE_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<StockBarcodeData>(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<string> lGoodsBarcode, out string sResult)
{
bool bResult = true;
sResult = string.Empty;
try
{
string sSingleResult = string.Empty;
List<STORAGE_LIST> lStorageList = new List<STORAGE_LIST>();
foreach (string sGoodsBarcode in lGoodsBarcode)
{
List<STORAGE_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;
}
}
}