2023-11-09
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using FineUIPro;
|
||||
using Model;
|
||||
|
||||
@@ -110,6 +112,7 @@ namespace BLL
|
||||
ContractTrackId = ContractTrackId,
|
||||
Date= month.ToString("yyyy-MM")
|
||||
};
|
||||
|
||||
if (!GetPHTGL_ContractTrackProgressByModle(querymodel).Any())
|
||||
{
|
||||
var newmodel = new Model.PHTGL_ContractTrackProgress();
|
||||
@@ -122,6 +125,75 @@ namespace BLL
|
||||
}
|
||||
}
|
||||
}
|
||||
public static void CreateTemplateByContractList(List<PHTGL_ContractTrack> contractTrackList,string projectid)
|
||||
{
|
||||
var dbcontractTrack=(from x in Funs.DB.PHTGL_ContractTrack where x.ProjectId==projectid select x).ToList();
|
||||
var dbContractTrackProgress=(from x in Funs.DB.PHTGL_ContractTrackProgress
|
||||
join y in Funs.DB.PHTGL_ContractTrack on x.ContractTrackId equals y.Id
|
||||
where y.ProjectId==projectid select x).ToList();
|
||||
|
||||
List<List<PHTGL_ContractTrack>> splitLists = new List<List<PHTGL_ContractTrack>>();
|
||||
if (contractTrackList.Count>10)
|
||||
{
|
||||
splitLists = Funs.SplitList(contractTrackList, 10);
|
||||
}
|
||||
else
|
||||
{
|
||||
splitLists = Funs.SplitList(contractTrackList, 1);
|
||||
}
|
||||
ConcurrentBag<PHTGL_ContractTrackProgress> contractTrackProgressList = new ConcurrentBag<PHTGL_ContractTrackProgress>();//用于批量新增的数据
|
||||
|
||||
ParallelOptions parallelOptions = new ParallelOptions();
|
||||
parallelOptions.MaxDegreeOfParallelism = Environment.ProcessorCount;
|
||||
|
||||
Parallel.ForEach(splitLists, parallelOptions, sublist =>
|
||||
{
|
||||
|
||||
foreach (var item in sublist)
|
||||
{
|
||||
var model =( from x in dbcontractTrack where x.Id==item.Id select x).FirstOrDefault() ;
|
||||
if (model == null) return;
|
||||
var contractNum = model.ContractNum;
|
||||
var contractmode = ContractService.GetContractByContractNum(contractNum);
|
||||
if (contractmode.ContractStartDate != null && contractmode.ContractEndDate != null)
|
||||
{
|
||||
var startDate = (DateTime)contractmode.ContractStartDate;
|
||||
var endDate = (DateTime)contractmode.ContractEndDate;
|
||||
List<DateTime> months = GetMonthsBetween(startDate, endDate);//获取合同起止日期
|
||||
|
||||
foreach (DateTime month in months)
|
||||
{
|
||||
var querymodel = new Model.PHTGL_ContractTrackProgress
|
||||
{
|
||||
ContractTrackId = item.Id,
|
||||
Date = month.ToString("yyyy-MM")
|
||||
};
|
||||
var q = (from x in dbContractTrackProgress
|
||||
where
|
||||
(string.IsNullOrEmpty(querymodel.ContractTrackId) ||
|
||||
x.ContractTrackId.Contains(querymodel.ContractTrackId)) &&
|
||||
(string.IsNullOrEmpty(querymodel.Date) ||
|
||||
x.Date.Contains(querymodel.Date))
|
||||
orderby x.Date
|
||||
select x).ToList()
|
||||
;
|
||||
if (!q.Any())
|
||||
{
|
||||
var newmodel = new Model.PHTGL_ContractTrackProgress();
|
||||
newmodel.ContractTrackProgressId = SQLHelper.GetNewID(typeof(Model.PHTGL_ContractTrackProgress));
|
||||
newmodel.ContractTrackId = item.Id;
|
||||
newmodel.Date = month.ToString("yyyy-MM");
|
||||
contractTrackProgressList.Add(newmodel);
|
||||
// AddPHTGL_ContractTrackProgress(newmodel);
|
||||
}
|
||||
}
|
||||
}
|
||||
} // 处理完成后,可以将结果保存到集合或其他地方
|
||||
|
||||
});
|
||||
|
||||
AddBulkPHTGL_ContractTrackProgress(contractTrackProgressList.ToList());
|
||||
}
|
||||
|
||||
public static List<DateTime> GetMonthsBetween(DateTime startDate, DateTime endDate)
|
||||
{
|
||||
@@ -157,6 +229,12 @@ namespace BLL
|
||||
Funs.DB.SubmitChanges();
|
||||
}
|
||||
|
||||
public static void AddBulkPHTGL_ContractTrackProgress(List<PHTGL_ContractTrackProgress> newtableList)
|
||||
{
|
||||
Funs.DB.PHTGL_ContractTrackProgress.InsertAllOnSubmit(newtableList);
|
||||
Funs.DB.SubmitChanges();
|
||||
}
|
||||
|
||||
public static void UpdatePHTGL_ContractTrackProgress(PHTGL_ContractTrackProgress newtable)
|
||||
{
|
||||
var table = Funs.DB.PHTGL_ContractTrackProgress.FirstOrDefault(x =>
|
||||
|
||||
Reference in New Issue
Block a user