检查清单跑批
This commit is contained in:
parent
db6b913f0d
commit
e0f2f6dce3
@ -5743,6 +5743,201 @@ namespace APT.PP.WebApi.Controllers.Api
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 系统管理-检查清单。自动触发检查通知
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pageFilter"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost, Route("CheckSetSync")]
|
||||||
|
public JsonActionResult<bool> CheckSetSync([FromBody] KeywordFilter filter)
|
||||||
|
{
|
||||||
|
return SafeExecute<bool>(() =>
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var dtNow = DateTime.Now;
|
||||||
|
var year = dtNow.Year;
|
||||||
|
var month = dtNow.Month;
|
||||||
|
var day = dtNow.Day;
|
||||||
|
var week = dtNow.DayOfWeek;
|
||||||
|
List<T_SK_PLAN_SET> setList = new List<T_SK_PLAN_SET>();
|
||||||
|
//查配置表,有配才执行
|
||||||
|
var timeSets = GetEntities<T_SK_PLAN_SET>(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList();
|
||||||
|
if (timeSets != null && timeSets.Any())
|
||||||
|
{
|
||||||
|
foreach (var set in timeSets)
|
||||||
|
{
|
||||||
|
switch (set.CHECK_CYCLE)
|
||||||
|
{
|
||||||
|
case SKPLANCHECKFREQUENCYEnum.Year:
|
||||||
|
if (set.MONTH == month && set.DATA == day)
|
||||||
|
{
|
||||||
|
setList.Add(set);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SKPLANCHECKFREQUENCYEnum.HalfYear:
|
||||||
|
if ((set.MONTH == month && set.DATA == day) || ((set.MONTH + 6) == month && (set.DATA + 183) == day))
|
||||||
|
{
|
||||||
|
setList.Add(set);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SKPLANCHECKFREQUENCYEnum.Date:
|
||||||
|
setList.Add(set);
|
||||||
|
break;
|
||||||
|
//case SKPLANCHECKFREQUENCYEnum.Class:
|
||||||
|
// setList.Add(set);
|
||||||
|
break;
|
||||||
|
case SKPLANCHECKFREQUENCYEnum.Week:
|
||||||
|
if (set.WEEKDATA != null && (int)set.WEEKDATA.Value == (int)week)
|
||||||
|
{
|
||||||
|
setList.Add(set);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SKPLANCHECKFREQUENCYEnum.Month:
|
||||||
|
if (set.DATA == day)
|
||||||
|
{
|
||||||
|
setList.Add(set);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SKPLANCHECKFREQUENCYEnum.Quarter:
|
||||||
|
if (set.MONTH == 1)
|
||||||
|
{
|
||||||
|
if ((month == 1 || month == 4 || month == 7 || month == 10) && set.DATA == day)
|
||||||
|
{
|
||||||
|
setList.Add(set);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (set.MONTH == 2)
|
||||||
|
{
|
||||||
|
if ((month == 2 || month == 5 || month == 8 || month == 11) && set.DATA == day)
|
||||||
|
{
|
||||||
|
setList.Add(set);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (set.MONTH == 3)
|
||||||
|
{
|
||||||
|
if ((month == 3 || month == 6 || month == 9 || month == 12) && set.DATA == day)
|
||||||
|
{
|
||||||
|
setList.Add(set);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DateTime dt = DateTime.Now;
|
||||||
|
if (filter.Parameter1 != null)
|
||||||
|
{
|
||||||
|
dt = DateTime.Parse(filter.Parameter1);
|
||||||
|
}
|
||||||
|
List<T_SK_SECURITY_INSPECTION_NOTICE> notices = new List<T_SK_SECURITY_INSPECTION_NOTICE>();
|
||||||
|
List<T_SK_SECURITY_INSPECTION_NOTICE_DETAIL> details = new List<T_SK_SECURITY_INSPECTION_NOTICE_DETAIL>();
|
||||||
|
List<T_FM_NOTIFICATION_TASK> tasks = new List<T_FM_NOTIFICATION_TASK>();
|
||||||
|
var checkSets = GetEntities<T_SK_CHECK_SET>(i => i.IS_AUTO == true, new BaseFilter(filter.OrgId)).ToList();
|
||||||
|
var checkSetIds = checkSets.Select(t => t.ID).ToList();
|
||||||
|
var checkSetUsers= GetEntities<T_SK_CHECK_SET_USER>(i => checkSetIds.Contains(i.CHECK_SET_ID), new BaseFilter(filter.OrgId)).ToList();
|
||||||
|
var contents = GetEntities<T_SK_CHECK_SET_CONTENTS>(i => checkSetIds.Contains(i.CHECK_SET_ID), new BaseFilter(filter.OrgId)).ToList();
|
||||||
|
var users = GetEntities<T_FM_USER>(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList();
|
||||||
|
if (checkSets != null && checkSets.Any())
|
||||||
|
{
|
||||||
|
var baseFilter = new BaseFilter(filter.GetOrgId());
|
||||||
|
baseFilter.IgnoreDataRule = true;
|
||||||
|
baseFilter.SelectField = new string[] { "PRODUCTION_UNIT_ID", "CHECK_TYPE_ID", "APPLY_DEPARTMENT_ID", "APPLY_USER_ID", "PLANCHECKFREQUENCY", "DEPARTMENT_TYPE", "CREATE_TIME" }; //指定字段,包括导航属性
|
||||||
|
Expression<Func<T_SK_SECURITY_INSPECTION_NOTICE, bool>> expression = i => i.IS_DELETED == false && (i.CREATE_TIME.Value.Date == DateTime.Now.Date || i.CREATE_TIME.Value.Date == DateTime.Now.AddDays(-1).Date);
|
||||||
|
List<T_SK_SECURITY_INSPECTION_NOTICE> noticeExsiss = this.GetOrderEntities(expression, baseFilter).ToList();
|
||||||
|
foreach (var set in checkSets)
|
||||||
|
{
|
||||||
|
var setUserIds = checkSetUsers.Where(t => t.CHECK_SET_ID == set.ID).Select(m => m.USER_ID).Distinct().ToList();
|
||||||
|
var timeSet = setList.FirstOrDefault(t => t.PRODUCTION_UNIT_ID == set.PRODUCTION_UNIT_ID && t.CHECK_CYCLE == set.CHECK_CYCLE);
|
||||||
|
var sendUsers = users.Where(t => setUserIds.Contains(t.ID)).ToList();
|
||||||
|
if (sendUsers != null && sendUsers.Any() && timeSet != null && timeSet.CHECKTIME.Value.Hour == dt.Hour)
|
||||||
|
{
|
||||||
|
var j = 1;
|
||||||
|
//触发给检查人
|
||||||
|
foreach (var user in sendUsers)
|
||||||
|
{
|
||||||
|
//判断是否重复触发
|
||||||
|
var exist = noticeExsiss.FirstOrDefault(t => t.APPLY_USER_ID == user.ID && t.DEPARTMENT_TYPE == set.CHECK_TYPE && t.CHECK_TYPE_ID == set.CHECK_TYPE_ID && t.PLANCHECKFREQUENCY == set.CHECK_CYCLE && t.CREATE_TIME.Value.Date == dt.Date);
|
||||||
|
if (exist == null)
|
||||||
|
{
|
||||||
|
T_SK_SECURITY_INSPECTION_NOTICE notice = new T_SK_SECURITY_INSPECTION_NOTICE();
|
||||||
|
notice.ORG_ID = set.ORG_ID;
|
||||||
|
notice.APPLY_USER_ID = user.ID;
|
||||||
|
notice.APPLY_DEPARTMENT_ID = user.DEPARTMENT_ID;
|
||||||
|
notice.PRODUCTION_UNIT_ID = set.PRODUCTION_UNIT_ID;
|
||||||
|
notice.CHECK_TYPE_ID = set.CHECK_TYPE_ID;
|
||||||
|
notice.PLANCHECKFREQUENCY = set.CHECK_CYCLE;
|
||||||
|
notice.DEPARTMENT_TYPE = set.CHECK_TYPE;
|
||||||
|
notice.NOTICE_CODE = "JCXD" + DateTime.Now.ToString("yyyyMMddHH") + j.ToString().PadLeft(4, '0');
|
||||||
|
notices.Add(notice);
|
||||||
|
var checkContents = contents.Where(t => t.CHECK_SET_ID == set.ID).ToList();
|
||||||
|
if (checkContents != null && checkContents.Any())
|
||||||
|
{
|
||||||
|
foreach (var con in checkContents)
|
||||||
|
{
|
||||||
|
T_SK_SECURITY_INSPECTION_NOTICE_DETAIL de = new T_SK_SECURITY_INSPECTION_NOTICE_DETAIL();
|
||||||
|
de.ORG_ID = set.ORG_ID;
|
||||||
|
de.SECURITY_INSPECTION_NOTICE_ID = notice.ID;
|
||||||
|
de.CHECK_CONTENTS_ID = con.CHECK_CONTENTS_ID;
|
||||||
|
de.CHECKCONTENT = con.CHECK_CONTENT;
|
||||||
|
de.CHECKSTANDARD = con.CHECK_STANDARD;
|
||||||
|
de.RISK_AREA_ID = con.AREA_ID;
|
||||||
|
details.Add(de);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var date = DateTime.Now.Year + DateTime.Now.Month.PadLeft(2, '0') + DateTime.Now.AddHours(4).Day.PadLeft(2, '0');
|
||||||
|
var endtime = DateTime.Now.AddHours(24);
|
||||||
|
if (set.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Week)
|
||||||
|
{
|
||||||
|
endtime = DateTime.Now.AddDays(7);
|
||||||
|
}
|
||||||
|
if (set.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Month)
|
||||||
|
{
|
||||||
|
endtime = DateTime.Now.AddMonths(1);
|
||||||
|
}
|
||||||
|
if (set.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.HalfYear)
|
||||||
|
{
|
||||||
|
endtime = DateTime.Now.AddMonths(6);
|
||||||
|
}
|
||||||
|
if (set.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Year)
|
||||||
|
{
|
||||||
|
endtime = DateTime.Now.AddMonths(12);
|
||||||
|
}
|
||||||
|
if (set.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Quarter)
|
||||||
|
{
|
||||||
|
endtime = DateTime.Now.AddMonths(3);
|
||||||
|
}
|
||||||
|
var task = NotificationTaskService.InsertUserNoticeTaskModel(set.CHECK_CYCLE.GetDescription() + "安全检查通知" + date, notice.ID, set.ORG_ID, user.ID, user.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK006");
|
||||||
|
tasks.Add(task);
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
UnifiedCommit(() =>
|
||||||
|
{
|
||||||
|
if (notices != null && notices.Any())
|
||||||
|
BantchSaveEntityNoCommit(notices);
|
||||||
|
if (details != null && details.Any())
|
||||||
|
BantchSaveEntityNoCommit(details);
|
||||||
|
if (tasks != null && tasks.Any())
|
||||||
|
BantchSaveEntityNoCommit(tasks);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(ex.StackTrace))
|
||||||
|
throw new Exception("错误日志:[StackTrace]" + ex.StackTrace);
|
||||||
|
else
|
||||||
|
throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user