mh_jy_safe/APT.MicroApi/APT.SC.WebApi/Controllers/Api/SEController/SENewUsers.cs

925 lines
51 KiB
C#
Raw Normal View History

2025-08-25 09:56:57 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection.Metadata;
using APT.BaseData.Domain.Entities;
using APT.BaseData.Domain.Entities.FM;
using APT.BaseData.Domain.Entities.OP;
using APT.BaseData.Domain.Enums;
using APT.BaseData.Domain.Enums.PF;
using APT.BaseData.Domain.IServices.FM;
using APT.Infrastructure.Api;
using APT.Infrastructure.Core;
using APT.Migrations;
using APT.MS.Domain.Entities.OG;
using APT.MS.Domain.Entities.SC.SC;
using APT.MS.Domain.Entities.SE;
using APT.MS.Domain.Enums;
using APT.Utility;
using Castle.Core.Internal;
using ICSharpCode.SharpZipLib.Core;
using Microsoft.AspNetCore.Mvc;
using NPOI.HSSF.Record;
using NPOI.HSSF.Record.Chart;
using NPOI.SS.Formula.Functions;
using NPOI.Util;
namespace APT.SC.WebApi.Controllers.Api.SE
{
[Route("api/SE/SENewUsers")]
public class SENewUsersController : AuthorizeApiController<T_SE_NEW_USERS>
{
IFMNotificationTaskService NotificationTaskService { get; set; }
public SENewUsersController(IFMNotificationTaskService notificationTaskService)
{
NotificationTaskService = notificationTaskService;
}
/// <summary>
/// 更新
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpPost, Route("FullUpdate")]
public JsonActionResult<bool> FullUpdate([FromBody] T_SE_NEW_USERS entity)
{
return SafeExecute<bool>(() =>
{
List<T_FM_NOTIFICATION_TASK> sendNoticeList = new List<T_FM_NOTIFICATION_TASK>();
List<T_SE_NEW_USER_DETAIL_FILE> detailFiles = new List<T_SE_NEW_USER_DETAIL_FILE>();
T_FM_NOTIFICATION_TASK finishNotice = null;
var Nav_NewUserDetail = entity.Nav_NewUserDetail;
var Nav_Files = entity.Nav_Files;
if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify"))
{
var endTime = DateTime.Now.AddDays(10);
var newEndTime = new DateTime(endTime.Year, endTime.Month, endTime.Day, 23, 59, 59);
if (entity.TRAINNING_TIME == "0" || string.IsNullOrEmpty(entity.TRAINNING_TIME))
{
throw new Exception("学时不能为0!");
}
BaseFilter bf = new BaseFilter(entity.ORG_ID);
bf.Include = new string[] { "Nav_Parent.Nav_Parent" };
var alldeps = GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0, bf);
var currUserDepId = APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID;
var auditDep = GetEntity<T_FM_DEPARTMENT>(currUserDepId.ToString());
var listCode = Nav_NewUserDetail.Where(e => e.CODE.Length > 0).Select(e => e.CODE);
var listUserCheck = GetEntities<T_FM_USER>(e => listCode.Contains(e.CODE), null, null);
foreach (var item in Nav_NewUserDetail)
{
var dep = alldeps.FirstOrDefault(t => t.ID == item.USER_DEPARTMENT_ID);
if (dep.DEPARTMENT_TYPE == auditDep.DEPARTMENT_TYPE)
{
if (string.IsNullOrEmpty(item.CODE))
{
throw new Exception("请填写" + item.Nav_User.NAME + "的工号!");
}
if (item.USER_POST_ID == Guid.Empty || item.USER_POST_ID == null)
{
throw new Exception("请填写" + item.Nav_User.NAME + "的岗位!");
}
}
if (listUserCheck != null && listUserCheck.Count() > 0 && !string.IsNullOrEmpty(item.CODE) && item.USER_ID.HasValue)
{
var CodeCheck = listUserCheck.FirstOrDefault(e => e.CODE == item.CODE && e.ID != item.USER_ID);
if (CodeCheck != null)
{
throw new Exception("工号不能重复【" + item.CODE + "】!");
}
}
}
if (entity.TRAIN_STATUS == SEThreeLevelSafeTrainType.)
{
foreach (var item in Nav_NewUserDetail)
{
var dep = alldeps.FirstOrDefault(t => t.ID == item.USER_DEPARTMENT_ID);
if (dep.DEPARTMENT_TYPE == 0)
{
item.NEXT_DEPARTMENT_ID = dep.ID;
}
if (dep.DEPARTMENT_TYPE == 1)
{
item.NEXT_DEPARTMENT_ID = dep.Nav_Parent.ID;
}
else if (dep.DEPARTMENT_TYPE == 2)
{
item.NEXT_DEPARTMENT_ID = dep.Nav_Parent.Nav_Parent.ID;
}
}
}
if (entity.TRAIN_STATUS == SEThreeLevelSafeTrainType.)
{
foreach (var item in Nav_NewUserDetail)
{
item.NEXT_DEPARTMENT_ID = item.USER_DEPARTMENT_ID;
}
}
var allDepartment = Nav_NewUserDetail.Where(t => t.IS_DELETED == false).Select(t => t.USER_DEPARTMENT_ID);
var allUser = GetEntities<T_FM_USER>(t => allDepartment.Contains(t.DEPARTMENT_ID) && t.Nav_ApproveRole != null, new BaseFilter(entity.ORG_ID));
if (entity.IS_CREATETEST == SETrainNeedSuvey.)
{
foreach (var item in Nav_NewUserDetail)
{
if (string.IsNullOrEmpty(item.SCORE))
{
throw new Exception("线下考试请填写分数!");
}
if (item.Nav_Files == null)
{
throw new Exception("线下考试请上传附件!");
}
if (item.Nav_Files != null && item.Nav_Files.Count() > 0)
{
item.Nav_Files.ForEach(nf =>
{
nf.USER_DETAIL_ID = item.ID;
});
detailFiles.AddRange(item.Nav_Files);
item.Nav_Files = null;
}
}
}
var listUserID = Nav_NewUserDetail.Where(e => e.USER_ID.HasValue).Select(e => e.USER_ID.Value);
var listUser = GetEntities<T_FM_USER>(e => listUserID.Contains(e.ID), null);
foreach (var item in Nav_NewUserDetail)
{
if (!item.USER_ID.HasValue)
continue;
sendNoticeList.Add(NotificationTaskService.InsertUserNoticeTaskModel("三级安全培训记录-" + entity.TRAIN_STATUS.GetDescription() + "-签到", item.ID, entity.ORG_ID, (Guid)item.USER_ID, listUser.FirstOrDefault(e => e.ID == item.USER_ID.Value)?.NAME, DateTime.Now, DateTime.Now.AddDays(1), 1, "SE062_SHOWPRINT"));
}
finishNotice = NotificationTaskService.GetTaskFinishModel(entity.TaskID, "SE061_SHOWPRINT");
}
UnifiedCommit(() =>
{
UpdateEntityNoCommit(entity);
if (sendNoticeList != null && sendNoticeList.Any())
BantchAddEntityNoCommit(sendNoticeList);
if (finishNotice != null)
UpdateEntityNoCommit(finishNotice);
if (Nav_NewUserDetail != null && Nav_NewUserDetail.Any())
BantchSaveEntityNoCommit(Nav_NewUserDetail);
if (Nav_Files != null && Nav_Files.Any())
BantchSaveEntityNoCommit(Nav_Files);
if (detailFiles.Any())
BantchSaveEntityNoCommit(detailFiles);
});
return true;
});
}
/// <summary>
/// 更新
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpPost, Route("PersonalAgree")]
public JsonActionResult<bool> PersonalAgree([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
var orgId = filter.GetOrgId();
var currID = Guid.Parse(filter.Parameter1);
var taskID = Guid.Parse(filter.Parameter2);
var eduCardID = Guid.Parse(filter.Parameter3);
var userID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
if (taskID != null && taskID != Guid.Empty)
{
var currTask = GetEntity<T_FM_NOTIFICATION_TASK>(t => t.ID == taskID);
if (currTask != null)
{
userID = currTask.USER_ID;
}
}
T_FM_NOTIFICATION_TASK finishNotice = null;
T_FM_NOTIFICATION_TASK sendNotice = null;
finishNotice = NotificationTaskService.GetTaskFinishModel(taskID);
List<T_SE_NEW_USER_DETAIL_PAPER> Nav_Papers = null;
#region
var eduCard = GetEntity<T_SE_NEW_USERS>(eduCardID);
List<T_FM_USER_PRODUCTION_UNIT> units = new List<T_FM_USER_PRODUCTION_UNIT>();
var currUser = GetEntity<T_FM_USER>(t => t.ID == userID);
var currUserDeail = GetEntity<T_SE_NEW_USER_DETAIL>(t => t.ID == currID);
var currPerson = GetEntity<T_FM_PERSON>(t => t.ID == currUser.PERSON_ID);
T_FM_DEPARTMENT departInfo = null;
if (!string.IsNullOrEmpty(currUserDeail.CODE))//不一样才进行 修改 比如一开始 是手机号码 配置的是工号
{
departInfo = this.GetEntity<T_FM_DEPARTMENT>(currUserDeail.USER_DEPARTMENT_ID.ToString());
if (departInfo != null && departInfo.MineType != null)
{
var enumList = this.GetEntity<T_FM_ENUMS>(t => t.CODE == "BSMineTypeEnum" && t.VALUE == departInfo.MineType);
currUser.MineType = departInfo.MineType.ToString();
T_FM_USER_PRODUCTION_UNIT unit = new T_FM_USER_PRODUCTION_UNIT();
unit.ORG_ID = orgId;
unit.USER_ID = (Guid)userID;
unit.ENUMS_ID = enumList?.ID;
unit.Nav_Enums = null;
units.Add(unit);
}
if (!string.IsNullOrEmpty(currUserDeail.CODE) && currUserDeail.CODE != currUser.CODE)
{
var userCodeCheck = GetEntity<T_FM_USER>(e => e.CODE == currUserDeail.CODE && e.ID != currUser.ID);
if (userCodeCheck != null)
{
throw new Exception("工号不能重复,请核对工号并联系管理员处理!");
}
using (var context = new MigrationContext(ConfigurationManager.ConnectionStrings["default"]))
{
var opuser = context.GetEntity<T_OP_ALLUSER>(t => t.CODE == currUser.CODE, null);
opuser.CODE = currUserDeail.CODE;
context.UpdateEntity(opuser);
context.SaveChanges();
}
}
currUser.CODE = currUserDeail.CODE;
currUser.DEPARTMENT_ID = currUserDeail.USER_DEPARTMENT_ID;
currPerson.CODE = currUserDeail.CODE;
currPerson.DEPARTMENT_ID = currUserDeail.USER_DEPARTMENT_ID;
currPerson.POST_ID = currUserDeail.USER_POST_ID;
UpdateEntity(currUser);
UpdateEntity(currPerson);
}
T_SE_NEW_USERS eduCardRef = null;
T_SE_NEW_USERS newEduCard = null;
List<T_SE_NEW_USER_DETAIL> userDetailList = null;
T_SE_NEW_USER_DETAIL currDetail = null;
T_FM_NOTIFICATION_TASK sendNoticeRef = null;
T_OG_SAFE_PDT_SIGNED signRecord = null;
T_OG_SAFE_PDT_SIGNED_POST signPost = null;
if (eduCard.IS_CREATETEST == SETrainNeedSuvey.)
{
List<T_FM_NOTIFICATION_TASK> sendNotices = new List<T_FM_NOTIFICATION_TASK>();
var config = GetEntity<T_SE_SECONFIG>(t => true);
var SCount = 1;
var MCount = 1;
var CCount = 1;
if (config != null)
{
if (config.M_TEST_COUNT > 0)
{
MCount = config.M_TEST_COUNT;
}
if (config.S_TEST_COUNT > 0)
{
SCount = config.S_TEST_COUNT;
}
if (config.C_TEST_COUNT > 0)
{
CCount = config.C_TEST_COUNT;
}
}
var testidlist = new List<Guid>();
var testFilter = new BaseFilter(filter.GetOrgId());
testFilter.Include = new string[] { "Nav_Points" };
var currStatus = eduCard.TRAIN_STATUS;
IEnumerable<T_SE_TEST_ENUM_POINT> pointS = new List<T_SE_TEST_ENUM_POINT>();
if (eduCard.TRAIN_STATUS == SEThreeLevelSafeTrainType.)
{
pointS = GetEntities<T_SE_TEST_ENUM_POINT>(t => t.NAME == "三级安全教育-公司级", new BaseFilter(orgId));
}
else if (eduCard.TRAIN_STATUS == SEThreeLevelSafeTrainType.)
{
pointS = GetEntities<T_SE_TEST_ENUM_POINT>(t => t.NAME == "三级安全教育-部门级", new BaseFilter(orgId));
}
else if (eduCard.TRAIN_STATUS == SEThreeLevelSafeTrainType.)
{
pointS = GetEntities<T_SE_TEST_ENUM_POINT>(t => t.NAME == "三级安全教育-班组级", new BaseFilter(orgId));
}
var pointIDS = pointS.Select(t => t.ID).ToList();
var allTests = GetEntities<T_SE_TEST>(st => st.Nav_Points.Any(pt => pointIDS.Contains((Guid)pt.POINT_ID)), testFilter).ToList();
var errorMsg = "";
if (errorMsg != "")
{
throw new Exception("知识点 " + errorMsg + " 没有题目!");
}
CreateTestList(allTests, testidlist, pointIDS, (int)SETestTypeEnum., CCount);
CreateTestList(allTests, testidlist, pointIDS, (int)SETestTypeEnum., SCount);
CreateTestList(allTests, testidlist, pointIDS, (int)SETestTypeEnum., MCount);
if (testidlist.Count == 0)
{
throw new Exception("当前题库数据不足,未能正常生成试卷!");
}
Nav_Papers = new List<T_SE_NEW_USER_DETAIL_PAPER>();
testidlist.ForEach(testid =>
{
var p = new T_SE_NEW_USER_DETAIL_PAPER
{
RECORD_ID = currID,
ID = Guid.NewGuid(),
ORG_ID = filter.GetOrgId(),
USER_ID = userID,
TEST_ID = testid,
ANSWER = 0,
};
Nav_Papers.Add(p);
});
sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("三级安全教育在线答题-" + eduCard.TRAIN_STATUS.GetDescription(), currID, filter.GetOrgId(), (Guid)userID, GetEntity<T_FM_USER>((Guid)userID).NAME, DateTime.Now, DateTime.Now.AddHours(12), 1, "SE061_PAPERPAGE");
}
else
{
CreateNextLevel(orgId, currID, taskID, eduCardID, null, ref eduCardRef, ref newEduCard, ref userDetailList, ref currDetail, ref sendNoticeRef);
#region wyw OG001_SHOWPRINT
GetOG001(taskID, currUser, currPerson, departInfo, ref signRecord, ref signPost, ref sendNoticeRef);
//if (sendNoticeRef == null)
//{
// var post = GetEntity<T_SC_DEPARTMENT_POST>(t => t.Nav_Dept.DEPARTMENT_ID == currUser.DEPARTMENT_ID && t.DEPOST_ID == currPerson.POST_ID, new string[] { "Nav_Dept.Nav_Post" });
// if (post != null)
// {
// var standardCreate = GetEntity<T_SC_STANDARD_CREATE>(t => t.POST_ID == post.Nav_Dept.POST_ID && t.STATUS == SCSystemEditStatus.已归档 && t.FILE_STATUS == SCSystemFileStatus.有效);
// if (standardCreate != null)
// {
// var chargeUser = GetEntity<T_FM_USER>(t => t.DEPARTMENT_ID == post.Nav_Dept.Nav_Post.DEPARTMENT_ID && t.Nav_Person.POST_ID == post.Nav_Dept.Nav_Post.DEPOST_ID && t.ENABLE_STATUS == 0);
// if (chargeUser != null)
// {
// signRecord = new T_OG_SAFE_PDT_SIGNED
// {
// ID = Guid.NewGuid(),
// ORG_ID = currUser.ORG_ID,
// STATUS = (int)PFStandardStatus.Draft,
// TRIGGER_TYPE = OGPersonalSignedTriggerType.新员工触发,
// //TRIGGER_TYPE = OGPersonalSignedTriggerType.手动新增,
// STANDARD_ID = standardCreate.ID,
// FILE_CONTENT = standardCreate.FILE_CONTENT,
// DEPARTMENT_ID = currUser.DEPARTMENT_ID,
// ANNUAL = DateTime.Now.Year
// };
// if (chargeUser != null)
// {
// signRecord.CHARGE_USER_ID = chargeUser.ID;
// }
// signPost = new T_OG_SAFE_PDT_SIGNED_POST
// {
// SAFE_PDT_SIGNED_ID = signRecord.ID,
// ID = Guid.NewGuid(),
// ORG_ID = currUser.ORG_ID,
// USER_ID = currUser.ID,
// POST_ID = currPerson.POST_ID,
// CHARGE_USER_ID = signRecord.CHARGE_USER_ID
// };
// sendNoticeRef = NotificationTaskService.InsertUserNoticeTaskModel(DateTime.Now.ToShortDateString() + "安全生产责任制个人签订表", signRecord.ID, currUser.ORG_ID, currUser.ID, currUser.NAME, DateTime.Now, DateTime.Now.AddDays(7), 1, "OG001_SHOWPRINT");
// }
// }
// }
// else
// {
// //找不到 责任制
// T_FM_USER sendUser = null;
// var userApprol = GetEntities<T_FM_USER>(e => e.ENABLE_STATUS == 0 && e.DEPARTMENT_ID.HasValue && e.APPROVE_ROLE_ID.HasValue && e.DEPARTMENT_ID.Value == currUser.DEPARTMENT_ID.Value, null, "Nav_ApproveRole");
// if (userApprol != null && userApprol.Count() > 0 && currPerson.POST_ID.HasValue)
// {
// switch (departInfo.DEPARTMENT_TYPE)//FMDepartmentType 部门=0, 车间=1, 班组=2, 公司=3
// {
// case 2:
// sendUser = userApprol.FirstOrDefault(e => e.Nav_ApproveRole.NAME.Contains("负责人"));
// break;
// default:
// sendUser = userApprol.FirstOrDefault(e => e.Nav_ApproveRole.NAME.Contains("安全"));
// break;
// }
// }
// if (sendUser == null)
// {
// //找不到人只能给她自己做联系人员处理
// sendNoticeRef = NotificationTaskService.InsertUserNoticeTaskModel("请联系你所在组织安全员绑定责任制岗位并上传责任状", currID, currUser.ORG_ID, currUser.ID, currUser.NAME, DateTime.Now, DateTime.Now.AddDays(7), (int)FMNoticeTypeEnum.今日提醒, "PF135");
// }
// else
// {
// var UserPost = GetEntity<T_FM_USER_POST>(currPerson.POST_ID.Value);
// sendNoticeRef = NotificationTaskService.InsertUserNoticeTaskModel("请为《" + currUser.NAME + "" + UserPost.NAME + "》绑定责任制岗位并上传责任状", currID, currUser.ORG_ID, sendUser.ID, sendUser.NAME, DateTime.Now, DateTime.Now.AddDays(7), (int)FMNoticeTypeEnum.今日提醒, "PF135");
// }
// }
//}
#endregion
}
#endregion
UnifiedCommit(() =>
{
if (finishNotice != null)
UpdateEntityNoCommit(finishNotice);
if (sendNotice != null)
AddEntityNoCommit(sendNotice);
if (Nav_Papers != null && Nav_Papers.Any())
BantchAddEntityNoCommit(Nav_Papers);
if (units.Any())
BantchSaveEntityNoCommit(units);
//CreateNextLevel wyw 从 方法体抽出来的
if (eduCardRef != null)
UpdateEntityNoCommit(eduCardRef);
if (newEduCard != null)
AddEntityNoCommit(newEduCard);
if (userDetailList != null)
BantchAddEntityNoCommit(userDetailList);
if (currDetail != null)
UpdateEntityNoCommit(currDetail);
if (sendNoticeRef != null)
AddEntityNoCommit(sendNoticeRef);
//责任制签订
if (signRecord != null)
UpdateEntityNoCommit(signRecord);
if (signPost != null)
UpdateEntityNoCommit(signPost);
});
return true;
});
}
public class TrainUserPaperModel
{
public List<T_SE_NEW_USER_DETAIL_PAPER> Nav_Papers { get; set; }
public T_SE_SECONFIG Nav_Config { get; set; }
public Guid TaskID { get; set; }
public Guid ORG_ID { get; set; }
}
[HttpPost, Route("GetUserPapers")]
public JsonActionResult<TrainUserPaperModel> GetUserPapers([FromBody] KeywordFilter filter)
{
var papers = GetEntities<T_SE_NEW_USER_DETAIL_PAPER>(null, filter).ToList();
var config = GetEntity<T_SE_SECONFIG>(t => true);
var ret = new JsonActionResult<TrainUserPaperModel>();
ret.Data = new TrainUserPaperModel
{
Nav_Papers = papers,
Nav_Config = config
};
ret.IsSuccessful = true;
ret.TotalCount = 1;
ret.ErrorMessage = "";
return ret;
}
[HttpPost, Route("SavePapers")]
public JsonActionResult<bool> SavePapers([FromBody] TrainUserPaperModel entity)
{
return SafeExecute(() =>
{
if (entity.Nav_Papers == null || entity.Nav_Papers.Count == 0)
{
throw new Exception("试卷不能为空");
}
var score = 0;
var sscore = entity.Nav_Config.S_TEST_SCORE;
var mscore = entity.Nav_Config.M_TEST_SCORE;
var cscore = entity.Nav_Config.C_TEST_SCORE;
foreach (var item in entity.Nav_Papers)
{
if (item.ANSWER != 0 && item.ANSWER == item.Nav_Test.ANSWER)
{
if (item.Nav_Test.TYPE == SETestTypeEnum.)
{
score += cscore;
}
else if (item.Nav_Test.TYPE == SETestTypeEnum.)
{
score += sscore;
}
else if (item.Nav_Test.TYPE == SETestTypeEnum.)
{
score += mscore;
}
}
}
var passMark = GetEntity<T_SE_SECONFIG>(t => t.IS_DELETED == false);
if (passMark != null)
{
if (passMark.PASS_MARK != 0)
{
if (score < passMark.PASS_MARK)
{
throw new Exception("考试成绩:" + score + "分小于标准线" + passMark.PASS_MARK + ",请重新考试!");
}
}
}
foreach (var item in entity.Nav_Papers)
{
item.SCORE = score;
}
T_SE_NEW_USERS eduCard = null;
T_SE_NEW_USERS newEduCard = null;
List<T_SE_NEW_USER_DETAIL> userDetailList = null;
T_SE_NEW_USER_DETAIL currDetail = null;
T_FM_NOTIFICATION_TASK sendNotice = null;
var finishNotice = NotificationTaskService.GetTaskFinishModel(entity.TaskID);
CreateNextLevel(entity.ORG_ID, entity.Nav_Papers[0].RECORD_ID, entity.TaskID, entity.Nav_Papers[0].Nav_Record.EDU_CARD_ID, score.ToString(), ref eduCard, ref newEduCard, ref userDetailList, ref currDetail, ref sendNotice);
T_OG_SAFE_PDT_SIGNED signRecord = null;
T_OG_SAFE_PDT_SIGNED_POST signPost = null;
var currUser = GetEntity<T_FM_USER>(APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value);
var currPerson = GetEntity<T_FM_PERSON>(currUser.PERSON_ID.Value);
var departInfo = GetEntity<T_FM_DEPARTMENT>(currUser.DEPARTMENT_ID.Value);
GetOG001(entity.TaskID, currUser, currPerson, departInfo, ref signRecord, ref signPost, ref sendNotice);
UnifiedCommit(() =>
{
if (finishNotice != null)
UpdateEntityNoCommit(finishNotice);
BantchSaveEntityNoCommit(entity.Nav_Papers);
//CreateNextLevel wyw 从 方法体抽出来的
if (eduCard != null)
UpdateEntityNoCommit(eduCard);
if (newEduCard != null)
AddEntityNoCommit(newEduCard);
if (userDetailList != null)
BantchAddEntityNoCommit(userDetailList);
if (currDetail != null)
UpdateEntityNoCommit(currDetail);
if (sendNotice != null)
AddEntityNoCommit(sendNotice);
//责任制签订
if (signRecord != null)
UpdateEntityNoCommit(signRecord);
if (signPost != null)
UpdateEntityNoCommit(signPost);
});
return true;
});
}
private void CreateTestList(List<T_SE_TEST> allTests, List<Guid> ret, List<Guid> contentFilter, int type, int count)
{
var tests = allTests.Where(st =>
st.Nav_Points.Any(pt => contentFilter.Contains(pt.POINT_ID.Value)) &&
st.TYPE == (SETestTypeEnum)type).OrderBy(t => Guid.NewGuid()).Take(count); ;
if (tests != null)
{
ret.AddRange(tests.Select(it => it.ID));
}
}
/// <summary>
///
/// </summary>
/// <param name="ORG_ID"></param>
/// <param name="RECORD_ID"></param>
/// <param name="TaskID"></param>
/// <param name="EDU_CARD_ID"></param>
/// <param name="score"></param>
/// <param name="eduCard"></param>
/// <param name="newEduCard"></param>
/// <param name="userDetailList"></param>
/// <param name="currDetail"></param>
/// <param name="sendNotice"></param>
private void CreateNextLevel(Guid ORG_ID, Guid RECORD_ID, Guid TaskID, Guid EDU_CARD_ID, string score, ref T_SE_NEW_USERS eduCard, ref T_SE_NEW_USERS newEduCard, ref List<T_SE_NEW_USER_DETAIL> userDetailList, ref T_SE_NEW_USER_DETAIL currDetail, ref T_FM_NOTIFICATION_TASK sendNotice)
{
#region
var orgId = ORG_ID;
var currID = RECORD_ID;
var taskID = TaskID;
var eduCardID = EDU_CARD_ID;
//T_FM_NOTIFICATION_TASK sendNotice = null;
userDetailList = new List<T_SE_NEW_USER_DETAIL>();
T_SE_THREE_LEVEL_SAFE_CONTENT train_contents = null;
var basefilter = new BaseFilter(orgId);
var userDetails = GetEntities<T_SE_NEW_USER_DETAIL>(t => t.EDU_CARD_ID == eduCardID, basefilter);
var currDetailT = userDetails.FirstOrDefault(t => t.ID == currID);//不能直接用 故定义中间参数
if (currDetailT != null)
{
if (score != null)
{
currDetailT.SCORE = score;
currDetailT.EXAMINATION_RESULTS = SEExaminationResultsEnum.;
}
currDetailT.STATUS = SEThreeLevelSafeTrainStatus.;
}
var isFinish = userDetails.Count(t => t.NEXT_DEPARTMENT_ID == currDetailT.NEXT_DEPARTMENT_ID && t.STATUS == 0);
eduCard = GetEntity<T_SE_NEW_USERS>(eduCardID);
var currSattus = SEThreeLevelSafeTrainType.;
if (isFinish == 0 && eduCard.TRAIN_STATUS != SEThreeLevelSafeTrainType.)
{
T_FM_USER sendUser = null;
if (eduCard.TRAIN_STATUS == SEThreeLevelSafeTrainType.)
{
sendUser = GetEntity<T_FM_USER>(t => t.DEPARTMENT_ID == currDetailT.NEXT_DEPARTMENT_ID && t.Nav_ApproveRole.NAME == "部门安全员" && t.IS_DELETED == false && t.ENABLE_STATUS == 0);
if (sendUser == null)
{
sendUser = GetEntity<T_FM_USER>(t => t.DEPARTMENT_ID == currDetailT.NEXT_DEPARTMENT_ID && t.Nav_ApproveRole.NAME == "安环部安全员" && t.IS_DELETED == false && t.ENABLE_STATUS == 0);
if (sendUser == null)
{
sendUser = GetEntity<T_FM_USER>(t => t.DEPARTMENT_ID == currDetailT.NEXT_DEPARTMENT_ID && t.Nav_ApproveRole.NAME == "部门负责人" && t.IS_DELETED == false && t.ENABLE_STATUS == 0);
if (sendUser == null)
{
sendUser = GetEntity<T_FM_USER>(t => t.DEPARTMENT_ID == currDetailT.NEXT_DEPARTMENT_ID && t.Nav_ApproveRole.NAME == "车间安全员" && t.IS_DELETED == false && t.ENABLE_STATUS == 0);
if (sendUser == null)
{
sendUser = GetEntity<T_FM_USER>(t => t.DEPARTMENT_ID == currDetailT.NEXT_DEPARTMENT_ID && t.Nav_ApproveRole.NAME == "车间负责人" && t.IS_DELETED == false && t.ENABLE_STATUS == 0);
}
}
}
//currSattus = SEThreeLevelSafeTrainType.部门级;
//train_contents = GetEntity<T_SE_THREE_LEVEL_SAFE_CONTENT>(t => t.THREE_LEVEL_SAFE_TRAIN_TYPE == SEThreeLevelSafeTrainType.部门级);
}
//wyw T_SE_NEW_USERS train_contents 找不到会报错
currSattus = SEThreeLevelSafeTrainType.;
train_contents = GetEntity<T_SE_THREE_LEVEL_SAFE_CONTENT>(t => t.THREE_LEVEL_SAFE_TRAIN_TYPE == SEThreeLevelSafeTrainType.);
}
else if (eduCard.TRAIN_STATUS == SEThreeLevelSafeTrainType.)
{
sendUser = GetEntity<T_FM_USER>(t => t.DEPARTMENT_ID == currDetailT.NEXT_DEPARTMENT_ID && t.Nav_ApproveRole.NAME == "班组负责人" && t.IS_DELETED == false && t.ENABLE_STATUS == 0);
if (sendUser != null)
{
currSattus = SEThreeLevelSafeTrainType.;
train_contents = GetEntity<T_SE_THREE_LEVEL_SAFE_CONTENT>(t => t.THREE_LEVEL_SAFE_TRAIN_TYPE == SEThreeLevelSafeTrainType.);
}
}
if (sendUser != null)
{
newEduCard = new T_SE_NEW_USERS();
newEduCard.ID = Guid.NewGuid();
newEduCard.ORG_ID = orgId;
newEduCard.USER_ID = sendUser.ID;
newEduCard.DEPARTMENT_ID = sendUser.DEPARTMENT_ID;
newEduCard.CONTENT_ID = train_contents.ID;
newEduCard.TRAIN_STATUS = currSattus;
var commonDeptartmentUsers = userDetails.Where(t => t.NEXT_DEPARTMENT_ID == currDetailT.NEXT_DEPARTMENT_ID);
var commonUserIds = commonDeptartmentUsers.Select(t => t.USER_ID);
var userFilter = new BaseFilter(orgId);
userFilter.Include = new string[] { "Nav_Person" };
foreach (var user in commonDeptartmentUsers)
{
T_SE_NEW_USER_DETAIL userDetail = new T_SE_NEW_USER_DETAIL();
userDetail.ID = Guid.NewGuid();
userDetail.CODE = user.CODE;
userDetail.EDU_CARD_ID = newEduCard.ID;
userDetail.USER_ID = user.USER_ID;
userDetail.ID_CARD_NUMBER = user.ID_CARD_NUMBER;
userDetail.ORG_ID = newEduCard.ORG_ID;
userDetail.IN_TIME = user.CREATE_TIME;
userDetail.USER_POST_ID = user.USER_POST_ID;
userDetail.USER_DEPARTMENT_ID = user.USER_DEPARTMENT_ID;
userDetail.EXAMINATION_RESULTS = SEExaminationResultsEnum.;
userDetailList.Add(userDetail);
}
var endTime = DateTime.Now.AddDays(10);
var newEndTime = new DateTime(endTime.Year, endTime.Month, endTime.Day, 23, 59, 59);
sendNotice = NotificationTaskService.InsertUserNoticeTaskModel(DateTime.Now.ToShortDateString() + "-三级安全培训-" + newEduCard.TRAIN_STATUS.GetDescription(), newEduCard.ID, orgId, sendUser.ID, sendUser.NAME, DateTime.Now, newEndTime, 1, "SE062");
}
var isAllDone = userDetails.Count(t => t.STATUS == 0);
if (isAllDone == 0)
{
eduCard.STATUS = SENewUserStatus.;
}
currDetail = currDetailT;
if (sendNotice == null)
{
//wyw 当三级安全教育结束时 为了三级安全卡 签名正常 SE063ShowPrint
currDetail.STATUS = SEThreeLevelSafeTrainStatus.;
}
#endregion
//UnifiedCommit(() =>
//{
// if (eduCard != null)
// UpdateEntityNoCommit(eduCard);
// if (newEduCard != null)
// AddEntityNoCommit(newEduCard);
// if (userDetailList != null)
// BantchAddEntityNoCommit(userDetailList);
// if (currDetail != null)
// UpdateEntityNoCommit(currDetail);
// if (sendNotice != null)
// AddEntityNoCommit(sendNotice);
//});
}
}
//private void CreateNextLevel(Guid ORG_ID, Guid RECORD_ID, Guid TaskID, Guid EDU_CARD_ID, string score)
//{
// #region
// var orgId = ORG_ID;
// var currID = RECORD_ID;
// var taskID = TaskID;
// var eduCardID = EDU_CARD_ID;
// T_FM_NOTIFICATION_TASK sendNotice = null;
// T_SE_NEW_USERS newEduCard = null;
// List<T_SE_NEW_USER_DETAIL> userDetailList = new List<T_SE_NEW_USER_DETAIL>();
// T_SE_THREE_LEVEL_SAFE_CONTENT train_contents = null;
// var basefilter = new BaseFilter(orgId);
// var userDetails = GetEntities<T_SE_NEW_USER_DETAIL>(t => t.EDU_CARD_ID == eduCardID, basefilter);
// var currDetail = userDetails.FirstOrDefault(t => t.ID == currID);
// if (currDetail != null)
// {
// if (score != null)
// {
// currDetail.SCORE = score;
// currDetail.EXAMINATION_RESULTS = SEExaminationResultsEnum.合格;
// }
// currDetail.STATUS = SEThreeLevelSafeTrainStatus.公司培训;
// }
// var isFinish = userDetails.Count(t => t.NEXT_DEPARTMENT_ID == currDetail.NEXT_DEPARTMENT_ID && t.STATUS == 0);
// var eduCard = GetEntity<T_SE_NEW_USERS>(eduCardID);
// var currSattus = SEThreeLevelSafeTrainType.公司级;
// if (isFinish == 0 && eduCard.TRAIN_STATUS != SEThreeLevelSafeTrainType.班组级)
// {
// T_FM_USER sendUser = null;
// if (eduCard.TRAIN_STATUS == SEThreeLevelSafeTrainType.公司级)
// {
// sendUser = GetEntity<T_FM_USER>(t => t.DEPARTMENT_ID == currDetail.NEXT_DEPARTMENT_ID && t.Nav_ApproveRole.NAME == "部门安全员" && t.IS_DELETED == false && t.ENABLE_STATUS == 0);
// if (sendUser == null)
// {
// sendUser = GetEntity<T_FM_USER>(t => t.DEPARTMENT_ID == currDetail.NEXT_DEPARTMENT_ID && t.Nav_ApproveRole.NAME == "安环部安全员" && t.IS_DELETED == false && t.ENABLE_STATUS == 0);
// if (sendUser == null)
// {
// sendUser = GetEntity<T_FM_USER>(t => t.DEPARTMENT_ID == currDetail.NEXT_DEPARTMENT_ID && t.Nav_ApproveRole.NAME == "部门负责人" && t.IS_DELETED == false && t.ENABLE_STATUS == 0);
// if (sendUser == null)
// {
// sendUser = GetEntity<T_FM_USER>(t => t.DEPARTMENT_ID == currDetail.NEXT_DEPARTMENT_ID && t.Nav_ApproveRole.NAME == "车间安全员" && t.IS_DELETED == false && t.ENABLE_STATUS == 0);
// if (sendUser == null)
// {
// sendUser = GetEntity<T_FM_USER>(t => t.DEPARTMENT_ID == currDetail.NEXT_DEPARTMENT_ID && t.Nav_ApproveRole.NAME == "车间负责人" && t.IS_DELETED == false && t.ENABLE_STATUS == 0);
// }
// }
// }
// currSattus = SEThreeLevelSafeTrainType.部门级;
// train_contents = GetEntity<T_SE_THREE_LEVEL_SAFE_CONTENT>(t => t.THREE_LEVEL_SAFE_TRAIN_TYPE == SEThreeLevelSafeTrainType.部门级);
// }
// }
// else if (eduCard.TRAIN_STATUS == SEThreeLevelSafeTrainType.部门级)
// {
// sendUser = GetEntity<T_FM_USER>(t => t.DEPARTMENT_ID == currDetail.NEXT_DEPARTMENT_ID && t.Nav_ApproveRole.NAME == "班组负责人" && t.IS_DELETED == false && t.ENABLE_STATUS == 0);
// if (sendUser != null)
// {
// currSattus = SEThreeLevelSafeTrainType.班组级;
// train_contents = GetEntity<T_SE_THREE_LEVEL_SAFE_CONTENT>(t => t.THREE_LEVEL_SAFE_TRAIN_TYPE == SEThreeLevelSafeTrainType.班组级);
// }
// }
// if (sendUser != null)
// {
// newEduCard = new T_SE_NEW_USERS();
// newEduCard.ID = Guid.NewGuid();
// newEduCard.ORG_ID = orgId;
// newEduCard.USER_ID = sendUser.ID;
// newEduCard.DEPARTMENT_ID = sendUser.DEPARTMENT_ID;
// newEduCard.CONTENT_ID = train_contents.ID;
// newEduCard.TRAIN_STATUS = currSattus;
// var commonDeptartmentUsers = userDetails.Where(t => t.NEXT_DEPARTMENT_ID == currDetail.NEXT_DEPARTMENT_ID);
// var commonUserIds = commonDeptartmentUsers.Select(t => t.USER_ID);
// var userFilter = new BaseFilter(orgId);
// userFilter.Include = new string[] { "Nav_Person" };
// foreach (var user in commonDeptartmentUsers)
// {
// T_SE_NEW_USER_DETAIL userDetail = new T_SE_NEW_USER_DETAIL();
// userDetail.ID = Guid.NewGuid();
// userDetail.CODE = user.CODE;
// userDetail.EDU_CARD_ID = newEduCard.ID;
// userDetail.USER_ID = user.USER_ID;
// userDetail.ID_CARD_NUMBER = user.ID_CARD_NUMBER;
// userDetail.ORG_ID = newEduCard.ORG_ID;
// userDetail.IN_TIME = user.CREATE_TIME;
// userDetail.USER_POST_ID = user.USER_POST_ID;
// userDetail.USER_DEPARTMENT_ID = user.USER_DEPARTMENT_ID;
// userDetail.EXAMINATION_RESULTS = SEExaminationResultsEnum.合格;
// userDetailList.Add(userDetail);
// }
// var endTime = DateTime.Now.AddDays(10);
// var newEndTime = new DateTime(endTime.Year, endTime.Month, endTime.Day, 23, 59, 59);
// sendNotice = NotificationTaskService.InsertUserNoticeTaskModel(DateTime.Now.ToShortDateString() + "-三级安全培训-" + newEduCard.TRAIN_STATUS.GetDescription(), newEduCard.ID, orgId, sendUser.ID, sendUser.NAME, DateTime.Now, newEndTime, 1, "SE062");
// }
// var isAllDone = userDetails.Count(t => t.STATUS == 0);
// if (isAllDone == 0)
// {
// eduCard.STATUS = SENewUserStatus.归档;
// }
// #endregion
// UnifiedCommit(() =>
// {
// if (eduCard != null)
// UpdateEntityNoCommit(eduCard);
// if (newEduCard != null)
// AddEntityNoCommit(newEduCard);
// if (userDetailList != null)
// BantchAddEntityNoCommit(userDetailList);
// if (currDetail != null)
// UpdateEntityNoCommit(currDetail);
// if (sendNotice != null)
// AddEntityNoCommit(sendNotice);
// });
// }
//}
/// <summary>
/// 责任状签订信息获取
/// </summary>
/// <param name="TaskID"></param>
/// <param name="currUser"></param>
/// <param name="currPerson"></param>
/// <param name="departInfo"></param>
/// <param name="signRecord"></param>
/// <param name="signPost"></param>
/// <param name="sendNoticeRef"></param>
public void GetOG001(Guid TaskID, T_FM_USER currUser, T_FM_PERSON currPerson, T_FM_DEPARTMENT departInfo, ref T_OG_SAFE_PDT_SIGNED signRecord, ref T_OG_SAFE_PDT_SIGNED_POST signPost, ref T_FM_NOTIFICATION_TASK sendNoticeRef)
{
// 如果没有继续触发下一级 直接触发 安全生产责任制签订 OG001_SHOWPRINT 如果找不到对应的责任制 就给对应组织安全员(或班长) 触发今日提醒
if (sendNoticeRef == null)
{
var post = GetEntity<T_SC_DEPARTMENT_POST>(t => t.Nav_Dept.DEPARTMENT_ID == currUser.DEPARTMENT_ID && t.DEPOST_ID == currPerson.POST_ID, new string[] { "Nav_Dept.Nav_Post" });
if (post != null)
{
var standardCreate = GetEntity<T_SC_STANDARD_CREATE>(t => t.POST_ID == post.Nav_Dept.POST_ID && t.STATUS == SCSystemEditStatus. && t.FILE_STATUS == SCSystemFileStatus.);
if (standardCreate != null)
{
var chargeUser = GetEntity<T_FM_USER>(t => t.DEPARTMENT_ID == post.Nav_Dept.Nav_Post.DEPARTMENT_ID && t.Nav_Person.POST_ID == post.Nav_Dept.Nav_Post.DEPOST_ID && t.ENABLE_STATUS == 0);
if (chargeUser != null)
{
signRecord = new T_OG_SAFE_PDT_SIGNED
{
ID = Guid.NewGuid(),
ORG_ID = currUser.ORG_ID,
STATUS = (int)PFStandardStatus.Draft,
TRIGGER_TYPE = OGPersonalSignedTriggerType.,
//TRIGGER_TYPE = OGPersonalSignedTriggerType.手动新增,
STANDARD_ID = standardCreate.ID,
FILE_CONTENT = standardCreate.FILE_CONTENT,
DEPARTMENT_ID = currUser.DEPARTMENT_ID,
ANNUAL = DateTime.Now.Year
};
if (chargeUser != null)
{
signRecord.CHARGE_USER_ID = chargeUser.ID;
}
signPost = new T_OG_SAFE_PDT_SIGNED_POST
{
SAFE_PDT_SIGNED_ID = signRecord.ID,
ID = Guid.NewGuid(),
ORG_ID = currUser.ORG_ID,
USER_ID = currUser.ID,
POST_ID = currPerson.POST_ID,
CHARGE_USER_ID = signRecord.CHARGE_USER_ID
};
sendNoticeRef = NotificationTaskService.InsertUserNoticeTaskModel(DateTime.Now.ToShortDateString() + "安全生产责任制个人签订表", signRecord.ID, currUser.ORG_ID, currUser.ID, currUser.NAME, DateTime.Now, DateTime.Now.AddDays(7), 1, "OG001_SHOWPRINT");
}
}
}
else
{
//找不到 责任制
T_FM_USER sendUser = null;
var userApprol = GetEntities<T_FM_USER>(e => e.ENABLE_STATUS == 0 && e.DEPARTMENT_ID.HasValue && e.APPROVE_ROLE_ID.HasValue && e.DEPARTMENT_ID.Value == currUser.DEPARTMENT_ID.Value, null, "Nav_ApproveRole");
if (userApprol != null && userApprol.Count() > 0 && currPerson.POST_ID.HasValue)
{
switch (departInfo.DEPARTMENT_TYPE)//FMDepartmentType 部门=0, 车间=1, 班组=2, 公司=3
{
case 2:
sendUser = userApprol.FirstOrDefault(e => e.Nav_ApproveRole.NAME.Contains("负责人"));
break;
default:
sendUser = userApprol.FirstOrDefault(e => e.Nav_ApproveRole.NAME.Contains("安全"));
break;
}
}
if (sendUser == null)
{
//找不到人只能给她自己做联系人员处理
sendNoticeRef = NotificationTaskService.InsertUserNoticeTaskModel("请联系你所在组织安全员绑定责任制岗位并上传责任状让你签订", TaskID, currUser.ORG_ID, currUser.ID, currUser.NAME, DateTime.Now, DateTime.Now.AddDays(7), (int)FMNoticeTypeEnum., "PF135");
}
else
{
var UserPost = GetEntity<T_FM_USER_POST>(currPerson.POST_ID.Value);
sendNoticeRef = NotificationTaskService.InsertUserNoticeTaskModel("请为《" + currUser.NAME + "" + UserPost.NAME + "》绑定责任制岗位并上传责任状,并让其签订", TaskID, currUser.ORG_ID, sendUser.ID, sendUser.NAME, DateTime.Now, DateTime.Now.AddDays(7), (int)FMNoticeTypeEnum., "PF135");
}
}
}
}
/// <summary>
/// 查询
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
[HttpPost, Route("GetUsers")]
public JsonActionResult<IEnumerable<T_FM_USER>> GetUsers([FromBody] KeywordFilter filter)
{
return SafeExecute<IEnumerable<T_FM_USER>>(() =>
{
return GetEntities<T_SE_NEW_USER_DETAIL_PAPER>(null, filter).Select(it => it.Nav_User).Distinct(it => it.ID).ToList();
});
}
}
}