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
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;
|
|
}
|
|
}
|
|
}
|