焊接达因数、完成达因数汇总逻辑优化
This commit is contained in:
parent
c40e74e47e
commit
52dec49b5e
|
@ -1,4 +1,6 @@
|
|||
using FineUIPro;
|
||||
using Aspose.Words.Lists;
|
||||
using EmitMapper;
|
||||
using FineUIPro;
|
||||
using Model;
|
||||
using Newtonsoft.Json;
|
||||
using NPOI.SS.Formula.Functions;
|
||||
|
@ -319,6 +321,144 @@ namespace BLL
|
|||
if (thisUnit != null) thisUnitId = thisUnit.UnitId;
|
||||
var baseUnit = UnitService.GetUnitByUnitId(thisUnitId);
|
||||
|
||||
Project_HJGLData_DefectService.StatisticalAllProjectData();
|
||||
|
||||
//// 并行执行异步方法
|
||||
var welderNumTask = HJGLData_HJGLService.GetWelderNumAsync(); //获取焊工总数
|
||||
var dineInfoListTask = HJGLData_HJGLService.GetDineInfoAsync(); //获达因数信息
|
||||
var chCheckItemListTask = HJGLData_HJGLService.GetCHCheckItemAsync(); //获取焊接检查信息
|
||||
|
||||
// 等待所有异步方法执行完成
|
||||
await Task.WhenAll(
|
||||
welderNumTask,
|
||||
dineInfoListTask,
|
||||
chCheckItemListTask
|
||||
);
|
||||
|
||||
// 统一获取异步方法的返回值
|
||||
var welderNum = await welderNumTask;
|
||||
var dineInfoList = await dineInfoListTask;
|
||||
var chCheckItemList = await chCheckItemListTask;
|
||||
|
||||
|
||||
var table = new HJGLData_HJGL
|
||||
{
|
||||
UnitId = thisUnitId,
|
||||
CollCropCode = baseUnit.CollCropCode,
|
||||
UnitName = baseUnit.UnitName,
|
||||
ReportDate = DateTime.Now.Date,
|
||||
WelderNum = welderNum.Count(),
|
||||
TotalDineNum = Convert.ToInt32(dineInfoList.Sum(x => x.Size)),
|
||||
CompleteDineNum = Convert.ToInt32(dineInfoList.Sum(x => x.DoneDin)),
|
||||
TotalFilmNum = Convert.ToInt32(chCheckItemList.Sum(x => x.CHT_TotalFilm)),
|
||||
OKFilmNum = Convert.ToInt32(chCheckItemList.Sum(x => x.CHT_PassFilm)),
|
||||
CreateMan = Const.sysglyId,
|
||||
CreateDate = DateTime.Now
|
||||
};
|
||||
Project_HJGLData_HJGLService.DeleteProject_HJGLData_HJGLByDate(DateTime.Now.Date);
|
||||
// 预先对 dineInfoList 和 chCheckItemList 按 ProjectId 进行分组
|
||||
var dineInfoDict = dineInfoList
|
||||
.Where(x => BeUnderConstructionList.Contains(x.ProjectId))
|
||||
.GroupBy(x => x.ProjectId)
|
||||
.ToDictionary(g => g.Key, g => new
|
||||
{
|
||||
TotalDineNum = g.Sum(x => x.Size),
|
||||
CompleteDineNum = g.Sum(x => x.DoneDin)
|
||||
});
|
||||
|
||||
var chCheckItemDict = chCheckItemList
|
||||
.Where(x => BeUnderConstructionList.Contains(x.ProjectId))
|
||||
.GroupBy(x => x.ProjectId)
|
||||
.ToDictionary(g => g.Key, g => new
|
||||
{
|
||||
TotalFilmNum = g.Sum(x => x.CHT_TotalFilm),
|
||||
OKFilmNum = g.Sum(x => x.CHT_PassFilm)
|
||||
});
|
||||
|
||||
foreach (var projectid in BeUnderConstructionList)
|
||||
{
|
||||
// 获取焊工数量
|
||||
int welderCount = welderNum.Count(x => x.ProjectId == projectid);
|
||||
|
||||
// 获取达因信息
|
||||
var dineInfo = dineInfoDict.TryGetValue(projectid, out var dineData)
|
||||
? dineData
|
||||
: new { TotalDineNum = (double?)0, CompleteDineNum = (double?)0 };
|
||||
|
||||
// 获取拍片信息
|
||||
var chCheckItem = chCheckItemDict.TryGetValue(projectid, out var checkData)
|
||||
? checkData
|
||||
: new { TotalFilmNum = (int?)0, OKFilmNum = (int?)0 };
|
||||
|
||||
var projectCqmsData = new Project_HJGLData_HJGL()
|
||||
{
|
||||
Id = SQLHelper.GetNewID(),
|
||||
ProjectId = projectid,
|
||||
UnitId = thisUnitId,
|
||||
CollCropCode = baseUnit.CollCropCode,
|
||||
UnitName = baseUnit.UnitName,
|
||||
ReportDate = DateTime.Now.Date,
|
||||
WelderNum = welderCount,
|
||||
TotalDineNum = Convert.ToInt32(dineInfo.TotalDineNum),
|
||||
CompleteDineNum = Convert.ToInt32(dineInfo.CompleteDineNum),
|
||||
TotalFilmNum = chCheckItem.TotalFilmNum,
|
||||
OKFilmNum = chCheckItem.OKFilmNum,
|
||||
};
|
||||
|
||||
Project_HJGLData_HJGLService.AddProject_HJGLData_HJGL(projectCqmsData);
|
||||
}
|
||||
|
||||
|
||||
if (IsReportByToday())
|
||||
{
|
||||
table.Id = GetTodayData().Id;
|
||||
table.State = Const.CNCEC_State_1;
|
||||
UpdateHJGLData_HJGL(table);
|
||||
}
|
||||
else
|
||||
{
|
||||
table.Id = SQLHelper.GetNewID();
|
||||
table.State = Const.CNCEC_State_0;
|
||||
|
||||
AddHJGLData_HJGL(table);
|
||||
}
|
||||
var mapper = ObjectMapperManager.DefaultInstance.GetMapper<HJGLData_HJGL, HJGLDataItem>();
|
||||
var item = mapper.Map(table);
|
||||
// 手动处理特殊字段
|
||||
item.ReportDate = table.ReportDate.Value.ToShortDateString();
|
||||
item.HJGLDataDefectItems = Project_HJGLData_DefectService.getTodayProject_HJGLData_Defect();
|
||||
var hJGLDataItems = new List<HJGLDataItem>();
|
||||
hJGLDataItems.Add(item);
|
||||
|
||||
data.HJGLDataItems = hJGLDataItems;
|
||||
return data;
|
||||
|
||||
//var item = new HJGLDataItem();
|
||||
//item.CollCropCode = table.CollCropCode;
|
||||
//item.CompleteDineNum = table.CompleteDineNum;
|
||||
//item.Id = table.Id;
|
||||
//item.OKFilmNum = table.OKFilmNum;
|
||||
//item.ReportDate = table.ReportDate.Value.ToShortDateString();
|
||||
//item.TotalDineNum = table.TotalDineNum;
|
||||
//item.TotalFilmNum = table.TotalFilmNum;
|
||||
//item.UnitId = table.UnitId;
|
||||
//item.WelderNum = table.WelderNum;
|
||||
//item.HJGLDataDefectItems = Project_HJGLData_DefectService.getTodayProject_HJGLData_Defect();
|
||||
//var hJGLDataItems = new List<HJGLDataItem>();
|
||||
//hJGLDataItems.Add(item);
|
||||
|
||||
//data.HJGLDataItems = hJGLDataItems;
|
||||
//return data;
|
||||
}
|
||||
|
||||
public static async Task<HJGLData> StatisticalDataAsyncold()
|
||||
{
|
||||
var data = new HJGLData();
|
||||
var thisUnitId = string.Empty;
|
||||
var thisUnit = CommonService.GetIsThisUnit();
|
||||
if (thisUnit != null) thisUnitId = thisUnit.UnitId;
|
||||
var baseUnit = UnitService.GetUnitByUnitId(thisUnitId);
|
||||
|
||||
Project_HJGLData_HJGLService.StatisticalAllProjectData();
|
||||
Project_HJGLData_DefectService.StatisticalAllProjectData();
|
||||
// 并行执行异步方法
|
||||
|
@ -507,20 +647,65 @@ namespace BLL
|
|||
/// 获取总达因数和完成达因数
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static IEnumerable<WeldDineOutput> GetDineInfo()
|
||||
public static List<WeldDineOutput> GetDineInfo()
|
||||
{
|
||||
var result = (from x in Funs.DB.HJGL_FL_TotalQuantity
|
||||
where BeUnderConstructionList.Contains(x.ProjectId)
|
||||
group x by x.ProjectId into g
|
||||
select new Model.WeldDineOutput()
|
||||
{
|
||||
ProjectId = g.Key,
|
||||
Size = g.Sum(x => Convert.ToDouble(x.TotalWeldQuantity)),
|
||||
DoneDin = g.Sum(x => Convert.ToDouble(x.TotalCompleted))
|
||||
});
|
||||
var result = new List<WeldDineOutput>();
|
||||
var getD1 = from x in Funs.DB.HJGL_FL_TotalQuantity
|
||||
where BeUnderConstructionList.Contains(x.ProjectId)
|
||||
select x;
|
||||
var projectIds = getD1.Select(x => x.ProjectId).Distinct();
|
||||
foreach (var pro in projectIds)
|
||||
{
|
||||
double pTotalWeldQuantity = 0;
|
||||
double pTotalCompleted = 0;
|
||||
var proD1 = getD1.Where(x => x.ProjectId == pro);
|
||||
foreach (var item in getD1)
|
||||
{
|
||||
var dAll = !string.IsNullOrWhiteSpace(item.TotalWeldQuantity) ? Convert.ToDouble(item.TotalWeldQuantity) : 0;
|
||||
var dCompleted = !string.IsNullOrWhiteSpace(item.TotalCompleted) ? Convert.ToDouble(item.TotalCompleted) : 0;
|
||||
pTotalWeldQuantity += dAll;
|
||||
pTotalCompleted += dCompleted;
|
||||
}
|
||||
result.Add(new WeldDineOutput
|
||||
{
|
||||
ProjectId = pro,
|
||||
Size = pTotalWeldQuantity,
|
||||
DoneDin = pTotalCompleted
|
||||
});
|
||||
}
|
||||
|
||||
var differenceProjectIds = BeUnderConstructionList.Except(projectIds).ToList();
|
||||
foreach (var pro in differenceProjectIds)
|
||||
{
|
||||
double pTotalWeldQuantity = 0;
|
||||
double pTotalCompleted = 0;
|
||||
|
||||
var getD2 = (from x in Funs.DB.HJGL_FL_Data
|
||||
where x.ProjectId == pro
|
||||
orderby x.CompileDate descending
|
||||
select x).FirstOrDefault();
|
||||
if (getD2 != null)
|
||||
{
|
||||
pTotalWeldQuantity = !string.IsNullOrWhiteSpace(getD2.TotalWeldQuantity) ? Convert.ToDouble(getD2.TotalWeldQuantity) : 0;
|
||||
pTotalCompleted = !string.IsNullOrWhiteSpace(getD2.TotalCompleted) ? Convert.ToDouble(getD2.TotalCompleted) : 0;
|
||||
}
|
||||
|
||||
result.Add(new WeldDineOutput
|
||||
{
|
||||
ProjectId = pro,
|
||||
Size = pTotalWeldQuantity,
|
||||
DoneDin = pTotalCompleted
|
||||
});
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
public static async Task<IEnumerable<WeldDineOutput>> GetDineInfoAsync()
|
||||
|
||||
/// <summary>
|
||||
/// 获取总达因数和完成达因数
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static async Task<List<WeldDineOutput>> GetDineInfoAsync()
|
||||
{
|
||||
return await Task.Run(GetDineInfo);
|
||||
}
|
||||
|
@ -531,19 +716,6 @@ namespace BLL
|
|||
/// <returns></returns>
|
||||
public static List<CHCheckItemOutput> GetCHCheckItem()
|
||||
{
|
||||
//var result = (from x in Funs.DB.CH_CheckItem
|
||||
// join y in Funs.DB.CH_Check on x.CHT_CheckID equals y.CHT_CheckID
|
||||
// where BeUnderConstructionList.Contains(y.ProjectId)
|
||||
// select new Model.CHCheckItemOutput()
|
||||
// {
|
||||
// Id = x.CHT_CheckItemID,
|
||||
// ProjectId = y.ProjectId,
|
||||
// UnitId = y.UnitId,
|
||||
// CHT_TotalFilm = x.CHT_TotalFilm,
|
||||
// CHT_PassFilm = x.CHT_PassFilm
|
||||
// //UnitName = UnitService.getUnitNamesUnitIds(x.UnitIds),
|
||||
// }).ToList();
|
||||
|
||||
List<CHCheckItemOutput> list = new List<CHCheckItemOutput>();
|
||||
var ndtLists = (from x in Funs.DB.ProcessControl_NondestructiveTest_New where BeUnderConstructionList.Contains(x.ProjectId) select x).ToList();
|
||||
|
||||
|
|
|
@ -259,7 +259,8 @@ namespace BLL
|
|||
{
|
||||
var db = Funs.DB;
|
||||
|
||||
var projectids = ProjectService.GetProjectWorkList().Select(x => x.ProjectId).ToList();
|
||||
var projectids = HJGLData_HJGLService.BeUnderConstructionList;
|
||||
//var projectids = ProjectService.GetProjectWorkList().Select(x => x.ProjectId).ToList();
|
||||
var thisUnitId = string.Empty;
|
||||
var thisUnit = CommonService.GetIsThisUnit();
|
||||
if (thisUnit != null) thisUnitId = thisUnit.UnitId;
|
||||
|
|
|
@ -411,21 +411,6 @@ namespace BLL
|
|||
/// <returns></returns>
|
||||
public static int GetTotalFilmNum(string projectid)
|
||||
{
|
||||
//int result = Convert.ToInt32((from x in Funs.DB.CH_CheckItem
|
||||
// join y in Funs.DB.CH_Check on x.CHT_CheckID equals y.CHT_CheckID
|
||||
// where y.ProjectId == projectid
|
||||
// select x.CHT_TotalFilm).ToList().Sum());
|
||||
|
||||
//int result = 0;
|
||||
//var getD2 = (from x in Funs.DB.HJGL_FL_Data
|
||||
// where x.ProjectId == projectid
|
||||
// orderby x.CompileDate descending
|
||||
// select x).FirstOrDefault();
|
||||
//if (getD2 != null)
|
||||
//{
|
||||
// result = Funs.GetNewIntOrZero(getD2.OneTimeFilmAmount.Split('.')[0]);
|
||||
//}
|
||||
|
||||
int result = Convert.ToInt32((from x in Funs.DB.ProcessControl_NondestructiveTest_New
|
||||
where x.ProjectId == projectid && x.ProfessionalName == "工艺管道"
|
||||
orderby x.CreateDate descending
|
||||
|
@ -439,20 +424,6 @@ namespace BLL
|
|||
/// <returns></returns>
|
||||
public static int GetOKFilmNum(string projectid)
|
||||
{
|
||||
//int result = Convert.ToInt32((from x in Funs.DB.CH_CheckItem
|
||||
// join y in Funs.DB.CH_Check on x.CHT_CheckID equals y.CHT_CheckID
|
||||
// where
|
||||
// select x.CHT_PassFilm).ToList().Sum());
|
||||
//int result = 0;
|
||||
//var getD2 = (from x in Funs.DB.HJGL_FL_Data
|
||||
// where x.ProjectId == projectid
|
||||
// orderby x.CompileDate descending
|
||||
// select x).FirstOrDefault();
|
||||
//if (getD2 != null)
|
||||
//{
|
||||
// result = Funs.GetNewIntOrZero(getD2.OneTimeFilmQualifiedAmount.Split('.')[0]);
|
||||
//}
|
||||
|
||||
int result = 0;
|
||||
var ndt = (from x in db.ProcessControl_NondestructiveTest_New where x.ProjectId == projectid && x.ProfessionalName == "工艺管道" orderby x.CreateDate descending select x).FirstOrDefault();
|
||||
if (ndt != null)
|
||||
|
|
|
@ -163,11 +163,13 @@
|
|||
<div class="hj-box_label"><asp:Literal runat="server" Text="<%$ Resources:Lan,main_new1_HjData_WelderNum_Label%>"/></div>
|
||||
</div>
|
||||
<div class="y_column">
|
||||
<div class="hj-box_number"><%=GetTotalDineNum() %></div>
|
||||
<%--<div class="hj-box_number"><%=GetTotalDineNum() %></div>--%>
|
||||
<div class="hj-box_number"><%=WeldDine.Size %></div>
|
||||
<div class="hj-box_label"><asp:Literal runat="server" Text="<%$ Resources:Lan,main_new1_HjData_TotalDineNum_Label%>"/></div>
|
||||
</div>
|
||||
<div class="y_column">
|
||||
<div class="hj-box_number" style="color: #12CDA2;"><%=GetCompleteDineNum() %></div>
|
||||
<%--<div class="hj-box_number" style="color: #12CDA2;"><%=GetCompleteDineNum() %></div>--%>
|
||||
<div class="hj-box_number" style="color: #12CDA2;"><%=WeldDine.DoneDin %></div>
|
||||
<div class="hj-box_label"><asp:Literal runat="server" Text="<%$ Resources:Lan,main_new1_HjData_CompleteDineNum_Label%>"/></div>
|
||||
</div>
|
||||
<div class="y_column">
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
using BLL;
|
||||
using FineUIPro.Web.BaseInfo;
|
||||
using FineUIPro.Web.DataShow;
|
||||
using Model;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
@ -68,6 +69,9 @@ namespace FineUIPro.Web.common
|
|||
|
||||
getCNEN();
|
||||
|
||||
//焊接达因数
|
||||
GetWeldDineOutput();
|
||||
|
||||
//焊接数据
|
||||
double result = 0;
|
||||
Model.SGGLDB db = Funs.DB;
|
||||
|
@ -554,6 +558,76 @@ namespace FineUIPro.Web.common
|
|||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
protected WeldDineOutput WeldDine = new WeldDineOutput();
|
||||
/// <summary>
|
||||
/// 获取总达因数和完成达因数
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public WeldDineOutput GetWeldDineOutput()
|
||||
{
|
||||
var projectIds = new List<string>();
|
||||
if (pids == null)
|
||||
{
|
||||
//加载所有在建项目的数据
|
||||
projectIds = Funs.DB.Base_Project.Where(x => x.ProjectState == "1").Select(x => x.ProjectId).ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
projectIds = new List<string>(pids);
|
||||
}
|
||||
|
||||
var result = new List<WeldDineOutput>();
|
||||
var getD1 = from x in Funs.DB.HJGL_FL_TotalQuantity
|
||||
where projectIds.Contains(x.ProjectId)
|
||||
select x;
|
||||
var proIds = getD1.Select(x => x.ProjectId).Distinct();
|
||||
foreach (var pro in proIds)
|
||||
{
|
||||
double pTotalWeldQuantity = 0;
|
||||
double pTotalCompleted = 0;
|
||||
var proD1 = getD1.Where(x => x.ProjectId == pro);
|
||||
foreach (var item in getD1)
|
||||
{
|
||||
var dAll = !string.IsNullOrWhiteSpace(item.TotalWeldQuantity) ? Convert.ToDouble(item.TotalWeldQuantity) : 0;
|
||||
var dCompleted = !string.IsNullOrWhiteSpace(item.TotalCompleted) ? Convert.ToDouble(item.TotalCompleted) : 0;
|
||||
pTotalWeldQuantity += dAll;
|
||||
pTotalCompleted += dCompleted;
|
||||
}
|
||||
result.Add(new WeldDineOutput
|
||||
{
|
||||
ProjectId = pro,
|
||||
Size = pTotalWeldQuantity,
|
||||
DoneDin = pTotalCompleted
|
||||
});
|
||||
}
|
||||
|
||||
var differenceProjectIds = projectIds.Except(proIds).ToList();
|
||||
foreach (var pro in differenceProjectIds)
|
||||
{
|
||||
double pTotalWeldQuantity = 0;
|
||||
double pTotalCompleted = 0;
|
||||
var getD2 = (from x in Funs.DB.HJGL_FL_Data
|
||||
where x.ProjectId == pro
|
||||
orderby x.CompileDate descending
|
||||
select x).FirstOrDefault();
|
||||
if (getD2 != null)
|
||||
{
|
||||
pTotalWeldQuantity = !string.IsNullOrWhiteSpace(getD2.TotalWeldQuantity) ? Convert.ToDouble(getD2.TotalWeldQuantity) : 0;
|
||||
pTotalCompleted = !string.IsNullOrWhiteSpace(getD2.TotalCompleted) ? Convert.ToDouble(getD2.TotalCompleted) : 0;
|
||||
}
|
||||
result.Add(new WeldDineOutput
|
||||
{
|
||||
ProjectId = pro,
|
||||
Size = pTotalWeldQuantity,
|
||||
DoneDin = pTotalCompleted
|
||||
});
|
||||
}
|
||||
WeldDine.Size = Convert.ToInt32(result.Sum(x => x.Size));
|
||||
WeldDine.DoneDin = Convert.ToInt32(result.Sum(x => x.DoneDin));
|
||||
return WeldDine;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取总达因数
|
||||
/// </summary>
|
||||
|
|
Loading…
Reference in New Issue