mh_jy_safe/APT.MicroApi/APT.SC.WebApi/Controllers/Api/SEController/SENewUsers.cs
2025-08-25 09:56:57 +08:00

925 lines
51 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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();
});
}
}
}