111
啊鑫
2025-01-22 eb662f5360e6e2c3d6972f4921bc9bd526d81913
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
using SqlSugar;
using System;
using System.Collections.Generic;
using MES.Service.DB;
using MES.Service.Dto.webApi;
using MES.Service.Modes;
using MES.Service.util;
 
namespace MES.Service.service
{
    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).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);
        }
    }
}