using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.Extensions.Options;
|
using Model.InterFaceModel;
|
using Newtonsoft.Json;
|
using System;
|
using System.IO;
|
using System.Security.Claims;
|
using Utility.Tools;
|
using WMS.BLL.LogServer;
|
using WMS.IBLL.IBllAsnServer;
|
using WMS.IBLL.IBllCheckServer;
|
using WMS.IBLL.IBllSoServer;
|
using WMS.IBLL.ILogServer;
|
using Wms.Tools;
|
using WMS.Entity.BllTaskEntity;
|
using WMS.IBLL.IBllTaskServer;
|
using Model.ModelVm.BllTaskVm;
|
using static Model.InterFaceModel.RCSModel;
|
using WMS.IBLL.IBllTransServer;
|
using Microsoft.Extensions.Logging;
|
using ZXing.QrCode.Internal;
|
using Model.ModelVm.BllCheckVm;
|
using Model.ModelVm.SysVm;
|
|
namespace Wms.Controllers
|
{
|
/// <summary>
|
/// 下游系统交互
|
/// </summary>
|
[Route("api/[controller]/[action]")]
|
[ApiController]
|
public class DownApiController : ControllerBase
|
{
|
private readonly ApiUrlConfig _config; //接口交互路径
|
private readonly IExportNoticeServer _exNoticeSvc;//出库单Svc
|
private readonly IPalletBindServer _asnPalletBindSvc;//托盘绑定Svc
|
private readonly IStockCheckServer _crCheckSvc;//托盘绑定Svc
|
private readonly ITaskServer _taskSvc;//任务Svc
|
private readonly IBllTaskSyncServer _taskSyncSvc;//任务同步Svc
|
private readonly IWaveMageServer _waveSvc;//任务同步Svc
|
private readonly IRcsServer _rcsserver;//RCS相关任务
|
private readonly INoticeServer _noticeSvc;//二楼单据相关
|
private readonly IHopperTransportServer _hopper;//二楼单据相关
|
public DownApiController(IOptions<ApiUrlConfig> setting, IExportNoticeServer exNoticeSvc, IPalletBindServer asnPalletBindSvc, IStockCheckServer crCheckSvc, ITaskServer taskSvc, IBllTaskSyncServer taskSyncSvc, IWaveMageServer waveSvc, IRcsServer rcsserver, INoticeServer noticeSvc, IHopperTransportServer hopper)
|
{
|
_config = setting.Value;
|
_exNoticeSvc = exNoticeSvc;
|
_asnPalletBindSvc = asnPalletBindSvc;
|
_crCheckSvc = crCheckSvc;
|
_taskSvc = taskSvc;
|
_taskSyncSvc = taskSyncSvc;
|
_waveSvc = waveSvc;
|
_rcsserver = rcsserver;
|
_noticeSvc = noticeSvc;
|
_hopper = hopper;
|
}
|
|
#region WMS接口 调用下游系统接口
|
|
/// <summary>
|
/// 指令下发(波次出库)
|
/// </summary>
|
/// <param name="unstackingMode">拆垛方式</param>
|
/// <param name="waveNo">出库单号</param>
|
/// <param name="outMode">出库口</param>
|
/// <param name="loadingAddre">装车口</param>
|
/// <returns></returns>
|
[Authorize]
|
[HttpGet]
|
public IActionResult WaveIssueOutHouse(string waveNo, string unstackingMode, string outMode, string loadingAddre)
|
{
|
try
|
{
|
//获取当前登录的用户ID
|
var claimsIdentity = this.User.Identity as ClaimsIdentity;
|
if (claimsIdentity == null)
|
{
|
return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
|
}
|
var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
|
if (string.IsNullOrWhiteSpace(userId))
|
{
|
return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
|
}
|
//验证出库口
|
//if (string.IsNullOrWhiteSpace(outMode))
|
//{
|
// return Ok(new { code = 1, msg = "请选择出库口" });
|
//}
|
|
var list = _waveSvc.WaveIssueOutHouse(waveNo, unstackingMode, outMode, loadingAddre, int.Parse(userId), _config.WcsHost + _config.IssueComApiUrl, out string str);
|
|
return Ok(new { code = 0, msg = str, data = list });
|
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 指令下发(出库)
|
/// </summary>
|
/// <param name="unstackingMode">拆垛方式</param>
|
/// <param name="soNo">出库单号</param>
|
/// <param name="outMode">出库口</param>
|
/// <param name="loadingAddre">装车口</param>
|
/// <returns></returns>
|
[Authorize]
|
[HttpGet]
|
public IActionResult IssueOutHouse(string soNo,string unstackingMode, string outMode,string loadingAddre)
|
{
|
try
|
{
|
//获取当前登录的用户ID
|
var claimsIdentity = this.User.Identity as ClaimsIdentity;
|
if (claimsIdentity == null)
|
{
|
return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
|
}
|
var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
|
if (string.IsNullOrWhiteSpace(userId))
|
{
|
return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
|
}
|
//验证出库口
|
//if (string.IsNullOrWhiteSpace(outMode))
|
//{
|
// return Ok(new { code = 1, msg = "请选择出库口" });
|
//}
|
|
var list = _exNoticeSvc.IssueOutHouse(soNo,unstackingMode, outMode,loadingAddre, int.Parse(userId), _config.WcsHost + _config.IssueComApiUrl,out string str);
|
|
return Ok(new { code = 0, msg = str , data = list });
|
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
|
/// <summary>
|
/// 重新下发出库任务
|
/// </summary>
|
/// <param name="taskNo"></param>
|
/// <returns></returns>
|
[HttpGet]
|
public IActionResult AgainSendSoTask(string taskNo)
|
{
|
try
|
{
|
//获取当前登录的用户ID
|
var claimsIdentity = this.User.Identity as ClaimsIdentity;
|
if (claimsIdentity == null)
|
{
|
return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
|
}
|
var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
|
if (string.IsNullOrWhiteSpace(userId))
|
{
|
return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
|
}
|
var list = _exNoticeSvc.AgainSendSoTask(taskNo, int.Parse(userId),_config.WcsHost + _config.IssueComApiUrl2);
|
|
return Ok(new { code = 0, msg = "重新下发已完成", data = list });
|
|
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 指令下发(盘点出库)
|
/// </summary>
|
/// <param name="crNo"></param>
|
/// <param name="outMode"></param>
|
/// <returns></returns>
|
[Authorize]
|
[HttpGet]
|
public IActionResult CheckOutHouse(string crNo,string outMode)
|
{
|
try
|
{
|
//获取当前登录的用户ID
|
var claimsIdentity = this.User.Identity as ClaimsIdentity;
|
if (claimsIdentity == null)
|
{
|
return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
|
}
|
var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
|
if (string.IsNullOrWhiteSpace(userId))
|
{
|
return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
|
}
|
|
var list = _crCheckSvc.CheckOutHouse(crNo, outMode,int.Parse(userId), _config.WcsHost + _config.IssueComApiUrl, out string str);
|
|
return Ok(new { code = 0, msg = str, data = list });
|
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 重新下发盘点任务
|
/// </summary>
|
/// <param name="taskNo"></param>
|
/// <returns></returns>
|
[HttpGet]
|
public IActionResult AgainSendCheckTask(string taskNo)
|
{
|
try
|
{
|
//获取当前登录的用户ID
|
var claimsIdentity = this.User.Identity as ClaimsIdentity;
|
if (claimsIdentity == null)
|
{
|
return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
|
}
|
var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
|
if (string.IsNullOrWhiteSpace(userId))
|
{
|
return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
|
}
|
_crCheckSvc.AgainSendCheckTask(taskNo, int.Parse(userId), _config.WcsHost + _config.IssueComApiUrl2);
|
|
return Ok(new { code = 0, msg = "重新下发已完成", data = "" });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
#endregion
|
|
#region WMS接口 被下游系统接口调用
|
|
/// <summary>
|
/// 绑定信息返回巷道口
|
/// </summary>
|
/// <param name="model">入库单信息</param>
|
/// <returns></returns>
|
[AllowAnonymous]
|
[HttpPost]
|
public IActionResult BindRequestRoadWay(BoxPalletBindVm model)
|
{
|
var logStr = $@".\log\WCS\WCS托盘绑定-申请巷道" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
|
|
try
|
{
|
|
var jsonData = JsonConvert.SerializeObject(model);
|
LogFile.SaveLogToFile($"WCS托盘绑定-申请巷道:( {jsonData} ),", logStr);
|
|
_asnPalletBindSvc.BindPalletStock(model, 0);
|
//申请巷道
|
var list = _asnPalletBindSvc.RequestRoadWay(model.PalletNo, "W01");
|
LogFile.SaveLogToFile($"WCS托盘绑定-申请巷道返回:( {JsonConvert.SerializeObject(list)} ),", logStr);
|
|
return Ok(new { Success = 0, Message = "托盘绑定-申请巷道成功", TaskList = list });
|
}
|
catch (Exception e)
|
{
|
LogFile.SaveLogToFile($"WCS托盘绑定-申请巷道返回:( {e.Message} ),", logStr);
|
|
return Ok(new ErpModel { Success = -1, Message = e.Message });
|
}
|
}
|
|
|
/// <summary>
|
/// 申请巷道
|
/// </summary>
|
/// <param name="model">入库单信息</param>
|
/// <returns></returns>
|
[AllowAnonymous]
|
[HttpPost]
|
public IActionResult RequestRoadWay(RequestLocate model)
|
{
|
var logStr = "";
|
|
logStr = $@".\log\WCS\WCS申请巷道" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
|
|
try
|
{
|
|
var jsonData = JsonConvert.SerializeObject(model);
|
LogFile.SaveLogToFile($"WCS申请巷道:( {jsonData} ),", logStr);
|
|
var list = _asnPalletBindSvc.RequestRoadWay(model.PalletNo, model.HouseNo );
|
|
LogFile.SaveLogToFile($"WCS申请巷道返回:( {JsonConvert.SerializeObject(list)} ),", logStr);
|
//new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo.Substring(0, 8),
|
// "申请巷道", $"申请巷道托盘号:{model.PalletNo.Substring(0, 8)}的成功信息", 2);
|
|
return Ok(new { Success = 0, Message = "申请巷道成功", TaskList = list });
|
}
|
catch (Exception e)
|
{
|
LogFile.SaveLogToFile($"WCS申请巷道返回:( {e.Message} ),", logStr);
|
//new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo.Substring(0, 8),
|
//"申请巷道", $"申请巷道托盘号:{model.PalletNo.Substring(0, 8)}的失败信息", 2);
|
|
return Ok(new ErpModel { Success = -1, Message = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 申请储位
|
/// </summary>
|
/// <param name="model">入库单信息</param>
|
/// <returns></returns>
|
[AllowAnonymous]
|
[HttpPost]
|
public IActionResult RequestLocation(RequestLocate model)
|
{
|
|
//获取当前登录的用户ID
|
//var claimsIdentity = this.User.Identity as ClaimsIdentity;
|
//if (claimsIdentity == null)
|
//{
|
// return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
|
//}
|
//var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
|
//if (string.IsNullOrWhiteSpace(userId))
|
//{
|
// return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
|
//}
|
|
//string palletno = model.PalletNo;
|
var logStr = "";
|
if (model.PalletNo.Length == 9)
|
{
|
logStr = $@".\log\WCS\WMS申请储位" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
|
}
|
else if (model.PalletNo.Length == 8)
|
{
|
logStr = $@".\log\WCS\WCS申请储位" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
|
}
|
|
try
|
{
|
if (model.PalletNo.Length == 9)
|
{
|
var jsonData = JsonConvert.SerializeObject(model);
|
LogFile.SaveLogToFile($"WMS申请储位:( {jsonData} ),", logStr);
|
}
|
else if (model.PalletNo.Length == 8)
|
{
|
var jsonData = JsonConvert.SerializeObject(model);
|
LogFile.SaveLogToFile($"WCS申请储位:( {jsonData} ),", logStr);
|
}
|
|
string pallet = model.PalletNo.Substring(0, 8);
|
var list = _asnPalletBindSvc.RequestLocation(pallet, model.HouseNo,model.RoadwayNo);
|
|
if (model.PalletNo.Length == 9)
|
{
|
new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo.Substring(0, 8), "申请储位", $"申请储位托盘号:{model.PalletNo.Substring(0, 8)}的成功信息",2);// int.Parse(userId)
|
LogFile.SaveLogToFile($"WMS申请储位成功:( {JsonConvert.SerializeObject(list)} ),", logStr);
|
}
|
else if (model.PalletNo.Length == 8)
|
{
|
LogFile.SaveLogToFile($"WCS申请储位返回:( {JsonConvert.SerializeObject(list)} ),", logStr);
|
}
|
if (model.PalletNo.Length == 9)
|
{
|
|
}
|
|
return Ok(new { Success = 0, Message = "申请储位成功", TaskList = list });
|
}
|
catch (Exception e)
|
{
|
if (model.PalletNo.Length == 9)
|
{
|
new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo.Substring(0, 8), "申请储位", $"申请储位托盘号:{model.PalletNo.Substring(0,8)}的失败信息", 2);//int.Parse(userId)
|
LogFile.SaveLogToFile($"WMS申请储位失败返回:( {e.Message} ),", logStr);
|
}
|
else if(model.PalletNo.Length == 8)
|
{
|
LogFile.SaveLogToFile($"WCS申请储位返回:( {e.Message} ),", logStr);
|
}
|
|
return Ok(new ErpModel { Success = -1, Message = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 接受wcs返回的信号 //指令反馈(是否完成)
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult ReceiveWcsSignal(ReceiveWcsSignal model)
|
{
|
try
|
{
|
//记录log
|
var logStr = $@".\log\WCS\任务反馈" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
|
var jsonData = JsonConvert.SerializeObject(model);
|
LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr);
|
|
if (string.IsNullOrEmpty(model.TaskNo) || string.IsNullOrEmpty(model.TaskStatus) || string.IsNullOrEmpty(model.TaskType))
|
{
|
return Ok(new WcsModel { StatusCode = -1, Msg = "接口数据不正确" });
|
}
|
//接收时间
|
var time1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
var orderType = _taskSvc.GetTaskOrderType(model.TaskNo);// 判断单据类型入出移
|
switch (orderType)
|
{
|
case "0"://入库完成任务
|
if (model.TaskType == "0")//0:入库 1:出库 2:移库
|
{
|
_asnPalletBindSvc.ArrivalSuccess(model.TaskNo,0);
|
return Ok(new WcsModel { StatusCode = 0, Msg = "入库完成" });
|
}
|
break;
|
case "1"://出库完成任务
|
if (model.TaskType == "1")//0:入库 1:出库 2:移库
|
{
|
_exNoticeSvc.ExportSuccess(model.TaskNo,0);
|
return Ok(new WcsModel { StatusCode = 0, Msg = "出库完成" });
|
}
|
else if (model.TaskType == "2")
|
{
|
_exNoticeSvc.RelocationSuccess(model.TaskNo, 0);
|
return Ok(new WcsModel { StatusCode = 0, Msg = "移库完成" });
|
}
|
break;
|
case "2"://盘库完成任务
|
if (model.TaskType == "1")//0:入库 1:出库 3:移库
|
{
|
_crCheckSvc.CheckSuccess(model.TaskNo, 0);
|
return Ok(new WcsModel { StatusCode = 0, Msg = "盘点出库完成" });
|
}
|
else if (model.TaskType == "0")// 盘点出库托盘回库完成
|
{
|
_asnPalletBindSvc.ArrivalSuccess(model.TaskNo, 0);
|
return Ok(new WcsModel { StatusCode = 0, Msg = "入库完成" });
|
}
|
break;
|
case "3"://移库完成任务、优化储位
|
if (model.TaskType == "3") //0:入库 1:出库 3:移库
|
{
|
//填写移库完成代码
|
}
|
break;
|
default :
|
return Ok(new WcsModel { StatusCode = -1, Msg = "传递的任务状态为失败状态" });
|
}
|
return Ok(new WcsModel { StatusCode = -1, Msg = "传递的任务状态为失败状态" });
|
}
|
catch (Exception ex)
|
{
|
return Ok(new WcsModel { StatusCode = -1, Msg = ex.Message });
|
}
|
}
|
|
|
/// <summary>
|
/// 空取异常
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult EmptyException(ReceiveWcsSignal model)
|
{
|
var logStr = $@".\log\WCS\异常反馈" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
|
try
|
{
|
var jsonData = JsonConvert.SerializeObject(model);
|
LogFile.SaveLogToFile($"空取异常:( {jsonData} ),", logStr);
|
|
var bl = _exNoticeSvc.EmptyException(model);
|
|
LogFile.SaveLogToFile($"空取异常:(执行结果成功),", logStr);
|
return Ok(new { Success = 0, Message = ""});
|
}
|
catch (Exception e)
|
{
|
LogFile.SaveLogToFile($"空取异常:( {e.Message} ),", logStr);
|
return Ok(new ErpModel { Success = -1, Message = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 满入异常
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult FullException(ReceiveWcsSignal model)
|
{
|
var logStr = $@".\log\WCS\异常反馈" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
|
try
|
{
|
var jsonData = JsonConvert.SerializeObject(model);
|
LogFile.SaveLogToFile($"满入异常:( {jsonData} ),", logStr);
|
|
var list = _asnPalletBindSvc.FullException(model);
|
|
LogFile.SaveLogToFile($"满入异常:( {JsonConvert.SerializeObject(list)} ),", logStr);
|
return Ok(new { Success = 0, Message = "", TaskList = list });
|
}
|
catch (Exception e)
|
{
|
LogFile.SaveLogToFile($"满入异常:( {e.Message} ),", logStr);
|
return Ok(new ErpModel { Success = -1, Message = e.Message });
|
}
|
}
|
|
//每日清空日志
|
[HttpPost]
|
public IActionResult DeleteNlogFile()
|
{
|
try
|
{
|
string[] files = null;
|
try
|
{
|
files = Directory.GetFiles(_config.GetLog1);
|
}
|
catch
|
{
|
try
|
{
|
files = Directory.GetFiles(_config.GetLog2);
|
}
|
catch (Exception ex)
|
{
|
throw new Exception(ex.Message);
|
}
|
}
|
finally
|
{
|
foreach (string file in files)
|
{
|
FileInfo fi = new FileInfo(file);
|
if (fi.LastWriteTime < DateTime.Now.AddMonths(-1))
|
{
|
fi.Delete();
|
}
|
}
|
}
|
|
return Ok(new
|
{
|
msg = "成功清除"
|
});
|
}
|
catch (Exception ex)
|
{
|
|
throw new Exception(ex.Message);
|
}
|
}
|
|
//托盘箱码信息 自动码垛 (wcs提供)
|
|
//申请空托(自动码空托时用)
|
|
//agv返回信息(任务是否完成)
|
/// <summary>
|
/// 接受agv返回的信号 //指令反馈(是否完成)
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult ReceiveAgvSignal(ReceiveWcsSignal model)
|
{
|
try
|
{
|
//记录log
|
var logStr = $@".\log\AGV\任务反馈" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
|
var jsonData = JsonConvert.SerializeObject(model);
|
LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr);
|
|
if (string.IsNullOrEmpty(model.TaskNo) || string.IsNullOrEmpty(model.TaskStatus) || string.IsNullOrEmpty(model.TaskType))
|
{
|
return Ok(new WcsModel { StatusCode = -1, Msg = "接口数据不正确" });
|
}
|
//接收时间
|
var time1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
var orderType = _taskSvc.GetTaskOrderType(model.TaskNo);// 判断单据类型入出移
|
switch (orderType)
|
{
|
|
case "1"://出库完成任务
|
if (model.TaskType == "1")//0:入库 1:出库 2:移库
|
{
|
_exNoticeSvc.ExportSuccessAGV(model.TaskNo, 0);
|
return Ok(new WcsModel { StatusCode = 0, Msg = "出库完成" });
|
}
|
else
|
{
|
return Ok(new WcsModel { StatusCode = -1, Msg = "传递的任务类型不是出库类型" });
|
}
|
default:
|
return Ok(new WcsModel { StatusCode = -1, Msg = "传递的任务状态为失败状态" });
|
}
|
}
|
catch (Exception ex)
|
{
|
return Ok(new WcsModel { StatusCode = -1, Msg = ex.Message });
|
}
|
}
|
|
|
|
/// <summary>
|
/// 接收同步任务信息
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult ReceiveWCSTaskSync(TaskSyncInfoVm model)
|
{
|
try
|
{
|
//记录log
|
var logStr = $@".\log\WCS\任务同步" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
|
var jsonData = JsonConvert.SerializeObject(model);
|
LogFile.SaveLogToFile($"任务同步:( {jsonData} ),", logStr);
|
|
if (string.IsNullOrEmpty(model.TaskNo) || string.IsNullOrEmpty(model.StartLocat) || string.IsNullOrEmpty(model.EndLocat) || string.IsNullOrEmpty(model.PalletNo))
|
{
|
return Ok(new WcsModel { StatusCode = -1, Msg = "接口数据不正确" });
|
}
|
_taskSyncSvc.ReceiveWCSTaskSync(model);
|
return Ok(new WcsModel { StatusCode = 0, Msg = "同步完成" });
|
}
|
catch (Exception ex)
|
{
|
return Ok(new WcsModel { StatusCode = -1, Msg = ex.Message });
|
}
|
}
|
#endregion
|
|
#region 二楼业务
|
/// <summary>
|
/// RCS叫桶
|
/// </summary>
|
/// <param name="pallmsg"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult GetPalletNo(Pallnetmsg pallmsg)
|
{
|
var logStr = $@".\log\AGV\AGV申请叫桶" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
|
AgvResultModel resultModel = null;//返回信息
|
try
|
{
|
var jsonData = JsonConvert.SerializeObject(pallmsg);
|
LogFile.SaveLogToFile($"AGV申请叫桶-请求报文:( {jsonData} ),", logStr);
|
|
if (string.IsNullOrWhiteSpace(pallmsg.Location))
|
{
|
resultModel = new AgvResultModel { code = "1", message = "叫料位置为空!", data = "", reqCode = "" };
|
var jsonData3 = JsonConvert.SerializeObject(resultModel);
|
LogFile.SaveLogToFile($"AGV申请叫桶-返回报文:( {jsonData3} ),", logStr);
|
return Ok(resultModel);
|
}
|
if (string.IsNullOrWhiteSpace(pallmsg.Type))
|
{
|
resultModel = new AgvResultModel { code = "1", message = "任务类型为空!", data = "", reqCode = "" };
|
var jsonData4 = JsonConvert.SerializeObject(resultModel);
|
LogFile.SaveLogToFile($"AGV申请叫桶-返回报文:( {jsonData4} ),", logStr);
|
return Ok(resultModel);
|
}
|
string taskNo = "";
|
//具体处理方法
|
_rcsserver.GetPalletNo(pallmsg, _config.AgvHost + _config.GenAgvSchedulingTask, out taskNo);
|
|
resultModel = new AgvResultModel { code = "0", message = "叫桶成功!", data = taskNo, reqCode = "" };
|
var jsonData2 = JsonConvert.SerializeObject(resultModel);
|
LogFile.SaveLogToFile($"AGV申请叫桶-返回报文:( {jsonData2} ),", logStr);
|
return Ok(resultModel);
|
}
|
catch (Exception e)
|
{
|
LogFile.SaveLogToFile($"AGV申请叫桶异常:( {e.Message} ),", logStr);
|
|
resultModel = new AgvResultModel { code = "1", message = e.Message, data = "", reqCode = "" };
|
var jsonData2 = JsonConvert.SerializeObject(resultModel);
|
LogFile.SaveLogToFile($"AGV申请叫桶-返回报文:( {jsonData2} ),", logStr);
|
return Ok(resultModel);
|
}
|
}
|
|
/// <summary>
|
/// RCS申请储位
|
/// </summary>
|
/// <param name="pallmsg"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult ApplyLocatNo(Pallnetmsg pallmsg)
|
{
|
var logStr = $@".\log\AGV\AGV申请储位" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
|
AgvResultModel resultModel = null;//返回信息
|
try
|
{
|
var jsonData = JsonConvert.SerializeObject(pallmsg);
|
LogFile.SaveLogToFile($"AGV申请储位-请求报文:( {jsonData} ),", logStr);
|
|
if (string.IsNullOrWhiteSpace(pallmsg.Location))
|
{
|
resultModel = new AgvResultModel { code = "1", message = "申请位置为空!", data = "", reqCode = "" };
|
var jsonData3 = JsonConvert.SerializeObject(resultModel);
|
LogFile.SaveLogToFile($"AGV申请储位-返回报文:( {jsonData3} ),", logStr);
|
return Ok(resultModel);
|
}
|
if (string.IsNullOrWhiteSpace(pallmsg.Type))
|
{
|
resultModel = new AgvResultModel { code = "1", message = "任务类型为空!", data = "", reqCode = "" };
|
var jsonData3 = JsonConvert.SerializeObject(resultModel);
|
LogFile.SaveLogToFile($"AGV申请储位-返回报文:( {jsonData3} ),", logStr);
|
return Ok(resultModel);
|
}
|
//if (string.IsNullOrWhiteSpace(pallmsg.PalletNo))
|
//{
|
// resultModel = new AgvResultModel { code = "1", message = "申请桶号为空!", data = "", reqCode = "" };
|
// var jsonData3 = JsonConvert.SerializeObject(resultModel);
|
// LogFile.SaveLogToFile($"AGV申请储位-返回报文:( {jsonData3} ),", logStr);
|
// return Ok(resultModel);
|
//}
|
string taskNo = "";
|
//具体处理方法
|
_rcsserver.ApplyLocatNo(pallmsg, _config.AgvHost + _config.GenAgvSchedulingTask, out taskNo);
|
|
resultModel = new AgvResultModel { code = "0", message = "申请储位成功!", data = taskNo, reqCode = "" };
|
var jsonData2 = JsonConvert.SerializeObject(resultModel);
|
LogFile.SaveLogToFile($"AGV申请储位-返回报文:( {jsonData2} ),", logStr);
|
return Ok(resultModel);
|
}
|
catch (Exception e)
|
{
|
LogFile.SaveLogToFile($"AGV申请储位异常:( {e.Message} ),", logStr);
|
|
resultModel = new AgvResultModel { code = "1", message = e.Message, data = "", reqCode = "" };
|
var jsonData3 = JsonConvert.SerializeObject(resultModel);
|
LogFile.SaveLogToFile($"AGV申请储位-返回报文:( {jsonData3} ),", logStr);
|
return Ok(resultModel);
|
}
|
}
|
/// <summary>
|
/// 将净桶改为脏桶并拉到脏桶区
|
/// </summary>
|
/// <param name="pallmsg"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult ChangePalletStatus(Pallnetmsg pallmsg)
|
{
|
var result = new ErpModel { Success = -1, Message = "", };
|
try
|
{
|
if (string.IsNullOrWhiteSpace(pallmsg.PalletNo))
|
{
|
result.Message = "桶编号不能为空!";
|
return Ok(result);
|
}
|
_rcsserver.ChangePalletStatus(pallmsg.PalletNo, _config.AgvHost + _config.GenAgvSchedulingTask);
|
result.Success = 0;
|
result.Message = "操作成功!";
|
return Ok(result);
|
}
|
catch (Exception e)
|
{
|
result.Message = e.Message;
|
return Ok(result);
|
}
|
}
|
|
/// <summary>
|
/// MES下发清洗锁定脏桶
|
/// </summary>
|
/// <param name="pallmsg"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult CleanPallet(Pallnetmsg pallmsg)
|
{
|
var result = new ErpModel { Success = -1, Message = "", };
|
try
|
{
|
if (string.IsNullOrWhiteSpace(pallmsg.Location))
|
{
|
result.Message = "叫料位置为空!";
|
return Ok(result);
|
}
|
if (string.IsNullOrWhiteSpace(pallmsg.PalletNo))
|
{
|
result.Message = "桶号为空!";
|
return Ok(result);
|
}
|
_rcsserver.CleanPallet(pallmsg, _config.AgvHost + _config.GenAgvSchedulingTask);
|
result.Success = 0;
|
result.Message = "叫桶成功!";
|
return Ok(result);
|
}
|
catch (Exception e)
|
{
|
result.Message = e.Message;
|
return Ok(result);
|
}
|
}
|
|
/// <summary>
|
/// 入库单据下发
|
/// </summary>
|
/// <param name="model">入库单信息</param>
|
/// <returns></returns>
|
//[Authorize]
|
[HttpPost]
|
public IActionResult CreateAsnWork(AsnInfo model)
|
{
|
var result = new ErpModel { Success = -1, Message = "" };
|
try
|
{
|
/*var claimsIdentity = this.User.Identity as ClaimsIdentity;
|
if (claimsIdentity == null)
|
{
|
throw new Exception("未获取到用户信息");
|
}
|
string UserId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
|
if (string.IsNullOrWhiteSpace(UserId))
|
{
|
throw new Exception("未获取到用户信息");
|
}*/
|
|
result = _noticeSvc.CreateAsnWork(model);
|
|
return Ok(result);
|
}
|
catch (Exception e)
|
{
|
result.Message = e.Message;
|
return Ok(result);
|
}
|
}
|
|
|
#region Agv任务完成反馈
|
/// <summary>
|
/// 任务开始
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult start(AgvTaskDto model)
|
{
|
//记录log
|
var logStr = $@".\log\AGV\任务执行通知" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
|
AgvResultModel resultModel = null;//返回信息
|
try
|
{
|
var jsonData = JsonConvert.SerializeObject(model);
|
LogFile.SaveLogToFile($"AGV任务执行通知-任务开始-请求报文:( {jsonData} ),", logStr);
|
|
//具体处理方法
|
|
|
|
resultModel = new AgvResultModel { code = "0", message = "成功", reqCode = model.reqCode };
|
var jsonData2 = JsonConvert.SerializeObject(resultModel);
|
LogFile.SaveLogToFile($"AGV任务执行通知-任务开始-返回报文:( {jsonData2} ),", logStr);
|
return Ok(resultModel);
|
}
|
catch (Exception ex)
|
{
|
LogFile.SaveLogToFile($"AGV任务执行通知-任务开始-异常:( {ex.Message} ),", logStr);
|
|
resultModel = new AgvResultModel { code = "1", message = ex.Message, reqCode = model.reqCode };
|
var jsonData2 = JsonConvert.SerializeObject(resultModel);
|
LogFile.SaveLogToFile($"AGV任务执行通知-任务开始-返回报文:( {jsonData2} ),", logStr);
|
return Ok(resultModel);
|
}
|
}
|
/// <summary>
|
/// 走出储位
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult outbin(AgvTaskDto model)
|
{
|
//记录log
|
var logStr = $@".\log\AGV\任务执行通知" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
|
AgvResultModel resultModel = null;//返回信息
|
try
|
{
|
var jsonData = JsonConvert.SerializeObject(model);
|
LogFile.SaveLogToFile($"AGV任务执行通知-走出储位-请求报文:( {jsonData} ),", logStr);
|
|
//具体处理方法
|
|
|
|
resultModel = new AgvResultModel { code = "0", message = "成功", reqCode = model.reqCode };
|
var jsonData2 = JsonConvert.SerializeObject(resultModel);
|
LogFile.SaveLogToFile($"AGV任务执行通知-走出储位-返回报文:( {jsonData2} ),", logStr);
|
return Ok(resultModel);
|
}
|
catch (Exception ex)
|
{
|
LogFile.SaveLogToFile($"AGV任务执行通知-走出储位-异常:( {ex.Message} ),", logStr);
|
|
resultModel = new AgvResultModel { code = "1", message = ex.Message, reqCode = model.reqCode };
|
var jsonData2 = JsonConvert.SerializeObject(resultModel);
|
LogFile.SaveLogToFile($"AGV任务执行通知-走出储位-返回报文:( {jsonData2} ),", logStr);
|
return Ok(resultModel);
|
}
|
}
|
/// <summary>
|
/// 任务结束
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult end(AgvTaskDto model)
|
{
|
//记录log
|
var logStr = $@".\log\AGV\任务执行通知" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
|
AgvResultModel resultModel = null;//返回信息
|
try
|
{
|
var jsonData = JsonConvert.SerializeObject(model);
|
LogFile.SaveLogToFile($"AGV任务执行通知-任务结束-请求报文:( {jsonData} ),", logStr);
|
|
//具体处理方法
|
_rcsserver.RCSFinishTask(model.taskCode, "1", "AGV");
|
|
|
resultModel = new AgvResultModel { code = "0", message = "成功", reqCode = model.reqCode };
|
var jsonData2 = JsonConvert.SerializeObject(resultModel);
|
LogFile.SaveLogToFile($"AGV任务执行通知-任务结束-返回报文:( {jsonData2} ),", logStr);
|
return Ok(resultModel);
|
}
|
catch (Exception ex)
|
{
|
LogFile.SaveLogToFile($"AGV任务执行通知-任务结束-异常:( {ex.Message} ),", logStr);
|
|
resultModel = new AgvResultModel { code = "1", message = ex.Message, reqCode = model.reqCode };
|
var jsonData2 = JsonConvert.SerializeObject(resultModel);
|
LogFile.SaveLogToFile($"AGV任务执行通知-任务结束-返回报文:( {jsonData2} ),", logStr);
|
return Ok(resultModel);
|
}
|
}
|
/// <summary>
|
/// 任务单取消
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult cancel(AgvTaskDto model)
|
{
|
//记录log
|
var logStr = $@".\log\AGV\任务执行通知" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
|
AgvResultModel resultModel = null;//返回信息
|
try
|
{
|
var jsonData = JsonConvert.SerializeObject(model);
|
LogFile.SaveLogToFile($"AGV任务执行通知-任务单取消-请求报文:( {jsonData} ),", logStr);
|
|
//具体处理方法
|
|
|
|
resultModel = new AgvResultModel { code = "0", message = "成功", reqCode = model.reqCode };
|
var jsonData2 = JsonConvert.SerializeObject(resultModel);
|
LogFile.SaveLogToFile($"AGV任务执行通知-任务单取消-返回报文:( {jsonData2} ),", logStr);
|
return Ok(resultModel);
|
}
|
catch (Exception ex)
|
{
|
LogFile.SaveLogToFile($"AGV任务执行通知-任务单取消-异常:( {ex.Message} ),", logStr);
|
|
resultModel = new AgvResultModel { code = "1", message = ex.Message, reqCode = model.reqCode };
|
var jsonData2 = JsonConvert.SerializeObject(resultModel);
|
LogFile.SaveLogToFile($"AGV任务执行通知-任务单取消-返回报文:( {jsonData2} ),", logStr);
|
return Ok(resultModel);
|
}
|
}
|
|
#endregion
|
|
/// <summary>
|
/// 出库单据下发
|
/// </summary>
|
/// <param name="model">出库单信息</param>
|
/// <returns></returns>
|
//[Authorize]
|
[HttpPost]
|
public IActionResult CreateSoWork(SoInfo model)
|
{
|
try
|
{
|
/*var claimsIdentity = this.User.Identity as ClaimsIdentity;
|
if (claimsIdentity == null)
|
{
|
throw new Exception("未获取到用户信息");
|
}
|
string UserId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
|
if (string.IsNullOrWhiteSpace(UserId))
|
{
|
throw new Exception("未获取到用户信息");
|
}*/
|
|
SoResInfo result = _noticeSvc.CreateSoWork(model);
|
return Ok(result);
|
|
}
|
catch (Exception e)
|
{
|
return Ok(new ErpModel { Success = -1, Message = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 手动下发小车任务
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult SendAgvTaskWms(CheckTaskVm model)
|
{
|
try
|
{
|
//获取当前登录的用户ID
|
var claimsIdentity = this.User.Identity as ClaimsIdentity;
|
if (claimsIdentity == null)
|
{
|
return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
|
}
|
var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
|
if (string.IsNullOrWhiteSpace(userId))
|
{
|
return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
|
}
|
_rcsserver.DownTask(model.taskNo, int.Parse(userId), _config.AgvHost + _config.GenAgvSchedulingTask);
|
|
return Ok(new { code = 0, msg = "重新下发已完成", data = "" });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 手动完成小车任务
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult FinshAgvTaskWms(CheckTaskVm model)
|
{
|
try
|
{
|
//获取当前登录的用户ID
|
var claimsIdentity = this.User.Identity as ClaimsIdentity;
|
if (claimsIdentity == null)
|
{
|
return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
|
}
|
var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
|
if (string.IsNullOrWhiteSpace(userId))
|
{
|
return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
|
}
|
//具体处理方法
|
_rcsserver.RCSFinishTask(model.taskNo, "1", "WMS");
|
|
return Ok(new { code = 0, msg = "重新下发已完成", data = "" });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 手动取消AGV移库任务
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult CancelAgvTaskWms(CheckTaskVm model)
|
{
|
try
|
{
|
//获取当前登录的用户ID
|
var claimsIdentity = this.User.Identity as ClaimsIdentity;
|
if (claimsIdentity == null)
|
{
|
return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
|
}
|
var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
|
if (string.IsNullOrWhiteSpace(userId))
|
{
|
return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
|
}
|
_rcsserver.CancelTask(model.taskNo, int.Parse(userId));
|
|
return Ok(new { code = 0, msg = "成功取消任务", data = "" });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
#endregion
|
|
#region JC37 料斗转运3、4楼业务
|
|
/// <summary>
|
/// 获取区域根据角色
|
/// </summary>
|
/// <param name=""></param>
|
/// <returns></returns>
|
[HttpGet]
|
public IActionResult GetAreaListByUser()
|
{
|
try
|
{
|
//获取当前登录的用户ID
|
var claimsIdentity = this.User.Identity as ClaimsIdentity;
|
if (claimsIdentity == null)
|
{
|
return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
|
}
|
var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
|
if (string.IsNullOrWhiteSpace(userId))
|
{
|
return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
|
}
|
var model = _hopper.GetAreaListByUser(int.Parse(userId));
|
|
return Ok(new { data = model, code = 0, msg = "" });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { data = "", code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 获取储位根据区域
|
/// </summary>
|
/// <param name="areaNo"></param>
|
/// <returns></returns>
|
[HttpGet]
|
public IActionResult GetLocatByArea(string areaNo)
|
{
|
try
|
{
|
var model = _hopper.GetLocatByArea(areaNo);
|
|
return Ok(new { data = model, code = 0, msg = "" });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { data = "", code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 获取罐类型根据区域
|
/// </summary>
|
/// <param name="areaNo"></param>
|
/// <returns></returns>
|
[HttpGet]
|
public IActionResult GetPlnStatusByArea(string areaNo)
|
{
|
try
|
{
|
var model = _hopper.GetPlnStatusByArea(areaNo);
|
|
return Ok(new { data = model, code = 0, msg = "" });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { data = "", code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 获取物料根据罐类型
|
/// </summary>
|
/// <param name="palletStatus"></param>
|
/// <returns></returns>
|
[HttpGet]
|
public IActionResult GetSkuByStatus(string palletStatus)
|
{
|
try
|
{
|
var model = _hopper.GetSkuByStatus(palletStatus);
|
|
return Ok(new { data = model, code = 0, msg = "" });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { data = "", code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 获取批次根据物料
|
/// </summary>
|
/// <param name="skuNo"></param>
|
/// <returns></returns>
|
[HttpGet]
|
public IActionResult GetLotNoBySku(string skuNo)
|
{
|
try
|
{
|
var model = _hopper.GetLotNoBySku(skuNo);
|
|
return Ok(new { data = model, code = 0, msg = "" });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { data = "", code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 获取物料
|
/// </summary>
|
/// <returns></returns>
|
[HttpGet]
|
public IActionResult GetSku()
|
{
|
try
|
{
|
var model = _hopper.GetSku();
|
|
return Ok(new { data = model, code = 0, msg = "" });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { data = "", code = 1, msg = e.Message });
|
}
|
}
|
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name=""></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult jiaoLiaoHopper(HopperModel model)
|
{
|
try
|
{
|
//获取当前登录的用户ID
|
var claimsIdentity = this.User.Identity as ClaimsIdentity;
|
if (claimsIdentity == null)
|
{
|
return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
|
}
|
var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
|
if (string.IsNullOrWhiteSpace(userId))
|
{
|
return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
|
}
|
_hopper.jiaoLiaoHopper(model.AreaNo,model.LocateNo,model.PlnStatus,model.Standard,model.SkuNo,model.LotNo,"", int.Parse(userId));
|
|
return Ok(new { data = model, code = 0, msg = "" });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { data = "", code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name=""></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult jiaoCheHopper(HopperModel model)
|
{
|
try
|
{
|
//获取当前登录的用户ID
|
var claimsIdentity = this.User.Identity as ClaimsIdentity;
|
if (claimsIdentity == null)
|
{
|
return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
|
}
|
var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
|
if (string.IsNullOrWhiteSpace(userId))
|
{
|
return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
|
}
|
_hopper.jiaoCheHopper(model.AreaNo, model.LocateNo,model.PlnNo, model.PlnStatus, model.Weight , model.SkuNo, model.LotNo, int.Parse(userId));
|
|
return Ok(new { data = model, code = 0, msg = "" });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { data = "", code = 1, msg = e.Message });
|
}
|
}
|
|
|
#endregion
|
|
}
|
}
|