using Kingdee.CDP.WebApi.SDK;
using Microsoft.Practices.ObjectBuilder2;
using Microsoft.SqlServer.Server;
using MyCode.Project.Domain.Message.Act.PurchaseOrder;
using MyCode.Project.Domain.Message.Common;
using MyCode.Project.Domain.Message.Request.KingDee;
using MyCode.Project.Domain.Message.Request.PurchaseOrder;
using MyCode.Project.Domain.Message.Response.Common;
using MyCode.Project.Domain.Message.Response.PurchaseOrder;
using MyCode.Project.Domain.Message.Response.User;
using MyCode.Project.Domain.Model;
using MyCode.Project.Domain.Repositories;
using MyCode.Project.Infrastructure.Common;
using MyCode.Project.Infrastructure.Exceptions;
using MyCode.Project.Infrastructure.Extensions;
using MyCode.Project.OutSideService;
using MyCode.Project.Repositories;
using MyCode.Project.Repositories.Common;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Senparc.CO2NET.Extensions;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Threading;
namespace MyCode.Project.Services.Implementation
{
///
/// 采购订单 相关服务
///
public class PurchaseOrderService : ServiceBase, IPurchaseOrderService
{
private IWorkProcessService _workProcessService;
private IKingDeeService _kingDeeService;
private IPurchaseOrderRepository _purchaseOrderRepository;
private IPurchaseOrderItemRepository _purchaseOrderItemRepository;
private IInvoiceOrderItemRepository _invoiceOrderItemRepository;
private IInvoiceOrderRepository _invoiceOrderRepository;
private ISysLoginRepository _sysLoginRepository;
public PurchaseOrderService(IPurchaseOrderRepository purchaseOrderRepository
, IPurchaseOrderItemRepository purchaseOrderItemRepository
, IInvoiceOrderItemRepository invoiceOrderItemRepository
, IInvoiceOrderRepository invoiceOrderRepository
, ISysLoginRepository sysLoginRepository
, IWorkProcessService workProcessService
, IKingDeeService kingDeeService)
{
_purchaseOrderItemRepository = purchaseOrderItemRepository;
_purchaseOrderRepository = purchaseOrderRepository;
_invoiceOrderItemRepository = invoiceOrderItemRepository;
_invoiceOrderRepository = invoiceOrderRepository;
_sysLoginRepository = sysLoginRepository;
_workProcessService = workProcessService;
_kingDeeService = kingDeeService;
}
public K3CloudApi GetK3CloudClient()
{
return _kingDeeService.GetK3CloudClient();
}
#region
///
/// 获取供应商
///
///
public string GetBDSupplier()
{
//string text = ConfigurationManager.AppSettings.Get("X-KDApi-AppID");
var result = _kingDeeService.GetBDSupplier();
List data = JsonHelper.ToObject>(result);
ItemResult kk = new ItemResult();
return result;
}
#endregion
#region GetBDSupplierList(获取金蝶系统的供应商列表)
///
/// 获取金蝶系统的供应商列表
///
///
public List GetBDSupplierList()
{
List result = new List();
var resultString = _kingDeeService.GetBDSupplier();
List data = JsonHelper.ToObject>(resultString);
Dictionary keyValuePairs = new Dictionary();
foreach (var item in data)
{
if (!keyValuePairs.ContainsKey((string) item["FNumber"]))
{
keyValuePairs.Add((string) item["FNumber"], (string) item["FName"]);
ItemResult kk = new ItemResult();
kk.Text = item["FName"];
kk.Value = item["FNumber"];
result.Add(kk);
}
}
result = result.Distinct().ToList();
result = result.OrderBy(t => t.Value).ToList();
return result;
}
#endregion
#region GetFPurchaseOrgList(获取金蝶系统的采购组织)
///
/// 获取金蝶系统的采购组织
///
///
public List GetFPurchaseOrgList()
{
List result = new List();
var resultString = _kingDeeService.GetFPurchaseOrgList();
List data = JsonHelper.ToObject>(resultString);
foreach (var item in data)
{
ItemResult kk = new ItemResult();
kk.Text = item["FName"];
kk.Value = item["FORGID"];
result.Add(kk);
}
result = result.OrderBy(t => t.Value).ToList();
ItemResult item1 = new ItemResult();
item1.Value = "-1";
item1.Text = "全部";
result.Insert(0, item1);
return result;
}
#endregion
#region
///
/// 采购订单列表
///
///
public string QueryList(DateTime begin, DateTime end, string FSupplierId, string yuYan = "")
{
BillQuery queryParam = new BillQuery();
queryParam = new BillQuery()
{
FormId = "PUR_PurchaseOrder",
FieldKeys = $@"FID,FBillNo,FDate,FBILLTYPEID,FSUPPLIERID,FSupplierId.FNAME,FSupplierId,FSupplierId.FShortName,FModifyDate,FPurchaserId,FMaterialId,FPOOrderEntry_FEntryId
,FSupplierLot,FLot,FBaseDeliveryMaxQty,FBaseJoinQty
,FEntryNote,FBillAllAmount_LC,FMaterialId.FNAME,FQty,FEntryNote,FUnitId.fname,FDeliveryDate,FMaterialId.FSpecification,FPurchaserId.fname,FSupplierId.FNumber,FMaterialId.FNumber
,FSettleCurrId.fname,FBillTaxAmount,FExchangeTypeId.fname,FExchangeRate,FEntryTaxRate,FPrice,FAllAmount,FEntryAmount,FEntryTaxAmount,FReceiveQty,FMRPCloseStatus
,FPurchaseOrgId,FPurchaseOrgId.FName,F_TSPR_Text_qtr1,FDEMANDBILLNO
,FCancelStatus,FRemainReceiveQty",
//FieldKeys ="",
TopRowCount = 100000,
Limit = 2000000,
StartRow = 0,
};
FilterList filterString = new FilterList(false);
FilterItem FDocumentStatusItem = new FilterItem("FDocumentStatus", "105", "C", "0");
//FilterItem FCancelStatusItem = new FilterItem("FCancelStatus", "105", "A", "0");
FilterItem FCancelStatusItem1 = new FilterItem { FieldName = "FModifyDate", Compare = "39", Value = begin.ToString("yyyy-MM-dd"), Logic = "0" };
FilterItem FCancelStatusItem2 = new FilterItem { FieldName = "FModifyDate", Compare = "16", Value = end.ToString("yyyy-MM-dd"), Logic = "0" };
FilterItem FCancelStatusItem3 = new FilterItem { FieldName = "FSupplierId.FNumber", Compare = "67", Value = FSupplierId.ToString(), Logic = "0" };
FilterItem FCancelStatusItem4 = new FilterItem { FieldName = "FBaseDeliveryMaxQty", Compare = "21", Value = "0", Logic = "0" };
filterString.AddFilterItem(FDocumentStatusItem).AddFilterItem(FCancelStatusItem1)
//.AddFilterItem(FCancelStatusItem4)
.AddFilterItem(FCancelStatusItem2).AddFilterItem(FCancelStatusItem3);
queryParam.FilterString = filterString.GetFilterString();
var result = _kingDeeService.QueryList(queryParam, yuYan);
return result;
}
#endregion
#region GetPageList(采购单分页列表)
///
/// 采购单分页列表
///
///
///
///
public PageResult GetPageList(PagedSearch pagedSearch, LoginInfo loginInfo)
{
return _purchaseOrderRepository.GetPageList(pagedSearch, loginInfo.SupplierId, loginInfo.FPurchaseOrgId);
}
#endregion
#region GetPurchaseOrderItemList(根据采购订单FID获取明细列表)
///
/// 根据采购订单FID获取明细列表
///
///
///
public List GetPurchaseOrderItemList(PurchaseOrderItemSearch purchaseOrderItemSearch, LoginInfo loginInfo)
{
return _purchaseOrderRepository.GetPurchaseOrderItemList(purchaseOrderItemSearch, loginInfo.SupplierId);
}
#endregion
#region BatchSetChengNuoJiaoQi(批量修改供应商承诺交期字段)
///
/// 批量修改供应商承诺交期字段
///
///
///
[TransactionCallHandler]
public void BatchSetChengNuoJiaoQi(List updateList, string supplierId)
{
var ids = updateList.Select(t => t.Id).ToList();
var list = _purchaseOrderItemRepository.Queryable().Where(t => t.SupplierId == supplierId && ids.Contains(t.Id)).ToList();
SetChengNuoJiaoQiAct act = new SetChengNuoJiaoQiAct();
act.NeedUpDateFields = new List();
act.NeedUpDateFields.Add("FPOOrderEntry");
act.NeedUpDateFields.Add("FSupDueDate");
act.NeedUpDateFields.Add("F_YRVD_Date_re5");
list.ForEach(t =>
{
var temp = updateList.FirstOrDefault(h => h.Id == t.Id);
if (temp != null)
{
t.ChengNuoJiaoQi = temp.NewTime;
}
try
{
act.values = temp.NewTime.Date.ToString();
act.FNumber = t.SupplierId.ToString();
act.EntityId = t.EntityId.SafeValue();
act.Fid = t.Fid.SafeValue();
SetChengNuoJiaoQi(act);
}
catch (Exception ex)
{
throw new BaseException($"修改承诺最新交期失败,原因是{ex.Message}");
}
});
_purchaseOrderItemRepository.Update(list);
}
#endregion
#region BatchSetChengNuoJiaoQi(批量修改供应商承诺最新交期字段)
///
/// 批量修改供应商承诺最新交期字段
///
///
///
[TransactionCallHandler]
public void BatchSetNewChengNuoJiaoQi(List updateList, string supplierId)
{
var ids = updateList.Select(t => t.Id).ToList();
var list = _purchaseOrderItemRepository.Queryable().Where(t => t.SupplierId == supplierId && ids.Contains(t.Id)).ToList();
SetChengNuoJiaoQiAct act = new SetChengNuoJiaoQiAct();
act.NeedUpDateFields = new List();
act.NeedUpDateFields.Add("FPOOrderEntry");
act.NeedUpDateFields.Add("FSupDueNewDate");
act.NeedUpDateFields.Add("F_YRVD_Date_apv");
list.ForEach(t =>
{
var temp = updateList.FirstOrDefault(h => h.Id == t.Id);
if (temp != null)
{
t.NewChengNuoJiaoQi = temp.NewTime;
}
try
{
act.values = temp.NewTime.Date.ToString();
act.FNumber = t.SupplierId.ToString();
act.EntityId = t.EntityId.SafeValue();
act.Fid = t.Fid.SafeValue();
SetChengNuoJiaoQi(act);
}
catch (Exception ex)
{
throw new BaseException($"修改承诺最新交期失败,原因是{ex.Message}");
}
});
//修改金蝶的供应商承诺最新交期字段
_purchaseOrderItemRepository.Update(list);
}
#endregion
#region BatchAddInvoiceOrder(选中明细生成发货通知单)
///
/// 选中明细生成发货通知单
///
///
///
///
[TransactionCallHandler]
public string BatchAddInvoiceOrder(AddOrder act , LoginInfo loginInfo)
{
if (!act.FaHuoDate.HasValue)
act.FaHuoDate = DateTime.Now;
List updateList = act.UpDateList;
string supplierId = loginInfo.SupplierId;
var ids = updateList.Select(t => t.Id).ToList(); ;
var list = _purchaseOrderItemRepository.Queryable().Where(t => t.SupplierId == supplierId && ids.Contains(t.Id)).ToList();
var fidList = list.Select(t => t.Fid).ToList();
var orderHeadList = _purchaseOrderRepository.Queryable().Where(t => fidList.Contains( t.FiD)).ToList();
if (orderHeadList == null)
{
throw new BaseException("订单不属于此供应商");
}
var FPurchaseOrgIdList = orderHeadList.Select(t => t.FPurchaseOrgId).Distinct().ToList();
if (FPurchaseOrgIdList.Count > 1)
{
throw new BaseException("不能跨采购组织创建发货通知单");
}
if (loginInfo.IfForeign == 1 && string.IsNullOrWhiteSpace(act.F_VHUB_Text))
{
throw new BaseException("国外的供应商发票号和发票日期是必填.");
}
InvoiceOrder NewInvoiceOrder = new InvoiceOrder();
NewInvoiceOrder.Id = Guid.NewGuid();
NewInvoiceOrder.FiD = null;
NewInvoiceOrder.Status = 1;
NewInvoiceOrder.EditTime = DateTime.Now;
NewInvoiceOrder.Editor = loginInfo.Name;
NewInvoiceOrder.CreateTime = DateTime.Now;
NewInvoiceOrder.Creater = loginInfo.Name;
NewInvoiceOrder.SupplierId = supplierId;
NewInvoiceOrder.SupplierName = orderHeadList.FirstOrDefault().SupplierName;
NewInvoiceOrder.FDate = act.FaHuoDate;
NewInvoiceOrder.Sheet = DateTime.Now.ToString("yyMMddhhmmssfff");
NewInvoiceOrder.PurchaseOrderId = 0;
NewInvoiceOrder.F_VHUB_Text = act.F_VHUB_Text;
NewInvoiceOrder.F_URXD_Date = act.F_URXD_Date;
NewInvoiceOrder.FPurchaseOrgId = orderHeadList.FirstOrDefault().FPurchaseOrgId;
NewInvoiceOrder.FPurchaseOrgName = orderHeadList.FirstOrDefault().FPurchaseOrgName;
List invoiceOrderItems = new List();
//invoiceOrderItems=list.Select(t=>new InvoiceOrderItem {Id=Guid.NewGuid(), Amount1=t.Amount1, Amount2=t.Amount2,t })
var allInvoiceOrderItem = _invoiceOrderItemRepository.Queryable().Where(t => ids.Contains(t.PurchaseOrderItemId.Value)).ToList();
List errorList = new List();
string FormId = "PUR_PurchaseOrder";
var entityIdList = list.Select(t => t.EntityId).ToList();
BillPush billPush = new BillPush();
billPush.EntryIds = string.Join(",", entityIdList);
billPush.TargetFormId = "PUR_ReceiveBill";
billPush.IsEnableDefaultRule = true;
billPush.CustomParams = new CustomParams();
billPush.CustomParams.AutoAudit = false;
billPush.CustomParams.ScanEntry = new List();
List addTiaoMas = new List();
list.ForEach(t =>
{
//var allqty = allInvoiceOrderItem.Where(h => h.PurchaseOrderItemId == t.Id ).Sum(h => h.Qty).SafeValue();
var temp = updateList.Where(h => h.Id == t.Id).FirstOrDefault();
if (temp != null)
{
var purchaseOrder = orderHeadList.FirstOrDefault(h=>h.FiD==t.Fid);
if (purchaseOrder == null)
throw new BaseException("找不到对应的采购订单主表信息");
if ((temp.Qty ) > (t.Qty - t.MSSReceiveQty))
{
string error = $@"{t.MaterialName}";
errorList.Add(error);
}
//else if ((temp.Qty + allqty) == t.Qty)
//{
//}
else
{
InvoiceOrderItem invoiceOrderItemTemp = new InvoiceOrderItem();
invoiceOrderItemTemp.Id = Guid.NewGuid();
invoiceOrderItemTemp.InvoiceOrderId = NewInvoiceOrder.Id;
invoiceOrderItemTemp.NewChengNuoJiaoQi = t.NewChengNuoJiaoQi;
invoiceOrderItemTemp.ChengNuoJiaoQi = t.ChengNuoJiaoQi;
invoiceOrderItemTemp.UnitPrice = t.UnitPrice;
invoiceOrderItemTemp.PurchaseOrderId = t.Fid;
invoiceOrderItemTemp.MaterialCode = t.MaterialCode;
invoiceOrderItemTemp.MaterialName = t.MaterialName;
invoiceOrderItemTemp.Amount1 = t.UnitPrice * temp.Qty;
invoiceOrderItemTemp.Amount2 = t.UnitPrice * temp.Qty * t.TaxRate;
invoiceOrderItemTemp.DeliveryDate = act.FaHuoDate;
invoiceOrderItemTemp.Qty = temp.Qty;
invoiceOrderItemTemp.Remark = t.Remark;
invoiceOrderItemTemp.SpecificationModel = t.SpecificationModel;
invoiceOrderItemTemp.TaxAmount = t.TaxAmount;
invoiceOrderItemTemp.PurchaseOrderItemId = t.Id;
invoiceOrderItemTemp.FSupplierLot = temp.FSupplierLot==null ?"" : temp.FSupplierLot;
invoiceOrderItemTemp.MSSSupplierLot = t.MSSSupplierLot;
invoiceOrderItemTemp.UnitName = t.UnitName;
invoiceOrderItemTemp.FBillNo = purchaseOrder.FBillNo;
invoiceOrderItemTemp.PurchaseEntityId = t.EntityId;
invoiceOrderItems.Add(invoiceOrderItemTemp);
ScanEntry tempUpdate = new ScanEntry();
tempUpdate.Qty = (int)temp.Qty;
tempUpdate.FENTRYID = t.EntityId.SafeValue();
tempUpdate.FSupplierLot = temp.FSupplierLot;
billPush.CustomParams.ScanEntry.Add(tempUpdate);
billPush.CustomParams.FPH= act.F_VHUB_Text;
billPush.CustomParams.F_URXD_Date = act.F_URXD_Date;
if (string.IsNullOrWhiteSpace(billPush.CustomParams.F_URXD_Date))
billPush.CustomParams.F_URXD_Date = null;
t.FReceiveQty = t.FReceiveQty + temp.Qty;
t.FRemainReceiveQty = t.FRemainReceiveQty - temp.Qty;
}
}
});
if (errorList.Count > 0)
{
string e = string.Join(",", errorList);
if(loginInfo.IfForeign==0)
e = e + "的总发货数量大于总采购数量,请检查";
else
e=e+" The delivery QTY exceeds the PO's maximum QTY!";
throw new BaseException(e);
}
else
{
try
{
var resultKD= _kingDeeService.Push(FormId, billPush);
LogHelper.Info("推送收料订单");
LogHelper.Info(resultKD);
//var sda = resultKD.GetProperty("IsSuccess") [["SuccessEntitys"];
dynamic data = JsonHelper.ToObject(resultKD);
int row = 0;
foreach (var item in data)
{
NewInvoiceOrder.FBillNo = item["Number"];
NewInvoiceOrder.FiD = item["Id"];
row++;
}
_invoiceOrderRepository.Add(NewInvoiceOrder);
_invoiceOrderItemRepository.Add(invoiceOrderItems);
_purchaseOrderItemRepository.Update(list);
////物料编码,数量,收料通知单号,供应商批号,key
//AddTiaoMa addTiao = new AddTiaoMa();
//addTiaoMas = invoiceOrderItems.Select(t => new AddTiaoMa {
// FBarCode = $@"{t.MaterialCode}*{t.Qty.Value.ToString("F2")}*{NewInvoiceOrder.FBillNo}*{t.FSupplierLot}"
//, FBarCodeRule= "03", FBillCode= NewInvoiceOrder.FBillNo, FSupplierLot=t.FSupplierLot==null?"": t.FSupplierLot, FMaterialId=t.MaterialCode, FQty=t.Qty.Value.ToString()
//}).ToList();
_workProcessService.Add(this.MerchantId, "SetMSSSupplierLot", "写入金蝶的美塞斯批号", NewInvoiceOrder.Sheet, 1);
}
catch (Exception ex)
{
LogHelper.Error("推送收料订单出错");
LogHelper.Error(ex);
throw new BaseException(ex.Message);
}
}
return NewInvoiceOrder.Sheet;
}
#endregion
///
/// 抓取金蝶的采购订单
///
public void AddOrderFromKingDee(string SupplierId="")
{
var userList = _sysLoginRepository.Queryable().Where(t => t.Status == 1 && t.IsDeleted == false && t.SystemType == 0 && t.SupplierId != "").ToList();
if (SupplierId != "")
userList = userList.Where(t => t.SupplierId == SupplierId).ToList();
List tempList = new List();
userList.ForEach(t =>
{
if (tempList.Contains(t.SupplierId))
{
return;
}
tempList.Add(t.SupplierId);
var items = _purchaseOrderItemRepository.Queryable().Where(h => h.SupplierId == t.SupplierId && h.Qty > h.MSSReceiveQty).Select(h=>h.Fid).ToList().Distinct().ToList();
var maxDate = _purchaseOrderRepository.Queryable().Where(h => h.SupplierId == t.SupplierId && items.Contains(h.FiD)).Min(h => h.FModifyDate);
DateTime begin = DateTime.Parse("2024-01-01");
if (maxDate.HasValue)
{
begin = maxDate.Value.Date;
}
string yuyan = "";
if (t.IfForeign == 1)
yuyan = "1033"; //语言ID,中文2052(默认),英文1033,繁体3076;
DateTime end = begin.AddMonths(1);
bool stop = false;
Dictionary> keyValuePairs = new Dictionary>();
while (end < DateTime.Now || stop == false)
{
end = begin.AddMonths(1);
var result = QueryList(begin, end, t.SupplierId, yuyan);
//if (t.SupplierId == "9999.1")
//{
// LogHelper.Info(t.SupplierName + "的采购订单数据" + begin.ToString() + "-----" + end.ToString());
// LogHelper.Info(result);
//}
//else
//{
// LogHelper.Info(t.SupplierName + "的采购订单数据" + begin.ToString() + "-----" + end.ToString());
// LogHelper.Info(result);
//}
List data = JsonHelper.ToObject>(result);
//List data = System.Text.Json.JsonSerializer.Deserialize>(result);
if (data.Count > 0)
{
int fid = 0;
Guid ida = Guid.Empty;
List fids = data.Select(k => int.Parse((string)k["FID"])).ToList().Distinct().ToList();
var oldOrderList = _purchaseOrderRepository.Queryable().Where(g => fids.Contains(g.FiD.Value)).ToList();
var oldOrderItemList = _purchaseOrderItemRepository.Queryable().Where(g => fids.Contains(g.Fid.Value)).ToList();
List entityIdList = new List();
foreach (var item in data)
{
object fido = (item["FID"]);
if (fid != int.Parse(fido.ToString()) || fid == 0)
{
fid = item["FID"];
var oldOrder = oldOrderList.Where(g => g.FiD == fid).FirstOrDefault();
if (oldOrder == null)
{
PurchaseOrder purchaseOrder = new PurchaseOrder();
purchaseOrder.Id = Guid.NewGuid();
ida = purchaseOrder.Id;
purchaseOrder.SupplierId = t.SupplierId;
purchaseOrder.SupplierName = item["FSupplierId.FShortName"];
if (purchaseOrder.SupplierName.Trim() == "")
purchaseOrder.SupplierName = item["FSupplierId.FNAME"];
purchaseOrder.FCancelStatus = item["FCancelStatus"];
purchaseOrder.SettlementCcurrency = item["FSettleCurrId.fname"];
purchaseOrder.ExchangeRate = item["FExchangeRate"];
purchaseOrder.ExchangeRateType = item["FExchangeTypeId.fname"];
purchaseOrder.FDate = item["FDate"];
purchaseOrder.FBillNo = item["FBillNo"];
purchaseOrder.FiD = item["FID"];
purchaseOrder.Purchaser = item["FPurchaserId.fname"];
purchaseOrder.FModifyDate = item["FModifyDate"];
purchaseOrder.FPurchaseOrgId= item["FPurchaseOrgId"];
purchaseOrder.FPurchaseOrgName = item["FPurchaseOrgId.FName"];
_purchaseOrderRepository.Add(purchaseOrder);
//if (purchaseOrder.FBillNo == "C20250401048")
//{
// int kk = 8;
//}
}
else
{
oldOrder.SupplierId = t.SupplierId;
oldOrder.SupplierName = item["FSupplierId.FShortName"];
if (oldOrder.SupplierName.Trim()=="")
oldOrder.SupplierName = item["FSupplierId.FNAME"];
oldOrder.FCancelStatus = item["FCancelStatus"];
oldOrder.SettlementCcurrency = item["FSettleCurrId.fname"];
oldOrder.ExchangeRate = item["FExchangeRate"];
oldOrder.ExchangeRateType = item["FExchangeTypeId.fname"];
oldOrder.FDate = item["FDate"];
oldOrder.FBillNo = item["FBillNo"];
oldOrder.FiD = item["FID"];
oldOrder.Purchaser = item["FPurchaserId.fname"];
oldOrder.FModifyDate = item["FModifyDate"];
oldOrder.FPurchaseOrgId = item["FPurchaseOrgId"];
oldOrder.FPurchaseOrgName = item["FPurchaseOrgId.FName"];
_purchaseOrderRepository.Update(oldOrder);
//if (oldOrder.FBillNo == "C20250401048")
//{
// int kk = 8;
//}
}
}
int entityId = item["FPOOrderEntry_FEntryId"];
if (!keyValuePairs.ContainsKey(int.Parse(fido.ToString())))
{
keyValuePairs.Add(int.Parse(fido.ToString()), new List { entityId });
}
else
{
keyValuePairs[int.Parse(fido.ToString())].Add(entityId);
}
entityIdList.Add(entityId);
var oldItem = oldOrderItemList.Where(k => k.EntityId == entityId).FirstOrDefault();
if (oldItem == null)
{
PurchaseOrderItem purchaseOrderItem = new PurchaseOrderItem();
purchaseOrderItem.Id = Guid.NewGuid();
purchaseOrderItem.UnitPrice = item["FPrice"];
purchaseOrderItem.Amount1 = item["FEntryAmount"];
purchaseOrderItem.Amount2 = item["FAllAmount"];
purchaseOrderItem.MaterialName = item["FMaterialId.FNAME"];
purchaseOrderItem.MaterialCode = item["FMaterialId.FNumber"];
purchaseOrderItem.Fid = item["FID"];
purchaseOrderItem.Qty = item["FQty"];
purchaseOrderItem.Remark = item["FEntryNote"];
purchaseOrderItem.SupplierId = t.SupplierId;
purchaseOrderItem.UnitName = item["FUnitId.fname"];
purchaseOrderItem.FDeliveryDate = item["FDeliveryDate"];
purchaseOrderItem.TaxRate = item["FEntryTaxRate"];
purchaseOrderItem.FBillTaxAmount = item["FEntryTaxAmount"];
purchaseOrderItem.FRemainReceiveQty = item["FBaseDeliveryMaxQty"];
purchaseOrderItem.FReceiveQty = item["FBaseJoinQty"];
purchaseOrderItem.FRemainReceiveQty = purchaseOrderItem.Qty - purchaseOrderItem.FReceiveQty;
purchaseOrderItem.MSSReceiveQty= item["FReceiveQty"];
purchaseOrderItem.FMRPCloseStatus = item["FMRPCloseStatus"];
purchaseOrderItem.EntityId = item["FPOOrderEntry_FEntryId"];
purchaseOrderItem.MSSSupplierLot = item["FLot"];
purchaseOrderItem.SpecificationModel = item["FMaterialId.FSpecification"];
purchaseOrderItem.F_TSPR_Text_qtr1 = item["F_TSPR_Text_qtr1"];
purchaseOrderItem.FDEMANDBILLNO = item["FDEMANDBILLNO"];
_purchaseOrderItemRepository.Add(purchaseOrderItem);
}
else
{
oldItem.UnitPrice = item["FPrice"];
oldItem.Amount1 = item["FEntryAmount"];
oldItem.Amount2 = item["FAllAmount"];
oldItem.MaterialName = item["FMaterialId.FNAME"];
oldItem.MaterialCode = item["FMaterialId.FNumber"];
oldItem.Fid = item["FID"];
oldItem.Qty = item["FQty"];
oldItem.Remark = item["FEntryNote"];
oldItem.SupplierId = t.SupplierId;
oldItem.UnitName = item["FUnitId.fname"];
oldItem.FDeliveryDate = item["FDeliveryDate"];
oldItem.TaxRate = item["FEntryTaxRate"];
oldItem.FBillTaxAmount = item["FEntryTaxAmount"];
oldItem.FReceiveQty = item["FBaseJoinQty"];
oldItem.MSSReceiveQty = item["FReceiveQty"];
oldItem.FRemainReceiveQty = oldItem.Qty - oldItem.FReceiveQty;
oldItem.SpecificationModel = item["FMaterialId.FSpecification"];
//oldItem.FRemainReceiveQty = item["FBaseDeliveryMaxQty"];
//purchaseOrderItem.FReceiveQty = item["FBaseDeliveryMaxQty"];
oldItem.FReceiveQty = oldItem.Qty - oldItem.FRemainReceiveQty;
oldItem.FMRPCloseStatus = item["FMRPCloseStatus"];
oldItem.EntityId = item["FPOOrderEntry_FEntryId"];
oldItem.MSSSupplierLot = item["FLot"];
oldItem.F_TSPR_Text_qtr1 = item["F_TSPR_Text_qtr1"];
oldItem.FDEMANDBILLNO = item["FDEMANDBILLNO"];
_purchaseOrderItemRepository.Update(oldItem);
}
}
//var deleteRow = oldOrderItemList.Where(h => !entityIdList.Contains(h.EntityId) && fids.Contains(h.Fid.Value)).ToList();
//var delIds = deleteRow.Select(h => h.Id).ToList();
//if (fids.Count > 0)
// _purchaseOrderItemRepository.Delete(h => !entityIdList.Contains(h.EntityId) && fids.Contains(h.Fid.Value));
}
begin = end;
if (begin > DateTime.Now)
stop = true;
//if (end > DateTime.Now)
//{
// end = DateTime.Now.AddDays(-1);
// begin = end;
//}
Thread.Sleep(500);
}
keyValuePairs.Keys.ForEach(key =>
{
List templist = keyValuePairs[key];
_purchaseOrderItemRepository.Delete(h => !templist.Contains(h.EntityId.Value) && key == (h.Fid.Value));
Thread.Sleep(300);
});
});
}
///
/// 修改供应商的承诺时间
///
///
public void SetChengNuoJiaoQi(SetChengNuoJiaoQiAct act)
{
string FormId = "PUR_PurchaseOrder";
BillSave bill = new BillSave();
bill.NeedUpDateFields = new List();
bill.NeedUpDateFields.AddRange(act.NeedUpDateFields);
//bill.NeedUpDateFields.Add("FPOOrderEntry");
//bill.NeedUpDateFields.Add("FSupDueDate");
bill.NeedReturnFields = new List();
bill.NeedReturnFields.AddRange(act.NeedUpDateFields);
bill.IsDeleteEntry = false;
PurchaseOrderSaveModel orderSaveModel = new PurchaseOrderSaveModel();
orderSaveModel.FPOOrderEntry = new List();
orderSaveModel.FSupplierId = new FSupplierId();
orderSaveModel.FSupplierId.FNumber = act.FNumber;
orderSaveModel.FID = act.Fid;
FPOOrderEntryItem temp = new FPOOrderEntryItem();
temp.FEntryID = act.EntityId;
temp.FSupDueDate = act.values.ToString();
temp.FSupDueNewDate = act.values.ToString();
temp.F_YRVD_Date_re5 = act.values.ToString();
temp.F_YRVD_Date_apv = act.values.ToString();
orderSaveModel.FPOOrderEntry.Add(temp);
//Dictionary keyValuePairs = new Dictionary();
//keyValuePairs.Add(NeedUpDateFields, values);
//keyValuePairs.Add("FEntryID", EntityId);
//Dictionary keyValuePairs2 = new Dictionary();
//keyValuePairs2.Add("FPOOrderEntry", keyValuePairs);
bill.Model = orderSaveModel;
LogHelper.Info(bill.Model);
var result = _kingDeeService.Save(FormId, bill);
LogHelper.Info(result);
//bill
}
}
}