liuying
2024-11-29 824a8449937515bf2ea9eff889e8dab454aa5be0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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.初始;
        }
        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.初始;
            addGatherList.Add(newGather);
        }
        await _mes_Package_Gather_Rep.InsertRangeAsync(addGatherList);
 
        await _rep.InsertRangeAsync(input);
    }
 
}