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