大连融科 WMS
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.
 
 
 

472 lines
16 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using SiaSun.LMS.Model;
namespace SiaSun.LMS.Implement
{
public class ManageIn:ManageBase
{
/// <summary>
/// 生成计划或无计划入库任务
/// 调用界面 ManageBindIn_Plan,ManageBindIn
/// </summary>
/// <param name="mSYS_USER"></param>
/// <param name="PLAN_LIST_ID"></param>
/// <param name="STOCK_BARCODE"></param>
/// <param name="START_CELL_ID"></param>
/// <param name="END_CELL_ID"></param>
/// <param name="bTrans"></param>
/// <param name="bAutoSendControl"></param>
/// <param name="bComplete"></param>
/// <param name="sResult"></param>
/// <param name="MANAGE_ID"></param>
/// <returns></returns>
public bool ManageCreate(SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN,
List<SiaSun.LMS.Model.MANAGE_LIST> lsMANAGE_LIST,
bool bTrans,bool bCompleteFlag,bool AutoDownLoad, out string sResult)
{
bool bResult = true;
sResult = string.Empty;
try
{
this._P_Base_House.BeginTransaction(true);
#region 校验
#region 校验容器条码
//if (!string.IsNullOrEmpty(mMANAGE_MAIN.STOCK_BARCODE))
//{
// string STOCK_BARCODE = mMANAGE_MAIN.STOCK_BARCODE;
// if (STOCK_BARCODE.Trim().Length != 6)
// {
// bResult = false;
// sResult = string.Format("容器条码[{0}]不合法", STOCK_BARCODE);
// return bResult;
// }
// SiaSun.LMS.Model.GOODS_MAIN mGOODS_MAIN_CONTAINER = this._P_GOODS_MAIN.GetModel(STOCK_BARCODE.Substring(0, 1).ToUpper());
// if (mGOODS_MAIN_CONTAINER == null)
// {
// bResult = false;
// sResult = string.Format("容器条码[{0}]不合法", STOCK_BARCODE);
// return bResult;
// }
//}
#endregion
#region 校验容器库存
if (mMANAGE_MAIN.STOCK_BARCODE != string.Empty && this._S_StorageService.StorageCheck(mMANAGE_MAIN.STOCK_BARCODE, Enum.AREA_TYPE.LiKu.ToString(), out sResult))
{
bResult = false;
sResult = string.Format("托盘{0}已在立库区", mMANAGE_MAIN.STOCK_BARCODE);
return bResult;
}
#endregion
#region 校验托盘库存
SiaSun.LMS.Model.STORAGE_MAIN mSTORAGE_MAIN = this._P_STORAGE_MAIN.GetModelStockBarcode(mMANAGE_MAIN.STOCK_BARCODE);
if (null != mSTORAGE_MAIN)
{
IList<SiaSun.LMS.Model.STORAGE_LIST> lsSTORAGE_LIST = this._P_STORAGE_LIST.GetListStorageID(mSTORAGE_MAIN.STORAGE_ID);
if (lsSTORAGE_LIST[0].GOODS_ID == 909)
{
bResult = false;
sResult = string.Format("容器[{0}]已存在空托盘暂存区库存,请用暂存出库功能清空空托盘库存再组盘", mMANAGE_MAIN.STOCK_BARCODE);
return bResult;
}
}
#endregion
#endregion
if (AutoDownLoad)
{
bResult = base.ManageCreate(mMANAGE_MAIN, lsMANAGE_LIST, false, false, out sResult);
}
if (!bResult)
{
return bResult;
}
if (bCompleteFlag)
{
this._P_MANAGE_MAIN.Add(mMANAGE_MAIN);
foreach (Model.MANAGE_LIST item in lsMANAGE_LIST)
{
item.MANAGE_ID = mMANAGE_MAIN.MANAGE_ID;
this._P_MANAGE_LIST.Add(item);
}
bResult = this.ManageComplete(mMANAGE_MAIN.MANAGE_ID, false, out sResult);
}
if (!bResult)
{
return bResult;
}
}
catch (Exception ex)
{
bResult = false;
sResult = ex.Message;
this._log.Fatal(string.Format("调用方法{0}发生异常。", MethodBase.GetCurrentMethod().Name), ex);
}
finally
{
if (bResult)
{
this._P_Base_House.CommitTransaction(true);
}
else
{
this._P_Base_House.RollBackTransaction(true);
}
}
return bResult;
}
public bool ManageCreateMaterial(SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN,
List<SiaSun.LMS.Model.MANAGE_LIST> lsMANAGE_LIST,
bool bTrans, bool bCompleteFlag, bool AutoDownLoad, out string sResult)
{
bool bResult = true;
string ssResult = string.Empty;
sResult = string.Empty;
SiaSun.LMS.Common.Log log = new Common.Log();
try
{
this._P_Base_House.BeginTransaction(true);
#region 校验
#region 校验容器条码
if (!string.IsNullOrEmpty(mMANAGE_MAIN.STOCK_BARCODE))
{
string STOCK_BARCODE = mMANAGE_MAIN.STOCK_BARCODE;
if (STOCK_BARCODE.Trim().Length != 6)
{
bResult = false;
sResult = string.Format("容器条码[{0}]不合法", STOCK_BARCODE);
return bResult;
}
//SiaSun.LMS.Model.GOODS_MAIN mGOODS_MAIN_CONTAINER = this._P_GOODS_MAIN.GetModel(STOCK_BARCODE.Substring(0, 1).ToUpper());
//if (mGOODS_MAIN_CONTAINER == null)
//{
// bResult = false;
// sResult = string.Format("容器条码[{0}]不合法", STOCK_BARCODE);
// return bResult;
//}
}
#endregion
#region 校验容器库存
//LJC20240110
if (mMANAGE_MAIN.STOCK_BARCODE != string.Empty && this._S_StorageService.StorageCheck(mMANAGE_MAIN.STOCK_BARCODE, Enum.AREA_TYPE.XuNiKu.ToString(), out sResult))
{
bResult = false;
sResult = string.Format("托盘{0}已在虚拟库区", mMANAGE_MAIN.STOCK_BARCODE);
return bResult;
}
#endregion
#region 校验托盘库存
SiaSun.LMS.Model.STORAGE_MAIN mSTORAGE_MAIN = this._P_STORAGE_MAIN.GetModelStockBarcode(mMANAGE_MAIN.STOCK_BARCODE);
if (null != mSTORAGE_MAIN)
{
IList<SiaSun.LMS.Model.STORAGE_LIST> lsSTORAGE_LIST = this._P_STORAGE_LIST.GetListStorageID(mSTORAGE_MAIN.STORAGE_ID);
if (lsSTORAGE_LIST[0].GOODS_ID == 909)
{
bResult = false;
sResult = string.Format("容器[{0}]已存在空托盘暂存区库存,请用暂存出库功能清空空托盘库存再组盘", mMANAGE_MAIN.STOCK_BARCODE);
return bResult;
}
}
#endregion
#endregion
if (AutoDownLoad)
{
bResult = base.ManageCreate(mMANAGE_MAIN, lsMANAGE_LIST, false, false, out sResult);
}
if (!bResult)
{
return bResult;
}
if (bCompleteFlag)
{
this._P_MANAGE_MAIN.Add(mMANAGE_MAIN);
foreach (Model.MANAGE_LIST item in lsMANAGE_LIST)
{
item.MANAGE_ID = mMANAGE_MAIN.MANAGE_ID;
this._P_MANAGE_LIST.Add(item);
}
bResult = this.ManageComplete(mMANAGE_MAIN.MANAGE_ID, false, out sResult);
//新增接口生成库存后,插入新表数据,传明细和新表ID,出库再回传ID和明细
if (bResult)
{
// S_ERPService erp = new S_ERPService();
// MES_INTERFACE mMES_INTERFACE = new MES_INTERFACE();
// //流水号
// mMES_INTERFACE.STOCK_BARCODE = mMANAGE_MAIN.STOCK_BARCODE;
// mMES_INTERFACE.INOUT = "1";
// //批次号
// mMES_INTERFACE.BATCH = lsMANAGE_LIST[0].GOODS_PROPERTY1;
// // //型号不传
// mMES_INTERFACE.SPECIFICATION = "";
// mMES_INTERFACE.GOODS_CODE = "1";
// mMES_INTERFACE.GOODS_NAME = "1";
// //供应商
// mMES_INTERFACE.SUPPLY = lsMANAGE_LIST[0].GOODS_PROPERTY3;
// //零件号
// mMES_INTERFACE.PART_NO = lsMANAGE_LIST[0].GOODS_PROPERTY4;
// mMES_INTERFACE.UNIT = "1";
// mMES_INTERFACE.QUANTITY = lsMANAGE_LIST[0].MANAGE_LIST_QUANTITY;
// mMES_INTERFACE.UPDATE_TIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
// mMES_INTERFACE.OUT_TIME = "";
// mMES_INTERFACE.PRODUCT_TIME = "";
// string requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(mMES_INTERFACE);
// mMES_INTERFACE.WMS_INFO = requestJson;
// mMES_INTERFACE.MES_INFO = "";
// // 插入新表 调用接口
// // this._P_MES_INTERFACE.Add(mMES_INTERFACE);
// ////判断数据是否重复
// //Model.MES_INTERFACE tmes = this._P_MES_INTERFACE.GetModelStockbarcode(mMANAGE_MAIN.STOCK_BARCODE);
// //if (tmes!= null)
// //{
// // sResult = "入库上报时发现已经有该流水号接口数据,先处理数据再进行入库";
// // return false;
// //}
// //调用MES接口
// //向MES上报入库完成
// bResult = erp.HttpPost(requestJson, out sResult);
// //接口调用失败重发
// if (!bResult)
// {
// sResult = "ERRORMSG:接口调用失败,联系MES维护人员查看二维条码是否有问题:MES消息:" + sResult;
// log.SaveLog(sResult);
// //Model.MES_INTERFACE_RETRY mMES_INTERFACE_RETRY = new Model.MES_INTERFACE_RETRY();
// //mMES_INTERFACE_RETRY.BIZ_TYPE = "ManageIn";
// //mMES_INTERFACE_RETRY.WHO = "MESRetry";
// //mMES_INTERFACE_RETRY.MESSAGE = requestJson;
// //// mMES_INTERFACE_RETRY. = Common.StringUtil.GetDateTime();
// //this._P_MES_INTERFACE_RETRY.Add(mMES_INTERFACE_RETRY);
// }
// #region 日志
// Model.MES_INTERFACE_LOG mMES_INTERFACE_LOG = new Model.MES_INTERFACE_LOG();
// mMES_INTERFACE_LOG.INTERFACE = "ManageIn";
// mMES_INTERFACE_LOG.IN_MESSAGE = requestJson;
// mMES_INTERFACE_LOG.OUT_MESSAGE = sResult;
// mMES_INTERFACE_LOG.SENDER = "WMS";
// mMES_INTERFACE_LOG.RECEIVER = "MES";
// mMES_INTERFACE_LOG.TIME_STAMP = Common.StringUtil.GetDateTime();
// this._P_MES_INTERFACE_LOG.Add(mMES_INTERFACE_LOG);
// #endregion
}
}
if (!bResult)
{
return bResult;
}
}
catch (Exception ex)
{
bResult = false;
sResult = ex.Message;
this._log.Fatal(string.Format("调用方法{0}发生异常。", MethodBase.GetCurrentMethod().Name), ex);
}
finally
{
if (bResult)
{
this._P_Base_House.CommitTransaction(true);
}
else
{
this._P_Base_House.RollBackTransaction(true);
}
}
return bResult;
}
/// <summary>
/// 任务完成
/// </summary>
/// <param name="MANAGE_ID"></param>
/// <param name="bTrans"></param>
/// <param name="sResult"></param>
/// <returns></returns>
public new bool ManageComplete(int MANAGE_ID,bool bTrans,out string sResult)
{
bool bResult = true;
sResult = string.Empty;
try
{
this._P_Base_House.BeginTransaction(bTrans);
#region 校验
SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModel(MANAGE_ID);
bResult = null != mMANAGE_MAIN;
if (!bResult)
{
sResult = string.Format("管理任务索引[{0}]不存在", MANAGE_ID);
return bResult;
}
#endregion
#region 添加库存
bResult = this._S_StorageService.StorageCreate(MANAGE_ID,out sResult);
if (!bResult)
{
return bResult;
}
#endregion
#region 调用基类完成方法
bResult = base.ManageComplete(MANAGE_ID, false,out sResult);
if (!bResult)
{
return bResult;
}
#endregion
#region 删除任务信息
this._P_IO_CONTROL.DeleteManageID(mMANAGE_MAIN.MANAGE_ID);
this._P_MANAGE_DETAIL.DeleteManageID(mMANAGE_MAIN.MANAGE_ID);
this._P_MANAGE_LIST.DeleteManageID(mMANAGE_MAIN.MANAGE_ID);
this._P_MANAGE_MAIN.Delete(mMANAGE_MAIN.MANAGE_ID);
#endregion
}
catch (Exception ex)
{
bResult = false;
sResult = ex.Message;
this._log.Fatal(string.Format("调用方法{0}发生异常。", MethodBase.GetCurrentMethod().Name), ex);
}
finally
{
if (bResult)
{
this._P_Base_House.CommitTransaction(bTrans);
}
else
{
this._P_Base_House.RollBackTransaction(bTrans);
}
}
return bResult;
}
public bool ManageCreat_ERP(SiaSun.LMS.Model.ERP mERP,out string sResult)
{
bool bResult = true;
sResult = string.Empty;
try
{
this._P_Base_House.BeginTransaction(true);
if (!bResult)
{
return bResult;
}
}
catch (Exception ex)
{
bResult = false;
sResult = ex.Message;
this._log.Fatal(string.Format("调用方法{0}发生异常。", MethodBase.GetCurrentMethod().Name), ex);
}
finally
{
if (bResult)
{
this._P_Base_House.CommitTransaction(true);
}
else
{
this._P_Base_House.RollBackTransaction(true);
}
}
return bResult;
}
}
}