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
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;
|
|
}
|
|
}
|
|
}
|
|
}
|