using HH.WMS.BLL.InStock;
|
using HH.WMS.Common;
|
using HH.WMS.Common.External;
|
using HH.WMS.Common.Response;
|
using HH.WMS.Entitys.External;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using HH.WMS.BLL.SysMgr;
|
using HH.WMS.Entitys;
|
using HH.WMS.Entitys.Basic;
|
|
namespace HH.WMS.BLL.External
|
{
|
/// <summary>
|
/// 处理接口参数
|
/// </summary>
|
public static class ParameterHandleBLL
|
{
|
private static string _className = "HH.BWMS.BLL.External.ParameterHandle";
|
|
#region 入作业区接口参数处理 + HandleInWorkArea
|
|
/// <summary>
|
/// 入作业区接口参数处理
|
/// </summary>
|
/// <param name="executeInWorkAreaPara"></param>
|
/// <returns></returns>
|
public static ExecuteInWorkAreaPara HandleInWorkArea(ExecuteInWorkAreaPara executeInWorkAreaPara)
|
{
|
_className += ".HandleInWorkArea";
|
|
//任务号 考虑是否重复?
|
if (string.IsNullOrEmpty(executeInWorkAreaPara.InWorkAreaEntity.taskNo))
|
{
|
var postData = "{\"appCode\":\"" + Constants.appCode + "\",\"ruleName\":\"" + Constants.Rule_InTaskNo + "\",\"orgId\":\"0\",\"orgFlag\":\"\"}";
|
executeInWorkAreaPara.InWorkAreaEntity.taskNo = WebApiManager.HttpAutoBom_Post("api/BillRule/GenBillNo", postData); ;
|
if (string.IsNullOrEmpty(executeInWorkAreaPara.InWorkAreaEntity.taskNo))
|
executeInWorkAreaPara.BasisResponse = BasisResponse.Error("获取AUTOBOM任务号异常,请检查是否维护生成规则!", _className);
|
}
|
|
//托盘码
|
if (string.IsNullOrEmpty(executeInWorkAreaPara.InWorkAreaEntity.trayCode))
|
{
|
//转运并且不传托盘号,默认从货位中获取
|
if (executeInWorkAreaPara.InWorkAreaEntity.isTransport == "Y")
|
{
|
//查找托盘号和物料编码 and by liuying
|
var lstObj = BLLCreator.Create<TN_WM_B_TRAY_LOCATIONBLL>().GetListByLocationCode(executeInWorkAreaPara.InWorkAreaEntity.startBit);
|
|
if (lstObj.Count > 0)
|
{
|
//去除已经在任务中的托盘,支持吉利项目、小木耳项目
|
var strTray = string.Join("','", lstObj.Select(o => o.CN_S_TRAY_CODE).ToList());
|
var lstTasks = BLLCreator.Create<TN_WM_TASKBLL>().GetTask(" AND CN_S_TRAY_CODE in ('" + strTray + "') AND (CN_S_STATE = '未执行' or CN_S_STATE = '执行中')");
|
var lstInTaskTray = lstTasks.Select(o => o.CN_S_TRAY_CODE).ToList();
|
lstObj.RemoveAll(o => lstInTaskTray.Contains(o.CN_S_TRAY_CODE));
|
|
if (lstObj.Count > 0)
|
{
|
executeInWorkAreaPara.InWorkAreaEntity.trayCode = lstObj[0].CN_S_TRAY_CODE;
|
var itemEntity = new ChaoYangItemDataEntity();
|
executeInWorkAreaPara.InWorkAreaEntity.data = new List<ChaoYangItemDataEntity>();
|
|
//根据托盘号查询托盘产品关联信息主表
|
var trayItemMst = BLLCreator.Create<TN_WM_B_TRAY_ITEM_RELBLL>().GetTrayItemMst(" AND CN_S_TRAY_CODE ='" + lstObj[0].CN_S_TRAY_CODE + "'");
|
|
//List<ItemRelEntity> lstItem = BLLCreator.Create<TN_WM_B_TRAY_ITEM_RELBLL>().GetItemRelModel(" WHERE CN_S_TRAY_CODE ='" + lstObj[0].CN_S_TRAY_CODE + "'");
|
if (trayItemMst.Count > 0)
|
{
|
//查询托盘产品关联信息子表
|
var trayItemDtl = BLLCreator.Create<TN_WM_B_TRAY_ITEM_RELBLL>().GetTrayItemDtl(" AND CN_PARENT_GUID='" + trayItemMst[0].CN_GUID + "'");
|
itemEntity.itemCode = trayItemMst[0].CN_S_ITEM_CODE;
|
itemEntity.itemName = trayItemMst[0].CN_S_ITEM_NAME;
|
itemEntity.itemPackUnit = trayItemDtl[0].CN_S_PACKING_UNIT;
|
itemEntity.qty = (decimal)(trayItemMst[0].CN_F_QUANTITY == null ? 0 : trayItemMst[0].CN_F_QUANTITY);
|
itemEntity.lotNo = trayItemMst[0].CN_S_PRODUCTION_BATCH;
|
itemEntity.itemState = trayItemMst[0].CN_S_ITEM_STATE;
|
itemEntity.productionDate = trayItemDtl[0].CN_T_PRODUCTION;
|
itemEntity.uniqueCode = trayItemDtl[0].CN_S_UNIQUE_CODE;
|
itemEntity.itemWeight = trayItemDtl[0].CN_S_SERIAL_NO;
|
itemEntity.itemModel = trayItemMst[0].CN_S_MODEL;
|
executeInWorkAreaPara.InWorkAreaEntity.data.Add(itemEntity);
|
}
|
}
|
else
|
{
|
executeInWorkAreaPara.BasisResponse = BasisResponse.Error("该货位" + executeInWorkAreaPara.InWorkAreaEntity.startBit + "中的托盘都已在任务中,不允许重复下达", _className);
|
}
|
}
|
else
|
{
|
executeInWorkAreaPara.BasisResponse = BasisResponse.Error("起点货位" + executeInWorkAreaPara.InWorkAreaEntity.startBit + "没有绑定托盘", _className);
|
return executeInWorkAreaPara;
|
}
|
}
|
else
|
{
|
//生成虚拟托盘
|
var postData = "{\"appCode\":\"" + Constants.appCode + "\",\"ruleName\":\"" + Constants.VirtualTray + "\",\"orgId\":\"0\",\"orgFlag\":\"\"}";
|
executeInWorkAreaPara.InWorkAreaEntity.trayCode = WebApiManager.HttpAutoBom_Post("api/BillRule/GenBillNo", postData);
|
}
|
}
|
|
//处理物料编码
|
if (executeInWorkAreaPara.InWorkAreaEntity.data != null)
|
{
|
foreach (var itemData in executeInWorkAreaPara.InWorkAreaEntity.data)
|
{
|
var item = BLLCreator.Create<HH.WMS.BLL.Basic.TN_WMS_ITEMBLL>().GetItem(itemData.itemCode);
|
//BLLCreator.Create<DapperBLL<AutoBomItemEntity>>().GetSingleEntity(new { CN_S_ITEM_CODE = itemData.itemCode });
|
if (item != null)
|
{
|
itemData.itemPackUnit = item.CN_S_PACK_UNIT;
|
itemData.itemName = item.CN_S_ITEM_NAME;
|
}
|
else
|
{
|
executeInWorkAreaPara.BasisResponse = BasisResponse.Error("物料" + itemData.itemCode + "在AutoBom中没有维护", _className);
|
return executeInWorkAreaPara;
|
}
|
}
|
}
|
return executeInWorkAreaPara;
|
}
|
|
#endregion
|
|
#region 出作业区接口参数处理 + HandleOutWorkArea
|
|
/// <summary>
|
/// 出作业区接口参数处理
|
/// </summary>
|
/// <param name="executeOutWorkAreaPara"></param>
|
/// <returns></returns>
|
public static ExecuteOutWorkAreaPara HandleOutWorkArea(ExecuteOutWorkAreaPara executeOutWorkAreaPara)
|
{
|
//任务号
|
if (string.IsNullOrEmpty(executeOutWorkAreaPara.OutWorkAreaEntity.taskNo))
|
{
|
var postData = "{\"appCode\":\"" + Constants.appCode + "\",\"ruleName\":\"" + Constants.Rule_OutTaskNo + "\",\"orgId\":\"0\",\"orgFlag\":\"\"}";
|
executeOutWorkAreaPara.OutWorkAreaEntity.taskNo = WebApiManager.HttpAutoBom_Post("api/BillRule/GenBillNo", postData);
|
if (string.IsNullOrEmpty(executeOutWorkAreaPara.OutWorkAreaEntity.taskNo))
|
executeOutWorkAreaPara.BasisResponse = BasisResponse.Error("获取AUTOBOM任务号异常!", _className);
|
}
|
|
//获取作业区列表
|
executeOutWorkAreaPara.WorkAreaProEntitys = BLLCreator.Create<TaskTransferBLL>().GetOutWorkPosition(executeOutWorkAreaPara);
|
if (!executeOutWorkAreaPara.WorkAreaProEntitys.Any())
|
{
|
executeOutWorkAreaPara.BasisResponse = BasisResponse.Error(string.Format("未获取到当前库区:{0}货位:{1}下的作业路径!", executeOutWorkAreaPara.OutWorkAreaEntity.endArea, executeOutWorkAreaPara.OutWorkAreaEntity.endBit), _className);
|
return executeOutWorkAreaPara;
|
}
|
|
return executeOutWorkAreaPara;
|
}
|
|
#endregion
|
|
/// <summary>
|
/// 出作业区接口返回结果
|
/// </summary>
|
/// <param name="trans"></param>
|
/// <param name="index"></param>
|
/// <returns></returns>
|
public static OkTask HandleOutWorkAreaResponse(TN_WM_TRANSPORT_TASKEntity trans, int index)
|
{
|
if (trans.CN_S_START_AREA_TYPE == Constants.Area_Struc_LiuLiStock || trans.CN_S_START_AREA_TYPE == Constants.Area_Struc_DuiDieStock)
|
{
|
trans.CN_S_START_BIT += "_" + trans.CN_S_QTY_INDEX;
|
}
|
|
var okTask = new OkTask()
|
{
|
index = index,
|
taskNo = trans.CN_S_TASK_NO,
|
startStock = trans.CN_S_STOCK_CODE,
|
startArea = trans.CN_S_START_AREA,
|
startBit = trans.CN_S_START_BIT,
|
endStock = trans.CN_S_STOCK_CODE,
|
endArea = trans.CN_S_END_AREA,
|
endBit = trans.CN_S_END_BIT,
|
priority = trans.CN_N_PRIORITY,
|
trayCode = trans.CN_S_CIR_OBJ_CODE
|
};
|
return okTask;
|
}
|
}
|
}
|