using APT.BaseData.Domain.ApiModel; using APT.BaseData.Domain.ApiModel.Platform; using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.Entities.BD; using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.Enums; using APT.BaseData.Domain.IServices; using APT.BaseData.Domain.IServices.FM; using APT.Infrastructure.Api; using APT.Infrastructure.Core; using APT.Utility; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Data; using System.Dynamic; using System.IO; using System.Linq; using System.Text; namespace APT.PF.WebApiControllers.Api.PF { [Route("api/PF/Import")] public class ImportController : APTApiController { /// /// 获取导入数据 /// /// /// [HttpPost, Route("GetImportData")] public JsonActionResult GetImportData() { return SafeExecute(() => { return Import(false); }); } [HttpPost, Route("DownLoadFile")] public JsonActionResult DownLoadFile([FromBody] dynamic config) { return SafeExecute(() => { var importService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService(); var importData = importService.DownLoadFile(config); return importData; }); } private ImportDataModel Import(bool isUpdate) { var httpRequest = this.HttpContext.Request; string orgIdStr = httpRequest.Form["OrgId"];// 获取 组织 string importConfigCode = httpRequest.Form["ImportConfigCode"];//导入配置代码 var delFlag = false; if (!string.IsNullOrEmpty(httpRequest.Form["delFlag"])) { delFlag = bool.Parse(httpRequest.Form["delFlag"]); } Guid? orgId = null; if (!string.IsNullOrEmpty(orgIdStr)) orgId = new Guid(orgIdStr); else return null; ImportDataModel result = null; var importService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService(); foreach (var key in httpRequest.Form.Files) // 文件键 { var postedFile = key; // 获取文件键对应的文件对象 var dic = Path.Combine(System.AppContext.BaseDirectory, "tempImportFiles"); if (!Directory.Exists(dic)) Directory.CreateDirectory(dic); string fileName = Path.Combine(dic, DateTime.Now.ToString("yyyy_MM_dd_hh_mm_ss") + "_" + postedFile.FileName); Byte[] fileData = new Byte[postedFile.Length]; Stream sr = postedFile.OpenReadStream();//创建数据流对象 sr.Read(fileData, 0, (int)postedFile.Length); using (FileStream fs = new FileStream(fileName, FileMode.CreateNew)) { fs.Write(fileData, 0, fileData.Length); fs.Flush(); fs.Close(); } result = importService.GetImortData(orgId.Value, importConfigCode, fileName, isUpdate, delFlag); try { System.IO.File.Delete(fileName); } catch { } } return result; } [HttpPost, Route("ImportAndUpdate")] public JsonActionResult ImportAndUpdate() { return SafeExecute(() => { return Import(true); }); } [HttpPost, Route("ImportUpdateTest")] public JsonActionResult ImportUpdateTest(IFormCollection files) { return SafeExecute(() => { var httpRequest = this.HttpContext.Request; string orgIdStr = httpRequest.Form["OrgId"]; string fileName = string.Empty;//文件名称 #region 文件先保存 foreach (var key in httpRequest.Form.Files) // 文件键 { var postedFile = key; // 获取文件键对应的文件对象 var dic = Path.Combine(System.AppContext.BaseDirectory, "tempImportFiles"); if (!Directory.Exists(dic)) Directory.CreateDirectory(dic); fileName = Path.Combine(dic, DateTime.Now.ToString("yyyy_MM_dd_hh_mm_ss") + "_" + postedFile.FileName); Byte[] fileData = new Byte[postedFile.Length]; Stream sr = postedFile.OpenReadStream();//创建数据流对象 sr.Read(fileData, 0, (int)postedFile.Length); using (FileStream fs = new FileStream(fileName, FileMode.CreateNew)) { fs.Write(fileData, 0, fileData.Length); fs.Flush(); fs.Close(); } } #endregion ////List prodRecodes = new List();//产品生产记录表 //List addRecords = new List(); //List updateRecords = new List(); //#region excel读取 //var importTempDatas = FileUtils.ReadExcelByImport(fileName.Contains(".xlsx") ? fileName : fileName + ".xlsx"); //#endregion //DateTime date = Convert.ToDateTime(importTempDatas[0].START_TIME); //var timeMin = new DateTime(date.Year, date.Month, 1);//月份第一天 //var timeEnd = timeMin.AddMonths(1).AddDays(-1);//月份最后一天 //#region 获取生产单元信息 //var baseFilter = new BaseFilter(new Guid(orgIdStr)); //baseFilter.SelectField = new string[] { "ID", "NAME" }; //var nodes = this.GetEntities(t => t.IS_PLAN, baseFilter); //#endregion //#region 获取产品生产记录表旧数据 //var baseFilterold = new BaseFilter(); //baseFilterold.SelectField = new string[] { "ID", "QTY", "METER_NODE_ID", "START_TIME" }; //var oldRecords = this.GetEntities(t => t.START_TIME >= timeMin && t.START_TIME <= timeEnd, baseFilterold, true).ToList(); //#endregion //#region 生产ID //var baseFilterPud = new BaseFilter(); //baseFilterPud.SelectField = new string[] { "ID" }; //var product = this.GetEntity(i => i.ORG_ID == new Guid(orgIdStr), baseFilterPud); //#endregion //foreach (var item in importTempDatas) //{ // item.METER_NODE_ID = nodes.Single(x => x.NAME == item.Name).ID; // if (oldRecords.Any(x => x.METER_NODE_ID == item.METER_NODE_ID && x.START_TIME == Convert.ToDateTime(item.START_TIME)))//旧表已存在数据 // { // var nodeRecords = oldRecords.Where(x => x.METER_NODE_ID == item.METER_NODE_ID // && x.START_TIME >= Convert.ToDateTime(item.START_TIME) && x.START_TIME < Convert.ToDateTime(item.START_TIME).AddDays(1)); // var dbQty = nodeRecords.Sum(i => i.QTY); // if (dbQty < Convert.ToDecimal(item.QTY))//新修改的数据值大 // { // var record = nodeRecords.FirstOrDefault(); // record.QTY += (Convert.ToDecimal(item.QTY) - dbQty); // updateRecords.Add(record); // } // else if (dbQty > Convert.ToDecimal(item.QTY))//新修改的值变小 // { // var deQty = dbQty - Convert.ToDecimal(item.QTY); // foreach (var x in nodeRecords) // { // var minQty = Math.Min(x.QTY, deQty); // x.QTY -= minQty; // updateRecords.Add(x); // deQty -= minQty; // if (deQty <= 0) // break; // } // } // } // else//不存在 // { // var record = new T_ED_PROD_RECORD() // { // ID = Guid.NewGuid(), // PRODUCT_ID = product.ID, // QTY = Convert.ToDecimal(item.QTY), // START_TIME = Convert.ToDateTime(item.START_TIME), // END_TIME = Convert.ToDateTime(item.START_TIME).AddDays(1), // METER_NODE_ID = item.METER_NODE_ID, // ORG_ID = new Guid(orgIdStr) // }; // addRecords.Add(record); // } //} //#region 更新数据 //this.UnifiedCommit(() => //{ // this.BantchUpdateEntityNoCommit(updateRecords, new string[] { "QTY" }); // this.BantchAddEntityNoCommit(addRecords); //}); //#endregion return true; }); } //#region 导入历史数据 ///// ///// 导入历史用量数据 ///// ///// 导入的Excel ///// //[HttpPost, Route("ImportHistData")] //public JsonActionResult ImportHistData(IFormCollection files) //{ // return SafeExecute(() => // { // dynamic result = new ExpandoObject(); // var httpRequest = this.HttpContext.Request; // string orgIdStr = httpRequest.Form["OrgId"]; // string fileName = string.Empty;//文件名称 // #region 文件先保存 // foreach (var key in httpRequest.Form.Files) // 文件键 // { // var postedFile = key; // 获取文件键对应的文件对象 // var dic = Path.Combine(System.AppContext.BaseDirectory, "histImportFiles"); // if (!Directory.Exists(dic)) // Directory.CreateDirectory(dic); // fileName = Path.Combine(dic, DateTime.Now.ToString("yyyy_MM_dd_hh_mm_ss") + "_" + postedFile.FileName); // Byte[] fileData = new Byte[postedFile.Length]; // Stream sr = postedFile.OpenReadStream();//创建数据流对象 // sr.Read(fileData, 0, (int)postedFile.Length); // using (FileStream fs = new FileStream(fileName, FileMode.CreateNew)) // { // fs.Write(fileData, 0, fileData.Length); // fs.Flush(); // fs.Close(); // } // } // #endregion // List addDosage = new List(); // List updateDosage = new List(); // #region excel读取 // var importHistDatas = FileUtils.ReadExcelByImportHistData(fileName); // if (importHistDatas.Count == 0) // return null; // var stime = importHistDatas.Min(x => x.Time); // var etime = importHistDatas.Max(x => x.Time); // #endregion // #region 获取器具信息和节点信息 // var baseFilter = new BaseFilter(new Guid(orgIdStr)) // { // IgnoreDataRule = true, // SelectField = new string[] { // "NAME", "Nav_ApplianceAttrs", "ENERGY_CLASS_ID", "APPLIANCE_GRADE", // "Nav_EnergyClass.Nav_EnergyType.Nav_UnitEnumItem.POINTNUM", // "Nav_EnergyClass.Nav_EnergyType.Nav_UnitEnumItem.NAME" } // }; // var apps = this.GetEntities(x => x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, baseFilter)?.ToList(); // baseFilter.SelectField = new string[] // { // "PARENT_ID", "APPLIANCE_ID", "NAME", "Nav_Appliance.NAME", "Nav_Appliance.APPLIANCE_GRADE" // }; // var node = GetEntities(x => x.Nav_Appliance != null, baseFilter); // #endregion // #region 获取历史用量表数据 // baseFilter.SelectField = new string[] { // "APPLIANCE_ID", "TIME", "DOSAGE", "ORG_ID" // }; // updateDosage = GetEntities(x => x.TIME >= stime && x.TIME <= etime, baseFilter)?.ToList(); // #endregion // var head = new List // { // new TableHeadModel { Title = $"器具", DataIndex = "app" }, // new TableHeadModel { Title = "节点名称", DataIndex = "node" }, // new TableHeadModel { Title = "器具等级", DataIndex = "grade" }, // new TableHeadModel { Title = "单位", DataIndex = "unit" } // }; // var startTime = new DateTime(stime.Year, 1, 1); // var endTime = stime.AddYears(1); // while (startTime < endTime) // { // head.Add(new TableHeadModel { Title = startTime.ToString("yyyy-MM"), DataIndex = startTime.ToString("yyyy-MM") }); // startTime = startTime.AddMonths(1); // } // var dataList = new List>(); // if (importHistDatas.Any()) // { // var appArry = importHistDatas.Select(x => x.Name); // var app = new List(); // foreach (var item in appArry) // { // var appName = apps.Where(x => x.NAME.Contains(item)).FirstOrDefault(); // if (appName != null && !app.Contains(appName.NAME)) // { // app.Add(appName.NAME); // } // } // foreach (var item in app) // { // var meterNode = node.FirstOrDefault(x => x.Nav_Appliance?.NAME == item); // var read = apps.FirstOrDefault(x => x.NAME == item); // var dicData = new Dictionary // { // { "app", item }, // { "node", meterNode?.NAME }, // { "grade", Enum.GetName(typeof(FMApplianceGrade), read.APPLIANCE_GRADE) }, // { "unit", read.Nav_EnergyClass.Nav_EnergyType.Nav_UnitEnumItem.NAME } // }; // dataList.Add(dicData); // } // foreach (var item in importHistDatas) // { // var appAttr = apps.Where(x => x.NAME.Contains(item.Name)).FirstOrDefault(); // if (appAttr != null) // { // var pointNum = appAttr.Nav_EnergyClass.Nav_EnergyType.Nav_UnitEnumItem.POINTNUM; // var month = updateDosage.FirstOrDefault(x => x.APPLIANCE_ID == appAttr.ID && x.TIME.ToIMonth() == item.Time.ToIMonth()); // if (month == null) // { // var energyDosage = new T_EM_HIST_ENERGY_DOSAGE_MONTH() // { // ID = new Guid(), // DOSAGE = item.Data, // APPLIANCE_ID = appAttr.ID, // TIME = item.Time, // ORG_ID = new Guid(orgIdStr), // }; // addDosage.Add(energyDosage); // } // else // { // month.DOSAGE = item.Data; // } // foreach (var dic in dataList) // { // if (dic.First().Value.ToString() == appAttr.NAME) // { // dic[item.Time.ToString("yyyy-MM")] = item.Data.ChangeDoubleToNum(pointNum); // } // } // } // } // } // result.Head = head; // result.DataSource = dataList; // #region 更新数据 // this.UnifiedCommit(() => // { // this.BantchUpdateEntityNoCommit(updateDosage); // this.BantchAddEntityNoCommit(addDosage); // }); // #endregion // result.message = true; // return result; // }); //} ///// ///// 导入历史用量数据 ///// ///// 导入的Excel ///// //[HttpPost, Route("ImportHistValData")] //public JsonActionResult ImportHistValData(IFormCollection files) //{ // return SafeExecute(() => // { // dynamic result = new ExpandoObject(); // var httpRequest = this.HttpContext.Request; // string orgIdStr = httpRequest.Form["OrgId"]; // string fileName = string.Empty;//文件名称 // #region 文件先保存 // foreach (var key in httpRequest.Form.Files) // 文件键 // { // var postedFile = key; // 获取文件键对应的文件对象 // var dic = Path.Combine(System.AppContext.BaseDirectory, "histImportFiles"); // if (!Directory.Exists(dic)) // Directory.CreateDirectory(dic); // fileName = Path.Combine(dic, DateTime.Now.ToString("yyyy_MM_dd_hh_mm_ss") + "_" + postedFile.FileName); // Byte[] fileData = new Byte[postedFile.Length]; // Stream sr = postedFile.OpenReadStream();//创建数据流对象 // sr.Read(fileData, 0, (int)postedFile.Length); // using (FileStream fs = new FileStream(fileName, FileMode.CreateNew)) // { // fs.Write(fileData, 0, fileData.Length); // fs.Flush(); // fs.Close(); // } // } // #endregion // List addVal = new List(); // List updateVal = new List(); // #region excel读取 // var importHistDatas = FileUtils.ReadExcelByImportHistData(fileName); // if (importHistDatas.Count == 0) // return null; // var stime = importHistDatas.Min(x => x.Time); // var etime = importHistDatas.Max(x => x.Time); // #endregion // #region 获取器具信息和节点信息 // var baseFilter = new BaseFilter(new Guid(orgIdStr)) // { // IgnoreDataRule = true, // SelectField = new string[] { // "NAME", "Nav_ApplianceAttrs", "ENERGY_CLASS_ID", "APPLIANCE_GRADE", // "Nav_EnergyClass.Nav_EnergyType.Nav_UnitEnumItem.POINTNUM", // "Nav_EnergyClass.Nav_EnergyType.Nav_UnitEnumItem.NAME" } // }; // var apps = this.GetEntities(x => x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, baseFilter)?.ToList(); // baseFilter.SelectField = new string[] // { // "PARENT_ID", "APPLIANCE_ID", "NAME", "Nav_Appliance.NAME", "Nav_Appliance.APPLIANCE_GRADE" // }; // var node = GetEntities(x => x.Nav_Appliance != null, baseFilter); // #endregion // #region 获取历史用量表数据 // baseFilter.SelectField = new string[] { // "APPLIANCE_ID", "TIME", "VAL", "ORG_ID" // }; // updateVal = GetEntities(x => x.TIME >= stime && x.TIME <= etime, baseFilter)?.ToList(); // #endregion // var head = new List // { // new TableHeadModel { Title = $"器具", DataIndex = "app" }, // new TableHeadModel { Title = "节点名称", DataIndex = "node" }, // new TableHeadModel { Title = "器具等级", DataIndex = "grade" }, // new TableHeadModel { Title = "单位", DataIndex = "unit" } // }; // var startTime = new DateTime(stime.Year, 1, 1); // var endTime = stime.AddYears(1); // while (startTime < endTime) // { // head.Add(new TableHeadModel { Title = startTime.ToString("yyyy-MM"), DataIndex = startTime.ToString("yyyy-MM") }); // startTime = startTime.AddMonths(1); // } // var dataList = new List>(); // if (importHistDatas.Any()) // { // var appArry = importHistDatas.Select(x => x.Name); // var app = new List(); // foreach (var item in appArry) // { // var appName = apps.Where(x => x.NAME.Contains(item)).FirstOrDefault(); // if (appName != null && !app.Contains(appName.NAME)) // { // app.Add(appName.NAME); // } // } // foreach (var item in app) // { // var meterNode = node.FirstOrDefault(x => x.Nav_Appliance?.NAME == item); // var read = apps.FirstOrDefault(x => x.NAME == item); // var dicData = new Dictionary // { // { "app", item }, // { "node", meterNode?.NAME }, // { "grade", Enum.GetName(typeof(FMApplianceGrade), read.APPLIANCE_GRADE) }, // { "unit", read.Nav_EnergyClass.Nav_EnergyType.Nav_UnitEnumItem.NAME } // }; // dataList.Add(dicData); // } // foreach (var item in importHistDatas) // { // var appAttr = apps.Where(x => x.NAME.Contains(item.Name)).FirstOrDefault(); // if (appAttr != null) // { // var pointNum = appAttr.Nav_EnergyClass.Nav_EnergyType.Nav_UnitEnumItem.POINTNUM; // var month = updateVal.FirstOrDefault(x => x.APPLIANCE_ID == appAttr.ID && x.TIME.ToIMonth() == item.Time.ToIMonth()); // if (month == null) // { // var energyVal = new T_EM_HIST_ENERGY_VAL_MONTH() // { // ID = new Guid(), // VAL = item.Data, // APPLIANCE_ID = appAttr.ID, // TIME = item.Time, // ORG_ID = new Guid(orgIdStr), // }; // addVal.Add(energyVal); // } // else // { // month.VAL = item.Data; // } // foreach (var dic in dataList) // { // if (dic.First().Value.ToString() == appAttr.NAME) // { // dic[item.Time.ToString("yyyy-MM")] = item.Data.ChangeDoubleToNum(pointNum); // } // } // } // } // } // result.Head = head; // result.DataSource = dataList; // #region 更新数据 // this.UnifiedCommit(() => // { // this.BantchUpdateEntityNoCommit(updateVal); // this.BantchAddEntityNoCommit(addVal); // }); // #endregion // result.message = true; // return result; // }); //} //#endregion //#region 导入抄表卡数据 ///// ///// 导入年抄表卡数据 ///// ///// ///// //[HttpPost, Route("ImportYearMeterReadData")] //public JsonActionResult ImportYearMeterReadData(IFormCollection files) //{ // return SafeExecute(() => // { // dynamic result = new ExpandoObject(); // var httpRequest = this.HttpContext.Request; // string orgIdStr = httpRequest.Form["OrgId"]; // string fileName = string.Empty;//文件名称 // #region 文件先保存 // foreach (var key in httpRequest.Form.Files) // 文件键 // { // var postedFile = key; // 获取文件键对应的文件对象 // var dic = Path.Combine(System.AppContext.BaseDirectory, "meterImportFiles"); // if (!Directory.Exists(dic)) // Directory.CreateDirectory(dic); // fileName = Path.Combine(dic, DateTime.Now.ToString("yyyy_MM_dd_hh_mm_ss") + "_" + postedFile.FileName); // Byte[] fileData = new Byte[postedFile.Length]; // Stream sr = postedFile.OpenReadStream();//创建数据流对象 // sr.Read(fileData, 0, (int)postedFile.Length); // using (FileStream fs = new FileStream(fileName, FileMode.CreateNew)) // { // fs.Write(fileData, 0, fileData.Length); // fs.Flush(); // fs.Close(); // } // } // #endregion // List addMeterRead = new List(); // List updateMeterRead = new List(); // #region excel读取 // var importMeterReadDatas = FileUtils.ReadExcelByImportYearMeterReadData(fileName); // var sTime = importMeterReadDatas.Min(x => x.Time); // var eTime = importMeterReadDatas.Max(x => x.Time); // #endregion // #region 获取器具信息 // var baseFilter = new BaseFilter(new Guid(orgIdStr)) // { // IgnoreDataRule = true, // SelectField = new string[] { "NAME", "Nav_ApplianceAttrs" } // }; // var apps = this.GetEntities(x => x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, baseFilter); // #endregion // #region 获取历史数据 // baseFilter.SelectField = new string[] { // "APPLIANCE_ID", "TIME", "SRC_DATA", "ORG_ID" // }; // updateMeterRead = GetEntities(x => x.TIME >= sTime && x.TIME <= eTime, baseFilter)?.ToList(); // #endregion // //var head = new List(); // //head.Add(new TableHeadModel { Title = "器具", DataIndex = "app" }); // //head.Add(new TableHeadModel { Title = "时间", DataIndex = "time" }); // //head.Add(new TableHeadModel { Title = "用量", DataIndex = "dosage" }); // //var dataList = new List>(); // if (importMeterReadDatas.Any()) // { // foreach (var item in importMeterReadDatas) // { // var appAttr = apps.Where(x => x.NAME.Contains(item.Name)).FirstOrDefault(); // if (appAttr != null) // { // var histRead = updateMeterRead. // FirstOrDefault(x => x.APPLIANCE_ID == appAttr.ID && x.TIME.ToIMonth() == item.Time.ToIMonth()); // if (histRead == null) // { // var meterRead = new T_EM_METER_READING_YEAR() // { // ID = new Guid(), // SRC_DATA = item.Data, // APPLIANCE_ID = appAttr.ID, // TIME = item.Time, // ORG_ID = new Guid(orgIdStr), // }; // addMeterRead.Add(meterRead); // } // else // histRead.SRC_DATA = item.Data; // } // } // } // #region 更新数据 // this.UnifiedCommit(() => // { // this.BantchUpdateEntityNoCommit(updateMeterRead); // this.BantchAddEntityNoCommit(addMeterRead); // }); // #endregion // result.message = true; // //result.Head = head; // //result.DataSource = dataList; // return result; // }); //} ///// ///// 导入月抄表卡数据 ///// ///// ///// //[HttpPost, Route("ImportMonthMeterReadData")] //public JsonActionResult ImportMonthMeterReadData(IFormCollection files) //{ // return SafeExecute(() => // { // dynamic result = new ExpandoObject(); // var httpRequest = this.HttpContext.Request; // string orgIdStr = httpRequest.Form["OrgId"]; // string fileName = string.Empty;//文件名称 // #region 文件先保存 // foreach (var key in httpRequest.Form.Files) // 文件键 // { // var postedFile = key; // 获取文件键对应的文件对象 // var dic = Path.Combine(System.AppContext.BaseDirectory, "meterImportFiles"); // if (!Directory.Exists(dic)) // Directory.CreateDirectory(dic); // fileName = Path.Combine(dic, DateTime.Now.ToString("yyyy_MM_dd_hh_mm_ss") + "_" + postedFile.FileName); // Byte[] fileData = new Byte[postedFile.Length]; // Stream sr = postedFile.OpenReadStream();//创建数据流对象 // sr.Read(fileData, 0, (int)postedFile.Length); // using (FileStream fs = new FileStream(fileName, FileMode.CreateNew)) // { // fs.Write(fileData, 0, fileData.Length); // fs.Flush(); // fs.Close(); // } // } // #endregion // List addMeterRead = new List(); // List updateMeterRead = new List(); // #region excel读取 // var importMeterReadDatas = FileUtils.ReadExcelByImportMonthMeterReadData(fileName); // var sTime = importMeterReadDatas.Min(x => x.Time); // var eTime = importMeterReadDatas.Max(x => x.Time); // #endregion // #region 获取器具信息 // var baseFilter = new BaseFilter(new Guid(orgIdStr)) // { // IgnoreDataRule = true, // SelectField = new string[] { "NAME", "Nav_ApplianceAttrs" } // }; // var apps = this.GetEntities(x => x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, baseFilter); // #endregion // #region 获取历史数据 // baseFilter.SelectField = new string[] { // "APPLIANCE_ID", "TIME", "SRC_DATA", "ORG_ID" // }; // updateMeterRead = GetEntities(x => x.TIME >= sTime && x.TIME <= eTime, baseFilter)?.ToList(); // #endregion // //var head = new List(); // //head.Add(new TableHeadModel { Title = "器具", DataIndex = "app" }); // //head.Add(new TableHeadModel { Title = "时间", DataIndex = "time" }); // //head.Add(new TableHeadModel { Title = "用量", DataIndex = "dosage" }); // //var dataList = new List>(); // if (importMeterReadDatas.Any()) // { // foreach (var item in importMeterReadDatas) // { // var appAttr = apps.Where(x => x.NAME.Contains(item.Name)).FirstOrDefault(); // if (appAttr != null) // { // var histRead = updateMeterRead. // FirstOrDefault(x => x.APPLIANCE_ID == appAttr.ID && x.TIME.ToIMonth() == item.Time.ToIMonth()); // if (histRead == null) // { // var meterRead = new T_EM_METER_READING_MONTH() // { // ID = new Guid(), // SRC_DATA = item.Data, // APPLIANCE_ID = appAttr.ID, // TIME = item.Time, // ORG_ID = new Guid(orgIdStr), // }; // addMeterRead.Add(meterRead); // } // else // histRead.SRC_DATA = item.Data; // } // } // } // #region 更新数据 // this.UnifiedCommit(() => // { // this.BantchUpdateEntityNoCommit(updateMeterRead); // this.BantchAddEntityNoCommit(addMeterRead); // }); // #endregion // result.message = true; // //result.Head = head; // //result.DataSource = dataList; // return result; // }); //} ///// ///// 导入日抄表卡数据 ///// ///// ///// //[HttpPost, Route("ImportDayMeterReadData")] //public JsonActionResult ImportDayMeterReadData(IFormCollection files) //{ // return SafeExecute(() => // { // dynamic result = new ExpandoObject(); // var httpRequest = this.HttpContext.Request; // string orgIdStr = httpRequest.Form["OrgId"]; // string fileName = string.Empty;//文件名称 // #region 文件先保存 // foreach (var key in httpRequest.Form.Files) // 文件键 // { // var postedFile = key; // 获取文件键对应的文件对象 // var dic = Path.Combine(System.AppContext.BaseDirectory, "meterImportFiles"); // if (!Directory.Exists(dic)) // Directory.CreateDirectory(dic); // fileName = Path.Combine(dic, DateTime.Now.ToString("yyyy_MM_dd_hh_mm_ss") + "_" + postedFile.FileName); // Byte[] fileData = new Byte[postedFile.Length]; // Stream sr = postedFile.OpenReadStream();//创建数据流对象 // sr.Read(fileData, 0, (int)postedFile.Length); // using (FileStream fs = new FileStream(fileName, FileMode.CreateNew)) // { // fs.Write(fileData, 0, fileData.Length); // fs.Flush(); // fs.Close(); // } // } // #endregion // List addMeterRead = new List(); // List updateMeterRead = new List(); // #region excel读取 // var importMeterReadDatas = FileUtils.ReadExcelByImportDayMeterReadData(fileName); // var sTime = importMeterReadDatas.Min(x => x.Time); // var eTime = importMeterReadDatas.Max(x => x.Time); // #endregion // #region 获取器具信息 // var baseFilter = new BaseFilter(new Guid(orgIdStr)) // { // IgnoreDataRule = true, // SelectField = new string[] { "NAME", "Nav_ApplianceAttrs" } // }; // var apps = this.GetEntities(x => x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, baseFilter); // #endregion // #region 获取历史数据 // baseFilter.SelectField = new string[] { // "APPLIANCE_ID", "TIME", "SRC_DATA", "ORG_ID" // }; // updateMeterRead = GetEntities(x => x.TIME >= sTime && x.TIME <= eTime, baseFilter)?.ToList(); // #endregion // //var head = new List(); // //head.Add(new TableHeadModel { Title = "器具", DataIndex = "app" }); // //head.Add(new TableHeadModel { Title = "时间", DataIndex = "time" }); // //head.Add(new TableHeadModel { Title = "用量", DataIndex = "dosage" }); // //var dataList = new List>(); // if (importMeterReadDatas.Any()) // { // foreach (var item in importMeterReadDatas) // { // var appAttr = apps.Where(x => x.NAME.Contains(item.Name)).FirstOrDefault(); // if (appAttr != null) // { // var histRead = updateMeterRead. // FirstOrDefault(x => x.APPLIANCE_ID == appAttr.ID && x.TIME.ToIMonth() == item.Time.ToIMonth()); // if (histRead == null) // { // var meterRead = new T_EM_METER_READING_DAY() // { // ID = new Guid(), // SRC_DATA = item.Data, // APPLIANCE_ID = appAttr.ID, // TIME = item.Time, // ORG_ID = new Guid(orgIdStr), // }; // addMeterRead.Add(meterRead); // } // else // histRead.SRC_DATA = item.Data; // } // } // } // #region 更新数据 // this.UnifiedCommit(() => // { // this.BantchUpdateEntityNoCommit(updateMeterRead); // this.BantchAddEntityNoCommit(addMeterRead); // }); // #endregion // result.message = true; // //result.Head = head; // //result.DataSource = dataList; // return result; // }); //} //#endregion //#region 导入生产记录信息 ///// ///// 导入生产记录数据 ///// ///// 导入的Excel ///// //[HttpPost, Route("ImportProductRecordData")] //public JsonActionResult ImportProductRecordData(IFormCollection files) //{ // return SafeExecute(() => // { // dynamic result = new ExpandoObject(); // var httpRequest = this.HttpContext.Request; // string orgIdStr = httpRequest.Form["OrgId"]; // string fileName = string.Empty;//文件名称 // #region 文件先保存 // foreach (var key in httpRequest.Form.Files) // 文件键 // { // var postedFile = key; // 获取文件键对应的文件对象 // var dic = Path.Combine(System.AppContext.BaseDirectory, "histImportFiles"); // if (!Directory.Exists(dic)) // Directory.CreateDirectory(dic); // fileName = Path.Combine(dic, DateTime.Now.ToString("yyyy_MM_dd_hh_mm_ss") + "_" + postedFile.FileName); // Byte[] fileData = new Byte[postedFile.Length]; // Stream sr = postedFile.OpenReadStream();//创建数据流对象 // sr.Read(fileData, 0, (int)postedFile.Length); // using (FileStream fs = new FileStream(fileName, FileMode.CreateNew)) // { // fs.Write(fileData, 0, fileData.Length); // fs.Flush(); // fs.Close(); // } // } // #endregion // List addRecord = new List(); // #region excel读取 // var importHistDatas = FileUtils.ReadExcelByImportProductRecordData(fileName); // #endregion // #region 获取获取产品,生产记录,班组,班别信息 // var baseFilter = new BaseFilter(new Guid(orgIdStr)) // { // IgnoreDataRule = true, // SelectField = new string[] { "CODE", "NAME" } // }; // var product = this.GetEntities(null, baseFilter)?.ToList(); // baseFilter.SelectField = new string[] { "NAME" }; // var node = this.GetEntities(null, baseFilter)?.ToList(); // var team = this.GetEntities(null, baseFilter)?.ToList(); // var clas = this.GetEntities(null, baseFilter)?.ToList(); // #endregion // var dataList = new List>(); // if (importHistDatas.Any()) // { // foreach (var item in importHistDatas) // { // var products = product.FirstOrDefault(x => x.CODE == item.Product_Code); // var nodes = node.FirstOrDefault(x => x.NAME.Contains(item.MeterNode_Name)); // var teams = team.FirstOrDefault(x => x.NAME.Contains(item.Team_Name)); // var cla = clas.FirstOrDefault(x => x.NAME.Contains(item.Class_Name)); // var status = (int)Enum.Parse(typeof(FMOrderStatusEnum), item.Order_Status); // if (products != null) // { // var proRecord = new T_ED_PROD_RECORD() // { // ORG_ID = new Guid(orgIdStr), // PRODUCT_ID = products.ID, // METER_NODE_ID = (Guid)(nodes?.ID), // TEAM_ID = teams?.ID, // CLASS_ID = cla?.ID, // QTY = item.Qty, // START_TIME = item.Start_Time, // END_TIME = item.End_Time, // MODIFY_TIME = DateTime.Now, // ORDER_STATUS = status, // REMARK = item.Remark, // }; // addRecord.Add(proRecord); // } // } // } // #region 更新数据 // this.UnifiedCommit(() => // { // this.BantchAddEntityNoCommit(addRecord); // }); // #endregion // result.message = true; // return result; // }); //} //#endregion //#region 导入能源采购记录 ///// ///// 导入能源采购记录 ///// ///// 导入的Excel ///// //[HttpPost, Route("ImportEnergyPurchaseData")] //public JsonActionResult ImportEnergyPurchaseData(IFormCollection files) //{ // return SafeExecute(() => // { // dynamic result = new ExpandoObject(); // var httpRequest = this.HttpContext.Request; // string orgIdStr = httpRequest.Form["OrgId"]; // string fileName = string.Empty;//文件名称 // #region 文件先保存 // foreach (var key in httpRequest.Form.Files) // 文件键 // { // var postedFile = key; // 获取文件键对应的文件对象 // var dic = Path.Combine(System.AppContext.BaseDirectory, "histImportFiles"); // if (!Directory.Exists(dic)) // Directory.CreateDirectory(dic); // fileName = Path.Combine(dic, DateTime.Now.ToString("yyyy_MM_dd_hh_mm_ss") + "_" + postedFile.FileName); // Byte[] fileData = new Byte[postedFile.Length]; // Stream sr = postedFile.OpenReadStream();//创建数据流对象 // sr.Read(fileData, 0, (int)postedFile.Length); // using (FileStream fs = new FileStream(fileName, FileMode.CreateNew)) // { // fs.Write(fileData, 0, fileData.Length); // fs.Flush(); // fs.Close(); // } // } // #endregion // List addPurchase = new List(); // #region excel读取 // var importEnergyPurchaseDatas = FileUtils.ReadExcelByImportEnergyPurchaseData(fileName); // #endregion // #region 获取能源分类分项数据和能源库存 // var baseFilter = new BaseFilter() // { // OrgId = new Guid(orgIdStr), // IgnoreDataRule = true, // SelectField = new string[] { "NAME" }, // }; // var energy = GetEntities(null, baseFilter); // baseFilter.SelectField = new string[] // { // "ENGERY_ID", "QTY", "RESERVE_QTY", "AVAILA_QTY" // }; // var energyStore = GetEntities(null, baseFilter); // #endregion // if (importEnergyPurchaseDatas.Any()) // { // foreach (var item in importEnergyPurchaseDatas) // { // var energys = energy.FirstOrDefault(x => x.NAME.Contains(item.Energy_Name)); // var store = energyStore.FirstOrDefault(x => x.ENGERY_ID == energys.ID); // var energyPurchase = new T_ED_ENERGY_PURCHASE() // { // ORG_ID = new Guid(orgIdStr), // ENGERY_ID = energys.ID, // QTY = item.Qty, // PLAN_DATE = item.Plan_Date, // BATCH = item.Batch, // }; // if (store != null) // { // energyPurchase.CURRENT_QTY = store.QTY; // energyPurchase.AVAILA_QTY = store.AVAILA_QTY; // energyPurchase.RESERVE_QTY = store.RESERVE_QTY; // } // addPurchase.Add(energyPurchase); // } // } // #region 更新数据 // this.UnifiedCommit(() => // { // this.BantchAddEntityNoCommit(addPurchase); // }); // #endregion // return true; // }); //} //#endregion //#region 导入生产记录 ///// ///// 导入生产记录(表单ED052) ///// ///// ///// //[HttpPost, Route("ImportProductionRecords")] //public JsonActionResult ImportProductionRecords(IFormCollection files) //{ // return SafeExecute(() => // { // var httpRequest = this.HttpContext.Request; // var orgId = new Guid(httpRequest.Form["OrgId"]); // string fileName = string.Empty;//文件名称 // #region 文件先保存 // foreach (var key in httpRequest.Form.Files) // 文件键 // { // var postedFile = key; // 获取文件键对应的文件对象 // var dic = Path.Combine(System.AppContext.BaseDirectory, "histImportFiles"); // if (!Directory.Exists(dic)) // Directory.CreateDirectory(dic); // fileName = Path.Combine(dic, DateTime.Now.ToString("yyyy_MM_dd_hh_mm_ss") + "_" + postedFile.FileName); // Byte[] fileData = new Byte[postedFile.Length]; // Stream sr = postedFile.OpenReadStream();//创建数据流对象 // sr.Read(fileData, 0, (int)postedFile.Length); // using (FileStream fs = new FileStream(fileName, FileMode.CreateNew)) // { // fs.Write(fileData, 0, fileData.Length); // fs.Flush(); // fs.Close(); // } // } // #endregion // var datas = FileUtils.ReadExcelByImportProductionRecords(fileName); // var productFilter = new BaseFilter(orgId) // { // IgnoreDataRule = true, // SelectField = new string[] { "ID", "CODE" } // }; // var products = this.GetEntities(null, productFilter); // var baseFilter = new BaseFilter(orgId) // { // IgnoreDataRule = true, // SelectField = new string[] { "ID", "NAME" } // }; // var nodes = this.GetEntities(null, baseFilter); // var teams = this.GetEntities(null, baseFilter); // var classList = this.GetEntities(null, baseFilter); // var list = new List(); // foreach (var item in datas) // { // var model = new T_ED_PROD_RECORD // { // ORG_ID = orgId, // START_TIME = item.Start_Time, // END_TIME = item.End_Time, // WORKHOUR = item.WorkHour, // QTY = item.Qty // }; // var node = nodes.FirstOrDefault(x => x.NAME == item.MeterNode_Name); // if (node == null) // throw new Exception("导入的生产单元不存在!"); // model.METER_NODE_ID = node.ID; // var classItem = classList.FirstOrDefault(x => x.NAME == item.Class_Name); // if (classItem == null && item.Class_Name != "全天") // throw new Exception("导入的班别不存在!"); // model.CLASS_ID = classItem?.ID; // var team = teams.FirstOrDefault(x => x.NAME == item.Team_Name); // if (team == null && !string.IsNullOrEmpty(item.Team_Name)) // throw new Exception("导入的班组不存在!"); // model.TEAM_ID = team?.ID; // var product = products.FirstOrDefault(x => x.CODE == item.Product_Name); // if (product == null && item.Product_Name != "产品") // throw new Exception("导入的产品不存在!"); // model.PRODUCT_ID = product?.ID; // list.Add(model); // } // if (list.Any()) // { // var model = list.First(); // var time = model.START_TIME.ToIMonth().FromIMonth(); // this.UnifiedCommit(() => // { // this.DeleteEntityNoCommit(x=>x.METER_NODE_ID==model.METER_NODE_ID && x.START_TIME>=time && x.START_TIME ///// 导入产量按部门 ///// ///// ///// //[HttpPost, Route("ImportProductionRecordsByDept")] //public JsonActionResult ImportProductionRecordsByDept(IFormCollection files) //{ // return SafeExecute(() => // { // var httpRequest = this.HttpContext.Request; // var orgId = new Guid(httpRequest.Form["OrgId"]); // string fileName = string.Empty;//文件名称 // #region 文件先保存 // foreach (var key in httpRequest.Form.Files) // 文件键 // { // var postedFile = key; // 获取文件键对应的文件对象 // var dic = Path.Combine(System.AppContext.BaseDirectory, "histImportFiles"); // if (!Directory.Exists(dic)) // Directory.CreateDirectory(dic); // fileName = Path.Combine(dic, DateTime.Now.ToString("yyyy_MM_dd_hh_mm_ss") + "_" + postedFile.FileName); // Byte[] fileData = new Byte[postedFile.Length]; // Stream sr = postedFile.OpenReadStream();//创建数据流对象 // sr.Read(fileData, 0, (int)postedFile.Length); // using (FileStream fs = new FileStream(fileName, FileMode.CreateNew)) // { // fs.Write(fileData, 0, fileData.Length); // fs.Flush(); // fs.Close(); // } // } // #endregion // var datas = FileUtils.ReadExcelByImportDeptRecords(fileName); // var baseFilter = new BaseFilter(orgId) // { // IgnoreDataRule = true, // SelectField = new string[] { "ID", "NAME" } // }; // var nodes = this.GetEntities(null, baseFilter); // var equips = this.GetEntities(null, baseFilter); // var list = new List(); // foreach (var item in datas) // { // var model = new T_ED_DEPT_RECORD // { // ORG_ID = orgId, // TIME = item.Time, // QTY = item.Qty // }; // var node = nodes.FirstOrDefault(x => x.NAME == item.Dept_Name); // if (node == null) // throw new Exception("导入的部门不存在!"); // model.DEPARTMENT_ID = node.ID; // var equip = equips.FirstOrDefault(x => x.NAME == item.Equip_Name); // if (equip == null) // throw new Exception("导入的设备不存在!"); // model.EQUIPMENT_ID = equip.ID; // list.Add(model); // } // if (list.Any()) // { // var model = list.First(); // this.UnifiedCommit(() => // { // this.DeleteEntityNoCommit(x => x.DEPARTMENT_ID == model.DEPARTMENT_ID && x.TIME.Year == model.TIME.Year); // this.BantchAddEntityNoCommit(list); // }); // } // return true; // }); //} //#endregion //#region 导入生产计划 ///// ///// 导入生产记录(表单PM038) ///// ///// ///// //[HttpPost, Route("ImportProductionPlan")] //public JsonActionResult ImportProductionPlan(IFormCollection files) //{ // return SafeExecute(() => // { // var httpRequest = this.HttpContext.Request; // var orgId = new Guid(httpRequest.Form["OrgId"]); // string fileName = string.Empty;//文件名称 // #region 文件先保存 // foreach (var key in httpRequest.Form.Files) // 文件键 // { // var postedFile = key; // 获取文件键对应的文件对象 // var dic = Path.Combine(System.AppContext.BaseDirectory, "histImportFiles"); // if (!Directory.Exists(dic)) // Directory.CreateDirectory(dic); // fileName = Path.Combine(dic, DateTime.Now.ToString("yyyy_MM_dd_hh_mm_ss") + "_" + postedFile.FileName); // Byte[] fileData = new Byte[postedFile.Length]; // Stream sr = postedFile.OpenReadStream();//创建数据流对象 // sr.Read(fileData, 0, (int)postedFile.Length); // using (FileStream fs = new FileStream(fileName, FileMode.CreateNew)) // { // fs.Write(fileData, 0, fileData.Length); // fs.Flush(); // fs.Close(); // } // } // #endregion // var datas = FileUtils.ReadExcelByImportProductionPlans(fileName); // var productFilter = new BaseFilter(orgId) // { // IgnoreDataRule = true, // SelectField = new string[] { "ID", "CODE" } // }; // var products = this.GetEntities(null, productFilter); // var baseFilter = new BaseFilter(orgId) // { // IgnoreDataRule = true, // SelectField = new string[] { "ID", "NAME" } // }; // var nodes = this.GetEntities(null, baseFilter); // var list = new List(); // foreach (var item in datas) // { // var model = new T_PM_PRODUCT_PLAN // { // ORG_ID = orgId, // START_TIME = item.Start_Time, // END_TIME = item.End_Time, // QTY = item.Qty, // AVG_QTY = item.Qty // }; // var node = nodes.FirstOrDefault(x => x.NAME == item.MeterNode_Name); // if (node == null) // throw new Exception("导入的生产单元不存在!"); // model.NODE_ID = node.ID; // var product = products.FirstOrDefault(x => x.CODE == item.Product_Name); // if (product == null && item.Product_Name != "产品") // throw new Exception("导入的产品不存在!"); // model.PRODUCT_ID = product?.ID; // list.Add(model); // } // var creat = new List(); // var update = new List(); // if (list.Any()) // { // var codeRuleService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService(); // SystemCodeFilter filter = new SystemCodeFilter(); // filter.CodeType = (int)PFCodeRuleType.计划单号; // filter.Count = 1; // filter.OrgId = orgId; // //var code = codeRuleService.NewGenSerial(filter); // var nodeId = list.First().NODE_ID; // var records = this.GetEntities(x => x.NODE_ID == nodeId, new BaseFilter(orgId)); // foreach (var item in list) // { // var record = records.FirstOrDefault(x => // x.PRODUCT_ID == item.PRODUCT_ID && x.START_TIME == item.START_TIME && // x.END_TIME == item.END_TIME); // if (record != null) // { // record.CODE = codeRuleService.NewGenSerial(filter); // record.QTY = item.QTY; // record.AVG_QTY = item.QTY; // update.Add(record); // } // else // { // item.CODE = codeRuleService.NewGenSerial(filter); // creat.Add(item); // } // } // } // this.UnifiedCommit(() => // { // if (creat.Any()) // this.BantchAddEntityNoCommit(creat); // if (update.Any()) // this.BantchUpdateEntityNoCommit(update); // }); // return true; // }); //} //#endregion } }