using HH.Redis.ReisModel;
using HH.WMS.BLL;
using HH.WMS.BLL.Basic;
using HH.WMS.BLL.InStock;
using HH.WMS.Common;
using HH.WMS.Entitys;
using HH.WMS.Entitys.Basic;
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 TrayLocationController : BaseController
{
#region 根据货位找托盘及其物料
///
/// 根据货位获取货位上托盘物料信息
///
/// token验证值
/// 货位编码
///
/// [HANHE(XDL)] CREATED BY 2018-11-13
[HttpGet]
public string GetTrayByLocationCode(string locationCode)
{
try
{
return ValidateToken(t =>
{
//判断货位编码是否存在
AutoBomLocationEntity locationModel = BLLCreator.Create().GetLocationModel(locationCode);
if (locationModel == null)
{
return JsonConvert.SerializeObject(OperateResult.Error("货位编码不存在!"));
}
DataTable dt = BLLCreator.Create().GetTrayByLocationCode(locationCode);
return JsonConvert.SerializeObject(OperateResult.Succeed("", dt));
});
}
catch (Exception ex)
{
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message.ToString()));
}
}
#endregion
#region 根据托盘找所在货位
///
/// 根据托盘找所在货位
///
/// token验证值
/// 货位编码
///
/// [HANHE(XDL)] CREATED BY 2018-11-15
[HttpGet]
public OperateResult GetLocationByTrayCode(string trayCode, string locationCode)
{
try
{
return ValidateToken(t =>
{
if (!string.IsNullOrEmpty(trayCode))
{
TN_WM_B_TRAY_INFOEntity trayInfo = BLLCreator.Create>().GetSingleEntity(new { CN_S_TRAY_CODE = trayCode }, "");
if (trayInfo == null)
{
return OperateResult.Error("托盘码不存在!");
}
}
if (string.IsNullOrEmpty(trayCode) && string.IsNullOrEmpty(locationCode))
{
return OperateResult.Error("参数缺失!");
}
string isAuto = Constants.Y;
if (!string.IsNullOrEmpty(locationCode))
{
AutoBomLocationEntity locationModel = BLLCreator.Create().GetLocationModel(locationCode);
if (locationModel != null)
{
AutoBomStockAreaEntity areaEntity = BLLCreator.Create().GetStockAreaEntity(locationModel.CN_S_AREA_CODE);
isAuto = areaEntity.CN_C_IS_AUTO;
}
}
DataTable dt = BLLCreator.Create().GetLocationByTrayCode(trayCode, locationCode);
if (dt.Rows.Count > 0)
{
dt.Columns.Add("CN_C_IS_AUTO");
for (int i = 0; i < dt.Rows.Count; i++)
{
dt.Rows[i]["CN_C_IS_AUTO"] = isAuto;
}
}
return OperateResult.Succeed("", dt);
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message.ToString());
}
}
///
/// 根据容器找所在货位信息
///
///
///
[HttpGet]
public OperateResult GetLocationByTray(string trayCode)
{
try
{
return ValidateToken(t =>
{
TN_WM_B_TRAY_LOCATIONEntity trayLocationEntity = BLLCreator.Create>().GetSingleEntity(new { CN_S_TRAY_CODE = trayCode }, "");
return OperateResult.Succeed("", trayLocationEntity);
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message.ToString());
}
}
#endregion
#region (PDA接口)物料上架
///
/// 物料执行上架
///
/// token验证值
/// 数据Json
///
/// [HANHE(XDL)] CREATED BY 2018-11-13
[HttpPost]
public OperateResult SaveLocationPalletRelation(JObject json)
{
try
{
Log.Info("物料上架开始", "");
ItemOnShelfEntity entity = JsonConvert.DeserializeObject(json.ToString());
return ValidateToken(entity.TokenId, t =>
{
if (t == null)
{
return OperateResult.Error("登陆人员信息获取失败!");
}
return BLLCreator.Create().SaveLocationPalletRelation(entity, t);
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message.ToString());
}
}
#endregion
#region (PDA接口)整托上架
///
/// 整托执行上架
///
/// 数据Json
///
/// [HANHE(XDL)] CREATED BY 2018-12-12
[HttpPost]
public OperateResult ZTSaveLocationPalletRelation(JObject json)
{
try
{
Log.Info("整托上架开始", "");
TrayOnShelfEntity entity = JsonConvert.DeserializeObject(json.ToString());
return ValidateToken(entity.TokenId, t =>
{
if (t == null)
{
return OperateResult.Error("登陆人员信息获取失败!");
}
return BLLCreator.Create().ZTSaveLocationPalletRelation(entity, t);
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message.ToString());
}
}
#endregion
#region (PDA接口)维修工还料上架
///
/// 物料执行上架
///
/// token验证值
/// 数据Json
///
/// [HANHE(XDL)] CREATED BY 2018-11-13
[HttpPost]
public OperateResult HLSaveLocationPalletRelation(JObject jsonData)
{
try
{
Log.Info("还料上架开始", "");
string ItemBackNo = jsonData["ItemBackNo"].ToString();
string locationCode = jsonData["locationCode"].ToString();
string trayCode = jsonData["trayCode"].ToString();
string tokenId = jsonData["tokenId"].ToString();
Log.Info("还料传参", "ItemBackNo:" + ItemBackNo + ",locationCode:" + locationCode + ",trayCode:" + trayCode + ",tokenId:" + tokenId);
TN_WM_ITEMBACK_MSTEntity itemBackEntity = BLLCreator.Create().GetItemBackMstAndDtl(ItemBackNo);
ItemOnShelfEntity entity = new ItemOnShelfEntity();
entity.TokenId = tokenId;
entity.CN_S_DEVICE_NO = "";
entity.CN_S_LOCATION_CODE = locationCode;
entity.CN_S_TRAY_CODE = trayCode;
List itemRowList = new List();
foreach (var item in itemBackEntity.DTLEntity)
{
ItemRow itemRow = new ItemRow();
itemRow.CN_F_PACKING_QTY = item.CN_F_PACKING_QTY.ToString();
itemRow.CN_F_PURCHASE_PRICE = item.CN_F_PURCHASE_PRICE;
itemRow.CN_F_RETAIL_PRICE = item.CN_F_RETAIL_PRICE;
itemRow.CN_F_QUANTITY = item.CN_F_QUANTITY;
itemRow.CN_S_FROM_NO = "";
itemRow.CN_S_ITEM_CODE = item.CN_S_ITEM_CODE;
itemRow.CN_S_ITEM_NAME = item.CN_S_ITEM_NAME;
itemRow.CN_S_ITEM_STATE = item.CN_S_ITEM_STATE;
itemRow.CN_S_LOT_NO = item.CN_S_LOT_NO;
itemRow.CN_S_OWNER = itemBackEntity.CN_S_OWNER;
itemRow.CN_S_PACKING_UNIT = item.CN_S_PACKING_UNIT;
itemRow.CN_S_PRODUCTION_BATCH = item.CN_S_PRODUCTION_BATCH;
itemRow.CN_S_SERIAL_NO = item.CN_S_SERIAL_NO;
itemRow.CN_S_TRAY_CODE = trayCode;
itemRow.CN_S_TRAY_GRID = "1";
itemRow.CN_S_UNIQUE_CODE = item.CN_S_UNIQUE_CODE;
itemRow.CN_S_VENDOR_NAME = item.CN_S_VENDOR_NAME;
itemRow.CN_S_VENDOR_NO = item.CN_S_VENDOR_NO;
itemRow.CN_T_EXPIRATION = item.CN_T_EXPIRATION;
itemRow.CN_T_PRODUCTION = item.CN_T_PRODUCTION;
itemRowList.Add(itemRow);
}
entity.row = itemRowList;
return ValidateToken(entity.TokenId, t =>
{
if (t == null)
{
return OperateResult.Error("登陆人员信息获取失败!");
}
return BLLCreator.Create().HLSaveLocationPalletRelation(ItemBackNo, entity, t);
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message.ToString());
}
}
#endregion
#region (PDA接口)物料上架获取建议货位
///
/// 物料上架获取建议货位
///
/// 物料编码
/// 库区编码
/// 上架数量
/// 批次编码
///
/// [HANHE(XDL)] CREATED BY 2019-03-20
[HttpGet]
public string ItemGetLocationCode(string itemCode, string areaCode, int quantity, string lotCode)
{
try
{
return ValidateToken(t =>
{
OperateResult result = BLLCreator.Create().ItemGetLocationCode(itemCode, areaCode, quantity, lotCode);
return JsonConvert.SerializeObject(result);
});
}
catch (Exception ex)
{
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message.ToString()));
}
}
#endregion
#region (PDA接口)根据货位编码获取货位上托盘信息
///
/// (PDA接口)根据货位编码获取货位上托盘信息
///
/// 货位编码
///
/// [HanHe(xdl)] CREATED 2019/03/20
[HttpGet]
public string GetDetailByLocationCode(string locationCode)
{
try
{
return ValidateToken(t =>
{
List result = BLLCreator.Create().GetDetailByLocationCode(locationCode);
return JsonConvert.SerializeObject(OperateResult.Succeed("", result));
});
}
catch (Exception ex)
{
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message.ToString()));
}
}
#endregion
#region (PDA接口)呼叫不满托盘出库
///
/// 根据托盘规格-呼叫不满托盘出库
///
/// 数据Json
///
/// [HANHE(XDL)] CREATED BY 2019-04-10
[HttpPost]
public OperateResult CallNoFullPallet(JObject jsonData)
{
try
{
Log.Info("呼叫不满托盘开始", "");
string itemCode = jsonData["itemCode"].ToString();
string trayQuantity = jsonData["trayQuantity"].ToString();
string endLocationCode = jsonData["endLocationCode"].ToString();
string startAreaCode = jsonData["startAreaCode"].ToString();
string tokenId = jsonData["tokenId"].ToString();
Log.Info("呼叫不满托盘传参", "itemCode:" + itemCode + ",trayQuantity:" + trayQuantity +",endLocationCode:" + endLocationCode + ",startAreaCode:" + startAreaCode + ",tokenId:" + tokenId);
if (string.IsNullOrEmpty(itemCode) || string.IsNullOrEmpty(trayQuantity) || string.IsNullOrEmpty(endLocationCode) || string.IsNullOrEmpty(startAreaCode) || string.IsNullOrEmpty(tokenId))
{
return OperateResult.Error("参数不全!");
}
return ValidateToken(tokenId, t =>
{
if (t == null)
{
return OperateResult.Error("登陆人员信息获取失败!");
}
return BLLCreator.Create().CallNoFullPallet(itemCode, trayQuantity, endLocationCode, startAreaCode, t);
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message.ToString());
}
}
#endregion
}
}