FIC_Solar/SolarPower/Controllers/OperationController.cs
Kai 73b3802123 1公司使用者 角色 bug fix
2. 運維作業記錄 加入 刪除功能
2021-07-15 10:11:19 +08:00

974 lines
39 KiB
C#

using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using SolarPower.Models;
using SolarPower.Models.Role;
using SolarPower.Repository.Interface;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
namespace SolarPower.Controllers
{
public class OperationController : MyBaseController<OperationController>
{
private readonly IOperationRepository operationRepository;
private string operationRecodeFilePath = "/upload/operation_recode/";
private string operationRecodeSaveAsPath = "";
public OperationController(
IOperationRepository operationRepository) : base()
{
this.operationRepository = operationRepository;
operationRecodeSaveAsPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "upload", "operation_recode");
}
public IActionResult Index()
{
return View();
}
public IActionResult Record()
{
return View("~/Views/Operation/OperationRecord.cshtml");
}
/// <summary>
/// 取得電站Option
/// </summary>
/// <param name="post"></param>
/// <returns></returns>
public async Task<ApiResult<List<PowerStationIdList>>> GetPowerStationSelectOption()
{
ApiResult<List<PowerStationIdList>> apiResult = new ApiResult<List<PowerStationIdList>>();
try
{
var PowerStationIdLists = new List<PowerStationIdList>();
PowerStationIdLists = await operationRepository.GetPowerStationIdList(myUser.Id);
apiResult.Code = "0000";
apiResult.Data = PowerStationIdLists;
}
catch (Exception exception)
{
apiResult.Code = "9999";
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
}
apiResult.Msg = errorCode.GetString(apiResult.Code);
return apiResult;
}
/// <summary>
/// 儲存計畫
/// </summary>
/// <param name="post"></param>
/// <returns></returns>
public async Task<ApiResult<string>> SaveOperationPlan(OperationCreatePlanModal post)
{
ApiResult<string> apiResult = new ApiResult<string>();
try
{
if(Convert.ToDateTime(post.StartTime) < Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")))
{
apiResult.Msg = "開始時間不能選擇過去";
apiResult.Code = "0099";
return apiResult;
}
if (post.Id == 0)
{
var now = DateTime.Now.ToString("yyyy-MM-dd");
var finalid = await operationRepository.GetCurrentSerialNumber("operation_plan_create", $"PowerStationId = {post.PowerStationId} AND CreatedAt LIKE '%{now}%'");
var newSerialNumber = GetLastSerialNumber(finalid);
var OperationPlan = new OperationCreatePlan()
{
EmailType = post.EmailType,
ScheduleNum = post.ScheduleNum,
Description = post.Description,
WorkDay = post.WorkDay,
ScheduleType = post.ScheduleType,
SerialNumber = newSerialNumber,
StartTime = post.StartTime,
PowerStationId = post.PowerStationId,
Type = post.Type,
PlanId = DateTime.Now.ToString("yyyyMMdd") + newSerialNumber,
CreatedBy = myUser.Id
};
List<string> properties = new List<string>()
{
"EmailType",
"ScheduleNum",
"Description",
"WorkDay",
"ScheduleType",
"SerialNumber",
"StartTime",
"PowerStationId",
"Type",
"PlanId",
"CreatedBy"
};
if(post.StartTime == DateTime.Now.ToString("yyyy-MM-dd"))
{
string endtime = "";
switch (post.ScheduleType)
{
case 0:
endtime = (Convert.ToDateTime(post.StartTime).AddDays(post.ScheduleNum)).ToString("yyyy-MM-dd 00:00:00");break;
case 1:
endtime = (Convert.ToDateTime(post.StartTime).AddDays(post.ScheduleNum * 7)).ToString("yyyy-MM-dd 00:00:00"); break;
case 2:
endtime = (Convert.ToDateTime(post.StartTime).AddMonths(post.ScheduleNum)).ToString("yyyy-MM-dd 00:00:00"); break;
case 3:
endtime = (Convert.ToDateTime(post.StartTime).AddMonths(post.ScheduleNum * 3)).ToString("yyyy-MM-dd 00:00:00"); break;
case 4:
endtime = (Convert.ToDateTime(post.StartTime).AddYears(post.ScheduleNum * 3)).ToString("yyyy-MM-dd 00:00:00"); break;
}
var record = new PlanToRecord()
{
WorkType = post.Type,
PowerStationId = post.PowerStationId,
StartTime = post.StartTime,
CreatedBy = myUser.Id,
EndTime = endtime
};
List<string> properties2 = new List<string>()
{
"WorkType",
"PowerStationId",
"StartTime",
"CreatedBy",
"EndTime"
};
OperationPlan.LastCreateTime = DateTime.Now.ToString("yyyy-MM-dd 00:00:00");
properties.Add("LastCreateTime");
await operationRepository.AddToRecord(record, properties2);
}
await operationRepository.AddOperationPlan(OperationPlan, properties);
apiResult.Code = "0000";
apiResult.Msg = "新增成功";
}
else
{
var OperationPlan = new OperationCreatePlan()
{
Id = post.Id,
EmailType = post.EmailType,
ScheduleNum = post.ScheduleNum,
Description = post.Description,
WorkDay = post.WorkDay,
ScheduleType = post.ScheduleType,
StartTime = post.StartTime,
PowerStationId = post.PowerStationId,
Type = post.Type,
UpdatedBy = myUser.Id
};
List<string> properties = new List<string>()
{
"Id",
"EmailType",
"ScheduleNum",
"Description",
"WorkDay",
"ScheduleType",
"StartTime",
"PowerStationId",
"Type",
"UpdatedBy"
};
if (post.StartTime == DateTime.Now.ToString("yyyy-MM-dd"))
{
string endtime = "";
switch (post.ScheduleType)
{
case 0:
endtime = (Convert.ToDateTime(post.StartTime).AddDays(post.ScheduleNum)).ToString("yyyy-MM-dd 00:00:00"); break;
case 1:
endtime = (Convert.ToDateTime(post.StartTime).AddDays(post.ScheduleNum * 7)).ToString("yyyy-MM-dd 00:00:00"); break;
case 2:
endtime = (Convert.ToDateTime(post.StartTime).AddMonths(post.ScheduleNum)).ToString("yyyy-MM-dd 00:00:00"); break;
case 3:
endtime = (Convert.ToDateTime(post.StartTime).AddMonths(post.ScheduleNum * 3)).ToString("yyyy-MM-dd 00:00:00"); break;
case 4:
endtime = (Convert.ToDateTime(post.StartTime).AddYears(post.ScheduleNum * 3)).ToString("yyyy-MM-dd 00:00:00"); break;
}
var record = new PlanToRecord()
{
WorkType = post.Type,
PowerStationId = post.PowerStationId,
StartTime = post.StartTime,
CreatedBy = myUser.Id,
EndTime = endtime
};
List<string> properties2 = new List<string>()
{
"WorkType",
"PowerStationId",
"StartTime",
"CreatedBy",
"EndTime"
};
OperationPlan.LastCreateTime = DateTime.Now.ToString("yyyy-MM-dd 00:00:00");
properties.Add("LastCreateTime");
await operationRepository.AddToRecord(record, properties2);
}
await operationRepository.UpdateOperationPlan(OperationPlan, properties);
apiResult.Code = "0000";
apiResult.Msg = "編輯成功";
}
}
catch (Exception exception)
{
apiResult.Code = "9999";
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
}
apiResult.Msg = errorCode.GetString(apiResult.Code);
return apiResult;
}
/// <summary>
/// 定時計畫datatable
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public async Task<ActionResult> OperationPlanTable(List<int> id, int type)
{
List<OperationPlanTable> OperationPlanTable = new List<OperationPlanTable>();
ApiResult<List<OperationPlanTable>> apiResult = new ApiResult<List<OperationPlanTable>>();
try
{
apiResult.Code = "0000";
OperationPlanTable = await operationRepository.OperationPlanTable(id, type);
foreach (OperationPlanTable a in OperationPlanTable)
{
if (a.Type == 0)
{
a.TypeName = "清洗";
}
else
{
a.TypeName = "巡檢";
}
if (a.ScheduleType == 0)
{
a.Schedule = "每" + a.ScheduleNum.ToString() + "天";
}
else if (a.ScheduleType == 1)
{
a.Schedule = "每" + a.ScheduleNum.ToString() + "周";
}
else if (a.ScheduleType == 2)
{
a.Schedule = "每" + a.ScheduleNum.ToString() + "月";
}
else if (a.ScheduleType == 3)
{
a.Schedule = "每" + a.ScheduleNum.ToString() + "季";
}
else if (a.ScheduleType == 4)
{
a.Schedule = "每" + a.ScheduleNum.ToString() + "年";
}
a.StartTimeString = a.StartTime;
var crst = a.CreatedAt.Split(" ");
a.CreateTimeString = crst[0];
if (a.EmailType == 0)
{
a.EmailTypeName = "當天";
}
else if (a.EmailType == 1)
{
a.EmailTypeName = "前一天";
}
else if (a.EmailType == 2)
{
a.EmailTypeName = "前兩天";
}
else if (a.EmailType == 3)
{
a.EmailTypeName = "前三天";
}
a.Function = @"
<button type='button' class='btn btn-primary btn-pills waves-effect waves-themed edit-btn'>修改</button>
<button type='button' class='btn btn-danger btn-pills waves-effect waves-themed del-btn'>刪除</button>";
}
apiResult.Data = OperationPlanTable;
}
catch (Exception exception)
{
apiResult.Code = "9999";
apiResult.Msg = exception.ToString();
}
var result = Json(new
{
data = apiResult
});
return result;
}
/// <summary>
/// 刪除定時計畫
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
public async Task<ApiResult<string>> DeleteOneOperationPlan(int Id)
{
ApiResult<string> apiResult = new ApiResult<string>();
OperationCreatePlan operation = new OperationCreatePlan();
try
{
operation = await operationRepository.GetOneOperation(Id);
if (operation == null)
{
apiResult.Code = "9998";
apiResult.Msg = errorCode.GetString(apiResult.Code);
return apiResult;
}
await operationRepository.DeleteOneByIdWithCustomTable(Id, "operation_plan_create");
apiResult.Code = "0000";
apiResult.Msg = "刪除成功";
}
catch (Exception exception)
{
apiResult.Code = "9999";
apiResult.Msg = errorCode.GetString(apiResult.Code);
Logger.LogError("【" + controllerName + "/" + actionName + "】" + "Id=" + Id);
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
}
return apiResult;
}
public async Task<ApiResult<OperationCreatePlan>> GetOneOperationPlan(int Id)
{
ApiResult<OperationCreatePlan> apiResult = new ApiResult<OperationCreatePlan>();
OperationCreatePlan operationCreatePlan = new OperationCreatePlan();
try
{
apiResult.Code = "0000";
operationCreatePlan = await operationRepository.GetOneOperation(Id);
apiResult.Data = operationCreatePlan;
}
catch (Exception exception)
{
apiResult.Code = "9999";
apiResult.Msg = exception.ToString();
Logger.LogError("【" + controllerName + "/" + actionName + "】" + "Id=" + Id);
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
}
return apiResult;
}
/// <summary>
/// 運維作業記錄列表
/// </summary>
/// <param name="post"></param>
/// <returns></returns>
[HttpPost]
public async Task<ActionResult> OperationRecodeListAsync(PostOperationRecodeFilter post)
{
ApiResult<List<OperationRecodeDataTable>> apiResult = new ApiResult<List<OperationRecodeDataTable>>();
int totalRecords = 0; //總資料筆數
int recFilter = 0; //過濾後資料筆數
List<OperationRecodeDataTable> recodes = null;
try
{
recodes = await operationRepository.GetAllRecodeByFilterAsync(post);
foreach (var recode in recodes)
{
if (string.IsNullOrEmpty(recode.FormId))
{
recode.FormId = @$"<a href='javascript:;' class='btn btn-success waves-effect waves-themed mb-3 mr-2 edit-btn'>填寫表單</a>";
}
else
{
recode.FormId = @$"<a href='javascript:;' class='waves-effect waves-themed mb-3 mr-2 edit-btn'>{recode.FormId}</a>";
}
if (recode.RecodeFiles != null && recode.RecodeFiles.Count > 0)
{
foreach (var file in recode.RecodeFiles)
{
file.FileName = Path.Combine(operationRecodeFilePath, recode.Id.ToString()) + "/" + file.FileName;
}
}
}
totalRecords = recodes.Count();
recFilter = recodes.Count();
apiResult.Code = "0000";
apiResult.Data = recodes;
}
catch (Exception exception)
{
apiResult.Code = "9999";
string json = System.Text.Json.JsonSerializer.Serialize(post);
Logger.LogError("【" + controllerName + "/" + actionName + "】" + json);
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
}
apiResult.Msg = errorCode.GetString(apiResult.Code);
var result = Json(new
{
recordsTotal = totalRecords,
recordsFiltered = recFilter,
data = apiResult
});
return result;
}
/// <summary>
/// 取得單一運維作業記錄列表
/// </summary>
/// <param name="post"></param>
/// <returns></returns>
[HttpPost]
public async Task<ApiResult<OperationRecode>> GetOneOperationRecode(int id)
{
ApiResult<OperationRecode> apiResult = new ApiResult<OperationRecode>();
OperationRecode operationRecode;
try
{
//if (!IsPlatformLayer(myUser.Role.Layer))
//{ //如果只是身分公司管理員 或 公司使用者,就只能看自己公司的資料
// post.SelectedCompanyId = myUser.CompanyId;
//}
operationRecode = await operationRepository.GetOneOperationRecodeAsync(id);
if (operationRecode == null)
{
apiResult.Code = "9989";
apiResult.Msg = errorCode.GetString(apiResult.Code);
return apiResult;
}
foreach (var recodeFile in operationRecode.RecodeFiles)
{
recodeFile.FileName = Path.Combine(operationRecodeFilePath, operationRecode.Id.ToString()) + "/" + recodeFile.FileName;
}
apiResult.Code = "0000";
apiResult.Data = operationRecode;
}
catch (Exception exception)
{
apiResult.Code = "9999";
apiResult.Msg = errorCode.GetString(apiResult.Code);
Logger.LogError("【" + controllerName + "/" + actionName + "】" + "Id=" + id);
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
}
return apiResult;
}
/// <summary>
/// 新增 維修單 / 修改運維作業記錄
/// </summary>
/// <param name="post"></param>
/// <returns></returns>
public async Task<ApiResult<OperationRecode>> SaveOperationRecode([FromForm] PostOperationRecode post)
{
ApiResult<OperationRecode> apiResult = new ApiResult<OperationRecode>();
OperationRecode operationRecode = null;
try
{
operationRecode = await operationRepository.GetOneOperationRecodeAsync(post.Id);
//取得運維作業記錄最後流水號
var currentSerialNumber = await operationRepository.GetCurrentSerialNumber("operation_record");
if (operationRecode == null)
{
if (post.Id != 0)
{
apiResult.Code = "9989";
apiResult.Msg = errorCode.GetString(apiResult.Code);
return apiResult;
}
#region -
var tempSerialNumber = GetLastSerialNumber(currentSerialNumber);
var finishTime = string.Empty;
if (post.Status == (int)OperationRecodeStatusEnum.Complete)
{
finishTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}
operationRecode = new OperationRecode()
{
FormId = "op" + DateTime.Now.ToString("yyyyMMdd") + tempSerialNumber,
SerialNumber = tempSerialNumber,
PowerStationId = post.PowerStationId,
WorkType = (int)OperationRecodeWorkTypeEnum.Fix,
ErrorCode = post.ErrorCode,
FixDo = post.FixDo,
Status = post.Status,
WorkPersonId = post.WorkPersonId,
FinishTime = finishTime,
WorkTime = post.WorkTime,
Notice = post.Notice,
Description = post.Description,
CreatedBy = myUser.Id
};
List<string> properties = new List<string>()
{
"FormId",
"SerialNumber",
"PowerStationId",
"WorkType",
"ErrorCode",
"FixDo",
"Status",
"WorkPersonId",
"FinishTime",
"WorkTime",
"Notice",
"Description",
"CreatedBy"
};
var id = await operationRepository.AddOneOperationRecodeAsync(operationRecode, properties);
apiResult.Code = "0000";
apiResult.Msg = "儲存成功";
#endregion
}
else
{
#region
var finishTime = string.Empty;
if (post.Status == (int)OperationRecodeStatusEnum.Complete)
{
finishTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}
if (operationRecode.WorkType != (int)OperationRecodeWorkTypeEnum.Fix)
{ //針對清洗、巡檢
var now = DateTime.Now;
var startTime = DateTime.Parse(post.StartTime + " 00:00:00");
var endTime = DateTime.Parse(post.EndTime + " 23:59:59");
if (now > endTime)
{
if (post.Status == (int)OperationRecodeStatusEnum.NoneComplete)
{ //超過時間修改成 未完成-過期
post.Status = (int)OperationRecodeStatusEnum.NoneCompleteExpired;
}
else if (post.Status == (int)OperationRecodeStatusEnum.Complete)
{ //超過時間修改成 完成-過期
post.Status = (int)OperationRecodeStatusEnum.CompleteExpired;
}
}
}
UpdateOperationRecode update = new UpdateOperationRecode()
{
Id = post.Id,
ErrorCode = post.ErrorCode,
FixDo = post.FixDo,
Status = post.Status,
FinishTime = !string.IsNullOrEmpty(finishTime) ? finishTime : null,
WorkPersonId = post.WorkPersonId,
WorkTime = post.WorkTime,
Notice = post.Notice,
Description = post.Description,
UpdatedBy = myUser.Id
};
List<string> properties = new List<string>()
{
"Id",
"ErrorCode",
"FixDo",
"Status",
"FinishTime",
"WorkTime",
"Notice",
"Description",
"WorkPersonId",
"UpdatedBy",
};
if (string.IsNullOrEmpty(operationRecode.FormId))
{
var tempSerialNumber = GetLastSerialNumber(currentSerialNumber);
update.FormId = "op" + DateTime.Now.ToString("yyyyMMdd") + tempSerialNumber;
update.SerialNumber = tempSerialNumber;
properties.Add("FormId");
properties.Add("SerialNumber");
}
await operationRepository.UpdateOperationRecodeAsync(update, properties);
apiResult.Code = "0000";
apiResult.Msg = "儲存成功";
#endregion
}
}
catch (Exception exception)
{
apiResult.Code = "9999";
apiResult.Msg = errorCode.GetString(apiResult.Code);
string json = System.Text.Json.JsonSerializer.Serialize(post);
Logger.LogError("【" + controllerName + "/" + actionName + "】" + json);
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
}
return apiResult;
}
public async Task<ApiResult<string>> DeleteOneOperationRecode(int id)
{
ApiResult<string> apiResult = new ApiResult<string>();
try
{
var operationRecode = await operationRepository.GetOneOperationRecodeAsync(id);
if (operationRecode == null)
{
apiResult.Code = "9989";
apiResult.Msg = errorCode.GetString(apiResult.Code);
return apiResult;
}
await operationRepository.DeleteOneOperationRecodeAsync(id);
apiResult.Code = "0000";
apiResult.Msg = "刪除成功";
}
catch (Exception exception)
{
apiResult.Code = "9999";
apiResult.Msg = errorCode.GetString(apiResult.Code);
Logger.LogError("【" + controllerName + "/" + actionName + "】" + "Id=" + id);
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
}
return apiResult;
}
/// <summary>
/// 儲存運維作業記錄檔案
/// </summary>
/// <param name="post"></param>
/// <returns></returns>
[HttpPost]
public async Task<ApiResult<OperationRecode>> SaveOperationRecodeFile([FromForm] PostOperationRecode post)
{
ApiResult<OperationRecode> apiResult = new ApiResult<OperationRecode>();
OperationRecode operationRecode = null;
try
{
operationRecode = await operationRepository.GetOneOperationRecodeAsync(post.Id);
if (operationRecode == null)
{
apiResult.Code = "9989";
apiResult.Msg = errorCode.GetString(apiResult.Code);
return apiResult;
}
#region
List<OperationRecodeFile> operationRecodeFiles;
if (post.RecodeFiles != null && post.RecodeFiles.Length > 0)
{
FolderFunction folderFunction = new FolderFunction();
var fileSaveAsPath = Path.Combine(operationRecodeSaveAsPath, operationRecode.Id.ToString());
folderFunction.CreateFolder(fileSaveAsPath, 0);
operationRecodeFiles = new List<OperationRecodeFile>();
foreach (var file in post.RecodeFiles)
{
var split = file.FileName.Split(".");
var fileName = Guid.NewGuid() + "." + split[split.Length - 1];
var fullPath = Path.Combine(fileSaveAsPath, fileName);
using (var stream = new FileStream(fullPath, FileMode.Create))
{
file.CopyTo(stream);
}
OperationRecodeFile operationRecodeFile = new OperationRecodeFile()
{
RecordId = operationRecode.Id,
FileName = fileName,
CreatedBy = myUser.Id
};
operationRecodeFiles.Add(operationRecodeFile);
}
List<string> fileProperties = new List<string>()
{
"RecordId",
"FileName",
"CreatedBy"
};
await operationRepository.AddOperationRecodeFilesAsync(operationRecodeFiles, fileProperties);
}
#endregion
apiResult.Code = "0000";
apiResult.Msg = "儲存成功";
}
catch (Exception exception)
{
apiResult.Code = "9999";
apiResult.Msg = errorCode.GetString(apiResult.Code);
string json = System.Text.Json.JsonSerializer.Serialize(post);
Logger.LogError("【" + controllerName + "/" + actionName + "】" + json);
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
}
return apiResult;
}
public async Task<ApiResult<string>> DeleteOperationRecodeFile(PostOperationRecodeIdAndSelectedId post)
{
ApiResult<string> apiResult = new ApiResult<string>();
OperationRecode operationRecode = null;
OperationRecodeFile operationRecodeFile = null;
try
{
operationRecode = await operationRepository.GetOneOperationRecodeAsync(post.ReocdeId);
if (operationRecode == null)
{
apiResult.Code = "9989";
apiResult.Msg = errorCode.GetString(apiResult.Code);
return apiResult;
}
operationRecodeFile = await operationRepository.GetOneOperationRecodeFileAsync(post.SelectedId);
if (operationRecodeFile == null)
{
apiResult.Code = "9987";
apiResult.Msg = errorCode.GetString(apiResult.Code);
return apiResult;
}
await operationRepository.DeleteOneOperationRecodeFile(post.SelectedId);
apiResult.Code = "0000";
apiResult.Msg = "刪除成功";
}
catch (Exception exception)
{
apiResult.Code = "9999";
apiResult.Msg = errorCode.GetString(apiResult.Code);
string json = System.Text.Json.JsonSerializer.Serialize(post);
Logger.LogError("【" + controllerName + "/" + actionName + "】" + json);
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
}
return apiResult;
}
public async Task<ApiResult<List<OperationRecodeDataTable>>> ExportOperationRecodeExcel(PostOperationRecodeFilter post)
{
ApiResult<List<OperationRecodeDataTable>> apiResult = new ApiResult<List<OperationRecodeDataTable>>();
List<OperationRecodeDataTable> recodes = null;
try
{
//if (!IsPlatformLayer(myUser.Role.Layer))
//{ //如果只是身分公司管理員 或 公司使用者,就只能看自己公司的資料
// post.SelectedCompanyId = myUser.CompanyId;
//}
recodes = await operationRepository.GetAllRecodeByFilterAsync(post);
foreach (var recode in recodes)
{
recode.PowerStationName = !string.IsNullOrEmpty(recode.PowerStationName) ? recode.PowerStationName : "";
recode.FormId = !string.IsNullOrEmpty(recode.FormId) ? recode.FormId : "";
recode.FixDo = !string.IsNullOrEmpty(recode.FixDo) ? recode.FixDo : "";
recode.WorkPersonName = !string.IsNullOrEmpty(recode.WorkPersonName) ? recode.WorkPersonName : "";
//recode.FinishTime = !string.IsNullOrEmpty(recode.FinishTime) ? recode.FinishTime : "";
if (recode.RecodeFiles != null && recode.RecodeFiles.Count > 0)
{
foreach (var file in recode.RecodeFiles)
{
var hyperLink = "<a href='" + baseURL + file.FileName + "'>" + file.FileName + "</a>";
if(recode.HyperLinks == null)
{
recode.HyperLinks = new List<string>();
}
recode.HyperLinks.Add(hyperLink);
}
}
}
apiResult.Code = "0000";
apiResult.Data = recodes;
}
catch (Exception exception)
{
apiResult.Code = "9999";
string json = System.Text.Json.JsonSerializer.Serialize(post);
Logger.LogError("【" + controllerName + "/" + actionName + "】" + json);
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
}
apiResult.Msg = errorCode.GetString(apiResult.Code);
return apiResult;
}
public async void Schedule ()
{
try {
var getTime = await operationRepository.GetOperationSchedules();
foreach(OperationCreatePlanModal a in getTime)
{
DateTime Updatedtime;
if (a.ScheduleType == 0)//日
{
Updatedtime = Convert.ToDateTime(a.StartTime).AddDays(a.ScheduleNum);
}
else if(a.ScheduleType == 1)//周
{
Updatedtime = Convert.ToDateTime(a.StartTime).AddDays(a.ScheduleNum * 7);
}
else if (a.ScheduleType == 2)//月
{
Updatedtime = Convert.ToDateTime(a.StartTime).AddMonths(a.ScheduleNum);
}
else if (a.ScheduleType == 3)//季
{
Updatedtime = Convert.ToDateTime(a.StartTime).AddMonths(a.ScheduleNum * 3);
}
else // 年
{
Updatedtime = Convert.ToDateTime(a.StartTime).AddYears(a.ScheduleNum);
}
if (Updatedtime < DateTime.Now)
{
var now = DateTime.Now.ToString("yyyy-MM-dd");
var finalid = await operationRepository.GetCurrentSerialNumber("operation_plan_create", $"PowerStationId = {a.PowerStationId} AND CreatedAt LIKE '%{now}%'");
var newSerialNumber = GetLastSerialNumber(finalid);
var OperationPlan = new OperationCreatePlan()
{
EmailType = a.EmailType,
ScheduleNum = a.ScheduleNum,
Description = a.Description,
WorkDay = a.WorkDay,
ScheduleType = a.ScheduleType,
SerialNumber = newSerialNumber,
StartTime = Updatedtime.ToString("yyyy-MM-dd hh:mm:ss"),
PowerStationId = a.PowerStationId,
Type = a.Type,
PlanId = DateTime.Now.ToString("yyyyMMdd") + newSerialNumber,
CreatedBy = myUser.Id
};
List<string> properties = new List<string>()
{
"EmailType",
"ScheduleNum",
"Description",
"WorkDay",
"ScheduleType",
"SerialNumber",
"StartTime",
"PowerStationId",
"Type",
"PlanId",
"CreatedBy"
};
await operationRepository.AddOperationPlan(OperationPlan, properties);
var record = new PlanToRecord()
{
WorkType = a.Type,
PowerStationId = a.PowerStationId,
StartTime = Updatedtime.ToString("yyyy-MM-dd hh:mm:ss"),
CreatedBy = myUser.Id,
EndTime = Updatedtime.AddDays(a.WorkDay).ToString("yyyy-MM-dd hh:mm:ss")
};
List<string> properties2 = new List<string>()
{
"WorkType",
"PowerStationId",
"StartTime",
"CreatedBy",
"EndTime"
};
await operationRepository.AddToRecord(record, properties2);
var operation = await operationRepository.GetOneOperation(a.Id);
await operationRepository.DeleteOneByIdWithCustomTable(a.Id, "operation_plan_create");
}
}
}
catch (Exception exception)
{
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
}
}
}
}