108 lines
4.4 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|