宜昌华友成品库管理软件
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.

740 lines
25 KiB

using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.ServiceModel;
using SiaSun.LMS.Model;
using System.Reflection;
namespace SiaSun.LMS.Implement
{
[ServiceBehavior(IncludeExceptionDetailInFaults = true,
InstanceContextMode = InstanceContextMode.Single,
ConcurrencyMode = ConcurrencyMode.Multiple,
MaxItemsInObjectGraph = int.MaxValue)]
public partial class S_PDAService : S_BaseService, SiaSun.LMS.Interface.I_PDAService
{
#region 操作方法
public DataTable GetList(string strSQL)
{
return base.GetList(strSQL);
}
public object ExecuteScalar(string strSQL)
{
return base.ExecuteScalar(strSQL);
}
public ObjectT GetModel(string statementName, object parameterObject)
{
return base.GetModel(statementName, parameterObject);
}
public bool USER_LOGIN(string USER_CODE, string USER_PASSWORD, out SiaSun.LMS.Model.SYS_USER USER)
{
return base._S_SystemService.USER_LOGIN(USER_CODE, USER_PASSWORD, out USER);
}
#endregion
#region 下达任务
/// <summary>
/// 手持设备【配盘】:仅配一种物料
/// </summary>
/// <param name="Opertator"></param>
/// <param name="CELL_ID"></param>
/// <param name="STORAGE_LIST_ID"></param>
/// <param name="GOODS_QUANTITY"></param>
/// <param name="STOCK_BARCODE"></param>
/// <param name="FULL_FLAG"></param>
/// <param name="sResult"></param>
/// <returns></returns>
public bool ManageCreateBindingPalm(string Opertator,
string GOODS_CODE,
decimal GOODS_QUANTITY,
string STOCK_BARCODE,
string FULL_FLAG,
out string sResult)
{
bool bResult = true;
sResult = string.Empty;
try
{
#region 生成MANAGE_MAIN
SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = new Model.MANAGE_MAIN();
mMANAGE_MAIN.PLAN_ID = 0;
mMANAGE_MAIN.PLAN_TYPE_CODE = string.Empty;
mMANAGE_MAIN.MANAGE_TYPE_CODE = SiaSun.LMS.Enum.MANAGE_TYPE.ManageInlocal.ToString();
mMANAGE_MAIN.MANAGE_STATUS = SiaSun.LMS.Enum.MANAGE_STATUS.WaitingSend.ToString();
mMANAGE_MAIN.STOCK_BARCODE = STOCK_BARCODE;
mMANAGE_MAIN.FULL_FLAG = FULL_FLAG;
mMANAGE_MAIN.CELL_MODEL = string.Empty;
mMANAGE_MAIN.START_CELL_ID = 0;
mMANAGE_MAIN.END_CELL_ID = 0;
mMANAGE_MAIN.MANAGE_OPERATOR = Opertator;
mMANAGE_MAIN.MANAGE_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetCurDateTimeString();
#endregion
#region 生成MANAGE_LIST
List<SiaSun.LMS.Model.MANAGE_LIST> lsMANAGE_LIST = new List<SiaSun.LMS.Model.MANAGE_LIST>();
SiaSun.LMS.Model.MANAGE_LIST mMANAGE_LIST = new Model.MANAGE_LIST();
//mMANAGE_LIST.GOODS_ID = mSTORAGE_LIST.GOODS_ID;
//bResult = this._S_GoodsService.GoodsPropertySetValue(mMANAGE_LIST.GOODS_ID, mMANAGE_LIST, mSTORAGE_LIST, out sResult);
//if (!bResult)
//{
// return bResult;
//}
DataTable DT = this.GetList(string.Format(@"SELECT *FROM GOODS_MAIN WHERE GOODS_ID = '{0}'", GOODS_CODE));
mMANAGE_LIST.PLAN_LIST_ID = 0;
//mMANAGE_LIST.STORAGE_LIST_ID = mSTORAGE_LIST.STORAGE_LIST_ID;
mMANAGE_LIST.MANAGE_LIST_QUANTITY = GOODS_QUANTITY;
mMANAGE_LIST.MANAGE_ID = mMANAGE_MAIN.MANAGE_ID;
mMANAGE_LIST.GOODS_ID = Convert.ToInt32(DT.Rows[0]["GOODS_ID"]);
#endregion
bResult =this.Invoke("ManageIn", "ManageCreate",
new object[] {
mMANAGE_MAIN,
lsMANAGE_LIST,
true,//事务
true,//检查库存
true,//是否完成
false//是否下达任务
}, out sResult);
if (!bResult)
{
sResult = string.Format("组盘任务下达失败\n{0}", sResult);
return bResult;
}
if (bResult)
{
sResult = string.Format("组盘成功\n{0}", sResult);
return bResult;
}
}
catch (Exception ex)
{
bResult = false;
sResult = ex.Message;
this._log.Fatal(string.Format("调用方法{0}发生异常", MethodBase.GetCurrentMethod().Name), ex);
}
return bResult;
}
public bool PalletIn(string Opertator,
string STOCK_BARCODE,
string CELL_CODE,
out string sResult)
{
sResult = string.Empty;
bool bResult = true;
MANAGE_MAIN mANAGE_MAIN = this._P_MANAGE_MAIN.GetModelStockBarcode(STOCK_BARCODE);
if (mANAGE_MAIN != null)
{
bResult = false;
sResult = string.Format("废料回库任务下达失败\n 托盘条码{0}存在管理任务", STOCK_BARCODE);
return bResult;
}
IO_CONTROL iO_CONTROL = this._P_IO_CONTROL.GetModel_BY_STOCK_BARCODE(STOCK_BARCODE);
if (iO_CONTROL != null)
{
bResult = false;
sResult = string.Format("废料回库任务下达失败\n 托盘条码{0}存在控制任务", STOCK_BARCODE);
return bResult;
}
STORAGE_MAIN sTORAGE_MAIN = this._P_STORAGE_MAIN.GetModelStockBarcode(STOCK_BARCODE);
if (sTORAGE_MAIN != null)
{
bResult = false;
sResult = string.Format("废料回库任务下达失败\n 托盘条码{0}存在库存", STOCK_BARCODE);
return bResult;
}
iO_CONTROL = new IO_CONTROL()
{
STOCK_BARCODE = STOCK_BARCODE,
START_DEVICE_CODE = CELL_CODE,
END_DEVICE_CODE = "23",
MANAGE_ID = 0,
CONTROL_STATUS = 0,
CONTROL_TASK_TYPE = 4,
CONTROL_TASK_LEVEL = "0",
CONTROL_BEGIN_TIME = Common.StringUtil.GetDateTime()
};
this._P_IO_CONTROL.Add(iO_CONTROL);
sResult = string.Format("组盘成功\n{0}", sResult);
return bResult;
return bResult;
}
/// <summary>
/// 原材料废料回库
/// </summary>
/// <param name="Opertator"></param>
/// <param name="STOCK_BARCODE"></param>
/// <param name="CELL_CODE"></param>
/// <param name="sResult"></param>
/// <returns></returns>
public bool ManageCreateWasteIn(string Opertator,
string STOCK_BARCODE,
string CELL_CODE,
out string sResult)
{
bool bResult = true;
sResult = string.Empty;
try
{
MANAGE_MAIN mANAGE_MAIN = this._P_MANAGE_MAIN.GetModelStockBarcode(STOCK_BARCODE);
if (mANAGE_MAIN != null)
{
bResult = false;
sResult = string.Format("废料回库任务下达失败\n 托盘条码{0}存在管理任务", STOCK_BARCODE);
return bResult;
}
IO_CONTROL iO_CONTROL = this._P_IO_CONTROL.GetModel_BY_STOCK_BARCODE(STOCK_BARCODE);
if (iO_CONTROL != null)
{
bResult = false;
sResult = string.Format("废料回库任务下达失败\n 托盘条码{0}存在控制任务", STOCK_BARCODE);
return bResult;
}
STORAGE_MAIN sTORAGE_MAIN = this._P_STORAGE_MAIN.GetModelStockBarcode(STOCK_BARCODE);
if (sTORAGE_MAIN != null)
{
bResult = false;
sResult = string.Format("废料回库任务下达失败\n 托盘条码{0}存在库存", STOCK_BARCODE);
return bResult;
}
#region 生成MANAGE_MAIN
SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = new Model.MANAGE_MAIN();
mMANAGE_MAIN.PLAN_ID = 0;
mMANAGE_MAIN.PLAN_TYPE_CODE = string.Empty;
mMANAGE_MAIN.MANAGE_TYPE_CODE = SiaSun.LMS.Enum.MANAGE_TYPE.ManageInWaste.ToString();
mMANAGE_MAIN.MANAGE_STATUS = SiaSun.LMS.Enum.MANAGE_STATUS.WaitingSend.ToString();
mMANAGE_MAIN.STOCK_BARCODE = STOCK_BARCODE;
mMANAGE_MAIN.CELL_MODEL = "1";
mMANAGE_MAIN.START_CELL_ID = 0;
mMANAGE_MAIN.END_CELL_ID = 0;
mMANAGE_MAIN.MANAGE_OPERATOR = Opertator;
mMANAGE_MAIN.MANAGE_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetDateTime();
#endregion
#region 生成MANAGE_LIST
List<SiaSun.LMS.Model.MANAGE_LIST> lsMANAGE_LIST = new List<SiaSun.LMS.Model.MANAGE_LIST>();
SiaSun.LMS.Model.MANAGE_LIST mMANAGE_LIST = new Model.MANAGE_LIST();
DataTable DT = this.GetList(string.Format(@"SELECT *FROM GOODS_MAIN WHERE GOODS_CODE = 'MFLSJX'"));
mMANAGE_LIST.PLAN_LIST_ID = 0;
//mMANAGE_LIST.STORAGE_LIST_ID = mSTORAGE_LIST.STORAGE_LIST_ID;
mMANAGE_LIST.MANAGE_LIST_QUANTITY = 1;
mMANAGE_LIST.MANAGE_ID = mMANAGE_MAIN.MANAGE_ID;
mMANAGE_LIST.GOODS_PROPERTY1 = "废料";
mMANAGE_LIST.GOODS_ID = Convert.ToInt32(DT.Rows[0]["GOODS_ID"]);
#endregion
bResult = this.Invoke("ManageIn", "ManageCreate",
new object[] {
mMANAGE_MAIN,
lsMANAGE_LIST,
true,//事务
true,//检查库存
true,//是否完成
false//是否下达任务
}, out sResult);
if (!bResult)
{
sResult = string.Format("组盘任务下达失败\n{0}", sResult);
return bResult;
}
if (bResult)
{
iO_CONTROL = new IO_CONTROL()
{
STOCK_BARCODE = STOCK_BARCODE,
START_DEVICE_CODE = CELL_CODE,
END_DEVICE_CODE = "24",
MANAGE_ID = 0,
CONTROL_STATUS = 0,
CONTROL_TASK_TYPE = 4,
CONTROL_TASK_LEVEL = "0",
CONTROL_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetDate().ToString()
};
this._P_IO_CONTROL.Add(iO_CONTROL);
sResult = string.Format("组盘成功\n{0}", sResult);
return bResult;
}
}
catch (Exception ex)
{
bResult = false;
sResult = ex.Message;
this._log.Fatal(string.Format("调用方法{0}发生异常", MethodBase.GetCurrentMethod().Name), ex);
}
return bResult;
}
/// <summary>
/// 成品生产入库
/// </summary>
/// <param name="Opertator"></param>
/// <param name="STOCK_BARCODE"></param>
/// <param name="CELL_CODE"></param>
/// <param name="goods_code"></param>
/// <param name="sResult"></param>
/// <returns></returns>
public bool ManageCreateIn(string Opertator,
string STOCK_BARCODE,
string CELL_CODE,
string goods_code,
out string sResult)
{
bool bResult = true;
sResult = string.Empty;
try
{
STORAGE_MAIN sTORAGE_MAIN = this._P_STORAGE_MAIN.GetModelStockBarcode(STOCK_BARCODE);
if (sTORAGE_MAIN != null)
{
bResult = false;
sResult = string.Format("已存在库存");
return bResult;
}
IO_CONTROL iO_CONTROL = this._P_IO_CONTROL.GetModel_BY_STOCK_BARCODE(STOCK_BARCODE);
if (iO_CONTROL != null)
{
bResult = false;
sResult = string.Format("已存在任务");
return bResult;
}
MANAGE_MAIN mANAGE_MAIN = this._P_MANAGE_MAIN.GetModelStockBarcode(STOCK_BARCODE);
if (mANAGE_MAIN != null)
{
bResult = false;
sResult = string.Format("已存在任务");
return bResult;
}
#region 生成MANAGE_MAIN
SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = new Model.MANAGE_MAIN();
mMANAGE_MAIN.PLAN_ID = 0;
mMANAGE_MAIN.PLAN_TYPE_CODE = string.Empty;
mMANAGE_MAIN.MANAGE_TYPE_CODE = SiaSun.LMS.Enum.MANAGE_TYPE.ManageInReturn.ToString();
mMANAGE_MAIN.MANAGE_STATUS = SiaSun.LMS.Enum.MANAGE_STATUS.WaitingSend.ToString();
mMANAGE_MAIN.STOCK_BARCODE = STOCK_BARCODE;
mMANAGE_MAIN.CELL_MODEL = "low";
mMANAGE_MAIN.START_CELL_ID = 0;
mMANAGE_MAIN.END_CELL_ID = 0;
mMANAGE_MAIN.MANAGE_OPERATOR = Opertator;
mMANAGE_MAIN.MANAGE_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetDateTime();
#endregion
#region 生成MANAGE_LIST
List<SiaSun.LMS.Model.MANAGE_LIST> lsMANAGE_LIST = new List<SiaSun.LMS.Model.MANAGE_LIST>();
SiaSun.LMS.Model.MANAGE_LIST mMANAGE_LIST = new Model.MANAGE_LIST();
DataTable DT = this.GetList(string.Format(@"SELECT *FROM GOODS_MAIN WHERE GOODS_CODE = '{0}'", goods_code.Split('-')[0]));
mMANAGE_LIST.PLAN_LIST_ID = 0;
//mMANAGE_LIST.STORAGE_LIST_ID = mSTORAGE_LIST.STORAGE_LIST_ID;
mMANAGE_LIST.MANAGE_LIST_QUANTITY = 1;
mMANAGE_LIST.MANAGE_ID = mMANAGE_MAIN.MANAGE_ID;
mMANAGE_LIST.GOODS_ID = Convert.ToInt32(DT.Rows[0]["GOODS_ID"]);
//批次
mMANAGE_LIST.GOODS_PROPERTY1 = goods_code.Split('-')[2];
//日期/供应商
mMANAGE_LIST.GOODS_PROPERTY2 = goods_code.Split('-')[1];
//包数
mMANAGE_LIST.GOODS_PROPERTY3 = goods_code.Split('-')[3];
mMANAGE_LIST.STORAGE_LIST_ID = 0;
lsMANAGE_LIST.Add(mMANAGE_LIST);
#endregion
bResult = this.Invoke("ManageIn", "ManageCreate",
new object[] {
mMANAGE_MAIN,
lsMANAGE_LIST,
true,//事务
true,//检查库存
true,//是否完成
false//是否下达任务
}, out sResult);
if (!bResult)
{
sResult = string.Format("组盘任务下达失败\n{0}", sResult);
return bResult;
}
if (bResult)
{
IO_CONTROL iO_CONTROL1 = new IO_CONTROL()
{
STOCK_BARCODE = STOCK_BARCODE,
START_DEVICE_CODE = CELL_CODE,
END_DEVICE_CODE = "32053",
MANAGE_ID = 0,
CONTROL_STATUS = 0,
CONTROL_TASK_TYPE = 4,
CONTROL_TASK_LEVEL = "0",
CONTROL_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetDate().ToString()
};
this._P_IO_CONTROL.Add(iO_CONTROL1);
sResult = string.Format("组盘成功\n{0}", sResult);
return bResult;
}
}
catch (Exception ex)
{
bResult = false;
sResult = ex.Message;
this._log.Fatal(string.Format("调用方法{0}发生异常", MethodBase.GetCurrentMethod().Name), ex);
}
return bResult;
}
/// <summary>
/// 容器下架
/// </summary>
/// <param name="GOODS_ID"></param>
/// <param name="MANAGE_LIST_QUANTITY"></param>
/// <param name="END_CELL_CODE"></param>
/// <param name="Opertator"></param>
/// <param name="sResult"></param>
/// <returns></returns>
public bool ManageStockOut(int GOODS_ID, decimal MANAGE_LIST_QUANTITY, string END_CELL_CODE, string Opertator, out string sResult)
{
bool bResult = true;
sResult = string.Empty;
try
{
#region 校验终止站台
bResult = !string.IsNullOrEmpty(END_CELL_CODE);
if (!bResult)
{
bResult = false;
sResult = string.Format("请输入下架站台编码");
return bResult;
}
Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_CODE);
if (mEND_WH_CELL == null)
{
bResult = false;
sResult = string.Format("下架站台编码不存在");
return bResult;
}
int END_CELL_ID = mEND_WH_CELL.CELL_ID;
#endregion
if (MANAGE_LIST_QUANTITY < 1)
{
bResult = false;
sResult = string.Format("请输入大于0的数量");
return bResult;
}
bResult = new StockOut().ManageCreate(Opertator, Enum.MANAGE_TYPE.StockOut.ToString(), GOODS_ID, string.Empty, MANAGE_LIST_QUANTITY, END_CELL_ID, true, true, out sResult);
}
catch (Exception ex)
{
bResult = false;
sResult = ex.Message;
this._log.Fatal(string.Format("调用方法{0}发生异常。", MethodBase.GetCurrentMethod().Name), ex);
}
return bResult;
}
/// <summary>
/// 拣选出库
/// </summary>
/// <param name="Opertator"></param>
/// <param name="STORAGE_LIST_ID"></param>
/// <param name="PLAN_LIST_ID"></param>
/// <param name="PLAN_TYPE_CODE"></param>
/// <param name="GOODS_QUANTITY"></param>
/// <param name="sResult"></param>
/// <returns></returns>
public bool ManageConfirm(string STOCK_BARCODE,
int manage_out_num,
string Opertator,
out string sResult)
{
bool bResult = true;
sResult = string.Empty;
//SiaSun.LMS.Model.PLAN_MAIN mPLAN_MAIN = null;
try
{
#region 校验
#region 校验容器条码格式
bResult = !string.IsNullOrEmpty(STOCK_BARCODE.ToUpper());
if (!bResult)
{
bResult = false;
sResult = string.Format("请输入配盘容器条码");
return bResult;
}
#endregion
#region 原库存列表是否存在
DataTable storage_stock_barcode = this.GetList(string.Format(@"SELECT *FROM V_STORAGE_LIST WHERE STOCK_BARCODE = '{0}'
AND AREA_TYPE = 'XuNiKu'", STOCK_BARCODE));
if (storage_stock_barcode.Rows.Count == 0)
{
bResult = false;
sResult = string.Format("所选库存条码{0}不再暂存区", STOCK_BARCODE);
return bResult;
}
#endregion
#endregion
#region 生成MANAGE_MAIN
SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = new Model.MANAGE_MAIN();
mMANAGE_MAIN.PLAN_ID = 0;
mMANAGE_MAIN.PLAN_TYPE_CODE = string.Empty;
mMANAGE_MAIN.MANAGE_TYPE_CODE = SiaSun.LMS.Enum.MANAGE_TYPE.ManageOut.ToString();
mMANAGE_MAIN.MANAGE_STATUS = SiaSun.LMS.Enum.MANAGE_STATUS.WaitingSend.ToString();
mMANAGE_MAIN.STOCK_BARCODE = STOCK_BARCODE;
//mMANAGE_MAIN.FULL_FLAG = FULL_FLAG;
mMANAGE_MAIN.CELL_MODEL = string.Empty;
mMANAGE_MAIN.START_CELL_ID = 0;
mMANAGE_MAIN.END_CELL_ID = 0;
mMANAGE_MAIN.MANAGE_OPERATOR = Opertator;
mMANAGE_MAIN.MANAGE_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetCurDateTimeString();
//this._P_MANAGE_MAIN.Add(mMANAGE_MAIN);
#endregion
#region 生成MANAGE_LIST
List<SiaSun.LMS.Model.MANAGE_LIST> lsMANAGE_LIST = new List<SiaSun.LMS.Model.MANAGE_LIST>();
SiaSun.LMS.Model.MANAGE_LIST mMANAGE_LIST = new Model.MANAGE_LIST();
DataTable MANAGE_LIST_OUT = this.GetList(string.Format(@"SELECT *FROM V_STORAGE_LIST WHERE STOCK_BARCODE = '{0}'", STOCK_BARCODE));
mMANAGE_LIST.PLAN_LIST_ID = 0;
mMANAGE_LIST.STORAGE_LIST_ID = Convert.ToInt32(MANAGE_LIST_OUT.Rows[0]["STORAGE_LIST_ID"]);
mMANAGE_LIST.MANAGE_LIST_QUANTITY = manage_out_num;
mMANAGE_LIST.MANAGE_ID = mMANAGE_MAIN.MANAGE_ID;
mMANAGE_LIST.GOODS_ID = Convert.ToInt32(MANAGE_LIST_OUT.Rows[0]["GOODS_ID"]);
//mMANAGE_LIST.MANAGE_LIST_REMARK = mSTORAGE_LIST.STORAGE_LIST_REMARK;
lsMANAGE_LIST.Add(mMANAGE_LIST);
#endregion
bResult = new ManageOut().ManageCreate(mMANAGE_MAIN, lsMANAGE_LIST, true, true, true, out sResult);
if (!bResult)
{
sResult = string.Format("拣选出库失败\n{0}", sResult);
return bResult;
}
if (bResult)
{
sResult = string.Format("拣选出库成功\n{0}", sResult);
return bResult;
}
}
catch (Exception ex)
{
bResult = false;
sResult = ex.Message;
this._log.Fatal(string.Format("调用方法{0}发生异常", MethodBase.GetCurrentMethod().Name), ex);
}
return bResult;
}
/// <summary>
/// 此方法用于原料库计划出库手持出库确认,任务状态必须是Complete
/// </summary>
/// <param name="STOCK_BARCODE"></param>
/// <param name="sResult"></param>
/// <returns></returns>
public bool ManagePlanOutConfirm(string STOCK_BARCODE,out string sResult)
{
bool bResult = true;
sResult = string.Empty;
Model.MANAGE_MAIN mANAGE_MAIN = this._P_MANAGE_MAIN.GetModelStockBarcode(STOCK_BARCODE);
if (mANAGE_MAIN == null || !mANAGE_MAIN.MANAGE_STATUS.Equals("Complete"))
{
sResult = string.Format(@"托盘条码:{0}不存在已完成的管理任务",STOCK_BARCODE);
bResult = false;
return bResult;
}
IO_CONTROL iO_CONTROL = _P_IO_CONTROL.GetModel_BY_STOCK_BARCODE(STOCK_BARCODE);
if (iO_CONTROL == null || iO_CONTROL.CONTROL_STATUS != 999)
{
sResult = string.Format(@"托盘条码:{0}不存在已完成的控制任务", STOCK_BARCODE);
bResult = false;
return bResult;
}
MANAGE_TYPE mMANAGE_TYPE = _P_MANAGE_TYPE.GetModelManageTypeCode(mANAGE_MAIN.MANAGE_TYPE_CODE);
bResult = this.Invoke(mMANAGE_TYPE.MANAGE_TYPE_CLASS, "ManageComplete", new object[] { mANAGE_MAIN.MANAGE_ID, true }, out sResult);
if (!bResult)
{
sResult = string.Format("出库确认失败!{0}", sResult);
return bResult;
}
else
{
sResult = string.Format("出库确认成功");
return bResult;
}
}
#endregion
}
}