啊鑫
2025-01-22 eb744ecfecc0f1b6d9c0999c65bc740d93e30eda
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
using MES.Service.DB;
using MES.Service.Dto.webApi;
using MES.Service.Modes;
using SqlSugar;
 
namespace MES.Service.service.BasicData;
 
public class MesDepotsManager : Repository<MesDepots>
{
    // Save 方法用于保存单个仓库记录,根据类型执行不同的操作
    public bool Save(ErpDepots depots)
    {
        var entity = GetMesDepots(depots); // 将 ErpDepots 转换为 MesDepots
        return UseTransaction(db =>
        {
            switch (depots.Type)
            {
                case "0":
                    if (UpdateDepotStatus(db, entity.DepotId, "A")) return 1;
 
                    break;
                case "1":
                    if (UpdateDepotStatus(db, entity.DepotId, "B")) return 1;
 
                    break;
                case "3":
                    if (DeleteDepot(db, entity.DepotId)) return 1;
 
                    break;
                case "2":
                case "4":
                    if (InsertOrUpdate(db, entity)) return 1;
 
                    break;
                default:
                    throw new ArgumentNullException(
                        $"type没有{depots.Type}这个类型的参数");
            }
 
            throw new NotImplementedException("操作失败");
        }) > 0;
    }
 
    // 更新仓库状态的方法
    private bool UpdateDepotStatus(SqlSugarScope db, decimal depotId,
        string status)
    {
        var result = db.Updateable<MesDepots>()
            .SetColumns(s => s.ForbidStatus == status)
            .Where(s => s.DepotId == depotId).ExecuteCommand();
 
        if (result > 0)
            return true;
 
        throw new NotImplementedException(status == "A" ? "启用失败" : "禁用失败");
    }
 
    // 插入新仓库的方法
    private bool InsertDepot(SqlSugarScope db, MesDepots entity)
    {
        var insert = db.Insertable(entity).ExecuteCommand();
        if (insert > 0)
            return true;
 
        throw new NotImplementedException("审核失败");
    }
 
    // 删除仓库的方法
    private bool DeleteDepot(SqlSugarScope db, decimal depotId)
    {
        var deleteById = db.Deleteable<MesDepots>().In(depotId)
            .ExecuteCommand();
        if (deleteById > 0)
            return true;
 
        throw new NotImplementedException("反审核失败");
    }
 
    /// 新代码
    private bool InsertOrUpdate(SqlSugarScope db, MesDepots entity)
    {
        db.Deleteable<MesDepots>()
            .Where(s => s.DepotId == entity.DepotId)
            .ExecuteCommand();
 
        var insert = db.Insertable(entity).ExecuteCommand();
        return insert > 0;
    }
 
    // 将 ErpDepots 对象转换为 MesDepots 对象的方法
    private MesDepots GetMesDepots(ErpDepots depots)
    {
        return new MesDepots
        {
            DepotId = Convert.ToDecimal(depots.Id),
            DepotCode = depots.FNumber,
            DepotName = depots.FName,
            IsFkc = depots.FAllowMinusQty,
            CreateBy = depots.FPrincipal,
            Depottype = depots.FStockProperty,
            IsLot = depots.IsLot,
            DocumentStatus = depots.FDocumentStatus,
            ForbidStatus = depots.FForbidStatus,
            UseOrg = Convert.ToDecimal(depots.FUseOrgId),
            CreateDate = DateTime.Now,
            Company = "1000",
            Factory = "1000"
        };
    }
 
    // SaveList 方法用于保存多个仓库记录,根据类型批量执行不同的操作
    public bool SaveList(List<ErpDepots> erpDepots)
    {
        var result = erpDepots.Select(Save).ToList();
        return result.All(b => b);
    }
}