using JiepeiWMS.Common.Enums;
using JiepeiWMS.Filter;
using JiepeiWMS.IServices;
using JiepeiWMS.Model;
using JiepeiWMS.Model.Models;
using JiepeiWMS.Model.ViewModels;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
namespace JiepeiWMS.Api.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
[Authorize(Permissions.Name)]
public class WMOrderMainController : ControllerBase
{
///
/// 订单信息
///
private readonly IWMOrderMainServices _wMOrderMainServices;
private readonly IWMOrderInfoServices _wMOrderInfoServices;
public WMOrderMainController(IWMOrderMainServices WMOrderMainServices,
IWMOrderInfoServices WMOrderInfoServices)
{
_wMOrderMainServices = WMOrderMainServices;
_wMOrderInfoServices = WMOrderInfoServices;
}
///
/// 查询列表
///
/// 页数
/// 关键字
/// 条数
///
[HttpGet]
public async Task>> Index(int page = 1, string key = "", int intPageSize = 50)
{
if (string.IsNullOrWhiteSpace(key))
key = "";
var PageList = await _wMOrderMainServices.GetWMOrderMainPage(page, intPageSize, key);
return new MessageModel>()
{
msg = "获取成功",
success = PageList.dataCount >= 0,
response = PageList
};
}
///
/// 获取列表
///
///
[HttpGet]
[AllowAnonymous]
public async Task> Get(int id = 0)
{
return new MessageModel()
{
msg = "获取成功",
success = true,
response = await _wMOrderMainServices.QueryById(id)
};
}
///
/// 订单详情
///
///
///
[HttpGet]
public async Task> Detail(int Id = 0)
{
var model = await _wMOrderMainServices.QueryById(Id);
if (model != null)
{
//var dicType = typeof(EnumWMInInventoryType)._GetValueDescriptionDicFromEnumType();
//string name;
//model.OutInTypeName = dicType.TryGetValue((EnumWMInInventoryType)model.OutInType, out name) ? name : string.Empty;
model.OrderInfoList = await _wMOrderInfoServices.Query(w => w.OrderNo == model.OrderNo);
foreach (var item in model.OrderInfoList)
{
}
}
return new MessageModel()
{
msg = "获取成功",
success = true,
response = model
};
}
///
/// 获取订单信息
///
///
[HttpGet, AllowAnonymous, AuthKeySecret]
public async Task> CreateOrderMainInfo(WMOrderMainViewModels model)
{
var msg = string.Empty;
var data = new MessageModel();
try
{
//验证非空
var mainParam = await _wMOrderMainServices.ValidateReconParams(model.OrderMainModel);
if (!string.IsNullOrWhiteSpace(mainParam))
{
msg = mainParam;
goto ErrorResult;
}
var orderMainModel = await _wMOrderMainServices.GetModel(x => x.GroupNo == model.OrderMainModel.GroupNo);
if (orderMainModel == null)
{
//新增订单信息数据
if (model.OrderMainModel.DataType <= EnumOrderMainDataType.贴片板子内部发货.GetHashCode() || model.OrderMainModel.DataType == EnumOrderMainDataType.元器件供应商发货.GetHashCode())
{
if (model.OrderMainModel.OrderNo.StartsWith("H"))
{
model.OrderMainModel.ProType = 1;
}
else if (model.OrderMainModel.OrderNo.StartsWith("A_"))
{
model.OrderMainModel.ProType = 3;
}
else if (model.OrderMainModel.OrderNo.StartsWith("S_H"))
{
model.OrderMainModel.ProType = 2;
}
else if (model.OrderMainModel.OrderNo.StartsWith("IC_"))
{
model.OrderMainModel.ProType = 4;
}
await _wMOrderMainServices.Add(model.OrderMainModel);
}
}
else
{
//更新订单信息数据
await _wMOrderMainServices.Update(model.OrderMainModel);
}
//循环子订单信息数据
foreach (var item in model.OrderInfoList)
{
//验证非空
var infoParam = await _wMOrderInfoServices.ValidateReconParams(item);
if (!string.IsNullOrWhiteSpace(infoParam))
{
msg = infoParam;
goto ErrorResult;
}
var orderInfoModel = await _wMOrderInfoServices.GetModel(x => x.OrderNo == item.OrderNo);
if (orderInfoModel == null)
{
//新增子订单信息数据
await _wMOrderInfoServices.Add(item);
}
else
{
//更新子订单信息数据
await _wMOrderInfoServices.Update(item);
}
}
data.msg = "获取订单信息成功";
data.success = true;
data.response = 1.ObjToString();
return data;
ErrorResult:
data.msg = msg;
data.success = false;
return data;
}
catch (Exception ex)
{
data.msg = ex.Message;
data.status = 500;
return data;
}
}
}
}