using Admin.NET.Core.Service;
|
using Admin.NET.Application.Entity;
|
using Microsoft.AspNetCore.Http;
|
using System.Data;
|
using System.Web;
|
using System.Text;
|
using Furion.DatabaseAccessor;
|
using Admin.NET.Application.Service.WmsOrder.Mes_BatchOrderUPI_New.Dto;
|
|
namespace Admin.NET.Application;
|
/// <summary>
|
/// 第三方接口服务
|
/// </summary>
|
[ApiDescriptionSettings(ApplicationConst.ThirdInterFaceServiceGroupName, Order = 100)]
|
public class ThirdInterFaceService : IDynamicApiController, ITransient
|
{
|
private readonly SqlSugarRepository<Mes_BatchOrderUPI_New> _rep;
|
private readonly SqlSugarRepository<Mes_Package_Gather> _mes_Package_Gather_Rep;
|
public ThirdInterFaceService(SqlSugarRepository<Mes_BatchOrderUPI_New> rep,
|
SqlSugarRepository<Mes_Package_Gather> mes_Package_Gather_Rep
|
)
|
{
|
_rep = rep;
|
_mes_Package_Gather_Rep = mes_Package_Gather_Rep;
|
}
|
|
[HttpPost]
|
[ApiDescriptionSettings(Name = "GetBatchOrderUPIList")]
|
[UnitOfWork]
|
[AllowAnonymous]
|
public async Task GetBatchOrderUPIList(List<Mes_BatchOrderUPI_New> input)
|
{
|
if (input?.Count <= 0)
|
{
|
throw Oops.Oh($"数据不能为空");
|
}
|
//校验upi是否重复 【Editby shaocx,2022-12-13】
|
var myList = input.Select(x => x.UPI).ToList();
|
var result = myList.GroupBy(x => x)
|
.Where(g => g.Count() > 1)
|
.ToDictionary(x => x.Key, x => x.Count());
|
if (result != null && result.Count > 0)
|
{
|
var dit = result.First();
|
throw Oops.Oh("本次有重复的UPI!重复号为:" + dit.Key + ",重复条数:" + dit.Value);
|
}
|
|
//同一个UPI只能属于一个 批次号+订单号
|
//会存在 一个批次号,多个订单号的情况
|
//会存在 一个订单号,多个批次号的情况
|
|
//按照批次号+订单号删除
|
List<string> packageList = new List<string>();
|
input.ForEach(x => packageList.Add(x.PlanNo + "_" + x.OrderId));//upis是传过来的upi字段集合
|
|
var batchOrderUPIs = await _rep.AsQueryable().Where(x => packageList.Contains(x.PlanNo + "_" + x.OrderId)).ToListAsync();//batchOrderUPIs是重复的upi集合
|
//批量删除
|
await _rep.DeleteAsync(batchOrderUPIs);
|
|
//批量删除
|
await _mes_Package_Gather_Rep.DeleteAsync(x => packageList.Contains(x.PlanNo + "_" + x.OrderId));
|
|
//删除重复的upi数据
|
List<string> upis = new List<string>();
|
input.ForEach(x => upis.Add(x.UPI));//upis是传过来的upi字段集合
|
var queryDateTime = DateTime.Now.AddDays(-7);
|
var batchOrderUPIs22 = await _rep.AsQueryable().Where(x => upis.Contains(x.UPI) && x.CreateTime >= queryDateTime).ToListAsync();//batchOrderUPIs是重复的upi集合
|
//批量删除
|
await _rep.DeleteAsync(batchOrderUPIs22);
|
|
foreach (var item in input)
|
{
|
item.AreaCode = AreaCodeEnum.无区域;
|
item.UpiStatus = UpiStatusEnum.初始;
|
item.CreateUserName = item.UpdateUserName = "MES";
|
}
|
List<Mes_Package_Gather> addGatherList = new List<Mes_Package_Gather>();
|
var groups = input.GroupBy(x => x.PackageCode);
|
foreach (var group in groups)
|
{
|
var first = group.ToList().First();
|
Mes_Package_Gather newGather = first.Adapt<Mes_Package_Gather>();
|
newGather.AreaCode = AreaCodeEnum.无区域;
|
newGather.UpiStatus = UpiStatusEnum.初始;
|
newGather.CreateUserName = newGather.UpdateUserName = "MES";
|
addGatherList.Add(newGather);
|
}
|
await _mes_Package_Gather_Rep.InsertRangeAsync(addGatherList);
|
|
await _rep.InsertRangeAsync(input);
|
}
|
|
}
|