啊鑫
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
using MES.Service.DB;
using MES.Service.Dto.webApi;
using MES.Service.Modes;
using SqlSugar;
 
namespace MES.Service.service.BasicData;
 
public class MesUnitManager : Repository<MesUnit>
{
    public bool Save(ErpUnit unit)
    {
        var entity = GetMesUnit(unit);
 
        return UseTransaction(db =>
        {
            switch (unit.Type)
            {
                case "0":
                    if (UpdateUnitStatus(db, entity.Id, "A"))
                        return 1;
                    break;
                case "1":
                    if (UpdateUnitStatus(db, entity.Id, "B"))
                        return 1;
                    break;
                case "3":
                    if (DeleteUnit(db, entity.Id))
                        return 1;
                    break;
                case "2":
                case "4":
                    if (InsertOrUpdate(db, entity))
                        return 1;
                    break;
                default:
                    throw new ArgumentNullException(
                        $"type没有{unit.Type}这个类型的参数");
            }
 
            throw new NotImplementedException("操作失败");
        }) > 0;
    }
 
    public bool SaveList(List<ErpUnit> units)
    {
        var result = units.Select(Save).ToList();
        return result.All(b => b);
    }
 
    private bool UpdateUnitStatus(SqlSugarScope db, decimal unitId,
        string status)
    {
        var result = db.Updateable<MesUnit>()
            .SetColumns(s => s.Fforbidstatus == status)
            .Where(s => s.Id == unitId).ExecuteCommand();
 
        if (result > 0)
            return true;
 
        throw new NotImplementedException(status == "A" ? "启用失败" : "禁用失败");
    }
 
    private bool DeleteUnit(SqlSugarScope db, decimal unitId)
    {
        var deleteById = db.Deleteable<MesUnit>().In(unitId).ExecuteCommand();
        if (deleteById > 0)
            return true;
 
        throw new NotImplementedException("删除失败");
    }
 
    private MesUnit GetMesUnit(ErpUnit unit)
    {
        return new MesUnit
        {
            Id = Convert.ToDecimal(unit.Id),
            Fnumber = unit.FNumber,
            Fname = unit.FName,
            Funitgroupid = unit.FUnitGroupId,
            Fbaseunit = unit.FBaseUnit,
            Froundtype = unit.FRoundType,
            Fprecision = unit.FPrecision,
            Fdescription = unit.FDescription,
            Fforbidstatus = unit.FForbidStatus,
            DocumentStatus = unit.FDocumentStatus,
            BaseUomid = unit.BaseUomid,
            RatioToBase = unit.RatioToBase,
            RoundValue = unit.RoundValue,
            CreateDate = DateTime.Now,
            Company = "1000",
            Factory = "1000"
        };
    }
    
    ///新代码
    private bool InsertOrUpdate(SqlSugarScope db, MesUnit entity)
    {
        db.Deleteable<MesUnit>()
            .Where(s => s.Id == entity.Id)
            .ExecuteCommand();
 
        var insert = db.Insertable(entity).ExecuteCommand();
        return insert > 0;
    }
}