using HH.WMS.BLL;
using HH.WMS.BLL.Algorithm;
using HH.WMS.BLL.InStock;
using HH.WMS.BLL.SysMgr;
using HH.WMS.Common;
using HH.WMS.Common.Algorithm;
using HH.WMS.Entitys;
using HH.WMS.Entitys.Basic;
using HH.WMS.Entitys.Entitys;
using HH.WMS.WebApi.Areas.Common.Controllers;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace HH.WMS.WebApi.Areas.InStock.Controllers
{
public class UpController : BaseController
{
#region 获取所有待上架(暂存区)的物料(到货入+移库入)
///
/// 获取所有待上架(暂存区)的物料(到货入+移库入)
///
/// 物料编号
///
/// [HANHE(DBS)] CREATED BY 2019-03-7
public OperateResult GetWaitUpShelvesItems(string itemCode)
{
return ValidateToken(m =>
{
List < TN_WM_B_TRAY_ITEM_MSTEntity > waitUp = BLLCreator.Create().GetWaitUpShelvesItems(itemCode);
return OperateResult.Succeed("", waitUp);
});
}
#endregion
#region 获取托盘预分配信息
///
/// 获取托盘预分配信息
///
/// 托盘号
///
/// [HANHE(DBS)] CREATED BY 2019-03-7
public OperateResult GetTrayAlloc(string trayCode)
{
return ValidateToken(m =>
{
List list = BLLCreator.Create>().GetList(new { CN_S_TRAY_CODE = trayCode });
return OperateResult.Succeed("", list);
});
}
#endregion
#region 指引-托盘出库
///
/// 根据物料、数量指引托盘
///
///
///
/// [HANHE(DBS)] CREATED BY 2019-03-07
/// [HANHE(XDL)] CREATED BY 2019-03-26
public OperateResult CommitUpGuide(List data)
{
try
{
string tokenId = data[0].tokenId.ToString();
return ValidateToken(tokenId, m =>
{
//计算托盘
List listItemClass = new List();
foreach (dynamic item in data)
{
itemInClass itemEntity = new itemInClass()//需要补料的物料
{
itemCode = item.item.ToString(),
lotNo = "",
//packingCode = item.CN_S_PACKING_CODE,
itemQty = decimal.Parse(item.qty.ToString())
};
listItemClass.Add(itemEntity);
}
OutFeedResultEntity feedAlloc = BLLCreator.Create().Feed(new FeedAlgorEntity()
{
FeedType = FeedGoodType.FridTrayFirst,
stockArea = data[0].workAreaCode.ToString(),
lstItem = listItemClass,
lockLocation = false
});
if (!feedAlloc.Success)
return OperateResult.Error("算法异常:" + feedAlloc.Msg);
List lstAllocQuery = BLLCreator.Create().AllocFindEntity(feedAlloc, m);
List taskList = BLLCreator.Create().InstallTasks(lstAllocQuery, data[0].trayEndBit.ToString());
return BLLCreator.Create().CommitUpGuide(lstAllocQuery, taskList);
});
}
catch (Exception ex)
{
Log.Info("托盘指引出库异常!", ex.Message.ToString());
return OperateResult.Error(ex.Message.ToString());
}
}
#endregion
#region 上架-自动入库
///
/// 上架
///
/// 任务实体
///
/// [HANHE(DBS)] CREATED BY 2019-03-11
public OperateResult CommitUp(TN_WM_TASKEntity task)
{
return ValidateToken(task.TokenId, m =>
{
List items = BLLCreator.CreateDapper().GetTopList(1, new { CN_S_TRAY_CODE = task.CN_S_TRAY_CODE });
//计算合适的货位
//调用入库算法-调用调用AutoBom接口,获取空货位
InAlgorEnitty iAe = new InAlgorEnitty()
{
stockAreaCode = task.CN_S_END_AREA,
logicCode = "",
locationQty = 1,
trayCode = task.CN_S_TRAY_CODE,
itemCode = items.Count == 0 ? "" : items[0].CN_S_ITEM_CODE,
lockLocation = false
};
InResultEntity irEresult = BLLCreator.Create().In(iAe);
if (!irEresult.Success)
return OperateResult.Error("算法异常:" + irEresult.Msg);
OperateResult or = new OperateResult();
foreach (locationEntity n in irEresult.lstLocation)
{
or = GetCode(m, Constants.Rule_TaskNo);//获取新的任务号
if (!or.Success)
return or;
task.CN_N_PRIORITY = 1;
task.CN_S_CREATOR = task.CN_S_MODIFY = m.CN_S_LOGIN;
task.CN_S_CREATOR_BY = task.CN_S_MODIFY_BY = m.CN_S_NAME;
task.CN_S_END_BIT = n.locationCode;
task.CN_S_STATE = "未执行";
task.CN_S_TASK_NO = or.Data.ToString();
task.CN_T_CREATE = task.CN_T_MODIFY = DateTime.Now;
}
return BLLCreator.Create().CreateTask(task);
});
}
#endregion
#region 补料-托盘物料绑定
///
/// 上架
///
/// 托盘物料实体
///
/// [HANHE(XDL)] CREATED BY 2019-03-27
public OperateResult CommitTrayItem(List trayItemEntity)
{
try
{
string tokenId = trayItemEntity[0].TokenId.ToString();
return ValidateToken(tokenId, m =>
{
return BLLCreator.Create().CommitTrayItem(trayItemEntity,m);
});
}
catch (Exception ex)
{
Log.Info("托盘指引出库异常!", ex.Message.ToString());
return OperateResult.Error(ex.Message.ToString());
}
}
#endregion
}
}