培训记录 人员 添加附件 (试卷)
线下考核 判断 添加 考核结果 必填
This commit is contained in:
parent
c1dfe00a50
commit
424e057af4
137830
APT.Data.Migrations/Migrations/20260205091350_wyw2026020501.Designer.cs
generated
Normal file
137830
APT.Data.Migrations/Migrations/20260205091350_wyw2026020501.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,74 @@
|
||||
using System;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
namespace APT.Data.Migrations.Migrations
|
||||
{
|
||||
public partial class wyw2026020501 : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.CreateTable(
|
||||
name: "T_SE_TRAIN_RECORD_USER_FILE",
|
||||
columns: table => new
|
||||
{
|
||||
ID = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
|
||||
RECORD_USER_ID = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
|
||||
IMG_FILE_ID = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
|
||||
IS_DELETED = table.Column<bool>(type: "bit", nullable: false),
|
||||
ORG_ID = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
|
||||
ENTITY_ORG_TPYE = table.Column<int>(type: "int", nullable: false),
|
||||
FORM_ID = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
|
||||
FLOW_STATUS = table.Column<int>(type: "int", nullable: false),
|
||||
FLOW_SEND_STATUS = table.Column<int>(type: "int", nullable: false),
|
||||
FLOW_ID = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
|
||||
CREATE_TIME = table.Column<DateTime>(type: "datetime2", nullable: true),
|
||||
MODIFY_TIME = table.Column<DateTime>(type: "datetime2", nullable: true),
|
||||
CREATER_ID = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
|
||||
MODIFIER_ID = table.Column<Guid>(type: "uniqueidentifier", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_T_SE_TRAIN_RECORD_USER_FILE", x => x.ID);
|
||||
table.ForeignKey(
|
||||
name: "FK_T_SE_TRAIN_RECORD_USER_FILE_T_FM_ORGANIZATION_ORG_ID",
|
||||
column: x => x.ORG_ID,
|
||||
principalTable: "T_FM_ORGANIZATION",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Restrict);
|
||||
table.ForeignKey(
|
||||
name: "FK_T_SE_TRAIN_RECORD_USER_FILE_T_PF_IMG_FILE_IMG_FILE_ID",
|
||||
column: x => x.IMG_FILE_ID,
|
||||
principalTable: "T_PF_IMG_FILE",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Restrict);
|
||||
table.ForeignKey(
|
||||
name: "FK_T_SE_TRAIN_RECORD_USER_FILE_T_SE_TRAIN_RECORD_USER_RECORD_USER_ID",
|
||||
column: x => x.RECORD_USER_ID,
|
||||
principalTable: "T_SE_TRAIN_RECORD_USER",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Restrict);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_T_SE_TRAIN_RECORD_USER_FILE_IMG_FILE_ID",
|
||||
table: "T_SE_TRAIN_RECORD_USER_FILE",
|
||||
column: "IMG_FILE_ID");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_T_SE_TRAIN_RECORD_USER_FILE_ORG_ID",
|
||||
table: "T_SE_TRAIN_RECORD_USER_FILE",
|
||||
column: "ORG_ID");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_T_SE_TRAIN_RECORD_USER_FILE_RECORD_USER_ID",
|
||||
table: "T_SE_TRAIN_RECORD_USER_FILE",
|
||||
column: "RECORD_USER_ID");
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(
|
||||
name: "T_SE_TRAIN_RECORD_USER_FILE");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -75703,6 +75703,63 @@ namespace APT.Data.Migrations.Migrations
|
||||
b.ToTable("T_SE_TRAIN_RECORD_USER");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("APT.MS.Domain.Entities.SE.T_SE_TRAIN_RECORD_USER_FILE", b =>
|
||||
{
|
||||
b.Property<Guid>("ID")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<Guid?>("CREATER_ID")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<DateTime?>("CREATE_TIME")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<int>("ENTITY_ORG_TPYE")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<Guid?>("FLOW_ID")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<int>("FLOW_SEND_STATUS")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("FLOW_STATUS")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<Guid?>("FORM_ID")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<Guid>("IMG_FILE_ID")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<bool>("IS_DELETED")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<Guid?>("MODIFIER_ID")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<DateTime?>("MODIFY_TIME")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<Guid?>("ORG_ID")
|
||||
.IsRequired()
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<Guid>("RECORD_USER_ID")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.HasKey("ID");
|
||||
|
||||
b.HasIndex("IMG_FILE_ID");
|
||||
|
||||
b.HasIndex("ORG_ID");
|
||||
|
||||
b.HasIndex("RECORD_USER_ID");
|
||||
|
||||
b.ToTable("T_SE_TRAIN_RECORD_USER_FILE");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("APT.MS.Domain.Entities.SE.T_SE_TRAIN_SURVEY", b =>
|
||||
{
|
||||
b.Property<Guid>("ID")
|
||||
@ -125590,6 +125647,33 @@ namespace APT.Data.Migrations.Migrations
|
||||
b.Navigation("Nav_User");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("APT.MS.Domain.Entities.SE.T_SE_TRAIN_RECORD_USER_FILE", b =>
|
||||
{
|
||||
b.HasOne("APT.BaseData.Domain.Entities.T_PF_IMG_FILE", "Nav_ImgFile")
|
||||
.WithMany()
|
||||
.HasForeignKey("IMG_FILE_ID")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("APT.Infrastructure.Core.T_FM_ORGANIZATION", "Nav_Org")
|
||||
.WithMany()
|
||||
.HasForeignKey("ORG_ID")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("APT.MS.Domain.Entities.SE.T_SE_TRAIN_RECORD_USER", "Nav_RecordUser")
|
||||
.WithMany("Nav_Files")
|
||||
.HasForeignKey("RECORD_USER_ID")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("Nav_ImgFile");
|
||||
|
||||
b.Navigation("Nav_Org");
|
||||
|
||||
b.Navigation("Nav_RecordUser");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("APT.MS.Domain.Entities.SE.T_SE_TRAIN_SURVEY", b =>
|
||||
{
|
||||
b.HasOne("APT.BaseData.Domain.Entities.FM.T_FM_DEPARTMENT", "Nav_LaunchDepartment")
|
||||
@ -136942,6 +137026,11 @@ namespace APT.Data.Migrations.Migrations
|
||||
b.Navigation("Nav_ListPaper");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("APT.MS.Domain.Entities.SE.T_SE_TRAIN_RECORD_USER", b =>
|
||||
{
|
||||
b.Navigation("Nav_Files");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("APT.MS.Domain.Entities.SE.T_SE_TRAIN_SURVEY", b =>
|
||||
{
|
||||
b.Navigation("Nav_Demands");
|
||||
|
||||
@ -10652,6 +10652,17 @@ builder.HasOne(t => t.Nav_User).WithMany().HasForeignKey(t => t.USER_ID).OnDelet
|
||||
builder.Property(t => t.DEPARTMENT_NAME).HasMaxLength(50);
|
||||
builder.Property(t => t.POST_NAME).HasMaxLength(50);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
#region TrainRecordUserFile
|
||||
public partial class SETrainRecordUserFileMap :APTEntityBaseMap<T_SE_TRAIN_RECORD_USER_FILE>
|
||||
{
|
||||
public override void Configure(EntityTypeBuilder<T_SE_TRAIN_RECORD_USER_FILE> builder)
|
||||
{
|
||||
base.Configure(builder);
|
||||
builder.HasOne(t => t.Nav_RecordUser).WithMany(t=>t.Nav_Files).HasForeignKey(t => t.RECORD_USER_ID).OnDelete(DeleteBehavior.Restrict);
|
||||
builder.HasOne(t => t.Nav_ImgFile).WithMany().HasForeignKey(t => t.IMG_FILE_ID).OnDelete(DeleteBehavior.Restrict);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
#region TrainingEffectEvaluation
|
||||
|
||||
@ -3,6 +3,7 @@ using APT.BaseData.Domain.Enums;
|
||||
using APT.Infrastructure.Core;
|
||||
using APT.MS.Domain.Enums;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
namespace APT.MS.Domain.Entities.SE
|
||||
{
|
||||
@ -90,5 +91,11 @@ namespace APT.MS.Domain.Entities.SE
|
||||
[FormFieldQuery]
|
||||
[EnumName("FMEnableStatusEnum")]
|
||||
public FMEnableStatusEnum ENABLE_STATUS { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 附件
|
||||
/// </summary>
|
||||
[Description("附件")]
|
||||
public ICollection<T_SE_TRAIN_RECORD_USER_FILE> Nav_Files { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,41 @@
|
||||
using APT.BaseData.Domain.Entities;
|
||||
using APT.BaseData.Domain.Entities.FM;
|
||||
using APT.BaseData.Domain.Enums;
|
||||
using APT.Infrastructure.Core;
|
||||
using APT.MS.Domain.Enums;
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
namespace APT.MS.Domain.Entities.SE
|
||||
{
|
||||
/// <summary>
|
||||
/// 培训记录参与人员考卷附件
|
||||
/// </summary>
|
||||
[Description("培训记录参与人员附件")]
|
||||
public class T_SE_TRAIN_RECORD_USER_FILE : MesEntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 培训记录
|
||||
/// </summary>
|
||||
[Description("培训记录")]
|
||||
[DataFieldForeignKey("Nav_RecordUser", "Nav_Files")]
|
||||
public Guid RECORD_USER_ID { get; set; }
|
||||
/// <summary>
|
||||
/// 导航: 培训记录
|
||||
/// </summary>
|
||||
[Description("导航: 培训记录")]
|
||||
public T_SE_TRAIN_RECORD_USER Nav_RecordUser { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 文件ID
|
||||
/// </summary>
|
||||
[Description("文件ID")]
|
||||
[DataFieldForeignKey("Nav_ImgFile")]
|
||||
public Guid IMG_FILE_ID { get; set; }
|
||||
/// <summary>
|
||||
/// 导航属性:文件
|
||||
/// </summary>
|
||||
[Description("导航属性:文件")]
|
||||
public T_PF_IMG_FILE Nav_ImgFile { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
@ -43,6 +43,13 @@ namespace APT.SC.WebApi.Controllers.Api.SE
|
||||
{
|
||||
|
||||
var joinUsers = entity.Nav_Users.Where(t => t.USER_ID != Guid.Empty);
|
||||
List<T_SE_TRAIN_RECORD_USER_FILE> listFiles = new List<T_SE_TRAIN_RECORD_USER_FILE>();
|
||||
foreach (var item in joinUsers)
|
||||
{
|
||||
if (item.IS_DELETED)
|
||||
item.Nav_Files.ForEach(e => e.IS_DELETED = true);
|
||||
listFiles.AddRange(item.Nav_Files);
|
||||
}
|
||||
var files = entity.Nav_Files;
|
||||
List<T_FM_NOTIFICATION_TASK> sendNotice = null;
|
||||
T_FM_NOTIFICATION_TASK finishNotice = null;
|
||||
@ -202,7 +209,22 @@ namespace APT.SC.WebApi.Controllers.Api.SE
|
||||
// currJoinUser.OK = true;
|
||||
//}
|
||||
sendNotice = NotificationTaskService.InsertUserNoticeTaskModels(allSendTitles, allSendDataIds, entity.ORG_ID, allSendUserIds, allSendUserNames, DateTime.Now, DateTime.Now.AddHours(12), 1, "SE017_SHOWPRINT");
|
||||
|
||||
if (data.Nav_Notify.CHECKTYPE == PlanCheckType.InOffLine)
|
||||
{
|
||||
//必须要有考核结果
|
||||
int index = 1;
|
||||
foreach (var item in joinUsers)
|
||||
{
|
||||
if (item.IS_DELETED)
|
||||
continue;
|
||||
if (!item.EXAMINATION_RESULTS.HasValue)
|
||||
throw new Exception("行" + index + " 请完善考核结果!");
|
||||
index++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
entity.Nav_Notify = null;
|
||||
joinUsers.ForEach(m => m.Nav_User = null);
|
||||
entity.Nav_Users = null;
|
||||
@ -217,7 +239,9 @@ namespace APT.SC.WebApi.Controllers.Api.SE
|
||||
if (finishNotice != null)
|
||||
UpdateEntityNoCommit(finishNotice);
|
||||
if (sendNotice != null && sendNotice.Any())
|
||||
BantchAddEntityNoCommit(sendNotice);
|
||||
BantchSaveEntityNoCommit(sendNotice);
|
||||
if (listFiles != null && listFiles.Any())
|
||||
BantchSaveEntityNoCommit(listFiles);
|
||||
|
||||
});
|
||||
return true;
|
||||
|
||||
@ -53511,6 +53511,111 @@ using APT.MS.Domain.Entities.HM;
|
||||
return WitEntity(null, filter);
|
||||
}
|
||||
|
||||
}
|
||||
#endregion
|
||||
#region TrainRecordUserFile-培训记录参与人员附件
|
||||
/// <summary>
|
||||
/// 培训记录参与人员附件
|
||||
/// </summary>
|
||||
[Route("api/SE/TrainRecordUserFile")]
|
||||
public partial class TrainRecordUserFileController : AuthorizeApiController<T_SE_TRAIN_RECORD_USER_FILE>
|
||||
{
|
||||
/// <summary>
|
||||
/// 查询所有数据
|
||||
/// </summary>
|
||||
/// <param name="filter">过滤实体</param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, Route("Entities")]
|
||||
public JsonActionResult<IEnumerable<T_SE_TRAIN_RECORD_USER_FILE>> Entities([FromBody]KeywordFilter filter)
|
||||
{
|
||||
return WitEntities(null, filter);
|
||||
}
|
||||
/// <summary>
|
||||
/// 排序查询所有数据
|
||||
/// </summary>
|
||||
/// <param name="filter">过滤实体</param>
|
||||
/// <returns></returns>
|
||||
|
||||
[HttpPost, Route("OrderEntities")]
|
||||
public JsonActionResult<IEnumerable<T_SE_TRAIN_RECORD_USER_FILE>> OrderEntities([FromBody]KeywordFilter filter)
|
||||
{
|
||||
return WitOrderEntities(null, filter);
|
||||
}
|
||||
/// <summary>
|
||||
/// 分页查询数据
|
||||
/// </summary>
|
||||
/// <param name="pageFilter">分页过滤实体</param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, Route("Paged")]
|
||||
public PagedActionResult<T_SE_TRAIN_RECORD_USER_FILE> Paged([FromBody]KeywordPageFilter pageFilter)
|
||||
{
|
||||
return WitPaged(null, pageFilter);
|
||||
}
|
||||
/// <summary>
|
||||
/// 排序分页查询数据
|
||||
/// </summary>
|
||||
/// <param name="pageFilter">分页过滤实体</param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, Route("OrderPaged")]
|
||||
public PagedActionResult<T_SE_TRAIN_RECORD_USER_FILE> OrderPaged([FromBody]KeywordPageFilter pageFilter)
|
||||
{
|
||||
return WitOrderPaged(null, pageFilter);
|
||||
}
|
||||
/// <summary>
|
||||
/// 根据主键删除数据
|
||||
/// </summary>
|
||||
/// <param name="id">主键ID</param>
|
||||
/// <returns></returns>
|
||||
[HttpGet, Route("Delete")]
|
||||
public JsonActionResult<bool> Delete(string id)
|
||||
{
|
||||
return WitRealDelete(id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新或新增数据
|
||||
/// </summary>
|
||||
/// <param name="entity">对象实体</param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, Route("Update")]
|
||||
public JsonActionResult<bool> Update([FromBody]T_SE_TRAIN_RECORD_USER_FILE entity)
|
||||
{
|
||||
return WitUpdate(entity);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 批量更新
|
||||
/// </summary>
|
||||
/// <param name="entity">对象实体</param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, Route("BatchUpdate")]
|
||||
public JsonActionResult<bool> BatchUpdate([FromBody] BatchUpdateModel<T_SE_TRAIN_RECORD_USER_FILE> entity)
|
||||
{
|
||||
return WitBantchUpdate(entity?.Data);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 批量删除数据
|
||||
/// </summary>
|
||||
/// <param name="ids">id字符串(id用逗号分隔)</param>
|
||||
/// <returns></returns>
|
||||
[HttpGet, Route("BatchDelete")]
|
||||
public JsonActionResult<bool> BatchDelete(string ids)
|
||||
{
|
||||
return WitRealBatchDelete(ids);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获得单条实体数据
|
||||
/// </summary>
|
||||
/// <param name="filter">过滤实体</param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, Route("Get")]
|
||||
public JsonActionResult<T_SE_TRAIN_RECORD_USER_FILE> Get([FromBody] KeywordFilter filter)
|
||||
{
|
||||
return WitEntity(null, filter);
|
||||
}
|
||||
|
||||
}
|
||||
#endregion
|
||||
#region TrainingEffectEvaluation-培训效果评估表
|
||||
|
||||
Loading…
Reference in New Issue
Block a user