[webApi] 運維作業
This commit is contained in:
		
							parent
							
								
									263db72b35
								
							
						
					
					
						commit
						de5fd33279
					
				@ -140,7 +140,7 @@ namespace FrontendWebApi.ApiControllers
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                var sqlString = @$"UPDATE graph_manage SET deleted = 0 WHERE code = @code AND sub_system_tag = @sub_system_tag AND main_system_tag = @main_system_tag";
 | 
			
		||||
                var sqlString = @$"UPDATE graph_manage SET deleted = 1 WHERE code = @code AND sub_system_tag = @sub_system_tag AND main_system_tag = @main_system_tag";
 | 
			
		||||
 | 
			
		||||
                var param = new { @code = gi.code, @sub_system_tag = gi.sub_system_tag, @main_system_tag = gi.main_system_tag };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -56,8 +56,8 @@ namespace FrontendWebApi.ApiControllers
 | 
			
		||||
                ControllerContext.HttpContext.Response.Headers.Add("Access-Control-Allow-Origin", "*");
 | 
			
		||||
                EDFunction eDFunction = new EDFunction();
 | 
			
		||||
 | 
			
		||||
                //string SHA256Pwd = eDFunction.GetSHA256Encryption(login.password);
 | 
			
		||||
                var User = await backendRepository.GetOneAsync<User>("userinfo", @$"account = '{login.account}' and deleted = 0");
 | 
			
		||||
                string SHA256Pwd = eDFunction.GetSHA256Encryption(login.password);
 | 
			
		||||
                var User = await backendRepository.GetOneAsync<User>("userinfo", @$"account = '{login.account}' and password = '{SHA256Pwd}' and deleted = 0");
 | 
			
		||||
                if (User == null)
 | 
			
		||||
                {
 | 
			
		||||
                    apiResult.Code = "9998";
 | 
			
		||||
 | 
			
		||||
@ -1,21 +1,29 @@
 | 
			
		||||
using FrontendWebApi.Models;
 | 
			
		||||
using iTextSharp.text;
 | 
			
		||||
using Microsoft.AspNetCore.Http;
 | 
			
		||||
using Microsoft.AspNetCore.Mvc;
 | 
			
		||||
using Microsoft.AspNetCore.Mvc.Filters;
 | 
			
		||||
using Microsoft.Extensions.Logging;
 | 
			
		||||
using Newtonsoft.Json;
 | 
			
		||||
using NPOI.HPSF;
 | 
			
		||||
using NPOI.SS.Formula.Functions;
 | 
			
		||||
using NPOI.SS.UserModel;
 | 
			
		||||
using NPOI.Util;
 | 
			
		||||
using NPOI.XSSF.UserModel;
 | 
			
		||||
using Org.BouncyCastle.Crypto.Agreement.JPake;
 | 
			
		||||
using Repository.BackendRepository.Interface;
 | 
			
		||||
using Repository.FrontendRepository.Interface;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Drawing.Drawing2D;
 | 
			
		||||
using System.IO;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace FrontendWebApi.ApiControllers
 | 
			
		||||
{
 | 
			
		||||
    [Route("api/[controller]")]
 | 
			
		||||
    [ApiController]
 | 
			
		||||
    //[Route("api/[controller]")]
 | 
			
		||||
    //[ApiController]
 | 
			
		||||
    public class OperationController : MyBaseApiController<OperationController>
 | 
			
		||||
    {
 | 
			
		||||
        private readonly IBackendRepository backendRepository;
 | 
			
		||||
@ -88,7 +96,493 @@ namespace FrontendWebApi.ApiControllers
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 廠商資料列表(搜寻)
 | 
			
		||||
        /// 大樓列表
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [HttpPost]
 | 
			
		||||
        public async Task<ApiResult<List<BuildingList>>> BuiList()
 | 
			
		||||
        {
 | 
			
		||||
            ApiResult<List<BuildingList>> apiResult = new ApiResult<List<BuildingList>>();
 | 
			
		||||
            List<BuildingList> bl = new List<BuildingList>();
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                var sqlString = @$"select d.device_area_tag, d.device_building_tag, d.device_floor_tag, CONCAT(case when d.device_area_tag='TPE' then '台北市' else '新北市' end, b.full_name, d.device_floor_tag) as full_name
 | 
			
		||||
                                   from device d
 | 
			
		||||
                                   join building b on d.device_building_tag = b.building_tag
 | 
			
		||||
                                   where d.deleted = 0
 | 
			
		||||
                                   group by d.device_area_tag, d.device_building_tag, d.device_floor_tag, b.full_name";
 | 
			
		||||
 | 
			
		||||
                bl = await backendRepository.GetAllAsync<BuildingList>(sqlString);
 | 
			
		||||
 | 
			
		||||
                apiResult.Code = "0000";
 | 
			
		||||
                apiResult.Data = bl;
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception exception)
 | 
			
		||||
            {
 | 
			
		||||
                apiResult.Code = "9999";
 | 
			
		||||
                apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return apiResult;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 設備列表
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [HttpPost]
 | 
			
		||||
        public async Task<ApiResult<List<Device>>> DevList(BuildingList bl)
 | 
			
		||||
        {
 | 
			
		||||
            ApiResult<List<Device>> apiResult = new ApiResult<List<Device>>();
 | 
			
		||||
            List<Device> d = new List<Device>();
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                var sqlString = @$"select device_number, concat(device_floor_tag, ' ', device_last_name, ' ', device_serial_tag) as device_name
 | 
			
		||||
                                   from device where deleted = 0 and device_building_tag = @device_building_tag and device_floor_tag = @device_floor_tag";
 | 
			
		||||
 | 
			
		||||
                var param = new { @device_building_tag = bl.device_building_tag, @device_floor_tag = bl.device_floor_tag };
 | 
			
		||||
 | 
			
		||||
                d = await backendRepository.GetAllAsync<Device>(sqlString, param);
 | 
			
		||||
 | 
			
		||||
                apiResult.Code = "0000";
 | 
			
		||||
                apiResult.Data = d;
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception exception)
 | 
			
		||||
            {
 | 
			
		||||
                apiResult.Code = "9999";
 | 
			
		||||
                apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return apiResult;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 汇出excel (work_type: null=廠商, 1=保養, 2=維修)
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [HttpPost]
 | 
			
		||||
        public FileResult OpeExportExcel(byte? work_type)
 | 
			
		||||
        {
 | 
			
		||||
            var workbook = new XSSFWorkbook();
 | 
			
		||||
            #region excel設定
 | 
			
		||||
            IFont font12 = workbook.CreateFont();
 | 
			
		||||
            font12.FontName = "新細明體";
 | 
			
		||||
            font12.FontHeightInPoints = 12;
 | 
			
		||||
            ICellStyle style12 = workbook.CreateCellStyle();
 | 
			
		||||
            style12.SetFont(font12);
 | 
			
		||||
            style12.Alignment = HorizontalAlignment.Center;
 | 
			
		||||
            style12.VerticalAlignment = VerticalAlignment.Center;
 | 
			
		||||
            IFont font12Times = workbook.CreateFont();
 | 
			
		||||
            font12Times.FontName = "Times New Roman";
 | 
			
		||||
            font12Times.FontHeightInPoints = 12;
 | 
			
		||||
            IFont font18 = workbook.CreateFont();
 | 
			
		||||
            font18.FontName = "新細明體";
 | 
			
		||||
            font18.FontHeightInPoints = 18;
 | 
			
		||||
            font18.IsBold = true;
 | 
			
		||||
            ICellStyle styleTitle18 = workbook.CreateCellStyle();
 | 
			
		||||
            styleTitle18.SetFont(font18);
 | 
			
		||||
            styleTitle18.Alignment = HorizontalAlignment.Center;
 | 
			
		||||
            styleTitle18.VerticalAlignment = VerticalAlignment.Center;
 | 
			
		||||
            ICellStyle styleLeft12 = workbook.CreateCellStyle();
 | 
			
		||||
            styleLeft12.SetFont(font12);
 | 
			
		||||
            styleLeft12.Alignment = HorizontalAlignment.Left;
 | 
			
		||||
            styleLeft12.VerticalAlignment = VerticalAlignment.Center;
 | 
			
		||||
            ICellStyle styleLine12 = workbook.CreateCellStyle();
 | 
			
		||||
            styleLine12.SetFont(font12);
 | 
			
		||||
            styleLine12.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
 | 
			
		||||
            styleLine12.VerticalAlignment = VerticalAlignment.Center;
 | 
			
		||||
            styleLine12.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
 | 
			
		||||
            styleLine12.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
 | 
			
		||||
            styleLine12.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
 | 
			
		||||
            styleLine12.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
 | 
			
		||||
            ICellStyle stylein12 = workbook.CreateCellStyle();
 | 
			
		||||
            stylein12.SetFont(font12Times);
 | 
			
		||||
            stylein12.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left;
 | 
			
		||||
            stylein12.VerticalAlignment = VerticalAlignment.Center;
 | 
			
		||||
            stylein12.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
 | 
			
		||||
            stylein12.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
 | 
			
		||||
            stylein12.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
 | 
			
		||||
            stylein12.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
 | 
			
		||||
            stylein12.WrapText = true;
 | 
			
		||||
            #endregion
 | 
			
		||||
 | 
			
		||||
            if (string.IsNullOrEmpty(work_type.ToString()))
 | 
			
		||||
            {
 | 
			
		||||
                var sqlString = $@"select of.*, v2.system_key
 | 
			
		||||
                                from operation_firm of
 | 
			
		||||
                                left join variable v1 on of.device_system_category_layer2 = v1.system_value and v1.system_type = @main_system_type and v1.delted = 0
 | 
			
		||||
                                left join variable v2 on v1.id = v2.system_parent_id and of.device_system_category_layer3 = v2.system_value and v2.system_type = @sub_system_type and v2.deleted = 0
 | 
			
		||||
                                    where of.deleted = 0";
 | 
			
		||||
                var sheet = workbook.CreateSheet("廠商資料");
 | 
			
		||||
                var operation_firm = backendRepository.GetAllAsync<Operation_Firm>(sqlString, null);
 | 
			
		||||
                int RowPosition = 0;
 | 
			
		||||
                #region set cell
 | 
			
		||||
                IRow row = sheet.CreateRow(RowPosition);
 | 
			
		||||
                sheet.SetColumnWidth(0, 4 * 160 * 12);
 | 
			
		||||
                sheet.SetColumnWidth(1, 4 * 160 * 12);
 | 
			
		||||
                sheet.SetColumnWidth(3, 4 * 160 * 12);
 | 
			
		||||
                sheet.SetColumnWidth(4, 4 * 160 * 12);
 | 
			
		||||
                sheet.SetColumnWidth(5, 4 * 160 * 12);
 | 
			
		||||
                sheet.SetColumnWidth(6, 4 * 160 * 12);
 | 
			
		||||
                sheet.SetColumnWidth(7, 4 * 160 * 12);
 | 
			
		||||
                ICell cell = row.CreateCell(0);
 | 
			
		||||
                cell.SetCellValue("廠商類別");
 | 
			
		||||
                cell.CellStyle = styleLine12;
 | 
			
		||||
                cell = row.CreateCell(1);
 | 
			
		||||
                cell.SetCellValue("廠商名稱");
 | 
			
		||||
                cell.CellStyle = styleLine12;
 | 
			
		||||
                cell = row.CreateCell(2);
 | 
			
		||||
                cell.SetCellValue("聯絡人");
 | 
			
		||||
                cell.CellStyle = styleLine12;
 | 
			
		||||
                cell = row.CreateCell(3);
 | 
			
		||||
                cell.SetCellValue("電話");
 | 
			
		||||
                cell.CellStyle = styleLine12;
 | 
			
		||||
                cell = row.CreateCell(4);
 | 
			
		||||
                cell.SetCellValue("郵箱");
 | 
			
		||||
                cell.CellStyle = styleLine12;
 | 
			
		||||
                cell = row.CreateCell(5);
 | 
			
		||||
                cell.SetCellValue("統一編號");
 | 
			
		||||
                cell.CellStyle = styleLine12;
 | 
			
		||||
                cell = row.CreateCell(6);
 | 
			
		||||
                cell.SetCellValue("備注");
 | 
			
		||||
                cell.CellStyle = styleLine12;
 | 
			
		||||
                cell = row.CreateCell(7);
 | 
			
		||||
                cell.SetCellValue("建立時間");
 | 
			
		||||
                cell.CellStyle = styleLine12;
 | 
			
		||||
                #endregion
 | 
			
		||||
 | 
			
		||||
                if (operation_firm.Result.Count > 0)
 | 
			
		||||
                {
 | 
			
		||||
                    foreach (var of in operation_firm.Result)
 | 
			
		||||
                    {
 | 
			
		||||
                        RowPosition += 1;
 | 
			
		||||
                        row = sheet.CreateRow(RowPosition);
 | 
			
		||||
                        for (var i = 0; i < 8; i++)
 | 
			
		||||
                        {
 | 
			
		||||
                            cell = row.CreateCell(i);
 | 
			
		||||
                            if (i == 0)
 | 
			
		||||
                            {
 | 
			
		||||
                                cell.SetCellValue(of.system_key);
 | 
			
		||||
                            }
 | 
			
		||||
                            if (i == 1)
 | 
			
		||||
                            {
 | 
			
		||||
                                cell.SetCellValue(of.name);
 | 
			
		||||
                            }
 | 
			
		||||
                            if (i == 2)
 | 
			
		||||
                            {
 | 
			
		||||
                                cell.SetCellValue(of.contact_person);
 | 
			
		||||
                            }
 | 
			
		||||
                            if (i == 3)
 | 
			
		||||
                            {
 | 
			
		||||
                                cell.SetCellValue(of.phone);
 | 
			
		||||
                            }
 | 
			
		||||
                            if (i == 4)
 | 
			
		||||
                            {
 | 
			
		||||
                                cell.SetCellValue(of.email);
 | 
			
		||||
                            }
 | 
			
		||||
                            if (i == 5)
 | 
			
		||||
                            {
 | 
			
		||||
                                cell.SetCellValue(of.tax_id_number);
 | 
			
		||||
                            }
 | 
			
		||||
                            if (i == 6)
 | 
			
		||||
                            {
 | 
			
		||||
                                cell.SetCellValue(of.remark);
 | 
			
		||||
                            }
 | 
			
		||||
                            if (i == 7)
 | 
			
		||||
                            {
 | 
			
		||||
                                cell.SetCellValue(of.Created_at);
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                            cell.CellStyle = style12;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            else if (work_type == 1)
 | 
			
		||||
            {
 | 
			
		||||
                var sqlString = $@"select opr.*, concat(d.device_floor_tag, ' ', d.device_last_name, ' ', d.device_serial_tag) as device_name, ui.full_name as user_full_name
 | 
			
		||||
                                   from operation_record opr
 | 
			
		||||
                                   left join device d on opr.fix_do_code = d.device_number
 | 
			
		||||
                                   left join userinfo ui on opr.work_person_id = ui.id 
 | 
			
		||||
                                   where opr.deleted = 0 and opr.work_type = 1";
 | 
			
		||||
                var sheet = workbook.CreateSheet("廠商資料");
 | 
			
		||||
                var operation_record = backendRepository.GetAllAsync<Operation_Record>(sqlString, null);
 | 
			
		||||
                List<Operation_Record_File> operation_record_file = new List<Operation_Record_File>();
 | 
			
		||||
 | 
			
		||||
                if (operation_record.Result.Count > 0)
 | 
			
		||||
                {
 | 
			
		||||
                    foreach (var or in operation_record.Result)
 | 
			
		||||
                    {
 | 
			
		||||
                        sqlString = $@"select * from operation_record_file where record_id = @record_id";
 | 
			
		||||
                        var param = new { @record_id = or.id };
 | 
			
		||||
                        operation_record_file = backendRepository.GetAllAsync<Operation_Record_File>(sqlString, param).Result;
 | 
			
		||||
                        or.lorf = operation_record_file;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    int RowPosition = 0;
 | 
			
		||||
                    #region set cell
 | 
			
		||||
                    IRow row = sheet.CreateRow(RowPosition);
 | 
			
		||||
                    sheet.SetColumnWidth(0, 4 * 160 * 12);
 | 
			
		||||
                    sheet.SetColumnWidth(1, 4 * 160 * 12);
 | 
			
		||||
                    sheet.SetColumnWidth(2, 4 * 160 * 12);
 | 
			
		||||
                    sheet.SetColumnWidth(3, 4 * 160 * 12);
 | 
			
		||||
                    sheet.SetColumnWidth(4, 4 * 160 * 12);
 | 
			
		||||
                    sheet.SetColumnWidth(5, 4 * 160 * 12);
 | 
			
		||||
                    sheet.SetColumnWidth(6, 4 * 160 * 12);
 | 
			
		||||
                    sheet.SetColumnWidth(7, 4 * 160 * 12);
 | 
			
		||||
                    sheet.SetColumnWidth(8, 4 * 160 * 12);
 | 
			
		||||
                    sheet.SetColumnWidth(9, 4 * 160 * 12);
 | 
			
		||||
                    ICell cell = row.CreateCell(0);
 | 
			
		||||
                    cell.SetCellValue("項目");
 | 
			
		||||
                    cell.CellStyle = styleLine12;
 | 
			
		||||
                    cell = row.CreateCell(1);
 | 
			
		||||
                    cell.SetCellValue("位置");
 | 
			
		||||
                    cell.CellStyle = styleLine12;
 | 
			
		||||
                    cell = row.CreateCell(2);
 | 
			
		||||
                    cell.SetCellValue("表單號");
 | 
			
		||||
                    cell.CellStyle = styleLine12;
 | 
			
		||||
                    cell = row.CreateCell(3);
 | 
			
		||||
                    cell.SetCellValue("設備名稱");
 | 
			
		||||
                    cell.CellStyle = styleLine12;
 | 
			
		||||
                    cell = row.CreateCell(4);
 | 
			
		||||
                    cell.SetCellValue("狀態");
 | 
			
		||||
                    cell.CellStyle = styleLine12;
 | 
			
		||||
                    cell = row.CreateCell(5);
 | 
			
		||||
                    cell.SetCellValue("處理人員");
 | 
			
		||||
                    cell.CellStyle = styleLine12;
 | 
			
		||||
                    cell = row.CreateCell(6);
 | 
			
		||||
                    cell.SetCellValue("預計施工時間");
 | 
			
		||||
                    cell.CellStyle = styleLine12;
 | 
			
		||||
                    cell = row.CreateCell(7);
 | 
			
		||||
                    cell.SetCellValue("檔案上傳");
 | 
			
		||||
                    cell.CellStyle = styleLine12;
 | 
			
		||||
                    cell = row.CreateCell(8);
 | 
			
		||||
                    cell.SetCellValue("完成時間");
 | 
			
		||||
                    cell.CellStyle = styleLine12;
 | 
			
		||||
                    cell = row.CreateCell(9);
 | 
			
		||||
                    cell.SetCellValue("建立時間");
 | 
			
		||||
                    cell.CellStyle = styleLine12;
 | 
			
		||||
                    #endregion
 | 
			
		||||
                    foreach (var or in operation_record.Result)
 | 
			
		||||
                {
 | 
			
		||||
                    RowPosition += 1;
 | 
			
		||||
                    row = sheet.CreateRow(RowPosition);
 | 
			
		||||
                    for (var i = 0; i < 10; i++)
 | 
			
		||||
                    {
 | 
			
		||||
                        cell = row.CreateCell(i);
 | 
			
		||||
                        if (i == 0)
 | 
			
		||||
                        {
 | 
			
		||||
                            cell.SetCellValue(or.work_type_name);
 | 
			
		||||
                        }
 | 
			
		||||
                        if (i == 1)
 | 
			
		||||
                        {
 | 
			
		||||
                            cell.SetCellValue(or.location);
 | 
			
		||||
                        }
 | 
			
		||||
                        if (i == 2)
 | 
			
		||||
                        {
 | 
			
		||||
                            cell.SetCellValue(or.formId);
 | 
			
		||||
                        }
 | 
			
		||||
                        if (i == 3)
 | 
			
		||||
                        {
 | 
			
		||||
                            cell.SetCellValue(or.device_name);
 | 
			
		||||
                        }
 | 
			
		||||
                        if (i == 4)
 | 
			
		||||
                        {
 | 
			
		||||
                            cell.SetCellValue(or.status_name);
 | 
			
		||||
                        }
 | 
			
		||||
                        if (i == 5)
 | 
			
		||||
                        {
 | 
			
		||||
                            cell.SetCellValue(or.user_full_name);
 | 
			
		||||
                        }
 | 
			
		||||
                        if (i == 6)
 | 
			
		||||
                        {
 | 
			
		||||
                            cell.SetCellValue(or.start_time);
 | 
			
		||||
                        }
 | 
			
		||||
                        if (i == 7)
 | 
			
		||||
                        {
 | 
			
		||||
                            cell.SetCellValue(or.finish_time); // image
 | 
			
		||||
                        }
 | 
			
		||||
                        if (i == 8)
 | 
			
		||||
                        {
 | 
			
		||||
                            cell.SetCellValue(or.finish_time);
 | 
			
		||||
                        }
 | 
			
		||||
                        if (i == 9)
 | 
			
		||||
                        {
 | 
			
		||||
                            cell.SetCellValue(or.Created_at);
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        cell.CellStyle = style12;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            else if (work_type == 2)
 | 
			
		||||
            {
 | 
			
		||||
                var sqlString = $@"select opr.*, concat(d.device_floor_tag, ' ', d.device_last_name, ' ', d.device_serial_tag) as device_name, ui.full_name as user_full_name
 | 
			
		||||
                                   from operation_record opr
 | 
			
		||||
                                   left join device d on opr.fix_do_code = d.device_number
 | 
			
		||||
                                   left join userinfo ui on opr.work_person_id = ui.id 
 | 
			
		||||
                                   where opr.deleted = 0 and opr.work_type = 2";
 | 
			
		||||
                var sheet = workbook.CreateSheet("廠商資料");
 | 
			
		||||
                var operation_record = backendRepository.GetAllAsync<Operation_Record>(sqlString, null);
 | 
			
		||||
                List<Operation_Record_File> operation_record_file = new List<Operation_Record_File>();
 | 
			
		||||
                
 | 
			
		||||
                if (operation_record.Result.Count > 0)
 | 
			
		||||
                {
 | 
			
		||||
                    foreach(var or in operation_record.Result)
 | 
			
		||||
                {
 | 
			
		||||
                    sqlString = $@"select * from operation_record_file where record_id = @record_id";
 | 
			
		||||
                    var param = new { @record_id = or.id };
 | 
			
		||||
                    operation_record_file = backendRepository.GetAllAsync<Operation_Record_File>(sqlString, param).Result;
 | 
			
		||||
                    or.lorf = operation_record_file;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    int RowPosition = 0;
 | 
			
		||||
                    #region set cell
 | 
			
		||||
                    IRow row = sheet.CreateRow(RowPosition);
 | 
			
		||||
                    sheet.SetColumnWidth(0, 4 * 160 * 12);
 | 
			
		||||
                    sheet.SetColumnWidth(1, 4 * 160 * 12);
 | 
			
		||||
                    sheet.SetColumnWidth(2, 4 * 160 * 12);
 | 
			
		||||
                    sheet.SetColumnWidth(3, 4 * 160 * 12);
 | 
			
		||||
                    sheet.SetColumnWidth(4, 4 * 160 * 12);
 | 
			
		||||
                    sheet.SetColumnWidth(5, 4 * 160 * 12);
 | 
			
		||||
                    sheet.SetColumnWidth(6, 4 * 160 * 12);
 | 
			
		||||
                    sheet.SetColumnWidth(7, 4 * 160 * 12);
 | 
			
		||||
                    sheet.SetColumnWidth(8, 4 * 160 * 12);
 | 
			
		||||
                    sheet.SetColumnWidth(9, 4 * 160 * 12);
 | 
			
		||||
                    sheet.SetColumnWidth(10, 4 * 160 * 12);
 | 
			
		||||
                    ICell cell = row.CreateCell(0);
 | 
			
		||||
                    cell.SetCellValue("項目");
 | 
			
		||||
                    cell.CellStyle = styleLine12;
 | 
			
		||||
                    cell = row.CreateCell(1);
 | 
			
		||||
                    cell.SetCellValue("位置");
 | 
			
		||||
                    cell.CellStyle = styleLine12;
 | 
			
		||||
                    cell = row.CreateCell(2);
 | 
			
		||||
                    cell.SetCellValue("異常代號");
 | 
			
		||||
                    cell.CellStyle = styleLine12;
 | 
			
		||||
                    cell = row.CreateCell(3);
 | 
			
		||||
                    cell.SetCellValue("表單號");
 | 
			
		||||
                    cell.CellStyle = styleLine12;
 | 
			
		||||
                    cell = row.CreateCell(4);
 | 
			
		||||
                    cell.SetCellValue("設備名稱");
 | 
			
		||||
                    cell.CellStyle = styleLine12;
 | 
			
		||||
                    cell = row.CreateCell(5);
 | 
			
		||||
                    cell.SetCellValue("狀態");
 | 
			
		||||
                    cell.CellStyle = styleLine12;
 | 
			
		||||
                    cell = row.CreateCell(6);
 | 
			
		||||
                    cell.SetCellValue("處理人員");
 | 
			
		||||
                    cell.CellStyle = styleLine12;
 | 
			
		||||
                    cell = row.CreateCell(7);
 | 
			
		||||
                    cell.SetCellValue("預計施工時間");
 | 
			
		||||
                    cell.CellStyle = styleLine12;
 | 
			
		||||
                    cell = row.CreateCell(8);
 | 
			
		||||
                    cell.SetCellValue("檔案上傳");
 | 
			
		||||
                    cell.CellStyle = styleLine12;
 | 
			
		||||
                    cell = row.CreateCell(9);
 | 
			
		||||
                    cell.SetCellValue("完成時間");
 | 
			
		||||
                    cell.CellStyle = styleLine12;
 | 
			
		||||
                    cell = row.CreateCell(10);
 | 
			
		||||
                    cell.SetCellValue("建立時間");
 | 
			
		||||
                    cell.CellStyle = styleLine12;
 | 
			
		||||
                    var j = 0;//row
 | 
			
		||||
                    #endregion
 | 
			
		||||
                    foreach (var or in operation_record.Result)
 | 
			
		||||
                    {
 | 
			
		||||
                        RowPosition += 1;
 | 
			
		||||
                        row = sheet.CreateRow(RowPosition);
 | 
			
		||||
                        for (var i = 0; i < 10; i++)//column
 | 
			
		||||
                        {
 | 
			
		||||
                            cell = row.CreateCell(i);
 | 
			
		||||
                            if (i == 0)
 | 
			
		||||
                            {
 | 
			
		||||
                                cell.SetCellValue(or.work_type_name);
 | 
			
		||||
                            }
 | 
			
		||||
                            if (i == 1)
 | 
			
		||||
                            {
 | 
			
		||||
                                cell.SetCellValue(or.location);
 | 
			
		||||
                            }
 | 
			
		||||
                            if (i == 1)
 | 
			
		||||
                            {
 | 
			
		||||
                                cell.SetCellValue(or.error_code);
 | 
			
		||||
                            }
 | 
			
		||||
                            if (i == 3)
 | 
			
		||||
                            {
 | 
			
		||||
                                cell.SetCellValue(or.formId);
 | 
			
		||||
                            }
 | 
			
		||||
                            if (i == 4)
 | 
			
		||||
                            {
 | 
			
		||||
                                cell.SetCellValue(or.device_name);
 | 
			
		||||
                            }
 | 
			
		||||
                            if (i == 5)
 | 
			
		||||
                            {
 | 
			
		||||
                                cell.SetCellValue(or.status_name);
 | 
			
		||||
                            }
 | 
			
		||||
                            if (i == 6)
 | 
			
		||||
                            {
 | 
			
		||||
                                cell.SetCellValue(or.user_full_name);
 | 
			
		||||
                            }
 | 
			
		||||
                            if (i == 7)
 | 
			
		||||
                            {
 | 
			
		||||
                                cell.SetCellValue(or.start_time);
 | 
			
		||||
                            }
 | 
			
		||||
                            if (i == 8)//image
 | 
			
		||||
                            {
 | 
			
		||||
                                var image = or.lorf.FirstOrDefault().save_file_name;
 | 
			
		||||
                                var extName = "JPG"; //image.Split('.')[1];
 | 
			
		||||
                                var fullPath = Path.Combine(operationFileSaveAsPath, "image1.jpg");
 | 
			
		||||
                                var imageByte = System.IO.File.ReadAllBytes(fullPath);
 | 
			
		||||
                                int format = 0;
 | 
			
		||||
                                var drawing = sheet.CreateDrawingPatriarch();
 | 
			
		||||
                                foreach (var v in Enum.GetNames(typeof(PictureType)))
 | 
			
		||||
                                {
 | 
			
		||||
                                    if (v == extName)
 | 
			
		||||
                                        format = Convert.ToInt32(Enum.Parse(typeof(PictureType), v));
 | 
			
		||||
                                }
 | 
			
		||||
 | 
			
		||||
                                if (format != 0)
 | 
			
		||||
                                {
 | 
			
		||||
                                    var pictureIds = workbook.AddPicture(imageByte, format);
 | 
			
		||||
                                    XSSFClientAnchor anchor = new XSSFClientAnchor();
 | 
			
		||||
                                    anchor.Col1 = i;
 | 
			
		||||
                                    anchor.Row1 = j;
 | 
			
		||||
                                    var picture = drawing.CreatePicture(anchor, pictureIds);
 | 
			
		||||
                                    picture.Resize();
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                            if (i == 9)
 | 
			
		||||
                            {
 | 
			
		||||
                                cell.SetCellValue(or.finish_time);
 | 
			
		||||
                            }
 | 
			
		||||
                            if (i == 10)
 | 
			
		||||
                            {
 | 
			
		||||
                                cell.SetCellValue(or.Created_at);
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                            cell.CellStyle = style12;
 | 
			
		||||
                            j++;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var ms = new NpoiMemoryStream
 | 
			
		||||
            {
 | 
			
		||||
                AllowClose = false
 | 
			
		||||
            };
 | 
			
		||||
            workbook.Write(ms);
 | 
			
		||||
            ms.Flush();
 | 
			
		||||
            ms.Seek(0, SeekOrigin.Begin);
 | 
			
		||||
 | 
			
		||||
            return File(ms, "application/vnd.ms-excel", "廠商資料.xlsx");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #region 廠商
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 廠商資料列表(搜寻) / selection列表 ofl = null
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="ofl"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
@ -98,6 +592,8 @@ namespace FrontendWebApi.ApiControllers
 | 
			
		||||
            List<Operation_Firm> opList = new List<Operation_Firm>();
 | 
			
		||||
            string sWhere = "";
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                if (ofl != null)
 | 
			
		||||
                {
 | 
			
		||||
                    if (ofl.start_created_at != null || ofl.end_created_at != null)
 | 
			
		||||
                    {
 | 
			
		||||
@ -124,8 +620,14 @@ namespace FrontendWebApi.ApiControllers
 | 
			
		||||
                                    where of.deleted = 0" + sWhere;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                var param = new { @sub_system_type = sub_system_type, @start_created_at = ofl.start_created_at, @end_created_at = ofl.end_created_at, @today = ofl.today, @yesterday = ofl.yesterday, @sub_system_tag = ofl.sub_system_tag, @main_system_tag = ofl.main_system_tag };
 | 
			
		||||
                    var param = new { @sub_system_type = sub_system_type, @start_created_at = ofl.start_created_at, @end_created_at = ofl.end_created_at, @sub_system_tag = ofl.sub_system_tag, @main_system_tag = ofl.main_system_tag };
 | 
			
		||||
                    opList = await backendRepository.GetAllAsync<Operation_Firm>(sqlString, param);
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    var sqlString = $@"select of.id, of.name from operation_firm where deleted = 0";
 | 
			
		||||
                    opList = await backendRepository.GetAllAsync<Operation_Firm>(sqlString);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                apiResult.Code = "0000";
 | 
			
		||||
                apiResult.Data = opList;
 | 
			
		||||
@ -229,7 +731,6 @@ namespace FrontendWebApi.ApiControllers
 | 
			
		||||
 | 
			
		||||
                Dictionary<string, object> operation_firm = new Dictionary<string, object>()
 | 
			
		||||
                {
 | 
			
		||||
                    { "@deleted", of.deleted },
 | 
			
		||||
                    { "@device_system_category_layer2", of.device_system_category_layer2 },
 | 
			
		||||
                    { "@device_system_category_layer3", of.device_system_category_layer3 },
 | 
			
		||||
                    { "@name", of.name },
 | 
			
		||||
@ -257,150 +758,291 @@ namespace FrontendWebApi.ApiControllers
 | 
			
		||||
 | 
			
		||||
            return apiResult;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 汇出excel
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        public FileResult ExportExcel()
 | 
			
		||||
        {
 | 
			
		||||
            var workbook = new XSSFWorkbook();
 | 
			
		||||
            #region excel設定
 | 
			
		||||
            IFont font12 = workbook.CreateFont();
 | 
			
		||||
            font12.FontName = "新細明體";
 | 
			
		||||
            font12.FontHeightInPoints = 12;
 | 
			
		||||
            ICellStyle style12 = workbook.CreateCellStyle();
 | 
			
		||||
            style12.SetFont(font12);
 | 
			
		||||
            style12.Alignment = HorizontalAlignment.Center;
 | 
			
		||||
            style12.VerticalAlignment = VerticalAlignment.Center;
 | 
			
		||||
            IFont font12Times = workbook.CreateFont();
 | 
			
		||||
            font12Times.FontName = "Times New Roman";
 | 
			
		||||
            font12Times.FontHeightInPoints = 12;
 | 
			
		||||
            IFont font18 = workbook.CreateFont();
 | 
			
		||||
            font18.FontName = "新細明體";
 | 
			
		||||
            font18.FontHeightInPoints = 18;
 | 
			
		||||
            font18.IsBold = true;
 | 
			
		||||
            ICellStyle styleTitle18 = workbook.CreateCellStyle();
 | 
			
		||||
            styleTitle18.SetFont(font18);
 | 
			
		||||
            styleTitle18.Alignment = HorizontalAlignment.Center;
 | 
			
		||||
            styleTitle18.VerticalAlignment = VerticalAlignment.Center;
 | 
			
		||||
            ICellStyle styleLeft12 = workbook.CreateCellStyle();
 | 
			
		||||
            styleLeft12.SetFont(font12);
 | 
			
		||||
            styleLeft12.Alignment = HorizontalAlignment.Left;
 | 
			
		||||
            styleLeft12.VerticalAlignment = VerticalAlignment.Center;
 | 
			
		||||
            ICellStyle styleLine12 = workbook.CreateCellStyle();
 | 
			
		||||
            styleLine12.SetFont(font12);
 | 
			
		||||
            styleLine12.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
 | 
			
		||||
            styleLine12.VerticalAlignment = VerticalAlignment.Center;
 | 
			
		||||
            styleLine12.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
 | 
			
		||||
            styleLine12.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
 | 
			
		||||
            styleLine12.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
 | 
			
		||||
            styleLine12.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
 | 
			
		||||
            ICellStyle stylein12 = workbook.CreateCellStyle();
 | 
			
		||||
            stylein12.SetFont(font12Times);
 | 
			
		||||
            stylein12.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left;
 | 
			
		||||
            stylein12.VerticalAlignment = VerticalAlignment.Center;
 | 
			
		||||
            stylein12.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
 | 
			
		||||
            stylein12.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
 | 
			
		||||
            stylein12.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
 | 
			
		||||
            stylein12.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
 | 
			
		||||
            stylein12.WrapText = true;
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
            var sqlString = $@"select of.*, v2.system_key
 | 
			
		||||
                                from operation_firm of
 | 
			
		||||
                                left join variable v1 on of.device_system_category_layer2 = v1.system_value and v1.system_type = @main_system_type and v1.delted = 0
 | 
			
		||||
                                left join variable v2 on v1.id = v2.system_parent_id and of.device_system_category_layer3 = v2.system_value and v2.system_type = @sub_system_type and v2.deleted = 0
 | 
			
		||||
                                where of.deleted = 0";
 | 
			
		||||
            var sheet = workbook.CreateSheet("廠商資料");
 | 
			
		||||
            var operation_firm = backendRepository.GetAllAsync<Operation_Firm>(sqlString, null);
 | 
			
		||||
            int RowPosition = 0;
 | 
			
		||||
            IRow row = sheet.CreateRow(RowPosition);
 | 
			
		||||
            sheet.SetColumnWidth(0, 4 * 160 * 12);
 | 
			
		||||
            sheet.SetColumnWidth(1, 4 * 160 * 12);
 | 
			
		||||
            sheet.SetColumnWidth(3, 4 * 160 * 12);
 | 
			
		||||
            sheet.SetColumnWidth(4, 4 * 160 * 12);
 | 
			
		||||
            sheet.SetColumnWidth(5, 4 * 160 * 12);
 | 
			
		||||
            sheet.SetColumnWidth(6, 4 * 160 * 12);
 | 
			
		||||
            sheet.SetColumnWidth(7, 4 * 160 * 12);
 | 
			
		||||
            ICell cell = row.CreateCell(0);
 | 
			
		||||
            cell.SetCellValue("廠商類別");
 | 
			
		||||
            cell.CellStyle = styleLine12;
 | 
			
		||||
            cell = row.CreateCell(1);
 | 
			
		||||
            cell.SetCellValue("廠商名稱");
 | 
			
		||||
            cell.CellStyle = styleLine12;
 | 
			
		||||
            cell = row.CreateCell(2);
 | 
			
		||||
            cell.SetCellValue("聯絡人");
 | 
			
		||||
            cell.CellStyle = styleLine12;
 | 
			
		||||
            cell = row.CreateCell(3);
 | 
			
		||||
            cell.SetCellValue("電話");
 | 
			
		||||
            cell.CellStyle = styleLine12;
 | 
			
		||||
            cell = row.CreateCell(4);
 | 
			
		||||
            cell.SetCellValue("郵箱");
 | 
			
		||||
            cell.CellStyle = styleLine12;
 | 
			
		||||
            cell = row.CreateCell(5);
 | 
			
		||||
            cell.SetCellValue("統一編號");
 | 
			
		||||
            cell.CellStyle = styleLine12;
 | 
			
		||||
            cell = row.CreateCell(6);
 | 
			
		||||
            cell.SetCellValue("備注");
 | 
			
		||||
            cell.CellStyle = styleLine12;
 | 
			
		||||
            cell = row.CreateCell(2);
 | 
			
		||||
            cell.SetCellValue("建立時間");
 | 
			
		||||
            cell.CellStyle = styleLine12;
 | 
			
		||||
 | 
			
		||||
            foreach (var of in operation_firm.Result)
 | 
			
		||||
        #region 維修/保養
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 維修/保養 列表(work_type)
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="ofl"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        public async Task<ApiResult<List<Operation_Record>>> OpeRecList(OperationFindList ofl)
 | 
			
		||||
        {
 | 
			
		||||
                RowPosition += 1;
 | 
			
		||||
                row = sheet.CreateRow(RowPosition);
 | 
			
		||||
                for (var a = 0; a < 8; a++)
 | 
			
		||||
            ApiResult<List<Operation_Record>> apiResult = new ApiResult<List<Operation_Record>>();
 | 
			
		||||
            List<Operation_Record> orl = new List<Operation_Record>();
 | 
			
		||||
            string sWhere = "";
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                    cell = row.CreateCell(a);
 | 
			
		||||
                    if (a == 0)
 | 
			
		||||
                if (ofl.work_type != 1 || ofl.work_type != 2)
 | 
			
		||||
                {
 | 
			
		||||
                        cell.SetCellValue(of.system_key);
 | 
			
		||||
                    }
 | 
			
		||||
                    if (a == 1)
 | 
			
		||||
                    {
 | 
			
		||||
                        cell.SetCellValue(of.name);
 | 
			
		||||
                    }
 | 
			
		||||
                    if (a == 2)
 | 
			
		||||
                    {
 | 
			
		||||
                        cell.SetCellValue(of.contact_person);
 | 
			
		||||
                    }
 | 
			
		||||
                    if (a == 3)
 | 
			
		||||
                    {
 | 
			
		||||
                        cell.SetCellValue(of.phone);
 | 
			
		||||
                    }
 | 
			
		||||
                    if (a == 4)
 | 
			
		||||
                    {
 | 
			
		||||
                        cell.SetCellValue(of.email);
 | 
			
		||||
                    }
 | 
			
		||||
                    if (a == 5)
 | 
			
		||||
                    {
 | 
			
		||||
                        cell.SetCellValue(of.tax_id_number);
 | 
			
		||||
                    }
 | 
			
		||||
                    if (a == 2)
 | 
			
		||||
                    {
 | 
			
		||||
                        cell.SetCellValue(of.remark);
 | 
			
		||||
                    }
 | 
			
		||||
                    if (a == 7)
 | 
			
		||||
                    {
 | 
			
		||||
                        cell.SetCellValue(of.Created_at);
 | 
			
		||||
                    apiResult.Code = "0001";
 | 
			
		||||
                    apiResult.Msg = "無此項目類別";
 | 
			
		||||
                    return apiResult;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                    cell.CellStyle = style12;
 | 
			
		||||
                if (ofl.start_created_at != null || ofl.end_created_at != null)
 | 
			
		||||
                {
 | 
			
		||||
                    sWhere += $@" and (opr.created_at >= isnull(@start_created_at, opr.created_at) AND opr.created_at <= isnull(@end_created_at, opr.created_at))";
 | 
			
		||||
                }
 | 
			
		||||
                else if (ofl.today)
 | 
			
		||||
                {
 | 
			
		||||
                    sWhere += $@" and convert(opr.created_at, DATE) = convert(NOW(), DATE)";
 | 
			
		||||
                }
 | 
			
		||||
                else if (ofl.yesterday)
 | 
			
		||||
                {
 | 
			
		||||
                    sWhere += $@" and convert(opr.created_at, DATE) = convert(ADDDATE(NOW(), -1), DATE)";
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (ofl.sub_system_tag != null || ofl.main_system_tag != null)
 | 
			
		||||
                {
 | 
			
		||||
                    sWhere += $@" and (opr.device_system_category_layer2 = isnull(@main_system_tag, opr.device_system_category_layer2) AND opr.device_system_category_layer3 = isnull(@sub_system_tag, opr.device_system_category_layer3))";
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (ofl.serial_number != null)
 | 
			
		||||
                {
 | 
			
		||||
                    sWhere += $@" and opr.formId like '%@formId%'";
 | 
			
		||||
                }
 | 
			
		||||
                
 | 
			
		||||
                var sqlString = $@"select opr.*, concat(d.device_floor_tag, ' ', d.device_last_name, ' ', d.device_serial_tag) as device_name, ui.full_name as user_full_name
 | 
			
		||||
                                   from operation_record opr
 | 
			
		||||
                                   left join device d on opr.fix_do_code = d.device_number
 | 
			
		||||
                                   left join userinfo ui on opr.work_person_id = ui.id 
 | 
			
		||||
                                   where opr.deleted = 0 and opr.work_type = @work_type" + sWhere;
 | 
			
		||||
 | 
			
		||||
                var param = new { @work_type = ofl.work_type, @start_created_at = ofl.start_created_at, @end_created_at = ofl.end_created_at, @sub_system_tag = ofl.sub_system_tag, @main_system_tag = ofl.main_system_tag, @formId = ofl.serial_number };
 | 
			
		||||
 | 
			
		||||
                orl = await backendRepository.GetAllAsync<Operation_Record>(sqlString, param);
 | 
			
		||||
 | 
			
		||||
                if (orl.Count > 0)
 | 
			
		||||
                {
 | 
			
		||||
                    foreach(var or in orl)
 | 
			
		||||
                    {
 | 
			
		||||
                        sqlString = $@"select * from operation_record_file where record_id = @record_id and deleted = 0";
 | 
			
		||||
                        var oParam = new { @record_id = or.id };
 | 
			
		||||
                        var orfl = await backendRepository.GetAllAsync<Operation_Record_File>(sqlString, oParam);
 | 
			
		||||
                        or.lorf = orfl;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
            var ms = new NpoiMemoryStream
 | 
			
		||||
                apiResult.Code = "0000";
 | 
			
		||||
                apiResult.Data = orl;
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception exception)
 | 
			
		||||
            {
 | 
			
		||||
                AllowClose = false
 | 
			
		||||
                apiResult.Code = "9999";
 | 
			
		||||
                apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
 | 
			
		||||
                string json = System.Text.Json.JsonSerializer.Serialize(ofl);
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + json);
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return apiResult;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 維修/保養---新增/編輯
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="or"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        public async Task<ApiResult<string>> SavOpeRecord(Operation_Record or)
 | 
			
		||||
        {
 | 
			
		||||
            ApiResult<string> apiResult = new ApiResult<string>();
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                var sqlString = $@"select * from operation_record where id = @id";
 | 
			
		||||
                var param = new { @id = or.id };
 | 
			
		||||
                var ori = await backendRepository.GetOneAsync<Operation_Record>(sqlString, param);
 | 
			
		||||
 | 
			
		||||
                sqlString = $@"select formId from operation_record where convert(created_at, DATE) = convert(NOW(), DATE) order by id desc limit 1";
 | 
			
		||||
                var formId = await backendRepository.GetOneAsync<string>(sqlString);
 | 
			
		||||
                formId = formId != null ? "op" + DateTime.Now.ToString("yyyyMMdd") + (Int32.Parse(formId.Substring(10)) + 1) : "op" + DateTime.Now.ToString("yyyyMMdd") + "001";
 | 
			
		||||
 | 
			
		||||
                if (ori == null) //create
 | 
			
		||||
                {
 | 
			
		||||
                    var new_guid = new Guid();
 | 
			
		||||
                    Dictionary<string, object> operation_record = new Dictionary<string, object>()
 | 
			
		||||
                    {
 | 
			
		||||
                        { "@deleted", 0},
 | 
			
		||||
                        { "@formId", formId},
 | 
			
		||||
                        { "@location", or.location},
 | 
			
		||||
                        { "@location_code", or.location_code},
 | 
			
		||||
                        { "@device_system_category_layer2", or.device_system_category_layer2},
 | 
			
		||||
                        { "@device_system_category_layer3", or.device_system_category_layer3},
 | 
			
		||||
                        { "@work_type", or.work_type},
 | 
			
		||||
                        { "@error_code", or.work_type == 2 ? new_guid.ToString() : null},
 | 
			
		||||
                        { "@fix_do_code", or.fix_do_code },
 | 
			
		||||
                        { "@fix_firm", or.fix_firm},
 | 
			
		||||
                        { "@status", or.status},
 | 
			
		||||
                        { "@work_person_id", or.work_person_id},
 | 
			
		||||
                        { "@start_time", or.start_time},
 | 
			
		||||
                        { "@end_time", or.end_time},
 | 
			
		||||
                        { "@work_time", or.work_time},
 | 
			
		||||
                        { "@finish_time", or.finish_time},
 | 
			
		||||
                        { "@notice", or.notice},
 | 
			
		||||
                        { "@description", or.description},
 | 
			
		||||
                        { "@created_by", myUser.userinfo_guid},
 | 
			
		||||
                        { "@created_at", DateTime.Now}
 | 
			
		||||
                    };
 | 
			
		||||
            workbook.Write(ms);
 | 
			
		||||
            ms.Flush();
 | 
			
		||||
            ms.Seek(0, SeekOrigin.Begin);
 | 
			
		||||
                    await backendRepository.AddOneByCustomTable(operation_record, "operation_record");
 | 
			
		||||
 | 
			
		||||
            return File(ms, "application/vnd.ms-excel", "廠商資料.xlsx");
 | 
			
		||||
                    if (or.lorf.Count > 0)
 | 
			
		||||
                    {
 | 
			
		||||
                        foreach(var orf in or.lorf)
 | 
			
		||||
                        {
 | 
			
		||||
                            sqlString = $@"select id from operation_record where formId = @formId";
 | 
			
		||||
                            var fParam = new { @formId = formId };
 | 
			
		||||
                            var record_id = await backendRepository.GetOneAsync<int>(sqlString, fParam);
 | 
			
		||||
                            Dictionary<string, object> operation_record_file = new Dictionary<string, object>()
 | 
			
		||||
                            {
 | 
			
		||||
                                { "@deleted", 0},
 | 
			
		||||
                                { "@record_id", record_id},
 | 
			
		||||
                                { "@ori_file_name", orf.ori_file_name},
 | 
			
		||||
                                { "@save_file_name", orf.save_file_name},
 | 
			
		||||
                                { "@created_by", myUser.userinfo_guid},
 | 
			
		||||
                                { "@created_at", DateTime.Now}
 | 
			
		||||
                            };
 | 
			
		||||
 | 
			
		||||
                            if (!System.IO.Directory.Exists(operationFileSaveAsPath))
 | 
			
		||||
                                System.IO.Directory.CreateDirectory(operationFileSaveAsPath);
 | 
			
		||||
 | 
			
		||||
                            new_guid = new Guid();
 | 
			
		||||
 | 
			
		||||
                            var fileName = new_guid + "." + orf.ori_file_name.Split('.')[1];
 | 
			
		||||
 | 
			
		||||
                            var fullPath = Path.Combine(operationFileSaveAsPath, fileName);
 | 
			
		||||
 | 
			
		||||
                            using (var stream = new FileStream(fullPath, FileMode.Create))
 | 
			
		||||
                            {
 | 
			
		||||
                                orf.file.CopyTo(stream);
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                            await backendRepository.AddOneByCustomTable(operation_record_file, "operation_record_file");
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    apiResult.Data = "新增成功";
 | 
			
		||||
                }
 | 
			
		||||
                else //edit
 | 
			
		||||
                {
 | 
			
		||||
                    Dictionary<string, object> operation_record = new Dictionary<string, object>()
 | 
			
		||||
                    {
 | 
			
		||||
                        { "@location", or.location},
 | 
			
		||||
                        { "@location_code", or.location_code},
 | 
			
		||||
                        { "@device_system_category_layer2", or.device_system_category_layer2},
 | 
			
		||||
                        { "@device_system_category_layer3", or.device_system_category_layer3},
 | 
			
		||||
                        { "@fix_do_code", or.fix_do_code },
 | 
			
		||||
                        { "@fix_firm", or.fix_firm},
 | 
			
		||||
                        { "@status", or.status},
 | 
			
		||||
                        { "@work_person_id", or.work_person_id},
 | 
			
		||||
                        { "@start_time", or.start_time},
 | 
			
		||||
                        { "@end_time", or.end_time},
 | 
			
		||||
                        { "@work_time", or.work_time},
 | 
			
		||||
                        { "@finish_time", or.finish_time},
 | 
			
		||||
                        { "@notice", or.notice},
 | 
			
		||||
                        { "@description", or.description},
 | 
			
		||||
                        { "@updated_by", myUser.userinfo_guid},
 | 
			
		||||
                        { "@updated_at", DateTime.Now}
 | 
			
		||||
                    };
 | 
			
		||||
                    await backendRepository.UpdateOneByCustomTable(operation_record , "operation_record", "id = " + or.id + "");
 | 
			
		||||
 | 
			
		||||
                    if (or.lorf.Count > 0)
 | 
			
		||||
                    {
 | 
			
		||||
                        foreach(var orf in or.lorf)
 | 
			
		||||
                        {
 | 
			
		||||
                            if (orf.id == 0)//create
 | 
			
		||||
                            {
 | 
			
		||||
                                Dictionary<string, object> operation_record_file = new Dictionary<string, object>()
 | 
			
		||||
                                {
 | 
			
		||||
                                    { "@deleted", 0},
 | 
			
		||||
                                    { "@formId", or.formId},
 | 
			
		||||
                                    { "@ori_file_name", orf.ori_file_name},
 | 
			
		||||
                                    { "@save_file_name", orf.save_file_name},
 | 
			
		||||
                                    { "@created_by", myUser.userinfo_guid},
 | 
			
		||||
                                    { "@created_at", DateTime.Now}
 | 
			
		||||
                                };
 | 
			
		||||
 | 
			
		||||
                                if (!System.IO.Directory.Exists(operationFileSaveAsPath))
 | 
			
		||||
                                    System.IO.Directory.CreateDirectory(operationFileSaveAsPath);
 | 
			
		||||
 | 
			
		||||
                                var new_guid = new Guid();
 | 
			
		||||
 | 
			
		||||
                                var fileName = new_guid + "." + orf.ori_file_name.Split('.')[1];
 | 
			
		||||
 | 
			
		||||
                                var fullPath = Path.Combine(operationFileSaveAsPath, fileName);
 | 
			
		||||
 | 
			
		||||
                                using (var stream = new FileStream(fullPath, FileMode.Create))
 | 
			
		||||
                                {
 | 
			
		||||
                                    orf.file.CopyTo(stream);
 | 
			
		||||
                                }
 | 
			
		||||
 | 
			
		||||
                                await backendRepository.AddOneByCustomTable(operation_record_file, "operation_record_file");
 | 
			
		||||
                            }
 | 
			
		||||
                            else//delete
 | 
			
		||||
                            {
 | 
			
		||||
                                Dictionary<string, object> operation_record_file = new Dictionary<string, object>()
 | 
			
		||||
                                {
 | 
			
		||||
                                    { "@deleted", 1},
 | 
			
		||||
                                };
 | 
			
		||||
                                await backendRepository.UpdateOneByCustomTable(operation_record_file, "operation_record_file", "id = " + orf.id + "");
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    apiResult.Data = "修改成功";
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                apiResult.Code = "0000";
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception exception)
 | 
			
		||||
            {
 | 
			
		||||
                apiResult.Code = "9999";
 | 
			
		||||
                apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
 | 
			
		||||
                string json = System.Text.Json.JsonSerializer.Serialize(or);
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + json);
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return apiResult;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 維修/保養---刪除
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="or"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        public async Task<ApiResult<string>> DelOpeRecord(Operation_Record or)
 | 
			
		||||
        {
 | 
			
		||||
            ApiResult<string> apiResult = new ApiResult<string>();
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                var sqlString = $@"select formId from operation_record where id = @id";
 | 
			
		||||
                var param = new { @id = or.id };
 | 
			
		||||
                var formId = await backendRepository.GetOneAsync<string>(sqlString, param);
 | 
			
		||||
 | 
			
		||||
                sqlString = @$"UPDATE operation_record_file SET deleted = 1 WHERE formId = @formId";
 | 
			
		||||
                var dParam = new { @formId = formId };
 | 
			
		||||
                await backendRepository.ExecuteSql(sqlString, dParam);
 | 
			
		||||
 | 
			
		||||
                sqlString = @$"UPDATE operation_record SET deleted = 1 WHERE id = @id";
 | 
			
		||||
                param = new { @id = or.id };
 | 
			
		||||
                await backendRepository.ExecuteSql(sqlString, param);
 | 
			
		||||
 | 
			
		||||
                apiResult.Code = "0000";
 | 
			
		||||
                apiResult.Data = "刪除成功";
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception exception)
 | 
			
		||||
            {
 | 
			
		||||
                apiResult.Code = "9999";
 | 
			
		||||
                apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
 | 
			
		||||
                string json = System.Text.Json.JsonSerializer.Serialize(or);
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + json);
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return apiResult;
 | 
			
		||||
        }
 | 
			
		||||
        #endregion
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -3,6 +3,7 @@ using FrontendWebApi.Models;
 | 
			
		||||
using Microsoft.AspNetCore.Http;
 | 
			
		||||
using Microsoft.AspNetCore.Mvc;
 | 
			
		||||
using Microsoft.Extensions.Logging;
 | 
			
		||||
using Newtonsoft.Json.Linq;
 | 
			
		||||
using Repository.BackendRepository.Interface;
 | 
			
		||||
using Repository.BaseRepository.Interface;
 | 
			
		||||
using Repository.FrontendRepository.Interface;
 | 
			
		||||
@ -32,7 +33,7 @@ namespace FrontendWebApi.ApiControllers
 | 
			
		||||
 | 
			
		||||
        [HttpPost]
 | 
			
		||||
        [Route("api/AddUser")]
 | 
			
		||||
        public async Task<ApiResult<JwtGet>> AddUser([FromBody]bool str)
 | 
			
		||||
        public async Task<ApiResult<JwtGet>> AddUser(bool str)
 | 
			
		||||
        {
 | 
			
		||||
            var a = User.Claims.Select(p => new { p.Type, p.Value });
 | 
			
		||||
            ApiResult<JwtGet> apiResult = new ApiResult<JwtGet>(jwt_str);
 | 
			
		||||
 | 
			
		||||
@ -45,322 +45,76 @@ namespace FrontendWebApi.Models
 | 
			
		||||
        public bool yesterday { get; set; }//昨天建立时间
 | 
			
		||||
        public string main_system_tag { get; set; }//大类tag
 | 
			
		||||
        public string sub_system_tag { get; set; }//小类tag
 | 
			
		||||
        public byte work_type { get; set; } // 1:保養, 2:維修
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class Operation : Actor
 | 
			
		||||
    public class BuildingList
 | 
			
		||||
    {
 | 
			
		||||
        public int Id { get; set; }//流水號
 | 
			
		||||
        public byte Delete { get; set; }//刪除
 | 
			
		||||
        public string PlanId { get; set; }//計畫單號
 | 
			
		||||
        public int PowerStationId { get; set; }//電站編號
 | 
			
		||||
        public string SerialNumber { get; set; }//計畫單號用流水號
 | 
			
		||||
        public int ScheduleNum { get; set; }//排程數字
 | 
			
		||||
        public byte ScheduleType { get; set; }//排程屬性,0:天 1:周 2:月 3:季 4:年
 | 
			
		||||
        public int WorkDay { get; set; }//預期工作天數
 | 
			
		||||
        public DateTime StartTime { get; set; }//開始時間
 | 
			
		||||
        public byte Type { get; set; }//項目, 0:清洗 1:巡檢
 | 
			
		||||
        public byte EmailType { get; set; }//email提醒種類,0:當天 1:前一天 2:前兩天 3:前三天
 | 
			
		||||
        public string Description { get; set; }//描述
 | 
			
		||||
        public string device_building_tag { get; set; }
 | 
			
		||||
        public string device_floor_tag { get; set; }
 | 
			
		||||
        public string full_name { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
    public class PowerStationIdList
 | 
			
		||||
    public class Operation_Record : Actor
 | 
			
		||||
    {
 | 
			
		||||
        public string Text { get; set; }
 | 
			
		||||
        public string Value { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
    public class SendData
 | 
			
		||||
    {
 | 
			
		||||
        public List<int> id { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
    public class OperationCreatePlanModal : Actor
 | 
			
		||||
    {
 | 
			
		||||
        private string startTime = "", endTime = "";
 | 
			
		||||
        public int Id { get; set; }
 | 
			
		||||
        public int PowerStationId { get; set; }
 | 
			
		||||
        public int Type { get; set; }
 | 
			
		||||
        public int ScheduleNum { get; set; }
 | 
			
		||||
        public int ScheduleType { get; set; }
 | 
			
		||||
        public int WorkDay { get; set; }
 | 
			
		||||
        public int IsDelivery { get; set; }
 | 
			
		||||
        public string StartTime
 | 
			
		||||
        public int id { get; set; }
 | 
			
		||||
        public byte deleted { get; set; }
 | 
			
		||||
        public string formId { get; set; }
 | 
			
		||||
        public string location { get; set; }
 | 
			
		||||
        public string location_code { get; set; }
 | 
			
		||||
        public string device_system_category_layer2 { get; set; }
 | 
			
		||||
        public string device_system_category_layer3 { get; set; }
 | 
			
		||||
        public byte work_type { get; set; }
 | 
			
		||||
        public string error_code { get; set; }
 | 
			
		||||
        public string fix_do { get; set; }
 | 
			
		||||
        public string fix_do_code { get; set; }
 | 
			
		||||
        public int fix_firm { get; set; }
 | 
			
		||||
        public byte status { get; set; }
 | 
			
		||||
        public int work_person_id { get; set; }
 | 
			
		||||
        public DateTime start_time { get; set; }
 | 
			
		||||
        public DateTime end_time { get; set; }
 | 
			
		||||
        public DateTime work_time { get; set; }
 | 
			
		||||
        public DateTime finish_time { get; set; }
 | 
			
		||||
        public string notice { get; set; }
 | 
			
		||||
        public string description { get; set; }
 | 
			
		||||
        public string work_type_name
 | 
			
		||||
        { 
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                if (!string.IsNullOrEmpty(startTime))
 | 
			
		||||
                Dictionary<byte, string> name = new Dictionary<byte, string>()
 | 
			
		||||
                {
 | 
			
		||||
                    return Convert.ToDateTime(startTime).ToString("yyyy-MM-dd");
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    return null;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            set { startTime = value; }
 | 
			
		||||
        }
 | 
			
		||||
        public string EndTime
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                if (!string.IsNullOrEmpty(endTime))
 | 
			
		||||
                {
 | 
			
		||||
                    return Convert.ToDateTime(endTime).ToString("yyyy-MM-dd");
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    return null;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            set { endTime = value; }
 | 
			
		||||
        }
 | 
			
		||||
        public string Description { get; set; }
 | 
			
		||||
        public int EmailType { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
    public class OperationCreatePlan : OperationCreatePlanModal
 | 
			
		||||
    {
 | 
			
		||||
        public string PlanId { get; set; }
 | 
			
		||||
        public string SerialNumber { get; set; }
 | 
			
		||||
 | 
			
		||||
        private string updatedAt;
 | 
			
		||||
        public int UpdatedBy { get; set; } //修改者
 | 
			
		||||
        public string UpdatedAt { get { return Convert.ToDateTime(updatedAt).ToString("yyyy-MM-dd HH:mm:ss"); } set { updatedAt = value; } } //修改時間
 | 
			
		||||
        private string lastCreateTime;
 | 
			
		||||
        public string LastCreateTime { get { return Convert.ToDateTime(lastCreateTime).ToString("yyyy-MM-dd HH:mm:ss"); } set { lastCreateTime = value; } }
 | 
			
		||||
        public string PowerStationName { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
    public class OperationPlanTable : OperationCreatePlan
 | 
			
		||||
    {
 | 
			
		||||
        public string TypeName { get; set; }
 | 
			
		||||
        public string Schedule { get; set; }
 | 
			
		||||
        public string EmailTypeName { get; set; }
 | 
			
		||||
        public string CreatedPerson { get; set; }
 | 
			
		||||
        public string Function { get; set; }//功能
 | 
			
		||||
        public string ScheduleDay { get; set; }
 | 
			
		||||
        public string StartTimeString { get; set; }
 | 
			
		||||
        public string CreateTimeString { get; set; }
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class PlanToRecord : Actor
 | 
			
		||||
    {
 | 
			
		||||
        public int PowerStationId { get; set; }
 | 
			
		||||
        public int WorkType { get; set; }
 | 
			
		||||
        public string StartTime { get; set; }
 | 
			
		||||
        public string EndTime { get; set; }
 | 
			
		||||
        public string Notice { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class OperationRecord : UserInfo
 | 
			
		||||
    {
 | 
			
		||||
        private string startTime, endTime, finishTime, workTime;
 | 
			
		||||
        public string FormId { get; set; }
 | 
			
		||||
        public string SerialNumber { get; set; }
 | 
			
		||||
        public int PowerStationId { get; set; }
 | 
			
		||||
        public string PowerStationName { get; set; }
 | 
			
		||||
        public byte WorkType { get; set; }
 | 
			
		||||
        public string ErrorCode { get; set; }
 | 
			
		||||
        public string FixDo { get; set; }
 | 
			
		||||
        public byte FixFirm { get; set; }
 | 
			
		||||
        public byte Status { get; set; }
 | 
			
		||||
        public List<int> WorkPersonIds { get; set; }
 | 
			
		||||
        public string StartTime
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                if (!string.IsNullOrEmpty(startTime))
 | 
			
		||||
                {
 | 
			
		||||
                    return Convert.ToDateTime(startTime).ToString("yyyy-MM-dd");
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    return null;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            set { startTime = value; }
 | 
			
		||||
        } //開始時間
 | 
			
		||||
        public string EndTime
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                if (!string.IsNullOrEmpty(endTime))
 | 
			
		||||
                {
 | 
			
		||||
                    return Convert.ToDateTime(endTime).ToString("yyyy-MM-dd");
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    return null;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            set { endTime = value; }
 | 
			
		||||
        } // 結束時間
 | 
			
		||||
        public string FinishTime
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                if (!string.IsNullOrEmpty(finishTime))
 | 
			
		||||
                {
 | 
			
		||||
                    return Convert.ToDateTime(finishTime).ToString("yyyy-MM-dd");
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    return null;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            set { finishTime = value; }
 | 
			
		||||
        } // 完成時間
 | 
			
		||||
        public string WorkTime
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                if (!string.IsNullOrEmpty(workTime))
 | 
			
		||||
                {
 | 
			
		||||
                    return Convert.ToDateTime(workTime).ToString("yyyy-MM-dd");
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    return null;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            set { workTime = value; }
 | 
			
		||||
        } // 工作時間
 | 
			
		||||
        public string Notice { get; set; }
 | 
			
		||||
        public string Description { get; set; }
 | 
			
		||||
        public List<OperationRecordFile> RecordFiles { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class OperationRecordFile : Actor
 | 
			
		||||
    {
 | 
			
		||||
        public int Id { get; set; }
 | 
			
		||||
        public int RecordId { get; set; }
 | 
			
		||||
        public string FileName { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// 運維作業記錄的搜尋條件
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    public class PostOperationRecordFilter
 | 
			
		||||
    {
 | 
			
		||||
        public List<int> CityIds { get; set; } //縣市編號
 | 
			
		||||
        public List<int> PowerStationIds { get; set; } //電站編號
 | 
			
		||||
        public byte WorkType { get; set; } //工作項目
 | 
			
		||||
        public string Range { get; set; } //取得搜尋範圍
 | 
			
		||||
        public string StartTime { get; set; } //起始日期
 | 
			
		||||
        public string EndTime { get; set; } //結束日期
 | 
			
		||||
        public byte Status { get; set; }//狀態
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// 運維作業記錄的表單
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    public class OperationRecordDataTable : OperationRecord
 | 
			
		||||
    {
 | 
			
		||||
        public string WorkTypeText
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                Dictionary<int, string> pairs = new Dictionary<int, string>()
 | 
			
		||||
                {
 | 
			
		||||
                    { 0, "清洗"},
 | 
			
		||||
                    { 1, "巡檢"},
 | 
			
		||||
                    { 2, "維修"},
 | 
			
		||||
                    { 1 , "保養" },
 | 
			
		||||
                    { 2 , "維修" }
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                return pairs[WorkType];
 | 
			
		||||
                return name[work_type];
 | 
			
		||||
            }
 | 
			
		||||
        } //工作項目名稱
 | 
			
		||||
        public string StatusText
 | 
			
		||||
        }
 | 
			
		||||
        public string status_name
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                Dictionary<int, string> pairs = new Dictionary<int, string>()
 | 
			
		||||
                Dictionary<byte, string> name = new Dictionary<byte, string>()
 | 
			
		||||
                {
 | 
			
		||||
                    { 0, "未完成"},
 | 
			
		||||
                    { 1, "完成"},
 | 
			
		||||
                    { 2, "未完成-過期"},
 | 
			
		||||
                    { 3, "完成-過期"},
 | 
			
		||||
                    { 3, "完成-過期"}
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                return pairs[Status];
 | 
			
		||||
            }
 | 
			
		||||
        } //狀態名稱
 | 
			
		||||
        public string WorkPersonName { get; set; } //處理人員
 | 
			
		||||
        public string OperationPredict
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                if (!string.IsNullOrEmpty(StartTime) || !string.IsNullOrEmpty(EndTime))
 | 
			
		||||
                {
 | 
			
		||||
                    return StartTime + " ~ " + EndTime;
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    return string.Empty;
 | 
			
		||||
                return name[status];
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        } //本次作業預計
 | 
			
		||||
        public List<string> HyperLinks { get; set; }
 | 
			
		||||
        public string Function { get; set; }
 | 
			
		||||
        public string device_name { get; }
 | 
			
		||||
        public string user_full_name { get; }
 | 
			
		||||
        public List<Operation_Record_File> lorf { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class PostOperationRecord
 | 
			
		||||
    public class Operation_Record_File : Actor
 | 
			
		||||
    { 
 | 
			
		||||
        public int Id { get; set; }
 | 
			
		||||
        public int PowerStationId { get; set; }
 | 
			
		||||
        public byte WorkType { get; set; }
 | 
			
		||||
        public string ErrorCode { get; set; }
 | 
			
		||||
        public string FixDo { get; set; }
 | 
			
		||||
        public byte FixFirm { get; set; }
 | 
			
		||||
        public byte Status { get; set; }
 | 
			
		||||
        public List<int> WorkPersonIds { get; set; }
 | 
			
		||||
        public string StartTime { get; set; }//開始時間
 | 
			
		||||
        public string EndTime { get; set; } // 結束時間
 | 
			
		||||
        public string FinishTime { get; set; } // 完成時間
 | 
			
		||||
        public string WorkTime { get; set; } // 工作時間
 | 
			
		||||
        public string Notice { get; set; }
 | 
			
		||||
        public string Description { get; set; }
 | 
			
		||||
        public IFormFile[] RecordFiles { get; set; }
 | 
			
		||||
        public byte Emailcheck { get; set; }
 | 
			
		||||
        public int id { get; set; }
 | 
			
		||||
        public byte deleted { get; set; }
 | 
			
		||||
        public int record_id { get; set; }
 | 
			
		||||
        public IFormFile file { get; set; }
 | 
			
		||||
        public string ori_file_name { get; set; }
 | 
			
		||||
        public string save_file_name { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class UpdateOperationRecord : Actor
 | 
			
		||||
    {
 | 
			
		||||
        public string FormId { get; set; }
 | 
			
		||||
        public string SerialNumber { get; set; }
 | 
			
		||||
        public string ErrorCode { get; set; }
 | 
			
		||||
        public string FixDo { get; set; }
 | 
			
		||||
        public byte FixFirm { get; set; }
 | 
			
		||||
        public byte Status { get; set; }
 | 
			
		||||
        public int WorkPersonId { get; set; }
 | 
			
		||||
        public string FinishTime { get; set; } // 完成時間
 | 
			
		||||
        public string WorkTime { get; set; } // 工作時間
 | 
			
		||||
        public string Notice { get; set; }
 | 
			
		||||
        public string Description { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// 針對運維作業記錄檔案
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    public class PostOperationRecordIdAndSelectedId
 | 
			
		||||
    {
 | 
			
		||||
        public int ReocdeId { get; set; }
 | 
			
		||||
        public int SelectedId { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class OperationPlan
 | 
			
		||||
    {
 | 
			
		||||
        private string startTime;
 | 
			
		||||
        public int Id { get; set; }
 | 
			
		||||
        public int ScheduleNum { get; set; }
 | 
			
		||||
        public int ScheduleType { get; set; }
 | 
			
		||||
        public string StartTime { get { return Convert.ToDateTime(startTime).ToString("yyyy-MM-dd HH:mm:ss"); } set { startTime = value; } } //修改時間
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class OperationRecordPersonnel : Actor
 | 
			
		||||
    {
 | 
			
		||||
        public int Id { get; set; }
 | 
			
		||||
        public byte Deleted { get; set; }
 | 
			
		||||
        public int OperationRecordId { get; set; }
 | 
			
		||||
        public int UserId { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								FrontendWebApi/wwwroot/upload/operation/image1.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								FrontendWebApi/wwwroot/upload/operation/image1.jpg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 7.3 KiB  | 
		Loading…
	
		Reference in New Issue
	
	Block a user