using Tiobon.Core.IServices; namespace Tiobon.Core.Services; /// /// 【牛尾】培训计划 (服务) /// public class Ghre_UshioPlanServices : BaseServices, IGhre_UshioPlanServices { private readonly IBaseRepository _dal; private readonly ICommonServices _commonServices; public Ghre_UshioPlanServices(ICaching caching, IBaseRepository dal, ICommonServices commonServices) { this._dal = dal; base.BaseDal = dal; base._caching = caching; _commonServices = commonServices; } public override async Task> QueryFilterPage(QueryBody filter, string condition, bool? IsEnable = true) { var result = await base.QueryFilterPage(filter, condition, IsEnable); int? year = null; if (filter.jsonParam != null) foreach (JProperty jProperty in filter.jsonParam.Properties()) { var name = jProperty.Name; var value = jProperty.Value.ToString(); if (name == "Year") { var jsonParam = JsonHelper.JsonToObj(value); year = jsonParam.columnValue.ObjToInt(); } } var DT_TableDataT1 = result.result.DT_TableDataT1; var deptIds = DT_TableDataT1.Select(x => x.DeptId).Distinct().ToList(); //var courseIds = DT_TableDataT1.Select(x => x.CourseId).Distinct().ToList(); var staffIds = new List(); for (int i = 0; i < DT_TableDataT1.Count; i++) { if (DT_TableDataT1[i].StaffIds.IsNotEmptyOrNull()) staffIds.AddRange(JsonHelper.JsonToObj>(DT_TableDataT1[i].StaffIds)); if (DT_TableDataT1[i].Month.IsNotEmptyOrNull()) DT_TableDataT1[i].Months = JsonHelper.JsonToObj>(DT_TableDataT1[i].Month); DT_TableDataT1[i].TrainCategory = await GetParaLabel("TrainingCategory", DT_TableDataT1[i].TrainCategory); DT_TableDataT1[i].Month = await GetParaLabel("MonthSelect", DT_TableDataT1[i].Month); } staffIds = staffIds.Distinct().ToList(); var staffs = await Db.Queryable().Where(x => staffIds.Contains(x.StaffID)).ToListAsync(); var depts = await Db.Queryable().Where(x => deptIds.Contains(x.DeptID)).ToListAsync(); //var courses = await Db.Queryable().Where(x => courseIds.Contains(x.Id)).ToListAsync(); for (int i = 0; i < DT_TableDataT1.Count; i++) { DT_TableDataT1[i].InOrOut = await GetParaLabel("CourseInOrOut", DT_TableDataT1[i].InOrOut); if (DT_TableDataT1[i].StaffIds.IsNotEmptyOrNull()) { var staffIds1 = JsonHelper.JsonToObj>(DT_TableDataT1[i].StaffIds); if (staffIds1.Any()) DT_TableDataT1[i].StaffNames = string.Join("、", staffs.Where(x => staffIds1.Contains(x.StaffID)).Select(x => x.StaffName)); } //DT_TableDataT1[i].CourseName = courses.Where(x => x.Id == DT_TableDataT1[i].CourseId).Select(x => x.CourseName).FirstOrDefault(); DT_TableDataT1[i].DeptName = depts.Where(x => x.DeptID == DT_TableDataT1[i].DeptId).Select(x => x.DeptName).FirstOrDefault(); if (DT_TableDataT1[i].TrainNum != null && DT_TableDataT1[i].TrainDays != null) DT_TableDataT1[i].TotalDays = DT_TableDataT1[i].TrainNum * DT_TableDataT1[i].TrainDays; if (DT_TableDataT1[i].Months.Any()) { DT_TableDataT1[i].Months.ForEach(x => { //if (x.ObjToInt() == 1) DT_TableDataT1[i] = "✔√"; if (x.ObjToInt() == 1) DT_TableDataT1[i].M1 = "✔"; else if (x.ObjToInt() == 2) DT_TableDataT1[i].M2 = "✔"; else if (x.ObjToInt() == 3) DT_TableDataT1[i].M3 = "✔"; else if (x.ObjToInt() == 4) DT_TableDataT1[i].M4 = "✔"; else if (x.ObjToInt() == 5) DT_TableDataT1[i].M5 = "✔"; else if (x.ObjToInt() == 6) DT_TableDataT1[i].M6 = "✔"; else if (x.ObjToInt() == 7) DT_TableDataT1[i].M7 = "✔"; else if (x.ObjToInt() == 8) DT_TableDataT1[i].M8 = "✔"; else if (x.ObjToInt() == 9) DT_TableDataT1[i].M9 = "✔"; else if (x.ObjToInt() == 10) DT_TableDataT1[i].M10 = "✔"; else if (x.ObjToInt() == 11) DT_TableDataT1[i].M11 = "✔"; else if (x.ObjToInt() == 12) DT_TableDataT1[i].M12 = "✔"; }); } } ModuleParam param = new ModuleParam() { langId = filter.langId, menuName = filter.menuName }; var module = await _commonServices.GetModuleInfoAsync(param); result.result.JM_TableColumnT1 = module.Data.JM_TableColumnT1; var yearField = module.Data.JM_TableColumnT1.TableColumn.Where(x => x.field == "Year").SingleOrDefault(); if (year != yearField?.searchColumnDefaultValue.ObjToInt()) { result.result.JM_TableColumnT1.TableColumn?.ForEach(x => { if (x.GroupName == "预算编制数") { int month = x.field.Replace("M", null).Replace("_F", null).ObjToInt(); x.label = year + "-" + (month < 10 ? "0" + month : month); if (month == 12) year++; } }); } return result; } public override async Task Add(InsertGhre_UshioPlanInput entity) { if (entity.StaffId != null) entity.StaffIds = JsonHelper.ObjToJson(entity.StaffId); if (entity.StaffId.IsNotEmptyOrNull() && entity.StaffId.Count > 0) entity.TrainNum = entity.StaffId.Count; if (entity.Months != null) entity.Month = JsonHelper.ObjToJson(entity.Months); var result = await base.Add(entity); return result; } public override async Task Update(long Id, EditGhre_UshioPlanInput editModel) { if (editModel.StaffId != null) editModel.StaffIds = JsonHelper.ObjToJson(editModel.StaffId); if (editModel.Months != null) editModel.Month = JsonHelper.ObjToJson(editModel.Months); if (editModel.StaffId.IsNotEmptyOrNull() && editModel.StaffId.Count > 0) editModel.TrainNum = editModel.StaffId.Count; var result = await base.Update(Id, editModel, null, ["Status"]); return result; } public override async Task> QueryForm(QueryForm body) { var result = await base.QueryForm(body); string StaffIds = result.result.DT_TableDataT1[0].StaffIds; string Month = result.result.DT_TableDataT1[0].Month; if (!string.IsNullOrWhiteSpace(StaffIds)) result.result.DT_TableDataT1[0].StaffId = JsonConvert.DeserializeObject>(StaffIds); if (!string.IsNullOrWhiteSpace(Month)) result.result.DT_TableDataT1[0].Months = JsonConvert.DeserializeObject>(Month); if (result.result.DT_TableDataT1[0].TrainNum != null && result.result.DT_TableDataT1[0].TrainDays != null) result.result.DT_TableDataT1[0].TotalDays = result.result.DT_TableDataT1[0].TrainNum * result.result.DT_TableDataT1[0].TrainDays; return result; } public async Task> InsertByStatus(InsertGhre_UshioPlanInput insertModel, string status) { if (insertModel.StaffId != null) insertModel.StaffIds = JsonHelper.ObjToJson(insertModel.StaffId); var data = ServiceResult.OprateSuccess("新增成功", 0); insertModel.Status = status; var id = await Add(insertModel); data.Success = id > 0; if (data.Success) data.Data = id; else return ServiceResult.OprateFailed("失败!"); return data; } public async Task UpdateStatus(InsertGhre_UshioPlanInput input, string status) { HttpRequest request = UserContext.Context.Request; var api = request.Path.ObjToString().TrimEnd('/').ToLower(); var ip = GetUserIp(UserContext.Context); var entities = new List(); foreach (var id in input.Ids) { if (!BaseDal.Any(id)) continue; var entity = await BaseDal.QueryById(id); entity.UpdateIP = ip; entity.UpdateProg = api; entity.Status = status; entities.Add(entity); } var result = await BaseDal.Update(entities); return ServiceResult.OprateSuccess("执行成功!"); } }