From f476ec010c22cd4e3c6a119eea035cbf4594bfbb Mon Sep 17 00:00:00 2001 From: kyy <3283105747@qq.com> Date: 星期五, 12 九月 2025 19:32:00 +0800 Subject: [PATCH] 1\修正收料通知单 --- MES.Service/service/BasicData/MesStaffManager.cs | 415 +++++++++-------------------------------------------------- 1 files changed, 64 insertions(+), 351 deletions(-) diff --git a/MES.Service/service/BasicData/MesStaffManager.cs b/MES.Service/service/BasicData/MesStaffManager.cs index 102faab..af5f8fb 100644 --- a/MES.Service/service/BasicData/MesStaffManager.cs +++ b/MES.Service/service/BasicData/MesStaffManager.cs @@ -1,334 +1,4 @@ -锘�/* -namespace MES.Service.service.BasicData; - -using MES.Service.DB; -using MES.Service.Dto.webApi; -using MES.Service.Modes; -using SqlSugar; - -public class MesStaffManager : Repository<MesStaff> -{ - // Save 鏂规硶鐢ㄤ簬淇濆瓨鍗曚釜鍛樺伐璁板綍锛屾牴鎹被鍨嬫墽琛屼笉鍚岀殑鎿嶄綔 - public bool Save(ErpStaff unit) - { - var entity = GetMesStaff(unit); // 灏� ErpStaff 杞崲涓� MesStaff - var sysUser = GetUser(unit); // 鑾峰彇 SysUser 瀹炰緥 - var mesStaffPositionLink = GetMesStaffPositionLink(unit); // 鑾峰彇 MesStaffPositionLink 瀹炰緥 - return UseTransaction(db => - { - switch (unit.Type) - { - case "0": - if (UpdateStaffStatus(db, entity.Id, "A")) // 鍚敤鍛樺伐 - return 1; - break; - case "1": - if (UpdateStaffStatus(db, entity.Id, "B")) // 绂佺敤鍛樺伐 - return 1; - break; - case "2": - case "4": - if (InsertOrUpdateStaff(db, sysUser, entity,mesStaffPositionLink)) // 鎻掑叆鎴栨洿鏂板憳宸� - return 1; - break; - case "3": - if (DeleteStaff(db, sysUser, entity)) // 鍒犻櫎鍛樺伐 - return 1; - break; - default: - throw new ArgumentNullException( - $"type娌℃湁{unit.Type}杩欎釜绫诲瀷鐨勫弬鏁�"); - } - - throw new NotImplementedException("鎿嶄綔澶辫触"); - }) > 0; - } - - // 鏇存柊鍛樺伐鐘舵�佺殑鏂规硶 - private bool UpdateStaffStatus(SqlSugarScope db, decimal staffId, - string status) - { - var result = db.Updateable<MesStaff>() - .SetColumns(s => s.FforbidStatus == status) - .Where(s => s.Id == staffId).ExecuteCommand(); - - if (result > 0) - return true; - - throw new NotImplementedException(status == "A" ? "鍚敤澶辫触" : "绂佺敤澶辫触"); - } - - // 鎻掑叆鎴栨洿鏂板憳宸ョ殑鏂规硶 - private bool InsertOrUpdateStaff(SqlSugarScope db, SysUser sysUser, - MesStaff entity, List<MesStaffPositionLink> mesStaffPositionLink) - { - var exists = db.Queryable<SysUser>().Any(u => u.Sid == sysUser.Sid); - if (!exists) - { - var insertUser = db.Insertable(sysUser).ExecuteCommand(); - } - db.Deleteable<MesStaff>() - .Where(s => s.Id == entity.Id) - .ExecuteCommand(); - - var insertStaff = - db.Insertable(entity).IgnoreColumns(true).ExecuteCommand(); - - var insertPosition = 1; - if (mesStaffPositionLink != null && mesStaffPositionLink.Count > 0) - { - //鍏堝垹闄わ紝鍐嶆柊澧� - db.Deleteable<MesStaffPositionLink>() - .Where(s => - mesStaffPositionLink.Any(m => m.StaffId == s.StaffId)) - .ExecuteCommand(); - - //鎵归噺鎻掑叆鏃讹紝蹇界暐绌哄瓧娈� - insertPosition = db.Insertable(mesStaffPositionLink).PageSize(1) - .IgnoreColumnsNull().ExecuteCommand(); - } - - - return insertStaff > 0 && insertPosition > 0; - } - - // 鍒犻櫎鍛樺伐鐨勬柟娉� - - - private bool DeleteStaff(SqlSugarScope db, SysUser sysUser, MesStaff entity) - { - var deleteUser = db.Deleteable<SysUser>() - .Where(s => s.Sid == sysUser.Sid).ExecuteCommand(); - if (deleteUser > 0) - { - var deleteStaff = - db.Deleteable<MesStaff>() - .Where(s => - s.Id == entity.Id && - s.PositionCode == entity.PositionCode) - .ExecuteCommand(); - - //鍒犻櫎瀵瑰簲鍛樺伐宀椾綅淇℃伅鍏宠仈琛� 姹犲崡楠� 2025-01-02 - var insertPosition = db.Deleteable<MesStaffPositionLink>() - .Where(s => s.StaffId == entity.Id) - .ExecuteCommand(); - - if (deleteStaff > 0) - return true; - } - - throw new NotImplementedException("鍙嶅鏍稿け璐�"); - } - // 灏� ErpStaff 瀵硅薄杞崲涓� MesStaff 瀵硅薄鐨勬柟娉� - private MesStaff GetMesStaff(ErpStaff staff) - { - var entity = new MesStaff - { - Id = Convert.ToDecimal(staff.Id), - StaffNo = staff.FStaffNumber, - StaffName = staff.FName, - DepartmentName = staff.FPostDept, - PositionCode = staff.FPostId, - PhoneNumber = staff.FMobile, - Remark = staff.FDescription, - FforbidStatus = staff.FForbidStatus, - FSubsidiary = staff.FUseOrgId, - Fumbrella = staff.FCreateOrgId, - CreateDate = DateTime.Now, - LastupdateDate = DateTime.Now, - Type = staff.Type - }; - - if (staff.FStaffStartDate != null) - entity.StartDate = DateTime.ParseExact(staff.FStaffStartDate, - "yyyy-MM-dd HH:mm:ss", null); - - return entity; - } - - // 灏� ErpStaff 瀵硅薄杞崲涓� SysUser 瀵硅薄鐨勬柟娉� - private SysUser GetUser(ErpStaff staff) - { - return new SysUser - { - IsStatus = true, - Account = staff.FStaffNumber, - UserName = staff.FName, - Password = "E1ADC3949BA59ABBE56E057F2F883E", // 鍒濆瀵嗙爜 - DepartNo = staff.FPostDept, - Type = staff.Type, - CreateTime = DateTime.Now - }; - } - - /// <summary> - /// 鎺ュ彛瀛楁璋冩暣锛氭牴鎹甹son鏍煎紡锛屽湪MesStaffPositionLink<List>涓瓨鍏ユ暟鎹�� - /// </summary> - /// <remarks> - /// 淇敼浜猴細姹犲崡楠� - /// 淇敼鏃ユ湡锛�2025-01-02 鈥斺�斻�� 2025-01-05 浜屾淇敼 - /// 淇敼璇存槑锛� - /// - 鏂板浠g爜 - /// </remarks> - private List<MesStaffPositionLink> GetMesStaffPositionLink(ErpStaff staff) - { - // 鍒濆鍖栬繑鍥炵殑鑱屼綅鍏宠仈鍒楄〃 - List<MesStaffPositionLink> staffDetails = new List<MesStaffPositionLink>(); - - // 妫�鏌rpStaff鏄惁鍖呭惈鑱屼綅璇︽儏鏁版嵁 - if (staff.ErpStaffDetails != null && staff.ErpStaffDetails.Count > 0) - { - // 浣跨敤LINQ灏咵rpStaffDetails杞崲涓篗esStaffPositionLink瀵硅薄 - staffDetails = staff.ErpStaffDetails.Select(staffDetail => - new MesStaffPositionLink - { - // 鍛樺伐ID锛氫粠ErpStaff鐨処d灞炴�ц浆鎹负decimal绫诲瀷 - StaffId = Convert.ToDecimal(staff.Id), - - // 鑱屼綅ID锛� - // 1. 妫�鏌PostId鏄惁涓虹┖鎴杗ull - // 2. 闈炵┖鏃惰浆鎹负decimal锛屽惁鍒欒涓簄ull - PositionId = string.IsNullOrEmpty(staffDetail.fPostId.ToString()) - ? null - : Convert.ToDecimal(staffDetail.fPostId), - - // 鑱屼綅閮ㄩ棬ID锛氶�昏緫涓庤亴浣岻D绫讳技 - FPostDeptId = string.IsNullOrEmpty(staffDetail.fPostDeptid.ToString()) - ? null - : Convert.ToDecimal(staffDetail.fPostDeptid), - - // 鍛樺伐鍏ヨ亴鏃ユ湡锛� - // 1. 妫�鏌StaffStartDate鏄惁涓虹┖鎴杗ull - // 2. 闈炵┖鏃舵寜"yyyy-MM-dd HH:mm:ss"鏍煎紡瑙f瀽涓篋ateTime锛屽惁鍒欒涓簄ull - FStaffStartDate = string.IsNullOrEmpty(staffDetail.fStaffStartDate.ToString()) - ? null - : DateTime.ParseExact(staffDetail.fStaffStartDate, "yyyy-MM-dd HH:mm:ss", null) - }).ToList(); - } - // 杩斿洖杞崲鍚庣殑鑱屼綅鍏宠仈鍒楄〃 - return staffDetails; - } - // SaveList 鏂规硶鐢ㄤ簬淇濆瓨澶氫釜鍛樺伐璁板綍锛屾牴鎹被鍨嬫壒閲忔墽琛屼笉鍚岀殑鎿嶄綔 - public bool SaveList(List<ErpStaff> departments) - { - var list = new List<MesStaff>(); - var userList = new List<SysUser>(); - var mesStaffPositionLinkList = new List<MesStaffPositionLink>(); - departments.ForEach(s => - { - var entity = GetMesStaff(s); - entity.Type = s.Type; - list.Add(entity); - - var sysUser = GetUser(s); - sysUser.Type = s.Type; - userList.Add(sysUser); - var mesStaffPositionLink = - GetMesStaffPositionLink(s); // 鑾峰彇 SysUser 瀹炰緥 - mesStaffPositionLinkList.AddRange(mesStaffPositionLink); - }); - - var groupBy = list.GroupBy(s => s.Type) - .ToDictionary(g => g.Key, g => g.ToList()); - return UseTransaction(db => - { - foreach (var staffGroup in groupBy) - switch (staffGroup.Key) - { - case "0": - if (!UpdateStaffStatusBatch(db, staffGroup.Value, - "A")) // 鎵归噺鍚敤鍛樺伐 - throw new NotImplementedException("鍚敤澶辫触"); - break; - case "1": - if (!UpdateStaffStatusBatch(db, staffGroup.Value, - "B")) // 鎵归噺绂佺敤鍛樺伐 - throw new NotImplementedException("绂佺敤澶辫触"); - break; - case "3": - if (!DeleteStaffBatch(db, userList, - staffGroup.Value)) // 鎵归噺鍒犻櫎鍛樺伐 - throw new NotImplementedException("鍒犻櫎澶辫触"); - break; - case "2": - case "4": - if (!InsertOrUpdateBatch(db, userList, - staffGroup.Value,mesStaffPositionLinkList)) // 鎵归噺鎻掑叆鎴栨洿鏂板憳宸� - throw new NotImplementedException("鍚屾澶辫触"); - break; - default: - throw new ArgumentNullException( - $"type娌℃湁{staffGroup.Key}杩欎釜绫诲瀷鐨勫弬鏁�"); - } - - return 1; - }) > 0; - } - - // 鎵归噺鏇存柊鍛樺伐鐘舵�佺殑鏂规硶 - private bool UpdateStaffStatusBatch(SqlSugarScope db, - List<MesStaff> staffList, string status) - { - var ids = staffList.Select(it => it.Id).ToArray(); - var result = db.Updateable<MesStaff>() - .SetColumns(s => s.FforbidStatus == status) - .Where(s => ids.Contains(s.Id)).ExecuteCommand(); - - if (result > 0) - return true; - - throw new NotImplementedException(status == "A" ? "鍚敤澶辫触" : "绂佺敤澶辫触"); - } - - // 鎵归噺鎻掑叆鍛樺伐鐨勬柟娉� - private bool InsertStaffBatch(SqlSugarScope db, List<SysUser> userList, - List<MesStaff> staffList) - { - var userInsert = userList.FindAll(s => s.Type == "2"); - var executeCommand = db.Insertable(userInsert).ExecuteCommand(); - if (executeCommand <= 0) throw new ArgumentNullException("瀹℃牳澶辫触"); - if (db.Insertable(staffList).ExecuteCommand() > 0) - return true; - - throw new ArgumentNullException("瀹℃牳澶辫触"); - } - - // 鎵归噺鍒犻櫎鍛樺伐鐨勬柟娉� - private bool DeleteStaffBatch(SqlSugarScope db, List<SysUser> userList, - List<MesStaff> staffList) - { - var sid = userList.FindAll(s => s.Type == "3").Select(s => s.Account) - .ToArray(); - var result = db.Deleteable<SysUser>() - .Where(s => sid.Contains(s.Account)).ExecuteCommand(); - - if (result <= 0) throw new ArgumentNullException("鍙嶅鏍稿け璐�"); - var ids = staffList.Select(it => it.Id).ToArray(); - if (db.Deleteable<MesStaff>() - .Where(s => ids.Contains(s.Id)).ExecuteCommand() > 0) - return true; - - throw new ArgumentNullException("鍙嶅鏍稿け璐�"); - } - - // 鎵归噺鎻掑叆鎴栨洿鏂板憳宸ョ殑鏂规硶 - private bool InsertOrUpdateBatch(SqlSugarScope db, List<SysUser> userList, - List<MesStaff> staffList, - List<MesStaffPositionLink> mesStaffPositionLink) - { - foreach (var sysUser in userList) - { - var entity = staffList.First(s => s.Id == sysUser.Sid); - if (!InsertOrUpdateStaff(db, sysUser, entity, mesStaffPositionLink)) - return false; - } - - return true; - } -} - */ - -namespace MES.Service.service.BasicData; +锘縩amespace MES.Service.service.BasicData; using MES.Service.DB; using MES.Service.Dto.webApi; @@ -374,24 +44,62 @@ }) > 0; } + /// <summary> + /// 鐢熸垚鏂扮殑ID锛岀‘淇濅笉閲嶅 + /// </summary> + private decimal GenerateNewId() + { + // 澶勭悊绌鸿〃鐨勬儏鍐碉紝浠�1寮�濮� + var maxId = Db.Queryable<MesStaff>().Max(x => (decimal?)x.Id) ?? 0; + var newId = maxId + 1; + + // 鍙岄噸妫�鏌ワ紝纭繚鐢熸垚鐨処D涓嶅瓨鍦� + while (Db.Queryable<MesStaff>().Where(x => x.Id == newId).Any()) + { + newId++; + } + + return newId; + } + private bool InsertUser(SqlSugarScope db, MesStaff entity) { - db.Deleteable<MesStaff>() - .Where(s => s.Id == entity.Id) - .ExecuteCommand(); - - db.Deleteable<SysUser>() - .Where(s => s.StaffId == entity.Id.ToString()) - .ExecuteCommand(); - - var sysUser = GetUser(entity); - if (entity.Id == null) + if (entity.Id == 0) { - var id = db.Insertable<MesStaff>(entity).ExecuteReturnIdentity(); - sysUser.StaffId = id.ToString(); + // 鏂板鎯呭喌锛氱敓鎴愭柊ID骞舵彃鍏� + var newId = GenerateNewId(); + entity.Id = newId; + + var sysUser = GetUser(entity); + var staffInsertId = db.Insertable(entity).ExecuteReturnIdentity(); + + if (staffInsertId > 0) + { + sysUser.StaffId = staffInsertId.ToString(); + return db.Insertable(sysUser).ExecuteCommand() > 0; + } + return false; } - - return db.Insertable(sysUser).ExecuteCommand() > 0; + else + { + // 鏇存柊鎯呭喌锛氬垹闄ゅ悗閲嶆柊鎻掑叆锛屼繚鎸佸師鏈塈D + var originalId = entity.Id; + + // 鍏堝垹闄ゅ師璁板綍锛堝鏋滃瓨鍦級 + db.Deleteable<MesStaff>().Where(s => s.Id == originalId).ExecuteCommand(); + db.Deleteable<SysUser>().Where(s => s.StaffId == originalId.ToString()).ExecuteCommand(); + + // 閲嶆柊鎻掑叆锛屼繚鎸佸師鏈塈D + entity.Id = originalId; + var sysUser = GetUser(entity); + + var staffInsert = db.Insertable(entity).ExecuteCommand(); + if (staffInsert > 0) + { + return db.Insertable(sysUser).ExecuteCommand() > 0; + } + return false; + } } private bool DeleteStaff(SqlSugarScope db, MesStaff entity) @@ -611,9 +319,7 @@ { var entity = new MesStaff { - // Id = string.IsNullOrEmpty(staff.Id) - // ? DateTimeOffset.UtcNow.ToUnixTimeSeconds() - // : Convert.ToDecimal(staff.Id), + Guid = Guid.NewGuid(), StaffNo = staff.FStaffNumber, StaffName = staff.FName, DepartmentName = staff.FPostDept, @@ -638,13 +344,20 @@ "yyyy-MM-dd HH:mm:ss", null); } - var mesStaff = Db.Queryable<MesStaff>() + // 鏌ユ壘鏄惁宸插瓨鍦ㄧ浉鍚屽憳宸ョ紪鐮佺殑璁板綍 + var existingStaff = Db.Queryable<MesStaff>() .Where(s => s.StaffNo == entity.StaffNo) .First(); - if (mesStaff != null) + if (existingStaff != null) { - entity.Id = mesStaff.Id; + // 濡傛灉瀛樺湪锛屼娇鐢ㄧ幇鏈夌殑ID锛屽悗缁皢鍒犻櫎鍚庨噸鏂版彃鍏� + entity.Id = existingStaff.Id; + } + else + { + // 濡傛灉涓嶅瓨鍦紝璁句负0锛孖nsertUser鏂规硶灏嗙敓鎴愭柊ID + entity.Id = 0; } return entity; -- Gitblit v1.9.3