using HH.WMS.BLL;
using HH.WMS.BLL.Algorithm;
using HH.WMS.BLL.Basic;
using HH.WMS.Common.Algorithm;
using HH.WMS.Entitys;
using HH.WMS.Entitys.Algorithm;
using HH.WMS.Entitys.Basic;
using Newtonsoft.Json;
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.Common.Controllers
{
public class LocationController : BaseController
{
#region 获取仓库下的所有巷道
///
/// 获取仓库下的所有巷道
///
///
/// 仓库号
/// 库区号
///
/// [Hanhe(DBS)] created 2018/12/04
[HttpGet]
public OperateResult GetTunnels(string stockCode, string areaCode)
{
try
{
return ValidateToken(y =>
{
List structreList = BLLCreator.Create().GetStructList(stockCode, areaCode);
List roadWay = structreList.GroupBy(x => x.CN_S_ROADWAY).OrderBy(x => x.Key).Select(o => o.Key).ToList();
return OperateResult.Succeed("", roadWay);
});
}
catch (Exception ex)
{
return OperateResult.Error("查询异常!" + ex.ToString());
}
}
#endregion
#region 获取巷道下面的所有排信息
///
/// 获取巷道下面的所有排信息
///
///
/// 仓库号
/// 库区号
/// 巷道
///
/// [Hanhe(DBS)] created 2018/12/04
[HttpGet]
public OperateResult GetStructList(string stockCode, string areaCode, string roadway)
{
return ValidateToken(y =>
{
List structreList = BLLCreator.Create().GetStructList(stockCode, areaCode);
if (!string.IsNullOrEmpty(roadway))
{
structreList = structreList.FindAll(x => x.CN_S_ROADWAY.Equals(roadway)).ToList();
}
structreList = structreList.OrderBy(e => e.CN_S_ROW).ToList();
return OperateResult.Succeed("", structreList);
});
}
#endregion
#region 获取巷道下的货位信息
///
/// 获取巷 道下的货位信息
///
///
/// 仓库号
/// 库区号
/// 巷道号
///
/// [Hanhe(DBS)] created 2018/12/04
[HttpGet]
public string GetTunnelLocations(string stockCode, string areaCode, string roadway)
{
try
{
return ValidateToken(x =>
{
DataTable dt = BLLCreator.Create().ViewState(stockCode, areaCode, roadway);
return JsonConvert.SerializeObject(OperateResult.Succeed("", dt));
});
}
catch (Exception ex)
{
return JsonConvert.SerializeObject(OperateResult.Error("查询异常!" + ex.ToString()));
}
}
#endregion
#region PDA接口-获取建议货位
///
/// 整托获取建议货位-空货位
///
/// 库区
/// 托盘编码
/// 物料编码
/// 获取货位的数量
/// tokenId
///
[HttpGet]
public OperateResult GetZtEmptyCommandLocation(string areaCode, string trayCode, string itemCode, int locationQty)
{
return ValidateToken(x =>
{
//调用入库算法,获取空货位
InAlgorEnitty iAe = new InAlgorEnitty()
{
stockAreaCode = areaCode,
logicCode = "",
locationQty = locationQty,
trayCode = trayCode,
itemCode = itemCode,
lockLocation = false//是否需要锁定货位
};
iAe.lstDevice = null;
var paramString = JsonConvert.SerializeObject(iAe);
InResultEntity irEresult = BLLCreator.Create().In(iAe);
if (!irEresult.Success)
{
return OperateResult.Error(irEresult.Msg);//货位获取失败!
}
return OperateResult.Succeed("", irEresult.lstLocation);
});
}
///
/// 物料上架获取建议货位-空货位
///
///
///
///
[HttpGet]
public OperateResult GetEmptyCommandLocation(string areaCode, string itemCode)
{
return ValidateToken(x =>
{
//调用补料算法,获取空货位
FeedAlgorEntity fAe = new FeedAlgorEntity()
{
stockAreaCode = areaCode,
itemCode = itemCode,
lockLocation = false//是否需要锁定货位
};
var paramString = JsonConvert.SerializeObject(fAe);
FeedResultEntity feedResult = BLLCreator.Create().FeedEmptyLocation(fAe);
if (!feedResult.Success)
{
return OperateResult.Error(feedResult.Msg);//货位获取失败!
}
return OperateResult.Succeed("", feedResult.lstLocation);
});
}
#endregion
[HttpGet]
public OperateResult GetStateQty(string stockCode)
{
return ValidateToken(x =>
{
DataTable dt = BLLCreator.Create().GetStateQty(stockCode);
return OperateResult.Succeed("", dt);
});
}
#region 获取摆放位置
///
/// 获取摆放位置
///
/// 区域类型
///
[HttpGet]
public OperateResult GetSHLocation(string areaClass)
{
return ValidateToken(x =>
{
List list = new List();
List listlocation = new List();
list = BLLCreator.Create().GetSHLocationArea(areaClass);
if (list.Count > 0)
{
List arrAreaCode = new List();
foreach (var item in list)
{
arrAreaCode.Add(item.CN_S_AREA_CODE);
}
listlocation = BLLCreator.Create().GetSHLocation(arrAreaCode);
}
return OperateResult.Succeed("", listlocation);
});
}
#endregion
}
}