1329 lines
64 KiB
C#
1329 lines
64 KiB
C#
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<T_PF_FILE>
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
/// 获取导入数据
|
|
/// </summary>
|
|
/// <param name="filter"></param>
|
|
/// <returns></returns>
|
|
[HttpPost, Route("GetImportData")]
|
|
public JsonActionResult<ImportDataModel> GetImportData()
|
|
{
|
|
return SafeExecute<ImportDataModel>(() =>
|
|
{
|
|
return Import(false);
|
|
});
|
|
}
|
|
|
|
[HttpPost, Route("DownLoadFile")]
|
|
public JsonActionResult<dynamic> DownLoadFile([FromBody] dynamic config)
|
|
{
|
|
return SafeExecute<dynamic>(() =>
|
|
{
|
|
var importService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService<IFMImportService>();
|
|
|
|
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<IFMImportService>();
|
|
|
|
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<ImportDataModel> ImportAndUpdate()
|
|
{
|
|
return SafeExecute<ImportDataModel>(() =>
|
|
{
|
|
return Import(true);
|
|
});
|
|
}
|
|
|
|
[HttpPost, Route("ImportUpdateTest")]
|
|
public JsonActionResult<bool> ImportUpdateTest(IFormCollection files)
|
|
{
|
|
return SafeExecute<bool>(() =>
|
|
{
|
|
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<T_ED_PROD_RECORD> prodRecodes = new List<T_ED_PROD_RECORD>();//产品生产记录表
|
|
//List<T_ED_PROD_RECORD> addRecords = new List<T_ED_PROD_RECORD>();
|
|
//List<T_ED_PROD_RECORD> updateRecords = new List<T_ED_PROD_RECORD>();
|
|
//#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_BD_METER_NODE>(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_ED_PROD_RECORD>(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<T_FM_PRODUCT>(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 导入历史数据
|
|
///// <summary>
|
|
///// 导入历史用量数据
|
|
///// </summary>
|
|
///// <param name="files">导入的Excel</param>
|
|
///// <returns></returns>
|
|
//[HttpPost, Route("ImportHistData")]
|
|
//public JsonActionResult<dynamic> ImportHistData(IFormCollection files)
|
|
//{
|
|
// return SafeExecute<dynamic>(() =>
|
|
// {
|
|
// 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<T_EM_HIST_ENERGY_DOSAGE_MONTH> addDosage = new List<T_EM_HIST_ENERGY_DOSAGE_MONTH>();
|
|
// List<T_EM_HIST_ENERGY_DOSAGE_MONTH> updateDosage = new List<T_EM_HIST_ENERGY_DOSAGE_MONTH>();
|
|
// #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<T_BD_APPLIANCE>(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<T_BD_METER_NODE>(x => x.Nav_Appliance != null, baseFilter);
|
|
// #endregion
|
|
|
|
// #region 获取历史用量表数据
|
|
// baseFilter.SelectField = new string[] {
|
|
// "APPLIANCE_ID", "TIME", "DOSAGE", "ORG_ID"
|
|
// };
|
|
// updateDosage = GetEntities<T_EM_HIST_ENERGY_DOSAGE_MONTH>(x => x.TIME >= stime && x.TIME <= etime, baseFilter)?.ToList();
|
|
// #endregion
|
|
|
|
// var head = new List<TableHeadModel>
|
|
// {
|
|
// 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<Dictionary<string, object>>();
|
|
// if (importHistDatas.Any())
|
|
// {
|
|
// var appArry = importHistDatas.Select(x => x.Name);
|
|
// var app = new List<string>();
|
|
// 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<string, object>
|
|
// {
|
|
// { "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;
|
|
// });
|
|
//}
|
|
|
|
///// <summary>
|
|
///// 导入历史用量数据
|
|
///// </summary>
|
|
///// <param name="files">导入的Excel</param>
|
|
///// <returns></returns>
|
|
//[HttpPost, Route("ImportHistValData")]
|
|
//public JsonActionResult<dynamic> ImportHistValData(IFormCollection files)
|
|
//{
|
|
// return SafeExecute<dynamic>(() =>
|
|
// {
|
|
// 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<T_EM_HIST_ENERGY_VAL_MONTH> addVal = new List<T_EM_HIST_ENERGY_VAL_MONTH>();
|
|
// List<T_EM_HIST_ENERGY_VAL_MONTH> updateVal = new List<T_EM_HIST_ENERGY_VAL_MONTH>();
|
|
// #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<T_BD_APPLIANCE>(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<T_BD_METER_NODE>(x => x.Nav_Appliance != null, baseFilter);
|
|
// #endregion
|
|
|
|
// #region 获取历史用量表数据
|
|
// baseFilter.SelectField = new string[] {
|
|
// "APPLIANCE_ID", "TIME", "VAL", "ORG_ID"
|
|
// };
|
|
// updateVal = GetEntities<T_EM_HIST_ENERGY_VAL_MONTH>(x => x.TIME >= stime && x.TIME <= etime, baseFilter)?.ToList();
|
|
// #endregion
|
|
|
|
// var head = new List<TableHeadModel>
|
|
// {
|
|
// 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<Dictionary<string, object>>();
|
|
// if (importHistDatas.Any())
|
|
// {
|
|
// var appArry = importHistDatas.Select(x => x.Name);
|
|
// var app = new List<string>();
|
|
// 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<string, object>
|
|
// {
|
|
// { "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 导入抄表卡数据
|
|
///// <summary>
|
|
///// 导入年抄表卡数据
|
|
///// </summary>
|
|
///// <param name="files"></param>
|
|
///// <returns></returns>
|
|
//[HttpPost, Route("ImportYearMeterReadData")]
|
|
//public JsonActionResult<dynamic> ImportYearMeterReadData(IFormCollection files)
|
|
//{
|
|
// return SafeExecute<dynamic>(() =>
|
|
// {
|
|
// 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<T_EM_METER_READING_YEAR> addMeterRead = new List<T_EM_METER_READING_YEAR>();
|
|
// List<T_EM_METER_READING_YEAR> updateMeterRead = new List<T_EM_METER_READING_YEAR>();
|
|
// #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<T_BD_APPLIANCE>(x => x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, baseFilter);
|
|
// #endregion
|
|
|
|
// #region 获取历史数据
|
|
// baseFilter.SelectField = new string[] {
|
|
// "APPLIANCE_ID", "TIME", "SRC_DATA", "ORG_ID"
|
|
// };
|
|
// updateMeterRead = GetEntities<T_EM_METER_READING_YEAR>(x => x.TIME >= sTime && x.TIME <= eTime, baseFilter)?.ToList();
|
|
// #endregion
|
|
// //var head = new List<TableHeadModel>();
|
|
// //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<Dictionary<string, object>>();
|
|
// 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;
|
|
// });
|
|
//}
|
|
|
|
///// <summary>
|
|
///// 导入月抄表卡数据
|
|
///// </summary>
|
|
///// <param name="files"></param>
|
|
///// <returns></returns>
|
|
//[HttpPost, Route("ImportMonthMeterReadData")]
|
|
//public JsonActionResult<dynamic> ImportMonthMeterReadData(IFormCollection files)
|
|
//{
|
|
// return SafeExecute<dynamic>(() =>
|
|
// {
|
|
// 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<T_EM_METER_READING_MONTH> addMeterRead = new List<T_EM_METER_READING_MONTH>();
|
|
// List<T_EM_METER_READING_MONTH> updateMeterRead = new List<T_EM_METER_READING_MONTH>();
|
|
// #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<T_BD_APPLIANCE>(x => x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, baseFilter);
|
|
// #endregion
|
|
|
|
// #region 获取历史数据
|
|
// baseFilter.SelectField = new string[] {
|
|
// "APPLIANCE_ID", "TIME", "SRC_DATA", "ORG_ID"
|
|
// };
|
|
// updateMeterRead = GetEntities<T_EM_METER_READING_MONTH>(x => x.TIME >= sTime && x.TIME <= eTime, baseFilter)?.ToList();
|
|
// #endregion
|
|
// //var head = new List<TableHeadModel>();
|
|
// //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<Dictionary<string, object>>();
|
|
// 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;
|
|
// });
|
|
//}
|
|
|
|
|
|
|
|
///// <summary>
|
|
///// 导入日抄表卡数据
|
|
///// </summary>
|
|
///// <param name="files"></param>
|
|
///// <returns></returns>
|
|
//[HttpPost, Route("ImportDayMeterReadData")]
|
|
//public JsonActionResult<dynamic> ImportDayMeterReadData(IFormCollection files)
|
|
//{
|
|
// return SafeExecute<dynamic>(() =>
|
|
// {
|
|
// 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<T_EM_METER_READING_DAY> addMeterRead = new List<T_EM_METER_READING_DAY>();
|
|
// List<T_EM_METER_READING_DAY> updateMeterRead = new List<T_EM_METER_READING_DAY>();
|
|
// #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<T_BD_APPLIANCE>(x => x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, baseFilter);
|
|
// #endregion
|
|
|
|
// #region 获取历史数据
|
|
// baseFilter.SelectField = new string[] {
|
|
// "APPLIANCE_ID", "TIME", "SRC_DATA", "ORG_ID"
|
|
// };
|
|
// updateMeterRead = GetEntities<T_EM_METER_READING_DAY>(x => x.TIME >= sTime && x.TIME <= eTime, baseFilter)?.ToList();
|
|
// #endregion
|
|
// //var head = new List<TableHeadModel>();
|
|
// //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<Dictionary<string, object>>();
|
|
// 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 导入生产记录信息
|
|
///// <summary>
|
|
///// 导入生产记录数据
|
|
///// </summary>
|
|
///// <param name="files">导入的Excel</param>
|
|
///// <returns></returns>
|
|
//[HttpPost, Route("ImportProductRecordData")]
|
|
//public JsonActionResult<dynamic> ImportProductRecordData(IFormCollection files)
|
|
//{
|
|
// return SafeExecute<dynamic>(() =>
|
|
// {
|
|
// 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<T_ED_PROD_RECORD> addRecord = new List<T_ED_PROD_RECORD>();
|
|
// #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<T_FM_PRODUCT>(null, baseFilter)?.ToList();
|
|
// baseFilter.SelectField = new string[] { "NAME" };
|
|
// var node = this.GetEntities<T_BD_METER_NODE>(null, baseFilter)?.ToList();
|
|
// var team = this.GetEntities<T_FM_TEAM>(null, baseFilter)?.ToList();
|
|
// var clas = this.GetEntities<T_FM_CLASS>(null, baseFilter)?.ToList();
|
|
// #endregion
|
|
// var dataList = new List<Dictionary<string, object>>();
|
|
// 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 导入能源采购记录
|
|
///// <summary>
|
|
///// 导入能源采购记录
|
|
///// </summary>
|
|
///// <param name="files">导入的Excel</param>
|
|
///// <returns></returns>
|
|
//[HttpPost, Route("ImportEnergyPurchaseData")]
|
|
//public JsonActionResult<bool> ImportEnergyPurchaseData(IFormCollection files)
|
|
//{
|
|
// return SafeExecute<bool>(() =>
|
|
// {
|
|
// 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<T_ED_ENERGY_PURCHASE> addPurchase = new List<T_ED_ENERGY_PURCHASE>();
|
|
// #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<T_BD_ENERGY_CLASS>(null, baseFilter);
|
|
// baseFilter.SelectField = new string[]
|
|
// {
|
|
// "ENGERY_ID", "QTY", "RESERVE_QTY", "AVAILA_QTY"
|
|
// };
|
|
// var energyStore = GetEntities<T_ED_ENGERY_STORE>(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 导入生产记录
|
|
|
|
///// <summary>
|
|
///// 导入生产记录(表单ED052)
|
|
///// </summary>
|
|
///// <param name="files"></param>
|
|
///// <returns></returns>
|
|
//[HttpPost, Route("ImportProductionRecords")]
|
|
//public JsonActionResult<bool> ImportProductionRecords(IFormCollection files)
|
|
//{
|
|
// return SafeExecute<bool>(() =>
|
|
// {
|
|
// 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<T_FM_PRODUCT>(null, productFilter);
|
|
// var baseFilter = new BaseFilter(orgId)
|
|
// {
|
|
// IgnoreDataRule = true,
|
|
// SelectField = new string[] { "ID", "NAME" }
|
|
// };
|
|
// var nodes = this.GetEntities<T_BD_METER_NODE>(null, baseFilter);
|
|
// var teams = this.GetEntities<T_FM_TEAM>(null, baseFilter);
|
|
// var classList = this.GetEntities<T_FM_CLASS>(null, baseFilter);
|
|
// var list = new List<T_ED_PROD_RECORD>();
|
|
// 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<T_ED_PROD_RECORD>(x=>x.METER_NODE_ID==model.METER_NODE_ID && x.START_TIME>=time && x.START_TIME<time.AddMonths(1));
|
|
// this.BantchAddEntityNoCommit(list);
|
|
// });
|
|
// }
|
|
|
|
// return true;
|
|
// });
|
|
//}
|
|
///// <summary>
|
|
///// 导入产量按部门
|
|
///// </summary>
|
|
///// <param name="files"></param>
|
|
///// <returns></returns>
|
|
//[HttpPost, Route("ImportProductionRecordsByDept")]
|
|
//public JsonActionResult<bool> ImportProductionRecordsByDept(IFormCollection files)
|
|
//{
|
|
// return SafeExecute<bool>(() =>
|
|
// {
|
|
// 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<T_FM_DEPARTMENT>(null, baseFilter);
|
|
// var equips = this.GetEntities<T_BD_EQUIPMENT>(null, baseFilter);
|
|
// var list = new List<T_ED_DEPT_RECORD>();
|
|
// 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<T_ED_DEPT_RECORD>(x => x.DEPARTMENT_ID == model.DEPARTMENT_ID && x.TIME.Year == model.TIME.Year);
|
|
// this.BantchAddEntityNoCommit(list);
|
|
// });
|
|
// }
|
|
|
|
// return true;
|
|
// });
|
|
//}
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
//#region 导入生产计划
|
|
|
|
///// <summary>
|
|
///// 导入生产记录(表单PM038)
|
|
///// </summary>
|
|
///// <param name="files"></param>
|
|
///// <returns></returns>
|
|
//[HttpPost, Route("ImportProductionPlan")]
|
|
//public JsonActionResult<bool> ImportProductionPlan(IFormCollection files)
|
|
//{
|
|
// return SafeExecute<bool>(() =>
|
|
// {
|
|
// 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<T_FM_PRODUCT>(null, productFilter);
|
|
// var baseFilter = new BaseFilter(orgId)
|
|
// {
|
|
// IgnoreDataRule = true,
|
|
// SelectField = new string[] { "ID", "NAME" }
|
|
// };
|
|
// var nodes = this.GetEntities<T_BD_METER_NODE>(null, baseFilter);
|
|
// var list = new List<T_PM_PRODUCT_PLAN>();
|
|
// 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<T_PM_PRODUCT_PLAN>();
|
|
// var update = new List<T_PM_PRODUCT_PLAN>();
|
|
// if (list.Any())
|
|
// {
|
|
// var codeRuleService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService<IPFCodeRuleService>();
|
|
// 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<T_PM_PRODUCT_PLAN>(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
|
|
}
|
|
}
|