using HH.Redis.ReisModel;
using HH.WMS.BLL;
using HH.WMS.BLL.Algorithm;
using HH.WMS.BLL.Basic;
using HH.WMS.BLL.Common;
using HH.WMS.BLL.InStock;
using HH.WMS.BLL.OutStock;
using HH.WMS.BLL.Pda;
using HH.WMS.BLL.SysMgr;
using HH.WMS.Common;
using HH.WMS.Common.Algorithm;
using HH.WMS.Common.External;
using HH.WMS.DAL;
using HH.WMS.DAL.InStock;
using HH.WMS.Entitys;
using HH.WMS.Entitys.Ams;
using HH.WMS.Entitys.Basic;
using HH.WMS.Entitys.Common;
using HH.WMS.Entitys.Entitys;
using HH.WMS.Entitys.Func;
using HH.WMS.WebApi.Areas.Common.Controllers;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
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.Pda.Controllers
{
///
/// PDA产品接口
///
public class YmController : BaseController
{
#region 公共方法
///
/// 获取扫描物料实体信息
///
///
///
[HttpGet]
public string GetItemDetail(string itemCode)
{
try
{
AutoBomItemEntity entity = BLLCreator.Create().GetItem(itemCode);
if (entity == null)
{
return JsonConvert.SerializeObject(OperateResult.Error("未找到该物料信息"));
}
else
{
return JsonConvert.SerializeObject(OperateResult.Succeed(null, entity));
}
}
catch (Exception ex)
{
Log.Error("GetItemDetail异常:====>", ex.Message + ex.StackTrace);
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message));
}
}
///
/// 根据作业区类型获取库区列表
///
/// 作业区类型
///
[HttpGet]
public string GetAreaByAreaClass(string areaClass)
{
try
{
return ValidateToken(x =>
{
if (string.IsNullOrEmpty(areaClass))
{
return JsonConvert.SerializeObject(OperateResult.Error("请提供作业区类型!"));
}
List areaModel = BLLCreator.Create().GetAreaByAreaClass(areaClass);
return JsonConvert.SerializeObject(OperateResult.Succeed("", areaModel));
});
}
catch (Exception ex)
{
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message));
}
}
///
/// 通过多个作业区类型获取库区集合
///
///
///
[HttpGet]
public string GetAreaByManyClass(string areasClass)
{
try
{
return ValidateToken(x =>
{
if (string.IsNullOrEmpty(areasClass))
{
return JsonConvert.SerializeObject(OperateResult.Error("请提供作业区类型!"));
}
List areaModel = BLLCreator.Create().GetAreaByManyClass(areasClass);
return JsonConvert.SerializeObject(OperateResult.Succeed("", areaModel));
});
}
catch (Exception ex)
{
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message));
}
}
///
/// 获取扫描物料实体信息
///
///
///
[HttpGet]
public string GetAllItemList(string itemCode)
{
try
{
List lstEntity = BLLCreator.Create().GetAllItem(itemCode);
return JsonConvert.SerializeObject(OperateResult.Succeed(null, lstEntity));
}
catch (Exception ex)
{
Log.Error("GetItemList异常:====>", ex.Message + ex.StackTrace);
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message));
}
}
///
/// 获取扫描物料实体信息
///
///
///
[HttpGet]
public string GetItemList(string itemCode)
{
try
{
List itemArray = new List();
if (!string.IsNullOrEmpty(itemCode))
{
itemArray = itemCode.Split(',').ToList();
}
var list = BLLCreator.Create().GetItemList(itemArray);
return JsonConvert.SerializeObject(OperateResult.Succeed("", list));
}
catch (Exception ex)
{
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message.ToString()));
}
}
///
/// 扫描条码 返回条码实体
///
/// token值
/// 扫描条码
///
/// [HANHE(XDL)] CREATED BY 2018-11-14
[HttpGet]
public string AnalysisCode(string barCode)
{
try
{
ScanCodeClass ScanCodeClass = BLLCreator.Create().AnalysisCode(barCode);
if (ScanCodeClass == null) return JsonConvert.SerializeObject(OperateResult.Error("找不到物料!请确认MONGO_KEYTYPE_MAP表存在该条码信息"));
return JsonConvert.SerializeObject(OperateResult.Succeed("", ScanCodeClass));
}
catch (Exception ex)
{
Log.Error("AnalysisCode异常:====>", ex.Message + ex.StackTrace);
return JsonConvert.SerializeObject(OperateResult.Error("AnalysisCode方法 Exception!" + ex.ToString()));
}
}
#endregion
#region 码盘相关接口
///
/// 检查托盘是否可用
///
///
///
[HttpGet]
public OperateResult CheckMpTray(string trayCode)
{
try
{
OperateResult result = BLLCreator.Create().CheckMpTray(trayCode);
return result;
}
catch (Exception ex)
{
Log.Error("CheckMpTray异常:====>", ex.Message + ex.StackTrace);
return OperateResult.Error(ex.Message);
}
}
///
/// 检查货位是否可用
///
///
///
[HttpGet]
public OperateResult CheckMpLocation(string locationCode)
{
try
{
OperateResult result = BLLCreator.Create().CheckMpLocation(locationCode);
return result;
}
catch (Exception ex)
{
Log.Error("CheckMpLocation异常:====>", ex.Message + ex.StackTrace);
return OperateResult.Error(ex.Message);
}
}
///
/// 检查唯一码是否已经码盘
///
///
///
[HttpGet]
public string CheckMpUniCode(string uniCode)
{
try
{
List lstDTLEntity = BLLCreator.Create>().GetList(new { CN_S_UNIQUE_CODE = uniCode });
if (lstDTLEntity.Any())
{
return JsonConvert.SerializeObject(OperateResult.Error("该唯一码已码盘,不允许重复码盘"));
}
else
{
return JsonConvert.SerializeObject(OperateResult.Succeed());
}
}
catch (Exception ex)
{
Log.Error("CheckUniCode异常:====>", ex.Message + ex.StackTrace);
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message));
}
}
///
/// 获取托盘中的物料信息
///
///
///
[HttpGet]
public string GetTrayDetail(string trayCode)
{
try
{
OperateResult result = new OperateResult();
DataTable dt = BLLCreator.Create().GetTrayDetail(trayCode);
return JsonConvert.SerializeObject(OperateResult.Succeed("", dt));
}
catch (Exception ex)
{
Log.Error("GetTrayDetail异常:====>", ex.Message + ex.StackTrace);
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message));
}
}
///
/// 获取可码盘入库单列表
///
/// 模糊查询条件:入库单号
///
/// [HANHE(XDL)] CREATED BY 2018-12-5
[HttpGet]
public string GetInListWithCodedisc(string opNo)
{
try
{
List list = BLLCreator.Create().GetInListWithCodedisc(opNo);
return JsonConvert.SerializeObject(OperateResult.Succeed("", list));
}
catch (Exception ex)
{
Log.Error("GetInListWithCodedisc异常:====>", ex.Message + ex.StackTrace);
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message.ToString()));
}
}
///
/// 根据单号获取主子表信息
///
/// 模糊查询条件:入库单号
///
/// [HANHE(XDL)] CREATED BY 2018-11-19
[HttpGet]
public string GetIncreaseDetail(string opNo)
{
try
{
DataTable dt = BLLCreator.Create().GetIncreaseDetail(opNo);
return JsonConvert.SerializeObject(OperateResult.Succeed("", dt));
}
catch (Exception ex)
{
Log.Error("GetIncreaseDetail异常:====>", ex.Message + ex.StackTrace);
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message.ToString()));
}
}
///
/// 码盘
///
/// token验证值
/// 数据Json
///
/// [HANHE(XDL)] CREATED BY 2018-11-17
[HttpPost]
public string SaveSimPalletItemRelation(JObject jsonData)
{
try
{
ItemOnTrayEntity entity = JsonConvert.DeserializeObject(jsonData.ToString());
return ValidateToken(entity.TokenId, t =>
{
OperateResult oresult = BLLCreator.Create(t).SaveSimPalletItemRelation(entity, t);
if (oresult.Success)
{
if (!entity.BIND_TRAY_LOCATION)
{
if (!string.IsNullOrEmpty(entity.CN_S_LOCATION_CODE))
{
oresult = BLLCreator.Create(t).AddTrayLocationRelation(entity.CN_S_TRAY_CODE, entity.CN_S_LOCATION_CODE, t, entity.PROJECT_CODE);
if (oresult.Success)
{
if (entity.CODE_IN_TASK == "Y")
{
TrayOnShelfEntity trayOnShelf = new TrayOnShelfEntity();
trayOnShelf.CN_S_DEVICE_NO = entity.CN_S_LOCATION_CODE;
trayOnShelf.CN_S_END_AREA_CODE = entity.CN_S_END_AREA_CODE;
trayOnShelf.CN_S_LOCATION_CODE = "";
trayOnShelf.CN_S_TASK_TYPE = entity.CN_S_TASK_TYPE;
trayOnShelf.CN_S_TRAY_CODE = entity.CN_S_TRAY_CODE;
trayOnShelf.projectCode = entity.PROJECT_CODE;
oresult = BLLCreator.Create().SimZTShelfAuto(trayOnShelf, t);
if (!oresult.Success)
{
oresult.Msg = "码盘成功但入库失败:" + oresult.Msg;
}
}
}
else
{
oresult.Msg = "码盘成功但绑定货位失败:" + oresult.Msg;
}
}
}
else
{
if (entity.CODE_IN_TASK == "Y")
{
TrayOnShelfEntity trayOnShelf = new TrayOnShelfEntity();
trayOnShelf.CN_S_DEVICE_NO = entity.CN_S_LOCATION_CODE;
trayOnShelf.CN_S_END_AREA_CODE = entity.CN_S_END_AREA_CODE;
trayOnShelf.CN_S_LOCATION_CODE = "";
trayOnShelf.CN_S_TASK_TYPE = entity.CN_S_TASK_TYPE;
trayOnShelf.CN_S_TRAY_CODE = entity.CN_S_TRAY_CODE;
trayOnShelf.projectCode = entity.PROJECT_CODE;
oresult = BLLCreator.Create().SimZTShelfAuto(trayOnShelf, t);
if (!oresult.Success)
{
oresult.Msg = "码盘成功但入库失败:" + oresult.Msg;
}
}
}
}
else
{
oresult.Msg = "码盘失败:" + oresult.Msg;
}
return JsonConvert.SerializeObject(oresult);
});
}
catch (Exception ex)
{
Log.Error("SaveSimPalletItemRelation异常:====>", ex.Message + ex.StackTrace);
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message.ToString()));
}
}
///
/// 码盘
///
/// token验证值
/// 数据Json
///
/// [HANHE(XDL)] CREATED BY 2018-11-17
[HttpPost]
public string SaveUniPalletItemRelation(JObject jsonData)
{
try
{
ItemOnTrayEntity entity = JsonConvert.DeserializeObject(jsonData.ToString());
return ValidateToken(entity.TokenId, t =>
{
OperateResult oresult = BLLCreator.Create(t).SaveUniPalletItemRelation(entity, t);
if (oresult.Success)
{
if (!entity.BIND_TRAY_LOCATION)
{
if (!string.IsNullOrEmpty(entity.CN_S_LOCATION_CODE))
{
oresult = BLLCreator.Create(t).AddTrayLocationRelation(entity.CN_S_TRAY_CODE, entity.CN_S_LOCATION_CODE, t, entity.PROJECT_CODE);
if (oresult.Success)
{
if (entity.CODE_IN_TASK == "Y")
{
TrayOnShelfEntity trayOnShelf = new TrayOnShelfEntity();
trayOnShelf.CN_S_DEVICE_NO = entity.CN_S_LOCATION_CODE;
trayOnShelf.CN_S_END_AREA_CODE = entity.CN_S_END_AREA_CODE;
trayOnShelf.CN_S_LOCATION_CODE = "";
trayOnShelf.CN_S_TASK_TYPE = entity.CN_S_TASK_TYPE;
trayOnShelf.CN_S_TRAY_CODE = entity.CN_S_TRAY_CODE;
trayOnShelf.projectCode = entity.PROJECT_CODE;
oresult = BLLCreator.Create().SimZTShelfAuto(trayOnShelf, t);
if (!oresult.Success)
{
oresult.Msg = "码盘成功但入库失败:" + oresult.Msg;
}
}
}
else
{
oresult.Msg = "码盘成功但绑定货位失败:" + oresult.Msg;
}
}
}
else
{
if (entity.CODE_IN_TASK == "Y")
{
TrayOnShelfEntity trayOnShelf = new TrayOnShelfEntity();
trayOnShelf.CN_S_DEVICE_NO = entity.CN_S_LOCATION_CODE;
trayOnShelf.CN_S_END_AREA_CODE = entity.CN_S_END_AREA_CODE;
trayOnShelf.CN_S_LOCATION_CODE = "";
trayOnShelf.CN_S_TASK_TYPE = entity.CN_S_TASK_TYPE;
trayOnShelf.CN_S_TRAY_CODE = entity.CN_S_TRAY_CODE;
trayOnShelf.projectCode = entity.PROJECT_CODE;
oresult = BLLCreator.Create().SimZTShelfAuto(trayOnShelf, t);
if (!oresult.Success)
{
oresult.Msg = "码盘成功但入库失败:" + oresult.Msg;
}
}
}
}
else
{
oresult.Msg = "码盘失败:" + oresult.Msg;
}
return JsonConvert.SerializeObject(oresult);
});
}
catch (Exception ex)
{
Log.Error("SaveUniPalletItemRelation异常:====>", ex.Message + ex.StackTrace);
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message.ToString()));
}
}
///
/// 码盘
///
/// token验证值
/// 数据Json
///
/// [HANHE(XDL)] CREATED BY 2018-11-17
[HttpPost]
public string SaveRkdPalletItemRelation(JObject jsonData)
{
try
{
ItemOnTrayEntity entity = JsonConvert.DeserializeObject(jsonData.ToString());
return ValidateToken(entity.TokenId, t =>
{
OperateResult oresult = BLLCreator.Create(t).SaveRkdPalletItemRelation(entity, t);
if (oresult.Success)
{
if (!entity.BIND_TRAY_LOCATION)
{
if (!string.IsNullOrEmpty(entity.CN_S_LOCATION_CODE))
{
oresult = BLLCreator.Create(t).AddTrayLocationRelation(entity.CN_S_TRAY_CODE, entity.CN_S_LOCATION_CODE, t, entity.PROJECT_CODE);
if (oresult.Success)
{
if (entity.CODE_IN_TASK == "Y")
{
TrayOnShelfEntity trayOnShelf = new TrayOnShelfEntity();
trayOnShelf.CN_S_DEVICE_NO = entity.CN_S_LOCATION_CODE;
trayOnShelf.CN_S_END_AREA_CODE = entity.CN_S_END_AREA_CODE;
trayOnShelf.CN_S_LOCATION_CODE = "";
trayOnShelf.CN_S_TASK_TYPE = entity.CN_S_TASK_TYPE;
trayOnShelf.CN_S_TRAY_CODE = entity.CN_S_TRAY_CODE;
trayOnShelf.projectCode = entity.PROJECT_CODE;
oresult = BLLCreator.Create().SimZTShelfAuto(trayOnShelf, t);
if (!oresult.Success)
{
oresult.Msg = "码盘成功但入库失败:" + oresult.Msg;
}
}
}
else
{
oresult.Msg = "码盘成功但绑定货位失败:" + oresult.Msg;
}
}
}
else
{
if (entity.CODE_IN_TASK == "Y")
{
TrayOnShelfEntity trayOnShelf = new TrayOnShelfEntity();
trayOnShelf.CN_S_DEVICE_NO = entity.CN_S_LOCATION_CODE;
trayOnShelf.CN_S_END_AREA_CODE = entity.CN_S_END_AREA_CODE;
trayOnShelf.CN_S_LOCATION_CODE = "";
trayOnShelf.CN_S_TASK_TYPE = entity.CN_S_TASK_TYPE;
trayOnShelf.CN_S_TRAY_CODE = entity.CN_S_TRAY_CODE;
trayOnShelf.projectCode = entity.PROJECT_CODE;
oresult = BLLCreator.Create().SimZTShelfAuto(trayOnShelf, t);
if (!oresult.Success)
{
oresult.Msg = "码盘成功但入库失败:" + oresult.Msg;
}
}
}
}
else
{
oresult.Msg = "码盘失败:" + oresult.Msg;
}
return JsonConvert.SerializeObject(oresult);
});
}
catch (Exception ex)
{
Log.Error("SavePalletItemRelation异常:====>", ex.Message + ex.StackTrace);
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message.ToString()));
}
}
#endregion
#region 绑定解绑相关接口
///
/// 获取托盘中的物料信息
///
///
///
[HttpGet]
public string GetBindTrayDetail(string trayCode, string locationCode, string projectCode)
{
try
{
OperateResult result = new OperateResult();
string returnJson = string.Empty;
DataTable dt = new DataTable();
if (!string.IsNullOrEmpty(trayCode))
{
List lstEntity = DALCreator.Create().GetListByTrayCode(trayCode);
dt = BLLCreator.Create().GetTrayItemDetail(trayCode);
//判断托盘是否绑定了货位
if (lstEntity.Count == 0)
{
returnJson = JsonConvert.SerializeObject(OperateResult.Succeed("", dt));
}
else
{
returnJson = JsonConvert.SerializeObject(OperateResult.Succeed(lstEntity[0].CN_S_LOCATION_CODE, dt));
}
}
if (!string.IsNullOrEmpty(locationCode))
{
List lstEntity = DALCreator.Create().GetListByLocationCode(locationCode);
if (lstEntity.Count == 0)
{
returnJson = JsonConvert.SerializeObject(OperateResult.Succeed("", dt));
}
else
{
dt = BLLCreator.Create().GetTrayItemDetail(lstEntity[0].CN_S_TRAY_CODE);
returnJson = JsonConvert.SerializeObject(OperateResult.Succeed(lstEntity[0].CN_S_TRAY_CODE, dt));
}
}
return returnJson;
}
catch (Exception ex)
{
Log.Error("GetBindTrayDetail异常:====>", ex.Message + ex.StackTrace);
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message));
}
}
///
/// 绑定货位等同入库,增加仓库、库区库存
///
/// 托盘编码
/// 货位编码
///
/// [HANHE(XDL)] CREATED BY 2019-04-17
[HttpGet]
public string AddTrayLocationRelation(string trayCode, string locationCode, string projectCode)
{
try
{
return ValidateToken(t =>
{
OperateResult result = BLLCreator.Create(t).AddTrayLocationRelation(trayCode, locationCode, t, projectCode);
return JsonConvert.SerializeObject(result);
});
}
catch (Exception ex)
{
Log.Error("AddTrayLocationRelation异常:====>", ex.Message + ex.StackTrace);
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message.ToString()));
}
}
///
/// 绑定货位等同出库,减少仓库、库区库存
///
/// 托盘编码
/// 货位编码
///
/// [HANHE(XDL)] CREATED BY 2019-04-17
[HttpGet]
public string DeleteTrayLocationRelation(string trayCode, string locationCode, string projectCode)
{
try
{
return ValidateToken(t =>
{
OperateResult result = BLLCreator.Create(t).DeleteTrayLocationRelation(trayCode, locationCode, t, projectCode);
return JsonConvert.SerializeObject(result);
});
}
catch (Exception ex)
{
Log.Error("DeleteTrayLocationRelation异常:====>", ex.Message + ex.StackTrace);
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message.ToString()));
}
}
///
/// 托盘货位绑定
///
/// 托盘编码
/// 货位编码
///
/// [HANHE(XDL)] CREATED BY 2019-04-17
[HttpPost]
public string LoadAndUnload(LocationTrayItmRelEntity entity)
{
try
{
return ValidateToken(entity.TokenId, t =>
{
OperateResult result = BLLCreator.Create(t).LoadAndUnload(entity, t);
return JsonConvert.SerializeObject(result);
});
}
catch (Exception ex)
{
Log.Error("LoadAndUnload异常:====>", ex.Message + ex.StackTrace);
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message.ToString()));
}
}
#endregion
#region 整托上架入库相关接口
///
/// 整托获取建议货位-空货位
///
/// 库区
/// 托盘编码
/// 物料编码
/// 获取货位的数量
/// tokenId
///
[HttpGet]
public OperateResult GetZtEmptyCommandLocation(string areaCode, string trayCode, string itemCode, int locationQty)
{
try
{
//调用入库算法,获取空货位
InAlgorEnitty iAe = new InAlgorEnitty()
{
stockAreaCode = areaCode,
logicCode = "",
locationQty = locationQty,
trayCode = trayCode,
itemCode = itemCode,
lockLocation = false//是否需要锁定货位
};
iAe.lstDevice = null;
InResultEntity irEresult = BLLCreator.Create().In(iAe);
if (!irEresult.Success)
{
return OperateResult.Error(irEresult.Msg);//货位获取失败!
}
return OperateResult.Succeed("", irEresult.lstLocation);
}
catch (Exception ex)
{
Log.Error("GetZtEmptyCommandLocation异常:====>", ex.Message + ex.StackTrace);
return OperateResult.Error(ex.Message);
}
}
///
/// 检查货位是否可用
///
///
///
[HttpGet]
public string CheckInStockLocation(string locationCode)
{
try
{
OperateResult result = BLLCreator.Create().CheckInStockLocation(locationCode);
return JsonConvert.SerializeObject(result);
}
catch (Exception ex)
{
Log.Error("CheckInStockLocation异常:====>", ex.Message + ex.StackTrace);
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message));
}
}
///
/// 检查托盘是否可用
///
///
///
[HttpGet]
public string CheckInStockTray(string trayCode)
{
try
{
OperateResult result = BLLCreator.Create().CheckInStockTray(trayCode);
return JsonConvert.SerializeObject(result);
}
catch (Exception ex)
{
Log.Error("CheckInStockTray异常:====>", ex.Message + ex.StackTrace);
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message));
}
}
///
/// 整托执行上架 宇寿
///
/// 数据Json
///
/// [HANHE(XDL)] CREATED BY 2018-12-12
[HttpPost]
public OperateResult SimZTShelfAuto(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().SimZTShelfAuto(entity, t);
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message.ToString());
}
}
///
/// 整托执行上架 宇寿
///
/// 数据Json
///
/// [HANHE(XDL)] CREATED BY 2018-12-12
[HttpPost]
public OperateResult SimZTShelfAutoWithBind(JObject json)
{
try
{
Log.Info("整托上架开始", "");
TrayOnShelfEntity entity = JsonConvert.DeserializeObject(json.ToString());
return ValidateToken(entity.TokenId, t =>
{
if (t == null)
{
return OperateResult.Error("登陆人员信息获取失败!");
}
OperateResult oresult = new OperateResult();
if (!entity.BIND_TRAY_LOCATION)
{
oresult = BLLCreator.Create(t).AddTrayLocationRelation(entity.CN_S_TRAY_CODE, entity.CN_S_DEVICE_NO, t, entity.projectCode);
if (oresult.Success)
{
oresult = BLLCreator.Create().SimZTShelfAuto(entity, t);
}
}
else
{
oresult = BLLCreator.Create().SimZTShelfAuto(entity, t);
}
return oresult;
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message.ToString());
}
}
#endregion
#region 生成流转任务
///
/// 生成流转任务(朝阳)
///
///
///
/// [HanHe(XDL)] CREATED 2018/6/30
[HttpGet]
public string CreateTransTask(string startPosition, string endPosition, string tranType, string taskPriority, string projectCode)
{
Log.Info("调用CreateTransTask", "请求参数:startPosition" + startPosition.ToString() + "; endPosition" + endPosition.ToString() + "; tranType" + tranType.ToString() + "; taskPriority" + taskPriority.ToString());
try
{
return ValidateToken(t =>
{
OperateResult result = BLLCreator.Create(t).CreateTransTask(startPosition, endPosition, tranType, taskPriority, projectCode, t);
return JsonConvert.SerializeObject(result);
});
}
catch (Exception ex)
{
Log.Error("CreateTransTask异常:====>", ex.Message + ex.StackTrace);
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message.ToString()));
}
}
#endregion
#region 整托叫料相关接口
///
/// 叫料获取可出库货位
///
/// 库区
/// 托盘编码
/// 物料编码
/// 获取货位的数量
/// tokenId
///
[HttpGet]
public OperateResult GetZtFullCommandLocation(string stockCode, string areaCode, string itemCode, decimal locationQty, string traySpec)
{
try
{
List lstArea = new List();
areaPriorClass areaClass = new areaPriorClass();
areaClass.areaCode = areaCode;
areaClass.Prior = 1;
lstArea.Add(areaClass);
//调用出库算法,获取出库货位
OutAssignEnitty oAe = new OutAssignEnitty()
{
lstAreaPrior = lstArea,
stockCode = stockCode,
itemCode = itemCode,
traySpec = traySpec,
lockLocation = false,//是否需要锁定货位
needCalLock = false
};
OutAssignResultEntity oaEresult = BLLCreator.Create().OutAssign(oAe);
if (!oaEresult.Success)
{
return OperateResult.Error(oaEresult.Msg);//货位获取失败!
}
return OperateResult.Succeed("", oaEresult);
}
catch (Exception ex)
{
Log.Error("GetZtFullCommandLocation异常:====>", ex.Message + ex.StackTrace);
return OperateResult.Error(ex.Message);
}
}
///
/// 整托执行上架
///
/// 数据Json
///
/// [HANHE(XDL)] CREATED BY 2018-12-12
[HttpPost]
public OperateResult SimZTDownShelfAuto(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().SimZTDownShelfAuto(entity, t);
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message.ToString());
}
}
#endregion
#region 分拣相关接口
#region (PDA)分拣单列表
///
/// (PDA)分拣单列表
///
///
///
[HttpGet]
public OperateResult GetSortings(string tokenId, string key = "")
{
return ValidateToken(tokenId, t =>
{
var allAreas = GetStockArea();
if (String.IsNullOrEmpty(key))
{
var sortingList = BLLCreator.CreateDapper().GetList(new
{
CN_S_STATE = new List { Constants.Sorting_Stay, Constants.Sorting_Being },
CN_S_STOCK_AREA = allAreas.Select(s => s.CN_S_AREA_CODE).ToList()
});
return OperateResult.Succeed(null,
sortingList.Select(x => new
{
SortingNo = x.CN_S_SORTING_NO,
AreaCode = (allAreas.Find(f => f.CN_S_AREA_CODE.Equals(x.CN_S_STOCK_AREA)) ?? new AutoBomStockAreaEntity()).CN_S_AREA_NAME,
CreateTime = x.CN_T_CREATE.ToString(),
Creator = x.CN_S_CREATOR.ToString(),
FromNo = x.CN_S_FROM_NO,
SortingState = x.CN_S_STATE
}));
}
else
{
var sortingList = BLLCreator.CreateDapper().GetList(new
{
CN_S_STATE = new List { Constants.Sorting_Stay, Constants.Sorting_Being },
CN_S_SORTING_NO = Util.ToLike(key),
CN_S_STOCK_AREA = allAreas.Select(s => s.CN_S_AREA_CODE).ToList()
});
return OperateResult.Succeed(null,
sortingList.Select(x => new
{
SortingNo = x.CN_S_SORTING_NO,
AreaCode = (allAreas.Find(f => f.CN_S_AREA_CODE.Equals(x.CN_S_STOCK_AREA)) ?? new AutoBomStockAreaEntity()).CN_S_AREA_NAME,
CreateTime = x.CN_T_CREATE.ToString(),
FromNo = x.CN_S_FROM_NO,
SortingState = x.CN_S_STATE
}));
}
});
}
#endregion
#region (PDA)获取的分拣单
///
/// (PDA)获取的分拣单
///
///
[HttpGet]
public OperateResult GetCurrentSorting(string tokenId, string sortingNo = "")
{
return ValidateToken(tokenId, t =>
{
TN_WM_SORTING_LISTEntity sortingEntity = new TN_WM_SORTING_LISTEntity();
sortingEntity.SortingLocationList = new List();
if (!string.IsNullOrEmpty(sortingNo))
{
sortingEntity = BLLCreator.Create>().GetSingleEntity(new
{
CN_S_SORTING_NO = sortingNo
});
if (sortingEntity == null)
return OperateResult.Error("未找到分拣单:" + sortingNo);
}
else
{
sortingEntity = BLLCreator.Create>().GetSingleEntity(new
{
CN_S_STATE = Constants.Sorting_Being
});
if (sortingEntity == null)
{
sortingEntity = BLLCreator.Create>().GetSingleEntity(new
{
CN_S_STATE = new List() { Constants.Sorting_Stay, Constants.Sorting_Being }
}, " ORDER BY CN_T_CREATE");
if (sortingEntity == null)
{
return OperateResult.Error("");
}
}
}
var sortingLocation = BLLCreator.Create>().GetList(new
{
CN_S_SORTING_NO = sortingEntity.CN_S_SORTING_NO
});
sortingLocation = sortingLocation.GroupBy(x => new { x.CN_S_LOCATION_CODE, x.CN_S_TRAY_CODE })
.Select(y => new TN_WM_SORTING_LOCATIONEntity
{
CN_S_TRAY_CODE = y.Key.CN_S_TRAY_CODE,
CN_S_LOCATION_CODE = y.Key.CN_S_LOCATION_CODE,
CN_F_QUANTITY = y.Sum(z => z.CN_F_QUANTITY)
}).ToList();
var sortingResult = BLLCreator.Create>().GetList(new
{
CN_S_SORTING_NO = sortingEntity.CN_S_SORTING_NO
});
var result = new
{
SortingNo = sortingEntity.CN_S_SORTING_NO,
AreaCode = sortingEntity.CN_S_STOCK_AREA,
SortingState = sortingEntity.CN_S_STATE,
LocationItems = sortingLocation.Select(x => new
{
TrayCode = x.CN_S_TRAY_CODE,
LocationCode = x.CN_S_LOCATION_CODE,
PickNum = x.CN_F_QUANTITY,
PickedNum = sortingResult.Where(y => y.CN_S_LOCATION_CODE.Equals(x.CN_S_LOCATION_CODE)).Sum(z => z.CN_F_QUANTITY),
PickState = sortingResult.Where(y => y.CN_S_LOCATION_CODE.Equals(x.CN_S_LOCATION_CODE)).Sum(z => z.CN_F_QUANTITY) == x.CN_F_QUANTITY ? "已拣" : "未拣"//暂时赋值
}).Where(m => m.PickState != "已拣")
};
return OperateResult.Succeed(null, result);
});
}
#endregion
#region (PDA)执行分拣单
///
/// (PDA)执行分拣单
///
///
///
[HttpGet]
public OperateResult SimAutoExecuteSorting(string tokenId, string sortingNo, string area = "")
{
return ValidateToken(tokenId, t =>
{
var sortingEntity = BLLCreator.Create>().GetSingleEntity(new
{
CN_S_SORTING_NO = sortingNo
});
if (sortingEntity == null)
return OperateResult.Error("未找到分拣单:" + sortingNo);
if (sortingEntity.CN_S_STATE != Constants.Sorting_Stay)
return OperateResult.Error("当前分拣单不是待分拣,请重新选择");
#region 生成分拣明细
var sortingLocationResult = BLLCreator.Create>().GetList(new
{
CN_S_SORTING_NO = sortingNo
});
sortingEntity.SortingLocationList.AddRange(sortingLocationResult);
#endregion
var trayItem = new List();
#region 自动库需要生成出库任务
//生成任务
List endAreas = new List();
var outTaskResult = BLLCreator.Create(t).GetOutTask(ref sortingEntity, ref endAreas,"", area);
if (!outTaskResult.Success)
{
return outTaskResult;
}
var tasks = outTaskResult.GetData>();
sortingEntity.Tasks = tasks;
sortingEntity.EndBits = endAreas;
#endregion
var result = BLLCreator.Create().ExecuteSorting(sortingEntity, trayItem);
if (!result.Success)
return result;
return result;
});
}
#endregion
#region (PDA)根据分拣单获取波次下所有发货通知单和分拣明细
///
/// (PDA汇聚)根据分拣单获取波次下所有发货通知单和分拣明细
///
///
///
///
[HttpGet]
public OperateResult GetSimAutoSortingData(string sortingNo, string locationCode)
{
return ValidateToken(t =>
{
var sortingEntity = BLLCreator.CreateDapper().GetSingleEntity(new
{
CN_S_SORTING_NO = sortingNo
});
if (sortingEntity == null)
return OperateResult.Error("未找到分拣单:" + sortingNo);
//当前分拣单当前货位
var currentSortingLocation = BLLCreator.CreateDapper().GetList(new
{
CN_S_SORTING_NO = sortingNo,
CN_S_LOCATION_CODE = locationCode
});
//当前分拣单波次下所有出库单
var currentWaveOut = BLLCreator.Create().GetOutListByWave(sortingEntity.CN_S_FROM_NO);
//订单拣货数据
var orderSortingRels = BLLCreator.CreateDapper().GetList(new
{
CN_S_ORDER_NO = currentWaveOut.Select(s => s.CN_S_OP_NO).ToList()
});
//批分每个出库单每个物料拣了多少个
foreach (var currentOut in currentWaveOut)
{
var curOrderSorting = orderSortingRels.Where(s => s.CN_S_ORDER_NO == currentOut.CN_S_OP_NO);
foreach (var currentOutDtl in currentOut.OutDtlList)
{
var equalsCurOS = curOrderSorting.Where(w =>
w.CN_S_ITEM_CODE == currentOutDtl.CN_S_ITEM_CODE &&
w.CN_S_ITEM_STATE == currentOutDtl.CN_S_ITEM_STATE &&
w.CN_S_OWNER == currentOut.CN_S_OWNER &&
(w.CN_S_LOT_NO == currentOutDtl.CN_S_LOT_CODE || string.IsNullOrEmpty(currentOutDtl.CN_S_LOT_CODE)));
foreach (var curOS in equalsCurOS)
{
var qty = currentOutDtl.CN_F_QUANTITY - currentOutDtl.CN_F_PICKED_QTY;
if (qty == 0) break;
if (curOS.CN_F_QUANTITY == 0) continue;
if (curOS.CN_F_QUANTITY >= qty)
{
currentOutDtl.CN_F_PICKED_QTY += qty;
curOS.CN_F_QUANTITY -= qty;
}
else
{
currentOutDtl.CN_F_PICKED_QTY += curOS.CN_F_QUANTITY;
curOS.CN_F_QUANTITY = 0;
}
}
}
}
var result = new
{
SortingLocations = currentSortingLocation,
OutData = currentWaveOut,
SortingBit = new string[] { "FJT01", "FJT02", "FJT03", "FJT04", }
};
return OperateResult.Succeed(null, result);
});
}
#endregion
#region (PDA)保存一单一播
///
/// (PDA汇聚)保存边拣边播
///
///
///
public OperateResult SimSaveAutoSort(dynamic saveData)
{
string tokenId = Util.ToString(saveData.tokenId);
return ValidateToken(tokenId, t =>
{
Log.Info("保存边拣边播SaveBJBB", JsonConvert.SerializeObject(saveData));
//分拣结果
List sortingResult = JsonConvert.DeserializeObject>(Util.ToString(saveData.SortingResult));
if (!sortingResult.Any())
return OperateResult.Error("分拣结果数据不可为空");
List orderSortingRel = JsonConvert.DeserializeObject>(Util.ToString(saveData.OrderSortingRel));
if (!orderSortingRel.Any())
return OperateResult.Error("订单拣货明细不可为空");
//周转箱号
string boxNo = Util.ToString(saveData.BoxNo);
if (string.IsNullOrEmpty(boxNo))
return OperateResult.Error("合箱容器号不可为空");
var sortingLocations = BLLCreator.CreateDapper().GetList(new
{
CN_S_SORTING_NO = sortingResult[0].CN_S_SORTING_NO,
});
var pickedItemLocations = sortingLocations.Where(w =>
w.CN_S_TRAY_CODE == sortingResult[0].CN_S_TRAY_CODE &&
w.CN_S_LOCATION_CODE == sortingResult[0].CN_S_LOCATION_CODE &&
sortingResult.Exists(e => e.CN_S_ITEM_CODE == w.CN_S_ITEM_CODE)).ToList();
//批分分拣明细分拣数量
foreach (var sr in sortingResult)
{
foreach (var pickedItem in pickedItemLocations)
{
if (sr.CN_F_QUANTITY == 0) break;
var stayQty = pickedItem.CN_F_QUANTITY - pickedItem.CN_F_PICKED_QTY;
if (stayQty == 0) continue;
if (sr.CN_F_QUANTITY >= stayQty)
{
pickedItem.CN_F_PICKED_QTY += stayQty;
sr.CN_F_QUANTITY -= stayQty;
}
else
{
pickedItem.CN_F_PICKED_QTY += sr.CN_F_QUANTITY;
sr.CN_F_QUANTITY = 0;
}
}
}
//分拣单,波次是否已分拣
bool sortingPicked = false; bool wavePicked = false;
//分拣单是否全部分拣完
if (sortingLocations.Sum(s => s.CN_F_QUANTITY) == sortingLocations.Sum(s => s.CN_F_PICKED_QTY))
sortingPicked = true;
//当前分拣单实体
var currentSorting = BLLCreator.CreateDapper().GetSingleEntity(new
{
CN_S_SORTING_NO = sortingResult[0].CN_S_SORTING_NO
});
#region 分拣单捡完了,判断波次有没有捡完
//分拣单捡完了,判断波次有没有捡完
if (sortingPicked)
{
var waveSortings = BLLCreator.CreateDapper().GetList(new
{
CN_S_FROM_NO = currentSorting.CN_S_FROM_NO
});
if (!(waveSortings.Exists(e => e.CN_S_STATE != Constants.Sorting_Sorted)))
wavePicked = true;
}
#endregion
#region 如果分拣单拣完了,批分库区降库存
List areaQtyList = new List();
//算法策略
List lstStrate = BLLCreator.Create().GetStrateListByAreaOrStock("", "", Constants.Out)
.OrderByDescending(a => a.CN_N_PRIORITY).Select(o => o.CN_S_CODE).ToList();
Log.Info("确认分拣", "lstStrate");
//分拣单都拣完了,批分库区降库存
if (sortingPicked)
{
Log.Info("确认分拣sortingResult", JsonConvert.SerializeObject(sortingResult));
if (currentSorting != null)
{
var currentSortingDtl = BLLCreator.CreateDapper()
.GetList(new
{
CN_S_SORTING_NO = currentSorting.CN_S_SORTING_NO
});
currentSorting.SortingDtlList = currentSortingDtl;
areaQtyList = BLLCreator.CreateDapper().GetList(new
{
CN_S_ITEM_CODE = currentSortingDtl.Select(x => x.CN_S_ITEM_CODE).ToList()
});
//反批分库区分配量
Log.Info("确认分拣反批分库区分配量", "BatchesAreaQty");
var result = areaQtyList.BatchesAreaQty(new List() { currentSorting }, lstStrate, true);
Log.Info("确认分拣反批分库区分配量结果", JsonConvert.SerializeObject(result));
if (!result.Success)
return result;
}
}
#endregion
#region 批分托盘物料关联,降分配量,删子表,解货位
//分拣结果的托盘物料关联数据
var trayItemMstList = BLLCreator.Create().BatchesTrayItemByResult(sortingResult);
var currentTrayLocation = BLLCreator.CreateDapper().GetSingleEntity(new
{
CN_S_TRAY_CODE = sortingResult[0].CN_S_TRAY_CODE
});
#endregion
#region 初始化分拣结果,订单拣货明细实体
sortingResult.ForEach(p =>
{
p.CN_GUID = Guid.NewGuid().ToString();
p.CN_S_SERIAL_NO = p.CN_S_SERIAL_NO ?? "";
p.CN_S_TRAY_CODE = p.CN_S_TRAY_CODE ?? "";
p.CN_S_TURNOVERBOX_CODE = p.CN_S_TURNOVERBOX_CODE ?? boxNo;
p.CN_S_CREATOR = t.CN_S_LOGIN;
p.CN_S_CREATOR_BY = t.CN_S_NAME;
p.CN_T_CREATE = DateTime.Now;
p.CN_S_MODIFY = t.CN_S_LOGIN;
p.CN_S_MODIFY_BY = t.CN_S_NAME;
p.CN_T_MODIFY = DateTime.Now;
});
orderSortingRel.ForEach(p =>
{
p.CN_GUID = Guid.NewGuid().ToString();
p.CN_S_SERIAL_NO = p.CN_S_SERIAL_NO ?? "";
p.CN_S_CREATOR = t.CN_S_LOGIN;
p.CN_S_CREATOR_BY = t.CN_S_NAME;
p.CN_T_CREATE = DateTime.Now;
p.CN_S_MODIFY = t.CN_S_LOGIN;
p.CN_S_MODIFY_BY = t.CN_S_NAME;
p.CN_T_MODIFY = DateTime.Now;
});
#endregion
SavePickEntity savePickEntity = new SavePickEntity()
{
CurrentSorting = currentSorting,
SortingPicked = sortingPicked,
WavePicked = wavePicked,
BoxNo = boxNo,
WaveNo = currentSorting.CN_S_FROM_NO,
SortingNo = currentSorting.CN_S_SORTING_NO,
SortingResult = sortingResult,
SortingLocation = pickedItemLocations,
OrderSortingRel = orderSortingRel,
TrayItemList = trayItemMstList,
TrayLocation = currentTrayLocation,
AreaQtyList = areaQtyList
};
return BLLCreator.Create().SaveBJBB(savePickEntity);
});
}
#endregion
#endregion
#region 上料相关接口
///
/// 验证料箱码是否属于当前托盘
///
///
///
///
[HttpGet]
public OperateResult CheckUniqueIsCurTray(string trayCode, string uniqueCode)
{
bool result = BLLCreator.Create().CheckUniqueIsCurTray(trayCode, uniqueCode);
if(result)
{
return OperateResult.Succeed("");
}
else
{
return OperateResult.Error("该唯一码不属于当前托盘");
}
}
///
/// 上架确认
///
///
/// 上架类型 all 整托 part 部分
///
///
[HttpGet]
public OperateResult UpMaterialSure(string trayCode, string type, string uniqueCodes)
{
var logPara = LogType.LogPara("上料确认(" + (type == "all" ? "整托" : "部分") + ")");
Log.Detail(logPara, "接收参数:trayCode:" + trayCode + ",type:" + type + ",uniqueCodes:" + uniqueCodes);
var result = BLLCreator.Create().UpMaterialSure(trayCode, type, uniqueCodes, logPara);
return result;
}
[HttpGet]
public OperateResult CheckTrayByUpMaterial(string trayCode)
{
var logPara = LogType.LogPara("检查托盘(上料)");
Log.Detail(logPara, "接收参数托盘号:" + trayCode);
var result = BLLCreator.Create().CheckTrayByUpMaterial(trayCode);
Log.Detail(logPara, LogDescribe.Content(result));
return result;
}
#endregion
#region 按数量叫料相关接口
///
/// 宇寿调用算法获取托盘
///
/// 仓库编码
/// 库区编码
/// 物料编码
/// 物料规格
/// 物料数量
/// 身份验证
///
[HttpGet]
public OperateResult GetLocationCodeAction(string stockCode, string areaCode, string itemCode, string traySpec, decimal locationQty, string tokenId)
{
try
{
return ValidateToken(tokenId, t =>
{
Log.Error("调用算法获取托盘:", "开始!");
if (t == null)
{
return OperateResult.Error("登陆人员信息获取失败!");
}
else
{
if (!string.IsNullOrEmpty(itemCode))
{
//检查物料编码是否正确
var item = BLLCreator.Create().GetItem(itemCode);
if (item == null)
{
return OperateResult.Error("当前物料编码未在AutoBom中找到!");
}
}
List lstArea = new List();
areaPriorClass areaClass = new areaPriorClass();
areaClass.areaCode = areaCode;
areaClass.Prior = 1;
lstArea.Add(areaClass);
//调用出库算法,获取待出去托盘
OutAssignEnitty oAe = new OutAssignEnitty()
{
lstAreaPrior = lstArea,
stockCode = stockCode,
itemCode = itemCode,
traySpec = traySpec,
itemQty = locationQty,
needCalLock = false,
lockLocation = false//是否需要锁定货位
};
OutAssignResultEntity oaEresult = BLLCreator.Create().OutAssign(oAe);
if (!oaEresult.Success)
{
Log.Error("调用出库算法,获取待出库托盘:", oaEresult.Msg);
return OperateResult.Error(oaEresult.Msg);//货位获取失败!
}
return OperateResult.Succeed("", oaEresult);
}
});
}
catch (Exception ex)
{
Log.Error("GetLocationCodeAction异常:====>", ex.Message + ex.StackTrace);
return OperateResult.Error(ex.Message);
}
}
///
/// 宇寿叫料
///
/// 建议货位码
/// 目标库区
/// 起始托盘码
/// 目的货位码
/// 身份验证
///
[HttpGet]
public OperateResult GetCallMaterialAction(string locationCode, string areaCode, string qTrayCode, string endBit, string TaskType, string tokenId)
{
try
{
return ValidateToken(tokenId, t =>
{
var logPara = LogType.LogPara("叫料");
if (t == null)
{
return OperateResult.Error("登陆人员信息获取失败!");
}
else
{
TrayOnShelfEntity entity = new TrayOnShelfEntity();
entity.CN_S_DEVICE_NO = endBit; //终点
entity.CN_S_LOCATION_CODE = locationCode; //起点
entity.CN_S_END_AREA_CODE = areaCode;//目标库区
entity.CN_S_TRAY_CODE = qTrayCode; //起始托盘码
entity.CN_S_TASK_TYPE = TaskType; //任务类型
var result = BLLCreator.Create().SimZTDownShelfCallMaterial(entity, t);
if (!result.Success)
{
// BLLCreator.Create().RollBackLocation(moveResult, locationCode, logPara);
}
else
{
//增加库区量表
TN_WM_LOCATION_EXTEntity startlocation = BLLCreator.Create().GetExtModel(" where CN_S_LOCATION_CODE='" + locationCode + "'");
BLLCreator.Create().AddAllocQty(qTrayCode, startlocation.CN_S_STOCK_CODE, startlocation.CN_S_AREA_CODE, logPara);
}
Log.Detail(logPara, "调用叫料结果:" + JsonConvert.SerializeObject(result));
return result;
}
});
}
catch (Exception ex)
{
Log.Error("GetCallMaterialAction异常:====>", ex.Message + ex.StackTrace);
return OperateResult.Error(ex.Message);
}
}
///
/// 检查叫料货位是否可用
///
///
///
[HttpGet]
public string CheckLocationJL(string locationCode)
{
try
{
OperateResult result = BLLCreator.Create().CheckLocationJL(locationCode);
return JsonConvert.SerializeObject(result);
}
catch (Exception ex)
{
Log.Error("CheckLocationYS异常:====>", ex.Message + ex.StackTrace);
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message));
}
}
#endregion
#region 空托回库相关代码
///
/// 空托回库检测托盘码
///
///
///
[HttpGet]
public string CheckTrayCodeKT(string trayCode)
{
try
{
OperateResult result = BLLCreator.Create().CheckTrayCodeKT(trayCode);
return JsonConvert.SerializeObject(result);
}
catch (Exception ex)
{
Log.Error("CheckInStockTray异常:====>", ex.Message + ex.StackTrace);
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message));
}
}
///
/// 空托回库检测货位码和托盘码
///
///
///
[HttpGet]
public string CheckLocationCodeKT(string locationCode)
{
try
{
OperateResult result = BLLCreator.Create().CheckLocationCodeKT(locationCode);
return JsonConvert.SerializeObject(result);
}
catch (Exception ex)
{
Log.Error("CheckInStockLocation异常:====>", ex.Message + ex.StackTrace);
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message));
}
}
[HttpPost]
public OperateResult SimZTShelfAutoKT(JObject json)
{
try
{
Log.Info("空托上架开始", "");
TrayOnShelfEntity entity = JsonConvert.DeserializeObject(json.ToString());
return ValidateToken(entity.TokenId, t =>
{
if (t == null)
{
return OperateResult.Error("登陆人员信息获取失败!");
}
OperateResult oresult = new OperateResult();
if (!entity.BIND_TRAY_LOCATION)
{
oresult = BLLCreator.Create(t).AddTrayLocationRelation(entity.CN_S_TRAY_CODE, entity.CN_S_DEVICE_NO, t, entity.projectCode);
if (oresult.Success)
{
oresult = BLLCreator.Create().SimZTShelfAuto(entity, t);
}
}
else
{
oresult = BLLCreator.Create().SimZTShelfAuto(entity, t);
}
return oresult;
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message.ToString());
}
}
#endregion
#region 空托出库相关代码
///
/// 获取托盘类型列表
///
/// 托盘类型
///
[HttpGet]
public string GetTraySpecList()
{
try
{
return ValidateToken(x =>
{
List LoctionList = new List();
AutoBomStockAreaEntity LoctionModel = null;
LoctionModel = new AutoBomStockAreaEntity();
LoctionModel.CN_S_AREA_CODE = "120*100";
LoctionList.Add(LoctionModel);
return JsonConvert.SerializeObject(OperateResult.Succeed("", LoctionList));
});
}
catch (Exception ex)
{
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message));
}
}
#endregion
#region 调用入库方法
[HttpPost]
public OperateResult InAssignAlgor(JObject jsonData)
{
InAssignEntity entity = JsonConvert.DeserializeObject(jsonData.ToString());
InAssignResultEntity resultEntity = new InAssignResultEntity();
resultEntity = BLLCreator.Create().InAssign(entity);
return OperateResult.Succeed("", resultEntity);
}
#endregion
}
}