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