From b957cfb89c9968f47cc5ce9795e6ffb05bc57fd8 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期三, 30 十月 2024 16:05:48 +0800
Subject: [PATCH] 11
---
MES.Service/service/BasicData/MesUnitManager.cs | 180 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 180 insertions(+), 0 deletions(-)
diff --git a/MES.Service/service/BasicData/MesUnitManager.cs b/MES.Service/service/BasicData/MesUnitManager.cs
new file mode 100644
index 0000000..09a58eb
--- /dev/null
+++ b/MES.Service/service/BasicData/MesUnitManager.cs
@@ -0,0 +1,180 @@
+锘縰sing 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 list = units.Select(GetMesUnit).ToList();
+ var groupBy = list.GroupBy(s => s.Type)
+ .ToDictionary(g => g.Key, g => g.ToList());
+
+ return UseTransaction(db =>
+ {
+ foreach (var unitGroup in groupBy)
+ switch (unitGroup.Key)
+ {
+ case "0":
+ if (!UpdateUnitStatusBatch(db, unitGroup.Value, "A"))
+ throw new NotImplementedException("鍚敤澶辫触");
+ break;
+ case "1":
+ if (!UpdateUnitStatusBatch(db, unitGroup.Value, "B"))
+ throw new NotImplementedException("绂佺敤澶辫触");
+ break;
+ case "3":
+ if (!DeleteUnitBatch(db, unitGroup.Value))
+ throw new NotImplementedException("鍒犻櫎澶辫触");
+ break;
+ case "2":
+ case "4":
+ if (!InsertOrUpdateBatch(db, unitGroup.Value))
+ throw new NotImplementedException("鍚屾澶辫触");
+ break;
+ default:
+ throw new ArgumentNullException(
+ $"type娌℃湁{unitGroup.Key}杩欎釜绫诲瀷鐨勫弬鏁�");
+ }
+
+ return 1;
+ }) > 0;
+ }
+
+ 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 InsertUnit(SqlSugarScope db, MesUnit entity)
+ {
+ var insert = db.Insertable(entity).ExecuteCommand();
+ if (insert > 0)
+ return true;
+
+ throw new NotImplementedException("鎻掑叆澶辫触");
+ }
+
+ private bool DeleteUnit(SqlSugarScope db, decimal unitId)
+ {
+ var deleteById = db.Deleteable<MesUnit>()
+ .Where(s => s.Id == 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,
+ Fconvertdenominator = Convert.ToDouble(unit.FConvertDenominator),
+ Fcurrentunitid = unit.FCurrentUnitId,
+ Fconvertnumerator = unit.FConvertNumerator,
+ Fbaseunit = unit.FBaseUnit,
+ Froundtype = unit.FRoundType,
+ Fprecision = unit.FPrecision,
+ Fdescription = unit.FDescription,
+ Fforbidstatus = unit.FForbidStatus,
+ CreateDate = DateTime.Now,
+ LastupdateDate = DateTime.Now,
+ Company = "1000",
+ Factory = "1000",
+ Type = unit.Type
+ };
+ }
+
+ private bool UpdateUnitStatusBatch(SqlSugarScope db, List<MesUnit> unitList,
+ string status)
+ {
+ var ids = unitList.Select(it => it.Id).ToArray();
+ var result = db.Updateable<MesUnit>()
+ .SetColumns(s => s.Fforbidstatus == status)
+ .Where(s => ids.Contains(s.Id)).ExecuteCommand();
+
+ if (result > 0)
+ return true;
+
+ throw new NotImplementedException(status == "A" ? "鍚敤澶辫触" : "绂佺敤澶辫触");
+ }
+
+ private bool InsertUnitBatch(SqlSugarScope db, List<MesUnit> unitList)
+ {
+ var insertRange = db.Insertable(unitList).ExecuteCommand();
+ if (insertRange > 0)
+ return true;
+
+ throw new NotImplementedException("鎻掑叆澶辫触");
+ }
+
+ private bool DeleteUnitBatch(SqlSugarScope db, List<MesUnit> unitList)
+ {
+ var ids = unitList.Select(it => it.Id).ToArray();
+ var deleteByIds = db.Deleteable<MesUnit>()
+ .Where(s => ids.Contains(s.Id)).ExecuteCommand();
+ return deleteByIds > 0;
+ }
+
+ 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;
+ }
+
+ private bool InsertOrUpdateBatch(SqlSugarScope db, List<MesUnit> unitList)
+ {
+ return unitList.All(entity => InsertOrUpdate(db, entity));
+ }
+}
\ No newline at end of file
--
Gitblit v1.9.3