You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
171 lines
7.3 KiB
171 lines
7.3 KiB
using EFCore.BulkExtensions;
|
|
using Magicodes.ExporterAndImporter.Core;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using System.Data.Common;
|
|
using System.Linq.Dynamic.Core;
|
|
using TaskManager.Contracts.Dtos;
|
|
using TaskManager.Controllers;
|
|
using TaskManager.Entity;
|
|
using TaskManager.Entity.Entitys;
|
|
using TaskManager.EntityFramework;
|
|
using TaskManager.EntityFramework.Repository;
|
|
|
|
|
|
|
|
namespace TaskManager.Controllers
|
|
{
|
|
|
|
/// <summary>
|
|
/// M+6月物料需求计划风险
|
|
/// </summary>
|
|
public class CherySupplierMrpMonthService : CheryRecurringJobOutPageController<SUPPLIER_MRP_MONTH, SUPPLIER_MRP_MONTH_DETAIL_DTO, SUPPLIER_MRP_MONTH_LOGS>
|
|
{
|
|
public CherySupplierMrpMonthService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository<SUPPLIER_MRP_MONTH> repository) : base(httpClient, jobDbContext, log, repository)
|
|
{
|
|
|
|
|
|
}
|
|
|
|
[HttpGet]
|
|
public async Task<SUPPLIER_MRP_MONTH> GetDetialByID(String id)
|
|
{
|
|
|
|
SUPPLIER_MRP_MONTH first = new SUPPLIER_MRP_MONTH();
|
|
var m = await _jobDbContext.SUPPLIER_MRP_MONTH.FirstOrDefaultAsync(p => p.Id == id);
|
|
if (m != null)
|
|
{
|
|
return m;
|
|
}
|
|
return first;
|
|
|
|
}
|
|
|
|
|
|
protected override async Task ConfirmDataInsertAsync(List<SUPPLIER_MRP_MONTH> plist, JobDbContext dbContext, DbTransaction dbTransaction)
|
|
{
|
|
if (plist.Count > 0)
|
|
{
|
|
//List<SUPPLIER_CON_MMRP> list = new List<SUPPLIER_CON_MMRP>();
|
|
//plist.ForEach(p =>
|
|
//{
|
|
// var con = new SUPPLIER_CON_MMRP();
|
|
// con.Id = p.Id;
|
|
// con.SupplierCode = "8EG";
|
|
// con.ReleaseEdition = p.ReleaseEdition;
|
|
// con.MaterialCode = p.MaterialCode;
|
|
// con.PlantId = p.PlantId;
|
|
// con.FeedbackResults = "0";
|
|
// con.VentureType = "";
|
|
// con.VentureSpecific = "";
|
|
// con.Measures = "";
|
|
// con.StartMonth = p.StartMonth;
|
|
// con.QuantityMeet1 = p.QuantityDemand1;
|
|
// con.QuantityMeet2 = p.QuantityDemand2;
|
|
// con.QuantityMeet3 = p.QuantityDemand3;
|
|
// con.QuantityMeet4 = p.QuantityDemand4;
|
|
// con.QuantityMeet5 = p.QuantityDemand5;
|
|
// con.QuantityMeet6 = p.QuantityDemand6;
|
|
// con.QuantityMeet7 = p.QuantityDemand7;
|
|
// con.QuantityMeet8 = p.QuantityDemand8;
|
|
// con.QuantityMeet9 = p.QuantityDemand9;
|
|
// con.QuantityMeet10 = p.QuantityDemand10;
|
|
// con.QuantityMeet11 = p.QuantityDemand11;
|
|
// con.QuantityMeet12 = p.QuantityDemand12;
|
|
// con.CreationTime = DateTime.Now;
|
|
// list.Add(con);
|
|
//});
|
|
|
|
//dbContext.BulkInsert(list);
|
|
|
|
var ids = plist.Select(p => p.Id);
|
|
var existList = await _jobDbContext.Set<SUPPLIER_CON_MMRP>().Where(p => ids.Contains(p.Id) && p.ReadState == false).ToListAsync();
|
|
if (existList.Any())
|
|
{
|
|
foreach (var itm in existList)
|
|
{
|
|
var first = plist.FirstOrDefault(p => p.Id == itm.Id);
|
|
if (first != null)
|
|
{
|
|
|
|
itm.Id = first.Id;
|
|
|
|
itm.SupplierCode = "8EG";
|
|
itm.ReleaseEdition = first.ReleaseEdition;
|
|
itm.MaterialCode = first.MaterialCode;
|
|
itm.PlantId = first.PlantId;
|
|
itm.FeedbackResults = "0";
|
|
itm.VentureType = "";
|
|
itm.VentureSpecific = "";
|
|
itm.Measures = "";
|
|
itm.StartMonth = first.StartMonth;
|
|
itm.QuantityMeet1 = first.QuantityDemand1;
|
|
itm.QuantityMeet2 = first.QuantityDemand2;
|
|
itm.QuantityMeet3 = first.QuantityDemand3;
|
|
itm.QuantityMeet4 = first.QuantityDemand4;
|
|
itm.QuantityMeet5 = first.QuantityDemand5;
|
|
itm.QuantityMeet6 = first.QuantityDemand6;
|
|
itm.QuantityMeet7 = first.QuantityDemand7;
|
|
itm.QuantityMeet8 = first.QuantityDemand8;
|
|
itm.QuantityMeet9 = first.QuantityDemand9;
|
|
itm.QuantityMeet10 = first.QuantityDemand10;
|
|
itm.QuantityMeet11 = first.QuantityDemand11;
|
|
itm.QuantityMeet12 = first.QuantityDemand12;
|
|
itm.CreationTime = DateTime.Now;
|
|
|
|
}
|
|
}
|
|
}
|
|
if (existList.Any())
|
|
{
|
|
_jobDbContext.BulkUpdate(existList.ToList());
|
|
}
|
|
|
|
var query = from item in plist
|
|
join existItem in existList
|
|
on item.Id equals existItem.Id into gj
|
|
from subItem in gj.DefaultIfEmpty()
|
|
where subItem == null
|
|
select item;
|
|
List<SUPPLIER_CON_MMRP> list = new List<SUPPLIER_CON_MMRP>();
|
|
foreach (var p in query)
|
|
{
|
|
|
|
var con = new SUPPLIER_CON_MMRP();
|
|
con.Id = p.Id;
|
|
con.SupplierCode = "8EG";
|
|
con.ReleaseEdition = p.ReleaseEdition;
|
|
con.MaterialCode = p.MaterialCode;
|
|
con.PlantId = p.PlantId;
|
|
con.FeedbackResults = "0";
|
|
con.VentureType = "";
|
|
con.VentureSpecific = "";
|
|
con.Measures = "";
|
|
con.StartMonth = p.StartMonth;
|
|
con.QuantityMeet1 = p.QuantityDemand1;
|
|
con.QuantityMeet2 = p.QuantityDemand2;
|
|
con.QuantityMeet3 = p.QuantityDemand3;
|
|
con.QuantityMeet4 = p.QuantityDemand4;
|
|
con.QuantityMeet5 = p.QuantityDemand5;
|
|
con.QuantityMeet6 = p.QuantityDemand6;
|
|
con.QuantityMeet7 = p.QuantityDemand7;
|
|
con.QuantityMeet8 = p.QuantityDemand8;
|
|
con.QuantityMeet9 = p.QuantityDemand9;
|
|
con.QuantityMeet10 = p.QuantityDemand10;
|
|
con.QuantityMeet11 = p.QuantityDemand11;
|
|
con.QuantityMeet12 = p.QuantityDemand12;
|
|
con.CreationTime = DateTime.Now;
|
|
list.Add(con);
|
|
}
|
|
_jobDbContext.BulkInsert(list);
|
|
|
|
//await dbContext.BulkMergeAsync(list, options=> { options.Transaction = dbTransaction; options.UseTableLock = false;
|
|
// options.ColumnPrimaryKeyExpression = p =>new { p.Id, p.ReadState };
|
|
//});
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|