mh_sms/APT.MicroApi/APT.PP.WebApi/Controllers/Api/TLController.cs

993 lines
51 KiB
C#
Raw Normal View History

2024-01-22 09:17:01 +08:00
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
}
}