using DocumentFormat.OpenXml.Spreadsheet; using Infrastructure; using Microsoft.Extensions.Configuration; using OpenAuth.App.BaseApp.Base; using OpenAuth.App.Interface; using OpenAuth.App.ServiceApp.Request; using OpenAuth.Repository; using OpenAuth.Repository.Domain; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace OpenAuth.App.ServiceApp { public class AdminTaskManageApp : SqlSugarBaseApp { private readonly IConfiguration _configuration; private readonly ISqlSugarClient client; public AdminTaskManageApp(ISugarUnitOfWork unitWork, ISimpleClient repository, IAuth auth, ISqlSugarClient sqlSugarClient, IConfiguration configuration) : base(unitWork, repository, auth) { _configuration = configuration; this.client = sqlSugarClient; } //添加任务 public async Task> AddTask(InsTaskReq req) { using (var db = base.UnitWork.CreateContext()) { var user = _auth.GetCurrentUser().User; // 获取ai解译成果 var aishp = await db.InsAishp.GetFirstAsync(r => r.Id == req.ShpId); var insTaskInfo = req.MapTo(); insTaskInfo.Id = Guid.NewGuid().ToString(); insTaskInfo.CreateTime = DateTime.Now; insTaskInfo.CreateUser = user == null ? "" : user.Id.ToString(); insTaskInfo.UpdateTime = DateTime.Now; insTaskInfo.UpdateUser = user == null ? "" : user.Id.ToString(); insTaskInfo.State = 0; insTaskInfo.IsCompleted = false; insTaskInfo.CreateUserName = user == null ? "" : user.Name; insTaskInfo.UpdateUserName = user == null ? "" : user.Name; // 拆分图斑数 int groupNum = (int)Math.Ceiling((double)aishp.ShpCount / 1000); List insTaskGroup = new List(); int lastGroupRemaining = (int)aishp.ShpCount; for (var i = 1; i <= groupNum; i++) { int everyNum = 1000; // 如果是最后一组,并且剩余的少于1000,将剩余的任务加到上一组 if (i == groupNum && lastGroupRemaining < 1000) { everyNum = lastGroupRemaining; if (i > 1) { // 更新上一组的 EndNum var lastGroup = insTaskGroup.Last(); lastGroup.EndNum += everyNum; } break; // 最后一组处理完毕,退出循环 } // 计算每组的起始和结束数字 int beginNum = (i - 1) * 1000 + 1; int endNum = beginNum + everyNum - 1; insTaskGroup.Add(new InsTaskgroup { Id = Guid.NewGuid().ToString(), GroupName = $"{i}组", Sort = i, BeginNum = beginNum, EndNum = endNum, TaskId = insTaskInfo.Id, IsComplate = false, CreateTime = DateTime.Now, }); lastGroupRemaining -= everyNum; // 更新剩余的任务数 } //添加前后时相 List insTasktifList = new List(); foreach(var item in req.PreviousPhase) { insTasktifList.Add(new InsTasktif { TaskId = insTaskInfo.Id, TifId = item, TifType = 0 }); ; } foreach (var item in req.LaterPhase) { insTasktifList.Add(new InsTasktif { TaskId = insTaskInfo.Id, TifId = item, TifType = 1 }); ; } // 插入任务和任务组以及前后时相 await db.InsTask.InsertAsync(insTaskInfo); await db.InsTaskgroup.InsertRangeAsync(insTaskGroup); await db.InsTasktif.InsertRangeAsync(insTasktifList); // 提交事务并检查结果 if (db.Commit()) { return new Response { Result = "添加成功", Message = "添加成功" }; } else { throw new Exception("添加失败"); } } } } }