肖洋
2025-01-15 ef7ff6f2da6051b0a0db3babd61a29ed69e3e228
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
 
using Mapster;
using WIDESEA_Core.HttpContextUser;
using WIDESEA_Core.Seed;
 
namespace WIDESEA_StorageBasicService;
 
public class StockInfoService : ServiceBase<DtStockInfo, IStockInfoRepository>, IStockInfoService
{
    public StockInfoService(IStockInfoRepository BaseDal) : base(BaseDal)
    {
    }
 
    /// <summary>
    /// 分页
    /// </summary>
    /// <param name="options"></param>
    /// <returns></returns>
    public override PageGridData<DtStockInfo> GetPageData(PageDataOptions options)
    {
        var data = base.GetPageData(options);
        foreach (var item in data.Rows)
        {
            if (item.IsFull)
                item.Remark = item.StockInfoDetails.Count().ToString();
            else
                item.Remark = "0";
        }
        return data;
    }
 
    /// <summary>
    /// 批量删除
    /// </summary>
    /// <param name="keys"></param>
    /// <returns></returns>
    public override WebResponseContent DeleteData(object[] keys)
    {
        try
        {
 
            List<DtStockInfo_Hty> stockInfos = new List<DtStockInfo_Hty>();
            List<DtLocationInfo> locationInfos = new List<DtLocationInfo>();
            foreach (var item in keys)
            {
                var stock = BaseDal.QueryFirstNavAsync(x => x.Id == item.ObjToInt()).Result;
                var stockHty = stock.Adapt<DtStockInfo_Hty>();
                stockInfos.Add(stockHty);
 
                var location = SqlSugarHelper.DbWMS.Queryable<DtLocationInfo>().FirstAsync(x => x.Id == stock.LocationId).Result;
                location.LocationStatus = (int)LocationEnum.Free;
                locationInfos.Add(location);
            }
 
            var hty = BaseDal.Db.InsertNav(stockInfos)
                .Include(x => x.StockInfoDetails)
                .ExecuteCommand();
 
            var locationd = SqlSugarHelper.DbWMS.Updateable(locationInfos).ExecuteCommandHasChange();
            return base.DeleteData(keys);
        }
        catch (Exception ex)
        {
            return WebResponseContent.Instance.Error(ex.Message);
        }
    }
 
    // 根据传入库存类型获取不同巷道的库存
    public async Task<Dictionary<string, int>> GetLocationByStockType(bool stockType,string areaCode)
    {
        var stockInfos = await BaseDal.Db.Queryable<DtStockInfo>().Where(x => x.IsFull == stockType && x.AreaCode == areaCode)
            .Includes(x => x.LocationInfo).ToListAsync();
 
        var result = stockInfos
            .GroupBy(x => x.LocationInfo.RoadwayNo)
            .ToDictionary(x => x.Key, x => x.Count());
        return result;
    }
}