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

1130 lines
65 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Collections;
using SiaSun.LMS.Model;
using SiaSun.LMS.Persistence;
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);
}
}
DataTable dt_control = this._P_IO_CONTROL.GetDataTable("select * from io_control where start_device_code in (12007,12011,12014,12017) and end_device_code in (12006,12010,12013,12016) and control_status=999");
foreach (DataRow dr in dt_control.Rows)
{
if (dr["end_device_code"].ToString() != "12006")
this._S_LEDService.AddLedLineTxt(dr["end_device_code"].ToString(), 0, "", out sResult);
else
this._S_LEDService.AddLedLineTxt("12007", 0, "", out sResult);
}
this.ExecuteNonQuery_ReturnVoid(" delete from io_control where manage_id = 0 and control_status = 999 or control_status=900");
}
/// <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
{
//if (!string.IsNullOrWhiteSpace(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA03) && !mIO_CONTROL_APPLY.CONTROL_APPLY_PARA03.Equals("0"))
//{
// bResult = false;
// sResult = "超重";
// mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
// mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
// this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
// this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
// return bResult;
//}
SiaSun.LMS.Model.WH_CELL mSTART_CELL = this._P_WH_CELL.GetModel(mIO_CONTROL_APPLY.DEVICE_CODE.TrimEnd());
#region 校验起始位置
if (null == mSTART_CELL)
{
bResult = false;
sResult = "申请入库未提供起始站台";
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
return bResult;
}
#endregion
SiaSun.LMS.Model.IO_CONTROL_ROUTE mIO_CONTROL_ROUTE = this._P_IO_CONTROL_ROUTE.GetModel(mIO_CONTROL_APPLY.DEVICE_CODE.TrimEnd());
#region 校验托盘条码
if (!string.IsNullOrEmpty(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA02))
{
mIO_CONTROL_APPLY.CONTROL_APPLY_PARA02 = mIO_CONTROL_APPLY.CONTROL_APPLY_PARA02.TrimEnd('\0');
}
//if (mIO_CONTROL_APPLY.CONTROL_APPLY_TYPE == "1")
//{
// //if (!string.IsNullOrWhiteSpace(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01))
// //{
// // if (!mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01.Equals("1") && !mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01.Equals("2") && !mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01.Equals("3"))
// // {
// // bResult = false;
// // sResult = "高度错误";
// // mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
// // mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = "高度错误";
// // this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
// // this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
// // return bResult;
// // }
// //}
//}
#endregion
#region SQL-删除历史记录
//每隔300天删除申请历史
this.ExecuteNonQuery_ReturnVoid(string.Format("DELETE FROM IO_CONTROL_APPLY_HIS where DATEDIFF(DD,CREATE_TIME,GETDATE())>='300'"));
//每隔300天删除接口日志
this.ExecuteNonQuery_ReturnVoid(string.Format(@"DELETE FROM INTERFACE_LOG where DATEDIFF(DD,INVOKE_TIME,GETDATE())>='100'"));
#endregion
switch (mIO_CONTROL_APPLY.CONTROL_APPLY_TYPE.TrimEnd())
{
#region 申请入库
case "1":
if (!string.IsNullOrWhiteSpace(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01) &&
Convert.ToInt32(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01) > 10)
{
bResult = false;
sResult = mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT;
mIO_CONTROL_APPLY.MANAGE_ERROR_TEXT = sResult;
break;
}
if (!string.IsNullOrEmpty(mIO_CONTROL_APPLY.STOCK_BARCODE))
{
mIO_CONTROL_APPLY.STOCK_BARCODE = mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd('\0');
}
if (string.IsNullOrWhiteSpace(mIO_CONTROL_APPLY.STOCK_BARCODE) || mIO_CONTROL_APPLY.STOCK_BARCODE.StartsWith("1"))
{
bResult = false;
sResult = "托盘条码识别失败";
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
return bResult;
}
if (!Common.RegexValid.IsValidate(mIO_CONTROL_APPLY.STOCK_BARCODE, Common.StringUtil.GetConfig("StockCodeCheck")))
{
bResult = false;
sResult = string.Format("{0} 格式错误", mIO_CONTROL_APPLY.STOCK_BARCODE);
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
return bResult;
}
STORAGE_MAIN sTORAGE_MAIN = this._P_STORAGE_MAIN.GetModelStockBarcode(mIO_CONTROL_APPLY.STOCK_BARCODE);
if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "1" &&
(mIO_CONTROL_APPLY.DEVICE_CODE == "11028" ||
mIO_CONTROL_APPLY.DEVICE_CODE == "11002"))
{
if (sTORAGE_MAIN != null)
{
bResult = false;
sResult = string.Format("{0} 存在库存", mIO_CONTROL_APPLY.STOCK_BARCODE);
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
AddLog(sResult);
return bResult;
}
else
{
CreateDiePan(mIO_CONTROL_APPLY);
return bResult;
}
}
//如果CONTROL_APPLY_PARA02不为空,说明是自动组盘
if (sTORAGE_MAIN == null &&
!string.IsNullOrEmpty(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA02) &&
!mIO_CONTROL_APPLY.CONTROL_APPLY_PARA02.StartsWith("\0"))
{
WH_CELL wH_CELL = this._P_WH_CELL.GetModel(mIO_CONTROL_APPLY.DEVICE_CODE);
string sGoodsBarcode = mIO_CONTROL_APPLY.CONTROL_APPLY_PARA02.Trim();
string[] strArr = sGoodsBarcode.Split('-');
if (strArr.Length != 7)
{
bResult = false;
sResult = string.Format("物料条码格式错误 {0}", sGoodsBarcode);
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
AddLog(sResult);
return bResult;
}
GOODS_MAIN gOODS_MAIN = this._P_GOODS_MAIN.GetModel(strArr[1]);
if (gOODS_MAIN == null)
{
bResult = false;
sResult = string.Format(@"申请物料:{0}不存在", strArr[1]);
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
AddLog(sResult);
return bResult;
}
Model.MANAGE_MAIN mANAGE_MAIN = new Model.MANAGE_MAIN();
Model.MANAGE_LIST mANAGE_LIST = new Model.MANAGE_LIST();
List<SiaSun.LMS.Model.MANAGE_LIST> lsMANAGE_LIST = new List<Model.MANAGE_LIST>();
//if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "4" ||
// gOODS_MAIN.GOODS_CODE == "10100002")
if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "4")
{
// 磷酸铁放高层
mANAGE_MAIN.CELL_MODEL = "height";
}
else if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "3")
{
mANAGE_MAIN.CELL_MODEL = "low";
}
else
{
bResult = false;
sResult = "高度错误";
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
this.AddLog(sResult);
return bResult;
}
if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "4" &&
(gOODS_MAIN.GOODS_CLASS_ID == 3 ||
gOODS_MAIN.GOODS_CLASS_ID == 6 ||
gOODS_MAIN.GOODS_CLASS_ID == 7 ||
gOODS_MAIN.GOODS_CLASS_ID == 8 ||
gOODS_MAIN.GOODS_CLASS_ID == 9 ||
gOODS_MAIN.GOODS_CLASS_ID == 10 ||
gOODS_MAIN.GOODS_CLASS_ID > 10))
{
bResult = false;
sResult = "小料入库超高";
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
this.AddLog(sResult);
return bResult;
}
mANAGE_MAIN.STOCK_BARCODE = mIO_CONTROL_APPLY.STOCK_BARCODE;
mANAGE_MAIN.MANAGE_TYPE_CODE = "ManageIn";
mANAGE_MAIN.MANAGE_OPERATOR = "管理系统";
mANAGE_MAIN.MANAGE_BEGIN_TIME = Common.StringUtil.GetDateTime();
mANAGE_MAIN.MANAGE_STATUS = "Waiting";
mANAGE_MAIN.START_CELL_ID = wH_CELL.CELL_ID;
mANAGE_MAIN.END_CELL_ID = 0;
mANAGE_LIST.GOODS_ID = gOODS_MAIN.GOODS_ID;
mANAGE_LIST.MANAGE_ID = 0;
mANAGE_LIST.MANAGE_LIST_QUANTITY = Convert.ToDecimal(strArr[5]);
mANAGE_LIST.PLAN_LIST_ID = 0;
mANAGE_LIST.GOODS_PROPERTY1 = sGoodsBarcode;
mANAGE_LIST.GOODS_PROPERTY2 = strArr[0] + "-" + strArr[1] + "-" + strArr[2] + "-" + strArr[4];
mANAGE_LIST.GOODS_PROPERTY3 = strArr[2];
mANAGE_LIST.GOODS_PROPERTY5 = string.IsNullOrWhiteSpace(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA03) ? "0" : mIO_CONTROL_APPLY.CONTROL_APPLY_PARA03.TrimStart('-');
//mANAGE_LIST.GOODS_PROPERTY8 = "0";
mANAGE_LIST.GOODS_PROPERTY9 = "0";
mANAGE_LIST.STORAGE_LIST_ID = 0;
lsMANAGE_LIST.Add(mANAGE_LIST);
if (!new ManageIn().ManageCreate(mANAGE_MAIN, lsMANAGE_LIST,true,true,false,true,out sResult))
{
bResult = false;
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
return bResult;
}
string sTemp = string.Empty;
this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, string.Format("{0} 入库成功", mIO_CONTROL_APPLY.STOCK_BARCODE), out sTemp);
}
//
else
{
SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModelStockBarcode(mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd());
if (mMANAGE_MAIN != null)
{
bResult = false;
sResult = string.Format("{0} 已存在任务", mIO_CONTROL_APPLY.STOCK_BARCODE);
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, sResult, out sResult);
return bResult;
//if (mMANAGE_MAIN.STOCK_BARCODE == mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd())
//{
// if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "3")
// {
// mMANAGE_MAIN.CELL_MODEL = "low";
// }
// else if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "4")
// {
// mMANAGE_MAIN.CELL_MODEL = "height";
// }
// else
// {
// bResult = false;
// sResult = "超高";
// mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
// mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
// this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
// this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
// return bResult;
// }
// this._P_MANAGE_MAIN.Update(mMANAGE_MAIN);
// bResult = this.ManageDownLoad(mMANAGE_MAIN.MANAGE_ID, mIO_CONTROL_APPLY.DEVICE_CODE.TrimEnd(), true, out sResult);
// if (bResult)
// {
// sResult = string.Format("有管理任务/条码'{0}'/站台'{1}'/下达任务成功", mMANAGE_MAIN.STOCK_BARCODE, mIO_CONTROL_APPLY.DEVICE_CODE);
// this.AddLog(sResult);
// }
//}
//else
//{
// bResult = false;
// sResult = "申请入库未下达任务";
//}
}
else if (mMANAGE_MAIN == null)
{
//实物上架/入库
if (this._S_StorageService.StorageCheck(mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd(), Enum.AREA_TYPE.XuNiKu.ToString(), out sResult))
{
string sGoodsProperty05 = string.IsNullOrWhiteSpace(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA03) ? "0" : mIO_CONTROL_APPLY.CONTROL_APPLY_PARA03.TrimStart('-');
this.ExecuteNonQuery_ReturnVoid(
$"update STORAGE_LIST set GOODS_PROPERTY5='{sGoodsProperty05}'" +
$" where STORAGE_ID in (select STORAGE_ID from STORAGE_MAIN where STOCK_BARCODE='{mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd()}')");
//如果是小料,必须是矮货位,如果上高货位,直接回退
int iGoodsID = this._P_STORAGE_LIST.GetListStorageID(this._P_STORAGE_MAIN.GetModelStockBarcode(mIO_CONTROL_APPLY.STOCK_BARCODE).STORAGE_ID)[0].GOODS_ID;
GOODS_MAIN gm = this._P_GOODS_MAIN.GetModel(iGoodsID);
if (gm == null)
{
bResult = false;
sResult = string.Format("{0} 未找到物料ID {1}", mIO_CONTROL_APPLY.STOCK_BARCODE, iGoodsID);
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
return bResult;
}
if (gm.GOODS_CLASS_ID == 3 ||
gm.GOODS_CLASS_ID == 6 ||
gm.GOODS_CLASS_ID == 7 ||
gm.GOODS_CLASS_ID == 8 ||
gm.GOODS_CLASS_ID == 9 ||
gm.GOODS_CLASS_ID == 10 ||
gm.GOODS_CLASS_ID > 10)
{
if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "4")
{
bResult = false;
sResult = string.Format(@"托盘条码:{0}的库存是小料,必须是矮货位,检尺检测超高", mIO_CONTROL_APPLY.STOCK_BARCODE);
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
return bResult;
}
}
//如果是母托盘,并且上报的低货位,则直接删除库存,下达到叠盘
if (gm.GOODS_CLASS_ID == 4 &&
(mIO_CONTROL_APPLY.DEVICE_CODE == "21006" ||
mIO_CONTROL_APPLY.DEVICE_CODE == "22003"))
{
//STORAGE_MAIN sTORAGE_MAIN = this._P_STORAGE_MAIN.GetModelStockBarcode(mIO_CONTROL_APPLY.STOCK_BARCODE);
if (sTORAGE_MAIN != null)
{
IList<STORAGE_LIST> sTORAGE_LISTs = this._P_STORAGE_LIST.GetListStorageID(sTORAGE_MAIN.STORAGE_ID);
foreach (STORAGE_LIST item in sTORAGE_LISTs)
{
this._P_STORAGE_LIST.Delete(item.STORAGE_LIST_ID);
}
this._P_STORAGE_MAIN.Delete(sTORAGE_MAIN.STORAGE_ID);
}
IO_CONTROL iO_CONTROL = new IO_CONTROL() {
START_DEVICE_CODE = mIO_CONTROL_APPLY.DEVICE_CODE,
END_DEVICE_CODE = "13009",
CONTROL_BEGIN_TIME = Common.StringUtil.GetDateTime(),
STOCK_BARCODE= mIO_CONTROL_APPLY.STOCK_BARCODE,
START_WAREHOUSE_CODE = "1",
END_WAREHOUSE_CODE ="1",
CONTROL_TASK_TYPE = 4,
CONTROL_TASK_LEVEL = "8"
};
this._P_IO_CONTROL.Add(iO_CONTROL);
CreateApplyHis(mIO_CONTROL_APPLY);
return true;
}
if (gm.GOODS_CLASS_ID == 2 &&
(mIO_CONTROL_APPLY.DEVICE_CODE == "21006" ||
mIO_CONTROL_APPLY.DEVICE_CODE == "22003"))
{
//STORAGE_MAIN sTORAGE_MAIN = this._P_STORAGE_MAIN.GetModelStockBarcode(mIO_CONTROL_APPLY.STOCK_BARCODE);
if (sTORAGE_MAIN != null)
{
IList<STORAGE_LIST> sTORAGE_LISTs = this._P_STORAGE_LIST.GetListStorageID(sTORAGE_MAIN.STORAGE_ID);
foreach (STORAGE_LIST item in sTORAGE_LISTs)
{
this._P_STORAGE_LIST.Delete(item.STORAGE_LIST_ID);
}
this._P_STORAGE_MAIN.Delete(sTORAGE_MAIN.STORAGE_ID);
}
IO_CONTROL iO_CONTROL = new IO_CONTROL()
{
START_DEVICE_CODE = mIO_CONTROL_APPLY.DEVICE_CODE,
END_DEVICE_CODE = mIO_CONTROL_APPLY.DEVICE_CODE == "21006" ? "22005" : "21005",
CONTROL_BEGIN_TIME = Common.StringUtil.GetDateTime(),
STOCK_BARCODE = mIO_CONTROL_APPLY.STOCK_BARCODE,
START_WAREHOUSE_CODE = "1",
END_WAREHOUSE_CODE = "1",
CONTROL_TASK_TYPE = 4,
CONTROL_TASK_LEVEL = "8"
};
this._P_IO_CONTROL.Add(iO_CONTROL);
CreateApplyHis(mIO_CONTROL_APPLY);
return true;
}
mMANAGE_MAIN = new Model.MANAGE_MAIN();
mMANAGE_MAIN.MANAGE_TYPE_CODE = "ManageUp";
//if (this._P_STORAGE_LIST.GetListStorageID(this._P_STORAGE_MAIN.GetModelStockBarcode(mIO_CONTROL_APPLY.STOCK_BARCODE).STORAGE_ID)[0].GOODS_ID == 32778)
//{
// mMANAGE_MAIN.MANAGE_TYPE_CODE = "StockIn";
//}
//else
//{
// mMANAGE_MAIN.MANAGE_TYPE_CODE = "ManageUp";
//}
mMANAGE_MAIN.STOCK_BARCODE = mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd();
//if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "4" ||
// gm.GOODS_CODE == "10100002")
if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "4")
{
// 磷酸铁放高层
mMANAGE_MAIN.CELL_MODEL = "height";
}
else if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "3")
{
mMANAGE_MAIN.CELL_MODEL = "low";
}
else
{
bResult = false;
sResult = "检尺检测不合格";
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
return bResult;
}
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);
if (bResult)
{
sResult = string.Format("无管理任务/条码'{0}'/站台'{1}'/任务申请成功", mMANAGE_MAIN.STOCK_BARCODE, mIO_CONTROL_APPLY.DEVICE_CODE);
this.AddLog(sResult);
}
}
else
{
//无库存,无任务,不允许入库,如果盘上有货,电气未上报物料条码,当成空托盘入库
bResult = false;
if (sTORAGE_MAIN == null)
{
// 手动入库 在入库点下任务
sResult = string.Format("{0} 无库存请组盘", mIO_CONTROL_APPLY.STOCK_BARCODE);
}
else
{
sResult = string.Format("{0} 已存在库存", mIO_CONTROL_APPLY.STOCK_BARCODE);
}
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
return bResult;
}
}
}
break;
#endregion
# region 叠盘机申请入库
case "4":
{
if (string.IsNullOrEmpty(mIO_CONTROL_APPLY.DEVICE_CODE))
{
bResult = false;
sResult = "空托盘垛申请入库没有提供起始位置";
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
//CreateApplyHis(mIO_CONTROL_APPLY);
return false;
}
//子托盘叠盘机申请
if (mIO_CONTROL_APPLY.DEVICE_CODE.Equals("13012"))
{
WH_CELL wH_CELL = this._P_WH_CELL.GetModel(mIO_CONTROL_APPLY.DEVICE_CODE);
MANAGE_MAIN mANAGE_MAIN = new MANAGE_MAIN();
MANAGE_LIST mANAGE_LIST = new MANAGE_LIST();
List<MANAGE_LIST> mANAGE_LISTs = new List<MANAGE_LIST>();
mANAGE_MAIN.STOCK_BARCODE = string.Format("T{0}", DateTime.Now.ToString("yyyyMMddHHmmssffff"));
mANAGE_MAIN.CELL_MODEL = "low";
mANAGE_MAIN.END_CELL_ID = 0;
mANAGE_MAIN.START_CELL_ID = wH_CELL.CELL_ID;
mANAGE_MAIN.MANAGE_BEGIN_TIME = Common.StringUtil.GetDateTime();
mANAGE_MAIN.MANAGE_ID = 0;
mANAGE_MAIN.MANAGE_OPERATOR = "管理系统";
mANAGE_MAIN.MANAGE_STATUS = "Waiting";
mANAGE_MAIN.MANAGE_TYPE_CODE = "ManageIn";
mANAGE_MAIN.PLAN_ID = 0;
mANAGE_LIST.GOODS_ID = 32780;
mANAGE_LIST.MANAGE_LIST_QUANTITY = 8;
mANAGE_LIST.PLAN_LIST_ID = 0;
mANAGE_LIST.STORAGE_LIST_ID = 0;
mANAGE_LISTs.Add(mANAGE_LIST);
if (!new ManageIn().ManageCreate(mANAGE_MAIN, mANAGE_LISTs, true, true, false, true, out sResult))
{
bResult = false;
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
//this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
return bResult;
}
}
//母托盘叠盘机申请
else
{
string CELL_MODEL = "low";
string STOCK_BARCODE = string.Empty;
string AREA_TYPE = string.Empty;
int Quantity = 8;
STOCK_BARCODE = string.Format("T{0}", DateTime.Now.ToString("yyyyMMddHHmmssffff"));
//STOCK_BARCODE = mIO_CONTROL_APPLY.STOCK_BARCODE;
mIO_CONTROL_APPLY.CREATE_TIME = SiaSun.LMS.Common.StringUtil.GetDateTime();
bResult = this.Invoke("ManageIn", "ManageCreate_Stock_In_Auto", new object[] { STOCK_BARCODE, mIO_CONTROL_APPLY.DEVICE_CODE, "StockIn", CELL_MODEL, Quantity, true, true, false, true }, out sResult);
if (!bResult)
{
bResult = false;
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
//this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
return bResult;
}
}
}
break;
#endregion
#region 空托盘垛申请出库
case "2":
{
string GoodsCode = "GTP";
if (string.IsNullOrEmpty(mIO_CONTROL_APPLY.DEVICE_CODE))
{
bResult = false;
sResult = "空托盘垛申请出库没有提供目标位置";
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
AddLog(sResult);
continue;
}
bResult = this.Invoke("ManageOut", "ManageCreate_Stock_Out_Auot", new object[] { null, "StockOut", GoodsCode, mIO_CONTROL_APPLY.DEVICE_CODE, true }, out sResult);
if (bResult)
{
sResult = string.Format("调度申请成功-空托盘垛出库:站台{0}/托盘条码{1}",
mIO_CONTROL_APPLY.DEVICE_CODE, mIO_CONTROL_APPLY.STOCK_BARCODE);
AddLog(sResult);
}
else
{
//mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
//mIO_CONTROL_APPLY.MANAGE_ERROR_TEXT = sResult;
//this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
this._P_IO_CONTROL_APPLY.Delete(mIO_CONTROL_APPLY.CONTROL_APPLY_ID);
AddLog(sResult);
continue;
}
}
break;
#endregion
#region 24个出库站台申请
case "3":
{
IList<IO_CONTROL> iO_CONTROLs = this._P_IO_CONTROL.GetModel_BY_END_DEVICE_CODE(mIO_CONTROL_APPLY.DEVICE_CODE);
if (iO_CONTROLs.Count > 0)
{
bResult = false;
sResult = mIO_CONTROL_APPLY.CONTROL_APPLY_PARAMETER;
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = string.Format(@"站台:{0}已经存在任务",mIO_CONTROL_APPLY.DEVICE_CODE);
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
CreateApplyHis(mIO_CONTROL_APPLY);
return bResult;
}
// FIXME
sResult = "功能未实现";
bResult = false;
//DataTable dt = this.GetList(string.Format(@"SELECT * FROM v_plan_list WHERE plan_status='Executing'
// and plan_list_quantity != plan_list_ordered_quantity
// and PLAN_CONFIRM_USER = 'Auto' and plan_to_dept = '{0}'",mIO_CONTROL_APPLY.DEVICE_CODE));
//if (dt != null && dt.Rows.Count > 0)
//{
// PLAN_MAIN pLAN_MAIN = this._P_PLAN_MAIN.GetModel(Convert.ToInt32(dt.Rows[0]["PLAN_ID"].ToString()));
// bResult = new S_ManageService().ManageOutAuto(pLAN_MAIN.PLAN_ID, true, true, false, out sResult);
// if (bResult)
// {
// this._P_IO_CONTROL_APPLY.Delete(mIO_CONTROL_APPLY.CONTROL_APPLY_ID);
// return true;
// }
// else
// {
// bResult = false;
// mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
// mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
// this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
// CreateApplyHis(mIO_CONTROL_APPLY);
// return bResult;
// }
//}
break;
}
#endregion
}
if (!bResult)
{
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
//sResult = string.Format("错误信息{0}:", sResult);
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
if (mIO_CONTROL_APPLY.CONTROL_APPLY_TYPE == "1")
{
string sTemp = string.Empty;
//DataTable dtReturnRoute = this.GetList(string.Format("select top 1 * from IO_CONTROL_ROUTE where control_route_type =4 and start_device ='{0}'", mIO_CONTROL_APPLY.DEVICE_CODE));
//if(dtReturnRoute.Rows.Count>0)
//{
// //写历史-生成回退任务
// this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
//}
//else
//{
// //写历史
// this.CreateApplyHis(mIO_CONTROL_APPLY);
//}
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
}
else
{
//写历史
this.CreateApplyHis(mIO_CONTROL_APPLY);
}
AddLog(sResult);
}
else
{
//生成任务成功后,删除该任务
AddLog($"{mIO_CONTROL_APPLY.STOCK_BARCODE} {mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01}");
this._P_IO_CONTROL_APPLY.Delete(mIO_CONTROL_APPLY.CONTROL_APPLY_ID);
}
}
catch (Exception ex)
{
sResult = ex.Message;
this.AddLog(sResult);
}
}
return bResult;
}
/// <summary>
/// 生成申请历史
/// </summary>
/// <param name="mIO_CONTROL_APPLY"></param>
void CreateApplyHis(Model.IO_CONTROL_APPLY mIO_CONTROL_APPLY)
{
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.CONTROL_APPLY_PARAMETER = mIO_CONTROL_APPLY.CONTROL_APPLY_PARAMETER;
mIO_CONTROL_APPLY_HIS.MANAGE_ERROR_TEXT = mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT;
mIO_CONTROL_APPLY_HIS.CONTROL_APPLY_PARA01 = mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01;
mIO_CONTROL_APPLY_HIS.CONTROL_APPLY_PARA02 = mIO_CONTROL_APPLY.CONTROL_APPLY_PARA02;
this._P_IO_CONTROL_APPLY_HIS.Add(mIO_CONTROL_APPLY_HIS);
//生成任务后,删除申请任务
this._P_IO_CONTROL_APPLY.Delete(mIO_CONTROL_APPLY.CONTROL_APPLY_ID);
this._P_Base_House.CommitTransaction();
}
catch (Exception ex)
{
AddLog(ex.ToString());
}
}
/// <summary>监视控制任务,处理所有完成的控制任务
/// 监视控制任务,处理所有完成的控制任务
/// </summary>
public void CONTROL_WATCHING(out string sResult)
{
bool boolResult = true;
sResult = string.Empty;
//遍历所有控制任务
foreach (IO_CONTROL mIO_CONTROL in this._P_IO_CONTROL.GetList())
{
//判断是否空值
if (!string.IsNullOrEmpty(mIO_CONTROL.CONTROL_STATUS.ToString()))
{
//获得任务状态
Enum.CONTROL_STATUS enumControlStatus = (Enum.CONTROL_STATUS)System.Enum.Parse(typeof(Enum.CONTROL_STATUS), mIO_CONTROL.CONTROL_STATUS.ToString());
//获得管理任务编号
MANAGE_MAIN mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModel(mIO_CONTROL.MANAGE_ID);
//删除完成的反转CONTROL
if (mMANAGE_MAIN == null)
{
if (mIO_CONTROL.CONTROL_STATUS == 999 || mIO_CONTROL.CONTROL_STATUS == 900)
{
this._P_IO_CONTROL.DeleteControlID(mIO_CONTROL.CONTROL_ID);
continue;
}
}
//判断控制任务
switch (enumControlStatus)
{
case SiaSun.LMS.Enum.CONTROL_STATUS.Control_Readed: //任务获取
//设置管理任务状态为运行状态
boolResult = CONTROL_CHANAGE_MANAGE_STATUS(mMANAGE_MAIN, Enum.MANAGE_STATUS.Waitting, mIO_CONTROL.ERROR_TEXT, out sResult);
break;
case SiaSun.LMS.Enum.CONTROL_STATUS.Wait: //等待
boolResult = CONTROL_CHANAGE_MANAGE_STATUS(mMANAGE_MAIN, Enum.MANAGE_STATUS.WaitingExecute, mIO_CONTROL.ERROR_TEXT, out sResult);
break;
case SiaSun.LMS.Enum.CONTROL_STATUS.Runing: //运行
boolResult = CONTROL_CHANAGE_MANAGE_STATUS(mMANAGE_MAIN, Enum.MANAGE_STATUS.Executing, mIO_CONTROL.ERROR_TEXT, out sResult);
break;
case SiaSun.LMS.Enum.CONTROL_STATUS.DeviceRuning: //堆垛机运行
case SiaSun.LMS.Enum.CONTROL_STATUS.LterRouteApply: //申请改道
//设置管理任务状态为运行状态
boolResult = CONTROL_CHANAGE_MANAGE_STATUS(mMANAGE_MAIN, Enum.MANAGE_STATUS.Executing, mIO_CONTROL.ERROR_TEXT, out sResult);
break;
case SiaSun.LMS.Enum.CONTROL_STATUS.TaskDelete: //任务取消
boolResult = CONTROL_CHANAGE_MANAGE_STATUS(mMANAGE_MAIN, Enum.MANAGE_STATUS.Cancel, mIO_CONTROL.ERROR_TEXT, out sResult);
break;
case SiaSun.LMS.Enum.CONTROL_STATUS.TaskAbend: //异常完成
case SiaSun.LMS.Enum.CONTROL_STATUS.Finish: //完成
//完成任务
boolResult = CONTROL_CHANAGE_MANAGE_STATUS(mMANAGE_MAIN, Enum.MANAGE_STATUS.Complete, mIO_CONTROL.ERROR_TEXT, out sResult);
break;
}
}
}
}
/// <summary>更改管理任务状态
/// 更改管理任务状态
/// </summary>
private bool CONTROL_CHANAGE_MANAGE_STATUS(MANAGE_MAIN mMANAGE_MAIN, Enum.MANAGE_STATUS emManageStatus, string ERROR_TEXT, out string strResult)
{
bool boolResult = true;
strResult = string.Empty;
try
{
//判断状态
if (mMANAGE_MAIN != null)
{
//如果状态更改或者存在报警信息则更新
if (mMANAGE_MAIN.MANAGE_STATUS != emManageStatus.ToString())
{
//更新状态
//mMANAGE_MAIN.MANAGE_REMARK = ERROR_TEXT;
mMANAGE_MAIN.MANAGE_STATUS = emManageStatus.ToString();
this._P_MANAGE_MAIN.Update(mMANAGE_MAIN);
}
if (mMANAGE_MAIN.MANAGE_STATUS == Enum.MANAGE_STATUS.Cancel.ToString())
{
boolResult = this.ManageCancel(mMANAGE_MAIN.MANAGE_ID, out strResult);
}
else if (mMANAGE_MAIN.MANAGE_STATUS == Enum.MANAGE_STATUS.Complete.ToString())
{
Model.MANAGE_TYPE mMANAGE_TYPE = this._P_MANAGE_TYPE.GetModelManageTypeCode(mMANAGE_MAIN.MANAGE_TYPE_CODE);
boolResult = this.Invoke(mMANAGE_TYPE.MANAGE_TYPE_CLASS, "ManageComplete", new object[] { mMANAGE_MAIN.MANAGE_ID, true }, out strResult);
if (!boolResult)
{
strResult = string.Format("任务完成失败!{0}", strResult);
}
}
else if (mMANAGE_MAIN.MANAGE_STATUS == Enum.MANAGE_STATUS.Executing.ToString())
{
Model.MANAGE_TYPE mMANAGE_TYPE = this._P_MANAGE_TYPE.GetModelManageTypeCode(mMANAGE_MAIN.MANAGE_TYPE_CODE);
boolResult = this.Invoke(mMANAGE_TYPE.MANAGE_TYPE_CLASS, "ManageExecute", new object[] { mMANAGE_MAIN.MANAGE_ID }, out strResult);
if (!boolResult)
{
strResult = string.Format("任务开始执行失败!{0}", strResult);
}
}
}
}
catch (Exception ex)
{
boolResult = false;
strResult = ex.Message + "CONTROL_CHANAGE_MANAGE_STATUS";
AddLog(strResult);
}
return boolResult;
}
/// <summary>任务-反转
/// 任务-反转
/// </summary>
public 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 = SiaSun.LMS.Common.StringUtil.GetDateTime();
mIO_CONTROL_APPLY_HIS.CONTROL_APPLY_REMARK = mIO_CONTROL_APPLY.CONTROL_APPLY_REMARK;
mIO_CONTROL_APPLY_HIS.CONTROL_APPLY_PARA01 = mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01;
mIO_CONTROL_APPLY_HIS.CONTROL_APPLY_PARA02 = mIO_CONTROL_APPLY.CONTROL_APPLY_PARA02;
mIO_CONTROL_APPLY_HIS.CONTROL_APPLY_PARA03 = mIO_CONTROL_APPLY.CONTROL_APPLY_PARA03;
mIO_CONTROL_APPLY_HIS.MANAGE_ERROR_TEXT = ExceptionMessage;
mIO_CONTROL_APPLY_HIS.CONTROL_ERROR_TEXT = mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT;
this._P_IO_CONTROL_APPLY_HIS.Add(mIO_CONTROL_APPLY_HIS);
this._P_IO_CONTROL_APPLY.Delete(mIO_CONTROL_APPLY.CONTROL_APPLY_ID);
string sTemp = string.Empty;
this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, ExceptionMessage, out sTemp);
//if ((mIO_CONTROL_APPLY.DEVICE_CODE == "11002" ||
// mIO_CONTROL_APPLY.DEVICE_CODE == "11028") &&
// !string.IsNullOrWhiteSpace(ExceptionMessage) &&
// (ExceptionMessage.Contains("无库存请组盘") ||
// ExceptionMessage.Contains("托盘条码识别失败")))
//{
//}
//else
if (!string.IsNullOrWhiteSpace(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01) &&
Convert.ToInt32(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01) < 10 &&
(mIO_CONTROL_APPLY.DEVICE_CODE == "11002" ||
mIO_CONTROL_APPLY.DEVICE_CODE == "11028" ||
mIO_CONTROL_APPLY.DEVICE_CODE == "21005" ||
mIO_CONTROL_APPLY.DEVICE_CODE == "21006" ||
mIO_CONTROL_APPLY.DEVICE_CODE == "22003"))
{
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 = 4;
//DataTable dtReturnRoute = this.GetList(string.Format("select top 1 *from IO_CONTROL_ROUTE where control_route_type =4 and start_device ='{0}'", mIO_CONTROL_APPLY.DEVICE_CODE));
mIO_CONTROL.START_DEVICE_CODE = mIO_CONTROL_APPLY.DEVICE_CODE;
if (mIO_CONTROL_APPLY.DEVICE_CODE == "11002")
{
mIO_CONTROL.END_DEVICE_CODE = "11001";
}
else if(mIO_CONTROL_APPLY.DEVICE_CODE == "11028")
{
mIO_CONTROL.END_DEVICE_CODE = "11031";
}
else if (mIO_CONTROL_APPLY.DEVICE_CODE == "21005")
{
mIO_CONTROL.END_DEVICE_CODE = "21005";
}
else if (mIO_CONTROL_APPLY.DEVICE_CODE == "21006")
{
mIO_CONTROL.END_DEVICE_CODE = "21006";
}
else if (mIO_CONTROL_APPLY.DEVICE_CODE == "22003")
{
mIO_CONTROL.END_DEVICE_CODE = "22005";
}
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";
mIO_CONTROL.ERROR_TEXT = ExceptionMessage;
bool bOk = true;
IList<IO_CONTROL> lControl = this._P_IO_CONTROL.GetModel_BY_END_DEVICE_CODE(mIO_CONTROL.END_DEVICE_CODE);
foreach (IO_CONTROL ic in lControl)
{
if (ic.START_DEVICE_CODE == mIO_CONTROL.START_DEVICE_CODE)
{
bOk = false;
break;
}
}
if (bOk)
{
this._P_IO_CONTROL.Add(mIO_CONTROL);
}
}
this._P_Base_House.CommitTransaction();
}
catch (Exception ex)
{
this._P_Base_House.RollBackTransaction();
}
}
public void CreateDiePan(Model.IO_CONTROL_APPLY mIO_CONTROL_APPLY)
{
try
{
this._P_Base_House.BeginTransaction();
this._P_IO_CONTROL_APPLY.Delete(mIO_CONTROL_APPLY.CONTROL_APPLY_ID);
if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "1" &&
(mIO_CONTROL_APPLY.DEVICE_CODE == "11028" ||
mIO_CONTROL_APPLY.DEVICE_CODE == "11002"))
{
string sTemp = string.Empty;
this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, string.Format("{0} 叠盘", mIO_CONTROL_APPLY.STOCK_BARCODE), out sTemp);
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 = 4;
//DataTable dtReturnRoute = this.GetList(string.Format("select top 1 *from IO_CONTROL_ROUTE where control_route_type =4 and start_device ='{0}'", mIO_CONTROL_APPLY.DEVICE_CODE));
mIO_CONTROL.START_DEVICE_CODE = mIO_CONTROL_APPLY.DEVICE_CODE;
mIO_CONTROL.END_DEVICE_CODE = "11021";
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();
}
}
/// <summary>计划-轮询
/// 计划-轮询
/// </summary>
/// <param name="PLAN_CODE">申请计划编号</param>
/// <param name="PLAN_ID">计划编号</param>
/// <param name="sResult">返回结果</param>
/// <param name="PLAN_FLAG">轮询标志</param>
/// <returns></returns>
public bool ERP_Plan_Task(out string sResult)
{
sResult = string.Empty;
bool bResult = true;
//获取执行中的自动出库状态的出库计划,且目标站台任务数排序
DataTable dt = this.GetList(string.Format(@"SELECT * FROM v_plan_list WHERE plan_status='Executing'
and plan_list_quantity != plan_list_ordered_quantity
and PLAN_CONFIRM_USER = 'Auto'"));
if (dt != null && dt.Rows.Count > 0)
{
arrayList[] arrayLists = new arrayList[dt.Rows.Count];
int[] ss = new int[dt.Rows.Count];
for (int i = 0; i < dt.Rows.Count; i++)
{
arrayList arrayList = new arrayList();
IList<IO_CONTROL> iO_CONTROLs = this._P_IO_CONTROL.GetModel_BY_END_DEVICE_CODE(dt.Rows[i]["PLAN_TO_DEPT"].ToString());
arrayList.ID = iO_CONTROLs.Count;
arrayList.plan_to_dept = dt.Rows[i]["PLAN_TO_DEPT"].ToString();
arrayList.PLAN_ID = Convert.ToInt32(dt.Rows[i]["PLAN_ID"].ToString());
arrayLists[i] = arrayList;
}
Array.Sort(arrayLists);
foreach (arrayList item in arrayLists)
{
PLAN_MAIN pLAN_MAIN = this._P_PLAN_MAIN.GetModel(item.PLAN_ID);
IList<IO_CONTROL> iO_CONTROLs = this._P_IO_CONTROL.GetModel_BY_END_DEVICE_CODE(pLAN_MAIN.PLAN_TO_DEPT);
if (iO_CONTROLs.Count > 1)
{
continue;
}
bResult = new S_ManageService().ManageOutAuto(item.PLAN_ID, true, true, false, out sResult);
if (bResult)
{
return true;
}
else
{
continue;
}
}
}
return true;
}
public class arrayList : IComparable
{
public string plan_to_dept { get; set; }
public int ID { get; set; }
public int PLAN_ID { get; set; }
public int CompareTo(object obj)
{
if (obj is arrayList)
{
return ID.CompareTo(((arrayList)obj).ID);
}
return 1;
}
}
}
}