mh_sms/APT.MicroApi/APT.PP.WebApi/Controllers/Api/TLController.cs
2024-01-22 09:17:01 +08:00

993 lines
51 KiB
C#
Raw 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 APT.BaseData.Domain.Entities;
using APT.BaseData.Domain.Entities.FM;
using APT.BaseData.Domain.Enums;
using APT.BaseData.Domain.Enums.PF;
using APT.BaseData.Domain.IServices.FM;
using APT.Infrastructure.Core;
using APT.MS.Domain.Entities.TL;
using APT.MS.Domain.Enums;
using APT.Utility;
using APT.WebApi.Models;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
namespace APT.PP.WebApi.Controllers.Api.PP
{
[Route("api/PP/TL")]
[TypeFilter(typeof(CustomActionFilterAttribute))]
public partial class TLController : AuthorizeApiController<T_TL_PLAN_SET>
{
IFMNotificationTaskService NotificationTaskService { get; set; }
IFMUserService UserService { get; set; }
IPFSysLogService SysLogService { get; set; }
IFMSyncLogDetailService SyncLogDetailService { get; set; }
public TLController(IFMNotificationTaskService notificationTaskService, IPFSysLogService sysLogService, IFMUserService userService, IFMSyncLogDetailService syncLogDetailService)
{
NotificationTaskService = notificationTaskService;
SysLogService = sysLogService;
UserService = userService;
SyncLogDetailService = syncLogDetailService;
}
/// <summary>
/// 判断跑批时间是否符合
/// </summary>
/// <param name="RUNSETTIME"></param>
/// <param name="dtNow"></param>
/// <param name="minAdvance"></param>
/// <param name="minLaster"></param>
/// <returns></returns>
private bool ISTimeOK(DateTime? RUNSETTIME, DateTime dtNow, int minAdvance, int minLaster)
{
if (RUNSETTIME == null)
{
return false;
}
if (RUNSETTIME != null)
{
if (minAdvance != 0 || minLaster != 0)
{
//DateTime dtSetTime = Convert.ToDateTime(dtNow.ToString("yyyy") + RUNSETTIME.Value.ToString("-MM-dd HH:mm:ss"));
DateTime dtSetTime = Convert.ToDateTime(dtNow.ToString("yyyy-MM-dd") + RUNSETTIME.Value.ToString(" HH:mm:ss"));
if (minAdvance > 0 && minLaster > 0)
{
if (dtNow.AddMinutes(-1 * minAdvance) <= dtSetTime && dtSetTime <= dtNow.AddMinutes(minLaster))
{
return true;
}
}
else if (minAdvance > 0)
{
if (dtNow.AddMinutes(-1 * minAdvance) <= dtSetTime && dtSetTime <= dtNow)
{
//如果设置时间小于当前时间 并且 设置使劲按大于 当前时间大于当前时间往前偏移分钟数
return true;
}
}
else
{
if (dtNow <= dtSetTime && dtSetTime <= dtNow.AddMinutes(minLaster))
{
//如果 设置时间大于当前时间 并且设置时间小于当前时间往后偏移分钟数
return true;
}
}
}
else
{
if (RUNSETTIME.Value.ToString("HH:mm") == dtNow.ToString("HH:mm"))
{
return true;
}
}
}
return false;
}
/// <summary>
/// 给 某个 部门的 某个岗位 人员 按配置发布 生产作业计划title + 附件)
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
[HttpPost, Route("PlanBegin")]
public JsonActionResult<bool> PlanBegin([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
DateTime dtNow = DateTime.Now;
if (!string.IsNullOrEmpty(filter.Parameter1))
{
try
{
DateTime deParm = Convert.ToDateTime(filter.Parameter1);
dtNow = deParm;
}
catch
{
dtNow = DateTime.Now;
}
}
T_FM_SYNC_TASK task = GetEntity<T_FM_SYNC_TASK>(filter.Keyword);//跑批待办
int min = 10;//10分钟以内
DateTime dtMax = dtNow;
if (task.SYNC_UNIT.HasValue)
{
switch (task.SYNC_UNIT.Value)//秒 = 0, 分 = 1, 时 = 2, 天 = 3,
{
case 1:
min = task.PERIODIC_TIME;
break;
case 2:
min = task.PERIODIC_TIME * 60;
break;
case 3:
min = task.PERIODIC_TIME * 60 * 24;
break;
case 0:
default:
break;
}
}
dtMax = dtMax.AddMinutes(min);
#region
var fileSumCheck = GetEntities<T_TL_FILE_SUM>(e => !e.IS_DELETED && e.CREATE_TIME.HasValue && e.TASK_PLAN_ID.HasValue && e.CREATE_TIME.Value.Date == dtNow.Date, null, null);
List<Guid> listPlanSetID = null;
if (fileSumCheck != null && fileSumCheck.Any())
{
listPlanSetID = fileSumCheck.Select(e => e.TASK_PLAN_ID.Value).ToList();
}
Expression<Func<T_TL_PLAN_SET, bool>> expressionPlan = e => !e.IS_DELETED && e.ENABLE_STATUS == FMEnableStatusEnum.;
if (listPlanSetID != null)
{
expressionPlan = expressionPlan.And(e => !listPlanSetID.Contains(e.ID));
}
#endregion
var listPlanSet = GetEntities(expressionPlan, null, null);
List<T_TL_PLAN_SET> listRun = new List<T_TL_PLAN_SET>();
List<T_TL_WATCH_PLAN_SET> listRunWatch = new List<T_TL_WATCH_PLAN_SET>();
DateTime dtSetTime = DateTime.Now;
//判断跑批时间是否符合
foreach (var item in listPlanSet)
{
dtSetTime = Convert.ToDateTime(dtNow.ToString("yyyy-MM-dd") + item.RUNSETTIME.ToString(" HH:mm:ss"));
if (dtNow <= dtSetTime && dtSetTime <= dtMax)
{
switch (item.PLANCHECKFREQUENCY)
{
case BSPLANCHECKFREQUENCYEnum.None:
#region
if (!string.IsNullOrEmpty(item.RUNDATA))//05-01,10-01
{
List<string> listMMdd = item.RUNDATA.Split(",").ToList();
if (item.RUNDATA.Contains("-"))
{
for (int j = 0; j < listMMdd.Count; j++)
{
try
{
if (!string.IsNullOrEmpty(listMMdd[j]) && (Convert.ToDateTime(dtNow.Year.ToString() + ("-") + listMMdd[j]) == Convert.ToDateTime(dtNow.ToString("yyyy-MM-dd")) || Convert.ToDateTime(dtNow.Year.ToString() + "-" + listMMdd[j]) == Convert.ToDateTime(dtNow.ToString("yyyy-M-d"))))
{
listRun.Add(item);
break;
}
}
catch { }
}
}
else if (item.RUNDATA.Contains("/"))
{
for (int j = 0; j < listMMdd.Count; j++)
{
try
{
if (!string.IsNullOrEmpty(listMMdd[j]) && (Convert.ToDateTime(dtNow.Year.ToString("yyyy/") + listMMdd[j]) == Convert.ToDateTime(dtNow.ToString("yyyy/MM/dd")) || Convert.ToDateTime(dtNow.Year.ToString("yyyy/") + listMMdd[j]) == Convert.ToDateTime(dtNow.ToString("yyyy/M/d"))))
{
listRun.Add(item);
break;
}
}
catch { }
}
}
}
#endregion
break;
case BSPLANCHECKFREQUENCYEnum.Date:
//每日天执行 时间匹配就添加
listRun.Add(item);
break;
case BSPLANCHECKFREQUENCYEnum.Week:
if (item.WEEKDATA != null && (int)dtNow.DayOfWeek == (int)item.WEEKDATA.Value)
{
//星期匹配 DateTime.Now.DayOfWeek Thursday (int)DateTime.Now.DayOfWeek 4
listRun.Add(item);
}
break;
case BSPLANCHECKFREQUENCYEnum.Month:
if (item.DATA != null && item.DATA.Value == dtNow.Day)
{
//日匹配 (季度是季度第一月的某日 刚好也符合)
listRun.Add(item);
}
break;
case BSPLANCHECKFREQUENCYEnum.Quarter:
if (item.DATA != null && item.DATA.Value == dtNow.Day && (dtNow.Month == 1 || dtNow.Month == 4 || dtNow.Month == 7 || dtNow.Month == 10))
{
//日匹配 (季度是季度第一月的某日 刚好也符合)
listRun.Add(item);
}
break;
case BSPLANCHECKFREQUENCYEnum.HalfYear:
if (item.DATA != null && item.DATA.Value == dtNow.Day && (dtNow.Month == 1 || dtNow.Month == 7))
{
//日匹配 (季度是季度第一月的某日 刚好也符合)
listRun.Add(item);
}
break;
case BSPLANCHECKFREQUENCYEnum.Year:
if (item.DATA != null && item.DATA.Value == dtNow.Day && dtNow.Month == 1)
{
//日匹配 (季度是季度第一月的某日 刚好也符合)
listRun.Add(item);
}
break;
default:
break;
}
}
}
#region
var listDayDayly = GetEntities<T_TL_WATCH_DAYLY>(e => !e.IS_DELETED && e.DATE == dtNow.Date && e.PLAN_ID.HasValue, null, null);
var listDayLine = GetEntities<T_TL_WATCH_LINE>(e => !e.IS_DELETED && e.DATE == dtNow.Date && e.PLAN_ID.HasValue, null, null);
var listDayMove = GetEntities<T_TL_WATCH_MOVE>(e => !e.IS_DELETED && e.DATE == dtNow.Date && e.PLAN_ID.HasValue, null, null);
var listDayPercent = GetEntities<T_TL_WATCH_PERCENT>(e => !e.IS_DELETED && e.DATE == dtNow.Date && e.PLAN_ID.HasValue, null, null);
List<Guid> listPlanID = new List<Guid>();
if (listDayDayly != null && listDayDayly.Any())
{
listPlanID.AddRange(listDayDayly.Select(e => e.PLAN_ID.Value));
}
if (listDayLine != null && listDayLine.Any())
{
listPlanID.AddRange(listDayLine.Select(e => e.PLAN_ID.Value));
}
if (listDayMove != null && listDayMove.Any())
{
listPlanID.AddRange(listDayMove.Select(e => e.PLAN_ID.Value));
}
if (listDayPercent != null && listDayPercent.Any())
{
listPlanID.AddRange(listDayPercent.Select(e => e.PLAN_ID.Value));
}
Expression<Func<T_TL_WATCH_PLAN_SET, bool>> expressionWatchPlan = e => e.ENABLE_STATUS == FMEnableStatusEnum.;
if (listPlanID != null && listPlanID.Any())
{
listPlanID = listPlanID.Distinct().ToList();
expressionWatchPlan = expressionWatchPlan.And(e => !listPlanID.Contains(e.ID));
}
var watchPlanSet = GetEntities(expressionWatchPlan, null, null);
if (watchPlanSet != null && watchPlanSet.Any())
{
foreach (var item in watchPlanSet)
{
dtSetTime = Convert.ToDateTime(dtNow.ToString("yyyy-MM-dd") + item.RUNSETTIME.ToString(" HH:mm:ss"));
if (dtNow <= dtSetTime && dtSetTime <= dtMax)
{
switch (item.PLANCHECKFREQUENCY)
{
case BSPLANCHECKFREQUENCYEnum.None:
#region
if (!string.IsNullOrEmpty(item.RUNDATA))//05-01,10-01
{
List<string> listMMdd = item.RUNDATA.Split(",").ToList();
if (item.RUNDATA.Contains("-"))
{
for (int j = 0; j < listMMdd.Count; j++)
{
try
{
if (!string.IsNullOrEmpty(listMMdd[j]) && (Convert.ToDateTime(dtNow.Year.ToString() + ("-") + listMMdd[j]) == Convert.ToDateTime(dtNow.ToString("yyyy-MM-dd")) || Convert.ToDateTime(dtNow.Year.ToString() + "-" + listMMdd[j]) == Convert.ToDateTime(dtNow.ToString("yyyy-M-d"))))
{
listRunWatch.Add(item);
break;
}
}
catch { }
}
}
else if (item.RUNDATA.Contains("/"))
{
for (int j = 0; j < listMMdd.Count; j++)
{
try
{
if (!string.IsNullOrEmpty(listMMdd[j]) && (Convert.ToDateTime(dtNow.Year.ToString("yyyy/") + listMMdd[j]) == Convert.ToDateTime(dtNow.ToString("yyyy/MM/dd")) || Convert.ToDateTime(dtNow.Year.ToString("yyyy/") + listMMdd[j]) == Convert.ToDateTime(dtNow.ToString("yyyy/M/d"))))
{
listRunWatch.Add(item);
break;
}
}
catch { }
}
}
}
#endregion
break;
case BSPLANCHECKFREQUENCYEnum.Date:
//每日天执行 时间匹配就添加
listRunWatch.Add(item);
break;
case BSPLANCHECKFREQUENCYEnum.Week:
if (item.WEEKDATA != null && (int)dtNow.DayOfWeek == (int)item.WEEKDATA.Value)
{
//星期匹配 DateTime.Now.DayOfWeek Thursday (int)DateTime.Now.DayOfWeek 4
listRunWatch.Add(item);
}
break;
case BSPLANCHECKFREQUENCYEnum.Month:
if (item.DATA != null && item.DATA.Value == dtNow.Day)
{
//日匹配 (季度是季度第一月的某日 刚好也符合)
listRunWatch.Add(item);
}
break;
case BSPLANCHECKFREQUENCYEnum.Quarter:
if (item.DATA != null && item.DATA.Value == dtNow.Day && (dtNow.Month == 1 || dtNow.Month == 4 || dtNow.Month == 7 || dtNow.Month == 10))
{
//日匹配 (季度是季度第一月的某日 刚好也符合)
listRunWatch.Add(item);
}
break;
case BSPLANCHECKFREQUENCYEnum.HalfYear:
if (item.DATA != null && item.DATA.Value == dtNow.Day && (dtNow.Month == 1 || dtNow.Month == 7))
{
//日匹配 (季度是季度第一月的某日 刚好也符合)
listRunWatch.Add(item);
}
break;
case BSPLANCHECKFREQUENCYEnum.Year:
if (item.DATA != null && item.DATA.Value == dtNow.Day && dtNow.Month == 1)
{
//日匹配 (季度是季度第一月的某日 刚好也符合)
listRunWatch.Add(item);
}
break;
default:
break;
}
}
}
}
#endregion
if (listRun.Count < 1 && listRunWatch.Count < 1)
{
return true;
}
#region
List<Guid> listDepID = new List<Guid>();
List<Guid> listPostID = new List<Guid>();
if (listRun != null && listRun.Any())
{
listDepID = listRun.Select(e => e.DEPARTMENT_ID).ToList();
listPostID = listRun.Select(e => e.POST_ID).ToList();
}
if (listRunWatch != null && listRunWatch.Any())
{
listDepID.AddRange(listRunWatch.Select(e => e.DEPARTMENT_ID).ToList());
listPostID.AddRange(listRunWatch.Select(e => e.POST_ID).ToList());
}
var listPerson = GetEntities<T_FM_PERSON>(e => e.POST_ID.HasValue && listPostID.Contains(e.POST_ID.Value), null, null);
var listPersonID = listPerson.Select(e => e.ID);
Expression<Func<T_FM_USER, bool>> expression = e => !e.IS_DELETED && e.ENABLE_STATUS == 0 && e.DEPARTMENT_ID.HasValue && e.PERSON_ID.HasValue;
if (listDepID.Count() == 1)
{
var depID = listDepID.ToList()[0];
expression = expression.And(e => e.DEPARTMENT_ID.Value == depID);
}
else
{
expression = expression.And(e => listDepID.Contains(e.DEPARTMENT_ID.Value));
}
if (listPersonID.Count() == 1)
{
var PersonID = listPersonID.ToList()[0];
expression = expression.And(e => e.PERSON_ID.Value == PersonID);
}
else
{
expression = expression.And(e => listPersonID.Contains(e.PERSON_ID.Value));
}
var listUser = GetEntities(expression, null, null);
#endregion
List<T_FM_NOTIFICATION_TASK> listTaskSend = null;
List<T_TL_FILE_SUM> listFileSum = null;
if (listRun.Count > 0)
{
#region Nav_User
foreach (var item in listRun)
{
var usersTemp = listUser.Where(e => e.DEPARTMENT_ID.Value == item.DEPARTMENT_ID);
if (usersTemp != null && usersTemp.Any())
{
var depPersonID = usersTemp.Select(e => e.PERSON_ID.Value);
if (depPersonID != null && depPersonID.Any())
{
var person = listPerson.Where(e => depPersonID.Contains(e.ID) && e.POST_ID.HasValue && e.POST_ID.Value == item.POST_ID);
//var person = usersTemp.Where(e => depPersonID.Contains(e.ID));
if (person != null)
{
var perPersonID = person.Select(e => e.ID);
var userResult = listUser.FirstOrDefault(e => perPersonID.Contains(e.PERSON_ID.Value));
if (userResult != null)
{
item.Nav_User = userResult;
}
}
}
}
}
#endregion
string FormCode = "TL004";
T_TL_FILE_SUM modelFileSum = null;
List<T_TL_FILE_SUM> listSum = new List<T_TL_FILE_SUM>();
string Quency = string.Empty;
string Title = string.Empty;
listRun.ForEach(e =>
{
if (e.Nav_User != null)
{
if (e.PLANCHECKFREQUENCY == BSPLANCHECKFREQUENCYEnum.None)
{
Quency = "";
}
else
{
//请上传下月/季度/年度 生产作业计划及运行图表至文件库。
Quency = e.PLANCHECKFREQUENCY.GetDescription().Substring(1); //每月 => 月 ======> 下月、下季
}
Title = "请上传下" + Quency + "生产作业计划及运行图表至文件库";
modelFileSum = new T_TL_FILE_SUM();
modelFileSum.ID = Guid.NewGuid();
modelFileSum.ORG_ID = filter.OrgId;
modelFileSum.CONTENT = Title;
modelFileSum.DEPARTMENT_ID = e.DEPARTMENT_ID;
modelFileSum.USER_ID = e.Nav_User.ID;
modelFileSum.FILETYPE = FILETYPE.ZYJHJL;
modelFileSum.STATUS = PFStandardStatus.Draft;
modelFileSum.TASK_PLAN_ID = e.ID;
if (listFileSum == null)
{
listFileSum = new List<T_TL_FILE_SUM>();
}
listFileSum.Add(modelFileSum);
if (listTaskSend == null)
{
listTaskSend = new List<T_FM_NOTIFICATION_TASK>();
}
var taskSend = NotificationTaskService.InsertUserNoticeTaskModel(Title, modelFileSum.ID, modelFileSum.ORG_ID, modelFileSum.USER_ID, e.Nav_User.NAME, System.DateTime.Now, 0, FormCode, FMTASKTYPE.Default);
listTaskSend.Add(taskSend);
}
});
}
List<T_TL_WATCH_DAYLY> listDayly = null;
List<T_TL_WATCH_PERCENT> listPercent = null;
List<T_TL_WATCH_LINE> listLine = null;
List<T_TL_WATCH_LINE_DETAIL> listLineDetail = null;
List<T_TL_WATCH_MOVE> listMove = null;
List<T_TL_WATCH_MOVE_DETAIL> listMoveDetail = null;
List<T_TL_WATCH_SUM> listWatchSum = null;//总的 (新增也会进去)
List<T_TL_WATCH_SUM> listWatchSumAdd = null;//需要添加的Model
if (listRunWatch.Count > 0)
{
listWatchSum = GetEntities<T_TL_WATCH_SUM>(e => e.DATE == dtNow.Date, null, null).ToList();
var listTalingID = listRunWatch.Select(e => e.TAILING_ID);
T_TL_WATCH_SUM sumT = null;
foreach (var item in listTalingID)
{
sumT = listWatchSum.FirstOrDefault(e => e.TAILING_ID == item);
if (sumT == null)
{
sumT = new T_TL_WATCH_SUM();
sumT.ID = Guid.NewGuid();
sumT.ORG_ID = filter.OrgId;
sumT.DATE = dtNow.Date;
sumT.TAILING_ID = item;
sumT.TAILING_NAME = listRunWatch.FirstOrDefault(e => e.TAILING_ID == item)?.TAILING_NAME;
if (listWatchSumAdd == null)
{
listWatchSumAdd = new List<T_TL_WATCH_SUM>();
}
listWatchSumAdd.Add(sumT);
listWatchSum.Add(sumT);
}
}
#region
foreach (var item in listRunWatch)
{
var usersTemp = listUser.Where(e => e.DEPARTMENT_ID.Value == item.DEPARTMENT_ID);
if (usersTemp != null && usersTemp.Any())
{
var depPersonID = usersTemp.Select(e => e.PERSON_ID.Value);
if (depPersonID != null && depPersonID.Any())
{
var person = listPerson.Where(e => depPersonID.Contains(e.ID) && e.POST_ID.HasValue && e.POST_ID.Value == item.POST_ID);
if (person != null)
{
var perPersonID = person.Select(e => e.ID);
var userResult = listUser.Where(e => perPersonID.Contains(e.PERSON_ID.Value));
if (userResult != null && userResult.Any())
{
item.Nav_ListUser = userResult.ToList();
}
}
}
}
}
#endregion
#region
string FormCode = string.Empty;
List<Guid> listUserID = new List<Guid>();
List<string> listUserNAME = new List<string>();
foreach (var item in listRunWatch)
{
if (item.Nav_ListUser == null || !item.Nav_ListUser.Any())
{
continue;
}
switch (item.WATCHTYPE)
{
case WatchType.Dayly:
listUserID.Clear();
listUserNAME.Clear();
T_TL_WATCH_DAYLY modelDay = new T_TL_WATCH_DAYLY();
modelDay.ID = Guid.NewGuid();
modelDay.ORG_ID = item.ORG_ID;
modelDay.TAILING_NAME = item.TAILING_NAME;
modelDay.TAILING_ID = item.TAILING_ID;
sumT = listWatchSum.FirstOrDefault(e => e.TAILING_ID == item.TAILING_ID);
modelDay.SUM_ID = sumT.ID;
modelDay.DATE = dtNow.Date;
modelDay.PLAN_ID = item.ID;
modelDay.DEPARTMENT_ID = item.DEPARTMENT_ID;
if (item.Nav_ListUser.Count == 1)
{
modelDay.USER_ID = item.Nav_ListUser.ToList()[0].ID;
}
//modelDay.USER_ID = itemU.ID;
modelDay.STATUS = PFStandardStatus.Draft;
if (listDayly == null)
{
listDayly = new List<T_TL_WATCH_DAYLY>();
}
listDayly.Add(modelDay);
foreach (var itemU in item.Nav_ListUser)
{
listUserID.Add(itemU.ID);
listUserNAME.Add(itemU.NAME);
}
if (listTaskSend == null)
listTaskSend = new List<T_FM_NOTIFICATION_TASK>();
listTaskSend.AddRange(NotificationTaskService.InsertUserNoticeTaskModels("日常观测", modelDay.ID, item.ORG_ID, listUserID, listUserNAME, dtNow, 0, "TL037", FMTASKTYPE.Default));
break;
case WatchType.Pecent:
listUserID.Clear();
listUserNAME.Clear();
T_TL_WATCH_PERCENT modelPercent = new T_TL_WATCH_PERCENT();
modelPercent.ID = Guid.NewGuid();
modelPercent.ORG_ID = item.ORG_ID;
modelPercent.TAILING_NAME = item.TAILING_NAME;
modelPercent.TAILING_ID = item.TAILING_ID;
sumT = listWatchSum.FirstOrDefault(e => e.TAILING_ID == item.TAILING_ID);
modelPercent.SUM_ID = sumT.ID;
modelPercent.DATE = dtNow.Date;
modelPercent.PLAN_ID = item.ID;
modelPercent.DEPARTMENT_ID = item.DEPARTMENT_ID;
if (item.Nav_ListUser.Count == 1)
{
modelPercent.USER_ID = item.Nav_ListUser.ToList()[0].ID;
}
modelPercent.STATUS = PFStandardStatus.Draft;
if (listPercent == null)
listPercent = new List<T_TL_WATCH_PERCENT>();
listPercent.Add(modelPercent);
foreach (var itemU in item.Nav_ListUser)
{
listUserID.Add(itemU.ID);
listUserNAME.Add(itemU.NAME);
}
if (listTaskSend == null)
listTaskSend = new List<T_FM_NOTIFICATION_TASK>();
listTaskSend.AddRange(NotificationTaskService.InsertUserNoticeTaskModels("坡比观测", modelPercent.ID, item.ORG_ID, listUserID, listUserNAME, dtNow, 0, "TL039", FMTASKTYPE.Default));
break;
case WatchType.Move:
listUserID.Clear();
listUserNAME.Clear();
T_TL_WATCH_MOVE modelMove = new T_TL_WATCH_MOVE();
modelMove.ID = Guid.NewGuid();
modelMove.ORG_ID = item.ORG_ID;
modelMove.TAILING_NAME = item.TAILING_NAME;
modelMove.TAILING_ID = item.TAILING_ID;
sumT = listWatchSum.FirstOrDefault(e => e.TAILING_ID == item.TAILING_ID);
modelMove.SUM_ID = sumT.ID;
modelMove.DATE = dtNow.Date;
modelMove.PLAN_ID = item.ID;
modelMove.DEPARTMENT_ID = item.DEPARTMENT_ID;
if (item.Nav_ListUser.Count == 1)
{
modelMove.USER_ID = item.Nav_ListUser.ToList()[0].ID;
}
modelMove.STATUS = PFStandardStatus.Draft;
if (listMove == null)
listMove = new List<T_TL_WATCH_MOVE>();
listMove.Add(modelMove);
var listMovePoints = GetEntities<T_TL_WATCH_MOVE_POINT>(e => !e.IS_DELETED && e.TAILING_ID == item.TAILING_ID, null, null);
if (listMovePoints != null && listMovePoints.Any())
{
foreach (var itemMP in listMovePoints)
{
T_TL_WATCH_MOVE_DETAIL modelMD = new T_TL_WATCH_MOVE_DETAIL();
modelMD.ID = Guid.NewGuid();
modelMD.ORG_ID = modelMove.ORG_ID;
modelMD.TAILING_NAME = modelMove.TAILING_NAME;
modelMD.TAILING_ID = modelMove.TAILING_ID;
modelMD.MOVE_ID = modelMove.ID;
modelMD.SUM_ID = modelMove.SUM_ID;
modelMD.WATCH_MOVE_POINT_ID = itemMP.ID;
if (listMoveDetail == null)
listMoveDetail = new List<T_TL_WATCH_MOVE_DETAIL>();
listMoveDetail.Add(modelMD);
}
}
foreach (var itemU in item.Nav_ListUser)
{
listUserID.Add(itemU.ID);
listUserNAME.Add(itemU.NAME);
}
if (listTaskSend == null)
listTaskSend = new List<T_FM_NOTIFICATION_TASK>();
listTaskSend.AddRange(NotificationTaskService.InsertUserNoticeTaskModels("位移观测", modelMove.ID, item.ORG_ID, listUserID, listUserNAME, dtNow, 0, "TL041", FMTASKTYPE.Default));
break;
case WatchType.Line:
listUserID.Clear();
listUserNAME.Clear();
T_TL_WATCH_LINE modelLine = new T_TL_WATCH_LINE();
modelLine.ID = Guid.NewGuid();
modelLine.ORG_ID = item.ORG_ID;
modelLine.TAILING_NAME = item.TAILING_NAME;
modelLine.TAILING_ID = item.TAILING_ID;
sumT = listWatchSum.FirstOrDefault(e => e.TAILING_ID == item.TAILING_ID);
modelLine.SUM_ID = sumT.ID;
modelLine.DATE = dtNow.Date;
modelLine.PLAN_ID = item.ID;
modelLine.DEPARTMENT_ID = item.DEPARTMENT_ID;
if (item.Nav_ListUser.Count == 1)
{
modelLine.USER_ID = item.Nav_ListUser.ToList()[0].ID;
}
modelLine.STATUS = PFStandardStatus.Draft;
if (listLine == null)
{
listLine = new List<T_TL_WATCH_LINE>();
}
listLine.Add(modelLine);
var listLinePoints = GetEntities<T_TL_WATCH_LINE_POINT>(e => !e.IS_DELETED && e.TAILING_ID == item.TAILING_ID, null, null);
if (listLinePoints != null && listLinePoints.Any())
{
foreach (var itemMP in listLinePoints)
{
T_TL_WATCH_LINE_DETAIL modelMD = new T_TL_WATCH_LINE_DETAIL();
modelMD.ID = Guid.NewGuid();
modelMD.ORG_ID = modelLine.ORG_ID;
modelMD.TAILING_NAME = modelLine.TAILING_NAME;
modelMD.TAILING_ID = modelLine.TAILING_ID;
modelMD.LINE_ID = modelLine.ID;
modelMD.SUM_ID = modelLine.SUM_ID;
modelMD.WATCH_LINE_POINT_ID = itemMP.ID;
if (listLineDetail == null)
listLineDetail = new List<T_TL_WATCH_LINE_DETAIL>();
listLineDetail.Add(modelMD);
}
}
foreach (var itemU in item.Nav_ListUser)
{
listUserID.Add(itemU.ID);
listUserNAME.Add(itemU.NAME);
}
if (listTaskSend == null)
listTaskSend = new List<T_FM_NOTIFICATION_TASK>();
listTaskSend.AddRange(NotificationTaskService.InsertUserNoticeTaskModels("浸润线观测", modelLine.ID, item.ORG_ID, listUserID, listUserNAME, dtNow, 0, "TL043", FMTASKTYPE.Default));
break;
default:
break;
}
}
#endregion
}
if (task != null)
{
task.UPDATE_SUCCES_TIME = DateTime.Now;//上次同步结束时间
task.SYNC_PARAM = "";
}
this.UnifiedCommit(() =>
{
if (task != null)
UpdateEntityNoCommit(task);//跑批信息
if (listTaskSend != null && listTaskSend.Any())//添加待办
BantchSaveEntityNoCommit(listTaskSend);
if (listFileSum != null && listFileSum.Any())//添加待办表单
BantchSaveEntityNoCommit(listFileSum);
if (listWatchSumAdd != null && listWatchSumAdd.Any())//观测汇总
BantchSaveEntityNoCommit(listWatchSumAdd);
if (listDayly != null && listDayly.Any())//日常观测
BantchSaveEntityNoCommit(listDayly);
if (listPercent != null && listPercent.Any())//观测汇总
BantchSaveEntityNoCommit(listPercent);
if (listLine != null && listLine.Any())//浸润线汇总
BantchSaveEntityNoCommit(listLine);
if (listLineDetail != null && listLineDetail.Any())//浸润线汇总
BantchSaveEntityNoCommit(listLineDetail);
if (listMove != null && listMove.Any())//位移观测
BantchSaveEntityNoCommit(listMove);
if (listMoveDetail != null && listMoveDetail.Any())//位移观测
BantchSaveEntityNoCommit(listMoveDetail);
});
int Count = ((listTaskSend != null && listTaskSend.Any()) ? listTaskSend.Count() : 0) + ((listFileSum != null && listFileSum.Any()) ? listFileSum.Count() : 0) + ((listWatchSumAdd != null && listWatchSumAdd.Any()) ? listWatchSumAdd.Count() : 0) + ((listDayly != null && listDayly.Any()) ? listDayly.Count() : 0) + ((listPercent != null && listPercent.Any()) ? listPercent.Count() : 0) + ((listLine != null && listLine.Any()) ? listLine.Count() : 0) + ((listLineDetail != null && listLineDetail.Any()) ? listLineDetail.Count() : 0) + ((listMove != null && listMove.Any()) ? listMove.Count() : 0) + ((listMoveDetail != null && listMoveDetail.Any()) ? listMoveDetail.Count() : 0);
SyncLogDetailService.InsertSyncLogDetail(HttpContext.Items, HttpContext.TraceIdentifier, filter.OrgId, Count, filter.Parameter1, SyncLogType.BSCreateCheckPlanSet);
return true;
});
}
#region
/// <summary>
/// 按回采计划 给值班人员 发送回采记录单TL016
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
[HttpPost, Route("BackPlan")]
public JsonActionResult<bool> BackPlan([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
DateTime dtNow = DateTime.Now;
if (!string.IsNullOrEmpty(filter.Parameter1))
{
try
{
DateTime deParm = Convert.ToDateTime(filter.Parameter1);
dtNow = deParm;
}
catch
{
dtNow = DateTime.Now;
}
}
T_FM_SYNC_TASK task = GetEntity<T_FM_SYNC_TASK>(filter.Keyword);//跑批待办
int min = 10;//10分钟以内
DateTime dtMin = dtNow;
DateTime dtMax = dtNow;
if (task.SYNC_UNIT.HasValue)
{
switch (task.SYNC_UNIT.Value)//秒 = 0, 分 = 1, 时 = 2, 天 = 3,
{
case 1:
min = task.PERIODIC_TIME;
break;
case 2:
min = task.PERIODIC_TIME * 60;
break;
case 3:
min = task.PERIODIC_TIME * 60 * 24;
break;
case 0:
default:
break;
}
}
dtMin = dtMin.AddMinutes(-1 * min);
dtMax = dtMax.AddMinutes(min);
//今天 因为回采计划生成的回采记录
var listRecordCheck = GetEntities<T_TL_BACK_RECORD>(e => e.BACK_DETAIL_ID.HasValue && e.BACKTIME.HasValue && e.BACKTIME.Value.Date == dtNow.Date && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value > dtMin, null, null);
Expression<Func<T_TL_BACK_DETAIL, bool>> expression = e => e.Nav_Back.STATUS == PFStandardStatus.Archived && e.DATESTART.HasValue && e.DATESTART.Value > dtMin && e.DATESTART.Value < dtMax;
if (listRecordCheck != null && listRecordCheck.Any())
{
var listBackDetailID = listRecordCheck.Select(e => e.BACK_DETAIL_ID);
expression = expression.And(e => !listBackDetailID.Contains(e.ID));
}
var listDetail = GetEntities(expression, null, "Nav_Back");
if (listDetail == null || !listDetail.Any())
{
//没有需要执行的信息
return true;
}
//发送回采记录 TL016
var listDetailID = listDetail.Select(e => e.ID);
var listDetailUser = GetEntities<T_TL_BACK_DETAIL_USER>(e => listDetailID.Contains(e.BACK_DETAIL_ID), null, null);
List<T_TL_BACK_RECORD> listRecord = new List<T_TL_BACK_RECORD>();
List<T_FM_NOTIFICATION_TASK> listTask = new List<T_FM_NOTIFICATION_TASK>();//给回采计划值班人(第一个人)添加代办
List<T_TL_BACK_RECORD_USER> listRecordUser = new List<T_TL_BACK_RECORD_USER>();
T_TL_BACK_RECORD model = null;
IEnumerable<T_TL_BACK_DETAIL_USER> iListDetailUser = null;
int IndexDetail = 0;
T_TL_BACK modelBack = null;
var listBackID = listDetail.Select(e => e.BACK_ID);
var listBack = GetEntities<T_TL_BACK>(e => listBackID.Contains(e.ID), null, null);
foreach (var item in listDetail)
{
iListDetailUser = listDetailUser.Where(e => e.BACK_DETAIL_ID == item.ID).OrderByDescending(e => e.ISMAINCHECK);
if (iListDetailUser == null || !iListDetailUser.Any())
{
continue;
}
modelBack = listBack.FirstOrDefault(e => e.ID == item.BACK_ID);
if (modelBack == null)
{
continue;
}
model = new T_TL_BACK_RECORD();
model.ID = Guid.NewGuid();
model.ORG_ID = item.ORG_ID;
model.TAILING_NAME = modelBack.TAILING_NAME;
model.TAILING_ID = modelBack.TAILING_ID;
model.BACKTIME = item.DATESTART;
//model.DEPARTMENT_ID = Guid.Empty;
model.BACK_DETAIL_ID = item.ID;
model.BACKTIMEEND = item.DATEEND;
model.NAME = modelBack.NAME;
IndexDetail = 0;
foreach (var itemU in iListDetailUser)
{
if (IndexDetail == 0)
{
model.USER_ID = itemU.USER_ID;
}
listRecordUser.Add(new T_TL_BACK_RECORD_USER()
{
ID = Guid.NewGuid(),
ORG_ID = item.ORG_ID,
BACK_RECORD_ID = model.ID,
USER_ID = itemU.USER_ID,
ISMAINCHECK = IndexDetail == 0 ? true : false,
ISCHECK = false
});
IndexDetail++;
}
listRecord.Add(model);
}
var listUserID = listRecord.Select(e => e.USER_ID);
var listUser = GetEntities<T_FM_USER>(e => listUserID.Contains(e.ID), null, null);
T_FM_USER modelUser = null;
foreach (var item in listRecord)
{
modelUser = listUser.First(e => e.ID == item.USER_ID);
item.DEPARTMENT_ID = modelUser.DEPARTMENT_ID;
listTask.Add(NotificationTaskService.InsertUserNoticeTaskModel("回采记录", item.ID, item.ORG_ID, item.USER_ID, modelUser.NAME, DateTime.Now, 0, "TL016", FMTASKTYPE.Default));
}
if (task != null)
{
task.UPDATE_SUCCES_TIME = DateTime.Now;//上次同步结束时间
task.SYNC_PARAM = "";
}
this.UnifiedCommit(() =>
{
if (task != null)
UpdateEntityNoCommit(task);//跑批信息
if (listTask != null && listTask.Any())//添加待办
BantchSaveEntityNoCommit(listTask);
if (listRecord != null && listRecord.Any())//添加回采记录
BantchSaveEntityNoCommit(listRecord);
if (listRecordUser != null && listRecordUser.Any())//添加回采记录值班人
BantchSaveEntityNoCommit(listRecordUser);
});
int Count = ((listTask != null && listTask.Any()) ? listTask.Count() : 0) + ((listRecord != null && listRecord.Any()) ? listRecord.Count() : 0) + ((listRecordUser != null && listRecordUser.Any()) ? listRecordUser.Count() : 0);
SyncLogDetailService.InsertSyncLogDetail(HttpContext.Items, HttpContext.TraceIdentifier, filter.OrgId, Count, filter.Parameter1, SyncLogType.BSCreateCheckPlanSet);
return true;
});
}
#endregion
}
}