diff --git a/BasicData/Tnb.BasicData.Entities/Dto/BasCalendar/CalendarInput.cs b/BasicData/Tnb.BasicData.Entities/Dto/BasCalendar/CalendarInput.cs
index 9b6e9271..61edcf32 100644
--- a/BasicData/Tnb.BasicData.Entities/Dto/BasCalendar/CalendarInput.cs
+++ b/BasicData/Tnb.BasicData.Entities/Dto/BasCalendar/CalendarInput.cs
@@ -12,11 +12,13 @@ namespace Tnb.BasicData.Entities.Dto
public string? datetype { get; set; }
public string? workhour { get; set; }
public string? worktype { get; set; }
+ public int? calendartype { get; set;}
+ public string? workgroupid { get; set;}
+ public string? userid { get; set; }
}
public class CalendarBatchInput
{
- public string? startday { get; set; }
- public string? endday { get; set; }
+ public string[]? startenday { get; set; }
public int[]? weekday { get; set; }
public string? datetype { get; set; }
public string? workhour { get; set; }
diff --git a/BasicData/Tnb.BasicData.Entities/Dto/BasCalendar/CalendarOut.cs b/BasicData/Tnb.BasicData.Entities/Dto/BasCalendar/CalendarOut.cs
index 403d753a..70c527c3 100644
--- a/BasicData/Tnb.BasicData.Entities/Dto/BasCalendar/CalendarOut.cs
+++ b/BasicData/Tnb.BasicData.Entities/Dto/BasCalendar/CalendarOut.cs
@@ -18,4 +18,11 @@ namespace Tnb.BasicData.Entities.Dto.BasCalendar
public string? start { get; set; }
public string? end { get; set; }
}
+ public class Shift
+ {
+ public string? startday { get; set; }
+ public string? endday { get; set; }
+ public WorkHour? workhour { get; set; }
+ }
+
}
diff --git a/BasicData/Tnb.BasicData.Entities/Entity/BasShift.cs b/BasicData/Tnb.BasicData.Entities/Entity/BasShift.cs
index 4727d387..a03ccf6f 100644
--- a/BasicData/Tnb.BasicData.Entities/Entity/BasShift.cs
+++ b/BasicData/Tnb.BasicData.Entities/Entity/BasShift.cs
@@ -3,7 +3,6 @@ using JNPF.Common.Security;
using SqlSugar;
namespace Tnb.BasicData.Entities;
-
///
/// 班次资料
///
diff --git a/BasicData/Tnb.BasicData.Entities/Entity/BasShiftWorkgroup.cs b/BasicData/Tnb.BasicData.Entities/Entity/BasShiftWorkgroup.cs
new file mode 100644
index 00000000..deb24b43
--- /dev/null
+++ b/BasicData/Tnb.BasicData.Entities/Entity/BasShiftWorkgroup.cs
@@ -0,0 +1,58 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using JNPF.Common.Contracts;
+using JNPF.Common.Security;
+using SqlSugar;
+
+namespace Tnb.BasicData.Entities;
+///
+/// 班次计划与班组的关联关系
+///
+[SugarTable("bas_shift_workgroup")]
+public partial class BasShiftWorkgroup : BaseEntity
+{
+ public BasShiftWorkgroup()
+ {
+ id = SnowflakeIdHelper.NextId();
+ }
+ ///
+ /// 班次计划id
+ ///
+ public string shift_id { get; set; } = string.Empty;
+
+ ///
+ /// 班组id
+ ///
+ public string workgroup_id { get; set; } = string.Empty;
+
+ ///
+ /// 创建用户
+ ///
+ public string? create_id { get; set; }
+
+ ///
+ /// 创建时间
+ ///
+ public DateTime? create_time { get; set; }
+
+ ///
+ /// 修改用户
+ ///
+ public string? modify_id { get; set; }
+
+ ///
+ /// 修改时间
+ ///
+ public DateTime? modify_time { get; set; }
+
+ ///
+ /// 扩展
+ ///
+ public string? extras { get; set; }
+
+}
+
+
diff --git a/BasicData/Tnb.BasicData.Entities/Entity/BasWorkgroup.cs b/BasicData/Tnb.BasicData.Entities/Entity/BasWorkgroup.cs
index daa66f8c..12f14402 100644
--- a/BasicData/Tnb.BasicData.Entities/Entity/BasWorkgroup.cs
+++ b/BasicData/Tnb.BasicData.Entities/Entity/BasWorkgroup.cs
@@ -20,7 +20,7 @@ public partial class BasWorkgroup : BaseEntity
public string? org_id { get; set; }
///
- /// 班组代码
+ /// 班组编号
///
public string group_code { get; set; } = string.Empty;
@@ -30,7 +30,12 @@ public partial class BasWorkgroup : BaseEntity
public string group_name { get; set; } = string.Empty;
///
- /// 车间(工段)代码,SEGMENT.SEGMENTCODE
+ /// 班组类型
+ ///
+ public string? group_type { get; set; }
+
+ ///
+ /// 所属车间
///
public string segment_id { get; set; } = string.Empty;
@@ -73,5 +78,4 @@ public partial class BasWorkgroup : BaseEntity
/// 状态
///
public string? state { get; set; }
-
}
diff --git a/BasicData/Tnb.BasicData.Entities/Entity/BasWorkgroupEmployee.cs b/BasicData/Tnb.BasicData.Entities/Entity/BasWorkgroupEmployee.cs
index 37e44e81..1dd43036 100644
--- a/BasicData/Tnb.BasicData.Entities/Entity/BasWorkgroupEmployee.cs
+++ b/BasicData/Tnb.BasicData.Entities/Entity/BasWorkgroupEmployee.cs
@@ -27,7 +27,7 @@ public partial class BasWorkgroupEmployee : BaseEntity
///
/// 班组代码
///
- public string group_code { get; set; } = string.Empty;
+ public string? group_code { get; set; }
///
/// 人员ID,BAS_EMPLOYEE.ID
@@ -37,36 +37,16 @@ public partial class BasWorkgroupEmployee : BaseEntity
///
/// 人员代码
///
- public string employee_code { get; set; } = string.Empty;
+ public string? employee_code { get; set; }
///
/// 是否班组长
///
public int? is_leader { get; set; }
- ///
- /// 创建用户
- ///
- public string? create_id { get; set; }
-
- ///
- /// 创建时间
- ///
- public DateTime create_time { get; set; } = DateTime.Now;
-
- ///
- /// 修改用户
- ///
- public string? modify_id { get; set; }
-
- ///
- /// 修改时间
- ///
- public DateTime? modify_time { get; set; }
-
///
/// 扩展字段
///
public string? extras { get; set; }
-}
+}
\ No newline at end of file
diff --git a/BasicData/Tnb.BasicData.Entities/Enums/EnumCalendarType.cs b/BasicData/Tnb.BasicData.Entities/Enums/EnumCalendarType.cs
new file mode 100644
index 00000000..03afed7b
--- /dev/null
+++ b/BasicData/Tnb.BasicData.Entities/Enums/EnumCalendarType.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tnb.BasicData.Entities.Enums
+{
+ public enum EnumCalendarType
+ {
+ 分类 = 1,
+ 班组 = 2,
+ 个人 = 3
+ }
+}
diff --git a/BasicData/Tnb.BasicData/BasCalendarService.cs b/BasicData/Tnb.BasicData/BasCalendarService.cs
index c05bec9c..414a940a 100644
--- a/BasicData/Tnb.BasicData/BasCalendarService.cs
+++ b/BasicData/Tnb.BasicData/BasCalendarService.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using Aop.Api.Domain;
using Aspose.Cells.Drawing;
using JNPF.Common.Core.Manager;
using JNPF.Common.Models.VisualDev;
@@ -12,10 +13,12 @@ using JNPF.JsonSerialization;
using JNPF.Systems.Interfaces.System;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
+using NPOI.SS.Formula.Functions;
using SqlSugar;
using Tnb.BasicData.Entities;
using Tnb.BasicData.Entities.Dto;
using Tnb.BasicData.Entities.Dto.BasCalendar;
+using Tnb.BasicData.Entities.Enums;
using Tnb.BasicData.Interfaces;
namespace Tnb.BasicData
@@ -61,17 +64,152 @@ namespace Tnb.BasicData
[HttpPost]
public async Task GetWorkData(CalendarInput CalendarInput)
{
- var db = _repository.AsSugarClient();
- var lists = await db.Queryable().Where(p=>p.worktype== CalendarInput.worktype).ToListAsync();
List CalendarOuts = new List();
- foreach (var list in lists)
+ if (CalendarInput.calendartype == (int)EnumCalendarType.分类)
{
- CalendarOut CalendarOut = new CalendarOut();
- CalendarOut.datetext = list.datetext;
- CalendarOut.datetype = list.datetype;
- CalendarOut.workhour = JSON.Deserialize>(list.workhour);
- CalendarOut.worktype = list.worktype;
- CalendarOuts.Add(CalendarOut);
+ var db = _repository.AsSugarClient();
+ var lists = await db.Queryable().Where(p => p.worktype == CalendarInput.worktype).ToListAsync();
+
+ foreach (var list in lists)
+ {
+ CalendarOut CalendarOut = new CalendarOut();
+ CalendarOut.datetext = list.datetext;
+ CalendarOut.datetype = list.datetype;
+ CalendarOut.workhour = JSON.Deserialize>(list.workhour);
+ CalendarOut.worktype = list.worktype;
+ CalendarOuts.Add(CalendarOut);
+ }
+ }
+ else if (CalendarInput.calendartype == (int)EnumCalendarType.班组)
+ {
+ var db = _repository.AsSugarClient();
+ var Shifts = await db.Queryable().Where(p => p.workgroup_id == CalendarInput.workgroupid).Select(p=>p.shift_id).ToListAsync();
+ if (Shifts != null && Shifts.Count > 0)
+ {
+ var BasTimePeriods = await db.Queryable((a, b) => new object[] { JoinType.Inner, a.shifttype_id == b.id })
+ .Where((a,b) => Shifts.Contains(a.shifttype_id!))
+ .Select((a, b) =>
+ new Shift
+ {
+ startday = b.shiftb_time,
+ endday = b.shifte_time,
+ workhour = new WorkHour { start=a.tpb_time,end=a.tpe_time },
+ }
+ ).ToListAsync();
+
+
+ var BasTimePeriodRests = await db.Queryable((a, b) => new object[] { JoinType.Inner, a.shift_type_id == b.id })
+ .Where((a, b) => Shifts.Contains(a.shift_type_id!))
+ .Select((a, b) =>
+ new Shift
+ {
+ startday = b.shiftb_time,
+ endday = b.shifte_time,
+ workhour = new WorkHour { start = a.tp_b_time, end = a.tp_e_time },
+ }).ToListAsync();
+ foreach (var BasTimePeriod in BasTimePeriods)
+ {
+ var start = DateTime.Parse(BasTimePeriod.startday!);
+ var end = DateTime.Parse(BasTimePeriod.endday!);
+ for (DateTime date = start; date <= end; date = date.AddDays(1))
+ {
+ if (CalendarOuts.Where(p => p.datetext == date.ToString("yyyy-MM-dd")).Any())
+ CalendarOuts.Where(p => p.datetext == date.ToString("yyyy-MM-dd")).First().workhour!.Add(BasTimePeriod.workhour!);
+ else
+ {
+ CalendarOut CalendarOut = new CalendarOut();
+ CalendarOut.datetext = date.ToString("yyyy-MM-dd");
+ CalendarOut.datetype = "workDay";
+ CalendarOut.workhour = new List { BasTimePeriod.workhour };
+ CalendarOuts.Add(CalendarOut);
+ }
+ }
+ }
+ foreach (var BasTimePeriodRest in BasTimePeriodRests)
+ {
+ var start = DateTime.Parse(BasTimePeriodRest.startday!);
+ var end = DateTime.Parse(BasTimePeriodRest.endday!);
+ for (DateTime date = start; date <= end; date = date.AddDays(1))
+ {
+ if (CalendarOuts.Where(p => p.datetext == date.ToString("yyyy-MM-dd")).Any())
+ CalendarOuts.Where(p => p.datetext == date.ToString("yyyy-MM-dd")).First().workhour!.Add(BasTimePeriodRest.workhour!);
+ else
+ {
+ CalendarOut CalendarOut = new CalendarOut();
+ CalendarOut.datetext = date.ToString("yyyy-MM-dd");
+ CalendarOut.datetype = "dayOff";
+ CalendarOut.workhour = new List { BasTimePeriodRest.workhour! };
+ CalendarOuts.Add(CalendarOut);
+ }
+ }
+ }
+ }
+ }
+ else if (CalendarInput.calendartype == (int)EnumCalendarType.个人)
+ {
+ var db = _repository.AsSugarClient();
+ var groups = await db.Queryable().Where(p => p.employee_id == CalendarInput.userid).Select(p => p.group_id).ToListAsync();
+ var Shifts = await db.Queryable().Where(p => groups.Contains(p.workgroup_id)).Select(p => p.shift_id).ToListAsync();
+ if (Shifts != null && Shifts.Count > 0)
+ {
+ var BasTimePeriods = await db.Queryable((a, b) => new object[] { JoinType.Inner, a.shifttype_id == b.id })
+ .Where((a, b) => Shifts.Contains(a.shifttype_id!))
+ .Select((a, b) =>
+ new Shift
+ {
+ startday = b.shiftb_time,
+ endday = b.shifte_time,
+ workhour = new WorkHour { start = a.tpb_time, end = a.tpe_time },
+ }
+ ).ToListAsync();
+
+
+ var BasTimePeriodRests = await db.Queryable((a, b) => new object[] { JoinType.Inner, a.shift_type_id == b.id })
+ .Where((a, b) => Shifts.Contains(a.shift_type_id!))
+ .Select((a, b) =>
+ new Shift
+ {
+ startday = b.shiftb_time,
+ endday = b.shifte_time,
+ workhour = new WorkHour { start = a.tp_b_time, end = a.tp_e_time },
+ }).ToListAsync();
+ foreach (var BasTimePeriod in BasTimePeriods)
+ {
+ var start = DateTime.Parse(BasTimePeriod.startday!);
+ var end = DateTime.Parse(BasTimePeriod.endday!);
+ for (DateTime date = start; date <= end; date = date.AddDays(1))
+ {
+ if (CalendarOuts.Where(p => p.datetext == date.ToString("yyyy-MM-dd")).Any())
+ CalendarOuts.Where(p => p.datetext == date.ToString("yyyy-MM-dd")).First().workhour!.Add(BasTimePeriod.workhour!);
+ else
+ {
+ CalendarOut CalendarOut = new CalendarOut();
+ CalendarOut.datetext = date.ToString("yyyy-MM-dd");
+ CalendarOut.datetype = "workDay";
+ CalendarOut.workhour = new List { BasTimePeriod.workhour! };
+ CalendarOuts.Add(CalendarOut);
+ }
+ }
+ }
+ foreach (var BasTimePeriodRest in BasTimePeriodRests)
+ {
+ var start = DateTime.Parse(BasTimePeriodRest.startday!);
+ var end = DateTime.Parse(BasTimePeriodRest.endday!);
+ for (DateTime date = start; date <= end; date = date.AddDays(1))
+ {
+ if (CalendarOuts.Where(p => p.datetext == date.ToString("yyyy-MM-dd")).Any())
+ CalendarOuts.Where(p => p.datetext == date.ToString("yyyy-MM-dd")).First().workhour!.Add(BasTimePeriodRest.workhour!);
+ else
+ {
+ CalendarOut CalendarOut = new CalendarOut();
+ CalendarOut.datetext = date.ToString("yyyy-MM-dd");
+ CalendarOut.datetype = "dayOff";
+ CalendarOut.workhour = new List { BasTimePeriodRest.workhour! };
+ CalendarOuts.Add(CalendarOut);
+ }
+ }
+ }
+ }
}
return CalendarOuts;
}
@@ -83,24 +221,35 @@ namespace Tnb.BasicData
public async Task SaveBatchData(CalendarBatchInput CalendarBatchInput)
{
var db = _repository.AsSugarClient();
- DateTime start = DateTime.Parse(CalendarBatchInput.startday!);
- DateTime end = DateTime.Parse(CalendarBatchInput.endday!);
+ DateTime start = DateTime.Parse(CalendarBatchInput.startenday![0]);
+ DateTime end = DateTime.Parse(CalendarBatchInput.startenday![1]);
List BasCalendars = new List();
- for (DateTime date = start; date <= end; date.AddDays(1))
+ var lists=await db.Queryable().Where(p=>start<=DateTime.Parse(p.datetext!)&&end>= DateTime.Parse(p.datetext!)&& p.worktype== CalendarBatchInput.worktype).ToListAsync();
+ var updatelist=new List();
+ for (DateTime date = start; date <= end; date = 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);
+ if (lists.Where(p => p.datetext == date.ToString("yyyy-MM-dd")).Any())
+ {
+ var BasCalendar = lists.Where(p => p.datetext == date.ToString("yyyy-MM-dd")).First();
+ BasCalendar.datetype = CalendarBatchInput.datetype;
+ updatelist.Add(BasCalendar);
+ }
+ else
+ {
+ 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(p => BasCalendars.Select(p => p.datetext).ToList().Contains(p.datetext)).ExecuteCommandAsync();
+ await db.Updateable(updatelist).ExecuteCommandAsync();
await db.Insertable(BasCalendars).ExecuteCommandAsync();
}
}