using HH.Redis.ReisModel;
using HH.WMS.BLL;
using HH.WMS.BLL.Basic;
using HH.WMS.BLL.Common;
using HH.WMS.BLL.InStock;
using HH.WMS.BLL.SysMgr;
using HH.WMS.Common;
using HH.WMS.Common.External;
using HH.WMS.Entitys;
using HH.WMS.Entitys.Algorithm;
using HH.WMS.Entitys.Basic;
using HH.WMS.Entitys.Common;
using HH.WMS.Entitys.Entitys;
using HH.WMS.WebApi.Areas.Common.Controllers;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
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 TrayItemRelController : BaseController
{
#region 扫描托盘返回托盘物料(PDA接口)
///
/// 扫描托盘返回托盘物料明细
///
/// 托盘编码
///
/// [HANHE(XDL)] CREATED BY 2018-11-17
[HttpGet]
public string GetTrayItemRelDetail(string trayCode)
{
return ValidateToken(t =>
{
List trayItemEntityList = BLLCreator.Create>().GetList(new { CN_S_TRAY_CODE = trayCode });
return JsonConvert.SerializeObject(OperateResult.Succeed("", trayItemEntityList));
});
}
///
/// 扫描托盘返回托盘去向汇总(三生PDA物料上架 调用)
///
/// token验证值
/// 托盘编码
///
/// [HANHE(XDL)] CREATED BY 2018-11-17
[HttpGet]
public string GetTrayItemRelInArea(string trayCode)
{
try
{
return ValidateToken(t =>
{
List trayLocation = new List();
trayLocation = BLLCreator.Create>().GetList(new { CN_S_TRAY_CODE = trayCode });
if (trayLocation.Any())
{
return JsonConvert.SerializeObject(OperateResult.Error("该托盘已在库"));
}
List trayItemList = BLLCreator.Create>().GetList(new { CN_S_TRAY_CODE = trayCode });
var inAreaCodeStr = "";
//拼接逗号分隔字符串
foreach (TN_WM_B_TRAY_ITEM_MSTEntity item in trayItemList)
{
inAreaCodeStr = inAreaCodeStr + item.CN_S_IN_AREA_CODE + ",";
}
if (inAreaCodeStr.Length > 0)
{
inAreaCodeStr = inAreaCodeStr.Substring(0, inAreaCodeStr.Length - 1);
}
//将逗号分隔字符串转换成List
List inAreaCodeList = new List(inAreaCodeStr.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries));
//List去重
inAreaCodeList = inAreaCodeList.Distinct().ToList();
List listStockArea = new List();
foreach (var areaCode in inAreaCodeList)
{
AutoBomStockAreaEntity entity = BLLCreator.Create().GetStockAreaEntity(areaCode);
if (entity == null)
{ return JsonConvert.SerializeObject(OperateResult.Error(areaCode + "未获取到库区实体!")); }
listStockArea.Add(entity);
}
return JsonConvert.SerializeObject(OperateResult.Succeed("", listStockArea));
});
}
catch (Exception ex)
{
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message.ToString()));
}
}
#endregion
#region 码盘(PDA接口)
///
/// 码盘
///
/// token验证值
/// 数据Json
///
/// [HANHE(XDL)] CREATED BY 2018-11-17
[HttpPost]
public string SavePalletItemRelation(JObject jsonData)
{
Log.Info("开始进入码盘接口:====>", "");
try
{
ItemOnTrayEntity entity = JsonConvert.DeserializeObject(jsonData.ToString());
return ValidateToken(entity.TokenId, t =>
{
OperateResult oresult = BLLCreator.Create().SavePalletItemRelation(entity, t);
return JsonConvert.SerializeObject(oresult);
});
}
catch (Exception ex)
{
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message.ToString()));
}
}
#endregion
#region 呼叫补料托盘(生成出库任务、发送AMS指令)
///
/// 呼叫补料托盘
///
/// {ItemCode:"",AreaCode:"",EndLocation:"",TokenId:""}
///
/// [HANHE(XDL)] CREATED BY 2019-03-18
[HttpPost]
public string CallFeedingTray(JObject jsonData)
{
string itemCode = jsonData.Value("ItemCode");//物料编码
string areaCode = jsonData.Value("AreaCode");//库区
string endLocation = jsonData.Value("EndLocation");//目的位置
string tokenId = jsonData.Value("TokenId");//目的位置
Log.Info("开始进入呼叫补料托盘接口:====>", "");
try
{
return ValidateToken(tokenId, t =>
{
OperateResult oresult = BLLCreator.Create().CallFeedingTray(itemCode, areaCode, endLocation, t);
return JsonConvert.SerializeObject(oresult);
});
}
catch (Exception ex)
{
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message.ToString()));
}
}
#endregion
#region 获取托盘中物料的信息,按批次汇总
///
/// 获取托盘中物料的信息,按批次汇总
///
/// tokenId
/// 托盘号
///
/// [Hanhe(DBS)] CREATED BY 2018/12/8
public OperateResult GetTrayItem(string locationCode)
{
try
{
string projectCode = string.Empty;
try
{
projectCode = System.Configuration.ConfigurationManager.AppSettings["projectCode"].ToString();
}
catch (Exception)
{
}
return ValidateToken(t =>
{
DataTable dt = new DataTable();
if (projectCode == ProjectCodes.TaiZhouLongJi)
{
dt = BLLCreator.Create().GetTrayItemLJ(locationCode);
}
else
{
dt = BLLCreator.Create().GetTrayItem(locationCode);
}
return OperateResult.Succeed("", dt);
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message.ToString());
}
}
#endregion
#region 获取入库策略
///
/// 获取入库策略=根据库区编码
///
/// 库区编码
///
[HttpGet]
public OperateResult GetStrategyListByAreaCode(string areaCode)
{
List stockList = BLLCreator.Create().GetStockList();
if (!stockList.Any())
{
return OperateResult.Error("未获取到仓库信息!");
}
List lstStrategy = BLLCreator.Create().GetStrateListByAreaOrStock(stockList[0].CN_S_STOCK_CODE, areaCode, Constants.In);
return OperateResult.Succeed("", lstStrategy);
}
#endregion
}
}