啊鑫
2025-02-09 70e8a5aec5d49a95483d4c0e066ccdcc45a02e79
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
using MES.Service.DB;
using MES.Service.Dto.webApi;
using MES.Service.Modes;
using SqlSugar;
 
namespace MES.Service.service.BasicData;
 
public class EmployeeInfoManager : Repository<EmployeeInfo>
{
    public bool Save(ErpEmployeeInfo unit)
    {
        var entity = GetMesItems(unit); // 将 ErpStaff 转换为 MesStaff
 
        return UseTransaction(db =>
        {
            switch (unit.Type)
            {
                case "2":
                case "4":
                    if (InsertOrUpdateEmp(db, entity.employeeInfo,
                            entity.employeeItems)) // 插入或更新员工
                        return 1;
                    break;
                case "3":
                    if (DeleteEmp(db, entity.employeeInfo,
                            entity.employeeItems)) // 删除员工
                        return 1;
                    break;
                default:
                    throw new ArgumentNullException(
                        $"type没有{unit.Type}这个类型的参数");
            }
 
            throw new NotImplementedException("操作失败");
        }) > 0;
    }
 
    public bool SaveList(List<ErpEmployeeInfo> departments)
    {
        var result = departments.Select(Save).ToList();
        return result.All(b => b);
    }
 
    private bool InsertOrUpdateEmp(SqlSugarScope db,
        EmployeeInfo entityEmployeeInfo,
        List<EmployeeItem> entityEmployeeItems)
    {
        db.Deleteable<EmployeeInfo>().Where(
            s => s.Id == entityEmployeeInfo.Id).ExecuteCommand();
 
        db.Deleteable<EmployeeItem>()
            .Where(a => a.Eid == entityEmployeeInfo.Id).ExecuteCommand();
 
        var executeCommand =
            db.Insertable(entityEmployeeInfo).ExecuteCommand();
        var command = db.Insertable(entityEmployeeItems).PageSize(1)
            .IgnoreColumnsNull().ExecuteCommand();
 
        return executeCommand > 0 && command > 0;
    }
 
    private bool DeleteEmp(SqlSugarScope db,
        EmployeeInfo entityEmployeeInfo,
        List<EmployeeItem> entityEmployeeItems)
    {
        var command = db.Deleteable<EmployeeInfo>().Where(
            s => s.Id == entityEmployeeInfo.Id).ExecuteCommand();
 
        var executeCommand = db.Deleteable<EmployeeItem>()
            .Where(a => a.Eid == entityEmployeeInfo.Id).ExecuteCommand();
 
        return executeCommand > 0 && command > 0;
    }
 
 
    private (EmployeeInfo employeeInfo, List<EmployeeItem> employeeItems)
        GetMesItems(
            ErpEmployeeInfo item)
    {
        var items = new EmployeeInfo
        {
            Id = Convert.ToDecimal(item.Id),
            EmployeeNo = item.fNumber,
            EmployeeName = item.fName,
            DepartmentCode = item.fPostDeptid,
            DocumentStatus = item.FDocumentStatus,
            IsDisabled = item.FForbidStatus,
            Organization = item.FUseOrgId
        };
 
        var employeeItems = new List<EmployeeItem>();
 
        foreach (var erpEmployeeInfoDto in item.OperatorTypes)
        {
            var employee = new EmployeeItem
            {
                Eid = items.Id,
                EType = erpEmployeeInfoDto.OperatorType,
                CreateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
            };
 
            employeeItems.Add(employee);
        }
 
        return (items, employeeItems);
    }
}