using HH.WMS.BLL.Basic;
|
using HH.WMS.BLL.External;
|
using HH.WMS.BLL.Interface;
|
using HH.WMS.BLL.MiddleDB;
|
using HH.WMS.Common;
|
using HH.WMS.Common.External;
|
using HH.WMS.Common.Response;
|
using HH.WMS.DAL.Basic;
|
using HH.WMS.DAL.Pda;
|
using HH.WMS.Entitys;
|
using HH.WMS.Entitys.Autobom;
|
using HH.WMS.Entitys.Basic;
|
using HH.WMS.Entitys.Common;
|
using HH.WMS.Entitys.Dto;
|
using HH.WMS.Entitys.Entitys.Mes;
|
using HH.WMS.Entitys.External;
|
using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace HH.WMS.BLL.Pda
|
{
|
public class ZCBLL : DapperBaseBLL
|
{
|
#region 保存任务
|
|
public OperateResult SaveTask(TN_MES_TASK task)
|
{
|
OperateResult result = BLLCreator.CreateDapper<TN_MES_TASK>().Add(task);
|
|
return result;
|
}
|
|
#endregion
|
|
#region 根据库区取占用的货位
|
/// <summary>
|
/// 根据库区取占用的货位
|
/// </summary>
|
/// <param name="areaCode"></param>
|
/// <returns></returns>
|
public List<TN_WM_LOCATION_EXTEntity> GetUsedLocationByArea(string areaCode)
|
{
|
return CreateDAL<GlDAL>().GetUsedLocationByArea(areaCode);
|
}
|
#endregion
|
|
#region 移库
|
/// <summary>
|
/// 移库
|
/// </summary>
|
/// <param name="transferType"></param>
|
public void TransferRubber(string transferType)
|
{
|
string workFlowName = string.Empty;
|
switch (transferType)
|
{
|
case "transferOfFinalRubber":
|
workFlowName = WorkFlowName.FlowNameList["Z3"];
|
break;
|
case "transferOfRawRubber":
|
workFlowName = WorkFlowName.FlowNameList["S2"];
|
break;
|
}
|
if (string.IsNullOrEmpty(workFlowName))
|
TransferRubberThrow(new Exception("未找到移库工作流名称"), workFlowName);
|
|
|
var isEnableAms = new GLTransferDto();
|
var _isEnableAmsStr = JsonHelper.GetValue("isSendAms");
|
if (!string.IsNullOrEmpty(_isEnableAmsStr))
|
{
|
isEnableAms = JsonConvert.DeserializeObject<GLTransferDto>(_isEnableAmsStr);
|
isEnableAms = isEnableAms ?? new GLTransferDto();
|
}
|
|
try
|
{
|
var mapStr = JsonHelper.GetValue(transferType);
|
if (string.IsNullOrEmpty(mapStr))
|
return;
|
var config = JsonConvert.DeserializeObject<GLTransferDto>(mapStr);
|
|
if (IsWorkTime(config))
|
{
|
var usedLocations = BLLCreator.Create<GlBLL>().GetUsedLocationByArea(config.endArea);
|
if (usedLocations.Count < config.transferMax)
|
{
|
mapStr = JsonHelper.GetValue("workFlowTransType");
|
if (string.IsNullOrEmpty(mapStr))
|
return;
|
var workFlowTransType = JsonConvert.DeserializeObject<List<GLTransferDto>>(mapStr);
|
var existsWorkFlow = workFlowTransType.Find(f => f.workFlowName == workFlowName);
|
if (existsWorkFlow == null)
|
{
|
TransferRubberThrow(new Exception("未找到移库方向"), workFlowName);
|
}
|
|
TN_WM_B_MAKE_TASKEntity makeReq = new TN_WM_B_MAKE_TASKEntity()
|
{
|
CN_S_START_AREA = config.startArea,
|
CN_S_END_AREA = config.endArea,
|
CN_S_ITEM_CODE = config.itemCode,
|
CN_S_NEED_AMS = Constants.Y,
|
CN_S_WORKFLOW_NAME = workFlowName,
|
CN_S_ISTRANSPORT = isEnableAms.moveStockEnableAms,
|
//CN_F_QUANTITY = 1
|
};
|
|
var externalRes = new ExternalResponse();
|
if (existsWorkFlow.transType == "In")
|
{
|
try
|
{
|
var res = BLLCreator.Create<GlBLL>().GLInWorkArea(makeReq);
|
externalRes = JsonConvert.DeserializeObject<ExternalResponse>(res);
|
}
|
catch (Exception ex)
|
{
|
TransferRubberThrow(ex, workFlowName);
|
}
|
}
|
else
|
{
|
try
|
{
|
var res = BLLCreator.Create<GlBLL>().GLOutWorkArea(makeReq);
|
externalRes = JsonConvert.DeserializeObject<ExternalResponse>(res);
|
}
|
catch (Exception ex)
|
{
|
TransferRubberThrow(ex, workFlowName);
|
}
|
}
|
|
if (!externalRes.success)
|
{
|
TransferRubberThrow(new Exception(externalRes.errMsg), workFlowName);
|
}
|
else//成功的话写移库记录
|
{
|
var ok = externalRes.okList[0];
|
AGV_Transfer_record _log = new AGV_Transfer_record()
|
{
|
ID = Guid.NewGuid().ToString(),
|
LoadNo = ok.trayCode,
|
MaterielCode = config.itemCode,
|
MaterielName = config.itemName,
|
Quantity = 1,
|
LocationName_Source = ok.startBit,
|
LocationName_Dest = ok.endBit,
|
CreateDate = DateTime.Now,
|
HasBeenReceived = Constants.Y
|
};
|
var _or = BLLCreator.CreateMiddleDapper<AGV_Transfer_record>().Add(_log);
|
if (!_or.Success)
|
{
|
TransferRubberThrow(new Exception("下达成功,写入移库记录失败:" + _or.Msg), workFlowName);
|
//throw new Exception("下达成功,写入移库记录失败:" + _or.Msg);
|
//ors.Add(OperateResult.Succeed("下达成功,写入移送任务日志失败:" + _or.Msg, req));
|
}
|
var _serviceExec = new TN_WM_SERVICE_EXECEntity()
|
{
|
CN_S_TASK_NO = Guid.NewGuid().ToString(),
|
CN_S_ITEM_CODE = config.itemCode,
|
CN_S_ITEM_NAME = config.itemName,
|
CN_S_TASK_TYPE = "移库",
|
CN_S_TRANS_TYPE = workFlowName,
|
CN_S_TRAY_CODE = ok.trayCode,
|
CN_N_PRIORITY = 1,
|
CN_S_START_LOCATION = ok.startBit,
|
CN_S_END_LOCATION = ok.endBit,
|
CN_T_CREATE = DateTime.Now,
|
CN_C_COMPLETE = Constants.Y,
|
CN_C_SEND_MES = Constants.Y,
|
CN_S_MSG = "下达成功"
|
};
|
|
var or = BLLCreator.CreateDapper<TN_WM_SERVICE_EXECEntity>().Add(_serviceExec);
|
if (!or.Success)
|
throw new Exception(or.Msg);
|
|
Log.DomainInfo(workFlowName + "移库成功", JsonConvert.SerializeObject(externalRes));
|
}
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
Log.DomainInfo(workFlowName + " Error", ex.Message);
|
}
|
}
|
#endregion
|
|
#region 移库异常记录
|
/// <summary>
|
/// 移库异常记录
|
/// </summary>
|
/// <param name="ex"></param>
|
private void TransferRubberThrow(Exception ex, string workFlowName)
|
{
|
var lastServiceExec = BLLCreator.CreateDapper<TN_WM_SERVICE_EXECEntity>().GetSingleEntity(new
|
{
|
CN_S_TASK_TYPE = "移库",
|
CN_S_TRANS_TYPE = workFlowName,
|
}, " ORDER BY CN_T_CREATE DESC ");
|
if (lastServiceExec != null && ex.Message == lastServiceExec.CN_S_MSG)
|
{
|
BLLCreator.CreateDapper<TN_WM_SERVICE_EXECEntity>().Update(new
|
{
|
CN_T_CREATE = DateTime.Now
|
}, new
|
{
|
CN_S_TASK_NO = lastServiceExec.CN_S_TASK_NO
|
});
|
throw ex;
|
}
|
TN_WM_SERVICE_EXECEntity serviceExec = new TN_WM_SERVICE_EXECEntity()
|
{
|
CN_S_TASK_NO = Guid.NewGuid().ToString(),
|
CN_S_TASK_TYPE = "移库",
|
CN_S_TRANS_TYPE = workFlowName,
|
CN_T_CREATE = DateTime.Now,
|
CN_C_COMPLETE = Constants.Y,
|
CN_C_SEND_MES = Constants.N,
|
CN_S_MSG = ex.Message
|
};
|
var or = BLLCreator.CreateDapper<TN_WM_SERVICE_EXECEntity>().Add(serviceExec);
|
if (!or.Success)
|
throw new Exception(or.Msg);
|
throw ex;
|
}
|
#endregion
|
|
#region 移送任务
|
/// <summary>
|
/// 移送任务
|
/// </summary>
|
/// <param name="transportReqs"></param>
|
public List<OperateResult> ExecTransferTask(List<TN_MES_TASK> transportReqs)
|
{
|
List<OperateResult> ors = new List<OperateResult>();
|
if (transportReqs.Any())
|
{
|
foreach (var req in transportReqs)
|
{
|
string startBit = req.Location_From;
|
string endBit = req.Location_To;
|
|
string startArea = string.Empty, endArea = string.Empty;
|
|
try
|
{
|
InWorkAreaEntity inModel = new InWorkAreaEntity();
|
inModel.itemCode = req.PROD_NO;
|
inModel.trayCode = req.TurnCardNum;
|
inModel.priority = req.Priority;
|
inModel.startBit = req.Location_From;
|
inModel.endBit = req.Location_To;
|
inModel.remark = "业务类型:" + req.BUSI_TYPE;
|
|
OutWorkAreaEntity outModel = new OutWorkAreaEntity();
|
outModel.itemCode = req.PROD_NO;
|
outModel.trayCode = req.TurnCardNum;
|
outModel.priority = req.Priority;
|
outModel.startBit = req.Location_From;
|
outModel.endBit = req.Location_To;
|
outModel.remark = "业务类型:" + req.BUSI_TYPE;
|
|
// 下一步要执行的阶段
|
string section = NextSection(req);
|
bool needCreateTask = true;
|
string direction = "";
|
|
if (section == TaskSectionConstants.ERROR)
|
{
|
// "执行失败,MES任务业务类型或阶段不正确"
|
needCreateTask = false;
|
}
|
else if (string.IsNullOrEmpty(section))
|
{
|
needCreateTask = false;
|
}
|
else if (section == TaskSectionConstants.BCP_KTCK)
|
{
|
direction = Constants.Out;
|
}
|
else if (section == TaskSectionConstants.BCP_MTRK)
|
{
|
direction = Constants.In;
|
}
|
else if (section == TaskSectionConstants.CXJ_BCPHK)
|
{
|
direction = Constants.In;
|
}
|
else if (section == TaskSectionConstants.CXJ_KTHK_RECORD)
|
{
|
needCreateTask = false;
|
}
|
else if (section == TaskSectionConstants.CXJ_MTCK)
|
{
|
direction = Constants.Out;
|
}
|
else if (section == TaskSectionConstants.CXJ_KTHK_KTRK)
|
{
|
direction = Constants.In;
|
}
|
else if (section == TaskSectionConstants.DS_BCPKTHK)
|
{
|
direction = Constants.In;
|
}
|
else if (section == TaskSectionConstants.DS_MTCK)
|
{
|
direction = Constants.Out;
|
}
|
// 更新MES任务阶段
|
req.SECTION = section;
|
|
var externalRes = new ExternalResponse();
|
string taskNo = "";
|
|
if (needCreateTask)
|
{
|
if (direction == Constants.In)
|
{
|
//传递参数
|
List<InWorkAreaEntity> inWorkAreaEntitys = new List<InWorkAreaEntity>();
|
inWorkAreaEntitys.Add(inModel);
|
|
try
|
{
|
Log.Info("入作业区开始,传参:", JsonConvert.SerializeObject(inWorkAreaEntitys));
|
externalRes = BLLCreator.Create<WmsApiBaseBLL>().InWorkArea(inWorkAreaEntitys);
|
taskNo = inModel.taskNo;
|
}
|
catch (Exception ex)
|
{
|
Log.Error("入作业区失败,传参:", JsonConvert.SerializeObject(inWorkAreaEntitys) + ex.ToString());
|
ors.Add(OperateResult.Error("入作业区失败:" + ex.Message, req));
|
continue;
|
}
|
}
|
else if (direction == Constants.Out)
|
{
|
//传递参数
|
List<OutWorkAreaEntity> outWorkAreaEntitys = new List<OutWorkAreaEntity>();
|
outWorkAreaEntitys.Add(outModel);
|
|
try
|
{
|
Log.Info("出作业区开始,传参:", JsonConvert.SerializeObject(outWorkAreaEntitys));
|
externalRes = BLLCreator.Create<WmsApiBaseBLL>().OutWorkArea(outWorkAreaEntitys);
|
taskNo = outModel.taskNo;
|
}
|
catch (Exception ex)
|
{
|
Log.Error("出作业区失败,传参:", JsonConvert.SerializeObject(outWorkAreaEntitys) + ex.ToString());
|
ors.Add(OperateResult.Error("出作业区失败:" + ex.Message, req));
|
continue;
|
}
|
}
|
else
|
{
|
ors.Add(OperateResult.Error("未知的出入库类型:" + direction, req));
|
continue;
|
}
|
}
|
else
|
{
|
// 不需要创建wms任务的执行流程,标识为成功
|
externalRes.success = true;
|
}
|
|
var _serviceExec = BLLCreator.CreateDapper<TN_WM_SERVICE_EXECEntity>().GetSingleEntity(new
|
{
|
CN_S_TASK_NO = req.task_no
|
});
|
if (_serviceExec != null)
|
{
|
_serviceExec.Update = true;
|
}
|
else
|
{
|
_serviceExec = new TN_WM_SERVICE_EXECEntity()
|
{
|
CN_S_TASK_NO = req.task_no,
|
CN_S_ITEM_CODE = req.PROD_NO,
|
CN_S_ITEM_NAME = "",
|
CN_S_TASK_TYPE = "移送",
|
CN_S_TRANS_TYPE = req.BUSI_TYPE_NAME,
|
CN_S_TRAY_CODE = req.TurnCardNum,
|
CN_N_PRIORITY = req.Priority,
|
CN_S_START_LOCATION = req.Location_From,
|
CN_S_END_LOCATION = req.Location_To,
|
CN_T_CREATE = DateTime.Now,
|
CN_C_COMPLETE = Constants.N,
|
CN_C_SEND_MES = Constants.N,
|
CN_F_QUANTITY = Convert.ToDecimal(req.CURRENT_AMOUNT),
|
CN_N_REQUEST_TYPE = null,
|
CN_S_TRAY_TYPE = ""
|
};
|
}
|
|
if (!externalRes.success)
|
{
|
_serviceExec.CN_C_COMPLETE = Constants.N;
|
_serviceExec.CN_C_SEND_MES = Constants.N;
|
_serviceExec.CN_S_MSG = externalRes.errMsg;
|
|
var _or = BLLCreator.Create<ZCMiddleOperateBll>().TransportSuccess(req, _serviceExec, taskNo);
|
|
if (!_or.Success)
|
{
|
Log.DomainInfo("TransportSuccess error", _or.Msg);
|
Log.DomainInfo("externalRes Error: " + externalRes.errMsg, JsonConvert.SerializeObject(req));
|
|
ors.Add(OperateResult.Error("TransportSuccess error", _or.Msg));
|
}
|
else
|
{
|
ors.Add(OperateResult.Error("externalRes Error: " + externalRes.errMsg, req));
|
}
|
}
|
else
|
{
|
var ok = externalRes.okList[0];
|
|
_serviceExec.CN_S_START_LOCATION = ok.startBit;
|
_serviceExec.CN_S_END_LOCATION = ok.endBit;
|
_serviceExec.CN_C_COMPLETE = Constants.Y;
|
_serviceExec.CN_C_SEND_MES = Constants.Y;
|
_serviceExec.CN_S_MSG = "下达成功";
|
|
req.Data_status = req.SECTION == TaskSectionConstants.COMPLETE ? 2 : 1;
|
req.NeedTrig = Constants.N;
|
req.SECTION = section;
|
|
var _or = BLLCreator.Create<ZCMiddleOperateBll>().TransportSuccess(req, _serviceExec, taskNo);
|
|
if (!_or.Success)
|
{
|
ors.Add(OperateResult.Warning("下达成功,更新移送任务日志失败:" + _or.Msg, req));
|
continue;
|
}
|
ors.Add(OperateResult.Succeed("下达成功", req));
|
}
|
|
Log.DomainInfo("移送任务 结果", JsonConvert.SerializeObject(ors));
|
}
|
catch (Exception ex)
|
{
|
ors.Add(OperateResult.Error("移送任务失败:" + ex.Message, req));
|
continue;
|
}
|
}
|
Log.DomainInfo("移送任务 结果", JsonConvert.SerializeObject(ors));
|
}
|
return ors;
|
}
|
#endregion
|
|
public string NextSection(TN_MES_TASK task)
|
{
|
if (task.BUSI_TYPE == "1")
|
{
|
if (string.IsNullOrEmpty(task.SECTION))
|
return TaskSectionConstants.BCP_KTCK;
|
else if (task.SECTION == TaskSectionConstants.BCP_KTCK)
|
return TaskSectionConstants.BCP_MTRK;
|
else if (task.SECTION == TaskSectionConstants.BCP_MTRK)
|
return TaskSectionConstants.COMPLETE;
|
else
|
return TaskSectionConstants.ERROR;
|
}
|
else if (task.BUSI_TYPE == "2")
|
{
|
if (string.IsNullOrEmpty(task.SECTION))
|
return TaskSectionConstants.CXJ_BCPHK;
|
else if (task.SECTION == TaskSectionConstants.CXJ_BCPHK)
|
return TaskSectionConstants.COMPLETE;
|
else
|
return TaskSectionConstants.ERROR;
|
}
|
else if (task.BUSI_TYPE == "3")
|
{
|
if (string.IsNullOrEmpty(task.SECTION))
|
return TaskSectionConstants.CXJ_KTHK_RECORD;
|
else if (task.SECTION == TaskSectionConstants.CXJ_KTHK_RECORD)
|
return TaskSectionConstants.COMPLETE;
|
else
|
return TaskSectionConstants.ERROR;
|
}
|
else if (task.BUSI_TYPE == "4")
|
{
|
if (string.IsNullOrEmpty(task.SECTION))
|
return TaskSectionConstants.CXJ_MTCK;
|
else if (task.SECTION == TaskSectionConstants.CXJ_MTCK)
|
return TaskSectionConstants.CXJ_KTHK_KTRK;
|
else if (task.SECTION == TaskSectionConstants.CXJ_KTHK_KTRK)
|
return TaskSectionConstants.COMPLETE;
|
else
|
return TaskSectionConstants.ERROR;
|
}
|
else if (task.BUSI_TYPE == "5")
|
{
|
if (string.IsNullOrEmpty(task.SECTION))
|
return TaskSectionConstants.DS_BCPKTHK;
|
else if (task.SECTION == TaskSectionConstants.DS_BCPKTHK)
|
return TaskSectionConstants.COMPLETE;
|
else
|
return TaskSectionConstants.ERROR;
|
}
|
else if (task.BUSI_TYPE == "6")
|
{
|
if (string.IsNullOrEmpty(task.SECTION))
|
return TaskSectionConstants.DS_MTCK;
|
else if (task.SECTION == TaskSectionConstants.DS_MTCK)
|
return TaskSectionConstants.COMPLETE;
|
else
|
return TaskSectionConstants.ERROR;
|
}
|
else
|
{
|
return TaskSectionConstants.ERROR;
|
}
|
}
|
|
#region 判断是否在工作时间
|
/// <summary>
|
/// 判断是否在工作时间
|
/// </summary>
|
/// <param name="config"></param>
|
/// <returns></returns>
|
private bool IsWorkTime(GLTransferDto config)
|
{
|
try
|
{
|
TimeSpan dspWorkingDayAM = config.startTime.TimeOfDay;
|
TimeSpan dspWorkingDayPM = config.endTime.TimeOfDay;
|
TimeSpan dspNow = DateTime.Now.TimeOfDay;
|
if (dspNow >= dspWorkingDayAM && dspNow <= dspWorkingDayPM)
|
{
|
return true;
|
}
|
return false;
|
}
|
catch
|
{
|
return false;
|
}
|
}
|
#endregion
|
|
/// <summary>
|
/// 入作业区
|
/// </summary>
|
/// <param name="entity"></param>
|
/// <returns></returns>
|
public string GLInWorkArea(TN_WM_B_MAKE_TASKEntity entity)
|
{
|
ExternalResponse result = new ExternalResponse();
|
try
|
{
|
Log.Info("处理位置信息开始:", JsonConvert.SerializeObject(entity));
|
//处理位置信息
|
CheckPosition(ref entity);
|
Log.Info("处理位置信息结束:", JsonConvert.SerializeObject(entity));
|
|
//传递参数
|
List<InWorkAreaEntity> inWorkAreaEntitys = new List<InWorkAreaEntity>();
|
|
|
InWorkAreaEntity model = new InWorkAreaEntity();
|
|
model.itemCode = entity.CN_S_ITEM_CODE;
|
model.trayCode = entity.CN_S_TRAY_CODE;
|
model.priority = Convert.ToInt32(entity.CN_S_PRIORITY);
|
model.startBit = entity.CN_S_START_BIT;
|
model.startArea = entity.CN_S_START_AREA;
|
model.startStock = entity.CN_S_START_STOCK;
|
model.endBit = entity.CN_S_END_BIT;
|
model.endArea = entity.CN_S_END_AREA;
|
model.endStock = entity.CN_S_END_STOCK;
|
model.remark = entity.CN_S_WORKFLOW_NAME;
|
model.isBackItem = "";
|
model.needCreateAMSTask = entity.CN_S_NEED_AMS;
|
|
//标记是否是退回物料(生胶、小料、母胶、终炼胶小盘料退回,余料格栅车退回,余料帘布退回)
|
string workFlowName = entity.CN_S_WORKFLOW_NAME;
|
if (workFlowName == WorkFlowName.FlowNameList["S5"] || workFlowName == WorkFlowName.FlowNameList["X7"] || workFlowName == WorkFlowName.FlowNameList["M5"] || workFlowName == WorkFlowName.FlowNameList["Z6"] || workFlowName == WorkFlowName.FlowNameList["T5"] || workFlowName == WorkFlowName.FlowNameList["L5"])
|
{
|
model.isBackItem = Constants.Y;
|
}
|
|
List<string> keyList = (from q in WorkFlowName.FlowNameList
|
where q.Value == entity.CN_S_WORKFLOW_NAME
|
select q.Key).ToList<string>(); //get all keys
|
|
var funcName = WorkFlowName.FlowNameList.FirstOrDefault(q => q.Value == entity.CN_S_WORKFLOW_NAME).Key;
|
|
if (funcName != "" && funcName != null)
|
{
|
model.funCode = funcName;
|
}
|
|
//物料编码不为空时 才组织Data
|
if (!string.IsNullOrEmpty(entity.CN_S_ITEM_CODE))
|
{
|
|
var item = BLLCreator.Create<TN_WMS_ITEMBLL>().GetItem(entity.CN_S_ITEM_CODE);
|
|
List<ChaoYangItemDataEntity> DataList = new List<ChaoYangItemDataEntity>();
|
|
DataList.Add(new ChaoYangItemDataEntity
|
{
|
itemCode = entity.CN_S_ITEM_CODE,
|
qty = Convert.ToInt32(entity.CN_F_QUANTITY),
|
itemModel = item == null ? "" : item.CN_S_MODEL,
|
itemPackUnit = item == null ? "" : item.CN_S_MEASURE_UNIT,
|
itemName = item == null ? "" : item.CN_S_ITEM_NAME,
|
itemState = "合格"
|
});
|
model.data = DataList;
|
}
|
|
inWorkAreaEntitys.Add(model);
|
|
Log.Info("开始进入入库,传参:", JsonConvert.SerializeObject(inWorkAreaEntitys));
|
result = BLLCreator.Create<WmsApiBaseBLL>().InWorkArea(inWorkAreaEntitys);
|
return JsonConvert.SerializeObject(result);
|
|
}
|
catch (Exception ex)
|
{
|
result.errCode = "5";//程序异常
|
result.errMsg = ex.Message;//程序异常
|
Log.DomainInfo(entity.CN_S_WORKFLOW_NAME + ": InError", ex.Message);
|
return JsonConvert.SerializeObject(result);
|
}
|
|
}
|
|
/// <summary>
|
/// 出作业区
|
/// </summary>
|
/// <param name="entity"></param>
|
/// <returns></returns>
|
public string GLOutWorkArea(TN_WM_B_MAKE_TASKEntity entity)
|
{
|
ExternalResponse result = new ExternalResponse();
|
|
try
|
{
|
Log.Info("处理位置信息开始:", JsonConvert.SerializeObject(entity));
|
//处理位置信息
|
CheckPosition(ref entity);
|
Log.Info("处理位置信息结束:", JsonConvert.SerializeObject(entity));
|
|
//传递参数
|
List<OutWorkAreaEntity> outWorkAreaEntitys = new List<OutWorkAreaEntity>();
|
|
List<OutWorkDataEntity> DataList = new List<OutWorkDataEntity>();
|
|
//物料编码不为空时 才组织Data
|
if (!string.IsNullOrEmpty(entity.CN_S_ITEM_CODE))
|
{
|
DataList.Add(new OutWorkDataEntity
|
{
|
ItemCode = entity.CN_S_ITEM_CODE,
|
TrayCode = entity.CN_S_TRAY_CODE,
|
UnitQty = Convert.ToInt32(entity.CN_F_QUANTITY)
|
});
|
}
|
string funCode = "";
|
List<string> keyList = (from q in WorkFlowName.FlowNameList
|
where q.Value == entity.CN_S_WORKFLOW_NAME
|
select q.Key).ToList<string>(); //get all keys
|
|
var funcName = WorkFlowName.FlowNameList.FirstOrDefault(q => q.Value == entity.CN_S_WORKFLOW_NAME).Key;
|
|
if (funcName != "" && funcName != null)
|
{
|
funCode = funcName;
|
}
|
|
outWorkAreaEntitys.Add(new OutWorkAreaEntity()
|
{
|
itemCode = entity.CN_S_ITEM_CODE,
|
trayCode = entity.CN_S_TRAY_CODE,
|
priority = Convert.ToInt32(entity.CN_S_PRIORITY),
|
startBit = entity.CN_S_START_BIT,
|
startArea = entity.CN_S_START_AREA,
|
startStock = entity.CN_S_START_STOCK,
|
endBit = entity.CN_S_END_BIT,
|
endArea = entity.CN_S_END_AREA,
|
endStock = entity.CN_S_END_STOCK,
|
remark = entity.CN_S_WORKFLOW_NAME,
|
Data = DataList,
|
needCreateAMSTask = entity.CN_S_NEED_AMS,
|
IsTransport = entity.CN_S_ISTRANSPORT,
|
funCode = string.IsNullOrEmpty(funCode) ? "" : funCode
|
});
|
|
Log.Info("开始进入出库,传参:", JsonConvert.SerializeObject(entity));
|
|
result = BLLCreator.Create<WmsApiBaseBLL>().OutWorkArea(outWorkAreaEntitys);
|
return JsonConvert.SerializeObject(result);
|
|
}
|
catch (Exception ex)
|
{
|
result.errCode = "5";//程序异常
|
result.errMsg = ex.Message;//程序异常
|
Log.DomainInfo(entity.CN_S_WORKFLOW_NAME + ": OutError", ex.Message);
|
return JsonConvert.SerializeObject(result);
|
}
|
}
|
|
/// <summary>
|
/// 处理位置信息
|
/// </summary>
|
/// <param name="entity"></param>
|
private void CheckPosition(ref TN_WM_B_MAKE_TASKEntity entity)
|
{
|
//防止传了起始位置,没传起始库区
|
if (!string.IsNullOrEmpty(entity.CN_S_START_BIT))
|
{
|
TN_WM_LOCATION_EXTEntity locationModel = BLL.BLLCreator.Create<TN_WM_LOCATION_EXTBLL>().GetExtModel(" WHERE CN_S_LOCATION_CODE='" + entity.CN_S_START_BIT + "' ");
|
if (locationModel != null)
|
{
|
entity.CN_S_START_AREA = locationModel.CN_S_AREA_CODE.Trim();
|
entity.CN_S_START_STOCK = locationModel.CN_S_STOCK_CODE.Trim();
|
}
|
}
|
//防止传了目的位置,没传目的库区
|
if (!string.IsNullOrEmpty(entity.CN_S_END_BIT))
|
{
|
TN_WM_LOCATION_EXTEntity locationModel = BLL.BLLCreator.Create<TN_WM_LOCATION_EXTBLL>().GetExtModel(" WHERE CN_S_LOCATION_CODE='" + entity.CN_S_END_BIT + "' ");
|
if (locationModel != null)
|
{
|
entity.CN_S_END_AREA = locationModel.CN_S_AREA_CODE.Trim();
|
entity.CN_S_END_STOCK = locationModel.CN_S_STOCK_CODE.Trim();
|
}
|
}
|
|
Log.Info("处理位置信息位置一:", JsonConvert.SerializeObject(entity));
|
|
if (string.IsNullOrEmpty(entity.CN_S_START_AREA) || string.IsNullOrEmpty(entity.CN_S_END_AREA))
|
{
|
//找作业路径
|
var workRoute = BLLCreator.Create<TN_AB_B_WORK_AREA_PROBLL>().GetSingleRoute(entity.CN_S_START_AREA, entity.CN_S_END_AREA);
|
if (workRoute == null)
|
{
|
throw new Exception("失败,未找到作业路径!");
|
}
|
|
if (string.IsNullOrEmpty(entity.CN_S_START_AREA))
|
{
|
entity.CN_S_START_AREA = workRoute.CN_S_START_AREA_CODE;
|
}
|
|
if (string.IsNullOrEmpty(entity.CN_S_END_AREA))
|
{
|
entity.CN_S_END_AREA = workRoute.CN_S_END_AREA_CODE;
|
}
|
}
|
|
Log.Info("处理位置信息位置二:", JsonConvert.SerializeObject(entity));
|
|
var SareaEntity = BLLCreator.Create<TN_AB_B_STOCK_AREABLL>().GetStockAreaEntity(entity.CN_S_START_AREA.Trim());
|
if (SareaEntity != null)
|
entity.CN_S_START_STOCK = SareaEntity.CN_S_STOCK_CODE;
|
|
|
var EareaEntity = BLLCreator.Create<TN_AB_B_STOCK_AREABLL>().GetStockAreaEntity(entity.CN_S_END_AREA.Trim());
|
if (EareaEntity != null)
|
entity.CN_S_END_STOCK = EareaEntity.CN_S_STOCK_CODE;
|
|
Log.Info("处理位置信息位置三:", JsonConvert.SerializeObject(entity));
|
}
|
|
#region 服务执行记录日志分页
|
/// <summary>
|
/// 服务执行记录日志分页
|
/// </summary>
|
/// <param name="sm"></param>
|
/// <returns></returns>
|
public OperateResult GetServiceExecList(SearchModel sm)
|
{
|
return CreateDAL<GlDAL>().GetServiceExecList(sm);
|
}
|
#endregion
|
|
public void SelfManageTask()
|
{
|
try
|
{
|
//取未执行的自管任务
|
var tasks = BLLCreator.CreateDapper<TN_WM_TASKEntity>().GetList(new
|
{
|
CN_S_TASK_FLAG = Constants.TaskFlag_ZG,
|
CN_S_STATE = new List<string>() { Constants.TaskState_NoExecuted, Constants.TaskState_CompleteHalf }
|
});
|
|
var mes_tasks = BLLCreator.CreateDapper<TN_MES_TASK>().GetList(new
|
{
|
task_no = tasks.ConvertAll(t => t.CN_S_EXT1).ToList()
|
});
|
|
var connectBitStr = JsonHelper.GetValue("connectBit");
|
if (string.IsNullOrEmpty(connectBitStr))
|
throw new Exception("未找到配置:connectBit");
|
|
var connectBits = JsonConvert.DeserializeObject<List<ConnectBitDto>>(connectBitStr);
|
|
List<OperateResult> ors = new List<OperateResult>();
|
foreach (var task in tasks)
|
{
|
try
|
{
|
var mes_task = mes_tasks.FirstOrDefault(t => t.task_no == task.CN_S_EXT1);
|
if (mes_task == null)
|
{
|
ors.Add(OperateResult.Error("从TN_MES_TASK表中未找到此任务的来源MES任务,任务编号:" + task.CN_S_TASK_NO));
|
continue;
|
}
|
// 出库主任务是同时下两条子任务
|
if (mes_task.SECTION == TaskSectionConstants.BCP_KTCK ||
|
mes_task.SECTION == TaskSectionConstants.CXJ_MTCK ||
|
mes_task.SECTION == TaskSectionConstants.DS_MTCK)
|
{
|
string tasktype = mes_task.SECTION == TaskSectionConstants.BCP_KTCK ? ConnectBitConstants.KTCK : mes_task.SECTION == TaskSectionConstants.CXJ_MTCK ? ConnectBitConstants.MTCK : mes_task.SECTION == TaskSectionConstants.DS_MTCK ? ConnectBitConstants.DSCK : "";
|
//立库货位
|
string lkBit = task.CN_S_START_BIT;
|
|
var locationBit = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new
|
{
|
CN_S_LOCATION_CODE = lkBit
|
});
|
if (locationBit == null)
|
throw new Exception("未找到立库货位:" + lkBit);
|
var _bit = connectBits.Find(f => f.tasktype == tasktype);
|
if (_bit == null)
|
throw new Exception("未找到配置类型为:" + tasktype + "的接驳位");
|
|
var connectBit = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new
|
{
|
CN_S_LOCATION_CODE = _bit.bit
|
});
|
if (connectBit == null)
|
throw new Exception("未找到接驳位货位:" + _bit.bit);
|
if (connectBit.CN_S_LOCATION_STATE != Constants.Location_State_Normal)
|
throw new Exception("接驳位:" + _bit.bit + "存在未执行完的任务");
|
|
var readytBit = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new
|
{
|
CN_S_LOCATION_CODE = _bit.readybit
|
});
|
if (readytBit == null)
|
throw new Exception("未找到准备点货位:" + _bit.bit);
|
if (readytBit.CN_S_LOCATION_STATE != Constants.Location_State_Normal)
|
throw new Exception("准备点:" + _bit.bit + "存在未执行完的任务");
|
|
//赋值接驳位
|
task.CN_S_CONNECT_BIT = _bit.bit;
|
task.CN_S_EXT2 = _bit.readybit;
|
|
string taskNo1 = task.CN_S_TASK_NO + "_1";
|
//创建第一个任务
|
TN_WM_TASKEntity taskEntity1 = new TN_WM_TASKEntity()
|
{
|
CN_S_TASK_NO = taskNo1,
|
CN_S_TRAY_CODE = task.CN_S_TRAY_CODE,
|
CN_S_START_BIT = task.CN_S_START_BIT,
|
CN_S_END_BIT = task.CN_S_CONNECT_BIT,
|
CN_S_STATE = Constants.TaskState_NoExecuted,
|
CN_S_BF_TASK_NO = "",
|
CN_S_AF_TASK_NO = "",
|
CN_S_STOCK_CODE = task.CN_S_STOCK_CODE,
|
CN_S_START_AREA = task.CN_S_START_AREA,
|
CN_S_END_AREA = connectBit.CN_S_AREA_CODE,
|
CN_N_PRIORITY = 1,
|
CN_S_CREATOR = "sys",
|
CN_S_CREATOR_BY = "sys",
|
CN_T_CREATE = DateTime.Now,
|
CN_T_MODIFY = DateTime.Now,
|
CN_S_REMARK = "",
|
CN_S_TASK_FLAG = Constants.TaskFlag_LG,
|
CN_S_TASK_TYPE = "转运"
|
};
|
string taskNo2 = task.CN_S_TASK_NO + "_2";
|
//创建第二个任务
|
TN_WM_TASKEntity taskEntity2 = new TN_WM_TASKEntity()
|
{
|
CN_S_TASK_NO = taskNo2,
|
CN_S_TRAY_CODE = task.CN_S_TRAY_CODE,
|
CN_S_START_BIT = task.CN_S_CONNECT_BIT,
|
CN_S_END_BIT = task.CN_S_END_BIT,
|
CN_S_STATE = Constants.TaskState_NoExecuted,
|
CN_S_BF_TASK_NO = "",
|
CN_S_AF_TASK_NO = "",
|
CN_S_STOCK_CODE = task.CN_S_STOCK_CODE,
|
CN_S_START_AREA = connectBit.CN_S_AREA_CODE,
|
CN_S_END_AREA = task.CN_S_END_AREA,
|
CN_N_PRIORITY = 1,
|
CN_S_CREATOR = "sys",
|
CN_S_CREATOR_BY = "sys",
|
CN_T_CREATE = DateTime.Now,
|
CN_T_MODIFY = DateTime.Now,
|
CN_S_REMARK = "",
|
CN_S_TASK_FLAG = Constants.TaskFlag_AGV,
|
CN_S_TASK_TYPE = "转运"
|
};
|
var or = UseTransaction(trans =>
|
{
|
//增加子任务
|
CreateDapperDAL<TN_WM_TASKEntity>().Add(taskEntity1, trans);
|
//更新接驳位状态
|
CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
|
{
|
CN_S_LOCATION_STATE = Constants.Location_State_InLock
|
}, new
|
{
|
CN_S_LOCATION_CODE = taskEntity1.CN_S_END_BIT
|
}, trans);
|
// 更新主任务接驳位 状态置为执行中 记录接驳位和准备点
|
CreateDapperDAL<TN_WM_TASKEntity>().Update(new
|
{
|
CN_S_CONNECT_BIT = task.CN_S_CONNECT_BIT,
|
CN_S_EXT1 = task.CN_S_EXT1,
|
CN_S_STATE = Constants.TaskState_Executing
|
}, new
|
{
|
CN_S_TASK_NO = task.CN_S_TASK_NO
|
}, trans);
|
//立库任务 需要调用wcs接口
|
// 发送Wcs任务
|
Log.Detail(LogType.LogPara("调用WCS接口执行任务"), "任务信息:" + JsonConvert.SerializeObject(taskEntity1));
|
OperateResult re = BLLCreator.Create<OtherSysApi>().SendWcsCreateTask(taskEntity1);
|
Log.Detail(LogType.LogPara("调用WCS接口执行任务"), "执行结果:" + JsonConvert.SerializeObject(re));
|
if (!re.Success)
|
{
|
throw new Exception(re.Msg);
|
}
|
|
//增加子任务
|
CreateDapperDAL<TN_WM_TASKEntity>().Add(taskEntity2, trans);
|
//更新准备点状态
|
CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
|
{
|
CN_S_LOCATION_STATE = Constants.Location_State_OutLock
|
}, new
|
{
|
CN_S_LOCATION_CODE = taskEntity2.CN_S_START_BIT
|
}, trans);
|
|
//agv任务
|
re = new OtherSysApi().SendAmsCreateTask(taskEntity2);
|
if (!re.Success)
|
{
|
throw new Exception(re.Msg);
|
}
|
});
|
if (!or.Success) throw new Exception(or.Msg);
|
}
|
else
|
{
|
//未执行表示第一个任务
|
if (task.CN_S_STATE == Constants.TaskState_NoExecuted)
|
{
|
//立库货位
|
string lkBit = string.Empty;
|
//根据任务类型判断立库货位
|
if (task.CN_S_TASK_TYPE == Constants.Out)
|
{
|
lkBit = task.CN_S_START_BIT;
|
}
|
else if (task.CN_S_TASK_TYPE == Constants.In)
|
{
|
lkBit = task.CN_S_END_BIT;
|
}
|
else
|
{
|
throw new Exception("自管任务任务类型不正确");
|
}
|
|
var locationBit = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new
|
{
|
CN_S_LOCATION_CODE = lkBit
|
});
|
if (locationBit == null)
|
throw new Exception("未找到立库货位:" + lkBit);
|
var _bit = connectBits.Find(f => f.tunnel == Util.ToString(locationBit.CN_S_ROADWAY).Trim());
|
if (_bit == null)
|
throw new Exception("未找到配置巷道:" + locationBit.CN_S_ROADWAY + "的接驳位");
|
|
var connectBit = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new
|
{
|
CN_S_LOCATION_CODE = _bit.bit
|
});
|
if (connectBit == null)
|
throw new Exception("未找到接驳位货位:" + _bit.bit);
|
if (connectBit.CN_S_LOCATION_STATE != Constants.Location_State_Normal)
|
throw new Exception("接驳位:" + _bit.bit + "存在未执行完的任务");
|
|
//赋值接驳位
|
task.CN_S_CONNECT_BIT = _bit.bit;
|
|
string taskNo = task.CN_S_TASK_NO + "_1";
|
//创建第一个任务
|
TN_WM_TASKEntity taskEntity = new TN_WM_TASKEntity()
|
{
|
CN_S_TASK_NO = taskNo,
|
CN_S_TRAY_CODE = task.CN_S_TRAY_CODE,
|
CN_S_START_BIT = task.CN_S_START_BIT,
|
CN_S_END_BIT = task.CN_S_CONNECT_BIT,
|
CN_S_STATE = Constants.TaskState_NoExecuted,
|
CN_S_BF_TASK_NO = "",
|
CN_S_AF_TASK_NO = "",
|
CN_S_STOCK_CODE = task.CN_S_STOCK_CODE,
|
CN_S_START_AREA = task.CN_S_START_AREA,
|
CN_S_END_AREA = connectBit.CN_S_AREA_CODE,
|
CN_N_PRIORITY = 1,
|
CN_S_CREATOR = "sys",
|
CN_S_CREATOR_BY = "sys",
|
CN_T_CREATE = DateTime.Now,
|
CN_T_MODIFY = DateTime.Now,
|
CN_S_REMARK = "",
|
CN_S_TASK_FLAG = task.CN_S_TASK_TYPE == Constants.Out ? Constants.TaskFlag_LG : Constants.TaskFlag_AGV,
|
CN_S_TASK_TYPE = "转运"
|
};
|
var or = UseTransaction(trans =>
|
{
|
//增加子任务
|
CreateDapperDAL<TN_WM_TASKEntity>().Add(taskEntity, trans);
|
//更新接驳位状态
|
CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
|
{
|
CN_S_LOCATION_STATE = Constants.Location_State_InLock
|
}, new
|
{
|
CN_S_LOCATION_CODE = taskEntity.CN_S_END_BIT
|
}, trans);
|
// 更新主任务接驳位 状态置为执行中
|
CreateDapperDAL<TN_WM_TASKEntity>().Update(new
|
{
|
CN_S_CONNECT_BIT = task.CN_S_CONNECT_BIT,
|
CN_S_STATE = Constants.TaskState_Executing
|
}, new
|
{
|
CN_S_TASK_NO = task.CN_S_TASK_NO
|
}, trans);
|
//立库任务 需要调用wcs接口
|
if (taskEntity.CN_S_TASK_FLAG == Constants.TaskFlag_LG)
|
{
|
//to do...
|
#region 待测试
|
//OperateResult re = new OtherSysApi().SendWcsCreateTask(taskEntity, _bit);
|
//if (!re.Success)
|
//{
|
// throw new Exception(re.Msg);
|
//}
|
#endregion
|
}
|
else//agv任务
|
{
|
//OperateResult re = new OtherSysApi().SendAmsCreateTask(taskEntity);
|
//if (!re.Success)
|
//{
|
// throw new Exception(re.Msg);
|
//}
|
}
|
});
|
if (!or.Success) throw new Exception(or.Msg);
|
}
|
else//执行一半的任务,开始创建第二个任务
|
{
|
string taskNo = task.CN_S_TASK_NO + "_2";
|
var connectBit = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new
|
{
|
CN_S_LOCATION_CODE = task.CN_S_CONNECT_BIT
|
});
|
var _bit = connectBits.Find(f => f.tunnel == Util.ToString(connectBit.CN_S_ROADWAY).Trim());
|
if (_bit == null)
|
throw new Exception("未找到配置巷道:" + connectBit.CN_S_ROADWAY + "的接驳位");
|
//创建第二个任务
|
TN_WM_TASKEntity taskEntity = new TN_WM_TASKEntity()
|
{
|
CN_S_TASK_NO = taskNo,
|
CN_S_TRAY_CODE = task.CN_S_TRAY_CODE,
|
CN_S_START_BIT = task.CN_S_CONNECT_BIT,
|
CN_S_END_BIT = task.CN_S_END_BIT,
|
CN_S_STATE = Constants.TaskState_NoExecuted,
|
CN_S_BF_TASK_NO = "",
|
CN_S_AF_TASK_NO = "",
|
CN_S_STOCK_CODE = task.CN_S_STOCK_CODE,
|
CN_S_START_AREA = connectBit.CN_S_AREA_CODE,
|
CN_S_END_AREA = task.CN_S_END_AREA,
|
CN_N_PRIORITY = 1,
|
CN_S_CREATOR = "sys",
|
CN_S_CREATOR_BY = "sys",
|
CN_T_CREATE = DateTime.Now,
|
CN_T_MODIFY = DateTime.Now,
|
CN_S_REMARK = "",
|
CN_S_TASK_FLAG = task.CN_S_TASK_TYPE == Constants.Out ? Constants.TaskFlag_AGV : Constants.TaskFlag_LG,
|
CN_S_TASK_TYPE = "转运"
|
};
|
|
var or = UseTransaction(trans =>
|
{
|
//增加子任务
|
CreateDapperDAL<TN_WM_TASKEntity>().Add(taskEntity, trans);
|
//更新接驳位状态
|
CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
|
{
|
CN_S_LOCATION_STATE = Constants.Location_State_OutLock
|
}, new
|
{
|
CN_S_LOCATION_CODE = taskEntity.CN_S_START_BIT
|
}, trans);
|
// 更新主任务接驳位 状态置为执行中
|
CreateDapperDAL<TN_WM_TASKEntity>().Update(new
|
{
|
CN_S_STATE = Constants.TaskState_Executing
|
}, new
|
{
|
CN_S_TASK_NO = task.CN_S_TASK_NO
|
}, trans);
|
|
//立库任务 需要调用wcs接口
|
if (taskEntity.CN_S_TASK_FLAG == Constants.TaskFlag_LG)
|
{
|
//to do...
|
#region 待测试
|
//OperateResult re = new OtherSysApi().SendWcsCreateTask(taskEntity, _bit);
|
//if (!re.Success)
|
//{
|
// throw new Exception(re.Msg);
|
//}
|
#endregion
|
}
|
else//agv任务
|
{
|
//OperateResult re = new OtherSysApi().SendAmsCreateTask(taskEntity);
|
//if (!re.Success)
|
//{
|
// throw new Exception(re.Msg);
|
//}
|
}
|
});
|
if (!or.Success) throw new Exception(or.Msg);
|
}
|
}
|
|
ors.Add(OperateResult.Succeed("生成成功"));
|
}
|
catch (Exception ex)
|
{
|
ors.Add(OperateResult.Error(ex.Message));
|
}
|
}
|
Log.DomainInfo("SelfManageTask", JsonConvert.SerializeObject(ors));
|
}
|
catch (Exception ex)
|
{
|
Log.DomainInfo("SelfManageTask Error", ex.Message);
|
}
|
}
|
}
|
|
/// <summary>
|
/// 配置文件中的常量定义
|
/// </summary>
|
public class ConnectBitConstants
|
{
|
/// <summary>
|
/// 带束入库
|
/// </summary>
|
public static string DSRK = "带束入库";
|
/// <summary>
|
/// 带束出库
|
/// </summary>
|
public static string DSCK = "带束出库";
|
/// <summary>
|
/// 满托入库
|
/// </summary>
|
public static string MTRK = "满托入库";
|
/// <summary>
|
/// 空托出库
|
/// </summary>
|
public static string KTCK = "空托出库";
|
/// <summary>
|
/// 满托出库
|
/// </summary>
|
public static string MTCK = "满托出库";
|
/// <summary>
|
/// 空托入库
|
/// </summary>
|
public static string KTRK = "空托入库";
|
}
|
|
/// <summary>
|
/// 任务阶段常量
|
/// </summary>
|
public class TaskSectionConstants
|
{
|
/// <summary>
|
/// 任务完成
|
/// </summary>
|
public static string COMPLETE = "任务完成";
|
public static string ERROR = "执行失败";
|
|
#region 半成品
|
|
/// <summary>
|
/// 半成品-空托出库
|
/// </summary>
|
public static string BCP_KTCK = "半成品-空托出库";
|
/// <summary>
|
/// 半成品-满托入库
|
/// </summary>
|
public static string BCP_MTRK = "半成品-满托入库";
|
|
#endregion
|
|
#region 成型机
|
|
/// <summary>
|
/// 成型机-半成品回库
|
/// </summary>
|
public static string CXJ_BCPHK = "成型机-半成品回库";
|
/// <summary>
|
/// 成型机-空托回库-记录阶段
|
/// </summary>
|
public static string CXJ_KTHK_RECORD = "成型机-空托回库-记录阶段";
|
/// <summary>
|
/// 成型机-空托回库-入库阶段
|
/// </summary>
|
public static string CXJ_KTHK_KTRK = "成型机-空托回库-入库阶段";
|
/// <summary>
|
/// 成型机-满托出库
|
/// </summary>
|
public static string CXJ_MTCK = "成型机-满托出库";
|
|
#endregion
|
|
#region 带束
|
|
/// <summary>
|
/// 带束-半成品/空托回库
|
/// </summary>
|
public static string DS_BCPKTHK = "成型机带束-半成品/空托回库";
|
/// <summary>
|
/// 带束-满托出库
|
/// </summary>
|
public static string DS_MTCK = "成型机带束-满托出库";
|
|
#endregion
|
}
|
}
|