Files
tnb.server/BasicData/Tnb.BasicData/BasCalendarService.cs
qianjiawei 380804ee47 1
2023-06-28 16:01:26 +08:00

108 lines
4.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Aspose.Cells.Drawing;
using JNPF.Common.Core.Manager;
using JNPF.Common.Models.VisualDev;
using JNPF.DependencyInjection;
using JNPF.DynamicApiController;
using JNPF.JsonSerialization;
using JNPF.Systems.Interfaces.System;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
using Tnb.BasicData.Entities;
using Tnb.BasicData.Entities.Dto;
using Tnb.BasicData.Entities.Dto.BasCalendar;
using Tnb.BasicData.Interfaces;
namespace Tnb.BasicData
{
/// <summary>
/// 工作日管理
/// </summary>
[ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 1102)]
[Route("api/[area]/[controller]/[action]")]
public class BasCalendarService: IBasCalendarService, IDynamicApiController, ITransient
{
private readonly ISqlSugarRepository<BasCalendar> _repository;
private readonly IUserManager _userManager;
public BasCalendarService(ISqlSugarRepository<BasCalendar> repository, IUserManager userManager)
{
_repository = repository;
_userManager = userManager;
}
/// <summary>
/// 保存工作日历
/// </summary>
/// <param name="CalendarInput"></param>
/// <returns></returns>
[HttpPost]
public async Task SaveData(CalendarInput CalendarInput)
{
var db = _repository.AsSugarClient();
await db.Deleteable<BasCalendar>(p=>p.datetext== CalendarInput.datetext).ExecuteCommandAsync();
BasCalendar BasCalendar = new BasCalendar();
BasCalendar.datetext = CalendarInput.datetext;
BasCalendar.datetype = CalendarInput.datetype;
BasCalendar.workhour = CalendarInput.workhour;
BasCalendar.worktype = CalendarInput.worktype;
BasCalendar.create_id = _userManager.UserId;
BasCalendar.create_time = DateTime.Now;
await db.Insertable(BasCalendar).ExecuteCommandAsync();
}
/// <summary>
/// 获取工作日历
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task<dynamic> GetWorkData(CalendarInput CalendarInput)
{
var db = _repository.AsSugarClient();
var lists = await db.Queryable<BasCalendar>().Where(p=>p.worktype== CalendarInput.worktype).ToListAsync();
List<CalendarOut> CalendarOuts = new List<CalendarOut>();
foreach (var list in lists)
{
CalendarOut CalendarOut = new CalendarOut();
CalendarOut.datetext = list.datetext;
CalendarOut.datetype = list.datetype;
CalendarOut.workhour = JSON.Deserialize<List<WorkHour>>(list.workhour);
CalendarOut.worktype = list.worktype;
CalendarOuts.Add(CalendarOut);
}
return CalendarOuts;
}
/// <summary>
/// 批量保存工作日历
/// </summary>
/// <param name="CalendarBatchInput"></param>
/// <returns></returns>
public async Task SaveBatchData(CalendarBatchInput CalendarBatchInput)
{
var db = _repository.AsSugarClient();
DateTime start = DateTime.Parse(CalendarBatchInput.startday!);
DateTime end = DateTime.Parse(CalendarBatchInput.endday!);
List<BasCalendar> BasCalendars = new List<BasCalendar>();
for (DateTime date = start; date <= end; date.AddDays(1))
{
if (CalendarBatchInput.weekday!.Contains((int)date.DayOfWeek))
{
BasCalendar BasCalendar = new BasCalendar();
BasCalendar.datetext = date.ToString("yyyy-MM-dd");
BasCalendar.datetype = CalendarBatchInput.datetype;
BasCalendar.workhour = CalendarBatchInput.workhour;
BasCalendar.worktype = CalendarBatchInput.worktype;
BasCalendar.create_id = _userManager.UserId;
BasCalendar.create_time = DateTime.Now;
BasCalendars.Add(BasCalendar);
}
}
await db.Deleteable<BasCalendar>(p => BasCalendars.Select(p => p.datetext).ToList().Contains(p.datetext)).ExecuteCommandAsync();
await db.Insertable(BasCalendars).ExecuteCommandAsync();
}
}
}