From a4ae3bf5f1826e8e29a95da3dc2c947d713d4ebb Mon Sep 17 00:00:00 2001 From: 南骏 池 <chiffly@163.com> Date: 星期五, 06 六月 2025 15:38:14 +0800 Subject: [PATCH] 1.仓库信息储存逻辑调整 2.生产订单接口优化。 --- MES.Service/service/BasicData/MesPositionManager.cs | 200 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 200 insertions(+), 0 deletions(-) diff --git a/MES.Service/service/BasicData/MesPositionManager.cs b/MES.Service/service/BasicData/MesPositionManager.cs new file mode 100644 index 0000000..6b67858 --- /dev/null +++ b/MES.Service/service/BasicData/MesPositionManager.cs @@ -0,0 +1,200 @@ +锘縰sing MES.Service.DB; +using MES.Service.Dto.webApi; +using MES.Service.Modes; +using SqlSugar; + +namespace MES.Service.service.BasicData; + +public class MesPositionManager : Repository<MesPosition> +{ + // 褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉� + + // Save 鏂规硶鐢ㄤ簬淇濆瓨鍗曚釜宀椾綅璁板綍锛屾牴鎹被鍨嬫墽琛屼笉鍚岀殑鎿嶄綔 + public bool Save(ErpPosition unit) + { + var entity = GetMesPosition(unit); // 灏� ErpPosition 杞崲涓� MesPosition + return UseTransaction(db => + { + switch (unit.Type) + { + case "0": + if (UpdatePositionStatus(db, entity.Id, "A")) // 鍚敤宀椾綅 + return 1; + break; + case "1": + if (UpdatePositionStatus(db, entity.Id, "B")) // 绂佺敤宀椾綅 + return 1; + break; + case "3": + if (DeletePosition(db, entity.Id)) // 鍒犻櫎宀椾綅 + return 1; + break; + case "2": + case "4": + if (InsertOrUpdatePosition(db, entity)) // 鎻掑叆鎴栨洿鏂板矖浣� + return 1; + break; + default: + throw new ArgumentNullException( + $"type娌℃湁{unit.Type}杩欎釜绫诲瀷鐨勫弬鏁�"); + } + + throw new NotImplementedException("鎿嶄綔澶辫触"); + }) > 0; + } + + // 鏇存柊宀椾綅鐘舵�佺殑鏂规硶 + private bool UpdatePositionStatus(SqlSugarScope db, decimal positionId, + string status) + { + var result = db.Updateable<MesPosition>() + .SetColumns(s => s.Fforbidstatus == status) + .Where(s => s.Id == positionId).ExecuteCommand(); + + if (result > 0) + return true; + + throw new NotImplementedException(status == "A" ? "鍚敤澶辫触" : "绂佺敤澶辫触"); + } + + // 鎻掑叆鎴栨洿鏂板矖浣嶇殑鏂规硶 + private bool InsertOrUpdatePosition(SqlSugarScope db, MesPosition entity) + { + db.Deleteable<MesPosition>() + .Where(s => s.Id == entity.Id).ExecuteCommand(); + var insert = db.Insertable(entity).ExecuteCommand(); + return insert > 0; + } + + // 鍒犻櫎宀椾綅鐨勬柟娉� + private bool DeletePosition(SqlSugarScope db, decimal positionId) + { + var deleteById = db.Deleteable<MesPosition>() + .Where(s => s.Id == positionId).ExecuteCommand(); + if (deleteById > 0) + return true; + + throw new NotImplementedException("鍒犻櫎澶辫触"); + } + + // 灏� ErpPosition 瀵硅薄杞崲涓� MesPosition 瀵硅薄鐨勬柟娉� + private MesPosition GetMesPosition(ErpPosition position) + { + return new MesPosition + { + Id = Convert.ToDecimal(position.Id), + PositionId = position.FNumber, + PositionName = position.FName, + PositionDescription = position.FDESCRIPTIONS, + Department = position.FDept, + Fforbidstatus = position.FForbidStatus, + FUseOrgId = position.FUseOrgId, + FCreateOrgId = position.FCreateOrgId, + CreationDate = position.FCreateDate != null + ? DateTime.ParseExact(position.FCreateDate, + "yyyy-MM-dd HH:mm:ss", null) + : null, + DisabledBy = position.FForbidderId, + DisabledDate = position.FForbidDate != null + ? DateTime.ParseExact(position.FForbidDate, + "yyyy-MM-dd HH:mm:ss", null) + : null + }; + } + + // SaveList 鏂规硶鐢ㄤ簬淇濆瓨澶氫釜宀椾綅璁板綍锛屾牴鎹被鍨嬫壒閲忔墽琛屼笉鍚岀殑鎿嶄綔 + public bool SaveList(List<ErpPosition> positions) + { + var list = new List<MesPosition>(); + positions.ForEach(s => + { + var entity = GetMesPosition(s); // 灏� ErpPosition 杞崲涓� MesPosition + entity.Type = s.Type; + list.Add(entity); + }); + + var groupBy = list.GroupBy(s => s.Type) + .ToDictionary(g => g.Key, g => g.ToList()); + return UseTransaction(db => + { + foreach (var positionGroup in groupBy) + switch (positionGroup.Key) + { + case "0": + if (!UpdatePositionStatusBatch(db, positionGroup.Value, + "A")) // 鎵归噺鍚敤宀椾綅 + throw new NotImplementedException("鍚敤澶辫触"); + break; + case "1": + if (!UpdatePositionStatusBatch(db, positionGroup.Value, + "B")) // 鎵归噺绂佺敤宀椾綅 + throw new NotImplementedException("绂佺敤澶辫触"); + break; + case "3": + if (!DeletePositionBatch(db, + positionGroup.Value)) // 鎵归噺鍒犻櫎宀椾綅 + throw new NotImplementedException("鍒犻櫎澶辫触"); + break; + case "2": + case "4": + if (!InsertOrUpdatePositionBatch(db, + positionGroup.Value)) // 鎵归噺鎻掑叆鎴栨洿鏂板矖浣� + throw new NotImplementedException("鍚屾澶辫触"); + break; + default: + throw new ArgumentNullException( + $"type娌℃湁{positionGroup.Key}杩欎釜绫诲瀷鐨勫弬鏁�"); + } + + return 1; + }) > 0; + } + + // 鎵归噺鏇存柊宀椾綅鐘舵�佺殑鏂规硶 + private bool UpdatePositionStatusBatch(SqlSugarScope db, + List<MesPosition> positionList, string status) + { + var ids = positionList.Select(it => it.Id).ToArray(); + var result = db.Updateable<MesPosition>() + .SetColumns(s => s.Fforbidstatus == status) + .Where(s => ids.Contains(s.Id)).ExecuteCommand(); + + if (result > 0) + return true; + + throw new NotImplementedException(status == "A" ? "鍚敤澶辫触" : "绂佺敤澶辫触"); + } + + // 鎵归噺鎻掑叆宀椾綅鐨勬柟娉� + private bool InsertPositionBatch(SqlSugarScope db, + List<MesPosition> positionList) + { + var insertRange = db.Insertable(positionList).ExecuteCommand(); + if (insertRange > 0) + return true; + + throw new NotImplementedException("鎻掑叆澶辫触"); + } + + // 鎵归噺鍒犻櫎宀椾綅鐨勬柟娉� + private bool DeletePositionBatch(SqlSugarScope db, + List<MesPosition> positionList) + { + var ids = positionList.Select(it => it.Id).ToArray(); + + var deleteByIds = db.Deleteable<MesPosition>() + .Where(s => ids.Contains(s.Id)).ExecuteCommand(); + + if (deleteByIds > 0) + return true; + + throw new NotImplementedException("鍒犻櫎澶辫触"); + } + + // 鎵归噺鎻掑叆鎴栨洿鏂板矖浣嶇殑鏂规硶 + private bool InsertOrUpdatePositionBatch(SqlSugarScope db, + List<MesPosition> positionList) + { + return positionList.All(entity => InsertOrUpdatePosition(db, entity)); + } +} \ No newline at end of file -- Gitblit v1.9.3