集团数据对接

This commit is contained in:
2025-06-26 14:16:26 +08:00
parent c4f1ae6768
commit fa41b65ed4
6 changed files with 240 additions and 84 deletions
+154 -61
View File
@@ -249,6 +249,67 @@ namespace BLL
return responeData;
}
public static HJGLData StatisticalData()
{
var data = new HJGLData();
var thisUnitId = string.Empty;
var thisUnit = CommonService.GetIsThisUnit();
if (thisUnit != null) thisUnitId = thisUnit.UnitId;
var baseUnit = UnitService.GetUnitByUnitId(thisUnitId);
var ProjectData = (from x in Funs.DB.Project_HJGLData_HJGL
where x.ReportDate < DateTime.Now.AddDays(1).Date && x.ReportDate >= DateTime.Now.Date
select x).ToList();
Project_HJGLData_HJGLService.StatisticalAllProjectData();
Project_HJGLData_DefectService.StatisticalAllProjectData();
var table = new HJGLData_HJGL
{
UnitId = thisUnitId,
CollCropCode = baseUnit.CollCropCode,
UnitName = baseUnit.UnitName,
ReportDate = DateTime.Now.Date,
WelderNum = ProjectData.Sum(x => x.WelderNum),
TotalDineNum = ProjectData.Sum(x => x.TotalDineNum),
CompleteDineNum = ProjectData.Sum(x => x.CompleteDineNum),
TotalFilmNum = ProjectData.Sum(x => x.TotalFilmNum),
OKFilmNum = ProjectData.Sum(x => x.OKFilmNum),
CreateMan = Const.sysglyId,
CreateDate = DateTime.Now
};
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 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> StatisticalDataAsync()
{
var data = new HJGLData();
@@ -256,23 +317,30 @@ namespace BLL
var thisUnit = CommonService.GetIsThisUnit();
if (thisUnit != null) thisUnitId = thisUnit.UnitId;
var baseUnit = UnitService.GetUnitByUnitId(thisUnitId);
Project_HJGLData_HJGLService.StatisticalAllProjectData();
Project_HJGLData_DefectService.StatisticalAllProjectData();
// 并行执行异步方法
var welderNumTask = HJGLData_HJGLService.GetWelderNumAsync(); //获取焊工总数
var dineInfoListTask = HJGLData_HJGLService.GetDineInfoAsync(); //获达因数信息
var chCheckItemListTask = HJGLData_HJGLService.GetCHCheckItemAsync(); //获取焊接检查信息
var projectHJGLDataListTask = HJGLData_HJGLService.GetProjectHJGLDataAsync(); //获取焊接检查信息
//// 并行执行异步方法
//var welderNumTask = HJGLData_HJGLService.GetWelderNumAsync(); //获取焊工总数
//var dineInfoListTask = HJGLData_HJGLService.GetDineInfoAsync(); //获达因数信息
//var chCheckItemListTask = HJGLData_HJGLService.GetCHCheckItemAsync(); //获取焊接检查信息
// 等待所有异步方法执行完成
await Task.WhenAll(
welderNumTask,
dineInfoListTask,
chCheckItemListTask
projectHJGLDataListTask
//welderNumTask,
//dineInfoListTask,
//chCheckItemListTask
);
// 统一获取异步方法的返回值
var welderNum = await welderNumTask;
var dineInfoList = await dineInfoListTask;
var chCheckItemList = await chCheckItemListTask;
var projectHJGLDataList = await projectHJGLDataListTask;
//var welderNum = await welderNumTask;
//var dineInfoList = await dineInfoListTask;
//var chCheckItemList = await chCheckItemListTask;
var table = new HJGLData_HJGL
@@ -281,67 +349,71 @@ namespace BLL
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)),
WelderNum = projectHJGLDataList.Sum(x => x.WelderNum),
TotalDineNum = projectHJGLDataList.Sum(x => x.TotalDineNum),
CompleteDineNum = projectHJGLDataList.Sum(x => x.CompleteDineNum),
TotalFilmNum = projectHJGLDataList.Sum(x => x.TotalFilmNum),
OKFilmNum = projectHJGLDataList.Sum(x => x.OKFilmNum),
//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)
// });
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)
// });
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);
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 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 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,
// };
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);
}
// Project_HJGLData_HJGLService.AddProject_HJGLData_HJGL(projectCqmsData);
//}
if (IsReportByToday())
@@ -451,6 +523,7 @@ namespace BLL
{
return await Task.Run(GetDineInfo);
}
/// <summary>
/// 获取焊接检查信息
/// </summary>
@@ -479,5 +552,25 @@ namespace BLL
{
return await Task.Run(GetCHCheckItem);
}
/// <summary>
/// 获取项目焊接信息
/// </summary>
/// <returns></returns>
public static List<Project_HJGLData_HJGL> GetProjectHJGLData()
{
var result = (from x in Funs.DB.Project_HJGLData_HJGL
where BeUnderConstructionList.Contains(x.ProjectId) && x.ReportDate < DateTime.Now.AddDays(1).Date && x.ReportDate >= DateTime.Now.Date
select x).ToList();
return result;
}
/// <summary>
/// 获取项目焊接信息(异步)
/// </summary>
/// <returns></returns>
public static async Task<List<Project_HJGLData_HJGL>> GetProjectHJGLDataAsync()
{
return await Task.Run(GetProjectHJGLData);
}
}
}