Infrastructure/OpenAuth.App/ServiceApp/AdminTaskManageApp.cs

130 lines
5.0 KiB
C#
Raw Normal View History

2024-11-13 17:01:24 +08:00
using DocumentFormat.OpenXml.Spreadsheet;
using Infrastructure;
using Microsoft.Extensions.Configuration;
2024-11-13 15:15:30 +08:00
using OpenAuth.App.BaseApp.Base;
using OpenAuth.App.Interface;
2024-11-13 17:01:24 +08:00
using OpenAuth.App.ServiceApp.Request;
2024-11-13 15:15:30 +08:00
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
{
2024-11-13 17:01:24 +08:00
public class AdminTaskManageApp : SqlSugarBaseApp<InsTask, SugarDbContext>
2024-11-13 15:15:30 +08:00
{
private readonly IConfiguration _configuration;
2024-11-13 17:01:24 +08:00
private readonly ISqlSugarClient client;
public AdminTaskManageApp(ISugarUnitOfWork<SugarDbContext> unitWork, ISimpleClient<InsTask> repository, IAuth auth, ISqlSugarClient sqlSugarClient, IConfiguration configuration) : base(unitWork, repository, auth)
2024-11-13 15:15:30 +08:00
{
2024-11-13 17:01:24 +08:00
_configuration = configuration;
this.client = sqlSugarClient;
}
//添加任务
public async Task<Response<string>> 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<InsTask>();
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> insTaskGroup = new List<InsTaskgroup>();
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<InsTasktif> insTasktifList = new List<InsTasktif>();
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<string>
{
Result = "添加成功",
Message = "添加成功"
};
}
else
{
throw new Exception("添加失败");
}
}
2024-11-13 15:15:30 +08:00
}
}
}