初始化项目
This commit is contained in:
565
AUTS.Services/Manager/AutsChart.cs
Normal file
565
AUTS.Services/Manager/AutsChart.cs
Normal file
@@ -0,0 +1,565 @@
|
||||
using AUTS.Domain.Entities;
|
||||
using AUTS.Domain.ViewModels;
|
||||
using AUTS.Services.DBUtility.Custom;
|
||||
using AUTS.Services.Enums;
|
||||
using AUTS.Services.Extensions;
|
||||
using AUTS.Services.Tool;
|
||||
using MySql.Data.MySqlClient;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
|
||||
namespace AUTS.Services.Manager
|
||||
{
|
||||
public partial class AutsChart
|
||||
{
|
||||
private static string TestLogTbName = "TBL_{0}_{1}_TestLog";//测试记录表名
|
||||
|
||||
/// <summary>
|
||||
/// 图表-未完成订单生产进度统计
|
||||
/// </summary>
|
||||
/// <param name="reqModel">查询条件实体</param>
|
||||
/// <param name="cacheUserProject">机型缓存</param>
|
||||
/// <param name="cacheUserOrder">订单缓存</param>
|
||||
/// <param name="cacheUserCustomer">客户缓存</param>
|
||||
/// <param name="cacheUserStationList">工作站缓存</param>
|
||||
/// <returns></returns>
|
||||
public static ReturnResult<object> GetOrderStats(RequestOrderStats reqModel, List<TBL_Project> cacheUserProject, List<TBL_Orders> cacheUserOrder, List<TBL_Customer> cacheUserCustomer, List<TBL_StationList> cacheUserStationList)
|
||||
{
|
||||
ReturnResult<object> result = new ReturnResult<object>();
|
||||
try
|
||||
{
|
||||
var project = cacheUserProject.SingleOrDefault(x => x.ID == reqModel.ProjectID);
|
||||
|
||||
if (!reqModel.IsOrder)//如果不是按照订单
|
||||
{
|
||||
if (project == null)
|
||||
{
|
||||
result.Message = "无效或不存在的机型";
|
||||
return result;
|
||||
}
|
||||
if (reqModel.StartDate == null)
|
||||
{
|
||||
|
||||
result.Message = "请输入起始时间";
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
var orderNotList = cacheUserOrder.Where(x => x.OrderStatus == (int)OrderStatus.InProduction);//取出该机型未完成订单
|
||||
|
||||
var minTime = reqModel.StartDate ?? DateTime.Now;//起始时间
|
||||
|
||||
if (project != null)
|
||||
{
|
||||
orderNotList = orderNotList.Where(x => x.ProductID == project.ID);
|
||||
}
|
||||
|
||||
if (!reqModel.IsOrder)
|
||||
{
|
||||
orderNotList = orderNotList.Where(x => x.CreateTime <= minTime && x.DeliveryTime >= minTime);//取出未完成订单
|
||||
//minTime = orderNotList.Min(m => m.CreateTime);//订单最早日期
|
||||
}
|
||||
else
|
||||
{
|
||||
if (reqModel.StartDate == null && orderNotList.Count() > 0)
|
||||
{
|
||||
minTime = orderNotList.Min(m => m.CreateTime);//订单最早日期
|
||||
}
|
||||
}
|
||||
|
||||
if (orderNotList.Count() == 0)
|
||||
{
|
||||
result.Status = 200;
|
||||
return result;
|
||||
}
|
||||
|
||||
var maxTime = reqModel.EndDate ?? DateTime.Now;//最晚日期
|
||||
|
||||
minTime = Convert.ToDateTime(minTime.ToString("yyyy/MM/dd"));//订单最早日期
|
||||
maxTime = Convert.ToDateTime(maxTime.ToString("yyyy/MM/dd"));//订单最晚日期
|
||||
|
||||
TimeSpan ts = maxTime - minTime;
|
||||
int differenceInDays = ts.Days + 1;
|
||||
|
||||
DataTable tblDatas = new DataTable("Datas");
|
||||
|
||||
tblDatas.Columns.Add("ID", Type.GetType("System.String"));//新列
|
||||
tblDatas.Columns.Add("单号", Type.GetType("System.String"));//新列
|
||||
tblDatas.Columns.Add("机型", Type.GetType("System.String"));//新列
|
||||
tblDatas.Columns.Add("客户", Type.GetType("System.String"));//新列
|
||||
tblDatas.Columns.Add("数量", Type.GetType("System.String"));//新列
|
||||
tblDatas.Columns.Add("已完成", Type.GetType("System.String"));//新列
|
||||
|
||||
for (var i = 0; i < differenceInDays; i++)
|
||||
{
|
||||
tblDatas.Columns.Add(minTime.AddDays(i).ToString("yy/MM/dd"), Type.GetType("System.String"));//新列
|
||||
|
||||
}
|
||||
|
||||
var dbTableName = "";
|
||||
var sumTotal = 0;
|
||||
var dalHelperCustom = new DALHelperCustom<VM_PlannedSpeed>();
|
||||
var thisDataList = new List<VM_PlannedSpeed>();
|
||||
|
||||
string connectionString = Users.GerOnUserCofin();//当前库连接串
|
||||
using (MySqlConnection connection = new MySqlConnection(connectionString))
|
||||
{
|
||||
DataSet dataSet = new DataSet();
|
||||
|
||||
connection.Open();
|
||||
MySqlDataAdapter command = new MySqlDataAdapter();
|
||||
var strSql = "";
|
||||
|
||||
foreach (var item in orderNotList)
|
||||
{
|
||||
strSql = "";
|
||||
dataSet.Clear();
|
||||
sumTotal = 0;
|
||||
DataRow newRow = tblDatas.NewRow();//新行
|
||||
|
||||
newRow["ID"] = item.ID;
|
||||
newRow["单号"] = item.OrderNo;
|
||||
newRow["机型"] = cacheUserProject.Single(x => x.ID == item.ProductID).ProjectName;
|
||||
newRow["客户"] = cacheUserCustomer.Single(x => x.ID == item.CompanyID).CustomerAbbr;
|
||||
newRow["数量"] = item.OrderCount;
|
||||
|
||||
var endTestStation = cacheUserStationList.Where(x => x.ProjectID == item.ProductID && (x.StationType == StationType.Test.GetEnumDesc() || x.StationType == StationType.Test2.GetEnumDesc())).OrderByDescending(o => o.ArtworkOrder).FirstOrDefault();//最大测试站
|
||||
|
||||
dbTableName = string.Format(TestLogTbName, item.ProductID, endTestStation.ID);//最大测试站表名
|
||||
|
||||
//strSql = "select StartTime,DATE_FORMAT(StartTime,'%Y%m%d') DAYS,COUNT(*) Total from `" + dbTableName + "` Where OrderID=" + item.OrderID + " AND TestResult=1 GROUP BY DAYS;";//查询语句
|
||||
|
||||
strSql = "select {0} StartTime,DATE_FORMAT({0},'%Y%m%d') DAYS,COUNT(*) Total from `" + dbTableName + "` Where TestResult=1";//查询语句
|
||||
|
||||
if (reqModel.StartDate != null)
|
||||
{
|
||||
strSql += " AND (DATE_FORMAT({0}, '%Y-%m-%d %H:%i:%s') >='" + minTime.ToString("yyyy-MM-dd 00:00:00") + "')";
|
||||
//strSql += (string.Format(" AND (DATE_FORMAT(StartTime, '%Y-%m-%d %H:%i:%s') >='{0}')", minTime.ToString("yyyy-MM-dd 00:00:00")));
|
||||
}
|
||||
|
||||
if (reqModel.EndDate != null && reqModel.StartDate != null)
|
||||
{
|
||||
strSql += " AND (DATE_FORMAT({0}, '%Y-%m-%d %H:%i:%s') <='" + maxTime.ToString("yyyy-MM-dd 23:59:59") + "')";
|
||||
//strSql += (string.Format(" AND (DATE_FORMAT(StartTime, '%Y-%m-%d %H:%i:%s') <='{0}')", maxTime.ToString("yyyy-MM-dd 23:59:59")));
|
||||
}
|
||||
|
||||
if (reqModel.IsOrder)
|
||||
{
|
||||
strSql += " AND OrderID=" + item.ID;
|
||||
}
|
||||
strSql += " GROUP BY DAYS;";
|
||||
if (endTestStation.StationType == StationType.Test2.GetEnumDesc())
|
||||
{
|
||||
strSql = string.Format(strSql, "DateTime_2nd");
|
||||
}
|
||||
else
|
||||
{
|
||||
strSql = string.Format(strSql, "StartTime");
|
||||
}
|
||||
|
||||
command = new MySqlDataAdapter(strSql, connection);
|
||||
command.Fill(dataSet, "ds");
|
||||
|
||||
if (dataSet.Tables[0].Rows.Count > 0)
|
||||
{
|
||||
thisDataList = dalHelperCustom.DataRowToModels(dataSet.Tables[0]);
|
||||
|
||||
foreach (var itemData in thisDataList)
|
||||
{
|
||||
newRow[itemData.StartTime.ToString("yy/MM/dd")] = itemData.Total;
|
||||
sumTotal += itemData.Total;
|
||||
}
|
||||
}
|
||||
|
||||
newRow["已完成"] = sumTotal;
|
||||
tblDatas.Rows.Add(newRow);
|
||||
}
|
||||
}
|
||||
|
||||
var rows = ModelHelper.TableToRow(tblDatas);
|
||||
|
||||
result.Data = rows;
|
||||
result.Status = 200;
|
||||
}
|
||||
catch (MySqlException ex)
|
||||
{
|
||||
result.Message = ex.Message;
|
||||
Logs.WriteErrorLog(ex);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
result.Message = "网络系统繁忙,请稍候再试!";
|
||||
LogHelp.WriteExceptionLog(ex);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 图表-该订单各站生产进度统计
|
||||
/// </summary>
|
||||
/// <param name="reqModel">查询条件实体</param>
|
||||
/// <param name="cacheUserProject">机型缓存</param>
|
||||
/// <param name="cacheUserOrder">订单缓存</param>
|
||||
/// <param name="cacheUserCustomer">客户缓存</param>
|
||||
/// <param name="cacheUserStationList">工作站缓存</param>
|
||||
/// <param name="connectionString">数据库连接串</param>
|
||||
/// <returns></returns>
|
||||
public static ReturnResult<object> GetOrdersPlannedSpeedDetails(RequestOrdersPlanned reqModel, List<TBL_Project> cacheUserProject, List<TBL_Orders> cacheUserOrder, List<TBL_Customer> cacheUserCustomer, List<TBL_StationList> cacheUserStationList, string connectionString)
|
||||
{
|
||||
ReturnResult<object> result = new ReturnResult<object>();
|
||||
|
||||
try
|
||||
{
|
||||
var id = reqModel.id;
|
||||
var order = cacheUserOrder.Single(x => x.ID == id);//取出订单
|
||||
|
||||
var stationList = cacheUserStationList.Where(x => x.StationType != StationType.QA.GetEnumDesc() && x.ProjectID == order.ProductID);//不为该机型QA的测试站
|
||||
|
||||
var minTime = reqModel.StartDate ?? order.CreateTime;//订单最早日期
|
||||
var maxTime = reqModel.EndDate ?? DateTime.Now;//订单最晚日期
|
||||
|
||||
minTime = Convert.ToDateTime(minTime.ToString("yyyy/MM/dd"));//订单最早日期
|
||||
maxTime = Convert.ToDateTime(maxTime.ToString("yyyy/MM/dd"));//订单最晚日期
|
||||
|
||||
TimeSpan ts = maxTime - minTime;
|
||||
int differenceInDays = ts.Days + 1;
|
||||
|
||||
DataTable tblDatas = new DataTable("Datas");
|
||||
|
||||
tblDatas.Columns.Add("测试站", Type.GetType("System.String"));//新列
|
||||
tblDatas.Columns.Add("数量", Type.GetType("System.String"));//新列
|
||||
|
||||
for (var i = 0; i < differenceInDays; i++)
|
||||
{
|
||||
tblDatas.Columns.Add(minTime.AddDays(i).ToString("yy/MM/dd"), Type.GetType("System.String"));//新列
|
||||
}
|
||||
|
||||
var dbTableName = "";
|
||||
var strSql = "";
|
||||
var sumTotal = 0;
|
||||
var dalHelperCustom = new DALHelperCustom<VM_PlannedSpeed>();
|
||||
|
||||
//string connectionString = Users.GerOnUserCofin();//当前库连接串
|
||||
using (MySqlConnection connection = new MySqlConnection(connectionString))
|
||||
{
|
||||
DataSet dataSet = new DataSet();
|
||||
MySqlDataAdapter command = new MySqlDataAdapter();
|
||||
|
||||
connection.Open();
|
||||
|
||||
//测试站列表
|
||||
foreach (var itemStation in stationList)
|
||||
{
|
||||
strSql = "";
|
||||
sumTotal = 0;
|
||||
dataSet.Clear();
|
||||
DataRow newRow = tblDatas.NewRow();//新行
|
||||
newRow["测试站"] = itemStation.StationName;
|
||||
newRow["数量"] = "当日";
|
||||
|
||||
DataRow newRow2 = tblDatas.NewRow();//新行
|
||||
newRow2["测试站"] = itemStation.StationName;
|
||||
newRow2["数量"] = "累计";
|
||||
|
||||
dbTableName = string.Format(TestLogTbName, itemStation.ProjectID, itemStation.ID);//测试站表名
|
||||
|
||||
//strSql = "select StartTime,DATE_FORMAT(StartTime,'%Y%m%d') DAYS,COUNT(*) Total from `" + dbTableName + "` Where OrderID=" + id + " AND TestResult=1 GROUP BY DAYS;";//查询语句
|
||||
strSql = "select {0},DATE_FORMAT({0},'%Y%m%d') DAYS,COUNT(*) Total from `" + dbTableName + "` Where TestResult=1";//查询语句
|
||||
if (reqModel.IsOrder)
|
||||
{
|
||||
strSql += " AND OrderID=" + id;
|
||||
}
|
||||
|
||||
if (reqModel.StartDate != null)
|
||||
{
|
||||
strSql += " AND (DATE_FORMAT({0}, '%Y-%m-%d %H:%i:%s') >='" + minTime.ToString("yyyy-MM-dd 00:00:00") + "')";
|
||||
}
|
||||
|
||||
if (reqModel.EndDate != null && reqModel.StartDate != null)
|
||||
{
|
||||
strSql += " AND (DATE_FORMAT({0}, '%Y-%m-%d %H:%i:%s') <='" + maxTime.ToString("yyyy-MM-dd 23:59:59") + "')";
|
||||
}
|
||||
|
||||
strSql += " GROUP BY DAYS;";
|
||||
|
||||
if (itemStation.StationType == StationType.Test2.GetEnumDesc())
|
||||
{
|
||||
strSql = string.Format(strSql, "DateTime_2nd");
|
||||
}
|
||||
else
|
||||
{
|
||||
strSql = string.Format(strSql, "StartTime");
|
||||
}
|
||||
|
||||
command = new MySqlDataAdapter(strSql, connection);
|
||||
command.Fill(dataSet, "ds");
|
||||
|
||||
if (dataSet.Tables[0].Rows.Count > 0)
|
||||
{
|
||||
var thisDataList = dalHelperCustom.DataRowToModels(dataSet.Tables[0]).OrderBy(x => x.StartTime);
|
||||
|
||||
foreach (var itemData in thisDataList)
|
||||
{
|
||||
newRow[itemData.StartTime.ToString("yy/MM/dd")] = itemData.Total;
|
||||
sumTotal += itemData.Total;
|
||||
|
||||
newRow2[itemData.StartTime.ToString("yy/MM/dd")] = sumTotal;
|
||||
}
|
||||
}
|
||||
tblDatas.Rows.Add(newRow);
|
||||
tblDatas.Rows.Add(newRow2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var rows = ModelHelper.TableToRow(tblDatas);
|
||||
|
||||
result.Data = rows;
|
||||
result.Status = 200;
|
||||
}
|
||||
catch (MySqlException ex)
|
||||
{
|
||||
result.Message = ex.Message;
|
||||
Logs.WriteErrorLog(ex);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
result.Message = "网络系统繁忙,请稍候再试!";
|
||||
LogHelp.WriteExceptionLog(ex);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 生产实时统计
|
||||
/// </summary>
|
||||
/// <param name="reqModel"></param>
|
||||
/// <param name="cacheUserProject"></param>
|
||||
/// <param name="cacheUserOrder"></param>
|
||||
/// <param name="cacheUserCustomer"></param>
|
||||
/// <param name="cacheUserStationList"></param>
|
||||
/// <param name="connectionString"></param>
|
||||
/// <returns></returns>
|
||||
public static ReturnResult<object> GetOrdersStatsDetails(RequestOrdersRealTime reqModel, List<TBL_Project> cacheUserProject, List<TBL_Orders> cacheUserOrder, List<TBL_Customer> cacheUserCustomer, List<TBL_StationList> cacheUserStationList, string connectionString)
|
||||
{
|
||||
ReturnResult<object> result = new ReturnResult<object>();
|
||||
|
||||
try
|
||||
{
|
||||
//var vModelList = new VM_OrderPlannedSpeed();
|
||||
|
||||
var id = reqModel.Order;
|
||||
var order = cacheUserOrder.SingleOrDefault(x => x.ID == id);//取出订单
|
||||
if (order == null)
|
||||
{
|
||||
result.Message = "无订单或无效订单";
|
||||
return result;
|
||||
}
|
||||
|
||||
var project = cacheUserProject.Single(x => x.ID == order.ProductID);//取出订单
|
||||
var customer = cacheUserCustomer.Single(x => x.ID == order.CompanyID);//取出订单
|
||||
|
||||
var stationList = cacheUserStationList.Where(x => x.StationType != StationType.QA.GetEnumDesc() && x.ProjectID == order.ProductID).OrderBy(o => o.ArtworkOrder);//不为该机型QA的测试站
|
||||
|
||||
//vModelList.ProjectName = project.ProjectName;
|
||||
//vModelList.OrderNo = order.OrderNo;
|
||||
//vModelList.CustomerAbbr = customer.CustomerAbbr;
|
||||
//vModelList.OrderCount = order.OrderCount;
|
||||
//vModelList.CreateTime = order.CreateTime.ToString("yyyy/MM/dd");
|
||||
//vModelList.DeliveryTime = order.DeliveryTime.ToString("yyyy/MM/dd");
|
||||
|
||||
////测试站列表
|
||||
//foreach (var itemStation in stationList)
|
||||
//{
|
||||
// vModelList.StationDes += itemStation.StationName + "-" + itemStation.StationDesc + " ";
|
||||
//}
|
||||
|
||||
DataTable tblDatas = new DataTable("Datas");
|
||||
|
||||
tblDatas.Columns.Add("DataType", Type.GetType("System.String"));//新列
|
||||
tblDatas.Columns.Add("日期", Type.GetType("System.String"));//新列
|
||||
tblDatas.Columns.Add("数据类型", Type.GetType("System.String"));//新列
|
||||
|
||||
//foreach (var station in stationList)
|
||||
//{
|
||||
// tblDatas.Columns.Add(station.StationName, Type.GetType("System.String"));//新列
|
||||
//}
|
||||
|
||||
var strSql = "";//查询语句
|
||||
var dbTableName = "";//测试记录表名
|
||||
var timeStr = "";//日期
|
||||
var totalDic = new Dictionary<string, TbTotalDic>();//计算字典
|
||||
var ppNum = 0;
|
||||
var actualNum = 0;
|
||||
var thisRow = 1;
|
||||
var rowKey = 0;
|
||||
var pPlan = new TBL_ProductionPlan();
|
||||
var testLog = new OrderTestLogData();
|
||||
using (MySqlConnection connection = new MySqlConnection(connectionString))
|
||||
{
|
||||
DataSet dataSet = new DataSet();
|
||||
MySqlDataAdapter command = new MySqlDataAdapter();
|
||||
|
||||
connection.Open();
|
||||
|
||||
strSql = "SELECT * FROM `TBL_ProductionPlan` WHERE OrderID=" + order.ID + ";";
|
||||
command = new MySqlDataAdapter(strSql, connection);
|
||||
command.Fill(dataSet, "ds");
|
||||
|
||||
var dalHelperPP = new DALHelperCustom<TBL_ProductionPlan>();
|
||||
var dalHelperPSpeed = new DALHelperCustom<OrderTestLogData>();
|
||||
|
||||
var pSpeed = new List<OrderTestLogData>();
|
||||
|
||||
var ppList = dalHelperPP.DataRowToModels(dataSet.Tables[0]);//计划列表
|
||||
var ppListGroup = ppList.GroupBy(g => g.ProductionTime).OrderBy(x => x.Key);//计划列表按时间分组
|
||||
|
||||
if (ppListGroup.Count() > 0)
|
||||
{
|
||||
foreach (var dateTime in ppListGroup)
|
||||
{
|
||||
timeStr = dateTime.Key.ToString("yyyy/MM/dd");
|
||||
|
||||
DataRow planRow = tblDatas.NewRow();//新行 计划行
|
||||
planRow["DataType"] = "plan";
|
||||
planRow["日期"] = timeStr;
|
||||
planRow["数据类型"] = "计划";
|
||||
tblDatas.Rows.Add(planRow);
|
||||
|
||||
DataRow planTotalRow = tblDatas.NewRow();//新行 累计计划行
|
||||
planTotalRow["DataType"] = "plantotal";
|
||||
planTotalRow["日期"] = timeStr;
|
||||
planTotalRow["数据类型"] = "累计计划";
|
||||
tblDatas.Rows.Add(planTotalRow);
|
||||
|
||||
DataRow testNumRow = tblDatas.NewRow();//新行 累计计划行
|
||||
testNumRow["DataType"] = "test";
|
||||
testNumRow["日期"] = timeStr;
|
||||
testNumRow["数据类型"] = "当日";
|
||||
tblDatas.Rows.Add(testNumRow);
|
||||
|
||||
DataRow testNumTotalRow = tblDatas.NewRow();//新行 累计计划行
|
||||
testNumTotalRow["DataType"] = "testtotal";
|
||||
testNumTotalRow["日期"] = timeStr;
|
||||
testNumTotalRow["数据类型"] = "累计当日";
|
||||
tblDatas.Rows.Add(testNumTotalRow);
|
||||
|
||||
}
|
||||
|
||||
var minTime = ppList.Min(m => m.ProductionTime);//订单最早日期
|
||||
var maxTime = ppList.Max(m => m.ProductionTime);//订单最晚日期
|
||||
|
||||
var timeWhere = " AND(DATE_FORMAT({0}, '%Y-%m-%d %H:%i:%s') >= '" + minTime.ToString("yyyy-MM-dd 00:00:00") + "') AND (DATE_FORMAT({0}, '%Y-%m-%d %H:%i:%s') <='" + maxTime.ToString("yyyy-MM-dd 23:59:59") + "')";
|
||||
//测试站列表
|
||||
foreach (var itemStation in stationList)
|
||||
{
|
||||
tblDatas.Columns.Add(itemStation.StationName, Type.GetType("System.String"));//新列
|
||||
|
||||
totalDic.Add(itemStation.StationName, new TbTotalDic());
|
||||
|
||||
dataSet.Clear();
|
||||
dbTableName = string.Format(TestLogTbName, order.ProductID, itemStation.ID);//测试站表名
|
||||
|
||||
strSql = "select {0} StartTime,DATE_FORMAT({0},'%Y/%m/%d') DAYS,COUNT(*) Total from `" + dbTableName + "` Where TestResult=1";//查询语句
|
||||
|
||||
strSql += timeWhere;
|
||||
|
||||
if (itemStation.StationType == StationType.Test2.GetEnumDesc())
|
||||
{
|
||||
strSql = string.Format(strSql, "DateTime_2nd");
|
||||
}
|
||||
else
|
||||
{
|
||||
strSql = string.Format(strSql, "StartTime");
|
||||
}
|
||||
strSql += " GROUP BY DAYS;";
|
||||
|
||||
command = new MySqlDataAdapter(strSql, connection);
|
||||
command.Fill(dataSet, "ds");
|
||||
|
||||
pSpeed = dalHelperPSpeed.DataRowToModels(dataSet.Tables[0]);//测试记录数据
|
||||
|
||||
thisRow = 1;
|
||||
foreach (var dateTime in ppListGroup)
|
||||
{
|
||||
rowKey = (thisRow * 4);
|
||||
pPlan = null;
|
||||
testLog = null;
|
||||
|
||||
if (dateTime.ToList().Count > 0)
|
||||
{
|
||||
pPlan = dateTime.ToList().SingleOrDefault(x => x.StationID == itemStation.ID);
|
||||
|
||||
}
|
||||
testLog = pSpeed.SingleOrDefault(x => x.DAYS == timeStr);
|
||||
|
||||
timeStr = dateTime.Key.ToString("yyyy/MM/dd");
|
||||
|
||||
ppNum = pPlan == null ? 0 : pPlan.ObjectiveYield;
|
||||
totalDic[itemStation.StationName].PlanTotal += ppNum;
|
||||
|
||||
if (ppNum > 0)
|
||||
{
|
||||
tblDatas.Rows[(rowKey - 4)][itemStation.StationName] = ppNum;//计划
|
||||
tblDatas.Rows[(rowKey - 3)][itemStation.StationName] = totalDic[itemStation.StationName].PlanTotal;//累计计划
|
||||
}
|
||||
|
||||
actualNum = testLog == null ? 0 : testLog.Total;
|
||||
totalDic[itemStation.StationName].ActualTotal += actualNum;
|
||||
|
||||
if (actualNum > 0)
|
||||
{
|
||||
tblDatas.Rows[(rowKey - 2)][itemStation.StationName] = actualNum;//当日
|
||||
tblDatas.Rows[(rowKey - 1)][itemStation.StationName] = totalDic[itemStation.StationName].ActualTotal;//累计
|
||||
}
|
||||
|
||||
thisRow += 1;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var rows = ModelHelper.TableToRow(tblDatas);
|
||||
//vModelList.Rows = ModelHelper.TableToRow(tblDatas);
|
||||
result.Data = rows;
|
||||
result.Status = 200;
|
||||
}
|
||||
catch (MySqlException ex)
|
||||
{
|
||||
result.Message = ex.Message;
|
||||
Logs.WriteErrorLog(ex);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
result.Message = "网络系统繁忙,请稍候再试!";
|
||||
LogHelp.WriteExceptionLog(ex);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新生产进度
|
||||
/// </summary>
|
||||
public static void UpdateOrderProductionSchedule()
|
||||
{
|
||||
//取所有库
|
||||
var dbList = Cache.CacheHelp.GetSysDBList();
|
||||
|
||||
if (dbList != null && dbList.Count > 0)
|
||||
{
|
||||
IEnumerable<TBL_Orders> orderList = null;//
|
||||
//var orderList = new List<TBL_Orders>();
|
||||
foreach (var item in dbList)
|
||||
{
|
||||
orderList = Cache.CacheHelp.GetUserDBOrderList(item.DatabaseName).Where(x => x.OrderStatus == (int)OrderStatus.ProductionPlan && x.OrderStatus == (int)OrderStatus.InProduction);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
977
AUTS.Services/Manager/Capacity.cs
Normal file
977
AUTS.Services/Manager/Capacity.cs
Normal file
@@ -0,0 +1,977 @@
|
||||
using AUTS.Domain;
|
||||
using AUTS.Domain.Entities;
|
||||
using AUTS.Domain.ViewModels;
|
||||
using AUTS.Services.Cache;
|
||||
using AUTS.Services.DBUtility.Custom;
|
||||
using AUTS.Services.Enums;
|
||||
using AUTS.Services.Extensions;
|
||||
using AUTS.Services.Tool;
|
||||
using MySql.Data.MySqlClient;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AUTS.Services.Manager
|
||||
{
|
||||
public partial class Capacity
|
||||
{
|
||||
private static string TestLogTbName = "TBL_{0}_{1}_TestLog";//测试记录表名
|
||||
|
||||
/// <summary>
|
||||
/// 获取当前机型最大ID
|
||||
/// </summary>
|
||||
/// <param name="ProjectID"></param>
|
||||
/// <param name="context"></param>
|
||||
/// <returns></returns>
|
||||
public static int GerOnProjectMaxID(int ProjectID, List<TBL_StationList> cacheUserStation, System.Web.HttpContext context)
|
||||
{
|
||||
var stationID = cacheUserStation.Where(x => x.ProjectID == ProjectID).Min(m => m.ID);
|
||||
var dbTableName = string.Format(TestLogTbName, ProjectID, stationID);
|
||||
|
||||
string strsql = "select max(ID) from " + dbTableName;
|
||||
string connectionString = Users.GerOnUserCofin(context);
|
||||
using (MySqlConnection connection = new MySqlConnection(connectionString))
|
||||
{
|
||||
using (MySqlCommand cmd = new MySqlCommand(strsql, connection))
|
||||
{
|
||||
try
|
||||
{
|
||||
connection.Open();
|
||||
object obj = cmd.ExecuteScalar();
|
||||
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return int.Parse(obj.ToString());
|
||||
}
|
||||
}
|
||||
catch (MySqlException e)
|
||||
{
|
||||
connection.Close();
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
//return DBUtility.Custom.DbHelperMySqlCustom.GetMaxID("ID", dbTableName);
|
||||
}
|
||||
|
||||
public static ReturnResult<object> GetTestLogList(RequestTestLogSearch reqModel, List<TBL_Project> cacheUserProject, List<TBL_StationList> cacheUserStation)
|
||||
{
|
||||
ReturnResult<object> result = new ReturnResult<object>();
|
||||
try
|
||||
{
|
||||
var project = cacheUserProject.SingleOrDefault(x => x.ID == reqModel.ProjectID);
|
||||
if (project == null)
|
||||
{
|
||||
result.Message = "无效或不存在的机型";
|
||||
return result;
|
||||
}
|
||||
|
||||
if (reqModel.KeyWhere != "number" && reqModel.KeyWhere != "testLogID")
|
||||
{
|
||||
result.Message = "无效查询类型";
|
||||
return result;
|
||||
}
|
||||
|
||||
if (String.IsNullOrEmpty(reqModel.KeyWord))
|
||||
{
|
||||
result.Message = "请输入查询关键词";
|
||||
return result;
|
||||
}
|
||||
|
||||
#region 初始化
|
||||
var strWhereList = new List<string>();//条件语句列表
|
||||
|
||||
string dbTableName;//查询表名字段
|
||||
StringBuilder strSqlSB = new StringBuilder();
|
||||
|
||||
|
||||
var rdata = new ResponseDataquerySearch();
|
||||
var thisDataList = new List<DataQuerySearch>();
|
||||
var dataList = new List<DataQuerySearch>();
|
||||
#endregion
|
||||
|
||||
#region 工作站部分
|
||||
//工作站
|
||||
var stationList = cacheUserStation.Where(x => x.ProjectID == reqModel.ProjectID).OrderBy(o => o.ArtworkOrder).Select(s => new TBL_Station { StationID = s.ID, StationName = s.StationName, StationType = s.StationType, ArtworkOrder = s.ArtworkOrder }).ToList();//当前选择的工艺站
|
||||
#endregion
|
||||
|
||||
var maxAssemblySn = "";//最大编号组合
|
||||
var assemPrList = stationList.Where(x => x.StationType == StationType.Assem.GetEnumDesc()).OrderByDescending(x => x.ArtworkOrder).ToList();//所有组装站
|
||||
|
||||
string connectionString = Users.GerOnUserCofin();
|
||||
using (MySqlConnection connection = new MySqlConnection(connectionString))
|
||||
{
|
||||
DataSet dataSet = new DataSet();
|
||||
|
||||
try
|
||||
{
|
||||
var strSql = "";
|
||||
|
||||
connection.Open();
|
||||
|
||||
MySqlDataAdapter command = new MySqlDataAdapter();
|
||||
if (reqModel.KeyWhere == "testLogID")
|
||||
{
|
||||
var forIDdbTableName = string.Format(TestLogTbName, reqModel.ProjectID, stationList.Min(m => m.StationID));
|
||||
strSql = "SELECT DUT_SN FROM `" + forIDdbTableName + "` WHERE ID=" + reqModel.KeyWord.ToInt();
|
||||
command = new MySqlDataAdapter(strSql.ToString(), connection);
|
||||
command.Fill(dataSet, "ds");
|
||||
if (dataSet.Tables[0].Rows.Count > 0)
|
||||
{
|
||||
maxAssemblySn = dataSet.Tables[0].Rows[0]["DUT_SN"].ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
result.Message = "该序号暂无数据";
|
||||
return result;
|
||||
}
|
||||
}
|
||||
else if (reqModel.KeyWhere == "number")
|
||||
{
|
||||
maxAssemblySn = reqModel.KeyWord;
|
||||
}
|
||||
//从组合站中取出最大的序号集
|
||||
foreach (var item in assemPrList)
|
||||
{
|
||||
dataSet.Clear();
|
||||
dbTableName = string.Format(TestLogTbName, reqModel.ProjectID, item.StationID);
|
||||
|
||||
strSql = "select AssemblySn from " + dbTableName + " Where locate('," + maxAssemblySn + ",',CONCAT(',',AssemblySn,','))";
|
||||
|
||||
command = new MySqlDataAdapter(strSql.ToString(), connection);
|
||||
command.Fill(dataSet, "ds");
|
||||
|
||||
if (dataSet.Tables[0].Rows.Count > 0)
|
||||
{
|
||||
maxAssemblySn = dataSet.Tables[0].Rows[0]["AssemblySn"].ToString();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var dalHelperCustom = new DALHelperCustom<DataQuerySearch>();
|
||||
foreach (var item in stationList)
|
||||
{
|
||||
dataSet.Clear();
|
||||
thisDataList = null;
|
||||
strSqlSB.Remove(0, strSqlSB.Length);//移除stringBuilder中的内容
|
||||
|
||||
dbTableName = string.Format(TestLogTbName, reqModel.ProjectID, item.StationID);
|
||||
|
||||
strSqlSB.Append("SELECT ID,StartTime,TestResult,DUT_SN FROM " + dbTableName);
|
||||
strSqlSB.Append(" WHERE locate(CONCAT(',',DUT_SN,','),'," + maxAssemblySn + ",')");
|
||||
|
||||
command = new MySqlDataAdapter(strSqlSB.ToString(), connection);
|
||||
command.Fill(dataSet, "ds");
|
||||
|
||||
//if (dataSet.Tables[0].Rows.Count == 0)
|
||||
//{
|
||||
// break;
|
||||
//}
|
||||
thisDataList = dalHelperCustom.DataRowToModels(dataSet.Tables[0]);
|
||||
|
||||
foreach (var data in thisDataList)
|
||||
{
|
||||
dataList.Add(new DataQuerySearch
|
||||
{
|
||||
ID = data.ID,
|
||||
StartTime = data.StartTime == null ? "" : data.StartTime,
|
||||
TestResult = data.TestResult,
|
||||
StationName = item.StationName,
|
||||
StationID = item.StationID,
|
||||
ProjectID = reqModel.ProjectID,
|
||||
DUT_SN = data.DUT_SN,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
catch (MySqlException ex)
|
||||
{
|
||||
result.Message = ex.Message;
|
||||
}
|
||||
}
|
||||
|
||||
rdata.ProductNumbers = maxAssemblySn;
|
||||
rdata.DataQuerySearchList = dataList;
|
||||
result.Data = rdata;
|
||||
result.Status = 200;
|
||||
}
|
||||
catch (CustomException ex)
|
||||
{
|
||||
result.Message = ex.Message;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
result.Message = "网络系统繁忙,请稍候再试!";
|
||||
Logs.WriteErrorLog(ex);
|
||||
}
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 测试记录详情
|
||||
/// </summary>
|
||||
/// <param name="projectID"></param>
|
||||
/// <param name="stationID"></param>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
public static ReturnResult<object> GetTestLogDetails(int projectID, int stationID, int id)
|
||||
{
|
||||
ReturnResult<object> result = new ReturnResult<object>();
|
||||
|
||||
string connectionString = Users.GerOnUserCofin();
|
||||
using (MySql.Data.MySqlClient.MySqlConnection connection = new MySql.Data.MySqlClient.MySqlConnection(connectionString))
|
||||
{
|
||||
System.Data.DataSet dataSet = new System.Data.DataSet();
|
||||
try
|
||||
{
|
||||
connection.Open();
|
||||
|
||||
MySql.Data.MySqlClient.MySqlDataAdapter command = new MySql.Data.MySqlClient.MySqlDataAdapter();
|
||||
|
||||
var forIDdbTableName = string.Format(TestLogTbName, projectID, stationID);
|
||||
var strSql = "SELECT * FROM `" + forIDdbTableName + "` WHERE ID=" + id;
|
||||
|
||||
command = new MySql.Data.MySqlClient.MySqlDataAdapter(strSql.ToString(), connection);
|
||||
command.Fill(dataSet, "ds");
|
||||
|
||||
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
|
||||
|
||||
foreach (DataRow Row in dataSet.Tables[0].Rows)//循环行
|
||||
{
|
||||
Dictionary<string, object> row = new Dictionary<string, object>();
|
||||
for (int i = 0; i < Row.ItemArray.Length; i++)
|
||||
{
|
||||
row.Add(dataSet.Tables[0].Columns[i].ColumnName, Row[i].ToString());
|
||||
}
|
||||
rows.Add(row);
|
||||
}
|
||||
result.Data = rows;
|
||||
result.Status = 200;
|
||||
|
||||
}
|
||||
catch (MySql.Data.MySqlClient.MySqlException ex)
|
||||
{
|
||||
//throw new Exception(ex.Message);
|
||||
result.Message = ex.Message;
|
||||
Logs.WriteErrorLog(ex);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static ReturnResult<object> GetTestLogDateList(RequestTestLogDateSearch reqModel, List<TBL_Project> cacheUserProject, List<TBL_StationList> cacheUserStation)
|
||||
{
|
||||
ReturnResult<object> result = new ReturnResult<object>();
|
||||
try
|
||||
{
|
||||
if (reqModel.StartDate == null && reqModel.EndDate == null)
|
||||
{
|
||||
result.Message = "请选择日期";
|
||||
return result;
|
||||
}
|
||||
var project = cacheUserProject.SingleOrDefault(x => x.ID == reqModel.ProjectID);
|
||||
if (project == null)
|
||||
{
|
||||
result.Message = "无效或不存在的机型";
|
||||
return result;
|
||||
}
|
||||
|
||||
//第一站工作站
|
||||
var station = cacheUserStation.Where(x => x.ProjectID == reqModel.ProjectID).OrderBy(o => o.ArtworkOrder).FirstOrDefault();//当前选择的工艺站
|
||||
|
||||
if (station == null)
|
||||
{
|
||||
result.Message = "当前机型无测试站";
|
||||
return result;
|
||||
}
|
||||
|
||||
var vModel = new ResponseEveryDate();
|
||||
var dataList = new List<DataQuerySearch>();
|
||||
var listCount = 0;
|
||||
var page = reqModel.page;
|
||||
var pagesize = reqModel.pagesize;
|
||||
var dbTableName = string.Format(TestLogTbName, reqModel.ProjectID, station.ID);//查询表名
|
||||
var startDataTime = (reqModel.StartDate ?? DateTime.Now).ToString("yyyy-MM-dd 00:00:00");//开始时间
|
||||
var endDataTime = (reqModel.EndDate ?? DateTime.Now).AddDays(1).ToString("yyyy-MM-dd 00:00:00");//结束时间
|
||||
|
||||
var strWhereStr = "";
|
||||
|
||||
if (reqModel.StartDate != null)
|
||||
{
|
||||
if (reqModel.EndDate != null)
|
||||
{
|
||||
strWhereStr += string.Format(" (DATE_FORMAT(StartTime, '%Y-%m-%d %H:%i:%s') >='{0}')", startDataTime);
|
||||
strWhereStr += string.Format(" AND (DATE_FORMAT(StartTime, '%Y-%m-%d %H:%i:%s') <'{0}')", endDataTime);
|
||||
}
|
||||
else
|
||||
{
|
||||
strWhereStr += (string.Format("TO_DAYS('{0}')=TO_DAYS(StartTime)", startDataTime));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
strWhereStr += (string.Format("TO_DAYS('{0}')=TO_DAYS(StartTime)", endDataTime));
|
||||
}
|
||||
|
||||
string connectionString = Users.GerOnUserCofin();
|
||||
var dalHelperCustom = new DALHelperCustom<DataQuerySearch>();
|
||||
using (MySqlConnection connection = new MySqlConnection(connectionString))
|
||||
{
|
||||
DataSet dataSet = new DataSet();
|
||||
|
||||
connection.Open();
|
||||
|
||||
|
||||
using (MySqlCommand cmd = new MySqlCommand())
|
||||
{
|
||||
cmd.Connection = connection;
|
||||
|
||||
cmd.CommandText = "select count(*) from `" + dbTableName + "` WHERE " + strWhereStr + ";";
|
||||
|
||||
var obj = cmd.ExecuteScalar();
|
||||
if (!(Object.Equals(obj, null)) && !(Object.Equals(obj, System.DBNull.Value)))
|
||||
{
|
||||
listCount = int.Parse(obj.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
MySqlDataAdapter command = new MySqlDataAdapter();
|
||||
var sqlStr = "SELECT ID,StartTime,TestResult,DUT_SN FROM " + dbTableName + " WHERE " + strWhereStr + " order by ID desc LIMIT " + (page - 1) * pagesize + "," + pagesize + ";";
|
||||
command = new MySqlDataAdapter(sqlStr, connection);
|
||||
command.Fill(dataSet, "ds");
|
||||
|
||||
var thisDataList = dalHelperCustom.DataRowToModels(dataSet.Tables[0]);
|
||||
foreach (var data in thisDataList)
|
||||
{
|
||||
dataList.Add(new DataQuerySearch
|
||||
{
|
||||
ID = data.ID,
|
||||
StartTime = data.StartTime == null ? "" : data.StartTime,
|
||||
TestResult = data.TestResult,
|
||||
StationName = station.StationName,
|
||||
StationID = station.ID,
|
||||
ProjectID = reqModel.ProjectID,
|
||||
DUT_SN = data.DUT_SN,
|
||||
});
|
||||
}
|
||||
}
|
||||
vModel.DataList = dataList;
|
||||
vModel.TotalCount = listCount;
|
||||
result.Data = vModel;
|
||||
result.Status = 200;
|
||||
}
|
||||
catch (CustomException ex)
|
||||
{
|
||||
result.Message = ex.Message;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
result.Message = "网络系统繁忙,请稍候再试!";
|
||||
Logs.WriteErrorLog(ex);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 抽检
|
||||
/// </summary>
|
||||
/// <param name="reqModel"></param>
|
||||
/// <param name="cacheUserProject"></param>
|
||||
/// <param name="cacheUserStation"></param>
|
||||
/// <returns></returns>
|
||||
public static ReturnResult<object> QualityAssuranceAjax(RequestQAAjaxSearch reqModel, List<TBL_Project> cacheUserProject, List<TBL_StationList> cacheUserStation)
|
||||
{
|
||||
ReturnResult<object> result = new ReturnResult<object>();
|
||||
try
|
||||
{
|
||||
#region 校验
|
||||
var project = cacheUserProject.SingleOrDefault(x => x.ID == reqModel.ProjectID);
|
||||
if (project == null)
|
||||
{
|
||||
result.Message = "无效或不存在的机型";
|
||||
return result;
|
||||
}
|
||||
|
||||
var qaStation = cacheUserStation.FirstOrDefault(x => x.ProjectID == reqModel.ProjectID && x.StationType == StationType.QA.GetEnumDesc());
|
||||
if (qaStation == null)
|
||||
{
|
||||
result.Message = "该机型暂无QA站";
|
||||
return result;
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(reqModel.Number))
|
||||
{
|
||||
result.Message = "请输入条码号";
|
||||
return result;
|
||||
}
|
||||
#endregion
|
||||
|
||||
string dbTableName;
|
||||
var checkResult = true;
|
||||
var strCheckProcList = new List<string>();//条件语句列表
|
||||
var rdata = new ResponseQAAjaxSearch();
|
||||
var qaResultVM = new QAResultVM();
|
||||
var dataList = new List<QADataSearch>();
|
||||
|
||||
#region 工艺站处理
|
||||
//QA之外的站
|
||||
var stationList = cacheUserStation.Where(x => x.ProjectID == reqModel.ProjectID && x.StationType != StationType.QA.GetEnumDesc()).OrderBy(o => o.ArtworkOrder).Select(s => new TBL_Station { StationID = s.ID, StationName = s.StationName, StationType = s.StationType }).ToList();
|
||||
|
||||
var maxAssemblySn = reqModel.Number.Trim();//最大组合编号
|
||||
var assemPrList = stationList.Where(x => x.StationType == StationType.Assem.GetEnumDesc()).OrderByDescending(x => x.ArtworkOrder).ToList();//组装站列表
|
||||
|
||||
#endregion
|
||||
|
||||
#region 查询过程
|
||||
string connectionString = Users.GerOnUserCofin();
|
||||
using (MySqlConnection connection = new MySqlConnection(connectionString))
|
||||
{
|
||||
DataSet dataSet = new DataSet();
|
||||
try
|
||||
{
|
||||
connection.Open();
|
||||
|
||||
MySqlDataAdapter command = new MySqlDataAdapter();
|
||||
var strSql = "";
|
||||
foreach (var assemPr in assemPrList)
|
||||
{
|
||||
dataSet.Reset();
|
||||
//dataSet.Clear();
|
||||
dbTableName = string.Format(TestLogTbName, reqModel.ProjectID, assemPr.StationID);
|
||||
|
||||
strSql = "select AssemblySn from " + dbTableName + " Where locate('," + reqModel.Number.Trim() + ",',CONCAT(',',AssemblySn,','));";
|
||||
|
||||
command = new MySqlDataAdapter(strSql.ToString(), connection);
|
||||
command.Fill(dataSet, "ds");
|
||||
|
||||
if (dataSet.Tables[0].Rows.Count > 0)
|
||||
{
|
||||
maxAssemblySn = dataSet.Tables[0].Rows[0]["AssemblySn"].ToString();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
StringBuilder strSqlSB = new StringBuilder();
|
||||
|
||||
var dalHelperCustom = new DALHelperCustom<QADataSearch>();
|
||||
var thisDataList = new List<QADataSearch>();
|
||||
|
||||
|
||||
foreach (var item in stationList)
|
||||
{
|
||||
dataSet.Reset();
|
||||
//dataSet.Clear();
|
||||
thisDataList = null;
|
||||
strSqlSB.Remove(0, strSqlSB.Length);//移除
|
||||
|
||||
dbTableName = string.Format(TestLogTbName, reqModel.ProjectID, item.StationID);
|
||||
|
||||
if (item.StationType == StationType.Test2.GetEnumDesc())
|
||||
{
|
||||
strSqlSB.Append("SELECT DateTime_2nd as StartTime,TestResult,DUT_SN FROM " + dbTableName);
|
||||
strSqlSB.Append(" WHERE locate(CONCAT(',',DUT_SN,','),'," + maxAssemblySn + ",')");
|
||||
strSqlSB.Append(" ORDER BY StartTime DESC LIMIT 1;");
|
||||
}
|
||||
else
|
||||
{
|
||||
strSqlSB.Append("SELECT StartTime,TestResult,DUT_SN FROM " + dbTableName);
|
||||
strSqlSB.Append(" WHERE locate(CONCAT(',',DUT_SN,','),'," + maxAssemblySn + ",')");
|
||||
strSqlSB.Append(" ORDER BY StartTime DESC LIMIT 1;");
|
||||
}
|
||||
|
||||
|
||||
command = new MySqlDataAdapter(strSqlSB.ToString(), connection);
|
||||
command.Fill(dataSet, "ds");
|
||||
|
||||
thisDataList = dalHelperCustom.DataRowToModels(dataSet.Tables[0]);
|
||||
if (thisDataList.Where(x => !x.TestResult).Count() > 0 || thisDataList.Where(x => x.TestResult).Count() == 0)
|
||||
{
|
||||
checkResult = false;
|
||||
}
|
||||
|
||||
foreach (var data in thisDataList)
|
||||
{
|
||||
dataList.Add(new QADataSearch
|
||||
{
|
||||
StationID = item.StationID,
|
||||
StartTime = data.StartTime == null ? "" : data.StartTime,
|
||||
TestResult = data.TestResult,
|
||||
StationName = item.StationName,
|
||||
});
|
||||
|
||||
strCheckProcList.Add(item.StationName + ":" + data.TestResult + " - " + data.StartTime);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
catch (MySqlException ex)
|
||||
{
|
||||
result.Message = ex.Message;
|
||||
Logs.WriteErrorLog(ex);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
qaResultVM.ProductNumbers = maxAssemblySn;
|
||||
qaResultVM.TestResult = checkResult;
|
||||
qaResultVM.CheckProc = string.Join("<br>", strCheckProcList.ToArray());
|
||||
qaResultVM.ProjectID = reqModel.ProjectID;
|
||||
qaResultVM.QAStationID = qaStation.ID;
|
||||
|
||||
rdata.qaResultVM = qaResultVM;
|
||||
rdata.QADataSearchList = dataList;
|
||||
result.Data = rdata;
|
||||
result.Status = 200;
|
||||
|
||||
}
|
||||
catch (CustomException ex)
|
||||
{
|
||||
result.Message = ex.Message;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
result.Message = "网络系统繁忙,请稍候再试!";
|
||||
Logs.WriteErrorLog(ex);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static ReturnResult<object> QualityAssuranceSubmit(RequestQASubmit reqModel, int uesrID)
|
||||
{
|
||||
ReturnResult<object> result = new ReturnResult<object>();
|
||||
try
|
||||
{
|
||||
var total = 0;
|
||||
var totalToday = 0;
|
||||
int rows = 0;
|
||||
var data = new ResponseQASubmit();
|
||||
var entity = new TBL_QA_TestLog
|
||||
{
|
||||
UserID = uesrID,
|
||||
StartTime = DateTime.Now,
|
||||
DUT_SN = reqModel.NumberSubmit,
|
||||
TestResult = reqModel.QA_TestResultSubmit,
|
||||
QA_FlowLog = reqModel.QA_CheckProcSubmit
|
||||
};
|
||||
|
||||
if (reqModel.QA_TestResultSubmit)
|
||||
{
|
||||
entity.QA_CheckResult = "OK";
|
||||
}
|
||||
else
|
||||
{
|
||||
entity.QA_CheckResult = "NG";
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(reqModel.QARemarks))
|
||||
{
|
||||
entity.QA_CheckResult += ":" + reqModel.QARemarks;
|
||||
}
|
||||
|
||||
var dbTableName = string.Format(TestLogTbName, reqModel.QA_ProjectID, reqModel.QA_QAStationID);
|
||||
|
||||
StringBuilder strSql = new StringBuilder();
|
||||
strSql.Append("insert into " + dbTableName + "(");
|
||||
|
||||
PropertyInfo[] propertys = entity.GetType().GetProperties();// 获得此模型的公共属性
|
||||
|
||||
List<MySqlParameter> parameters = new List<MySqlParameter>();
|
||||
foreach (PropertyInfo pi in propertys)
|
||||
{
|
||||
if (!pi.CanWrite) continue;
|
||||
strSql.Append(pi.Name + ",");
|
||||
}
|
||||
strSql.Remove(strSql.Length - 1, 1);//移除最后一个逗号
|
||||
strSql.Append(" ) values (");
|
||||
foreach (PropertyInfo pi in propertys)
|
||||
{
|
||||
if (!pi.CanWrite) continue;
|
||||
strSql.Append("@" + pi.Name + ",");
|
||||
parameters.Add(new MySqlParameter("@" + pi.Name, pi.GetValue(entity)));
|
||||
}
|
||||
strSql.Remove(strSql.Length - 1, 1);//移除最后一个逗号
|
||||
strSql.Append(");select @@IDENTITY");
|
||||
|
||||
string connectionString = Services.Manager.Users.GerOnUserCofin();
|
||||
using (MySqlConnection connection = new MySqlConnection(connectionString))
|
||||
{
|
||||
using (MySqlCommand cmd = new MySqlCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (connection.State != ConnectionState.Open)
|
||||
connection.Open();
|
||||
cmd.Connection = connection;
|
||||
cmd.CommandText = strSql.ToString();
|
||||
|
||||
cmd.CommandType = CommandType.Text;//cmdType;
|
||||
if (parameters.ToArray() != null)
|
||||
{
|
||||
foreach (MySqlParameter parameter in parameters.ToArray())
|
||||
{
|
||||
if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
|
||||
(parameter.Value == null))
|
||||
{
|
||||
parameter.Value = DBNull.Value;
|
||||
}
|
||||
cmd.Parameters.Add(parameter);
|
||||
}
|
||||
}
|
||||
|
||||
rows = cmd.ExecuteNonQuery();
|
||||
cmd.Parameters.Clear();
|
||||
|
||||
cmd.CommandText = "select COUNT(*) FROM " + dbTableName;
|
||||
|
||||
object obj = cmd.ExecuteScalar();
|
||||
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
total = int.Parse(obj.ToString());
|
||||
}
|
||||
|
||||
cmd.CommandText = "select COUNT(*) FROM " + dbTableName + " WHERE TO_DAYS('" + DateTime.Now.ToString("yyyy-MM-dd 00:00:00") + "')=TO_DAYS(StartTime)";
|
||||
obj = cmd.ExecuteScalar();
|
||||
|
||||
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
totalToday = int.Parse(obj.ToString());
|
||||
}
|
||||
|
||||
}
|
||||
catch (MySqlException e)
|
||||
{
|
||||
result.Message = e.Message;
|
||||
}
|
||||
}
|
||||
}
|
||||
data.Total = total;
|
||||
data.TotalToday = totalToday;
|
||||
|
||||
result.Data = data;
|
||||
if (rows > 0)
|
||||
{
|
||||
result.Status = 200;
|
||||
}
|
||||
|
||||
//var isSuccess = false;
|
||||
//isSuccess = new DALHelperCustom<TBL_QA_TestLog>(dbTableName).Add(entity);
|
||||
|
||||
//if (isSuccess)
|
||||
//{
|
||||
// result.Status = 200;
|
||||
//}
|
||||
}
|
||||
catch (CustomException ex)
|
||||
{
|
||||
result.Message = ex.Message;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
result.Message = "网络系统繁忙,请稍候再试!";
|
||||
Logs.WriteErrorLog(ex);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 抽检记录查询
|
||||
/// </summary>
|
||||
/// <param name="reqModel"></param>
|
||||
/// <param name="cacheUserProject"></param>
|
||||
/// <param name="cacheUserStation"></param>
|
||||
/// <returns></returns>
|
||||
public static ReturnResult<object> QALogSearch(RequestQALogSearch reqModel, List<TBL_Project> cacheUserProject, List<TBL_StationList> cacheUserStation)
|
||||
{
|
||||
ReturnResult<object> result = new ReturnResult<object>();
|
||||
|
||||
try
|
||||
{
|
||||
var project = cacheUserProject.SingleOrDefault(x => x.ID == reqModel.ProjectID);
|
||||
if (project == null)
|
||||
{
|
||||
result.Message = "无效或不存在的机型";
|
||||
return result;
|
||||
}
|
||||
|
||||
//取QA站ID
|
||||
var qaStation = cacheUserStation.FirstOrDefault(x => x.ProjectID == reqModel.ProjectID && x.StationType == StationType.QA.GetEnumDesc());
|
||||
if (qaStation == null)
|
||||
{
|
||||
result.Message = "该机型暂无QA站";
|
||||
return result;
|
||||
}
|
||||
|
||||
var dataList = new List<ResponseQALogSearch>();
|
||||
var strWhereList = new List<string>();//条件语句列表
|
||||
|
||||
var startDataTime = (reqModel.StartDate ?? DateTime.Now).ToString("yyyy-MM-dd 00:00:00");//开始时间
|
||||
var endDataTime = (reqModel.EndDate ?? DateTime.Now).AddDays(1).ToString("yyyy-MM-dd 00:00:00");//结束时间
|
||||
|
||||
//时间
|
||||
if (reqModel.StartDate != null)
|
||||
{
|
||||
if (reqModel.EndDate != null)
|
||||
{
|
||||
if (reqModel.StartDate > reqModel.EndDate)
|
||||
{
|
||||
throw new CustomException("结束时间必须早于开始时间");
|
||||
}
|
||||
|
||||
strWhereList.Add(string.Format("(DATE_FORMAT(StartTime, '%Y-%m-%d %H:%i:%s') >='{0}')", startDataTime));
|
||||
strWhereList.Add(string.Format("(DATE_FORMAT(StartTime, '%Y-%m-%d %H:%i:%s') <='{0}')", endDataTime));
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
strWhereList.Add(string.Format("TO_DAYS('{0}')=TO_DAYS(StartTime)", startDataTime));
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (reqModel.EndDate != null)
|
||||
{
|
||||
strWhereList.Add(string.Format("TO_DAYS('{0}')=TO_DAYS(StartTime)", endDataTime));
|
||||
}
|
||||
}
|
||||
|
||||
string strWhere = "";
|
||||
if (strWhereList.Count > 0)
|
||||
{
|
||||
strWhere = " where " + string.Join(" AND ", strWhereList.ToArray()) + ";";
|
||||
}
|
||||
|
||||
string connectionString = Users.GerOnUserCofin();
|
||||
using (MySqlConnection connection = new MySqlConnection(connectionString))
|
||||
{
|
||||
DataSet dataSet = new DataSet();
|
||||
try
|
||||
{
|
||||
StringBuilder strSql = new StringBuilder();
|
||||
|
||||
connection.Open();
|
||||
|
||||
var dbTableName = string.Format(TestLogTbName, reqModel.ProjectID, qaStation.ID);
|
||||
|
||||
strSql.Append("select * from " + dbTableName);
|
||||
if (!string.IsNullOrEmpty(strWhere))
|
||||
{
|
||||
strSql.Append(strWhere);
|
||||
}
|
||||
|
||||
MySqlDataAdapter command = new MySqlDataAdapter(strSql.ToString(), connection);
|
||||
command.Fill(dataSet, "ds");
|
||||
|
||||
var onQALogDataList = new DALHelperCustom<ResponseQALogSearch>().DataRowToModels(dataSet.Tables[0]);
|
||||
|
||||
foreach (var data in onQALogDataList)
|
||||
{
|
||||
dataList.Add(new ResponseQALogSearch
|
||||
{
|
||||
StartTime = data.StartTime == null ? "" : data.StartTime,
|
||||
QA_CheckResult = data.QA_CheckResult,
|
||||
DUT_SN = data.DUT_SN,
|
||||
});
|
||||
}
|
||||
}
|
||||
catch (MySql.Data.MySqlClient.MySqlException ex)
|
||||
{
|
||||
//throw new Exception(ex.Message);
|
||||
result.Message = "网络系统繁忙,请稍候再试!";
|
||||
Logs.WriteErrorLog(ex);
|
||||
}
|
||||
result.Data = dataList;
|
||||
result.Status = 200;
|
||||
}
|
||||
}
|
||||
catch (CustomException ex)
|
||||
{
|
||||
result.Message = ex.Message;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
result.Message = "网络系统繁忙,请稍候再试!";
|
||||
Logs.WriteErrorLog(ex);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public static ReturnResult<object> EveryDaySearch(int pid, int oid, List<TBL_Project> cacheUserProject, List<TBL_StationList> cacheUserStation, List<TBL_Orders> cacheUserOrder, string connectionString)
|
||||
{
|
||||
ReturnResult<object> result = new ReturnResult<object>();
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
var project = cacheUserProject.SingleOrDefault(x => x.ID == pid);
|
||||
if (project == null)
|
||||
{
|
||||
result.Message = "无效或不存在的机型";
|
||||
return result;
|
||||
}
|
||||
var order = cacheUserOrder.SingleOrDefault(x => x.ProductID == pid && x.ID == oid);
|
||||
if (order == null)
|
||||
{
|
||||
result.Message = "无效或不存在的订单";
|
||||
return result;
|
||||
}
|
||||
|
||||
var resModel = new ResponseEveryDaySearch
|
||||
{
|
||||
ProjectName = project.ProjectName,
|
||||
OrderNo = order.OrderNo,
|
||||
OrderCount = order.OrderCount,
|
||||
CreateTime = order.CreateTime.ToString("yyyy/MM/dd"),
|
||||
DeliveryTime = order.DeliveryTime.ToString("yyyy/MM/dd"),
|
||||
};
|
||||
|
||||
|
||||
var stationList = cacheUserStation.Where(x => x.StationType != StationType.QA.GetEnumDesc() && x.ProjectID == order.ProductID).OrderBy(o => o.ArtworkOrder);//不为该机型QA的测试站
|
||||
|
||||
DataTable tblDatas = new DataTable("Datas");
|
||||
var strSql = "";
|
||||
var dbTableName = "";
|
||||
var dalHelperCustom = new DALHelperCustom<VM_TBL_CapacityEveryDay>();
|
||||
|
||||
using (MySqlConnection connection = new MySqlConnection(connectionString))
|
||||
{
|
||||
|
||||
var minTime = Convert.ToDateTime(order.CreateTime.ToString("yyyy/MM/dd"));//订单最早日期
|
||||
var maxTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy/MM/dd"));//订单最晚日期
|
||||
|
||||
DataSet dataSet = new DataSet();
|
||||
MySqlDataAdapter command = new MySqlDataAdapter();
|
||||
|
||||
connection.Open();
|
||||
|
||||
strSql = "SELECT * FROM `TBL_ProductionPlan` WHERE OrderID=" + order.ID + " ORDER BY ProductionTime LIMIT 0,1;";
|
||||
command = new MySqlDataAdapter(strSql, connection);
|
||||
command.Fill(dataSet, "ds");
|
||||
|
||||
var ppList = new DALHelperCustom<TBL_ProductionPlan>().DataRowToModels(dataSet.Tables[0]);
|
||||
if (ppList != null && ppList.Count() > 0)
|
||||
{
|
||||
minTime = ppList.First().ProductionTime;
|
||||
}
|
||||
|
||||
|
||||
TimeSpan ts = maxTime.Subtract(minTime);
|
||||
int differenceInDays = ts.Days + 1;
|
||||
|
||||
|
||||
|
||||
tblDatas.Columns.Add("测试站", Type.GetType("System.String"));//新列
|
||||
tblDatas.Columns.Add("数据", Type.GetType("System.String"));//新列
|
||||
for (var i = 0; i < differenceInDays; i++)
|
||||
{
|
||||
tblDatas.Columns.Add(minTime.AddDays(i).ToString("yyyy/MM/dd"), Type.GetType("System.String"));//新列
|
||||
}
|
||||
|
||||
foreach (var itemStation in stationList)
|
||||
{
|
||||
strSql = "";
|
||||
dataSet.Clear();
|
||||
|
||||
dbTableName = string.Format(TestLogTbName, itemStation.ProjectID, itemStation.ID);//测试站表名
|
||||
|
||||
|
||||
DataRow totalRow = tblDatas.NewRow();//总数据行
|
||||
totalRow["测试站"] = itemStation.StationName;
|
||||
totalRow["数据"] = "总数";
|
||||
|
||||
|
||||
DataRow effRow = tblDatas.NewRow();//有效数行
|
||||
effRow["测试站"] = itemStation.StationName;
|
||||
effRow["数据"] = "有效";
|
||||
|
||||
|
||||
DataRow passRow = tblDatas.NewRow();//PASS行
|
||||
passRow["测试站"] = itemStation.StationName;
|
||||
passRow["数据"] = "PASS";
|
||||
|
||||
|
||||
DataRow fallRow = tblDatas.NewRow();//FALL行
|
||||
fallRow["测试站"] = itemStation.StationName;
|
||||
fallRow["数据"] = "FALL";
|
||||
|
||||
strSql = "select DUT_SN,TestResult,StartTime from `" + dbTableName + "` Where OrderID=" + oid;//查询语句
|
||||
|
||||
strSql += (string.Format(" AND (DATE_FORMAT(StartTime, '%Y-%m-%d %H:%i:%s') >='{0}')", minTime.ToString("yyyy-MM-dd hh:mm:ss")));
|
||||
strSql += (string.Format(" AND (DATE_FORMAT(StartTime, '%Y-%m-%d %H:%i:%s') <='{0}')", maxTime.ToString("yyyy-MM-dd hh:mm:ss")));
|
||||
strSql += ";";
|
||||
|
||||
command = new MySqlDataAdapter(strSql.ToString(), connection);
|
||||
command.Fill(dataSet, "ds");
|
||||
|
||||
if (dataSet.Tables[0].Rows.Count > 0)
|
||||
{
|
||||
var thisDataList = dalHelperCustom.DataRowToModels(dataSet.Tables[0]).Select(s => new { StartTime = s.StartTime.ToString("yyyy/MM/dd"), s.TestResult, s.DUT_SN, DataTime = s.StartTime });
|
||||
var dataListGroup = thisDataList.GroupBy(x => x.StartTime).OrderBy(o => o.Key);
|
||||
|
||||
foreach (var itemG in dataListGroup)
|
||||
{
|
||||
totalRow[itemG.Key] = thisDataList.Where(x => x.StartTime == itemG.Key).Count();
|
||||
effRow[itemG.Key] = thisDataList.Where(x => x.StartTime == itemG.Key).GroupBy(g => g.DUT_SN).Count();
|
||||
|
||||
//passRow[itemG.Key] = thisDataList.Where(x => x.StartTime == itemG.Key && x.TestResult).Count();
|
||||
//fallRow[itemG.Key] = thisDataList.Where(x => x.StartTime == itemG.Key && !x.TestResult).Count();
|
||||
|
||||
passRow[itemG.Key] = thisDataList.Where(x => x.StartTime == itemG.Key).GroupBy(s => s.DUT_SN)
|
||||
.Select(s => s.OrderByDescending(o => o.DataTime).FirstOrDefault()).Where(x => x.TestResult).Count();
|
||||
fallRow[itemG.Key] = thisDataList.Where(x => x.StartTime == itemG.Key).GroupBy(s => s.DUT_SN)
|
||||
.Select(s => s.OrderByDescending(o => o.DataTime).FirstOrDefault()).Where(x => !x.TestResult).Count();
|
||||
}
|
||||
}
|
||||
tblDatas.Rows.Add(totalRow);
|
||||
tblDatas.Rows.Add(effRow);
|
||||
tblDatas.Rows.Add(passRow);
|
||||
tblDatas.Rows.Add(fallRow);
|
||||
}
|
||||
}
|
||||
var rows = ModelHelper.TableToRow(tblDatas);
|
||||
|
||||
resModel.Rows = rows;
|
||||
result.Data = resModel;
|
||||
result.Status = 200;
|
||||
}
|
||||
catch (MySqlException ex)
|
||||
{
|
||||
result.Message = "网络系统繁忙,请稍候再试!";
|
||||
Logs.WriteErrorLog(ex);
|
||||
}
|
||||
catch (CustomException ex)
|
||||
{
|
||||
result.Message = ex.Message;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
result.Message = "网络系统繁忙,请稍候再试!";
|
||||
Logs.WriteErrorLog(ex);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
30
AUTS.Services/Manager/ChartsDatas.cs
Normal file
30
AUTS.Services/Manager/ChartsDatas.cs
Normal file
@@ -0,0 +1,30 @@
|
||||
using AUTS.Domain.Entities;
|
||||
using AUTS.Services.Cache;
|
||||
using AUTS.Services.Tool;
|
||||
using System.Linq;
|
||||
|
||||
namespace AUTS.Services.Manager
|
||||
{
|
||||
public partial class ChartsDatas
|
||||
{
|
||||
private static readonly string sysDBListKey = "sysManage_DBList";//库列表
|
||||
|
||||
public static void UpdateSetCacheOfDBList()
|
||||
{
|
||||
var dbList = CacheHelp.GetSysDBList();
|
||||
|
||||
using (var db = new Uts_ManageEntities())
|
||||
{
|
||||
//所有
|
||||
var count = db.TBL_UTS_Manage_DBList.Count();
|
||||
if (count > dbList.Count)
|
||||
{
|
||||
var ids = "," + string.Join(",", dbList.Select(s => s.ID).ToArray()) + ",";
|
||||
var addlist = db.TBL_UTS_Manage_DBList.ToList();
|
||||
RedisHelper.StringSet(sysDBListKey, addlist);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
26
AUTS.Services/Manager/Home.cs
Normal file
26
AUTS.Services/Manager/Home.cs
Normal file
@@ -0,0 +1,26 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AUTS.Services.Manager
|
||||
{
|
||||
public class Home
|
||||
{
|
||||
/// <summary>
|
||||
/// 已确认
|
||||
/// </summary>
|
||||
public int confirm { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 生产中
|
||||
/// </summary>
|
||||
public int yield { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 已完成
|
||||
/// </summary>
|
||||
public int accomplish { get; set; }
|
||||
}
|
||||
}
|
||||
328
AUTS.Services/Manager/Logs.cs
Normal file
328
AUTS.Services/Manager/Logs.cs
Normal file
@@ -0,0 +1,328 @@
|
||||
using AUTS.Services.Tool;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Entity.Validation;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
using System.Web.UI;
|
||||
|
||||
namespace AUTS.Services.Manager
|
||||
{
|
||||
/// <summary>
|
||||
/// 日志类
|
||||
/// </summary>
|
||||
public partial class Logs
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 锁1 路径/App_Data/Log/
|
||||
/// </summary>
|
||||
private static readonly object _lock = new object();
|
||||
|
||||
/// <summary>
|
||||
/// 锁2 路径/App_Data/TimingPlan/
|
||||
/// </summary>
|
||||
private static readonly object _lock1 = new object();
|
||||
|
||||
/// <summary>
|
||||
/// 锁3 路径/App_Data/UDPlog/
|
||||
/// </summary>
|
||||
private static readonly object _lockUdp = new object();
|
||||
|
||||
public static void WriteErrorLog(Exception ex)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (ex != null)
|
||||
{
|
||||
string content = "类型:错误代码\r\n";
|
||||
content += "时间:" + DateTime.Now.ToString() + "\r\n";
|
||||
content += "来源:" + ex.TargetSite.ReflectedType.ToString() + "." + ex.TargetSite.Name + "\r\n";
|
||||
content += "内容:" + ex.Message + "\r\n";
|
||||
|
||||
Page page = new Page();
|
||||
HttpServerUtility server = page.Server;
|
||||
string dir = server.MapPath("/App_Data/Log/");
|
||||
if (!Directory.Exists(dir))
|
||||
{
|
||||
Directory.CreateDirectory(dir);
|
||||
}
|
||||
|
||||
string path = dir + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
|
||||
|
||||
StreamWriter FileWriter = new StreamWriter(path, true, System.Text.Encoding.UTF8); //创建日志文件
|
||||
FileWriter.Write("---------------------------------------------------\r\n");
|
||||
FileWriter.Write(content);
|
||||
FileWriter.Close(); //关闭StreamWriter对象
|
||||
|
||||
|
||||
|
||||
|
||||
//}
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public static void WriteLog(string msg)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!string.IsNullOrEmpty(msg))
|
||||
{
|
||||
|
||||
string content = "类型:调试日志\r\n";
|
||||
content += "时间:" + DateTime.Now.ToString() + "\r\n";
|
||||
content += "内容:" + msg + "\r\n";
|
||||
|
||||
Page page = new Page();
|
||||
HttpServerUtility server = page.Server;
|
||||
string dir = server.MapPath("/App_Data/Log/");
|
||||
if (!Directory.Exists(dir))
|
||||
{
|
||||
Directory.CreateDirectory(dir);
|
||||
}
|
||||
|
||||
string path = dir + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
|
||||
|
||||
StreamWriter FileWriter = new StreamWriter(path, true, System.Text.Encoding.UTF8); //创建日志文件
|
||||
FileWriter.Write("---------------------------------------------------\r\n");
|
||||
FileWriter.Write(content);
|
||||
FileWriter.Close(); //关闭StreamWriter对象
|
||||
//}
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public static void WriteErrorLog(string errsrc, Exception ex)
|
||||
{
|
||||
try
|
||||
{
|
||||
string errtxt = "";
|
||||
string exname = ex.GetType().ToString();
|
||||
if (exname == "System.Data.Entity.Validation.DbEntityValidationException")
|
||||
{
|
||||
foreach (var item in ((DbEntityValidationException)ex).EntityValidationErrors)
|
||||
{
|
||||
foreach (var err in item.ValidationErrors)
|
||||
{
|
||||
errtxt += "EntityValidationErrors >>>>>> “" + err.PropertyName + "”字段" + err.ErrorMessage + "\r\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
string content = (!string.IsNullOrEmpty(errsrc) ? "来自页面:" + errsrc : "") + "\r\n";
|
||||
content += "发生时间:" + DateTime.Now.ToString() + "\r\n";
|
||||
content += "异常对像:" + ex.TargetSite.ReflectedType.ToString() + "." + ex.TargetSite.Name + "\r\n";
|
||||
content += "错误追踪:" + ex.StackTrace + "\r\n";
|
||||
content += "错误提示:" + ex.Message + "\r\n" + errtxt;
|
||||
if (ex.InnerException != null && ex.InnerException.InnerException != null)
|
||||
content += ex.InnerException.InnerException.Message + "\r\n";
|
||||
//if (BaseConfigs.GetLogInDB == 1)
|
||||
//{
|
||||
//TSysLog log = new TSysLog();
|
||||
//log.Content = content;
|
||||
//log.Type = "系统日志";
|
||||
//log.CreateTime = DateTime.Now;
|
||||
//DataAccess.CreateSysLog().Add(log);
|
||||
//}
|
||||
//if (BaseConfigs.GetLogInFile == 1)
|
||||
//{
|
||||
Page page = new Page();
|
||||
HttpServerUtility server = page.Server;
|
||||
string dir = server.MapPath("/App_Data/Log/");
|
||||
if (!Directory.Exists(dir))
|
||||
{
|
||||
Directory.CreateDirectory(dir);
|
||||
}
|
||||
|
||||
string path = dir + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
|
||||
|
||||
StreamWriter FileWriter = new StreamWriter(path, true, System.Text.Encoding.UTF8); //创建日志文件
|
||||
FileWriter.Write("---------------------------------------------------\r\n");
|
||||
FileWriter.Write(content);
|
||||
FileWriter.Close(); //关闭StreamWriter对象
|
||||
//}
|
||||
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void WriteTimingPlanLog(string msg)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!string.IsNullOrEmpty(msg))
|
||||
{
|
||||
|
||||
string content = "类型:调试日志 ";
|
||||
content += "时间:" + DateTime.Now.ToString() + " ";
|
||||
content += "内容:" + msg + "\r\n";
|
||||
|
||||
string dir = AppDomain.CurrentDomain.BaseDirectory + "/App_Data/TimingPlan/";
|
||||
if (!Directory.Exists(dir))
|
||||
{
|
||||
Directory.CreateDirectory(dir);
|
||||
}
|
||||
|
||||
string path = dir + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
|
||||
|
||||
lock (_lock1)
|
||||
{
|
||||
StreamWriter FileWriter = new StreamWriter(path, true, Encoding.UTF8); //创建日志文件
|
||||
//FileWriter.Write("---------------------------------------------------\r\n");
|
||||
FileWriter.Write(content);
|
||||
FileWriter.Close(); //关闭StreamWriter对象
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelp.WriteExceptionLog(ex);
|
||||
}
|
||||
}
|
||||
|
||||
public static void WriteErrorTimingPlanLog(string errsrc, Exception ex)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (ex != null)
|
||||
{
|
||||
string content = (!string.IsNullOrEmpty(errsrc) ? "来自作业线程:" + errsrc : "") + "\r\n";
|
||||
content += "发生时间:" + DateTime.Now.ToString() + "\r\n";
|
||||
content += "异常对像:" + ex.TargetSite.ReflectedType.ToString() + "." + ex.TargetSite.Name + "\r\n";
|
||||
content += "错误追踪:" + ex.StackTrace + "\r\n";
|
||||
content += "错误提示:" + ex.Message + "\r\n";
|
||||
if (ex.InnerException != null && ex.InnerException.InnerException != null)
|
||||
content += ex.InnerException.InnerException.Message + "\r\n";
|
||||
|
||||
string dir = AppDomain.CurrentDomain.BaseDirectory + "/App_Data/TimingPlan/";
|
||||
if (!Directory.Exists(dir))
|
||||
{
|
||||
Directory.CreateDirectory(dir);
|
||||
}
|
||||
|
||||
string path = dir + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
|
||||
lock (_lock1)
|
||||
{
|
||||
StreamWriter FileWriter = new StreamWriter(path, true, Encoding.UTF8); //创建日志文件
|
||||
FileWriter.Write("---------------------------------------------------\r\n");
|
||||
FileWriter.Write(content);
|
||||
FileWriter.Close(); //关闭StreamWriter对象
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exl)
|
||||
{
|
||||
LogHelp.WriteExceptionLog(ex);
|
||||
LogHelp.WriteExceptionLog(exl);
|
||||
}
|
||||
}
|
||||
|
||||
public static void WriteTimingUDPLog(string msg)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!string.IsNullOrEmpty(msg))
|
||||
{
|
||||
|
||||
string content = "类型:调试日志 ";
|
||||
content += "时间:" + DateTime.Now.ToString() + " ";
|
||||
content += "内容:" + msg + "\r\n";
|
||||
|
||||
string dir = AppDomain.CurrentDomain.BaseDirectory + "/App_Data/UDPLog/";
|
||||
if (!Directory.Exists(dir))
|
||||
{
|
||||
Directory.CreateDirectory(dir);
|
||||
}
|
||||
|
||||
string path = dir + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
|
||||
|
||||
lock (_lockUdp)
|
||||
{
|
||||
StreamWriter FileWriter = new StreamWriter(path, true, Encoding.UTF8); //创建日志文件
|
||||
//FileWriter.Write("---------------------------------------------------\r\n");
|
||||
FileWriter.Write(content);
|
||||
FileWriter.Close(); //关闭StreamWriter对象
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelp.WriteExceptionLog(ex);
|
||||
}
|
||||
}
|
||||
|
||||
public static void WriteErrorTimingUDPLog(string errsrc, Exception ex)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (ex != null)
|
||||
{
|
||||
string content = (!string.IsNullOrEmpty(errsrc) ? "来自作业线程:" + errsrc : "") + "\r\n";
|
||||
content += "发生时间:" + DateTime.Now.ToString() + "\r\n";
|
||||
content += "异常对像:" + ex.TargetSite.ReflectedType.ToString() + "." + ex.TargetSite.Name + "\r\n";
|
||||
content += "错误追踪:" + ex.StackTrace + "\r\n";
|
||||
content += "错误提示:" + ex.Message + "\r\n";
|
||||
if (ex.InnerException != null && ex.InnerException.InnerException != null)
|
||||
content += ex.InnerException.InnerException.Message + "\r\n";
|
||||
|
||||
string dir = AppDomain.CurrentDomain.BaseDirectory + "/App_Data/UDPLog/";
|
||||
if (!Directory.Exists(dir))
|
||||
{
|
||||
Directory.CreateDirectory(dir);
|
||||
}
|
||||
|
||||
string path = dir + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
|
||||
lock (_lockUdp)
|
||||
{
|
||||
StreamWriter FileWriter = new StreamWriter(path, true, Encoding.UTF8); //创建日志文件
|
||||
FileWriter.Write("---------------------------------------------------\r\n");
|
||||
FileWriter.Write(content);
|
||||
FileWriter.Close(); //关闭StreamWriter对象
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exl)
|
||||
{
|
||||
LogHelp.WriteExceptionLog(ex);
|
||||
LogHelp.WriteExceptionLog(exl);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class LogHelp
|
||||
{
|
||||
/// <summary>
|
||||
/// 写入日志
|
||||
/// </summary>
|
||||
/// <param name="ex">异常对象</param>
|
||||
/// <param name="operationer">操作人</param>
|
||||
/// <param name="actionName">功能站点名称</param>
|
||||
public static void WriteExceptionLog(Exception ex, string actionName = "", string operationer = "")
|
||||
{
|
||||
if (HttpContext.Current == null)
|
||||
{
|
||||
Log4Net.ExceptionLogHelper.Log(new AUTS.Log4Net.ExceptionLogMessage() { ActionName = actionName, exception = ex, Header = "", Url = "线程", Operationer = "线程", IP = "" });
|
||||
}
|
||||
else
|
||||
{
|
||||
Log4Net.ExceptionLogHelper.Log(new AUTS.Log4Net.ExceptionLogMessage() { ActionName = actionName, exception = ex, Header = HttpContext.Current.Request.Headers.ToString(), Url = HttpContext.Current.Request.Url.ToString(), Operationer = operationer, IP = IPHelper.GetIP() });
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
226
AUTS.Services/Manager/Orders.cs
Normal file
226
AUTS.Services/Manager/Orders.cs
Normal file
@@ -0,0 +1,226 @@
|
||||
using AUTS.Domain.Entities;
|
||||
using AUTS.Domain.ViewModels;
|
||||
using AUTS.Services.DBUtility.Custom;
|
||||
using AUTS.Services.Enums;
|
||||
using AUTS.Services.Extensions;
|
||||
using AUTS.Services.Tool;
|
||||
using MySql.Data.MySqlClient;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AUTS.Services.Manager
|
||||
{
|
||||
public partial class Orders
|
||||
{
|
||||
private static string TestLogTbName = "TBL_{0}_{1}_TestLog";//测试记录表名
|
||||
|
||||
public static ReturnResult<object> GetOrdersPlannedSpeed(List<TBL_Project> cacheUserProject, List<TBL_Orders> cacheUserOrder, List<TBL_Customer> cacheUserCustomer, List<TBL_StationList> cacheUserStationList)
|
||||
{
|
||||
ReturnResult<object> result = new ReturnResult<object>();
|
||||
|
||||
try
|
||||
{
|
||||
var orderNotList = cacheUserOrder.Where(x => x.OrderStatus == 1);//取出未完成订单
|
||||
|
||||
var minTime = orderNotList.Min(m => m.CreateTime);//订单最早日期
|
||||
var maxTime = DateTime.Now;//订单最晚日期
|
||||
|
||||
minTime = Convert.ToDateTime(minTime.ToString("yyyy/MM/dd"));//订单最早日期
|
||||
maxTime = Convert.ToDateTime(maxTime.ToString("yyyy/MM/dd"));//订单最晚日期
|
||||
|
||||
TimeSpan ts = maxTime - minTime;
|
||||
int differenceInDays = ts.Days + 1;
|
||||
|
||||
|
||||
DataTable tblDatas = new DataTable("Datas");
|
||||
|
||||
tblDatas.Columns.Add("ID", Type.GetType("System.String"));//新列
|
||||
tblDatas.Columns.Add("单号", Type.GetType("System.String"));//新列
|
||||
tblDatas.Columns.Add("机型", Type.GetType("System.String"));//新列
|
||||
tblDatas.Columns.Add("客户", Type.GetType("System.String"));//新列
|
||||
tblDatas.Columns.Add("数量", Type.GetType("System.String"));//新列
|
||||
tblDatas.Columns.Add("已完成", Type.GetType("System.String"));//新列
|
||||
|
||||
for (var i = 0; i < differenceInDays; i++)
|
||||
{
|
||||
tblDatas.Columns.Add(minTime.AddDays(i).ToString("yy/MM/dd"), Type.GetType("System.String"));//新列
|
||||
|
||||
}
|
||||
|
||||
var dbTableName = "";
|
||||
var sumTotal = 0;
|
||||
var dalHelperCustom = new DALHelperCustom<VM_PlannedSpeed>();
|
||||
var thisDataList = new List<VM_PlannedSpeed>();
|
||||
|
||||
string connectionString = Users.GerOnUserCofin();//当前库连接串
|
||||
using (MySqlConnection connection = new MySqlConnection(connectionString))
|
||||
{
|
||||
DataSet dataSet = new DataSet();
|
||||
|
||||
connection.Open();
|
||||
MySqlDataAdapter command = new MySqlDataAdapter();
|
||||
var strSql = "";
|
||||
|
||||
foreach (var item in orderNotList)
|
||||
{
|
||||
strSql = "";
|
||||
dataSet.Clear();
|
||||
sumTotal = 0;
|
||||
DataRow newRow = tblDatas.NewRow();//新行
|
||||
|
||||
newRow["ID"] = item.ID;
|
||||
newRow["单号"] = item.OrderNo;
|
||||
newRow["机型"] = cacheUserProject.Single(x => x.ID == item.ProductID).ProjectName;
|
||||
newRow["客户"] = cacheUserCustomer.Single(x => x.ID == item.CompanyID).CustomerAbbr;
|
||||
newRow["数量"] = item.OrderCount;
|
||||
|
||||
var endTestStationID = cacheUserStationList.Where(x => x.ProjectID == item.ProductID && x.StationType == StationType.Test.GetEnumDesc()).Max(m => m.ID);//最大测试站
|
||||
|
||||
dbTableName = string.Format(TestLogTbName, item.ProductID, endTestStationID);//最大测试站表名
|
||||
|
||||
strSql = "select StartTime,DATE_FORMAT(StartTime,'%Y%m%d') DAYS,COUNT(*) Total from `" + dbTableName + "` Where OrderID=" + item.ID + " AND TestResult=1 GROUP BY DAYS;";//查询语句
|
||||
|
||||
command = new MySqlDataAdapter(strSql.ToString(), connection);
|
||||
command.Fill(dataSet, "ds");
|
||||
|
||||
if (dataSet.Tables[0].Rows.Count > 0)
|
||||
{
|
||||
thisDataList = dalHelperCustom.DataRowToModels(dataSet.Tables[0]);
|
||||
|
||||
foreach (var itemData in thisDataList)
|
||||
{
|
||||
//tblDatas.Rows[rowKey][itemData.CreateTime.ToString("yyyy/MM/dd")] = itemData.Total;
|
||||
newRow[itemData.StartTime.ToString("yy/MM/dd")] = itemData.Total;
|
||||
sumTotal += itemData.Total;
|
||||
}
|
||||
}
|
||||
|
||||
newRow["已完成"] = sumTotal;
|
||||
tblDatas.Rows.Add(newRow);
|
||||
}
|
||||
}
|
||||
|
||||
var rows = ModelHelper.TableToRow(tblDatas);
|
||||
|
||||
result.Data = rows;
|
||||
result.Status = 200;
|
||||
}
|
||||
catch (MySqlException ex)
|
||||
{
|
||||
result.Message = ex.Message;
|
||||
Logs.WriteErrorLog(ex);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
result.Message = "网络系统繁忙,请稍候再试!";
|
||||
LogHelp.WriteExceptionLog(ex);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public static ReturnResult<object> GetOrdersPlannedSpeedDetails(int id, List<TBL_Project> cacheUserProject, List<TBL_Orders> cacheUserOrder, List<TBL_Customer> cacheUserCustomer, List<TBL_StationList> cacheUserStationList, string connectionString)
|
||||
{
|
||||
ReturnResult<object> result = new ReturnResult<object>();
|
||||
|
||||
try
|
||||
{
|
||||
var order = cacheUserOrder.Single(x => x.ID == id);//取出订单
|
||||
|
||||
var stationList = cacheUserStationList.Where(x => x.StationType != StationType.QA.GetEnumDesc() && x.ProjectID == order.ProductID);//不为该机型QA的测试站
|
||||
|
||||
var minTime = order.CreateTime;//订单最早日期
|
||||
var maxTime = DateTime.Now;//订单最晚日期
|
||||
minTime = Convert.ToDateTime(minTime.ToString("yyyy/MM/dd"));//订单最早日期
|
||||
maxTime = Convert.ToDateTime(maxTime.ToString("yyyy/MM/dd"));//订单最晚日期
|
||||
|
||||
TimeSpan ts = maxTime - minTime;
|
||||
int differenceInDays = ts.Days + 1;
|
||||
|
||||
DataTable tblDatas = new DataTable("Datas");
|
||||
|
||||
tblDatas.Columns.Add("测试站", Type.GetType("System.String"));//新列
|
||||
tblDatas.Columns.Add("数量", Type.GetType("System.String"));//新列
|
||||
|
||||
for (var i = 0; i < differenceInDays; i++)
|
||||
{
|
||||
tblDatas.Columns.Add(minTime.AddDays(i).ToString("yy/MM/dd"), Type.GetType("System.String"));//新列
|
||||
}
|
||||
|
||||
var dbTableName = "";
|
||||
var strSql = "";
|
||||
var sumTotal = 0;
|
||||
var dalHelperCustom = new DALHelperCustom<VM_PlannedSpeed>();
|
||||
|
||||
//string connectionString = Users.GerOnUserCofin();//当前库连接串
|
||||
using (MySqlConnection connection = new MySqlConnection(connectionString))
|
||||
{
|
||||
DataSet dataSet = new DataSet();
|
||||
MySqlDataAdapter command = new MySqlDataAdapter();
|
||||
|
||||
connection.Open();
|
||||
|
||||
//测试站列表
|
||||
foreach (var itemStation in stationList)
|
||||
{
|
||||
strSql = "";
|
||||
sumTotal = 0;
|
||||
dataSet.Clear();
|
||||
DataRow newRow = tblDatas.NewRow();//新行
|
||||
newRow["测试站"] = itemStation.StationName;
|
||||
newRow["数量"] = "当日";
|
||||
|
||||
DataRow newRow2 = tblDatas.NewRow();//新行
|
||||
newRow2["测试站"] = itemStation.StationName;
|
||||
newRow2["数量"] = "累计";
|
||||
|
||||
dbTableName = string.Format(TestLogTbName, itemStation.ProjectID, itemStation.ID);//测试站表名
|
||||
|
||||
|
||||
strSql = "select StartTime,DATE_FORMAT(StartTime,'%Y%m%d') DAYS,COUNT(*) Total from `" + dbTableName + "` Where OrderID=" + id + " AND TestResult=1 GROUP BY DAYS;";//查询语句
|
||||
|
||||
command = new MySqlDataAdapter(strSql.ToString(), connection);
|
||||
command.Fill(dataSet, "ds");
|
||||
|
||||
if (dataSet.Tables[0].Rows.Count > 0)
|
||||
{
|
||||
var thisDataList = dalHelperCustom.DataRowToModels(dataSet.Tables[0]).OrderBy(x => x.StartTime);
|
||||
|
||||
foreach (var itemData in thisDataList)
|
||||
{
|
||||
newRow[itemData.StartTime.ToString("yy/MM/dd")] = itemData.Total;
|
||||
sumTotal += itemData.Total;
|
||||
|
||||
newRow2[itemData.StartTime.ToString("yy/MM/dd")] = sumTotal;
|
||||
}
|
||||
}
|
||||
tblDatas.Rows.Add(newRow);
|
||||
tblDatas.Rows.Add(newRow2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var rows = ModelHelper.TableToRow(tblDatas);
|
||||
|
||||
result.Data = rows;
|
||||
result.Status = 200;
|
||||
}
|
||||
catch (MySqlException ex)
|
||||
{
|
||||
result.Message = ex.Message;
|
||||
Logs.WriteErrorLog(ex);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
result.Message = "网络系统繁忙,请稍候再试!";
|
||||
LogHelp.WriteExceptionLog(ex);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
300
AUTS.Services/Manager/PPlans.cs
Normal file
300
AUTS.Services/Manager/PPlans.cs
Normal file
@@ -0,0 +1,300 @@
|
||||
using AUTS.Domain.Entities;
|
||||
using AUTS.Domain.ViewModels;
|
||||
using AUTS.Services.DBUtility.Custom;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AUTS.Services.Manager
|
||||
{
|
||||
public partial class PPlans
|
||||
{
|
||||
/// <summary>
|
||||
/// 内部单记录详情
|
||||
/// </summary>
|
||||
/// <param name="id">内部单ID</param>
|
||||
/// <param name="cacheUserProject">机型缓存</param>
|
||||
/// <param name="cacheUserOrderInternal">内部单缓存</param>
|
||||
/// <param name="cacheUserOrder">订单缓存</param>
|
||||
/// <param name="cacheUserCustomer">客户缓存</param>
|
||||
/// <returns></returns>
|
||||
public static VM_TBL_PPlanInternalDetails GetPPlanInternalDetails(int id, List<TBL_Project> cacheUserProject, List<TBL_OrderInternal> cacheUserOrderInternal, List<TBL_Orders> cacheUserOrder, List<TBL_Customer> cacheUserCustomer)
|
||||
{
|
||||
var vmodel = new VM_TBL_PPlanInternalDetails();
|
||||
|
||||
|
||||
var orderInternalModel = cacheUserOrderInternal.Single(x => x.ID == id);//内部单
|
||||
var orderModel = cacheUserOrder.Single(x => x.ID == orderInternalModel.OrderID);//订单
|
||||
var project = cacheUserProject.Single(x => x.ID == orderModel.ProductID);//机型
|
||||
var customer = cacheUserCustomer.Single(x => x.ID == orderModel.CompanyID);//客户
|
||||
|
||||
vmodel.ID = orderInternalModel.ID;
|
||||
vmodel.OrderNo = orderModel.OrderNo;
|
||||
vmodel.InternalNo = orderInternalModel.InternalNo;
|
||||
vmodel.ProjectName = project.ProjectName;
|
||||
vmodel.CustomerAbbr = customer.CustomerAbbr;
|
||||
vmodel.DeliveryTime = orderModel.DeliveryTime;
|
||||
|
||||
|
||||
var pPlanList = new DALHelperCustom<VM_TBL_PPlan>("TBL_ProductionPlan").GetList("OrderInternalID=" + id);
|
||||
|
||||
vmodel.PPlanList = pPlanList;
|
||||
|
||||
return vmodel;
|
||||
}
|
||||
|
||||
public static ReturnResult<object> GetPPlanInternalDetails_New(int id, List<TBL_Project> cacheUserProject, List<TBL_OrderInternal> cacheUserOrderInternal, List<TBL_Orders> cacheUserOrder, List<TBL_Customer> cacheUserCustomer, List<TBL_StationList> cacheUserStationList)
|
||||
{
|
||||
ReturnResult<object> result = new ReturnResult<object>();
|
||||
var vmodel = new VM_TBL_PPlanInternalDetails();
|
||||
|
||||
|
||||
var orderInternalModel = cacheUserOrderInternal.Single(x => x.ID == id);//内部单
|
||||
var orderModel = cacheUserOrder.Single(x => x.ID == orderInternalModel.OrderID);//订单
|
||||
var project = cacheUserProject.Single(x => x.ID == orderModel.ProductID);//机型
|
||||
var customer = cacheUserCustomer.Single(x => x.ID == orderModel.CompanyID);//客户
|
||||
|
||||
vmodel.ID = orderInternalModel.ID;
|
||||
vmodel.OrderNo = orderModel.OrderNo;
|
||||
vmodel.InternalNo = orderInternalModel.InternalNo;
|
||||
vmodel.ProjectName = project.ProjectName;
|
||||
vmodel.CustomerAbbr = customer.CustomerAbbr;
|
||||
vmodel.DeliveryTime = orderModel.DeliveryTime;
|
||||
|
||||
|
||||
var pPlanList = new DALHelperCustom<VM_TBL_PPlan>("TBL_ProductionPlan").GetList("OrderInternalID=" + id);//取出当前内部单全部计划
|
||||
|
||||
if (pPlanList == null)
|
||||
{
|
||||
result.Status = 200;
|
||||
return result;
|
||||
}
|
||||
var timeGroupList = pPlanList.GroupBy(g => g.ProductionTime);//按时间分组
|
||||
var stationGroupList = pPlanList.GroupBy(g => g.StationID);//按工艺站分组
|
||||
|
||||
//var stationIDs = stationGroupList.Select(s => s.Key).ToArray();
|
||||
|
||||
|
||||
var excludedFactionSet = new HashSet<int>(stationGroupList.Select(s => s.Key));//取出ID放入比较器
|
||||
|
||||
var stationList = cacheUserStationList.Where(x => excludedFactionSet.Contains(x.ID)).OrderBy(o => o.ArtworkOrder);//按工艺站排序
|
||||
|
||||
DataTable tblDatas = new DataTable("Datas");
|
||||
//DataColumn dc = null;
|
||||
|
||||
tblDatas.Columns.Add("站", Type.GetType("System.String"));//新列
|
||||
tblDatas.Columns.Add("数据", Type.GetType("System.String"));//新列
|
||||
|
||||
foreach (var itemStation in stationList)
|
||||
{
|
||||
var stationName = cacheUserStationList.Single(x => x.ID == itemStation.ID).StationName;//取站名
|
||||
//var stationName = cacheUserStationList.Single(x => x.StationID == itemStation.Key).StationName;//取站名
|
||||
|
||||
DataRow newRow = tblDatas.NewRow();//新行
|
||||
newRow["站"] = stationName;
|
||||
newRow["数据"] = "目标";
|
||||
tblDatas.Rows.Add(newRow);
|
||||
|
||||
DataRow newRow2 = tblDatas.NewRow();
|
||||
newRow2["站"] = stationName;
|
||||
newRow2["数据"] = "累计";
|
||||
tblDatas.Rows.Add(newRow2);
|
||||
}
|
||||
|
||||
var rowKey = 0;
|
||||
var timeStr = "";
|
||||
var onPPlan = new VM_TBL_PPlan();
|
||||
|
||||
foreach (var item in timeGroupList)
|
||||
{
|
||||
timeStr = item.Key.ToString("yyyy/MM/dd");
|
||||
tblDatas.Columns.Add(timeStr, Type.GetType("System.String"));//新列
|
||||
rowKey = 0;
|
||||
foreach (var itemStation in stationGroupList)
|
||||
{
|
||||
onPPlan = pPlanList.SingleOrDefault(x => x.ProductionTime == item.Key && x.StationID == itemStation.Key);
|
||||
|
||||
tblDatas.Rows[rowKey][timeStr] = onPPlan == null ? "" : onPPlan.ObjectiveYield.ToString();//目标
|
||||
|
||||
rowKey += 1;
|
||||
|
||||
tblDatas.Rows[rowKey][timeStr] = onPPlan == null ? "" : onPPlan.ObjectiveYieldTotal.ToString();//计划
|
||||
rowKey += 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
|
||||
|
||||
foreach (DataRow Row in tblDatas.Rows)//循环行
|
||||
{
|
||||
Dictionary<string, object> row = new Dictionary<string, object>();
|
||||
for (int i = 0; i < Row.ItemArray.Length; i++)
|
||||
{
|
||||
row.Add(tblDatas.Columns[i].ColumnName, Row[i].ToString());
|
||||
}
|
||||
rows.Add(row);
|
||||
|
||||
}
|
||||
|
||||
vmodel.rows = rows;
|
||||
|
||||
result.Data = vmodel;
|
||||
result.Status = 200;
|
||||
return result;
|
||||
}
|
||||
|
||||
public static ReturnResult<object> GetPPlanInternalTable(int id, List<TBL_Project> cacheUserProject, List<TBL_OrderInternal> cacheUserOrderInternal, List<TBL_Orders> cacheUserOrder, List<TBL_Customer> cacheUserCustomer, List<TBL_StationList> cacheUserStationList)
|
||||
{
|
||||
ReturnResult<object> result = new ReturnResult<object>();
|
||||
var vmodel = new VM_TBL_PPlanInternalDetails();
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
|
||||
var orderInternalModel = cacheUserOrderInternal.Single(x => x.ID == id);//内部单
|
||||
var orderModel = cacheUserOrder.FirstOrDefault(x => x.ID == orderInternalModel.OrderID);//订单
|
||||
var project = cacheUserProject.FirstOrDefault(x => x.ID == orderInternalModel.ProductID);//机型
|
||||
var customer = cacheUserCustomer.FirstOrDefault(x => x.ID == orderInternalModel.CompanyID);//客户
|
||||
|
||||
vmodel.ID = orderInternalModel.ID;
|
||||
//vmodel.OrderNo = orderModel.OrderNo;
|
||||
vmodel.InternalNo = orderInternalModel.InternalNo;
|
||||
vmodel.ProjectName = project.ProjectName;
|
||||
vmodel.ProjectID = project.ID;
|
||||
//vmodel.CustomerAbbr = customer.CustomerAbbr;
|
||||
//vmodel.DeliveryTimeStr = orderModel.DeliveryTime.ToString("yyyy/MM/dd");
|
||||
vmodel.OrderCount = orderInternalModel.ObjectiveYield;
|
||||
|
||||
|
||||
var stationList = cacheUserStationList.Where(x => x.ProjectID == orderInternalModel.ProductID).OrderBy(o => o.ArtworkOrder);//按工艺站排序
|
||||
foreach (var item in stationList)
|
||||
{
|
||||
vmodel.StationText += "<strong>" + item.StationName + "</strong>" + "-" + item.StationDesc + " ";
|
||||
}
|
||||
|
||||
var pPlanList = new DALHelperCustom<VM_TBL_PPlan>("TBL_ProductionPlan").GetList("OrderInternalID=" + id);//取出当前内部单全部计划
|
||||
|
||||
if (pPlanList == null)
|
||||
{
|
||||
result.Status = 200;
|
||||
result.Data = vmodel;
|
||||
return result;
|
||||
}
|
||||
var timeGroupList = pPlanList.OrderBy(o => o.ProductionTime).GroupBy(g => g.ProductionTime);//按时间分组
|
||||
var stationGroupList = pPlanList.GroupBy(g => g.StationID);//按工艺站分组
|
||||
|
||||
var excludedFactionSet = new HashSet<int>(stationGroupList.Select(s => s.Key));//取出ID放入比较器
|
||||
|
||||
//var stationList = cacheUserStationList.Where(x => excludedFactionSet.Contains(x.StationID)).OrderBy(o => o.ArtworkOrder);//按工艺站排序
|
||||
|
||||
|
||||
DataTable tblDatas = new DataTable("Datas");
|
||||
//DataColumn dc = null;
|
||||
tblDatas.Columns.Add("Type", Type.GetType("System.String"));//新列
|
||||
tblDatas.Columns.Add("Date", Type.GetType("System.String"));//新列
|
||||
//tblDatas.Columns.Add("DateTime", Type.GetType("System.String"));//新列
|
||||
//tblDatas.Columns.Add("DataType", Type.GetType("System.String"));//新列
|
||||
|
||||
var totalList = new Dictionary<string, int>();
|
||||
foreach (var itemStation in stationList)
|
||||
{
|
||||
var stationName = cacheUserStationList.Single(x => x.ID == itemStation.ID).StationName;//取站名
|
||||
|
||||
tblDatas.Columns.Add(stationName, Type.GetType("System.String"));//新列
|
||||
totalList.Add(stationName, 0);
|
||||
}
|
||||
|
||||
var timeStr = "";
|
||||
var onPPlan = new VM_TBL_PPlan();
|
||||
var thisStation = new TBL_StationList();
|
||||
foreach (var item in timeGroupList)
|
||||
{
|
||||
|
||||
timeStr = item.Key.ToString("yyyy/MM/dd");
|
||||
//timeStr = item.Key.ToString("yyyy/MM/dd");
|
||||
|
||||
DataRow newRow = tblDatas.NewRow();//新行
|
||||
newRow["Date"] = timeStr;
|
||||
//newRow["DateTime"] = timeStr + "</br>" + Tool.StringHelp.GetWeek(timeStr.ToDateTime() ?? DateTime.Now);
|
||||
newRow["Type"] = "ToDay";
|
||||
//newRow["DataType"] = "今日";
|
||||
|
||||
DataRow newRow2 = tblDatas.NewRow();//新行
|
||||
//newRow2["Date"] = timeStr;
|
||||
newRow2["Date"] = Tool.StringHelp.GetWeek(timeStr.ToDateTime() ?? DateTime.Now);
|
||||
//newRow2["DateTime"] = timeStr + "</br>" + Tool.StringHelp.GetWeek(timeStr.ToDateTime() ?? DateTime.Now);
|
||||
newRow2["Type"] = "Total";
|
||||
//newRow2["DataType"] = "累计";
|
||||
|
||||
foreach (var itemStation in stationGroupList)
|
||||
{
|
||||
thisStation = stationList.Single(x => x.ID == itemStation.Key);
|
||||
onPPlan = pPlanList.SingleOrDefault(x => x.ProductionTime == item.Key && x.StationID == itemStation.Key);//计划表对象
|
||||
|
||||
if (onPPlan != null && onPPlan.ObjectiveYield > 0)
|
||||
{
|
||||
newRow[thisStation.StationName] = onPPlan == null ? 0 : onPPlan.ObjectiveYield;//目标;
|
||||
//newRow2[thisStation.StationName] = (tblDatas.AsEnumerable().Select(d => Convert.ToDouble(d.Field<string>(thisStation.StationName))).Sum()) / 2 + (onPPlan == null ? 0 : onPPlan.ObjectiveYield);
|
||||
//newRow2[thisStation.StationName] = onPPlan.ObjectiveYieldTotal;
|
||||
totalList[thisStation.StationName] += onPPlan.ObjectiveYield;
|
||||
newRow2[thisStation.StationName] = totalList[thisStation.StationName];
|
||||
}
|
||||
//else
|
||||
//{
|
||||
// newRow[thisStation.StationName] = 0;//目标;
|
||||
// newRow2[thisStation.StationName] = 0;
|
||||
//}
|
||||
}
|
||||
tblDatas.Rows.Add(newRow);
|
||||
tblDatas.Rows.Add(newRow2);
|
||||
|
||||
//rowKey = 0;
|
||||
//foreach (var itemStation in stationGroupList)
|
||||
//{
|
||||
// onPPlan = pPlanList.SingleOrDefault(x => x.ProductionTime == item.Key && x.StationID == itemStation.Key);
|
||||
|
||||
// tblDatas.Rows[rowKey][timeStr] = onPPlan == null ? "" : onPPlan.ObjectiveYield.ToString();//目标
|
||||
|
||||
// rowKey += 1;
|
||||
|
||||
// tblDatas.Rows[rowKey][timeStr] = onPPlan == null ? "" : onPPlan.ObjectiveYieldTotal.ToString();//计划
|
||||
// rowKey += 1;
|
||||
//}
|
||||
}
|
||||
|
||||
|
||||
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
|
||||
|
||||
foreach (DataRow Row in tblDatas.Rows)//循环行
|
||||
{
|
||||
Dictionary<string, object> row = new Dictionary<string, object>();
|
||||
for (int i = 0; i < Row.ItemArray.Length; i++)
|
||||
{
|
||||
row.Add(tblDatas.Columns[i].ColumnName, Row[i].ToString());
|
||||
}
|
||||
rows.Add(row);
|
||||
|
||||
}
|
||||
|
||||
vmodel.rows = rows;
|
||||
|
||||
result.Data = vmodel;
|
||||
result.Status = 200;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
result.Message = "网络系统繁忙,请稍候再试!";
|
||||
LogHelp.WriteExceptionLog(ex);
|
||||
}
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
2076
AUTS.Services/Manager/SqlConnect.cs
Normal file
2076
AUTS.Services/Manager/SqlConnect.cs
Normal file
File diff suppressed because it is too large
Load Diff
45
AUTS.Services/Manager/TestLog.cs
Normal file
45
AUTS.Services/Manager/TestLog.cs
Normal file
@@ -0,0 +1,45 @@
|
||||
using AUTS.Domain.Entities;
|
||||
using AUTS.Domain.ViewModels;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AUTS.Services.Manager
|
||||
{
|
||||
public partial class TestLog
|
||||
{
|
||||
private static string TestLogTbName = "TBL_{0}_{1}_TestLog";//测试记录表名
|
||||
|
||||
public static ReturnResult<object> GetStation(int ProductID,List<TBL_StationList> stationLists,List<TBL_Project> projects)
|
||||
{
|
||||
ReturnResult<object> res = new ReturnResult<object>();
|
||||
var oIStation = new List<VM_OrderInternalStations>();
|
||||
try
|
||||
{
|
||||
|
||||
var entity = stationLists.Where(e => e.ProjectID == ProductID && e.IsValid == 1).ToList();
|
||||
foreach (var item in entity)
|
||||
{
|
||||
oIStation.Add(new VM_OrderInternalStations()
|
||||
{
|
||||
ID = item.ID,
|
||||
StationDesc = item.StationDesc,
|
||||
StationName = item.StationName
|
||||
});
|
||||
}
|
||||
res.Message = projects.FirstOrDefault(e => e.ID == ProductID).ProjectName;
|
||||
res.Data = oIStation;
|
||||
res.Status = 200;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
res.Message = "网络系统繁忙,请稍候再试!";
|
||||
Logs.WriteErrorLog(ex);
|
||||
|
||||
}
|
||||
return res;
|
||||
}
|
||||
}
|
||||
}
|
||||
143
AUTS.Services/Manager/TestLogs.cs
Normal file
143
AUTS.Services/Manager/TestLogs.cs
Normal file
@@ -0,0 +1,143 @@
|
||||
using AUTS.Domain.Entities;
|
||||
using AUTS.Domain.ViewModels;
|
||||
using AUTS.Services.Cache;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AUTS.Services.Manager
|
||||
{
|
||||
public partial class TestLogs
|
||||
{
|
||||
private static string TestLogTbName = "TBL_{0}_{1}_TestLog";//测试记录表名
|
||||
|
||||
public static ReturnResult<List< VM_OrderInternalStations>> GetStation(int ProductID, List<TBL_StationList> stationLists, List<TBL_Project> projects)
|
||||
{
|
||||
ReturnResult<List<VM_OrderInternalStations>> res = new ReturnResult<List<VM_OrderInternalStations>>();
|
||||
var oIStation = new List<VM_OrderInternalStations>();
|
||||
try
|
||||
{
|
||||
|
||||
var entity = stationLists.Where(e => e.ProjectID == ProductID && e.IsValid == 1).OrderBy(x => x.SnListOrder).ToList();
|
||||
foreach (var item in entity)
|
||||
{
|
||||
oIStation.Add(new VM_OrderInternalStations()
|
||||
{
|
||||
ID = item.ID,
|
||||
StationDesc = item.StationDesc,
|
||||
StationName = item.StationName
|
||||
});
|
||||
}
|
||||
res.Message = projects.FirstOrDefault(e => e.ID == ProductID).ProjectName;
|
||||
res.Data = oIStation;
|
||||
res.Status = 200;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
res.Message = "网络系统繁忙,请稍候再试!";
|
||||
Logs.WriteErrorLog(ex);
|
||||
|
||||
}
|
||||
return res;
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取当前用户选择的库的下面的所有设备信息
|
||||
/// </summary>
|
||||
/// <param name="Id">UID</param>
|
||||
/// <returns></returns>
|
||||
public static List<TBL_UTS_Manage_DataServiceList> GetServiceList(int Id)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 获取当前用户选择的库
|
||||
var userAuthList = new List<TBL_UTS_Manage_DBList> { Manager.Users.GerOnUserCustomer()};
|
||||
//获取用户所有的库 CacheHelp.GetUserAuthList().Where(x => x.UserID == Id).ToList();
|
||||
var CustomerName = new List<string>();
|
||||
for (int i = 0; i < userAuthList.Count; i++)
|
||||
{
|
||||
CustomerName.AddRange(userAuthList[i].DatabaseName.Split(new string[] { "uts_" }, StringSplitOptions.RemoveEmptyEntries));
|
||||
}
|
||||
using (var db = new Uts_ManageEntities())
|
||||
{
|
||||
var CompanyList = new List<string>();
|
||||
|
||||
for (int i = 0; i < CustomerName.Count; i++)
|
||||
{
|
||||
string cName = CustomerName[i].ToLower();
|
||||
var Company = db.TBL_UTS_Manage_Company.FirstOrDefault(e => e.CustomerName.ToLower() == cName);
|
||||
CompanyList.Add(Company.CustomerName.ToLower());
|
||||
}
|
||||
if (CompanyList == null || CompanyList.Count == 0) return null;
|
||||
List<TBL_UTS_Manage_DataServiceList> data = db.TBL_UTS_Manage_DataServiceList.Where(x => CompanyList.Contains(x.CompanyName.ToLower())).OrderByDescending(x => x.IsOnline).ToList();
|
||||
return data;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelp.WriteExceptionLog(ex);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
public static List<TBL_UTS_Manage_AppList> GetAppList()
|
||||
{
|
||||
List<TBL_UTS_Manage_AppList> userList = new List<TBL_UTS_Manage_AppList>();
|
||||
using (var db = new Uts_ManageEntities())
|
||||
{
|
||||
userList = db.TBL_UTS_Manage_AppList.ToList();
|
||||
}
|
||||
return userList;
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取选择库下设备信息 及 是否在线
|
||||
/// </summary>
|
||||
/// <param name="Id"></param>
|
||||
/// <returns></returns>
|
||||
public static List<TBL_UTS_Manage_DataServiceList> GetServiceAppList(int Id) {
|
||||
List< TBL_UTS_Manage_DataServiceList> SERVER = GetServiceList(Id).Where(x=>x.ManageStatus==1).ToList();
|
||||
using (var db = new Uts_ManageEntities())
|
||||
{
|
||||
var APP = db.TBL_UTS_Manage_AppList.ToList();
|
||||
for (int i = 0; i < SERVER.Count; i++)
|
||||
{
|
||||
foreach (var item2 in APP)
|
||||
{
|
||||
if(item2.ServiceID != SERVER[i].ID) { continue; }
|
||||
var today = DateTime.Now;
|
||||
TimeSpan ts;
|
||||
ts = today - (item2.LastActiveDateTime ?? today);
|
||||
if (ts.TotalSeconds < 180)
|
||||
{
|
||||
SERVER[i].IsOnline = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
SERVER[i].IsOnline = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return SERVER.OrderByDescending(x=>x.IsOnline).ToList();
|
||||
}
|
||||
//截取字符串
|
||||
public string JieQu(string str)
|
||||
{
|
||||
string str2 = "";
|
||||
var LtStr = str.Split(',');
|
||||
int Sum = 2;
|
||||
for (int i = 0; i <= LtStr.Length; i++)
|
||||
{
|
||||
|
||||
str2 += LtStr[i] + ",";
|
||||
if (i == Sum - 1)
|
||||
{
|
||||
str2 = str2.Substring(0, str2.Length - 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
Console.WriteLine(str2);
|
||||
return str2;
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
93
AUTS.Services/Manager/UserOperationLog.cs
Normal file
93
AUTS.Services/Manager/UserOperationLog.cs
Normal file
@@ -0,0 +1,93 @@
|
||||
using AUTS.Domain.Application;
|
||||
using AUTS.Domain.Entities;
|
||||
using AUTS.Services.Enums;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
|
||||
namespace AUTS.Services.Manager
|
||||
{
|
||||
public static class UserOperationLog
|
||||
{
|
||||
public static void UserLog(string Openration,string Device)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
TBL_UTS_UserOperation tBL_UTS_UserOperation = new TBL_UTS_UserOperation();
|
||||
//获得IP
|
||||
string ip = string.Empty;
|
||||
string ipAddr = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
|
||||
if (string.IsNullOrEmpty(ipAddr))
|
||||
ipAddr = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
|
||||
|
||||
if (string.IsNullOrEmpty(ipAddr))
|
||||
ipAddr = System.Web.HttpContext.Current.Request.UserHostAddress;
|
||||
|
||||
ip = ipAddr;
|
||||
|
||||
|
||||
string browserVersions = string.Empty;
|
||||
HttpBrowserCapabilities hbc = System.Web.HttpContext.Current.Request.Browser;
|
||||
string browserType = hbc.Browser.ToString(); //获取浏览器类型
|
||||
string browserVersion = hbc.Version.ToString(); //获取版本号
|
||||
browserVersions = browserType + browserVersion;
|
||||
|
||||
|
||||
|
||||
var phone = System.Web.HttpContext.Current.Request.Cookies["phone"];
|
||||
var PC = System.Web.HttpContext.Current.Request.Cookies["PC"];
|
||||
tBL_UTS_UserOperation.UserName = Users.Umodel.UserName;
|
||||
tBL_UTS_UserOperation.Database = "aa";
|
||||
// Users.GerOnUserCustomer().DatabaseName;
|
||||
tBL_UTS_UserOperation.Browser = browserVersions;//浏览器
|
||||
tBL_UTS_UserOperation.Ip = ip;//ip
|
||||
tBL_UTS_UserOperation.Device = Device;
|
||||
tBL_UTS_UserOperation.CreationTime = DateTime.Now;//时间
|
||||
tBL_UTS_UserOperation.Operation = Openration;
|
||||
tBL_UTS_UserOperation.Location = GetBaiduIp(ip);
|
||||
SqlConnect.SqlInsertUserLog(tBL_UTS_UserOperation);
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// 百度api
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static string GetBaiduIp(string ip)
|
||||
{
|
||||
string location = "";
|
||||
try
|
||||
{
|
||||
string url = $"https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?query={ip}&co=&resource_id=6006&oe=utf8";
|
||||
WebClient client = new WebClient();
|
||||
var buffer = client.DownloadData(url);
|
||||
string jsonText = Encoding.UTF8.GetString(buffer);
|
||||
JObject jo = JObject.Parse(jsonText);
|
||||
|
||||
Root root = JsonConvert.DeserializeObject<Root>(jo.ToString());
|
||||
foreach (var item in root.data)
|
||||
{
|
||||
location = item.location;
|
||||
}
|
||||
return location;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//Console.WriteLine(ex);
|
||||
return location;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
283
AUTS.Services/Manager/Users.cs
Normal file
283
AUTS.Services/Manager/Users.cs
Normal file
@@ -0,0 +1,283 @@
|
||||
using AUTS.Domain.Application;
|
||||
using AUTS.Domain.Entities;
|
||||
using AUTS.Domain.ViewModels;
|
||||
using AUTS.Services.Cache;
|
||||
using AUTS.Services.Extensions;
|
||||
using AUTS.Services.Tool;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Entity.Validation;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web.Mvc;
|
||||
|
||||
|
||||
namespace AUTS.Services.Manager
|
||||
{
|
||||
/// <summary>
|
||||
/// 用户类
|
||||
/// </summary>
|
||||
public partial class Users
|
||||
{
|
||||
public static readonly string connectionSrt = "Server =blv-cloud-db.mysql.rds.aliyuncs.com;Database=uts_db;Uid=blv_rcu;Pwd=fnadiaJDIJ7546;charset=utf8;port=3307";
|
||||
|
||||
//private static string onUserOperationSessionName = "UserOperationSessionName";//用户当前选择库
|
||||
|
||||
#region 参数缓存
|
||||
|
||||
private static List<TBL_UTS_Manage_DBList> cacheSysDBList
|
||||
{
|
||||
// get选择器获取Lazyk懒加载数据
|
||||
get { return CacheHelp.GetSysDBList(); }
|
||||
}
|
||||
|
||||
private static List<DBCofinStrModel> cacheSysDBCofinStrList
|
||||
{
|
||||
// get选择器获取Lazyk懒加载数据
|
||||
get { return CacheHelp.GetDBCofinStrList(); }
|
||||
}
|
||||
|
||||
//当前用户
|
||||
public static TBL_UTS_Manage_User Umodel
|
||||
{
|
||||
// get选择器获取Lazyk懒加载数据
|
||||
get { return UserLoginHelper.CurrentUser(); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 获取当前用户权限集合
|
||||
/// <summary>
|
||||
/// 获取当前用户权限集合
|
||||
/// </summary>
|
||||
/// <param name="userID"></param>
|
||||
/// <returns></returns>
|
||||
public static List<TBL_UTS_Manage_UserAuth_Operation> GerOnUserAuthList(int userID)
|
||||
{
|
||||
string CacheKey = "OnUserAuthListCashRa-" + userID.ToString();
|
||||
if (CacheExtensions.CheckCache(CacheKey))//查找缓存是否存在
|
||||
{
|
||||
var userAuthList = CacheExtensions.GetCache<List<TBL_UTS_Manage_UserAuth_Operation>>(CacheKey);
|
||||
|
||||
return userAuthList;
|
||||
}
|
||||
else
|
||||
{
|
||||
var db = new Uts_ManageEntities();
|
||||
var onAccountAuth = db.TBL_UTS_Manage_UserAuth_Operation.Where(a => a.UserID == userID).ToList();
|
||||
if (onAccountAuth != null && onAccountAuth.Count() > 0)
|
||||
{
|
||||
CacheExtensions.SetCache(CacheKey, onAccountAuth);
|
||||
return onAccountAuth;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 获取当前用户当前库权限
|
||||
/// <summary>
|
||||
/// 获取当前用户当前库权限
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static TBL_UTS_Manage_UserAuth_Operation GerOnUserAuth(int onUserID)
|
||||
{
|
||||
string CustomerCacheKey = "UserCustomerCashRa-" + onUserID.ToString();
|
||||
if (CacheExtensions.CheckCache(CustomerCacheKey))//查找缓存是否存在
|
||||
{
|
||||
var id = CacheExtensions.GetCache<int>(CustomerCacheKey);//当前库ID
|
||||
var onUserAuthList = GerOnUserAuthList(onUserID);
|
||||
if (onUserAuthList != null && onUserAuthList.Count() > 0)
|
||||
{
|
||||
return onUserAuthList.SingleOrDefault(x => x.UserID == onUserID && x.DatabaseID == id);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
return null;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 获取用户当前选择库信息
|
||||
/// <summary>
|
||||
/// 获取用户当前选择库信息
|
||||
/// </summary>
|
||||
/// <param name="userID">用户ID</param>
|
||||
/// <returns></returns>
|
||||
public static TBL_UTS_Manage_DBList GerOnUserCustomer()
|
||||
{
|
||||
//var onCustomer = System.Web.HttpContext.Current.Session[onUserOperationSessionName];
|
||||
var onCustomer = CacheHelp.GetUserOperation(Umodel.UserName);
|
||||
if (onCustomer != 0)
|
||||
{
|
||||
return cacheSysDBList.SingleOrDefault(x => x.ID == onCustomer);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static TBL_UTS_Manage_DBList GerOnUserCustomer(System.Web.HttpContext context)
|
||||
{
|
||||
//var onCustomer = context.Session[onUserOperationSessionName];
|
||||
var onCustomer = CacheHelp.GetUserOperation(Umodel.UserName);
|
||||
if (onCustomer != 0)
|
||||
{
|
||||
return cacheSysDBList.SingleOrDefault(x => x.ID == onCustomer);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 获取用户当前选择库数据库连接串
|
||||
/// <summary>
|
||||
/// 获取用户当前选择库信息
|
||||
/// </summary>
|
||||
/// <param name="userID">用户ID</param>
|
||||
/// <returns></returns>
|
||||
public static DBCofinStrModel GerOnUserDBCofinStr()
|
||||
{
|
||||
//var onCustomer = System.Web.HttpContext.Current.Session[onUserOperationSessionName];
|
||||
var onCustomer = CacheHelp.GetUserOperation(Umodel.UserName);
|
||||
if (onCustomer != 0)
|
||||
{
|
||||
return cacheSysDBCofinStrList.SingleOrDefault(x => x.ID == onCustomer);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static DBCofinStrModel GerOnUserDBCofinStr(System.Web.HttpContext context)
|
||||
{
|
||||
//var onCustomer = context.Session[onUserOperationSessionName];
|
||||
var umodel= UserLoginHelper.CurrentUserAsync(context);
|
||||
var onCustomer = CacheHelp.GetUserOperation(umodel.UserName);
|
||||
if (onCustomer != 0)
|
||||
{
|
||||
return cacheSysDBCofinStrList.SingleOrDefault(x => x.ID == onCustomer);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 获取用户当前选择数据库连接串
|
||||
/// <summary>
|
||||
/// 获取用户当前选择数据库连接串
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static string GerOnUserCofin()
|
||||
{
|
||||
var connectionString = "";
|
||||
connectionString = GerOnUserDBCofinStr().CofinStr;
|
||||
if (!String.IsNullOrEmpty(connectionString))
|
||||
{
|
||||
return connectionString;
|
||||
}
|
||||
|
||||
return System.Configuration.ConfigurationManager.ConnectionStrings["Uts_Manage"].ConnectionString;
|
||||
}
|
||||
|
||||
public static string GerOnUserCofin(System.Web.HttpContext context)
|
||||
{
|
||||
var connectionString = "";
|
||||
connectionString = GerOnUserDBCofinStr(context).CofinStr;
|
||||
if (!String.IsNullOrEmpty(connectionString))
|
||||
{
|
||||
return connectionString;
|
||||
}
|
||||
|
||||
return System.Configuration.ConfigurationManager.ConnectionStrings["Uts_Manage"].ConnectionString;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 添加用户
|
||||
/// <summary>
|
||||
/// 添加用户
|
||||
/// </summary>
|
||||
/// <param name="fc">前端窗体数据</param>
|
||||
/// <param name="entity"></param>
|
||||
/// <returns></returns>
|
||||
public static ReturnResult AddUser(FormCollection fc, TBL_UTS_Manage_User entity)
|
||||
{
|
||||
ReturnResult result = new ReturnResult();
|
||||
try
|
||||
{
|
||||
//初始化参数
|
||||
string passwordconfirm = fc["confirmpassword"]; //确认登录密码
|
||||
|
||||
string[] haveDBName = new string[0];
|
||||
if (!string.IsNullOrEmpty(fc["haveDBName"]))
|
||||
{
|
||||
haveDBName = fc["haveDBName"].Split(','); //可查数据库
|
||||
}
|
||||
|
||||
|
||||
//必填项
|
||||
if (string.IsNullOrEmpty(entity.Password)) throw new CustomException("登录密码不能为空");
|
||||
if (string.IsNullOrEmpty(passwordconfirm)) throw new CustomException("确认登录密码不能为空");
|
||||
|
||||
if (passwordconfirm != entity.Password) throw new CustomException("登录密码与确认登录密码不一致");
|
||||
|
||||
//验证项
|
||||
if (!Regex.IsMatch(entity.UserName, @"^[A-Za-z0-9_]+$")) throw new CustomException("会员编号只能为字母、数字和下划线");
|
||||
if (entity.UserName.Length > 20) throw new CustomException("会员编号长度超过20个字符");
|
||||
|
||||
Uts_ManageEntities db = new Uts_ManageEntities();
|
||||
//唯一项
|
||||
if (db.TBL_UTS_Manage_User.Where(x => x.UserName == entity.UserName.Trim()).Count() > 0) throw new CustomException("用户名已被使用");
|
||||
|
||||
|
||||
//初始化参数
|
||||
entity.IsValid = true;
|
||||
entity.IsAdmin = false;
|
||||
//注册后完善
|
||||
entity.PlaintextPwd = entity.Password;
|
||||
entity.Password = entity.Password.ToMD5().ToMD5();
|
||||
entity.CreateTime = DateTime.Now;
|
||||
//将数据添加到EF,并且标记为添加标记,返回受影响的行数。
|
||||
db.TBL_UTS_Manage_User.Add(entity);
|
||||
//SaveChanges()数据保存到数据库,根据前面的标记生成对应的Sql语句,交给数据库执行。
|
||||
db.SaveChanges();
|
||||
|
||||
//向权限表添加数据
|
||||
if (haveDBName.Length > 0)
|
||||
{
|
||||
for (var i = 0; i < haveDBName.Length; i++)
|
||||
{
|
||||
db.TBL_UTS_Manage_UserAuth_Operation.Add(new TBL_UTS_Manage_UserAuth_Operation
|
||||
{
|
||||
UserID = entity.ID,
|
||||
DatabaseID = haveDBName[i].ToInt(),
|
||||
DatabaseName = cacheSysDBList.SingleOrDefault(x => x.ID == haveDBName[i].ToInt()).DatabaseName,
|
||||
});
|
||||
}
|
||||
db.SaveChanges();
|
||||
}
|
||||
|
||||
CacheHelp.ClearUserAuthList();
|
||||
result.Status = 200;
|
||||
}
|
||||
catch (CustomException ex)
|
||||
{
|
||||
result.Message = ex.Message.ToString();
|
||||
}
|
||||
catch (DbEntityValidationException ex)
|
||||
{
|
||||
result.Message = "网络系统繁忙,请稍候再试!";
|
||||
//Logs.WriteErrorLog(ex);
|
||||
LogHelp.WriteExceptionLog(ex);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
result.Message = "网络系统繁忙,请稍候再试!";
|
||||
//Logs.WriteErrorLog(ex);
|
||||
LogHelp.WriteExceptionLog(ex);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user