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.
336 lines
11 KiB
336 lines
11 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.ServiceModel;
|
|
using System.Data;
|
|
using System.Collections;
|
|
using System.Linq;
|
|
|
|
using SiaSun.LMS.Model;
|
|
using SiaSun.LMS.Common;
|
|
using System.Reflection;
|
|
|
|
namespace SiaSun.LMS.Implement
|
|
{
|
|
[ServiceBehavior(IncludeExceptionDetailInFaults = true, InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple, MaxItemsInObjectGraph = int.MaxValue)]
|
|
public partial class S_ManageService : S_BaseService, SiaSun.LMS.Interface.I_ManageService
|
|
{
|
|
|
|
public S_ManageService()
|
|
{
|
|
}
|
|
|
|
public bool ManageCreate(string sManageType, string sMethodName, object[] lsObj, out string sResult)
|
|
{
|
|
sResult = string.Empty;
|
|
return false;
|
|
}
|
|
|
|
#region MANAGE_TYPE
|
|
|
|
/// <summary>任务类型-列表取得
|
|
/// 任务类型-列表取得
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public DataTable ManageTypeGetData()
|
|
{
|
|
return this.GetList("SELECT T.MANAGE_TYPE_ID,T.MANAGE_TYPE_CODE,T.MANAGE_TYPE_NAME,T.MANAGE_TYPE_INOUT,T.MANAGE_TYPE_GROUP FROM MANAGE_TYPE T");
|
|
}
|
|
|
|
|
|
public IList<SiaSun.LMS.Model.MANAGE_TYPE_PARAM> ManageTypeParamGetList(int MANAGE_TYPE_ID)
|
|
{
|
|
return this._P_MANAGE_TYPE_PARAM.GetList(MANAGE_TYPE_ID);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region MANAGE
|
|
|
|
/// <summary>任务-调用
|
|
/// 任务-调用
|
|
/// </summary>
|
|
/// <param name="sManageType">任务类型</param>
|
|
/// <param name="sMethod">方法</param>
|
|
/// <param name="lsObj">参数</param>
|
|
/// <param name="sResult">返回结果</param>
|
|
/// <returns></returns>
|
|
public bool InvokeManageService(string sManageType, string sMethodName, object[] lsObj, out string sResult)
|
|
{
|
|
bool bResult = true;
|
|
|
|
sResult = string.Empty;
|
|
|
|
string sClassFullName = string.Format("SiaSun.LMS.Implement.Manage.{0}", sManageType);
|
|
|
|
List<object> oPara = lsObj.ToList<object>();
|
|
|
|
oPara.Add(sResult);
|
|
|
|
Type t = this.GetType();
|
|
|
|
Assembly complierAssembly = t.Assembly;
|
|
|
|
object complierInstance = complierAssembly.CreateInstance(sClassFullName);
|
|
|
|
Type type = complierInstance.GetType();
|
|
|
|
object[] obj = oPara.ToArray();
|
|
|
|
object oResult = null;
|
|
|
|
//创建反射的所有公用方法
|
|
MethodInfo[] lsMethodInfo = type.GetMethods();
|
|
|
|
bool bFind = false;
|
|
|
|
foreach (MethodInfo methodInfo in lsMethodInfo)
|
|
{
|
|
if (methodInfo.Name.Equals(sMethodName) && oPara.Count.Equals(methodInfo.GetParameters().Length))
|
|
{
|
|
oResult = methodInfo.Invoke(complierInstance, obj);
|
|
|
|
bFind = true;
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (!bFind)
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("未找到{0}类型的{1}方法", sClassFullName, sMethodName);
|
|
}
|
|
else
|
|
{
|
|
bResult = Convert.ToBoolean(oResult);
|
|
|
|
sResult = obj[oPara.Count - 1].ToString();
|
|
}
|
|
|
|
//bResult = new SiaSun.LMS.Implement.Manage.ManageBase().Invoke(sClassFullName, sMethod, lsObj.ToList<object>(), out sResult);
|
|
|
|
return bResult;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CONTROL
|
|
|
|
/// <summary>作业-动作
|
|
/// 作业-动作
|
|
/// </summary>
|
|
/// <param name="WAREHOUSE">库房编码</param>
|
|
/// <param name="sResult"></param>
|
|
/// <returns></returns>
|
|
public void ControlTranslate(string WAREHOUSE)
|
|
{
|
|
string sResult = string.Empty;
|
|
|
|
IList<SiaSun.LMS.Model.FLOW_PARA> lsFLOW_PARA = this._S_FlowService.FlowGetParameters("FLOW_MANAGE");
|
|
|
|
string[] aFLOW_PARA = new string[lsFLOW_PARA.Count];
|
|
|
|
SiaSun.LMS.Model.MANAGE_ACTION_EXCUTE mt = new SiaSun.LMS.Model.MANAGE_ACTION_EXCUTE();
|
|
|
|
DataTable dt = this.GetList(string.Format("SELECT * FROM V_FLOW_CONTROL_ACTION ", WAREHOUSE));
|
|
|
|
foreach (DataRow dr in dt.Rows)
|
|
{
|
|
int i = 0;
|
|
|
|
foreach (SiaSun.LMS.Model.FLOW_PARA mFLOW_PARA in lsFLOW_PARA)
|
|
{
|
|
aFLOW_PARA[i] = dr[mFLOW_PARA.FLOW_PARA_CODE].ToString();
|
|
|
|
i++;
|
|
}
|
|
|
|
mt.MANAGE_ID = Convert.ToInt32(dr["MANAGE_ID"]);
|
|
|
|
mt.ACTION_EVENT = dr["FLOW_ACTION_EVENT"].ToString();
|
|
|
|
mt.ACTION_EVENT = string.Format(mt.ACTION_EVENT, aFLOW_PARA);
|
|
|
|
bool bResult = new SiaSun.LMS.Implement.S_FlowService().ManageEventExecute(mt, out sResult);
|
|
|
|
SiaSun.LMS.Model.IO_CONTROL mIO_CONTROL = this._P_IO_CONTROL.GetModel(Convert.ToInt32(dr["CONTROL_ID"]));
|
|
|
|
if (!bResult)
|
|
{
|
|
if (sResult.Contains("牺牲"))
|
|
{
|
|
this._log.Error(string.Format("处理任务异常: {0}", sResult));
|
|
|
|
continue;
|
|
}
|
|
|
|
SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModel(mt.MANAGE_ID);
|
|
|
|
mMANAGE_MAIN.MANAGE_STATUS = Enum.MANAGE_STATUS.Error.ToString();
|
|
|
|
mMANAGE_MAIN.MANAGE_REMARK = sResult + string.Format("【控制任务状态-{0}】", mIO_CONTROL.CONTROL_STATUS.ToString());
|
|
|
|
this._P_MANAGE_MAIN.Update(mMANAGE_MAIN);
|
|
}
|
|
|
|
if (bResult)
|
|
{
|
|
if (null != mIO_CONTROL)
|
|
{
|
|
mIO_CONTROL.PRE_CONTROL_STATUS = Convert.ToString(dr["CONTROL_STATUS"]);
|
|
|
|
this._P_IO_CONTROL.Update(mIO_CONTROL);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
public bool RecordCreate(int MANAGE_ID, out string sResult)
|
|
{
|
|
bool bResult = true;
|
|
|
|
sResult = string.Empty;
|
|
|
|
SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModel(MANAGE_ID);
|
|
|
|
if (null == mMANAGE_MAIN)
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("任务号{0}不存在", MANAGE_ID);
|
|
|
|
return bResult;
|
|
}
|
|
|
|
SiaSun.LMS.Model.RECORD_MAIN mRECORD_MAIN = new Model.RECORD_MAIN();
|
|
|
|
SiaSun.LMS.Model.RECORD_LIST mRECORD_LIST = null;
|
|
|
|
SiaSun.LMS.Model.RECORD_DETAIL mRECORD_DETAIL = null;
|
|
|
|
SiaSun.LMS.Model.PLAN_LIST mPLAN_LIST = null;
|
|
|
|
SiaSun.LMS.Model.PLAN_MAIN mPLAN_MAIN = this._P_PLAN_MAIN.GetModel(mMANAGE_MAIN.PLAN_ID);
|
|
|
|
SiaSun.LMS.Model.WH_CELL mSTART_WH_CELL = this._P_WH_CELL.GetModel(mMANAGE_MAIN.START_CELL_ID);
|
|
|
|
SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(mMANAGE_MAIN.END_CELL_ID);
|
|
|
|
try
|
|
{
|
|
if (mPLAN_MAIN != null)
|
|
{
|
|
mRECORD_MAIN.PLAN_CODE = mPLAN_MAIN.PLAN_CODE;
|
|
|
|
mRECORD_MAIN.PLAN_TYPE_CODE = mPLAN_MAIN.PLAN_TYPE_CODE;
|
|
}
|
|
|
|
mRECORD_MAIN.MANAGE_TYPE_CODE = mMANAGE_MAIN.MANAGE_TYPE_CODE;
|
|
|
|
mRECORD_MAIN.STOCK_BARCODE = mMANAGE_MAIN.STOCK_BARCODE;
|
|
|
|
if (mSTART_WH_CELL != null)
|
|
mRECORD_MAIN.START_POSITION = mSTART_WH_CELL.CELL_CODE;
|
|
|
|
if (mEND_WH_CELL != null)
|
|
mRECORD_MAIN.END_POSITION = mEND_WH_CELL.CELL_CODE;
|
|
|
|
mRECORD_MAIN.RECORD_OPERATOR = mMANAGE_MAIN.MANAGE_OPERATOR;
|
|
|
|
mRECORD_MAIN.MANAGE_BEGIN_TIME = mMANAGE_MAIN.MANAGE_BEGIN_TIME;
|
|
|
|
mRECORD_MAIN.MANAGE_END_TIME = mMANAGE_MAIN.MANAGE_END_TIME;
|
|
|
|
mRECORD_MAIN.RECORD_REMARK = mMANAGE_MAIN.MANAGE_REMARK;
|
|
|
|
this._P_RECORD_MAIN.Add(mRECORD_MAIN);
|
|
|
|
foreach (SiaSun.LMS.Model.MANAGE_LIST mMANAGE_LIST in this._P_MANAGE_LIST.GetListManageID(MANAGE_ID))
|
|
{
|
|
mRECORD_LIST = new Model.RECORD_LIST();
|
|
|
|
mRECORD_LIST.RECORD_ID = mRECORD_MAIN.RECORD_ID;
|
|
|
|
mRECORD_LIST.PLAN_LIST_ID = mMANAGE_LIST.PLAN_LIST_ID;
|
|
|
|
mRECORD_LIST.RECORD_LIST_QUANTITY = mMANAGE_LIST.MANAGE_LIST_QUANTITY;
|
|
|
|
mRECORD_LIST.GOODS_ID = mMANAGE_LIST.GOODS_ID;
|
|
|
|
mRECORD_LIST.RECORD_LIST_REMARK = mMANAGE_LIST.MANAGE_LIST_REMARK;
|
|
|
|
bResult = this._S_GoodsService.GoodsPropertySetValue(mMANAGE_LIST.GOODS_ID, mRECORD_LIST, mMANAGE_LIST, out sResult);
|
|
|
|
if (!bResult)
|
|
{
|
|
return bResult;
|
|
}
|
|
|
|
mRECORD_LIST.BOX_BARCODE = mMANAGE_LIST.BOX_BARCODE;
|
|
|
|
this._P_RECORD_LIST.Add(mRECORD_LIST);
|
|
|
|
//是否为空 是否有明细
|
|
|
|
if (mPLAN_MAIN != null)
|
|
{
|
|
mPLAN_LIST = this._P_PLAN_LIST.GetModel(mMANAGE_LIST.PLAN_LIST_ID);
|
|
|
|
if (mPLAN_LIST != null)
|
|
{
|
|
mPLAN_LIST.PLAN_LIST_FINISHED_QUANTITY += mMANAGE_LIST.MANAGE_LIST_QUANTITY;
|
|
|
|
this._P_PLAN_LIST.Update(mPLAN_LIST);
|
|
}
|
|
}
|
|
|
|
IList<SiaSun.LMS.Model.MANAGE_DETAIL> lsMANAGE_DETAIL = this._P_MANAGE_DETAIL.GetListManageListID(mMANAGE_LIST.MANAGE_LIST_ID);
|
|
|
|
foreach (SiaSun.LMS.Model.MANAGE_DETAIL mMANAGE_DETAIL in lsMANAGE_DETAIL)
|
|
{
|
|
mRECORD_DETAIL = new Model.RECORD_DETAIL();
|
|
|
|
mRECORD_DETAIL.RECORD_LIST_ID = mRECORD_LIST.RECORD_LIST_ID;
|
|
|
|
mRECORD_DETAIL.BOX_BARCODE = mMANAGE_DETAIL.BOX_BARCODE;
|
|
|
|
mRECORD_DETAIL.GOODS_BARCODE = mMANAGE_DETAIL.GOODS_BARCODE;
|
|
|
|
mRECORD_DETAIL.RECORD_DETAIL_REMARK = mMANAGE_DETAIL.MANAGE_DETAIL_REMARK;
|
|
|
|
this._P_RECORD_DETAIL.Add(mRECORD_DETAIL);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
this._P_IO_CONTROL.DeleteManageID(MANAGE_ID);
|
|
|
|
this._P_MANAGE_DETAIL.DeleteManageID(MANAGE_ID);
|
|
|
|
this._P_MANAGE_LIST.DeleteManageID(MANAGE_ID);
|
|
|
|
this._P_MANAGE_MAIN.Delete(MANAGE_ID);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = ex.Message;
|
|
}
|
|
|
|
return bResult;
|
|
}
|
|
|
|
}
|
|
}
|