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

321 lines
12 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace SiaSun.LMS.Implement
{
public class ControlBase:ManageBase
{
public static string sendLedMes = string.Empty;
/// <summary>作业-动作
/// 作业-动作
/// </summary>
/// <param name="WAREHOUSE">库房编码</param>
/// <param name="sResult"></param>
/// <returns></returns>
public void ControlTranslate(out string sResult)
{
sResult = string.Empty;
IList<SiaSun.LMS.Model.FLOW_PARA> lsFLOW_PARA = this._S_FlowService.FlowGetParameters("FLOW_CONTROL");
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 "));
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 = this._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)
{
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 && null != mIO_CONTROL)
{
mIO_CONTROL.PRE_CONTROL_STATUS = Convert.ToString(dr["CONTROL_STATUS"]);
this._P_IO_CONTROL.Update(mIO_CONTROL);
}
}
}
/// <summary>任务-申请
/// 任务-申请
/// </summary>
/// <param name="CONTROL_APPLY_ID">申请编号</param>
/// <param name="MANAGE_ID">任务编号</param>
/// <param name="sResult">返回结果</param>
/// <returns></returns>
public bool ControlApplyTask( out string sResult)
{
bool bResult = true;
sResult = string.Empty;
string mesout = string.Empty;
IList<SiaSun.LMS.Model.IO_CONTROL_APPLY> lsIO_CONTROL_APPLY = this._P_IO_CONTROL_APPLY.GetList(0);
foreach (SiaSun.LMS.Model.IO_CONTROL_APPLY mIO_CONTROL_APPLY in lsIO_CONTROL_APPLY)
{
try
{
SiaSun.LMS.Model.WH_CELL mSTART_CELL = this._P_WH_CELL.GetModel(mIO_CONTROL_APPLY.DEVICE_CODE.TrimEnd());
if (null == mSTART_CELL)
{
bResult = false;
sResult = "托盘条码->" + mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd() + "申请入库未提供起始站台";
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "12011",sResult);
return bResult;
}
if (mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd() == string.Empty|| mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd() =="111111")
{
bResult = false;
sResult = "申请入库未提供托盘条码";
this._S_LEDService.AddLedLineTxt("12011", 0, "未扫描到托盘条码 " + mIO_CONTROL_APPLY.CONTROL_APPLY_ID.ToString(), out mesout);
sendLedMes = "未扫描到托盘条码 " + mIO_CONTROL_APPLY.CONTROL_APPLY_ID.ToString() + sendLedMes;
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "12011",sResult);
return bResult;
}
switch (mIO_CONTROL_APPLY.CONTROL_APPLY_TYPE.TrimEnd())
{
case "1": //申请入库
SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModelStockBarcode("%" + mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd() + "%");
if (mMANAGE_MAIN != null)
{
mMANAGE_MAIN.CELL_MODEL = mIO_CONTROL_APPLY.CONTROL_APPLY_REMARK.TrimEnd();
this._P_MANAGE_MAIN.Update(mMANAGE_MAIN);
bResult = this.ManageDownLoad(mMANAGE_MAIN.MANAGE_ID, mIO_CONTROL_APPLY.DEVICE_CODE.TrimEnd(), true, out sResult);
}
else
{
//上架
if (this._S_StorageService.StorageCheck(mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd(), Enum.AREA_TYPE.XuNiKu.ToString(), out sResult))
{
mMANAGE_MAIN = new Model.MANAGE_MAIN();
mMANAGE_MAIN.MANAGE_TYPE_CODE = "ManageUp";
mMANAGE_MAIN.STOCK_BARCODE = mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd();
mMANAGE_MAIN.CELL_MODEL = mIO_CONTROL_APPLY.CONTROL_APPLY_REMARK.TrimEnd();
mMANAGE_MAIN.START_CELL_ID = mSTART_CELL.CELL_ID;
mMANAGE_MAIN.END_CELL_ID = 0;
mMANAGE_MAIN.MANAGE_OPERATOR = "扫码申请";
mMANAGE_MAIN.MANAGE_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetDateTime();
mMANAGE_MAIN.MANAGE_STATUS = SiaSun.LMS.Enum.MANAGE_STATUS.WaitingSend.ToString();
mMANAGE_MAIN.MANAGE_LEVEL = string.Empty;
mMANAGE_MAIN.MANAGE_REMARK = string.Empty;
bResult = new ManageUp().ManageCreate(mMANAGE_MAIN, true, true, false, out sResult);
}
else//空托盘入库
{
//mMANAGE_MAIN = new Model.MANAGE_MAIN();
//mMANAGE_MAIN.MANAGE_TYPE_CODE = "StockIn";
//mMANAGE_MAIN.STOCK_BARCODE = mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd();
//mMANAGE_MAIN.CELL_MODEL = mIO_CONTROL_APPLY.CONTROL_APPLY_REMARK.TrimEnd();
//mMANAGE_MAIN.START_CELL_ID = mSTART_CELL.CELL_ID;
//mMANAGE_MAIN.END_CELL_ID = 0;
//mMANAGE_MAIN.MANAGE_OPERATOR = "扫码申请";
//mMANAGE_MAIN.MANAGE_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetDateTime();
//mMANAGE_MAIN.MANAGE_STATUS = SiaSun.LMS.Enum.MANAGE_STATUS.WaitingSend.ToString();
//mMANAGE_MAIN.MANAGE_LEVEL = string.Empty;
//mMANAGE_MAIN.MANAGE_REMARK = string.Empty;
//List<Model.MANAGE_LIST> listMANAGE_LIST = new List<Model.MANAGE_LIST>();
//Model.MANAGE_LIST mMANAGE_LIST = new Model.MANAGE_LIST();
//if (Convert.ToInt32(mMANAGE_MAIN.STOCK_BARCODE) < 2200)
// mMANAGE_LIST.GOODS_ID = 1;
//else
// mMANAGE_LIST.GOODS_ID = -1;
//mMANAGE_LIST.MANAGE_LIST_QUANTITY = 1;
//listMANAGE_LIST.Add(mMANAGE_LIST);
//bResult = new ManageIn().ManageCreate(mMANAGE_MAIN, listMANAGE_LIST, true, true, false, true, out sResult);
bResult = false;
sResult = "未找到托盘信息";
this._S_LEDService.AddLedLineTxt("12011", 0, "未找到托盘信息 " + mIO_CONTROL_APPLY.CONTROL_APPLY_ID.ToString(), out mesout);
sendLedMes = "未找到托盘信息 " + mIO_CONTROL_APPLY.CONTROL_APPLY_ID.ToString() + sendLedMes;
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "12011", sResult);
return bResult;
}
}
break;
case "2": //申请改道 主要用于重复入库异常
break;
}
if (!bResult)
{
// 如果有异常口,下达到异常口的控制任务
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "12011",sResult);
continue;
}
else
{
if( this._S_LEDService.AddLedLineTxt("12011", 0, sendLedMes, out mesout))
sendLedMes = string.Empty;
this._P_IO_CONTROL_APPLY.Delete(mIO_CONTROL_APPLY.CONTROL_APPLY_ID);
}
}
catch (Exception ex)
{
}
}
return bResult;
}
void CreateApplyExceptionTask(Model.IO_CONTROL_APPLY mIO_CONTROL_APPLY,string ExceptionStation,string ExceptionMessage)
{
try
{
this._P_Base_House.BeginTransaction();
Model.IO_CONTROL_APPLY_HIS mIO_CONTROL_APPLY_HIS = new Model.IO_CONTROL_APPLY_HIS();
mIO_CONTROL_APPLY_HIS.CONTROL_ID = mIO_CONTROL_APPLY.CONTROL_ID;
mIO_CONTROL_APPLY_HIS.CONTROL_APPLY_TYPE = mIO_CONTROL_APPLY.CONTROL_APPLY_TYPE;
mIO_CONTROL_APPLY_HIS.WAREHOUSE_CODE = mIO_CONTROL_APPLY.WAREHOUSE_CODE;
mIO_CONTROL_APPLY_HIS.DEVICE_CODE = mIO_CONTROL_APPLY.DEVICE_CODE;
mIO_CONTROL_APPLY_HIS.STOCK_BARCODE = mIO_CONTROL_APPLY.STOCK_BARCODE;
mIO_CONTROL_APPLY_HIS.APPLY_TASK_STATUS = mIO_CONTROL_APPLY.APPLY_TASK_STATUS;
mIO_CONTROL_APPLY_HIS.CREATE_TIME = mIO_CONTROL_APPLY.CREATE_TIME;
mIO_CONTROL_APPLY_HIS.CONTROL_APPLY_REMARK = mIO_CONTROL_APPLY.CONTROL_APPLY_REMARK;
mIO_CONTROL_APPLY_HIS.MANAGE_ERROR_TEXT = ExceptionMessage;
this._P_IO_CONTROL_APPLY_HIS.Add(mIO_CONTROL_APPLY_HIS);
this._P_IO_CONTROL_APPLY.Delete(mIO_CONTROL_APPLY.CONTROL_APPLY_ID);
SiaSun.LMS.Model.IO_CONTROL mIO_CONTROL = new SiaSun.LMS.Model.IO_CONTROL();
mIO_CONTROL.RELATIVE_CONTROL_ID = -1;
mIO_CONTROL.MANAGE_ID = 0;
mIO_CONTROL.STOCK_BARCODE = mIO_CONTROL_APPLY.STOCK_BARCODE;
//mIO_CONTROL.CELL_GROUP = mEND_CELL.CELL_GROUP;
mIO_CONTROL.CONTROL_TASK_LEVEL = "0";
mIO_CONTROL.PRE_CONTROL_STATUS = string.Empty;
mIO_CONTROL.CONTROL_TASK_TYPE = 3;
mIO_CONTROL.START_DEVICE_CODE = mIO_CONTROL_APPLY.DEVICE_CODE;
mIO_CONTROL.END_DEVICE_CODE = ExceptionStation;
mIO_CONTROL.CONTROL_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetDateTime();
//单叉状态25 双叉状态0 string.IsNullOrEmpty(mMANAGE_MAIN.MANAGE_FORK) || !mMANAGE_MAIN.MANAGE_FORK.Equals("1") ? 0 : 25;
mIO_CONTROL.CONTROL_STATUS = 0;
mIO_CONTROL.START_WAREHOUSE_CODE = "1";
mIO_CONTROL.END_WAREHOUSE_CODE = "1";
this._P_IO_CONTROL.Add(mIO_CONTROL);
this._P_Base_House.CommitTransaction();
}
catch (Exception ex)
{
this._P_Base_House.RollBackTransaction();
}
}
}
}