using System; using System.Collections.Generic; using System.Data.Entity.Migrations; using System.Linq; using System.Text; using System.Threading.Tasks; using CK.SCP.Models; using CK.SCP.Models.Enums; using CK.SCP.Models.ScpEntity; using CK.SCP.Models.ScpEntity.ExcelImportEntity; using CK.SCP.Utils; using System.Data.Entity.Core; using CK.SCP.Models.ScpEntity.ExcelExportEnttity; using System.Text.RegularExpressions; using System.Threading; using System.Data; using Newtonsoft.Json; using CK.SCP.Models.UniApiEntity; namespace CK.SCP.Controller { public class SCP_PO_CONTROLLER { public static void Get_V_TB_PO_List(V_TB_PO p_entity, Action>> p_action) { ResultObject> _ret = new ResultObject>(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { IQueryable q = db.V_TB_PO; if (p_entity.UID != 0) { q = q.Where(p => p.UID == p_entity.UID); } if (!string.IsNullOrEmpty(p_entity.PoBillNum)) { q = q.Where(p => p.PoBillNum == p_entity.PoBillNum); } if (!string.IsNullOrEmpty(p_entity.ErpBillNum)) { q = q.Where(p => p.ErpBillNum == p_entity.ErpBillNum); } if (!string.IsNullOrEmpty(p_entity.VendId)) { q = q.Where(p => p.VendId.Contains(p_entity.VendId)); } if (p_entity.ModType != null) { q = q.Where(p => p.ModType == p_entity.ModType); } if (!string.IsNullOrEmpty(p_entity.Contacter)) { q = q.Where(p => p.Contacter.Contains(p_entity.Contacter)); } if (!string.IsNullOrEmpty(p_entity.Site)) { q = q.Where(p => p.Site.Contains(p_entity.Site)); } if (!string.IsNullOrEmpty(p_entity.Buyer)) { q = q.Where(p => p.Buyer.Contains(p_entity.Buyer)); } if (!string.IsNullOrEmpty(p_entity.BuyerPhone)) { q = q.Where(p => p.BuyerPhone.Contains(p_entity.BuyerPhone)); } if (p_entity.State != null) { q = q.Where(p => p.State == p_entity.State); } if (!string.IsNullOrEmpty(p_entity.Remark)) { q = q.Where(p => p.Remark.Contains(p_entity.Remark)); } if (!string.IsNullOrEmpty(p_entity.CreateUser)) { q = q.Where(p => p.CreateUser.Contains(p_entity.CreateUser)); } if (!string.IsNullOrEmpty(p_entity.UpdateUser)) { q = q.Where(p => p.UpdateUser.Contains(p_entity.UpdateUser)); } if (!string.IsNullOrEmpty(p_entity.UpdateInfo)) { q = q.Where(p => p.UpdateInfo.Contains(p_entity.UpdateInfo)); } q = q.Where(p => p.IsDeleted == p_entity.IsDeleted); if (!string.IsNullOrEmpty(p_entity.VendName)) { q = q.Where(p => p.VendName.Contains(p_entity.VendName)); } if (p_entity.BeginTime != null) { q = q.Where(p => p.BeginTime >= p_entity.BeginTime); } if (p_entity.BeginTime_End != null) { q = q.Where(p => p.BeginTime <= p_entity.BeginTime_End); } if (p_entity.EndTime != null) { q = q.Where(p => p.EndTime >= p_entity.EndTime); } if (p_entity.EndTime_End != null) { q = q.Where(p => p.EndTime <= p_entity.EndTime_End); } if (p_entity.UserInAddress != null && p_entity.UserInAddress.Count > 0) { q = q.Where(p => p_entity.UserInAddress.Contains(p.Site)); } if (p_entity.UserInVendIds != null && p_entity.UserInVendIds.Count > 0) { q = q.Where(p => p_entity.UserInVendIds.Contains(p.VendId)); } if (!string.IsNullOrEmpty(p_entity.SubSite)) { q = q.Where(p => p.SubSite.Contains(p_entity.SubSite)); } if (!string.IsNullOrEmpty(p_entity.Extend1)) { q = q.Where(p => p.Extend1.Contains(p_entity.Extend1)); } if (!string.IsNullOrEmpty(p_entity.Extend2)) { q = q.Where(p => p.Extend2.Contains(p_entity.Extend2)); } if (!string.IsNullOrEmpty(p_entity.Extend3)) { q = q.Where(p => p.Extend3.Contains(p_entity.Extend3)); } if (p_entity.MaxpoList != null && p_entity.MaxpoList.Count > 0) { q = q.Where(p => p_entity.MaxpoList.Contains(p.PoBillNum)); } if (!string.IsNullOrEmpty(p_entity.PartCode)) { var _po = db.TB_PO_DETAIL.Where(p => p.PartCode == p_entity.PartCode ); if (_po.Count() > 0) { List _list = new List(); _po.ToList().ForEach(itm => { _list.Add(itm.PoBillNum); }); if (_list.Count() > 0) { q = q.Where(p => _list.Contains(p.PoBillNum)); } } } _ret.State = ReturnStatus.Succeed; _ret.Result = q; p_action(_ret); } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_List", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_List", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_List", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_List", e.Message); throw e; } } public static List LOAD_ASK_DETAIL_SUM(List p_list) { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { if (p_list.Count > 0) { var _detail = p_list[0]; var _ask = db.TB_ASK_DETAIL.Where(p => p.PoBillNum == _detail.PoBillNum && p.IsDeleted == false).GroupBy(p => new { p.PoBillNum, p.PoLine, p.PartCode }).Select(p => new { AskSum = p.Sum(itm => itm.AskQty), PoLine = p.Key.PoLine, PoBillNum = p.Key.PoBillNum, PartCode = p.Key.PartCode }); p_list.ForEach(p => { _ask.ToList().ForEach(itm => { if (p.PoBillNum == itm.PoBillNum && p.PoLine == itm.PoLine && p.PartCode == itm.PartCode) { p.TempQty = itm.AskSum; } }); }); } } return p_list; } public static ResultObject Save_TB_MAXPO_DETAIL_QTY(List p_entitys) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { foreach (var itm in p_entitys) { var _entity = db.TB_MAXPO_DETAIL.Where(p => p.UID == itm.UID).FirstOrDefault(); if(itm.OrderQtykg <_entity.OrderQtykg- _entity.AsnQty) { _ret.MessageList.Add("零件号"+_entity.PartCode+"剩余可消耗订货量不足!"); } if( itm.OrderQtykg == 0) { _ret.MessageList.Add("订货量不能修改为0!"); } else { _entity.SurplusQty = itm.OrderQtykg - _entity.OrderQtykg + _entity.SurplusQty; _entity.AsnQty=itm.OrderQtykg - _entity.OrderQtykg + _entity.AsnQty; _entity.OrderQtykg = itm.OrderQtykg; _entity.OrderQtyd = itm.OrderQtykg / 1000; db.TB_MAXPO_DETAIL.AddOrUpdate(p => p.UID, _entity); TS_UNI_API maxuni = new TS_UNI_API(); maxuni.BillNum = _entity.PoBillNum; maxuni.InterfaceType = "MaxPobillnum"; maxuni.TableName = "TS_UNI_API"; maxuni.BillType = 701; maxuni.SubBillType = 0; maxuni.PartCode = _entity.PartCode; maxuni.VendId = _entity.VendId;//供应商编号 if (string.IsNullOrEmpty(_entity.Texture)) { maxuni.Batch = ""; } else { maxuni.Batch = _entity.Texture;//材质 } maxuni.Qty = _entity.OrderNumber; maxuni.State = 1; maxuni.CreateOper = _entity.CreateUser;//创建者 maxuni.CreateTime =DateTime.Now; maxuni.PutTime = DateTime.Now; maxuni.Extend1 = _entity.PartNumber; maxuni.PackQty = _entity.MinordQty; maxuni.Price = _entity.OrderQtyd; maxuni.VendBatch = _entity.ContractMonth;//合同月 maxuni.Currency = _entity.Model; maxuni.Buyer = _entity.TechStandard; maxuni.BuyerPhone =_entity.Finprspec;//规格 maxuni.Tax = 0; maxuni.PoUnit = _entity.forecastone;//预测1 maxuni.LocUnit = _entity.forecasttwo;//预测2 maxuni.Attn =_entity.forecastthree;//预测3 maxuni.Receiver = _entity.forecastfour;//预测4 maxuni.ModType = _entity.forecastfive;//预测5 maxuni.SubSite = _entity.forecastsix;//预测6 maxuni.Site = _entity.Site; maxuni.Extend2 = _entity.Matermanu; maxuni.TaxAmt = _entity.Singlecon;//单件消耗 maxuni.ValidDate = DateTime.Now; maxuni.ErpLineNum = _entity.PoLine; maxuni.Domain = _entity.Site; maxuni.Extend3 = "U"; db.TS_UNI_API.AddOrUpdate(maxuni); } } if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Save_TB_ASK_DETAIL_LIER", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Save_TB_ASK_DETAIL_LIER", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Save_TB_ASK_DETAIL_LIER", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Save_TB_ASK_DETAIL_LIER", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public static List LOAD_PO_DETAIL_SUM(List p_list) { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { if (p_list.Count > 0) { //var _detail = p_list[0]; foreach (V_TB_PO_DETAIL _detail in p_list) { var _ask = db.TB_ASK_DETAIL.Where(p => p.PoBillNum == _detail.PoBillNum && p.IsDeleted == false).GroupBy(p => new { p.PoBillNum, p.PoLine, p.PartCode }).Select(p => new { AskSum = p.Sum(itm => itm.AskQty), PoLine = p.Key.PoLine, PoBillNum = p.Key.PoBillNum, PartCode = p.Key.PartCode }); var rec = db.TB_RECEIVE_DETAIL.Where(p => p.PoBillNum == _detail.PoBillNum && p.IsDeleted == false && p.State == (int)ReceiveState.Check && p.BillType == 0) .GroupBy(p => new { p.PoBillNum, p.PoLine, p.PartCode }).Select(p => new { ReceiveSum = p.Sum(itm => itm.Qty), PoLine = p.Key.PoLine, PoBillNum = p.Key.PoBillNum, PartCode = p.Key.PartCode }); var reject = db.TB_RECEIVE_DETAIL.Where(p => p.PoBillNum == _detail.PoBillNum && p.IsDeleted == false && p.State == (int)RejectState.Check && p.BillType == 1).GroupBy(p => new { p.PoBillNum, p.PoLine, p.PartCode }).Select(p => new { RejectSum = p.Sum(itm => itm.Qty), PoLine = p.Key.PoLine, PoBillNum = p.Key.PoBillNum, PartCode = p.Key.PartCode }); var asn = db.TB_ASN_DETAIL.Where(p => p.PoBillNum == _detail.PoBillNum && p.IsDeleted == false && (p.State == (int)AsnState.Ship || p.State == (int)AsnState.Receive)) .GroupBy(p => new { p.PoBillNum, p.PoLine, p.PartCode }) .Select(p => new { AsSum = p.Sum(itm => itm.Qty), PoLine = p.Key.PoLine, PoBillNum = p.Key.PoBillNum, PartCode = p.Key.PartCode }); var arrive = db.TB_ARRIVE_DETAIL.Where(p => p.PoBillNum == _detail.PoBillNum && p.IsDeleted == false && p.State == (int)ArriveState.OK && p.BillType == (int)ArriveBillType.Receive).GroupBy(p => new { p.PoBillNum, p.PoLine, p.PartCode }).Select(p => new { ArriveSum = p.Sum(itm => itm.Qty), PoLine = p.Key.PoLine, PoBillNum = p.Key.PoBillNum, PartCode = p.Key.PartCode }); _detail.PartDesc1 = _detail.PartDesc1 + _detail.PartDesc2; rec.ToList().ForEach(itm => { if (_detail.PoBillNum == itm.PoBillNum && _detail.PoLine == itm.PoLine && _detail.PartCode == itm.PartCode) { _detail.ReceivedQty = itm.ReceiveSum; } }); reject.ToList().ForEach(itm => { if (_detail.PoBillNum == itm.PoBillNum && _detail.PoLine == itm.PoLine && _detail.PartCode == itm.PartCode) { _detail.RejectQty = itm.RejectSum.ToString(); } }); asn.ToList().ForEach(itm => { if (_detail.PoBillNum == itm.PoBillNum && _detail.PoLine == itm.PoLine && _detail.PartCode == itm.PartCode) { _detail.ShippedQty = itm.AsSum; } }); _ask.ToList().ForEach(itm => { if (_detail.PoBillNum == itm.PoBillNum && _detail.PoLine == itm.PoLine && _detail.PartCode == itm.PartCode) { _detail.TempQty = itm.AskSum; } }); arrive.ToList().ForEach(itm => { if (_detail.PoBillNum == itm.PoBillNum && _detail.PoLine == itm.PoLine && _detail.PartCode == itm.PartCode) { _detail.ArriveQty = itm.ArriveSum.ToString(); } }); } } } return p_list; } public static ResultObject Save_TB_PO_STATE(List p_list, PoState p_state) { ResultObject _ret = new ResultObject(); //try //{ // using (ScpEntities db = EntitiesFactory.CreateScpInstance()) // { // if (db.TB_ASN.Where(p => p_list.Contains(p.PoBillNum)).Count() == 0) // { // if(p_state==PoState.Reject) // { // var _askDetailList = db.TB_ASK_DETAIL.Where(p => p_list.Contains(p.PoBillNum)).ToList(); // db.TB_ASK_DETAIL.RemoveRange(_askDetailList);//移除要货看板明细 // var _ls = db.TB_ASK.Where(p => p_list.Contains(p.PoBillNum)).ToList(); // db.TB_ASK.RemoveRange(_ls.ToArray());//移除要货看板 // var _lsPending = db.TB_PENING_ITEMS.Where(p => p_list.Contains(p.ITEM_NO)).ToList(); // db.TB_PENING_ITEMS.RemoveRange(_lsPending.ToArray());//移除代办 // var _list = db.TB_PO.Where(p => p_list.Contains(p.PoBillNum)).ToList(); // int count = _ls.Count(p => p.State == (int)AskState.New || p.State == (int)AskState.Release); // if (_list.Count > 0 && _list.Count == count) // { // _list.ForEach(p => // { // p.State = (int)PoState.Reject; // p.IsDeleted = true; // var _poList = db.TB_PO_DETAIL.Where(itm => itm.PoBillNum == p.PoBillNum).ToList(); // _poList.ForEach(itm => // { // itm.State = (int)PoState.Reject; // itm.IsDeleted = true; // }); // db.TB_PO_DETAIL.AddOrUpdate(itm => itm.UID, _poList.ToArray()); // } // ); // db.TB_PO.AddOrUpdate(p => p.PoBillNum, _list.ToArray()); // } // else // { // _ret.State = ReturnStatus.Failed; // _ret.Result = false; // _ret.Message = "选择的记录,有不是新建或发布状态记录!"; // } // } // if (p_state == PoState.Complete) // { // var _list = db.TB_PO.Where(p => p_list.Contains(p.PoBillNum)).ToList(); // _list.ForEach(p => // { // p.State = (int)PoState.Complete; // p.IsDeleted = true; // var _poList = db.TB_PO_DETAIL.Where(itm => itm.PoBillNum == p.PoBillNum).ToList(); // _poList.ForEach(itm => // { // itm.State = (int)PoState.Complete; // }); // db.TB_PO_DETAIL.AddOrUpdate(itm => itm.UID, _poList.ToArray()); // } // ); // db.TB_PO.AddOrUpdate(p => p.PoBillNum, _list.ToArray()); // } // if (p_state == PoState.CompleteForce) // { // var _list = db.TB_PO.Where(p => p_list.Contains(p.PoBillNum)).ToList(); // _list.ForEach(p => // { // p.State = (int)PoState.CompleteForce; // p.IsDeleted = true; // var _poList = db.TB_PO_DETAIL.Where(itm => itm.PoBillNum == p.PoBillNum).ToList(); // _poList.ForEach(itm => // { // itm.State = (int)PoState.CompleteForce; // }); // db.TB_PO_DETAIL.AddOrUpdate(itm => itm.UID, _poList.ToArray()); // } // ); // db.TB_PO.AddOrUpdate(p => p.PoBillNum, _list.ToArray()); // } // if (p_state == PoState.Release) // { // var _list = db.TB_PO.Where(p => p_list.Contains(p.PoBillNum)).ToList(); // int count = _list.Count(p => p.State == (int)AskState.New); // if (_list.Count > 0 && _list.Count == count) // { // _list.ForEach(p => // { // p.State = (int)PoState.Release; // var _poList = db.TB_PO_DETAIL.Where(itm => itm.PoBillNum == p.PoBillNum).ToList(); // _poList.ForEach(itm => // { // itm.State = (int)PoState.Release; // }); // db.TB_PO_DETAIL.AddOrUpdate(itm => itm.UID, _poList.ToArray()); // } // ); // db.TB_PO.AddOrUpdate(p => p.PoBillNum, _list.ToArray()); // } // else // { // _ret.State = ReturnStatus.Failed; // _ret.Result = false; // _ret.Message = "选择的记录,有不是新建状态记录!"; // } // } // if (p_state == PoState.New) // { // var _AskDetailList = db.TB_ASK_DETAIL.Where(p => p_list.Contains(p.PoBillNum)).ToList(); // if (_AskDetailList.Count > 0) // { // db.TB_ASK_DETAIL.RemoveRange(_AskDetailList);//移除要货看板明细 // } // var _ls = db.TB_ASK.Where(p => p_list.Contains(p.PoBillNum)).ToList(); // if (_ls.Count > 0) // { // #region 供应商要货代办作废 // var _pList = _ls.Select(p => p.AskBillNum).ToList(); // var _pendingList = db.TB_PENING_ITEMS.Where(itm => _pList.Contains(itm.ITEM_NO)).ToList(); // if (_pendingList.Count > 0) // { // db.TB_PENING_ITEMS.RemoveRange(_pendingList); // } // #endregion // db.TB_ASK.RemoveRange(_ls.ToArray());//移除要货看板 // } // var _list = db.TB_PO.Where(p => p_list.Contains(p.PoBillNum)).ToList(); // int count = _list.Count(p => p.State == (int)AskState.Release); // if (_list.Count > 0 && _list.Count == count) // { // _list.ForEach(p => // { // p.State = (int)PoState.New; // p.IsDeleted = false; // var _poList = db.TB_PO_DETAIL.Where(itm => itm.PoBillNum == p.PoBillNum).ToList(); // _poList.ForEach(itm => // { // itm.State = (int)PoState.New; // }); // db.TB_PO_DETAIL.AddOrUpdate(itm => itm.UID, _poList.ToArray()); // }); // db.TB_PO.AddOrUpdate(p => p.PoBillNum, _list.ToArray()); // } // else // { // _ret.State = ReturnStatus.Failed; // _ret.Result = false; // _ret.Message = "选择的记录,有不是发布状态记录!"; // } // } // if (db.SaveChanges() != -1) // { // _ret.State = ReturnStatus.Succeed; // _ret.Result = true; // } // else // { // _ret.State = ReturnStatus.Failed; // _ret.Result = false; // _ret.Message = "数据更新失败!"; // } // } // else // { // _ret.State = ReturnStatus.Failed; // _ret.Result = false; // _ret.Message = "该订单已经存在发货单,不能取消发布!"; // } // } //} //catch (Exception e) //{ // _ret.State = ReturnStatus.Failed; // LogHelper.Writlog(LogHelper.LogType.Error, typeof(TB_PO), "Save_TB_PO", e.Message); // _ret.Result = false; // _ret.ErrorList.Add(e); // throw e; //} return _ret; } public static List GetPoDetailList(List p_lst) { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { return db.V_TB_PO_DETAIL.Where(p => p_lst.Contains(p.PoBillNum)).ToList(); } } public static List GetMaxpoConsume(string maxpobillnum) { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { return db.TB_MAXPO_CONSUME.Where(p => p.PoBillNum == maxpobillnum).ToList(); } } public static List GetMaxPoDetailList(List p_lst) { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { return db.V_TB_MAXPO_DETAIL.Where(p => p_lst.Contains(p.PoBillNum)).ToList(); } } public static ResultObject Save_TB_PO(List p_entitys) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { foreach (var itm in p_entitys) { db.TB_PO.AddOrUpdate(p => p.PoBillNum, itm); } if (db.SaveChanges() != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_TB_PO", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_TB_PO", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_TB_PO", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_TB_PO", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } private static List CheckExcelPackQty(ScpEntities db, SCP_PO_EXCEL p_excel) { List ErrorList = new List(); var _ls = db.TA_VEND_PART.Where(p => p.PartCode == p_excel.零件号 && p.VendId == p_excel.供应商编号).ToList(); if (_ls.Count != 0) { if (_ls[0].VendPackQty != 0) { if (Convert.ToDecimal(p_excel.数量) % _ls[0].VendPackQty > 0) { ErrorList.Add(string.Format("分组【{2}】零件号【{0}】行号【{1}】不是整箱!标包数为【{3}】", p_excel.零件号, p_excel.行号, p_excel.分组编号, _ls[0].VendPackQty)); } } } return ErrorList; } private static List CheckExcel(ScpEntities db, SCP_PO_EXCEL p_excel) { List ErrorList = new List(); if (!string.IsNullOrEmpty(p_excel.QAD订单号)) { int count = db.TB_PO.Count(p => p.PoBillNum == p_excel.QAD订单号); if (count == 0) { ErrorList.Add(string.Format("订单编号{0}不存在!", p_excel.QAD订单号)); } } else { ErrorList.Add(string.Format("订单编号为空!")); } var _list = db.TB_PO_DETAIL.Where(p => p.PoBillNum == p_excel.QAD订单号 && p.PartCode == p_excel.零件号).ToList(); if ( string.IsNullOrEmpty(p_excel.分组编号) || string.IsNullOrEmpty(p_excel.QAD订单号) || string.IsNullOrEmpty(p_excel.供应商编号) || string.IsNullOrEmpty(p_excel.要求到货日期) || string.IsNullOrEmpty(p_excel.零件号) || string.IsNullOrEmpty(p_excel.交货联系人) || string.IsNullOrEmpty(p_excel.数量)) { ErrorList.Add(string.Format("分组【{1}】零件号【{0}】有填写为空!", p_excel.零件号, p_excel.分组编号)); } if (_list.Count == 0) { ErrorList.Add(string.Format("分组【{2}】零件号【{0}】行号【{1}】不存在!", p_excel.零件号, p_excel.行号, p_excel.分组编号)); } else { p_excel.行号 = _list[0].PoLine.ToString(); p_excel.价格 = _list[0].Price.ToString(); p_excel.单位 = _list[0].PoUnit.ToString(); p_excel.币种 = _list[0].Currency.ToString(); } return ErrorList; } private static List CheckExce2(ScpEntities db, string lt) { List ErrorList = new List(); // 刨除作废的单子 var _asn = db.TB_ASN_DETAIL.Count(p => (p.PoBillNum ==lt) && (p.State != (int)AsnState.Reject )); if (_asn> 0) { ErrorList.Add(string.Format("订单【{0}】已经生成发货单了,不能作废", lt)); } return ErrorList; } private static List CheckExce3(ScpEntities db, string lt) { List ErrorList = new List(); var _asn = db.TB_ASK.SingleOrDefault(p => p.AskBillNum == lt); if (_asn.State > 0) { ErrorList.Add(string.Format("看板【{0}】不是新建状态,不能删除", lt)); } return ErrorList; } public static ResultObject Save_EXCEL_PO_MOD(List p_order_list, string site, string p_creator, DateTime p_time, BillModType p_modtype, string subsite, string p_chineseName, string p_buyerPhone) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { List lineError = new List(); List ErrorList = new List(); var _lst = p_order_list; string _polist = ""; int _num = 1; var OrderList = _lst.GroupBy(p => p.订单编号).ToList(); OrderList.ForEach((p) => { var list = p.ToList(); if (list.Count > 0) { #region 日程单 if (p_modtype == BillModType.Contract) { var _entity = list.FirstOrDefault(); var _po = db.TB_PO.SingleOrDefault(t => t.PoBillNum == _entity.订单编号/* && t.State == state*/ && t.Site == site && t.SubSite == subsite && t.VendId == _entity.供应商编号.ToUpper()) ?? new TB_PO { GUID = Guid.NewGuid(), PoBillNum = _entity.订单编号.ToUpper(), State = (int)PoState.Open, Site = site, SubSite = subsite, VendId = _entity.供应商编号.ToUpper() }; _po.ErpBillNum = _entity.订单编号.ToUpper(); _po.ModType = (int)p_modtype; _po.Contacter = p_chineseName;// _entity.联系人; _po.Buyer = p_chineseName;// _entity.联系人; _po.BuyerPhone = p_buyerPhone; _po.Site = site; _po.Remark = _entity.备注; _po.IsDeleted = false; _po.CreateTime = DateTime.Parse(_entity.订单创建时间); _po.CreateUser = p_creator; _po.BeginTime = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间); _po.EndTime = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now.AddYears(30) : DateTime.Parse(_entity.要求到货日期); db.TB_PO.AddOrUpdate(_po); list.ForEach((itm) => { int _poline = Int32.Parse(itm.行号); var _PO_Detail = db.TB_PO_DETAIL.FirstOrDefault(t => t.PartCode == itm.零件号 && t.PoLine == _poline && t.PoBillNum == itm.订单编号 /*&& t.State == state*/ && t.Site == site && t.SubSite == subsite) ?? new TB_PO_DETAIL { GUID = Guid.NewGuid(), PartCode = itm.零件号.ToUpper(), PoLine = _poline, PoBillNum = itm.订单编号.ToUpper(), State = (int)PoState.Open, Site = site, SubSite = subsite }; _PO_Detail.Currency = "CNY"; _PO_Detail.PoUnit = itm.单位; _PO_Detail.CreateTime = DateTime.Parse(itm.订单创建时间); _PO_Detail.CreateUser = p_creator; _PO_Detail.BeginTime = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间); _PO_Detail.EndTime = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now.AddYears(30) : DateTime.Parse(_entity.要求到货日期); _PO_Detail.PlanQty = decimal.Parse(itm.数量); _PO_Detail.IsDeleted = false; _PO_Detail.LocUnit = itm.单位; _PO_Detail.PoUnit = itm.单位; _PO_Detail.UnConv = 1; _PO_Detail.Price = string.IsNullOrEmpty(itm.单价) ? 0 : decimal.Parse(itm.单价); db.TB_PO_DETAIL.AddOrUpdate(_PO_Detail); }); _polist = _polist + _po.PoBillNum + ","; } #endregion #region 离散单 if (p_modtype == BillModType.Non_Contract) { var _entity = list.FirstOrDefault(); TB_PO _po = new TB_PO(); _po.GUID = Guid.NewGuid(); _po.PoBillNum = SCP_BILLCODE_CONTROLLER.MakePoNum(_num); _po.State = (int)PoState.Open; _po.Site = site; _po.SubSite = subsite; _po.VendId = _entity.供应商编号.ToUpper(); _po.ErpBillNum = _po.PoBillNum; _po.ModType = (int)p_modtype; _po.Contacter = p_chineseName;// _entity.联系人; _po.Buyer = p_chineseName;// _entity.联系人; _po.BuyerPhone = p_buyerPhone; _po.Site = site; _po.Remark = _entity.备注; _po.IsDeleted = false; _po.CreateTime = DateTime.Parse(_entity.订单创建时间); _po.CreateUser = p_creator; _po.BeginTime = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间); _po.EndTime = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now.AddYears(30) : DateTime.Parse(_entity.要求到货日期); db.TB_PO.AddOrUpdate(_po); TB_ASK _ask = new TB_ASK(); _ask.AskBillNum = SCP_BILLCODE_CONTROLLER.MakeASKCodeByNum(_num); _ask.GUID = Guid.NewGuid(); _ask.PoBillNum = _po.PoBillNum; _ask.VendId = _entity.供应商编号.ToUpper(); _ask.IsDeleted = false; _ask.CreateTime = DateTime.Now; _ask.CreateUser = p_creator; _ask.Site = site; _ask.ReceivedPort = "";//交货口 _ask.State = (int)AskState.New; // _ask.State = (int)AskState.Release; _ask.Remark = _entity.备注; _ask.ModType = (int)p_modtype; _ask.ErpBillNum = _po.PoBillNum; _ask.BeginTime = p_time; _ask.EndTime = DateTime.Parse(_entity.要求到货日期); _ask.Buyer = p_chineseName; _ask.BuyerPhone = p_buyerPhone; _ask.SubSite = subsite; db.TB_ASK.Add(_ask); int _number = 1; list.ForEach((itm) => { TB_PO_DETAIL _PO_Detail = new TB_PO_DETAIL(); _PO_Detail.GUID = Guid.NewGuid(); _PO_Detail.PartCode = itm.零件号.Trim().ToUpper(); _PO_Detail.PoLine = _number; _PO_Detail.PoBillNum = _po.PoBillNum; _PO_Detail.State = (int)PoState.Open; _PO_Detail.Site = site; _PO_Detail.SubSite = subsite; _PO_Detail.Currency = "CNY"; _PO_Detail.PoUnit = itm.单位; _PO_Detail.CreateTime = DateTime.Parse(itm.订单创建时间); _PO_Detail.CreateUser = p_creator; _PO_Detail.BeginTime = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间); _PO_Detail.EndTime = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now.AddYears(30) : DateTime.Parse(_entity.要求到货日期); _PO_Detail.PlanQty = decimal.Parse(itm.数量); _PO_Detail.IsDeleted = false; _PO_Detail.LocUnit = itm.单位; _PO_Detail.PoUnit = itm.单位; _PO_Detail.UnConv = 1; _PO_Detail.Price = string.IsNullOrEmpty(itm.单价) ? 0 : decimal.Parse(itm.单价); _PO_Detail.TempQty = decimal.Parse(itm.数量); TB_ASK_DETAIL _tDetail = new TB_ASK_DETAIL(); _tDetail.Remark = itm.备注; _tDetail.PoBillNum = _po.PoBillNum; _tDetail.AskBillNum = _ask.AskBillNum; _tDetail.PoLine = _number; _tDetail.PoUnit = itm.单位; _tDetail.CreateTime = DateTime.Now; _tDetail.CreateUser = p_creator; _tDetail.PartCode = itm.零件号.Trim().ToUpper(); _tDetail.ReceivedPort = ""; _tDetail.BeginTime = p_time; _tDetail.EndTime = Convert.ToDateTime(itm.要求到货日期); _tDetail.TempQty = 0; _tDetail.AskQty = Decimal.Parse(itm.数量); _tDetail.IsDeleted = false; _tDetail.LocUnit = itm.单位; _tDetail.UnConv = 1; _tDetail.State = (int)PoState.Open; _tDetail.SubSite = subsite; _tDetail.Site = site; _tDetail.Price = Decimal.Parse(itm.单价); _tDetail.GUID = Guid.NewGuid(); _tDetail.Currency = itm.币种; db.TB_ASK_DETAIL.Add(_tDetail); db.TB_PO_DETAIL.AddOrUpdate(_PO_Detail); _number++; }); _polist = _polist + _po.PoBillNum + "
"; } #endregion } else { _ret.MessageList.Add("订单导入有误!"); return; } _num++; Thread.Sleep(10); } ); if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; _ret.Message = _polist; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public static ResultObject Save_EXCEL_PO_MOD1(List p_order_list, string site, string p_creator, DateTime p_time, string subsite, string p_chineseName, string p_buyerPhone, string CreateTime, string EN, string EndTime, string PartCode, string PoBillNum, string Remark, string Time, string VendId, string PoUnit) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { int _num = 1; var _lst = p_order_list; string _polist = ""; var OrderList = _lst.GroupBy(p => PoBillNum).ToList(); OrderList.ForEach((p) => { var list = p.ToList(); if (list.Count > 0) { TB_PO _po = new TB_PO(); _po.GUID = Guid.NewGuid(); _po.PoBillNum = SCP_BILLCODE_CONTROLLER.MakePoNum(_num); _po.State = (int)PoState.Open; _po.Site = site; _po.SubSite = subsite; _po.VendId = VendId; _po.ErpBillNum = _po.PoBillNum; _po.ModType = 2; _po.Contacter = p_chineseName;// _entity.联系人; _po.Buyer = p_chineseName;// _entity.联系人; _po.BuyerPhone = p_buyerPhone; _po.Site = site; _po.Remark = Remark; _po.IsDeleted = false; _po.CreateTime = DateTime.Parse(CreateTime); _po.CreateUser = p_creator; _po.BeginTime = DateTime.Parse(EndTime); _po.EndTime = DateTime.Parse(Time); db.TB_PO.AddOrUpdate(_po); TB_ASK _ask = new TB_ASK(); _ask.AskBillNum = SCP_BILLCODE_CONTROLLER.MakeASKCodeByNum(_num); _ask.GUID = Guid.NewGuid(); _ask.PoBillNum = _po.PoBillNum; _ask.VendId = VendId; _ask.IsDeleted = false; _ask.CreateTime = DateTime.Now; _ask.CreateUser = p_creator; _ask.Site = site; _ask.ReceivedPort = "";//交货口 _ask.State = (int)AskState.Release; _ask.Remark = Remark; _ask.ModType = 2; _ask.ErpBillNum = _po.PoBillNum; _ask.BeginTime = p_time; _ask.EndTime = DateTime.Parse(EndTime); _ask.Buyer = p_chineseName; _ask.BuyerPhone = p_buyerPhone; _ask.SubSite = subsite; db.TB_ASK.Add(_ask); int _number = 1; list.ForEach((itm) => { TB_PO_DETAIL _PO_Detail = new TB_PO_DETAIL(); _PO_Detail.GUID = Guid.NewGuid(); _PO_Detail.PartCode = PartCode; _PO_Detail.PoLine = _number; _PO_Detail.PoBillNum = _po.PoBillNum; _PO_Detail.State = (int)PoState.Open; _PO_Detail.Site = site; _PO_Detail.SubSite = subsite; _PO_Detail.Currency = "CNY"; _PO_Detail.PoUnit = PoUnit; _PO_Detail.CreateTime = DateTime.Parse(CreateTime); _PO_Detail.CreateUser = p_creator; _PO_Detail.BeginTime = string.IsNullOrEmpty(CreateTime) ? DateTime.Now : DateTime.Parse(CreateTime); _PO_Detail.EndTime = string.IsNullOrEmpty(EndTime) ? DateTime.Now.AddYears(30) : DateTime.Parse(EndTime); _PO_Detail.PlanQty = decimal.Parse(EN); _PO_Detail.IsDeleted = false; _PO_Detail.LocUnit = PoUnit; _PO_Detail.PoUnit = PoUnit; _PO_Detail.UnConv = 1; //_PO_Detail.Price = string.IsNullOrEmpty(itm.单价) ? 0 : decimal.Parse(itm.单价); _PO_Detail.TempQty = decimal.Parse(EN); TB_ASK_DETAIL _tDetail = new TB_ASK_DETAIL(); _tDetail.Remark = Remark; _tDetail.PoBillNum = _po.PoBillNum; _tDetail.AskBillNum = _ask.AskBillNum; _tDetail.PoLine = _number; _tDetail.PoUnit = PoUnit; _tDetail.CreateTime = DateTime.Now; _tDetail.CreateUser = p_creator; _tDetail.PartCode = PartCode; _tDetail.ReceivedPort = ""; _tDetail.BeginTime = p_time; _tDetail.EndTime = Convert.ToDateTime(EndTime); _tDetail.TempQty = 0; _tDetail.AskQty = Decimal.Parse(EN); _tDetail.IsDeleted = false; _tDetail.LocUnit = PoUnit; _tDetail.UnConv = 1; _tDetail.State = (int)PoState.Open; _tDetail.SubSite = subsite; _tDetail.Site = site; //_tDetail.Price = Decimal.Parse(itm.单价); _tDetail.GUID = Guid.NewGuid(); _tDetail.Currency = "CNY"; db.TB_ASK_DETAIL.Add(_tDetail); db.TB_PO_DETAIL.AddOrUpdate(_PO_Detail); //_number++; }); } else { _ret.MessageList.Add("订单信息输入有误"); return; } } ); if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; _ret.Message = _polist; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public static ResultObject Check_EXCEL_PO_MOD(List p_order_list, BillModType p_modtype, string site, string subsite) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { int number = 1; List lineError = new List(); List ErrorList = new List(); var _lst = p_order_list; p_order_list.ForEach(p => { var _count1 = _lst.Count(itm => itm.订单编号 == p.订单编号 && itm.行号 == p.行号); var _count2 = _lst.Count(itm => itm.订单编号 == p.订单编号 && itm.零件号 == p.零件号); if (_count1 > 1 && p_modtype == BillModType.Contract) { lineError.Add(string.Format("导入订单编号【{0}】行号【{1}】有重复", p.订单编号, p.行号)); ErrorList = lineError; } if (_count2 > 1) { lineError.Add(string.Format("导入订单编号【{0}】零件编码【{1}】有重复", p.订单编号, p.零件号)); ErrorList = lineError; } }); p_order_list.ForEach (p => { var _ls = CheckExcelMode_Po(db, p, p_modtype, site, subsite); if (_ls.Count > 0) { lineError.Add(number.ToString()); ErrorList.Add(string.Join("
", _ls.ToArray())); } number++; }); if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } /// /// 订单导入检查 /// /// /// /// private static List CheckExcelMode_Po(ScpEntities db, SCP_PO_EXPORT_IMPORT_MODEL p_excel, BillModType p_modtype, string site = null, string subsite = null) { List ErrorList = new List(); decimal _result = 0; if (!decimal.TryParse(p_excel.数量, out _result)) { ErrorList.Add(string.Format("订单编号【{0}】零件编号【{1}】数量填写有问题", p_excel.订单编号, p_excel.数量)); } var _checkpart = db.TA_PART.FirstOrDefault(p => p.PartCode == p_excel.零件号); if (_checkpart != null) { if (_checkpart.State.ToUpper() != "SP") { p_excel.单位 = _checkpart.Unit; } else { ErrorList.Add(string.Format("订单编号为【{0}】的零件编号【{1}】零件表零件停用,无法导入!", p_excel.订单编号, p_excel.零件号)); } } else { ErrorList.Add(string.Format("订单编号为【{0}】的零件编号【{1}】零件表里无数据,无法导入!", p_excel.订单编号, p_excel.零件号)); } DateTime _d = DateTime.Now; #region 日程单验证 if (p_modtype == BillModType.Contract) { if (string.IsNullOrEmpty(p_excel.订单编号) || string.IsNullOrEmpty(p_excel.行号) || string.IsNullOrEmpty(p_excel.订单创建时间) || string.IsNullOrEmpty(p_excel.要求到货日期) || string.IsNullOrEmpty(p_excel.零件号) || string.IsNullOrEmpty(p_excel.数量)) { ErrorList.Add(string.Format("分组【{1}】零件名称【{0}】有填写为空!", p_excel.零件号, p_excel.订单编号)); } else { if (!string.IsNullOrEmpty(p_excel.零件截至日期)) { DateTime year = DateTime.Parse(p_excel.零件截至日期); if (year.Year > 2049) { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】的零件截止日期必须大于等于2049年!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } } if (!string.IsNullOrEmpty(p_excel.订单截至日期)) { DateTime year = DateTime.Parse(p_excel.订单截至日期); if (year.Year > 2049) { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】的订单截止日期必须大于等于2049年!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } } string _ponumber = p_excel.供应商编号.ToUpper() + subsite.Substring(1, 1) + subsite.Substring(3, 1); if (p_excel.订单编号.ToUpper() != _ponumber.ToUpper()) { ErrorList.Add(string.Format("订单编号【{0}】行号【{1}】零件号【{2}】的订单编号不正确,请更换订单编号!", p_excel.订单编号, p_excel.行号, p_excel.零件号)); } int _polinr = Int32.Parse(p_excel.行号); var _partlist = db.TB_PO_DETAIL.Where(p => p.PoBillNum == p_excel.订单编号 && p.PartCode == p_excel.零件号 && p.PoLine != _polinr).ToList(); if (_partlist.Count > 0) { ErrorList.Add(string.Format("订单编号【{0}】零件号【{1}】已经存在(系统:行号-【{2}】),请更换零件号!", p_excel.订单编号, p_excel.零件号, _partlist[0].PoLine)); } int linecount = db.TB_PO_DETAIL.Count(p => p.PoBillNum == p_excel.订单编号 && p.PoLine == _polinr && p.PartCode != p_excel.零件号); if (linecount > 0) { ErrorList.Add(string.Format("订单编号【{0}】行号【{1}】已经存在,请更换行号!", p_excel.订单编号, p_excel.行号)); } var checkcount = db.TB_PRICE.Where(p => p.PartCode == p_excel.零件号 && p.Site == site && p.VendId == p_excel.供应商编号 && p.StartTime <= DateTime.Now && DateTime.Now <= p.EndTime).ToList(); if (checkcount.Count == 0) { ErrorList.Add(string.Format("零件名称【{0}】供应编码【{1}】价格表没有维护信息!", p_excel.零件号, p_excel.供应商编号)); } else { p_excel.单价 = checkcount[0].Amt.ToString(); p_excel.单位 = checkcount[0].Unit; p_excel.币种 = checkcount[0].Curr; } if (p_excel.数量 != "0") { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】的要货数量应该为零!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } if (DateTime.TryParse(p_excel.订单创建时间, out _d) && DateTime.TryParse(p_excel.订单创建时间, out _d)) { if (DateTime.Parse(p_excel.要求到货日期) < DateTime.Parse(p_excel.订单创建时间)) { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】要求到货日期不能小于订单创建时间日期!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } } else { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】的订单创建日期或要求到货日期要求为文本格式!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } if (!Regex.IsMatch(p_excel.税率, "^[0-9]{1,2}$")) { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】税率最大应为2位整数!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } if (!string.IsNullOrEmpty(p_excel.订单类型)) { if (p_excel.订单类型.ToUpper() == "S") { if (string.IsNullOrEmpty(p_excel.加工单号) || !Regex.IsMatch(p_excel.加工单号, "^[0-9]{1,8}$")) { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】加工单最大8位整数!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } if (string.IsNullOrEmpty(p_excel.工序) || !Regex.IsMatch(p_excel.工序, "^[0-9]{1,6}$")) { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】工序最大6位整数!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } } else { ErrorList.Add(string.Format("{0}订单类型必须填写为S为转包订单,不填写为正常订单", p_excel.订单编号)); } //注释结束 } if (!string.IsNullOrEmpty(p_excel.库位) && p_excel.库位.Length > 8) { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】库位最大8位字符!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } if (!string.IsNullOrEmpty(p_excel.固定天数) && !Regex.IsMatch(p_excel.固定天数, "^[0-9]{1,4}$")) { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】固定天数最大4位整数!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } if (!string.IsNullOrEmpty(p_excel.日程天数) && !Regex.IsMatch(p_excel.日程天数, "^[0-9]{1,3}$")) { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】日程天数最大3位整数!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } if (!string.IsNullOrEmpty(p_excel.日程周数) && !Regex.IsMatch(p_excel.日程周数, "^[0-9]{1,3}$")) { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】日程周数最大3位整数!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } if (!string.IsNullOrEmpty(p_excel.日程月数) && !Regex.IsMatch(p_excel.日程月数, "^[0-9]{1,3}$")) { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】日程月数最大3位整数!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } if (!string.IsNullOrEmpty(p_excel.发货样式) && p_excel.发货样式.Length > 2) { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】发货样式最大2位字符!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } if (!string.IsNullOrEmpty(p_excel.发货时间样式) && p_excel.发货时间样式.Length > 2) { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】发货时间样式最大2位字符!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } if (!string.IsNullOrEmpty(p_excel.运输周期) && !Regex.IsMatch(p_excel.运输周期, "^[0-9]{1,3}$")) { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】运输周期最大3位整数!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } if (!string.IsNullOrEmpty(p_excel.库位) && p_excel.库位.Length > 8) { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】库位最大8位字符!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } } } #endregion #region 离散单验证 if (p_modtype == BillModType.Non_Contract) { if (/*string.IsNullOrEmpty(p_excel.订单编号) ||string.IsNullOrEmpty(p_excel.行号) ||*/ string.IsNullOrEmpty(p_excel.订单截至日期) || string.IsNullOrEmpty(p_excel.要求到货日期) || string.IsNullOrEmpty(p_excel.零件号) || string.IsNullOrEmpty(p_excel.数量) || string.IsNullOrEmpty(p_excel.订单创建时间)/* || string.IsNullOrEmpty(p_excel.税率)*/) { ErrorList.Add(string.Format("分组【{1}】零件名称【{0}】有填写为空!", p_excel.零件号, p_excel.订单编号)); } else { var ls = db.TA_VENDER.SingleOrDefault(p => p.VendId == p_excel.供应商编号); if (ls == null) { ErrorList.Add(string.Format("订单编号【{1}】零件名称【{0}】的供应商编号不存在", p_excel.零件号, p_excel.订单编号)); } decimal a = decimal.Parse(p_excel.数量); if (a <= 0) { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】的数量不能小于等于0", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } if (!string.IsNullOrEmpty(p_excel.零件截至日期)) { DateTime year = DateTime.Parse(p_excel.零件截至日期); if (year.Year > 2049) { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】的零件截止日期必须大于等于2049年!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } } if (!string.IsNullOrEmpty(p_excel.订单截至日期)) { DateTime year = DateTime.Parse(p_excel.订单截至日期); if (year.Year > 2049) { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】的订单截止日期必须大于等于2049年!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } } //var checkcount = db.TB_PRICE.Where(p => p.PartCode == p_excel.零件号 && p.Site == site&& p.VendId == p_excel.供应商编号 && p.StartTime <= DateTime.Now && DateTime.Now <= p.EndTime).ToList(); //if (checkcount.Count == 0) //{ // ErrorList.Add(string.Format("零件名称【{0}】供应编码【{1}】价格表没有维护信息!", p_excel.零件号, p_excel.供应商编号)); //} //else //{ // p_excel.单价 = checkcount[0].Amt.ToString(); // p_excel.单位 = checkcount[0].Unit; // p_excel.币种 = checkcount[0].Curr; //} //if (!Regex.IsMatch(p_excel.税率, "^[0-9]{1,2}$")) //{ // ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】税率最大2位整数!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); //} if (DateTime.TryParse(p_excel.订单创建时间, out _d) && DateTime.TryParse(p_excel.订单创建时间, out _d)) { if (DateTime.Parse(p_excel.要求到货日期) < DateTime.Parse(p_excel.订单创建时间)) { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】要求到货日期不能小于订单创建时间日期!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } } else { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】的订单创建日期或要求到货日期要求为文本格式!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } if (!string.IsNullOrEmpty(p_excel.订单类型)) { if (p_excel.订单类型.ToUpper() != "S" && p_excel.订单类型.ToUpper() != "M") { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】的订单类型只能为M或S!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } //注释结束 if (p_excel.订单类型.ToUpper() == "S") { if (string.IsNullOrEmpty(p_excel.加工单号) || !Regex.IsMatch(p_excel.加工单号, "^[0-9]{1,8}$")) { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】加工单最大8位整数!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } if (string.IsNullOrEmpty(p_excel.工序) || !Regex.IsMatch(p_excel.工序, "^[0-9]{1,6}$")) { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】工序最大6位整数!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } } } if (!string.IsNullOrEmpty(p_excel.库位) && p_excel.库位.Length > 8) { ErrorList.Add(string.Format("订单编号【{2}】零件名称【{0}】供应编码【{1}】库位最大8位字符!", p_excel.零件号, p_excel.供应商编号, p_excel.订单编号)); } } } #endregion return ErrorList; } private static List CheckExcelMode(ScpEntities db, SCP_PO_DETAIL_EXPORT_MODEL p_excel) { List ErrorList = new List(); if (!string.IsNullOrEmpty(p_excel.订单编号)) { int count = db.TB_PO.Count(p => p.PoBillNum == p_excel.订单编号); if (count == 0) { ErrorList.Add(string.Format("订单编号{0}不存在!", p_excel.订单编号)); } } else { ErrorList.Add(string.Format("订单编号为空!")); } decimal _result = 0; if (!decimal.TryParse(p_excel.订单数, out _result)) { ErrorList.Add(string.Format("订单编号{0}零件编号{1}数量填写有问题", p_excel.订单编号, p_excel.零件编码)); } var _count = db.TB_PO_DETAIL.Count(p => p.PoBillNum == p_excel.订单编号 && p.PartCode == p_excel.零件编码 && p.PoLine.ToString() == p_excel.行号); if ( string.IsNullOrEmpty(p_excel.订单编号) || string.IsNullOrEmpty(p_excel.行号) || string.IsNullOrEmpty(p_excel.订货日期) || string.IsNullOrEmpty(p_excel.到货日期) || string.IsNullOrEmpty(p_excel.零件编码) || string.IsNullOrEmpty(p_excel.零件名) || string.IsNullOrEmpty(p_excel.域名) || string.IsNullOrEmpty(p_excel.站点) || string.IsNullOrEmpty(p_excel.计划员) || string.IsNullOrEmpty(p_excel.订单数) || string.IsNullOrEmpty(p_excel.单位)) { ErrorList.Add(string.Format("分组【{1}】零件名称【{0}】有填写为空!", p_excel.零件名, p_excel.订单编号)); } //else //{ // if (!Regex.IsMatch(p_excel.计划员电话, @"^1[1,9]\d{9}$")) // { // ErrorList.Add(string.Format("订单编号{0}零件编号{1}计划员手机号填写有问题", p_excel.订单编号, p_excel.零件编码)); // } //} if (_count == 0) { ErrorList.Add(string.Format("分组【{2}】零件名称【{0}】行号【{1}】不存在!", p_excel.零件名, p_excel.行号, p_excel.订单编号)); } return ErrorList; } /// /// 供应商零件导入验证 /// /// /// /// private static List CheckExcelMode_VenderPart(ScpEntities db, SCP_VENDER_PART_EXPORT p_excel, string site) { List ErrorList = new List(); if (!string.IsNullOrEmpty(p_excel.供应商代码)) { int count = db.TA_VENDER.Count(p => p.VendId == p_excel.供应商代码 && p.Site == site); if (count <= 0) { ErrorList.Add(string.Format("供应商{0}不存在!", p_excel.供应商代码)); } } else { ErrorList.Add(string.Format("供应商代码为空!")); } if (!string.IsNullOrEmpty(p_excel.零件号)) { int count = db.TA_PART.Count(p => p.PartCode == p_excel.零件号 && p.Site == site); if (count <= 0) { ErrorList.Add(string.Format("零件编号{0}不存在!", p_excel.零件号)); } } else { ErrorList.Add(string.Format("零件号为空!")); } if ( string.IsNullOrEmpty(p_excel.供应商代码) || string.IsNullOrEmpty(p_excel.零件号) || string.IsNullOrEmpty(p_excel.标包数) || string.IsNullOrEmpty(p_excel.小包装数) || string.IsNullOrEmpty(p_excel.托盘包装数)) { ErrorList.Add(string.Format("供应商代码【{0}】零件编号【{1}】有填写为空!", p_excel.供应商代码, p_excel.零件号)); } return ErrorList; } /// /// 供应商零件导入验证 /// /// /// /// private static List CheckExcelMode_VenderPart1(ScpEntities db, SCP_VENDER_PART_EXPORT p_excel, string site) { List ErrorList = new List(); //if (!string.IsNullOrEmpty(p_excel.零件号)) //{ // //int count = db.TA_PART.Count(p => p.PartCode == p_excel.零件号); // //if (count <= 0) // //{ // // ErrorList.Add(string.Format("零件编号【{0}】不存在!", p_excel.零件号)); // //} // int count1 = db.TA_Appliance.Count(p => p.PartCode == p_excel.零件号 && p.Appliancenumber==p_excel.器具型号/*&&p.Model==p_excel.车型*/); // if (count1 > 0) // { // ErrorList.Add(string.Format("零件编号【{0}】已存在!", p_excel.零件号)); // } //} if ( string.IsNullOrEmpty(p_excel.零件号码)|| string.IsNullOrEmpty(p_excel.收货口)|| string.IsNullOrEmpty(p_excel.供应商代码)|| string.IsNullOrEmpty(p_excel.标包数) ) { ErrorList.Add(string.Format("零件号码【{0}】有填写为空!", p_excel.零件号码)); } return ErrorList; } /// /// 供应商零件导入验证 /// /// /// /// private static List CheckExcelMode_CousmterPart1(ScpEntities db, SCP_VENDER_PART_EXPORT p_excel, string site) { List ErrorList = new List(); if (!string.IsNullOrEmpty(p_excel.零件号)) { int count = db.TA_PART.Count(p => p.PartCode == p_excel.零件号); if (count <= 0) { ErrorList.Add(string.Format("零件号【{0}】不存在!", p_excel.零件号)); } } if ( string.IsNullOrEmpty(p_excel.零件号) || string.IsNullOrEmpty(p_excel.客户零件号) ) { ErrorList.Add(string.Format("零件号【{0}】有填写为空!", p_excel.零件号)); } return ErrorList; } /// /// 本特勒收货信息导入验证 /// /// /// /// private static List CheckExcelMode_Receiving(ScpEntities db, SCP_VENDER_PART_EXPORT p_excel, string site) { List ErrorList = new List(); if(p_excel.班次!="白班"&& p_excel.班次 != "夜班") { ErrorList.Add(string.Format("班次【{0}】填写不对,班次只能为白班或者夜班!", p_excel.班次)); } if ( string.IsNullOrEmpty(p_excel.班次) || string.IsNullOrEmpty(p_excel.收货人) || string.IsNullOrEmpty(p_excel.收货人电话) ) { ErrorList.Add(string.Format("班次【{0}】有填写为空!", p_excel.班次)); } return ErrorList; } private static List CheckExcelMode_PurchasingGroup(ScpEntities db, SCP_VENDER_PART_EXPORT p_excel, string site) { List ErrorList = new List(); if ( string.IsNullOrEmpty(p_excel.采购组) || string.IsNullOrEmpty(p_excel.中文名称) || string.IsNullOrEmpty(p_excel.描述) ) { ErrorList.Add(string.Format("采购组【{0}】有填写为空!", p_excel.采购组)); } return ErrorList; } private static List CheckExcelMode_Sort(ScpEntities db, SCP_VENDER_EXPORT p_excel, string site) { List ErrorList = new List(); if ( string.IsNullOrEmpty(p_excel.品番) || string.IsNullOrEmpty(p_excel.Code39条码) || string.IsNullOrEmpty(p_excel.条码内容) ) { ErrorList.Add(string.Format("品番【{0}】有填写为空!", p_excel.品番)); } return ErrorList; } private static List CheckExcelMode_Box(ScpEntities db, SCP_VENDER_PART_EXPORT p_excel, string site) { List ErrorList = new List(); if ( string.IsNullOrEmpty(p_excel.箱种) ) { ErrorList.Add(string.Format("箱种【{0}】有填写为空!", p_excel.箱种)); } return ErrorList; } private static List CheckExcel_Model(ScpEntities db, SCP_VENDER_EXPORT p_excel, string site) { List ErrorList = new List(); var ModelCount = db.TA_CarModel.Count(p=>p.Model==p_excel.车型); if (ModelCount > 0) { ErrorList.Add(string.Format("车型【{0}】已经存在,请不要重复导入!", p_excel.车型)); } return ErrorList; } /// /// 供应商导入验证 /// /// /// /// private static List CheckExcelMode_Vender(ScpEntities db, SCP_VENDER_EXPORT p_excel, string site) { List ErrorList = new List(); if ( string.IsNullOrEmpty(p_excel.供应商编号) || string.IsNullOrEmpty(p_excel.供应商名称)) { ErrorList.Add(string.Format("供应商编号【{0}】有填写为空!", p_excel.供应商编号)); } return ErrorList; } /// /// 价格导入验证 /// /// /// /// /// private static List CheckExcelMode_Price(ScpEntities db, SCP_PRICE_EXPORT p_excel, string site) { List ErrorList = new List(); if (!string.IsNullOrEmpty(p_excel.供应商编号)) { int count = db.TA_VENDER.Count(p => p.VendId == p_excel.供应商编号 && p.Site == site); if (count <= 0) { ErrorList.Add(string.Format("供应商{0}不存在!", p_excel.供应商编号)); } } else { ErrorList.Add(string.Format("供应商代码为空!")); } if (!string.IsNullOrEmpty(p_excel.零件编码)) { int count = db.TA_PART.Count(p => p.PartCode == p_excel.零件编码 && p.Site == site); if (count <= 0) { ErrorList.Add(string.Format("供应商{0}不存在!", p_excel.零件编码)); } } else { ErrorList.Add(string.Format("供应商代码为空!")); } if ( string.IsNullOrEmpty(p_excel.供应商编号) || string.IsNullOrEmpty(p_excel.结束时间) || string.IsNullOrEmpty(p_excel.开始时间) || string.IsNullOrEmpty(p_excel.零件编码) || string.IsNullOrEmpty(p_excel.币种) || string.IsNullOrEmpty(p_excel.单位) || string.IsNullOrEmpty(p_excel.价格)) { ErrorList.Add(string.Format("零件编号【{0}】有填写为空!", p_excel.供应商编号)); } return ErrorList; } /// /// 零件导入验证 /// /// /// /// private static List CheckExcelMode_Part(ScpEntities db, SCP_PART_EXPORT p_excel, string site) { List ErrorList = new List(); //if (!string.IsNullOrEmpty(p_excel.零件编号)) //{ // int count = db.TA_PART.Count(p => p.PartCode == p_excel.零件编号&&p.Site== site); // if (count > 0) // { // ErrorList.Add(string.Format("零件编号{0}已经存在!", p_excel.零件编号)); // } //} //else //{ // ErrorList.Add(string.Format("零件编号为空!")); //} if ( string.IsNullOrEmpty(p_excel.零件编号) || string.IsNullOrEmpty(p_excel.单位) || string.IsNullOrEmpty(p_excel.状态) || string.IsNullOrEmpty(p_excel.零件名称) || string.IsNullOrEmpty(p_excel.项目编号)) { ErrorList.Add(string.Format("零件编号{0}有填写为空!", p_excel.零件编号)); } return ErrorList; } /// /// 订单导入检查 /// /// /// /// private static List CheckExcelMode_Po(ScpEntities db, SCP_PO_EXPORT_IMPORT_MODEL p_excel) { List ErrorList = new List(); if (!string.IsNullOrEmpty(p_excel.零件号)) { var _count = db.TA_Appliance.Count(p => p.PartNumber == p_excel.零件号&&p.VendID==p_excel.供应商编号); if (_count == 0) { ErrorList.Add(string.Format("零件号码{0}与供应商{1}没有对应的基础信息!", p_excel.零件号,p_excel.供应商编号)); } } var _count1 = db.TA_PART.Count(p => p.PartCode == p_excel.物料号码); if (_count1 == 0) { ErrorList.Add(string.Format("物料号码{0}不存在!", p_excel.物料号码)); } if (_count1 > 0) { if (!string.IsNullOrEmpty(p_excel.组件物料号)) { ErrorList.Add(string.Format("普通采购订单不涉及组件物料号,请到委外采购订单菜单导入")); } var _part = db.TA_PART.SingleOrDefault(p => p.PartCode == p_excel.物料号码); if (_part.PartCode.ToString()!= p_excel.物料号码.ToString()) { ErrorList.Add(string.Format("物料号码{0}填写不正确请注意大小写!", p_excel.物料号码)); } var _Unit = db.TA_PART.Count(p => p.PartCode == p_excel.物料号码&&p.Unit==p_excel.单位); if (_Unit==0) { ErrorList.Add(string.Format("物料号码{0}单位填写不正确!", p_excel.物料号码)); } if(_part.Unit.ToString()!= p_excel.单位.ToString()) { ErrorList.Add(string.Format("物料号码{0}单位填写不正确,请注意大小写!", p_excel.物料号码)); } var _checkpart = db.TA_PART.FirstOrDefault(p => p.PartCode == p_excel.物料号码); if (decimal.Parse(_checkpart.Remark) <= 0) { ErrorList.Add(string.Format("物料号码{0}没有价格!", p_excel.物料号码)); } } var _count2 = db.TA_VENDER.Count(p => p.VendId == p_excel.供应商编号); if (_count2 == 0) { ErrorList.Add(string.Format("供应商{0}不存在!", p_excel.供应商编号)); } if (_count2 > 0) { var _countvend = db.TA_VENDER.SingleOrDefault(p => p.VendId == p_excel.供应商编号); if (_countvend.VendId != p_excel.供应商编号) { ErrorList.Add(string.Format("供应商编号{0}不正确!", p_excel.供应商编号)); } } var _count7 = db.TA_PurchasGroup.Count(p => p.PurchasingGroup == p_excel.采购组 && p.ChineseName == p_excel.采购员); if (_count7 == 0) { ErrorList.Add(string.Format("采购组{0}不存在!", p_excel.采购组)); } if (_count7 > 0) { var _count9 = db.TA_PurchasGroup.SingleOrDefault(p => p.PurchasingGroup == p_excel.采购组 && p.ChineseName == p_excel.采购员 && p.ChineseName == p_excel.采购员); if (_count9.PurchasingGroup.ToString() != p_excel.采购组.ToString()) { ErrorList.Add(string.Format("采购组{0}填写错误,请注意大小写!", p_excel.采购组)); } } var _count8 = db.TA_StorageLocation.Count(p => p.StLocation == p_excel.存储地点); if (_count8 == 0) { ErrorList.Add(string.Format("存储地点{0}不存在!", p_excel.存储地点)); } if (_count8 > 0) { var _count10 = db.TA_StorageLocation.SingleOrDefault(p => p.StLocation == p_excel.存储地点); if (_count10.StLocation.ToString() != p_excel.存储地点.ToString()) { ErrorList.Add(string.Format("存储地点{0}填写错误,请注意大小写!", p_excel.存储地点)); } } if ( string.IsNullOrEmpty(p_excel.供应商编号) || string.IsNullOrEmpty(p_excel.物料号码) || string.IsNullOrEmpty(p_excel.采购员) || string.IsNullOrEmpty(p_excel.采购组) || string.IsNullOrEmpty(p_excel.采购员电话) || string.IsNullOrEmpty(p_excel.存储地点) || string.IsNullOrEmpty(p_excel.单位) || string.IsNullOrEmpty(p_excel.订单创建时间)) { ErrorList.Add(string.Format("分组【{0}】物料号码有填写为空!", p_excel.物料号码)); } return ErrorList; } /// /// 期货订单导入检查 /// /// /// /// private static List CheckExcelMode_QH_Po(ScpEntities db, SCP_PO_EXPORT_IMPORT_MODEL p_excel) { List ErrorList = new List(); if (!string.IsNullOrEmpty(p_excel.零件号)) { var _count = db.TA_Appliance.Count(p => p.PartNumber == p_excel.零件号 && p.VendID == p_excel.供应商编号); if (_count == 0) { ErrorList.Add(string.Format("零件号码{0}与供应商{1}没有对应的基础信息!", p_excel.零件号, p_excel.供应商编号)); } } var _count1 = db.TA_PART.Count(p => p.PartCode == p_excel.物料号码); if (_count1 == 0) { ErrorList.Add(string.Format("物料号码{0}不存在!", p_excel.物料号码)); } if (!string.IsNullOrEmpty(p_excel.期货订单)) { if (p_excel.期货订单 != "Y") { ErrorList.Add(string.Format("物料号码{0}期货订单必须填Y!", p_excel.物料号码)); } } if (_count1 > 0) { var _part = db.TA_PART.SingleOrDefault(p => p.PartCode == p_excel.物料号码); if (_part.PartCode.ToString() != p_excel.物料号码.ToString()) { ErrorList.Add(string.Format("物料号码{0}填写不正确请注意大小写!", p_excel.物料号码)); } var _Unit = db.TA_PART.Count(p => p.PartCode == p_excel.物料号码 && p.Unit == p_excel.单位); if (_Unit == 0) { ErrorList.Add(string.Format("物料号码{0}单位填写不正确!", p_excel.物料号码)); } if (_part.Unit.ToString() != p_excel.单位.ToString()) { ErrorList.Add(string.Format("物料号码{0}单位填写不正确,请注意大小写!", p_excel.物料号码)); } var _checkpart = db.TA_PART.FirstOrDefault(p => p.PartCode == p_excel.物料号码); if (decimal.Parse(_checkpart.Remark) <= 0) { ErrorList.Add(string.Format("物料号码{0}没有价格!", p_excel.物料号码)); } } var _count2 = db.TA_VENDER.Count(p => p.VendId == p_excel.供应商编号); if (_count2 == 0) { ErrorList.Add(string.Format("供应商{0}不存在!", p_excel.供应商编号)); } if (_count2 > 0) { var _countvend = db.TA_VENDER.SingleOrDefault(p => p.VendId == p_excel.供应商编号); if (_countvend.VendId != p_excel.供应商编号) { ErrorList.Add(string.Format("供应商编号{0}不正确!", p_excel.供应商编号)); } } var maxpocount = db.TB_MAXPO_DETAIL.Count(p=>p.PartCode==p_excel.物料号码&&p.VendId == p_excel.供应商编号); if (maxpocount ==0) { ErrorList.Add(string.Format("物料号码{0}供应商编号{1}没有对应的大订单!",p_excel.物料号码, p_excel.供应商编号)); } var _count7 = db.TA_PurchasGroup.Count(p => p.PurchasingGroup == p_excel.采购组 && p.ChineseName == p_excel.采购员); if (_count7 == 0) { ErrorList.Add(string.Format("采购组{0}不存在!", p_excel.采购组)); } if (_count7 > 0) { var _count9 = db.TA_PurchasGroup.SingleOrDefault(p => p.PurchasingGroup == p_excel.采购组 && p.ChineseName == p_excel.采购员 && p.ChineseName == p_excel.采购员); if (_count9.PurchasingGroup.ToString() != p_excel.采购组.ToString()) { ErrorList.Add(string.Format("采购组{0}填写错误,请注意大小写!", p_excel.采购组)); } } var _count8 = db.TA_StorageLocation.Count(p => p.StLocation == p_excel.存储地点); if (_count8 == 0) { ErrorList.Add(string.Format("存储地点{0}不存在!", p_excel.存储地点)); } if (_count8 > 0) { var _count10 = db.TA_StorageLocation.SingleOrDefault(p => p.StLocation == p_excel.存储地点); if (_count10.StLocation.ToString() != p_excel.存储地点.ToString()) { ErrorList.Add(string.Format("存储地点{0}填写错误,请注意大小写!", p_excel.存储地点)); } } if ( string.IsNullOrEmpty(p_excel.供应商编号) || string.IsNullOrEmpty(p_excel.物料号码) || string.IsNullOrEmpty(p_excel.采购员) || string.IsNullOrEmpty(p_excel.采购组) || string.IsNullOrEmpty(p_excel.采购员电话) || string.IsNullOrEmpty(p_excel.存储地点) || string.IsNullOrEmpty(p_excel.单位) || string.IsNullOrEmpty(p_excel.期货订单) || string.IsNullOrEmpty(p_excel.订单创建时间)) { ErrorList.Add(string.Format("分组【{0}】物料号码有填写为空!", p_excel.物料号码)); } return ErrorList; } /// /// 富维订单导入检查 /// /// /// /// private static List CheckExcelMode_Po1(ScpEntities db, SCP_PO_EXPORT_IMPORT_MODEL p_excel) { List ErrorList = new List(); var _count = db.TA_Appliance.Count(p => p.PartNumber == p_excel.零件号 && p.VendID == p_excel.供应商编号); if (_count == 0) { ErrorList.Add(string.Format("零件号码{0}与供应商{1}没有对应的基础信息!", p_excel.零件号, p_excel.供应商编号)); } BomList1.JsonService bomVersionRe = new BomList1.JsonService(); var _ReturnRelust = bomVersionRe.GetBomVersion(p_excel.物料号码, p_excel.组件物料号); if (p_excel.BOM版本 != _ReturnRelust) { ErrorList.Add(string.Format("物料号码{0}的BOM版本号填写错误", p_excel.物料号码)); } var price = db.TB_NetPrice.Count(p => p.PartCode == p_excel.物料号码 && p.VendId == p_excel.供应商编号 && p.EndTime > DateTime.Now); if (price == 0) { ErrorList.Add(string.Format("物料号码{0}不存在净价", p_excel.物料号码)); } var _count1 = db.TA_PART.Count(p => p.PartCode == p_excel.物料号码); if (_count1 == 0) { ErrorList.Add(string.Format("物料号码{0}不存在!", p_excel.物料号码)); } if (_count1 > 0) { var _part = db.TA_PART.SingleOrDefault(p => p.PartCode == p_excel.物料号码); if (_part.PartCode.ToString() != p_excel.物料号码.ToString()) { ErrorList.Add(string.Format("物料号码{0}填写不正确请注意大小写和空格!", p_excel.物料号码)); } if (_part.Unit.ToString() != p_excel.单位.ToString()) { ErrorList.Add(string.Format("物料号码{0}单位填写不正确,请注意大小写!", p_excel.物料号码)); } var _part5 = db.TA_PART.SingleOrDefault(p => p.PartCode == p_excel.组件物料号); if (_part5.PartCode.ToString() != p_excel.组件物料号.ToString()) { ErrorList.Add(string.Format("组件物料号码{0}填写不正确请注意大小写和空格!", p_excel.组件物料号)); } if (_part5.Unit.ToString() != p_excel.组件计量单位.ToString()) { ErrorList.Add(string.Format("组件物料号{0}计量单位填写不正确,请注意大小写!", p_excel.组件物料号)); } var _Unit = db.TA_PART.Count(p => p.PartCode == p_excel.物料号码 && p.Unit == p_excel.单位); if (_Unit == 0) { ErrorList.Add(string.Format("物料号码{0}单位填写不正确!", p_excel.物料号码)); } var _Unit1 = db.TA_PART.Count(p => p.PartCode == p_excel.组件物料号 && p.Unit == p_excel.组件计量单位); if (_Unit1 == 0) { ErrorList.Add(string.Format("组件物料号{0}组件计量单位填写不正确!", p_excel.组件物料号)); } if (decimal.Parse(_part.Remark) <= 0) { ErrorList.Add(string.Format("物料号码没有标准价格!", p_excel.物料号码)); } } var _count3 = db.TA_PART.Count(p => p.PartCode == p_excel.组件物料号); if (_count3 == 0) { ErrorList.Add(string.Format("组件物料号{0}不存在!", p_excel.组件物料号)); } var _count2 = db.TA_VENDER.Count(p => p.VendId == p_excel.供应商编号); if (_count2 == 0) { ErrorList.Add(string.Format("供应商{0}不存在!", p_excel.供应商编号)); } if (_count2 > 0) { var _countvend = db.TA_VENDER.SingleOrDefault(p => p.VendId == p_excel.供应商编号); if (_countvend.VendId != p_excel.供应商编号) { ErrorList.Add(string.Format("供应商编号{0}不正确!", p_excel.供应商编号)); } } var _count7 = db.TA_PurchasGroup.Count(p => p.PurchasingGroup == p_excel.采购组 && p.ChineseName == p_excel.采购员); if (_count7 == 0) { ErrorList.Add(string.Format("采购组{0}不存在!", p_excel.采购组)); } if (_count7 > 0) { var _count9 = db.TA_PurchasGroup.SingleOrDefault(p => p.PurchasingGroup == p_excel.采购组 && p.ChineseName == p_excel.采购员 && p.ChineseName == p_excel.采购员); if(_count9.PurchasingGroup.ToString() != p_excel.采购组.ToString()) { ErrorList.Add(string.Format("采购组{0}填写错误,请注意大小写!", p_excel.采购组)); } } var _count8 = db.TA_StorageLocation.Count(p => p.StLocation == p_excel.存储地点); if (_count8 == 0) { ErrorList.Add(string.Format("存储地点{0}不存在!", p_excel.存储地点)); } if (_count8 > 0) { var _count10= db.TA_StorageLocation.SingleOrDefault(p => p.StLocation == p_excel.存储地点); if (_count10.StLocation.ToString()!= p_excel.存储地点.ToString()) { ErrorList.Add(string.Format("存储地点{0}填写错误,请注意大小写!", p_excel.存储地点)); } } if ( string.IsNullOrEmpty(p_excel.订单创建时间) || //string.IsNullOrEmpty(p_excel.零件号) || string.IsNullOrEmpty(p_excel.采购员) || string.IsNullOrEmpty(p_excel.采购组) || string.IsNullOrEmpty(p_excel.采购员电话) || string.IsNullOrEmpty(p_excel.单位) || string.IsNullOrEmpty(p_excel.组件计量单位) || string.IsNullOrEmpty(p_excel.组件物料号) || string.IsNullOrEmpty(p_excel.存储地点)|| string.IsNullOrEmpty(p_excel.组件数量)) { ErrorList.Add(string.Format("零件名称{0}有填写为空!", p_excel.零件号)); } return ErrorList; } /// /// 本特勒订单导入检查 /// /// /// /// private static List CheckExcelMode_BTL(ScpEntities db, SCP_PO_EXPORT_IMPORT_MODEL p_excel) { List ErrorList = new List(); var _count = db.TA_Appliance.Count(p => p.PartNumber == p_excel.零件号 && p.VendID == p_excel.供应商编号); if (_count == 0) { ErrorList.Add(string.Format("零件号码{0}与供应商{1}没有对应的基础信息!", p_excel.零件号, p_excel.供应商编号)); } BomVersion1.JsonService bomVersionRe = new BomVersion1.JsonService(); var _ReturnRelust = bomVersionRe.GetBomVersion(p_excel.物料号码, p_excel.组件物料号); if (p_excel.BOM版本 != _ReturnRelust) { ErrorList.Add(string.Format("物料号码{0}的BOM版本号填写错误", p_excel.物料号码)); } var price = db.TB_NetPrice.Count(p => p.PartCode == p_excel.物料号码 && p.VendId == p_excel.供应商编号 && p.EndTime > DateTime.Now); if (price == 0) { ErrorList.Add(string.Format("物料号码{0}不存在净价", p_excel.物料号码)); } var _count1 = db.TA_PART.Count(p => p.PartCode == p_excel.物料号码); if (_count1 == 0) { ErrorList.Add(string.Format("物料号码{0}不存在!", p_excel.物料号码)); } if (_count1 > 0) { var _part = db.TA_PART.SingleOrDefault(p => p.PartCode == p_excel.物料号码); if (_part.PartCode.ToString() != p_excel.物料号码.ToString()) { ErrorList.Add(string.Format("物料号码{0}填写不正确请注意大小写和空格!", p_excel.物料号码)); } if (_part.Unit.ToString() != p_excel.单位.ToString()) { ErrorList.Add(string.Format("物料号码{0}单位填写不正确,请注意大小写!", p_excel.物料号码)); } var _zjpart = db.TA_PART.Count(p => p.PartCode == p_excel.组件物料号); { if (_zjpart == 0) { ErrorList.Add(string.Format("组件物料号码{0}不存在!", p_excel.物料号码)); } else { var _part5 = db.TA_PART.SingleOrDefault(p => p.PartCode == p_excel.组件物料号); if (_part5.PartCode.ToString() != p_excel.组件物料号.ToString()) { ErrorList.Add(string.Format("组件物料号码{0}填写不正确请注意大小写和空格!", p_excel.组件物料号)); } if (_part5.Unit.ToString() != p_excel.组件计量单位.ToString()) { ErrorList.Add(string.Format("组件物料号{0}计量单位填写不正确,请注意大小写!", p_excel.组件物料号)); } } } var _Unit = db.TA_PART.Count(p => p.PartCode == p_excel.物料号码 && p.Unit == p_excel.单位); if (_Unit == 0) { ErrorList.Add(string.Format("物料号码{0}单位填写不正确!", p_excel.物料号码)); } var _Unit1 = db.TA_PART.Count(p => p.PartCode == p_excel.组件物料号 && p.Unit == p_excel.组件计量单位); if (_Unit1 == 0) { ErrorList.Add(string.Format("组件物料号{0}组件计量单位填写不正确!", p_excel.组件物料号)); } if (decimal.Parse(_part.Remark) <= 0) { ErrorList.Add(string.Format("物料号码没有标准价格!", p_excel.物料号码)); } } //var _count3 = db.TA_PART.Count(p => p.PartCode == p_excel.组件物料号); //if (_count3 == 0) //{ // ErrorList.Add(string.Format("组件物料号{0}不存在!", p_excel.组件物料号)); //} var _count2 = db.TA_VENDER.Count(p => p.VendId == p_excel.供应商编号); if (_count2 == 0) { ErrorList.Add(string.Format("供应商{0}不存在!", p_excel.供应商编号)); } if (_count2 > 0) { var _countvend = db.TA_VENDER.SingleOrDefault(p => p.VendId == p_excel.供应商编号); if (_countvend.VendId != p_excel.供应商编号) { ErrorList.Add(string.Format("供应商编号{0}不正确!", p_excel.供应商编号)); } } var _count7 = db.TA_PurchasGroup.Count(p => p.PurchasingGroup == p_excel.采购组 && p.ChineseName == p_excel.采购员); if (_count7 == 0) { ErrorList.Add(string.Format("采购组{0}不存在!", p_excel.采购组)); } if (_count7 > 0) { var _count9 = db.TA_PurchasGroup.SingleOrDefault(p => p.PurchasingGroup == p_excel.采购组 && p.ChineseName == p_excel.采购员 && p.ChineseName == p_excel.采购员); if (_count9.PurchasingGroup.ToString() != p_excel.采购组.ToString()) { ErrorList.Add(string.Format("采购组{0}填写错误,请注意大小写!", p_excel.采购组)); } } var _count8 = db.TA_StorageLocation.Count(p => p.StLocation == p_excel.存储地点); if (_count8 == 0) { ErrorList.Add(string.Format("存储地点{0}不存在!", p_excel.存储地点)); } if (_count8 > 0) { var _count10 = db.TA_StorageLocation.SingleOrDefault(p => p.StLocation == p_excel.存储地点); if (_count10.StLocation.ToString() != p_excel.存储地点.ToString()) { ErrorList.Add(string.Format("存储地点{0}填写错误,请注意大小写!", p_excel.存储地点)); } } if ( string.IsNullOrEmpty(p_excel.订单创建时间) || //string.IsNullOrEmpty(p_excel.零件号) || string.IsNullOrEmpty(p_excel.采购员) || string.IsNullOrEmpty(p_excel.采购组) || string.IsNullOrEmpty(p_excel.采购员电话) || string.IsNullOrEmpty(p_excel.单位) || string.IsNullOrEmpty(p_excel.组件计量单位) || string.IsNullOrEmpty(p_excel.组件物料号) || string.IsNullOrEmpty(p_excel.存储地点) || string.IsNullOrEmpty(p_excel.组件数量)) { ErrorList.Add(string.Format("零件名称{0}有填写为空!", p_excel.零件号)); } return ErrorList; } /// /// 富维多组件订单导入效验 /// /// /// /// private static List CheckExcelMode_Multicomponent(ScpEntities db, SCP_PO_EXPORT_IMPORT_MODEL p_excel,bool wmsweb) { List ErrorList = new List(); if (wmsweb == false) { BomList.JsonService bomVersionRe = new BomList.JsonService(); var _ReturnRelust = bomVersionRe.GetBomsByVer(p_excel.物料号码, p_excel.BOM版本); if (!_ReturnRelust.Contains("Qty")) { ErrorList.Add(string.Format("不存在物料号为{0},版本号为{1}的数据", p_excel.物料号码, p_excel.BOM版本)); } } else { BomList1.JsonService bomVersionRe = new BomList1.JsonService(); var _ReturnRelust = bomVersionRe.GetBomsByVer(p_excel.物料号码, p_excel.BOM版本); if (!_ReturnRelust.Contains("Qty")) { ErrorList.Add(string.Format("不存在物料号为{0},版本号为{1}的数据", p_excel.物料号码, p_excel.BOM版本)); } } var _count = db.TA_Appliance.Count(p => p.PartNumber == p_excel.零件号 && p.VendID == p_excel.供应商编号); if (_count == 0) { ErrorList.Add(string.Format("零件号码{0}与供应商{1}没有对应的基础信息!", p_excel.零件号, p_excel.供应商编号)); } //var price = db.TB_NetPrice.Count(p => p.PartCode == p_excel.物料号码 && p.VendId == p_excel.供应商编号 && p.EndTime > DateTime.Now); //if (price == 0) //{ // ErrorList.Add(string.Format("物料号码{0}不存在净价", p_excel.物料号码)); //} var _count1 = db.TA_PART.Count(p => p.PartCode == p_excel.物料号码); if (_count1 == 0) { ErrorList.Add(string.Format("物料号码{0}不存在!", p_excel.物料号码)); } if (_count1 > 0) { var _part = db.TA_PART.SingleOrDefault(p => p.PartCode == p_excel.物料号码); if (_part.PartCode.ToString() != p_excel.物料号码.ToString()) { ErrorList.Add(string.Format("物料号码{0}填写不正确请注意大小写和空格!", p_excel.物料号码)); } if (_part.Unit.ToString() != p_excel.单位.ToString()) { ErrorList.Add(string.Format("物料号码{0}单位填写不正确,请注意大小写!", p_excel.物料号码)); } var _Unit = db.TA_PART.Count(p => p.PartCode == p_excel.物料号码 && p.Unit == p_excel.单位); if (_Unit == 0) { ErrorList.Add(string.Format("物料号码{0}单位填写不正确!", p_excel.物料号码)); } if (decimal.Parse(_part.Remark) <= 0) { ErrorList.Add(string.Format("物料号码没有标准价格!", p_excel.物料号码)); } } var _count2 = db.TA_VENDER.Count(p => p.VendId == p_excel.供应商编号); if (_count2 == 0) { ErrorList.Add(string.Format("供应商{0}不存在!", p_excel.供应商编号)); } if (_count2 > 0) { var _countvend = db.TA_VENDER.SingleOrDefault(p => p.VendId == p_excel.供应商编号); if (_countvend.VendId != p_excel.供应商编号) { ErrorList.Add(string.Format("供应商编号{0}不正确!", p_excel.供应商编号)); } } var _count7 = db.TA_PurchasGroup.Count(p => p.PurchasingGroup == p_excel.采购组 && p.ChineseName == p_excel.采购员); if (_count7 == 0) { ErrorList.Add(string.Format("采购组{0}不存在!", p_excel.采购组)); } if (_count7 > 0) { var _count9 = db.TA_PurchasGroup.SingleOrDefault(p => p.PurchasingGroup == p_excel.采购组 && p.ChineseName == p_excel.采购员 && p.ChineseName == p_excel.采购员); if (_count9.PurchasingGroup.ToString() != p_excel.采购组.ToString()) { ErrorList.Add(string.Format("采购组{0}填写错误,请注意大小写!", p_excel.采购组)); } } var _count8 = db.TA_StorageLocation.Count(p => p.StLocation == p_excel.存储地点); if (_count8 == 0) { ErrorList.Add(string.Format("存储地点{0}不存在!", p_excel.存储地点)); } if (_count8 > 0) { var _count10 = db.TA_StorageLocation.SingleOrDefault(p => p.StLocation == p_excel.存储地点); if (_count10.StLocation.ToString() != p_excel.存储地点.ToString()) { ErrorList.Add(string.Format("存储地点{0}填写错误,请注意大小写!", p_excel.存储地点)); } } if ( string.IsNullOrEmpty(p_excel.订单创建时间) || string.IsNullOrEmpty(p_excel.零件号) || string.IsNullOrEmpty(p_excel.采购员) || string.IsNullOrEmpty(p_excel.采购组) || string.IsNullOrEmpty(p_excel.采购员电话) || string.IsNullOrEmpty(p_excel.单位) || string.IsNullOrEmpty(p_excel.存储地点)) { ErrorList.Add(string.Format("零件名称{0}有填写为空!", p_excel.零件号)); } return ErrorList; } /// /// 富维冲压件大订单效验 /// /// /// /// private static List CheckExcelMode_MAXPO(ScpEntities db, SCP_MAXPO_EXPORT p_excel) { List ErrorList = new List(); var _count1 = db.TA_PART.Count(p => p.PartCode == p_excel.零件号); if (_count1 == 0) { ErrorList.Add(string.Format("零件号{0}不存在!", p_excel.零件号)); } var _count = db.TA_PART.Count(p => p.PartCode == p_excel.原材物料号); if (_count == 0) { ErrorList.Add(string.Format("原材物料号{0}不存在!", p_excel.原材物料号)); } var _count2 = db.TA_VENDER.Count(p => p.VendId == p_excel.供应商编号); if (_count2 == 0) { ErrorList.Add(string.Format("供应商{0}不存在!", p_excel.供应商编号)); } if (_count2 > 0) { var _countvend = db.TA_VENDER.FirstOrDefault(p => p.VendId == p_excel.供应商编号); if (_countvend.VendId != p_excel.供应商编号) { ErrorList.Add(string.Format("供应商编号{0}不正确!", p_excel.供应商编号)); } } BomList1.JsonService bomVersionRe = new BomList1.JsonService(); var _ReturnRelust = bomVersionRe.GetBom(p_excel.零件号, p_excel.原材物料号); if (_ReturnRelust == "[null]") { ErrorList.Add(string.Format("零件号{0}与原材物料号{1}不存在BOM关系!", p_excel.零件号, p_excel.原材物料号)); } if ( string.IsNullOrEmpty(p_excel.零件号) || string.IsNullOrEmpty(p_excel.原材物料号) || string.IsNullOrEmpty(p_excel.供应商编号)) { ErrorList.Add(string.Format("零件名称{0}有填写为空!", p_excel.零件号)); } return ErrorList; } /// /// 北京安通林 /// /// /// /// /// /// /// public static ResultObject EXCEL_PO_TO_ASK_MOD(List p_order_list, string p_creator, string p_buyer, DateTime p_time, BillModType p_modtype, bool IsAutoPublish = false) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { p_order_list.ForEach(p => { if (string.IsNullOrEmpty(p.订单数)) { p.订单数 = "0"; } }); int number = 1; List lineError = new List(); List ErrorList = new List(); var _lst = p_order_list.Where(p => p.订单数 != "0").ToList(); _lst.ForEach (p => { var _ls = CheckExcelMode(db, p); if (_ls.Count > 0) { lineError.Add(number.ToString()); ErrorList.Add(string.Join("
", _ls.ToArray())); } number++; }); if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { var VenderList = _lst.Select(p => p.供应商编码).Distinct(); var PartCodeList = _lst.Select(p => p.零件编码).Distinct(); var OrderList = _lst.GroupBy(p => p.订单编号).ToList(); OrderList.ForEach((p) => { var list = p.ToList(); if (list.Count > 0) { var _entity = list.FirstOrDefault(); TB_ASK _ask = new TB_ASK(); _ask.AskBillNum = SCP_BILLCODE_CONTROLLER.MakeASKCode(); _ask.VendId = _entity.供应商编码; _ask.State = (int)AskState.New; _ask.PoBillNum = _entity.订单编号; _ask.ModType = (int)BillModType.Contract; _ask.Site = _entity.域名; _ask.Remark = _entity.站点; if (IsAutoPublish) { _ask.State = (int)AskState.Release; } else { _ask.State = (int)AskState.New; } _ask.BeginTime = DateTime.Parse(_entity.订货日期); _ask.Buyer = p_buyer; _ask.BuyerPhone = _entity.计划员电话; _ask.ErpBillNum = _entity.项目编号; _ask.EndTime = DateTime.Parse(_entity.到货日期); _ask.CreateTime = DateTime.Now; _ask.CreateUser = p_creator; _ask.VendId = _entity.供应商编码; _ask.GUID = Guid.NewGuid(); _ask.ReceivedPort = _entity.收货口; _ask.IsDeleted = false; db.TB_ASK.Add(_ask); #region 供应商新任务代办接口 TB_PENING_ITEMS _item = new TB_PENING_ITEMS(); _item.ROLE_NAME = "供应商"; _item.ITEM_NO = _ask.AskBillNum; _item.ITEM_CONTENT = "要货看盘有信息"; _item.ITEM_TYPE = (int)PENDING_MESSAGE_TYPE.NEW_ASK; _item.VEND_ID = _ask.VendId; _item.ITEM_STATE = (int)PENDING_STATE.WAITING; _item.SENDER = p_buyer; _item.SENDING_TIME = DateTime.Now; db.TB_PENING_ITEMS.Add(_item); #endregion // int _number = 1; List _ls = new List(); list.ForEach((itm) => { var _number = _ls.Count(p1 => p1.PoBillNum == _ask.PoBillNum && p1.PoLine == Int32.Parse(itm.行号) && p1.PartCode == itm.零件编码 && itm.域名 == p1.Remark); if (_number > 0) { _ret.MessageList.Add(string.Format("已经存在订单为{0}行号为{1}零件编码为{2}", itm.订单编号, itm.行号, itm.零件编码)); } TB_ASK_DETAIL _t_ASK_Detail = new TB_ASK_DETAIL(); _t_ASK_Detail.PoLine = Int32.Parse(itm.行号); _t_ASK_Detail.Currency = itm.币种; _t_ASK_Detail.AskBillNum = _ask.AskBillNum; _t_ASK_Detail.PoBillNum = _ask.PoBillNum; _t_ASK_Detail.PoUnit = itm.单位; _t_ASK_Detail.CreateTime = DateTime.Now; _t_ASK_Detail.CreateUser = _ask.CreateUser; _t_ASK_Detail.PartCode = itm.零件编码; _t_ASK_Detail.BeginTime = DateTime.Parse(itm.订货日期); _t_ASK_Detail.EndTime = DateTime.Parse(itm.到货日期); _t_ASK_Detail.TempQty = decimal.Parse(itm.订单数); _t_ASK_Detail.AskQty = decimal.Parse(itm.订单数); _t_ASK_Detail.IsDeleted = false; _t_ASK_Detail.LocUnit = itm.单位; _t_ASK_Detail.UnConv = 1; _t_ASK_Detail.DockCode = itm.收货口; _t_ASK_Detail.State = _ask.State; _t_ASK_Detail.Price = string.IsNullOrEmpty(itm.价格) ? 0 : decimal.Parse(itm.价格); _t_ASK_Detail.GUID = Guid.NewGuid(); _t_ASK_Detail.Remark = _ask.Site; _t_ASK_Detail.UpdateInfo = itm.备注; db.TB_ASK_DETAIL.Add(_t_ASK_Detail); _ls.Add(_t_ASK_Detail); // _number++; }); } else { _ret.MessageList.Add("ERP订单编号已存在,请重新导入!"); } if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } ); } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_TO_ASK", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_TO_ASK", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_TO_ASK", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_TO_ASK", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } /// /// 供应商零件导入 /// /// /// /// /// public static ResultObject EXCEL_VENDER_PART_MOD(List p_order_list, string site, string p_creator) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { int number = 1; List lineError = new List(); List ErrorList = new List(); var _lst = p_order_list; _lst.ForEach(p => { var _count = _lst.Count(itm => itm.供应商代码 == p.供应商代码 && itm.零件号 == p.零件号); if (_count > 1) { lineError.Add(string.Format("导入的供应商{0}零件编号{1}有重复", p.供应商代码, p.零件号)); ErrorList = lineError; } }); _lst.ForEach(p => { var _ls = CheckExcelMode_VenderPart(db, p, site); if (_ls.Count > 0) { lineError.Add(number.ToString()); ErrorList.Add(string.Join("
", _ls.ToArray())); } number++; }); if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { _lst.ForEach(p => { var _venderpart = db.TA_VEND_PART.SingleOrDefault(t => t.VendId == p.供应商代码.ToUpper() && t.PartCode == p.零件号.ToUpper()) ?? new TA_VEND_PART { VendId = p.供应商代码.ToUpper(), PartCode = p.零件号.ToUpper(), State = 1, CreateTime = DateTime.Now, CreateUser = p_creator, IsDeleted = false, GUID = System.Guid.NewGuid(), }; _venderpart.VendPartCode = p.供应商零件号.ToUpper(); _venderpart.VendPackQty = decimal.Parse(p.标包数); _venderpart.MinPackQty = decimal.Parse(p.小包装数); _venderpart.PalletPackQty = decimal.Parse(p.托盘包装数); _venderpart.PoUnit = p.单位; _venderpart.Remark = ""; _venderpart.UpdateTime = DateTime.Now; _venderpart.UpdateUser = p_creator; _venderpart.Site = site; db.TA_VEND_PART.AddOrUpdate(_venderpart); }); if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } /// /// 零件器具导入 /// /// /// /// /// public static ResultObject EXCEL_VENDER_PART_MOD1(List p_order_list, string site, string p_creator) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { int number = 1; List lineError = new List(); List ErrorList = new List(); var _lst = p_order_list; _lst.ForEach(p => { var _count = _lst.Count(itm => itm.零件号码 == p.零件号码 && itm.供应商代码==p.供应商代码); if (_count > 1) { lineError.Add(string.Format("零件号码有重复", p.零件号码)); ErrorList = lineError; } }); _lst.ForEach(p => { var _ls = CheckExcelMode_VenderPart1(db, p, site); if (_ls.Count > 0) { lineError.Add(number.ToString()); ErrorList.Add(string.Join("
", _ls.ToArray())); } number++; }); if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { _lst.ForEach(p => { var _partdes = db.TA_Appliance.Count(t => t.PartNumber == p.零件号码 && t.VendID == p.供应商代码); if (_partdes == 0) { TA_Appliance _entity = new TA_Appliance(); _entity.PartNumber = p.零件号码; _entity.PackNumber = decimal.Parse(p.标包数); _entity.PartDesc1 = p.零件描述; _entity.ReciteNumber = p.背番号; _entity.SufanLand = p.所番地; _entity.BoxType = p.箱种; _entity.PostEngineering = p.后工程; _entity.PartNumber = p.零件号码; _entity.Texture = p.材质; _entity.Model = p.车型; _entity.ReceivingPort = p.收货口; _entity.VendID = p.供应商代码; _entity.OtherVendName = p.供应商别名; db.TA_Appliance.Add(_entity); } else { var _partde = db.TA_Appliance.SingleOrDefault(t => t.PartNumber == p.零件号码 && t.VendID == p.供应商代码); _partde.PackNumber = decimal.Parse(p.标包数); _partde.PartDesc1 = p.零件描述; _partde.Model = p.车型; _partde.ReciteNumber = p.背番号; _partde.SufanLand = p.所番地; _partde.BoxType = p.箱种; _partde.PostEngineering = p.后工程; _partde.PartNumber = p.零件号码; _partde.Texture = p.材质; _partde.ReceivingPort = p.收货口; _partde.OtherVendName = p.供应商别名; db.TA_Appliance.AddOrUpdate(_partde); } }); if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } /// /// 本特勒收货信息导入 /// /// /// /// /// public static ResultObject EXCEL_TA_RECEIVING(List p_order_list, string site, string p_creator) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { int number = 1; List lineError = new List(); List ErrorList = new List(); var _lst = p_order_list; _lst.ForEach(p => { var _ls = CheckExcelMode_Receiving(db, p, site); if (_ls.Count > 0) { lineError.Add(number.ToString()); ErrorList.Add(string.Join("
", _ls.ToArray())); } number++; }); if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { _lst.ForEach(p => { var _partdes = db.TA_Receiving_Information.Count(t => t.Shift == p.班次); if (_partdes == 0) { TA_Receiving_Information _entity = new TA_Receiving_Information(); _entity.Shift = p.班次; _entity.Name = p.收货人; _entity.Phone = p.收货人电话; db.TA_Receiving_Information.Add(_entity); } else { var _partde = db.TA_Receiving_Information.FirstOrDefault(t => t.Shift == p.班次); _partde.Name = p.收货人; _partde.Phone = p.收货人电话; db.TA_Receiving_Information.AddOrUpdate(_partde); } }); if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } /// /// 子零件导入 /// /// /// /// /// public static ResultObject EXCEL_VENDER_PART_MOD2(List p_order_list, string site, string p_creator) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { int number = 1; List lineError = new List(); List ErrorList = new List(); var _lst = p_order_list; _lst.ForEach(p => { var _count = _lst.Count(itm => itm.零件号 == p.零件号); if (_count > 1) { lineError.Add(string.Format("零件号有重复", p.零件号)); ErrorList = lineError; } }); _lst.ForEach(p => { var _ls = CheckExcelMode_CousmterPart1(db, p, site); if (_ls.Count > 0) { lineError.Add(number.ToString()); ErrorList.Add(string.Join("
", _ls.ToArray())); } number++; }); if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { _lst.ForEach(p => { var _coustomerpart = db.TA_SubPart.Count(t => t.PartCode == p.零件号.ToUpper()); if (_coustomerpart == 0) { TA_SubPart subpa = new TA_SubPart(); subpa.SubPart = p.客户零件号; subpa.PartCode = p.零件号; db.TA_SubPart.AddOrUpdate(subpa); } else { var subpa = db.TA_SubPart.FirstOrDefault(t => t.PartCode == p.零件号.ToUpper()); subpa.SubPart = p.客户零件号; db.TA_SubPart.AddOrUpdate(subpa); } }); if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } /// /// 采购组导入 /// /// /// /// /// public static ResultObject EXCEL_VENDER_PART_MOD4(List p_order_list, string site, string p_creator) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { int number = 1; List lineError = new List(); List ErrorList = new List(); var _lst = p_order_list; _lst.ForEach(p => { var _ls = CheckExcelMode_PurchasingGroup(db, p, site); if (_ls.Count > 0) { lineError.Add(number.ToString()); ErrorList.Add(string.Join("
", _ls.ToArray())); } number++; }); if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { _lst.ForEach(p => { var _venderpart = db.TA_PurchasGroup.SingleOrDefault(t => t.PurchasingGroup == p.采购组.ToUpper() && t.ChineseName == p.中文名称.ToUpper()) ?? new TA_PurchasGroup { PurchasingGroup = p.采购组.ToUpper(), ChineseName = p.中文名称.ToUpper(), Describe=p.描述.ToUpper(), }; //_venderpart.Model = p.车型.ToUpper(); db.TA_PurchasGroup.AddOrUpdate(_venderpart); }); if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } /// /// 存储地点导入 /// /// /// /// /// public static ResultObject EXCEL_VENDER_PART_MOD5(List p_order_list, string site, string p_creator) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { int number = 1; List lineError = new List(); List ErrorList = new List(); var _lst = p_order_list; //_lst.ForEach(p => //{ // var _ls = CheckExcelMode_Sort(db, p, site); // if (_ls.Count > 0) // { // lineError.Add(number.ToString()); // ErrorList.Add(string.Join("
", _ls.ToArray())); // } // number++; //}); if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { _lst.ForEach(p => { var _venderpart = db.TA_StorageLocation.SingleOrDefault(t => t.StLocation == p.存储地点.ToUpper() && t.Arrangement == p.层次.ToUpper()) ?? new TA_StorageLocation { StLocation = p.存储地点.ToUpper(), Arrangement = p.层次.ToUpper(), Leveldescription = p.层次描述.ToUpper(), Describe = p.描述.ToUpper(), Inventoryation = p.存货标识.ToUpper(), }; //_venderpart.Model = p.车型.ToUpper(); db.TA_StorageLocation.AddOrUpdate(_venderpart); }); if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } /// /// 品番导入 /// /// /// /// /// public static ResultObject EXCEL_VENDER_PART_MOD6(List p_order_list, string site, string p_creator) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { int number = 1; List lineError = new List(); List ErrorList = new List(); var _lst = p_order_list; _lst.ForEach(p => { var _ls = CheckExcelMode_Sort(db, p, site); if (_ls.Count > 0) { lineError.Add(number.ToString()); ErrorList.Add(string.Join("
", _ls.ToArray())); } number++; }); if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { _lst.ForEach(p => { var _venderpart = db.TA_PinFan.SingleOrDefault(t => t.PartCode == p.品番.ToUpper() ) ?? new TA_PinFan { PartCode = p.品番.ToUpper(), Barcodnt = p.条码内容.ToUpper(), Identification = p.Code39条码.ToUpper(), }; //_venderpart.Model = p.车型.ToUpper(); db.TA_PinFan.AddOrUpdate(_venderpart); }); if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } /// /// 箱种导入 /// /// /// /// /// public static ResultObject EXCEL_Box_Type(List p_order_list, string site, string p_creator) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { int number = 1; List lineError = new List(); List ErrorList = new List(); var _lst = p_order_list; _lst.ForEach(p => { var _ls = CheckExcelMode_Box(db, p, site); if (_ls.Count > 0) { lineError.Add(number.ToString()); ErrorList.Add(string.Join("
", _ls.ToArray())); } var _count = _lst.Count(itm => itm.箱种 == p.箱种); if (_count > 1) { lineError.Add(string.Format("箱种有重复", p.箱种)); ErrorList = lineError; } number++; }); if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { _lst.ForEach(p => { var _boxtype = db.TA_BOXTYPE.SingleOrDefault(t => t.BoxType == p.箱种.ToUpper()) ?? new TA_BOXTYPE { BoxType = p.箱种 }; _boxtype.CreateTime = DateTime.Now; _boxtype.CreateUser = p_creator; _boxtype.Enabled = p.打印托盘码 == "是" ? true : false; db.TA_BOXTYPE.AddOrUpdate(_boxtype); }); if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } /// /// 本特勒车型导入 /// /// /// /// /// public static ResultObject EXCEL_Car_Model(List p_order_list, string site, string p_creator) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { int number = 1; List lineError = new List(); List ErrorList = new List(); var _lst = p_order_list; _lst.ForEach(p => { var _ls = CheckExcel_Model(db, p, site); if (_ls.Count > 0) { lineError.Add(number.ToString()); ErrorList.Add(string.Join("
", _ls.ToArray())); } number++; }); _lst.ForEach(p => { var _count = _lst.Count(itm => itm.车型 == p.车型); if (_count > 1) { lineError.Add(string.Format("车型【{0}】有重复", p.车型)); ErrorList = lineError; } }); if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { _lst.ForEach(p => { TA_CarModel Car = new TA_CarModel(); Car.Model = p.车型; db.TA_CarModel.AddOrUpdate(Car); }); if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public static ResultObject EXCEL_VENDER_PART_MOD3(List p_order_list, string site, string p_creator) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { int number = 1; List lineError = new List(); List ErrorList = new List(); var _lst = p_order_list; //_lst.ForEach(p => //{ // var _count = _lst.Count(itm => itm.零件号 == p.零件号); // if (_count > 1) // { // lineError.Add(string.Format("零件编号有重复", p.零件号)); // ErrorList = lineError; // } //}); _lst.ForEach(p => { var _ls = CheckExcelMode_VenderPart1(db, p, site); if (_ls.Count > 0) { lineError.Add(number.ToString()); ErrorList.Add(string.Join("
", _ls.ToArray())); } number++; }); if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { _lst.ForEach(p => { var _venderpart = db.TA_ProductionLine.SingleOrDefault(t => t.ProductionLine == p.产线.ToUpper() && t.PartCode == p.零件号.ToUpper()) ?? new TA_ProductionLine { ProductionLine = p.产线.ToUpper(), PartCode = p.零件号.ToUpper(), }; //_venderpart.Model = p.车型.ToUpper(); db.TA_ProductionLine.AddOrUpdate(_venderpart); }); if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_PART_MOD", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } /// /// 供应商导入 /// /// /// /// /// public static ResultObject EXCEL_VENDER_MOD(List p_order_list, string site, string p_creator) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { int number = 1; List lineError = new List(); List ErrorList = new List(); var _lst = p_order_list; _lst.ForEach(p => { var _count = _lst.Count(itm => itm.供应商编号 == p.供应商编号); if (_count > 1) { lineError.Add(string.Format("导入零件编号{0}有重复", p.供应商编号)); ErrorList = lineError; } }); _lst.ForEach(p => { var _ls = CheckExcelMode_Vender(db, p, site); if (_ls.Count > 0) { lineError.Add(number.ToString()); ErrorList.Add(string.Join("
", _ls.ToArray())); } number++; }); if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { _lst.ForEach(p => { var _vender = db.TA_VENDER.SingleOrDefault(t => t.VendId == p.供应商编号.ToUpper()) ?? new TA_VENDER { VendId = p.供应商编号.ToUpper(), State = 1 }; _vender.VendName = p.供应商名称; _vender.VendAbbCode = string.IsNullOrEmpty(p.供应商缩写) ? "0" : p.供应商缩写; _vender.VendType = p.供应商类型; _vender.Country = p.国家; _vender.City = p.城市; _vender.Currency = p.币种; _vender.Address = p.地址; _vender.ZipCode = p.邮编; _vender.Contacter = p.联系人; _vender.Phone = p.电话; _vender.Fax = p.传真; _vender.Remark = p.备注; _vender.Tax = Convert.ToDecimal(p.税率); _vender.Site = site; db.TA_VENDER.AddOrUpdate(_vender); }); if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_MOD", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_MOD", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_MOD", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_VENDER_MOD", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } /// /// 价格导入 /// /// /// /// /// public static ResultObject EXCEL_PRICE_MOD(List p_order_list, string site, string p_creator) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { int number = 1; List lineError = new List(); List ErrorList = new List(); var _lst = p_order_list; _lst.ForEach (p => { var _ls = CheckExcelMode_Price(db, p, site); if (_ls.Count > 0) { lineError.Add(number.ToString()); ErrorList.Add(string.Join("
", _ls.ToArray())); } number++; }); if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { _lst.ForEach(p => { var _price = new TB_PRICE(); _price.VendId = p.供应商编号.Trim(); _price.PartCode = p.零件编码.Trim(); _price.StartTime = DateTime.Parse(p.开始时间); _price.EndTime = DateTime.Parse(p.结束时间); _price.Curr = p.币种; _price.Unit = p.单位; _price.Amt = decimal.Parse(p.价格); _price.Site = site.Trim(); _price.Remarks = p.备注; db.TB_PRICE.Add(_price); }); if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PRICE_MOD", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PRICE_MOD", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PRICE_MOD", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PRICE_MOD", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } /// /// 零件导入 /// /// /// /// /// public static ResultObject EXCEL_PART_MOD(List p_order_list, string site, string p_creator) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { int number = 1; List lineError = new List(); List ErrorList = new List(); var _lst = p_order_list; _lst.ForEach(p => { var _count = _lst.Count(itm => itm.零件编号 == p.零件编号); if (_count > 1) { lineError.Add(string.Format("导入零件编号{0}有重复", p.零件编号)); ErrorList = lineError; } }); _lst.ForEach (p => { var _ls = CheckExcelMode_Part(db, p, site); if (_ls.Count > 0) { lineError.Add(number.ToString()); ErrorList.Add(string.Join("
", _ls.ToArray())); } number++; }); if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { _lst.ForEach(p => { var _part = db.TA_PART.SingleOrDefault(t => t.PartCode == p.零件编号.ToUpper()) ?? new TA_PART { PartCode = p.零件编号.ToUpper() }; _part.PartCode = p.零件编号; _part.ErpPartCode = p.零件编号; _part.PartDesc1 = p.零件名称; _part.PartDesc2 = ""; _part.ProjectId = p.项目编号; _part.Unit = p.单位; _part.PartGroup = p.项目编号; _part.State = p.状态; _part.Site = site; db.TA_PART.AddOrUpdate(_part); }); if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PART_MOD", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PART_MOD", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PART_MOD", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PART_MOD", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } /// /// 订单导入 /// /// /// /// /// /// /// public static ResultObject EXCEL_PO_MOD(List p_order_list, string site, string p_creator, DateTime p_time, PoState p_modtype) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { int number = 1; List lineError = new List(); List ErrorList = new List(); var _lst = p_order_list; DataTable ds = new DataTable(); _lst.ForEach (p => { var _ls = CheckExcelMode_Po(db, p); if (_ls.Count > 0) { lineError.Add(number.ToString()); ErrorList.Add(string.Join("
", _ls.ToArray())); } number++; }); if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { List poList = new List(); List po_Detail = new List(); List askList = new List(); List askDetailList = new List(); List uniList = new List(); //先循环找到一个日期的订单 foreach (DataColumn column in ds.Columns) { DateTime date = DateTime.MaxValue; DateTime.TryParse(column.ColumnName, out date); if (date != DateTime.MaxValue) { //找到所有日期下订单 foreach (DataRow dataRow in ds.Rows)//订单分组表 { decimal _Qty = 0; decimal.TryParse(dataRow[column.ColumnName].ToString(), out _Qty); if (_Qty > 0) { //创建主单据及看板 var _Po = CreatePo1(poList, dataRow, date, p_creator,site); //创建主单据及看板 var _PoAsk = CreateAsk1(poList, askList, dataRow, date, p_creator,db,site); //创建明细 var _PoDetail = CreatePoDetail1(dataRow, _Qty, db, date, _Po, _PoAsk, p_creator,site); po_Detail.Add(_PoDetail); var _Askdetail = CreateAskDetail1(db, dataRow, _Po, _PoAsk, _PoDetail, p_creator,site); askDetailList.Add(_Askdetail); var Tsuniapi = CreateTsuniapi1(_Po, _PoAsk, _PoDetail, dataRow, _Askdetail,site); uniList.Add(Tsuniapi); } } } } var billGroups= poList.GroupBy(p=>new { p.VendId,p.EndTime}); foreach (var item in billGroups) ; db.TB_PO.AddRange(poList); db.TB_ASK.AddRange(askList); db.TB_PO_DETAIL.AddRange(po_Detail); db.TB_ASK_DETAIL.AddRange(askDetailList); db.TS_UNI_API.AddRange(uniList); if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } //} } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } /// /// 富维普通订单导入 /// /// /// /// /// /// /// public static ResultObject EXCEL_PO_MOD2(DataTable p_order_list1, List p_order_list, string site, string p_creator, DateTime p_time, PoState p_modtype) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { int number = 1; List lineError = new List(); List ErrorList = new List(); var _lst = p_order_list; _lst.ForEach (p => { var _count = _lst.Count(itm => itm.物料号码 == p.物料号码 && itm.供应商编号 == p.供应商编号); if (_count > 1) { lineError.Add(string.Format("导入的物料号码{0}有重复", p.物料号码)); ErrorList = lineError; } var _ls = CheckExcelMode_Po(db, p); if (_ls.Count > 0) { lineError.Add(number.ToString()); ErrorList.Add(string.Join("
", _ls.ToArray())); } number++; }); if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { List poList = new List(); List po_DetailList = new List(); List askList = new List(); List askDetailList = new List(); List uniList = new List(); //先循环找到一个日期的订单 foreach (DataColumn column in p_order_list1.Columns) { DateTime date = DateTime.MaxValue; DateTime.TryParse(column.ColumnName, out date); if (date != DateTime.MaxValue && date.Year > 2000) { //找到所有日期下订单 foreach (DataRow dataRow in p_order_list1.Rows)//订单分组表 { decimal _Qty = 0; decimal.TryParse(dataRow[column.ColumnName].ToString(), out _Qty); if (_Qty > 0) { // 创建主单据及看板 var _Po = CreatePo1( poList, dataRow, date, p_creator, site); // 创建主单据及看板 var _PoAsk = CreateAsk1(poList, askList, dataRow, date, p_creator,db,site); //创建明细 var _PoDetail = CreatePoDetail1(dataRow, _Qty, db, date, _Po, _PoAsk, p_creator,site); po_DetailList.Add(_PoDetail); var _Askdetail = CreateAskDetail1(db, dataRow, _Po, _PoAsk, _PoDetail, p_creator,site); askDetailList.Add(_Askdetail); var Tsuniapi = CreateTsuniapi1(_Po, _PoAsk, _PoDetail,dataRow, _Askdetail,site); uniList.Add(Tsuniapi); } } } } int cnt = 1; foreach (var item in poList) { var oldGuid = item.PoBillNum; var newBillId = SCP_BILLCODE_CONTROLLER.MakePOCode2();//订单号 if (item.Site != "W21") { newBillId=SCP_BILLCODE_CONTROLLER.MakePOCode4();//订单号 } var newAskNum = SCP_BILLCODE_CONTROLLER.MakeASKCodeByNum(cnt); var add_Po = item.Clone(newBillId, item.Site); db.TB_PO.Add(add_Po); var Add_Po_DETAIL = po_DetailList.Where(p => p.PoBillNum == oldGuid).ToList(); int cntPo_detail = 1; Add_Po_DETAIL.ForEach(p => p.PoBillNum = newBillId); Add_Po_DETAIL.ForEach(p => { p.PoLine = cntPo_detail; cntPo_detail++; }); db.TB_PO_DETAIL.AddRange(Add_Po_DETAIL); var Add_AskList = askList.Where(p => p.PoBillNum == oldGuid).ToList(); Add_AskList.ForEach(p => p.PoBillNum = newBillId); Add_AskList.ForEach(p => p.AskBillNum = newAskNum); Add_AskList.ForEach(p => p.ErpBillNum = newBillId); db.TB_ASK.AddRange(Add_AskList); var Add_ASK_DETAIL = askDetailList.Where(p => p.PoBillNum == oldGuid).ToList(); Add_ASK_DETAIL.ForEach(p => p.PoBillNum = newBillId); int cntAsk_detail = 1; Add_ASK_DETAIL.ForEach(p => p.AskBillNum = newAskNum); Add_ASK_DETAIL.ForEach(p => { p.PoLine = cntAsk_detail; cntAsk_detail++; }); db.TB_ASK_DETAIL.AddRange(Add_ASK_DETAIL); var Add_UniList = uniList.Where(p => p.BillNum == oldGuid).ToList(); int cntTS_detail = 1; Add_UniList.ForEach(p => { p.ErpLineNum = cntTS_detail; cntTS_detail++; }); Add_UniList.ForEach(p => p.BillNum = newBillId); db.TS_UNI_API.AddRange(Add_UniList); if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } //} } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } /// /// 富维期货订单导入 /// /// /// /// /// /// /// public static ResultObject EXCEL_PO_QH_MOD(DataTable p_order_list1, List p_order_list, string site, string p_creator, DateTime p_time, PoState p_modtype) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { int number = 1; List lineError = new List(); List ErrorList = new List(); var _lst = p_order_list; _lst.ForEach (p => { var _count = _lst.Count(itm => itm.物料号码 == p.物料号码 && itm.供应商编号 == p.供应商编号); if (_count > 1) { lineError.Add(string.Format("导入的物料号码{0}有重复", p.物料号码)); ErrorList = lineError; } var _ls = CheckExcelMode_QH_Po(db, p); if (_ls.Count > 0) { lineError.Add(number.ToString()); ErrorList.Add(string.Join("
", _ls.ToArray())); } number++; }); if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { List poList = new List(); List po_DetailList = new List(); List askList = new List(); List askDetailList = new List(); List uniList = new List(); List consum = new List(); //先循环找到一个日期的订单 foreach (DataColumn column in p_order_list1.Columns) { DateTime date = DateTime.MaxValue; DateTime.TryParse(column.ColumnName, out date); if (date != DateTime.MaxValue && date.Year > 2000) { //找到所有日期下订单 foreach (DataRow dataRow in p_order_list1.Rows)//订单分组表 { decimal _Qty = 0; decimal.TryParse(dataRow[column.ColumnName].ToString(), out _Qty); if (_Qty > 0) { // 创建主单据及看板 var _Po = CreatePoQh(poList, dataRow, date, p_creator, site); // 创建主单据及看板 var _PoAsk = CreateAsk1(poList, askList, dataRow, date, p_creator, db, site); //创建明细 var _PoDetail = CreatePoDetail1Qh(dataRow, _Qty, db, date, _Po, _PoAsk, p_creator, site); po_DetailList.Add(_PoDetail); var _Askdetail = CreateAskDetail1(db, dataRow, _Po, _PoAsk, _PoDetail, p_creator, site); askDetailList.Add(_Askdetail); var Tsuniapi = CreateTsuniapiQh(_Po, _PoAsk, _PoDetail, dataRow, _Askdetail, site); uniList.Add(Tsuniapi); } } } } var POdetailCount = po_DetailList.GroupBy(t => new { t.PartCode, t.UpdateInfo,t.EndTime }).ToList(); POdetailCount.ForEach((p) => { var _list = p.ToList(); decimal _PlanQTY = _list.Sum(t => t.PlanQty); var _ls = _list.First(); var MaxP = db.TB_MAXPO_DETAIL.Where(t => t.PartCode == _ls.PartCode && t.VendId == _ls.UpdateInfo).Sum(t => t.SurplusQty); if (_PlanQTY > MaxP) { _ret.MessageList.Add(string.Format("物料号{0}大订单总剩余数{1}小于本次要货数{2}", _ls.PartCode, MaxP, _PlanQTY)); } else { var _MaxpoList = db.TB_MAXPO_DETAIL.Where(t => t.PartCode == _ls.PartCode && t.SurplusQty > 0 && t.VendId == _ls.UpdateInfo).OrderBy(t => t.ContractMonth).ToList(); foreach (var _maxpo in _MaxpoList) { if (_maxpo.SurplusQty > _PlanQTY) { _maxpo.SurplusQty = _maxpo.SurplusQty - _PlanQTY; db.TB_MAXPO_DETAIL.AddOrUpdate(_maxpo); TB_MAXPO_CONSUME CONSUME = new TB_MAXPO_CONSUME(); CONSUME.PoBillNum = _maxpo.PoBillNum; CONSUME.BillNum = _ls.PoBillNum; CONSUME.PartCode = _ls.PartCode; CONSUME.VendId = _maxpo.VendId; CONSUME.PoQty = _PlanQTY; CONSUME.ShipTime = DateTime.Now; consum.Add(CONSUME); break; } else if (_maxpo.SurplusQty == _PlanQTY) { _maxpo.SurplusQty = 0; db.TB_MAXPO_DETAIL.AddOrUpdate(_maxpo); TB_MAXPO_CONSUME CONSUME = new TB_MAXPO_CONSUME(); CONSUME.PoBillNum = _maxpo.PoBillNum; CONSUME.BillNum = _ls.PoBillNum; CONSUME.PartCode = _ls.PartCode; CONSUME.VendId = _maxpo.VendId; CONSUME.PoQty = _PlanQTY; CONSUME.ShipTime = DateTime.Now; consum.Add(CONSUME); break; } else if (_maxpo.SurplusQty < _PlanQTY) { TB_MAXPO_CONSUME CONSUME = new TB_MAXPO_CONSUME(); CONSUME.BillNum = _ls.PoBillNum; CONSUME.PoBillNum = _maxpo.PoBillNum; CONSUME.PartCode = _ls.PartCode; CONSUME.VendId = _maxpo.VendId; CONSUME.PoQty = _maxpo.SurplusQty; CONSUME.ShipTime = DateTime.Now; consum.Add(CONSUME); _PlanQTY = _PlanQTY - _maxpo.SurplusQty; _maxpo.SurplusQty = 0; db.TB_MAXPO_DETAIL.AddOrUpdate(_maxpo); } } } }); int cnt = 1; foreach (var item in poList) { var oldGuid = item.PoBillNum; var newBillId = SCP_BILLCODE_CONTROLLER.MakePOCode2();//冲压件订单号生成逻辑 if (item.Site != "W21") { newBillId = SCP_BILLCODE_CONTROLLER.MakePOCode4();//本特勒订单号生成逻辑 } var newAskNum = SCP_BILLCODE_CONTROLLER.MakeASKCodeByNum(cnt); var add_Po = item.Clone(newBillId, item.Site); db.TB_PO.Add(add_Po); var Add_Po_DETAIL = po_DetailList.Where(p => p.PoBillNum == oldGuid).ToList(); int cntPo_detail = 1; Add_Po_DETAIL.ForEach(p => p.PoBillNum = newBillId); Add_Po_DETAIL.ForEach(p => { p.PoLine = cntPo_detail; cntPo_detail++; }); db.TB_PO_DETAIL.AddRange(Add_Po_DETAIL); var Add_AskList = askList.Where(p => p.PoBillNum == oldGuid).ToList(); Add_AskList.ForEach(p => p.PoBillNum = newBillId); Add_AskList.ForEach(p => p.AskBillNum = newAskNum); Add_AskList.ForEach(p => p.ErpBillNum = newBillId); db.TB_ASK.AddRange(Add_AskList); var Add_ASK_DETAIL = askDetailList.Where(p => p.PoBillNum == oldGuid).ToList(); Add_ASK_DETAIL.ForEach(p => p.PoBillNum = newBillId); int cntAsk_detail = 1; Add_ASK_DETAIL.ForEach(p => p.AskBillNum = newAskNum); Add_ASK_DETAIL.ForEach(p => { p.PoLine = cntAsk_detail; cntAsk_detail++; }); db.TB_ASK_DETAIL.AddRange(Add_ASK_DETAIL); var ConsumList = consum.Where(p => p.BillNum == oldGuid).ToList(); ConsumList.ForEach(p => p.BillNum = newBillId); db.TB_MAXPO_CONSUME.AddRange(ConsumList); var Add_UniList = uniList.Where(p => p.BillNum == oldGuid).ToList(); int cntTS_detail = 1; Add_UniList.ForEach(p => { p.ErpLineNum = cntTS_detail; cntTS_detail++; }); Add_UniList.ForEach(p => p.BillNum = newBillId); db.TS_UNI_API.AddRange(Add_UniList); if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } //} } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public static void GroupDataRows(IEnumerable source, List destination, string[] groupByFields, int fieldIndex, DataTable schema) { if (fieldIndex >= groupByFields.Length || fieldIndex < 0) { DataTable dt = schema.Clone(); foreach (DataRow row in source) { DataRow dr = dt.NewRow(); dr.ItemArray = row.ItemArray; dt.Rows.Add(dr); } destination.Add(dt); return; } var results = source.GroupBy(o => o[groupByFields[fieldIndex]]); foreach (var rows in results) { GroupDataRows(rows, destination, groupByFields, fieldIndex + 1, schema); } fieldIndex++; } /// /// 富维订单导入 /// /// /// /// /// /// /// public static ResultObject EXCEL_PO_MOD1(DataTable p_order_list1, List p_order_list, string site, string p_creator, DateTime p_time, PoState p_modtype, string SubSite, string p_chineseName, string p_buyerPhone) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { int number = 1; List lineError = new List(); List ErrorList = new List(); var _lst = p_order_list; _lst.ForEach (p => { var _count = _lst.Count(itm => itm.物料号码 == p.物料号码 && itm.供应商编号 == p.供应商编号); if (_count > 1) { lineError.Add(string.Format("导入的物料号码{0}有重复", p.物料号码)); ErrorList = lineError; } var _ls = CheckExcelMode_Po1(db, p); if (_ls.Count > 0) { lineError.Add(number.ToString()); ErrorList.Add(string.Join("
", _ls.ToArray())); } number++; }); if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { List poList = new List(); List po_DetailList = new List(); List askList = new List(); List askDetailList = new List(); List uniList = new List(); //先循环找到一个日期的订单 foreach (DataColumn column in p_order_list1.Columns) { DateTime date = DateTime.MaxValue; DateTime.TryParse(column.ColumnName, out date); if (date != DateTime.MaxValue && date.Year > 2000) { //找到所有日期下订单 foreach (DataRow dataRow in p_order_list1.Rows)//订单分组表 { decimal _Qty = 0; decimal.TryParse(dataRow[column.ColumnName].ToString(), out _Qty); if (_Qty > 0) { // 创建主单据及看板 var _Po = CreatePo(db, poList, dataRow, date, p_creator, site); // 创建主单据及看板 var _PoAsk = CreateAsk(poList, askList, dataRow, date, p_creator, db, site); //创建明细 var _PoDetail = CreatePoDetail(dataRow, _Qty, db, date, _Po, _PoAsk, p_creator, po_DetailList, site); po_DetailList.Add(_PoDetail); var _Askdetail = CreateAskDetail(db, dataRow, _Po, _PoAsk, _PoDetail, p_creator, site); askDetailList.Add(_Askdetail); var Tsuniapi = CreateTsuniapi(_Po, _PoAsk, _PoDetail, _Askdetail, dataRow, site); uniList.Add(Tsuniapi); } } } } int cnt = 1; var podetail = po_DetailList.GroupBy(p => p.PoBillNum).ToList(); foreach (var item in poList) { var oldGuid = item.PoBillNum; var newBillId = SCP_BILLCODE_CONTROLLER.MakePOCode1();//订单号 var newAskNum = SCP_BILLCODE_CONTROLLER.MakeASKCodeByNum(cnt); var add_Po = item.Clone(newBillId, item.Site); db.TB_PO.Add(add_Po); var Add_Po_DETAIL = po_DetailList.Where(p => p.PoBillNum == oldGuid).ToList(); int cntPo_detail = 1; List part = new List(); Add_Po_DETAIL.ForEach(p => p.PoBillNum = newBillId); Add_Po_DETAIL.ForEach(p => { if (part.Contains(p.PartCode)) { var pa = Add_Po_DETAIL.FirstOrDefault(itm => itm.PartCode == p.PartCode); p.PoLine = pa.PoLine; } else { p.PoLine = cntPo_detail; cntPo_detail++; } part.Add(p.PartCode); }); db.TB_PO_DETAIL.AddRange(Add_Po_DETAIL); var Add_AskList = askList.Where(p => p.PoBillNum == oldGuid).ToList(); Add_AskList.ForEach(p => p.PoBillNum = newBillId); Add_AskList.ForEach(p => p.AskBillNum = newAskNum); Add_AskList.ForEach(p => p.ErpBillNum = newBillId); db.TB_ASK.AddRange(Add_AskList); List part1 = new List(); var Add_ASK_DETAIL = askDetailList.Where(p => p.PoBillNum == oldGuid).ToList(); Add_ASK_DETAIL.ForEach(p => p.PoBillNum = newBillId); int cntAsk_detail = 1; Add_ASK_DETAIL.ForEach(p => p.AskBillNum = newAskNum); Add_ASK_DETAIL.ForEach(p => { if (part1.Contains(p.PartCode)) { var pa = Add_ASK_DETAIL.FirstOrDefault(itm => itm.PartCode == p.PartCode); p.PoLine = pa.PoLine; } else { p.PoLine = cntAsk_detail; cntAsk_detail++; } part1.Add(p.PartCode); }); db.TB_ASK_DETAIL.AddRange(Add_ASK_DETAIL); List part2 = new List(); var Add_UniList = uniList.Where(p => p.BillNum == oldGuid).ToList(); int cntTS_detail = 1; Add_UniList.ForEach(p => { if (part2.Contains(p.PartCode)) { var pa = Add_UniList.FirstOrDefault(itm => itm.PartCode == p.PartCode); p.ErpLineNum = pa.ErpLineNum; } else { p.ErpLineNum = cntTS_detail; cntTS_detail++; } part2.Add(p.PartCode); }); Add_UniList.ForEach(p => p.BillNum = newBillId); db.TS_UNI_API.AddRange(Add_UniList); if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } } //} } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } /// /// 富维多组件订单导入验证 /// /// /// /// /// /// /// public static ResultObject EXCEL_PO_Multicomponent(DataTable p_order_list1, List p_order_list, bool wmsweb,string site) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { int number = 1; List lineError = new List(); List ErrorList = new List(); var _lst = p_order_list; _lst.ForEach (p => { var _count = _lst.Count(itm => itm.物料号码 == p.物料号码 && itm.供应商编号 == p.供应商编号); if (_count > 1) { lineError.Add(string.Format("导入的物料号码{0}有重复", p.物料号码)); ErrorList = lineError; } var _ls = CheckExcelMode_Multicomponent(db, p, wmsweb); if (_ls.Count > 0) { lineError.Add(number.ToString()); ErrorList.Add(string.Join("
", _ls.ToArray())); } number++; }); if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { _lst.ForEach (p => { if (wmsweb == false) { BomList.JsonService bomVersionRe = new BomList.JsonService(); var _ReturnRelust = bomVersionRe.GetBomsByVer(p.物料号码, p.BOM版本); var _Bomlist = JsonConvert.DeserializeObject>(_ReturnRelust); foreach (var bom in _Bomlist) { var Bomsub = db.TA_SubPartCode.FirstOrDefault(t => t.PartCode == bom.PartCode && t.SubPartCode == bom.SubPartCode&&t.BOMedtiton==bom.BomFillIn); if (Bomsub == null) { TA_SubPartCode subpart = new TA_SubPartCode(); subpart.PartCode = bom.PartCode; subpart.SubPartCode = bom.SubPartCode; subpart.BOMedtiton = p.BOM版本; subpart.Qty = bom.Qty; subpart.Site = site; db.TA_SubPartCode.AddOrUpdate(subpart); } else { Bomsub.Qty = bom.Qty; db.TA_SubPartCode.AddOrUpdate(Bomsub); } } } else { BomList1.JsonService bomVersionRe = new BomList1.JsonService(); var _ReturnRelust = bomVersionRe.GetBomsByVer(p.物料号码, p.BOM版本); var _Bomlist = JsonConvert.DeserializeObject>(_ReturnRelust); foreach (var bom in _Bomlist) { var Bomsub = db.TA_SubPartCode.FirstOrDefault(t => t.PartCode == bom.PartCode && t.SubPartCode == bom.SubPartCode && t.BOMedtiton == bom.BomFillIn); if (Bomsub == null) { TA_SubPartCode subpart = new TA_SubPartCode(); subpart.PartCode = bom.PartCode; subpart.SubPartCode = bom.SubPartCode; subpart.BOMedtiton = p.BOM版本; subpart.Qty = bom.Qty; subpart.Site = site; db.TA_SubPartCode.AddOrUpdate(subpart); } else { Bomsub.Qty = bom.Qty; db.TA_SubPartCode.AddOrUpdate(Bomsub); } } } }); if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public static ResultObject EXCEL_PO_MAX(DataTable p_order_list1, List p_order_list, string site, string p_creator, DateTime p_time, PoState p_modtype, string SubSite, string p_chineseName, string time) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { int number = 1; //List PoError= new List(); List lineError = new List(); List ErrorList = new List(); var _lst = p_order_list; _lst.ForEach (p => { var _count = _lst.Count(itm => itm.原材物料号 == p.原材物料号 && itm.供应商编号 == p.供应商编号); if (_count > 1) { lineError.Add(string.Format("导入的物料号码{0}有重复", p.原材物料号)); ErrorList = lineError; } var _ls = CheckExcelMode_MAXPO(db, p); if (_ls.Count > 0) { lineError.Add(number.ToString()); ErrorList.Add(string.Join("
", _ls.ToArray())); } number++; }); if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { var VendidList = _lst.GroupBy(t => t.供应商编号).ToList(); VendidList.ForEach((p) => { var list = p.ToList(); if (list.Count > 0) { var _entity = list.FirstOrDefault(); TB_MAXPO maxp = new TB_MAXPO(); maxp.PoBillNum = SCP_BILLCODE_CONTROLLER.MakemaxPOCode(_entity.供应商编号, time); maxp.VendId = _entity.供应商编号; maxp.CreateUser = p_chineseName; maxp.CreateTime = DateTime.Now; maxp.ContractNo = maxp.PoBillNum; maxp.ContractMonth = time; maxp.Site = site; maxp.Remark = _entity.备注; db.TB_MAXPO.AddOrUpdate(maxp); int i = 1; list.ForEach((itm) => { List yclist = new List(); TB_MAXPO_DETAIL maxpodetail = new TB_MAXPO_DETAIL(); BomList1.JsonService bomVersionRe = new BomList1.JsonService(); var _ReturnRelust = bomVersionRe.GetBom(itm.零件号, itm.原材物料号); var _Bomlist = JsonConvert.DeserializeObject>(_ReturnRelust); var _bom = _Bomlist.First(); maxpodetail.Singlecon = _bom.Qty; var part = db.TA_PART.FirstOrDefault(t => t.PartCode == itm.原材物料号); maxpodetail.PoBillNum = maxp.PoBillNum; maxpodetail.ContractNo = maxp.PoBillNum; maxpodetail.VendId = itm.供应商编号; maxpodetail.PartCode = itm.原材物料号; maxpodetail.PartNumber = itm.零件号; maxpodetail.Texture = part.ProjectId;//材质 maxpodetail.Model = itm.车型; maxpodetail.Finprspec = part.PartDesc2;//规格 maxpodetail.TechStandard = itm.技术标准; maxpodetail.MinordQty = decimal.Parse(itm.起定量); maxpodetail.OrderQtyd = decimal.Parse(itm.订货量吨); maxpodetail.OrderQtykg = decimal.Parse(itm.订货量吨) * 1000; maxpodetail.OrderNumber = decimal.Parse(itm.订货件数); maxpodetail.SurplusQty = maxpodetail.OrderQtykg; maxpodetail.CreateTime = DateTime.Now; maxpodetail.CreateUser = p_chineseName; maxpodetail.Site = site; maxpodetail.AsnQty = maxpodetail.OrderQtykg; maxpodetail.ReceQty = 0; foreach (DataColumn column in p_order_list1.Columns)// { int yuce = int.MaxValue; int.TryParse(column.ColumnName, out yuce); if (yuce > 0) { foreach (DataRow dataRow in p_order_list1.Rows) { decimal _Qty = 0; decimal.TryParse(dataRow[column.ColumnName].ToString(), out _Qty); if (dataRow["原材物料号"].ToString() == itm.原材物料号 && dataRow["供应商编号"].ToString()==itm.供应商编号) { string forecast = ""; if (_Qty > 0) { forecast = yuce + "/" + _Qty.ToString(); } else { forecast = yuce + "/" + "0"; } yclist.Add(forecast); } } } } maxpodetail.CreateTime = maxp.CreateTime; maxpodetail.Matermanu = itm.材料厂家; maxpodetail.ContractMonth = time; if (yclist.Count() > 0) { int forecascount = 6 - yclist.Count(); if (forecascount > 0) { for (int a=1;a<=forecascount; a++) { yclist.Add(""); } } maxpodetail.forecastone = yclist.First();//预测1 maxpodetail.forecasttwo = yclist[yclist.Count - 5];//预测2 maxpodetail.forecastthree = yclist[yclist.Count - 4];//预测3 maxpodetail.forecastfour = yclist[yclist.Count - 3];//预测4 maxpodetail.forecastfive = yclist[yclist.Count - 2];//预测5 maxpodetail.forecastsix = yclist.Last();//预测6 } maxpodetail.PoLine = i; db.TB_MAXPO_DETAIL.AddOrUpdate(maxpodetail); i++; TS_UNI_API maxuni = new TS_UNI_API(); maxuni.BillNum = maxpodetail.PoBillNum; maxuni.InterfaceType = "MaxPobillnum"; maxuni.TableName = "TS_UNI_API"; maxuni.BillType = 701; maxuni.SubBillType = 0; maxuni.PartCode = maxpodetail.PartCode; maxuni.VendId = maxpodetail.VendId;//供应商编号 if (string.IsNullOrEmpty(part.ProjectId)) { maxuni.Batch = ""; } else { maxuni.Batch = part.ProjectId;//材质 } maxuni.Qty = decimal.Parse(itm.订货件数); maxuni.State = 1; maxuni.CreateOper = p_chineseName;//创建者 maxuni.CreateTime = maxp.CreateTime; maxuni.PutTime = DateTime.Now; maxuni.Extend1 = itm.零件号; maxuni.PackQty = decimal.Parse(itm.起定量); maxuni.Price = decimal.Parse(itm.订货量吨); maxuni.VendBatch = time;//合同月 maxuni.Currency = itm.车型; maxuni.Buyer = itm.技术标准; maxuni.BuyerPhone = part.PartDesc2;//规格 maxuni.Tax = 0; maxuni.PoUnit = maxpodetail.forecastone;//预测1 maxuni.LocUnit = maxpodetail.forecasttwo;//预测2 maxuni.Attn = maxpodetail.forecastthree;//预测3 maxuni.Receiver = maxpodetail.forecastfour;//预测4 maxuni.ModType = maxpodetail.forecastfive;//预测5 maxuni.SubSite = maxpodetail.forecastsix;//预测6 maxuni.Site = site; maxuni.Extend2 = itm.材料厂家; maxuni.TaxAmt =_bom.Qty;//单件消耗 maxuni.ValidDate = DateTime.Now; maxuni.ErpLineNum = maxpodetail.PoLine; maxuni.Site = site; maxuni.Domain = site; maxuni.Extend3 = "A"; db.TS_UNI_API.AddOrUpdate(maxuni); }); } }); if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } /// 富维多组件订单导入验证 /// /// /// /// /// /// /// public static ResultObject EXCEL_PO_SUBMANY(DataTable p_order_list1, List p_order_list, string p_creator, string site, string p_chineseName) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { List poList = new List(); List po_DetailList = new List(); List askList = new List(); List askDetailList = new List(); List uniList = new List(); List posub_DetailList = new List(); List asksubpartlist= new List(); //先循环找到一个日期的订单 foreach (DataColumn column in p_order_list1.Columns) { DateTime date = DateTime.MaxValue; DateTime.TryParse(column.ColumnName, out date); if (date != DateTime.MaxValue && date.Year > 2000) { //找到所有日期下订单 foreach (DataRow dataRow in p_order_list1.Rows)//订单分组表 { decimal _Qty = 0; decimal.TryParse(dataRow[column.ColumnName].ToString(), out _Qty); if (_Qty > 0) { // 创建主单据及看板 var _Po = CreatePo(db, poList, dataRow, date, p_creator, site); // 创建主单据及看板 var _PoAsk = CreateManyAsk(poList, askList, dataRow, date, p_creator, db, site); //创建明细 var _PoDetail = CreateManyPoDetail(dataRow, _Qty, db, date, _Po, _PoAsk, p_creator, po_DetailList, site); po_DetailList.Add(_PoDetail); var _Askdetail = CreateManyAskDetail(db, dataRow, _Po, _PoAsk, _PoDetail, p_creator, site); askDetailList.Add(_Askdetail); List Tsuniapi = CreateManyTsuniapi(_Po, _PoAsk, _PoDetail, _Askdetail, dataRow, site, db); foreach(var ts in Tsuniapi) { uniList.Add(ts); } List Subdetail = CreateManyPoDetailSubPart(_Po, _PoAsk, _PoDetail, _Askdetail, dataRow, site, db); foreach (var su in Subdetail) { posub_DetailList.Add(su); } List SubAskdetail = CreateManyAskSubPart(_Po, _PoAsk, _PoDetail, _Askdetail, dataRow, site, db); foreach (var suask in SubAskdetail) { asksubpartlist.Add(suask); } } } } } int cnt = 1; var podetail = po_DetailList.GroupBy(p => p.PoBillNum).ToList(); foreach (var item in poList) { var oldGuid = item.PoBillNum; var newBillId = SCP_BILLCODE_CONTROLLER.MakePOCode1();//订单号 var newAskNum = SCP_BILLCODE_CONTROLLER.MakeASKCodeByNum(cnt); var add_Po = item.Clone(newBillId, item.Site); db.TB_PO.Add(add_Po); var Add_Po_DETAIL = po_DetailList.Where(p => p.PoBillNum == oldGuid).ToList(); int cntPo_detail = 1; Add_Po_DETAIL.ForEach(p => p.PoBillNum = newBillId); Add_Po_DETAIL.ForEach(p => { p.PoLine = cntPo_detail; cntPo_detail++; }); db.TB_PO_DETAIL.AddRange(Add_Po_DETAIL); var Add_AskList = askList.Where(p => p.PoBillNum == oldGuid).ToList(); Add_AskList.ForEach(p => p.PoBillNum = newBillId); Add_AskList.ForEach(p => p.AskBillNum = newAskNum); Add_AskList.ForEach(p => p.ErpBillNum = newBillId); db.TB_ASK.AddRange(Add_AskList); var Add_AskSubList = asksubpartlist.Where(p => p.AskBillNum == oldGuid).ToList(); Add_AskSubList.ForEach(p => p.AskBillNum = newAskNum); db.TA_ASK_SUBPART.AddRange(Add_AskSubList); var Add_ASK_DETAIL = askDetailList.Where(p => p.PoBillNum == oldGuid).ToList(); Add_ASK_DETAIL.ForEach(p => p.PoBillNum = newBillId); int cntAsk_detail = 1; Add_ASK_DETAIL.ForEach(p => p.AskBillNum = newAskNum); Add_ASK_DETAIL.ForEach(p => { p.PoLine = cntAsk_detail; cntAsk_detail++; }); db.TB_ASK_DETAIL.AddRange(Add_ASK_DETAIL); var Add_UniList = uniList.Where(p => p.BillNum == oldGuid).ToList(); int cntTS_detail = 1; Add_UniList.ForEach(p => p.BillNum = newBillId); //Add_UniList.ForEach(p => //{ var unii = Add_UniList.GroupBy(t => t.PartCode).ToList(); unii.ForEach(t => { var uniii = t.ToList(); uniii.ForEach(r => { r.ErpLineNum = cntTS_detail; }); cntTS_detail++; }); //}); db.TS_UNI_API.AddRange(Add_UniList); var Add_PoSubList = posub_DetailList.Where(p => p.PoBillNum == oldGuid).ToList(); int poSub_detail = 1; Add_PoSubList.ForEach(p => p.PoBillNum = newBillId); //Add_PoSubList.ForEach(p => //{ var poii = Add_PoSubList.GroupBy(t => t.PartCode).ToList(); poii.ForEach(t => { var poiii = t.ToList(); poiii.ForEach(r => { r.PoLine = cntTS_detail; }); poSub_detail++; }); //}); db.TB_PO_SUBDETAIL.AddRange(Add_PoSubList); foreach (var sub in Add_UniList) { var suu = db.TA_SubPartCode.FirstOrDefault(t => t.PartCode == sub.PartCode && t.SubPartCode == sub.Extend1); if (suu != null) { db.TA_SubPartCode.Remove(suu); } } if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } //} } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } /// /// 本特勒订单导入 /// /// /// /// /// /// /// public static ResultObject EXCEL_PO_MOD_BTL(DataTable p_order_list1, List p_order_list, string site, string p_creator, DateTime p_time, PoState p_modtype, string SubSite, string p_chineseName, string p_buyerPhone) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { int number = 1; List lineError = new List(); List ErrorList = new List(); var _lst = p_order_list; _lst.ForEach (p => { var _count = _lst.Count(itm => itm.物料号码 == p.物料号码 && itm.供应商编号 == p.供应商编号); if (_count > 1) { lineError.Add(string.Format("导入的物料号码{0}有重复", p.物料号码)); ErrorList = lineError; } var _ls = CheckExcelMode_BTL(db, p); if (_ls.Count > 0) { lineError.Add(number.ToString()); ErrorList.Add(string.Join("
", _ls.ToArray())); } number++; }); if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { List poList = new List(); List po_DetailList = new List(); List askList = new List(); List askDetailList = new List(); List uniList = new List(); //先循环找到一个日期的订单 foreach (DataColumn column in p_order_list1.Columns) { DateTime date = DateTime.MaxValue; DateTime.TryParse(column.ColumnName, out date); if (date != DateTime.MaxValue && date.Year > 2000) { //找到所有日期下订单 foreach (DataRow dataRow in p_order_list1.Rows)//订单分组表 { decimal _Qty = 0; decimal.TryParse(dataRow[column.ColumnName].ToString(), out _Qty); if (_Qty > 0) { // 创建主单据及看板 var _Po = CreatePo(db, poList, dataRow, date, p_creator, site); // 创建主单据及看板 var _PoAsk = CreateAsk(poList, askList, dataRow, date, p_creator, db, site); //创建明细 var _PoDetail = CreatePoDetail(dataRow, _Qty, db, date, _Po, _PoAsk, p_creator, po_DetailList, site); po_DetailList.Add(_PoDetail); var _Askdetail = CreateAskDetail(db, dataRow, _Po, _PoAsk, _PoDetail, p_creator, site); askDetailList.Add(_Askdetail); var Tsuniapi = CreateTsuniapi(_Po, _PoAsk, _PoDetail, _Askdetail, dataRow, site); uniList.Add(Tsuniapi); } } } } int cnt = 1; var podetail = po_DetailList.GroupBy(p => p.PoBillNum).ToList(); foreach (var item in poList) { var oldGuid = item.PoBillNum; var newBillId = SCP_BILLCODE_CONTROLLER.MakePOCode3();//订单号 var newAskNum = SCP_BILLCODE_CONTROLLER.MakeASKCodeByNum(cnt); var add_Po = item.Clone(newBillId, item.Site); db.TB_PO.Add(add_Po); var Add_Po_DETAIL = po_DetailList.Where(p => p.PoBillNum == oldGuid).ToList(); int cntPo_detail = 1; Add_Po_DETAIL.ForEach(p => p.PoBillNum = newBillId); Add_Po_DETAIL.ForEach(p => { p.PoLine = cntPo_detail; cntPo_detail++; }); db.TB_PO_DETAIL.AddRange(Add_Po_DETAIL); var Add_AskList = askList.Where(p => p.PoBillNum == oldGuid).ToList(); Add_AskList.ForEach(p => p.PoBillNum = newBillId); Add_AskList.ForEach(p => p.AskBillNum = newAskNum); Add_AskList.ForEach(p => p.ErpBillNum = newBillId); db.TB_ASK.AddRange(Add_AskList); var Add_ASK_DETAIL = askDetailList.Where(p => p.PoBillNum == oldGuid).ToList(); Add_ASK_DETAIL.ForEach(p => p.PoBillNum = newBillId); int cntAsk_detail = 1; Add_ASK_DETAIL.ForEach(p => p.AskBillNum = newAskNum); Add_ASK_DETAIL.ForEach(p => { p.PoLine = cntAsk_detail; cntAsk_detail++; }); db.TB_ASK_DETAIL.AddRange(Add_ASK_DETAIL); var Add_UniList = uniList.Where(p => p.BillNum == oldGuid).ToList(); int cntTS_detail = 1; Add_UniList.ForEach(p => { p.ErpLineNum = cntTS_detail; cntTS_detail++; }); Add_UniList.ForEach(p => p.BillNum = newBillId); db.TS_UNI_API.AddRange(Add_UniList); if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } } //} } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_MOD", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } private static TB_PO CreatePo(ScpEntities db,List p_poList, DataRow p_dataRow,DateTime p_PoBillTime, string str,string site) { var _VendId = p_dataRow["供应商编号"].ToString(); var po = p_poList.FirstOrDefault(p=>p.VendId== _VendId && p.EndTime== p_PoBillTime); if (po != null) return po; TB_PO _po = new TB_PO(); _po.PoBillNum = Guid.NewGuid().ToString(); // _po.VendId = p_dataRow["供应商编号"].ToString(); _po.Buyer = p_dataRow["采购员"].ToString(); _po.ErpBillNum = _po.PoBillNum; _po.ModType = (int)BillFwModType.Non_Contract; _po.BuyerPhone = p_dataRow["采购员电话"].ToString(); _po.Site = site; _po.State = (int)PoState.Open; _po.GUID = Guid.NewGuid(); _po.IsDeleted = false; _po.CreateTime = DateTime.Now; _po.CreateUser = str; _po.BeginTime = DateTime.Now; _po.EndTime = p_PoBillTime; if (site == "U32") { _po.Remark = p_dataRow["备注"].ToString(); } p_poList.Add(_po); return _po; } private static TB_ASK CreateAsk(List p_poList, List p_askList, DataRow p_dataRow, DateTime p_PoBillTime, string str,ScpEntities db,string site) { var _VendId = p_dataRow["供应商编号"].ToString(); var _po = p_poList.FirstOrDefault(p => p.VendId == _VendId && p.EndTime == p_PoBillTime); var _Ask = p_askList.FirstOrDefault(p => p.VendId == _VendId && p.EndTime == p_PoBillTime); if (_Ask != null) return _Ask; TB_ASK _ask = new TB_ASK(); _ask.AskBillNum = "1"; _ask.GUID = Guid.NewGuid(); _ask.PoBillNum = _po.PoBillNum; _ask.VendId = _po.VendId; _ask.IsDeleted = false; _ask.CreateTime = DateTime.Now; _ask.CreateUser = str; _ask.Site = site; _ask.ReceivedPort = "";//交货口 _ask.State = (int)AskState.New; _ask.ModType = 2; _ask.ErpBillNum = _po.PoBillNum; _ask.BeginTime = DateTime.Parse(_po.BeginTime.ToString()); _ask.Buyer = _po.Buyer; _ask.EndTime = p_PoBillTime; _ask.BuyerPhone = _po.BuyerPhone; _ask.SubSite = site; if (site == "U32") { _ask.Remark = p_dataRow["备注"].ToString(); _po.Remark = p_dataRow["备注"].ToString(); } p_askList.Add(_ask); return _ask; } private static TB_ASK CreateManyAsk(List p_poList, List p_askList, DataRow p_dataRow, DateTime p_PoBillTime, string str, ScpEntities db, string site) { var _VendId = p_dataRow["供应商编号"].ToString(); var _po = p_poList.FirstOrDefault(p => p.VendId == _VendId && p.EndTime == p_PoBillTime); var _Ask = p_askList.FirstOrDefault(p => p.VendId == _VendId && p.EndTime == p_PoBillTime); if (_Ask != null) return _Ask; TB_ASK _ask = new TB_ASK(); _ask.AskBillNum = "1"; _ask.GUID = Guid.NewGuid(); _ask.PoBillNum = _po.PoBillNum; _ask.VendId = _po.VendId; _ask.IsDeleted = false; _ask.CreateTime = DateTime.Now; _ask.CreateUser = str; _ask.Site = site; _ask.ReceivedPort = "";//交货口 _ask.State = (int)AskState.New; _ask.ModType = 2; _ask.ErpBillNum = _po.PoBillNum; _ask.BeginTime = DateTime.Parse(_po.BeginTime.ToString()); _ask.Buyer = _po.Buyer; _ask.EndTime = p_PoBillTime; _ask.BuyerPhone = _po.BuyerPhone; _ask.SubSite = site; if (site == "U32") { _ask.Remark = p_dataRow["备注"].ToString(); _po.Remark = p_dataRow["备注"].ToString(); } _ask.Extend3 = "1"; p_askList.Add(_ask); return _ask; } private static TB_ASK_DETAIL CreateAskDetail(ScpEntities db, DataRow p_dataRow, TB_PO p_Po, TB_ASK p_Ask,TB_PO_DETAIL p_PoDetail,string str,string site) { TB_ASK_DETAIL _tDetail = new TB_ASK_DETAIL(); _tDetail.PoBillNum = p_Po.PoBillNum; _tDetail.AskBillNum = p_Ask.AskBillNum; _tDetail.PoLine = p_PoDetail.PoLine; _tDetail.PoUnit = p_PoDetail.PoUnit; _tDetail.CreateTime = DateTime.Now; _tDetail.CreateUser = str; _tDetail.PartCode = p_PoDetail.PartCode; _tDetail.BeginTime = DateTime.Now; _tDetail.EndTime = p_PoDetail.EndTime; _tDetail.TempQty = 0; _tDetail.AskQty = p_PoDetail.PlanQty; _tDetail.IsDeleted = false; _tDetail.LocUnit = p_PoDetail.LocUnit; _tDetail.UnConv = 1; _tDetail.SubSite = p_dataRow["零件号"].ToString(); var _vender2 = db.TA_Appliance.SingleOrDefault(t => t.PartNumber == _tDetail.SubSite.ToUpper() && t.VendID == p_Po.VendId); var part = db.TA_PART.SingleOrDefault(t => t.PartCode == _tDetail.PartCode); _tDetail.DockCode = part.PartGroup; _tDetail.Extend1 = _vender2.ReceivingPort;//收货口 _tDetail.Extend2 = _vender2.Model;//车型 _tDetail.Extend3 = _vender2.Texture;//材质 _tDetail.State = (int)PoState.Open; _tDetail.Currency = part.PartDesc2;//规格 _tDetail.GUID = Guid.NewGuid(); _tDetail.Price = p_PoDetail.Price; _tDetail.Remark = p_Po.VendId; _tDetail.Remark1= p_Po.VendId; _tDetail.UpdateInfo= p_dataRow["组件物料号"].ToString(); if (site == "U32") { _tDetail.Remark = p_dataRow["备注"].ToString(); } return _tDetail; } private static TB_ASK_DETAIL CreateManyAskDetail(ScpEntities db, DataRow p_dataRow, TB_PO p_Po, TB_ASK p_Ask, TB_PO_DETAIL p_PoDetail, string str, string site) { TB_ASK_DETAIL _tDetail = new TB_ASK_DETAIL(); _tDetail.PoBillNum = p_Po.PoBillNum; _tDetail.AskBillNum = p_Ask.AskBillNum; _tDetail.PoLine = p_PoDetail.PoLine; _tDetail.PoUnit = p_PoDetail.PoUnit; _tDetail.CreateTime = DateTime.Now; _tDetail.CreateUser = str; _tDetail.PartCode = p_PoDetail.PartCode; _tDetail.BeginTime = DateTime.Now; _tDetail.EndTime = p_PoDetail.EndTime; _tDetail.TempQty = 0; _tDetail.AskQty = p_PoDetail.PlanQty; _tDetail.IsDeleted = false; _tDetail.LocUnit = p_PoDetail.LocUnit; _tDetail.UnConv = 1; _tDetail.SubSite = p_dataRow["零件号"].ToString(); var _vender2 = db.TA_Appliance.SingleOrDefault(t => t.PartNumber == _tDetail.SubSite.ToUpper() && t.VendID == p_Po.VendId); var part = db.TA_PART.SingleOrDefault(t => t.PartCode == _tDetail.PartCode); _tDetail.DockCode = part.PartGroup; _tDetail.Extend1 = _vender2.ReceivingPort;//收货口 _tDetail.Extend2 = _vender2.Model;//车型 _tDetail.Extend3 = _vender2.Texture;//材质 _tDetail.State = (int)PoState.Open; _tDetail.Currency = part.PartDesc2;//规格 _tDetail.GUID = Guid.NewGuid(); _tDetail.Price = p_PoDetail.Price; _tDetail.Remark = p_Po.VendId; //_tDetail.UpdateInfo = p_dataRow["组件物料号"].ToString(); return _tDetail; } private static TB_PO_DETAIL CreatePoDetail(DataRow p_dataRow,decimal p_Qty, ScpEntities db, DateTime p_PoBillTime,TB_PO p_Po,TB_ASK p_Ask,string str, List po_DetailList,string site) { int _rowNumber = 1; var _Part = p_dataRow["物料号码"].ToString(); TB_PO_DETAIL _detail = new TB_PO_DETAIL(); _detail.PoBillNum = p_Po.PoBillNum; _detail.PartCode = p_dataRow["物料号码"].ToString(); _detail.PoUnit = p_dataRow["单位"].ToString(); _detail.Extend1 = p_dataRow["零件号"].ToString(); _detail.Currency = "CNY"; _detail.CreateTime =DateTime.Parse( p_dataRow["订单创建时间"].ToString()); _detail.BeginTime = DateTime.Now; _detail.IsDeleted = false; _detail.LocUnit = p_dataRow["组件计量单位"].ToString(); _detail.UnConv = 1; _detail.PackQty = decimal.Parse(p_dataRow["组件数量"].ToString()); _detail.State = (int)PoState.Open; _detail.GUID = Guid.NewGuid(); _detail.Site = site; _detail.EndTime = p_PoBillTime; _detail.PlanQty = p_Qty; _detail.CreateUser = str; var _price = db.TB_NetPrice.Count(t => t.PartCode == _detail.PartCode.ToUpper() && t.VendId == p_Po.VendId); if (_price == 0) { var _price1 = db.TA_PART.SingleOrDefault(t => t.PartCode == _detail.PartCode.ToUpper()); _detail.Price = decimal.Parse(_price1.Remark); } else { var _price2 = db.TB_NetPrice.Where(t => t.PartCode == _detail.PartCode.ToUpper()&&t.VendId==p_Po.VendId).Select(r => r.EndTime).Max(); var _price8 = db.TB_NetPrice.Where(t => t.PartCode == _detail.PartCode.ToUpper() && t.VendId == p_Po.VendId).Select(r => r.StartTime).Max(); DateTime dateTime = DateTime.Now; if (_price2 > dateTime || _price2 == dateTime) { var _price3 = db.TB_NetPrice.FirstOrDefault(t => t.PartCode == _detail.PartCode.ToUpper() && t.StartTime == _price8 && t.VendId == p_Po.VendId); _detail.Price = _price3.Amt; } else { var _price4 = db.TA_PART.SingleOrDefault(t => t.PartCode == _detail.PartCode.ToUpper()); _detail.Price = decimal.Parse(_price4.Remark); } } _detail.Extend3 = p_dataRow["BOM版本"].ToString(); _detail.Extend2= p_dataRow["存储地点"].ToString(); _detail.SubSite = p_dataRow["组件物料号"].ToString(); _detail.CreateUser = p_dataRow["采购组"].ToString();//采购组 _rowNumber++; return _detail; } private static TB_PO_DETAIL CreateManyPoDetail(DataRow p_dataRow, decimal p_Qty, ScpEntities db, DateTime p_PoBillTime, TB_PO p_Po, TB_ASK p_Ask, string str, List po_DetailList, string site) { int _rowNumber = 1; var _Part = p_dataRow["物料号码"].ToString(); TB_PO_DETAIL _detail = new TB_PO_DETAIL(); _detail.PoBillNum = p_Po.PoBillNum; _detail.PartCode = p_dataRow["物料号码"].ToString(); _detail.PoUnit = p_dataRow["单位"].ToString(); _detail.Extend1 = p_dataRow["零件号"].ToString(); _detail.Currency = "CNY"; _detail.CreateTime = DateTime.Parse(p_dataRow["订单创建时间"].ToString()); _detail.BeginTime = DateTime.Now; _detail.IsDeleted = false; _detail.UnConv = 1; _detail.State = (int)PoState.Open; _detail.GUID = Guid.NewGuid(); _detail.Site = site; _detail.EndTime = p_PoBillTime; _detail.PlanQty = p_Qty; _detail.CreateUser = str; var _price = db.TB_NetPrice.Count(t => t.PartCode == _detail.PartCode.ToUpper() && t.VendId == p_Po.VendId); if (_price == 0) { var _price1 = db.TA_PART.SingleOrDefault(t => t.PartCode == _detail.PartCode.ToUpper()); _detail.Price = decimal.Parse(_price1.Remark); } else { var _price2 = db.TB_NetPrice.Where(t => t.PartCode == _detail.PartCode.ToUpper() && t.VendId == p_Po.VendId).Select(r => r.EndTime).Max(); var _price8 = db.TB_NetPrice.Where(t => t.PartCode == _detail.PartCode.ToUpper() && t.VendId == p_Po.VendId).Select(r => r.StartTime).Max(); DateTime dateTime = DateTime.Now; if (_price2 > dateTime || _price2 == dateTime) { var _price3 = db.TB_NetPrice.FirstOrDefault(t => t.PartCode == _detail.PartCode.ToUpper() && t.StartTime == _price8 && t.VendId == p_Po.VendId); _detail.Price = _price3.Amt; } else { var _price4 = db.TA_PART.SingleOrDefault(t => t.PartCode == _detail.PartCode.ToUpper()); _detail.Price = decimal.Parse(_price4.Remark); } } _detail.CreateUser = p_dataRow["采购组"].ToString();//采购组 _rowNumber++; return _detail; } private static TS_UNI_API CreateTsuniapi( TB_PO p_Po, TB_ASK p_Ask, TB_PO_DETAIL p_PoDetail,TB_ASK_DETAIL p_AskDetail,DataRow p_dataRow,string site) { TS_UNI_API uni = new TS_UNI_API(); uni.InterfaceType = "Pobillnum"; //订单标识 uni.TableName = "TS_UNI_API"; uni.BillType = (int)BillType.ReHandleVin; uni.SubBillType = 0; uni.BillNum = p_Po.PoBillNum;//订单号 uni.PartCode = p_PoDetail.PartCode; //零件号 uni.Buyer = p_Po.Buyer;//采购员 uni.BuyerPhone = p_Po.BuyerPhone;//采购员电话 uni.ModType = p_PoDetail.CreateUser;//采购组 uni.Qty = p_PoDetail.PlanQty;//零件数量 uni.CreateOper = p_Po.CreateUser; uni.CreateTime = p_Po.CreateTime;//订单创建时间 uni.VendId = p_Po.VendId;//供应商编号 uni.PoUnit = p_PoDetail.PoUnit;//零件单位 uni.LocUnit = p_PoDetail.LocUnit;//组件单位 uni.ValidDate = DateTime.Now;//当前系统时间 uni.ErpLineNum = p_PoDetail.PoLine;//订单行号 uni.Price = p_PoDetail.Price;//零件价格 uni.Site = p_Po.Site;//地点 uni.Extend3= p_dataRow["存储地点"].ToString(); uni.Domain = site; uni.Extend2 = "N";//退货凭证 uni.Extend1 = p_PoDetail.SubSite;//组件物料号 if (site == "U32") { uni.PutTime = DateTime.Parse(p_PoDetail.EndTime.ToString()); //要求到货日期 uni.Attn = p_dataRow["备注"].ToString(); } else { uni.PutTime = ScpCache.GetServerTime(); } uni.Batch = p_PoDetail.PoUnit;//采购计量单位 uni.ErpBillNum = p_PoDetail.PackQty.ToString();//组件数量 uni.VendBatch = p_PoDetail.CreateUser; uni.State = 1; uni.Invoice = "3"; uni.Currency = p_Po.SubSite; if (site == "W21") { uni.Barcode = "CY03"; } else { uni.Barcode = "FB06"; } uni.Currency = p_PoDetail.Extend3; uni.Receiver = "I";//订单类型 uni.SubSite = p_AskDetail.Extend1; return uni; } private static List CreateManyTsuniapi(TB_PO p_Po, TB_ASK p_Ask, TB_PO_DETAIL p_PoDetail, TB_ASK_DETAIL p_AskDetail, DataRow p_dataRow, string site, ScpEntities db) { List unilist = new List(); var _bom = p_dataRow["BOM版本"].ToString(); var subpart = db.TA_SubPartCode.Where(p => p.PartCode == p_PoDetail.PartCode&&p.BOMedtiton == _bom).ToList(); foreach (var sub in subpart) { TS_UNI_API uni = new TS_UNI_API(); uni.InterfaceType = "Pobillnum"; //订单标识 uni.TableName = "TS_UNI_API"; uni.BillType = (int)BillType.ReHandleVin; uni.SubBillType = 0; uni.BillNum = p_Po.PoBillNum;//订单号 uni.PartCode = p_PoDetail.PartCode; //零件号 uni.Buyer = p_Po.Buyer;//采购员 uni.BuyerPhone = p_Po.BuyerPhone;//采购员电话 uni.ModType = p_PoDetail.CreateUser;//采购组 uni.Qty = p_PoDetail.PlanQty;//零件数量 uni.CreateOper = p_Po.CreateUser; uni.CreateTime = p_Po.CreateTime;//订单创建时间 uni.PutTime = ScpCache.GetServerTime(); uni.VendId = p_Po.VendId;//供应商编号 uni.PoUnit = p_PoDetail.PoUnit;//零件单位 var unit = db.TA_PART.FirstOrDefault(t=>t.PartCode==sub.SubPartCode); uni.LocUnit = unit.Unit;//组件单位 uni.ValidDate = DateTime.Now;//当前系统时间 uni.ErpLineNum = p_PoDetail.PoLine;//订单行号 uni.Price = p_PoDetail.Price;//零件价格 uni.Site = p_Po.Site;//地点 uni.Extend3 = p_dataRow["存储地点"].ToString(); uni.Domain = site; uni.Extend2 = "N";//退货凭证 uni.Extend1 = sub.SubPartCode;//组件物料号 uni.Batch = p_PoDetail.PoUnit;//采购计量单位 uni.ErpBillNum = (sub.Qty* p_PoDetail.PlanQty).ToString();//组件数量 uni.VendBatch = p_PoDetail.CreateUser; uni.State = 1; uni.Invoice = "3"; uni.Currency = p_Po.SubSite; if (site == "W21") { uni.Barcode = "CY03"; } else { uni.Barcode = "FB06"; } uni.Currency = p_dataRow["BOM版本"].ToString(); uni.Receiver = "I";//订单类型 uni.SubSite = p_AskDetail.Extend1; unilist.Add(uni); } return unilist; } private static List CreateManyPoDetailSubPart(TB_PO p_Po, TB_ASK p_Ask, TB_PO_DETAIL p_PoDetail, TB_ASK_DETAIL p_AskDetail, DataRow p_dataRow, string site, ScpEntities db) { List posublist = new List(); var _bom = p_dataRow["BOM版本"].ToString(); var subpart = db.TA_SubPartCode.Where(p => p.PartCode == p_PoDetail.PartCode && p.BOMedtiton == _bom).ToList(); foreach (var sub in subpart) { TB_PO_SUBDETAIL posub = new TB_PO_SUBDETAIL(); posub.PoBillNum = p_Po.PoBillNum; posub.PartCode = p_PoDetail.PartCode; posub.SubPartCode = sub.SubPartCode; posub.BOMedtiton = sub.BOMedtiton; posub.Qty = p_PoDetail.PlanQty; posub.SubQty = p_PoDetail.PlanQty * sub.Qty; posub.PoLine = p_PoDetail.PoLine; posublist.Add(posub); } return posublist; } private static List CreateManyAskSubPart(TB_PO p_Po, TB_ASK p_Ask, TB_PO_DETAIL p_PoDetail, TB_ASK_DETAIL p_AskDetail, DataRow p_dataRow, string site, ScpEntities db) { List asksublist = new List(); var _bom = p_dataRow["BOM版本"].ToString(); var subpart = db.TA_SubPartCode.Where(p => p.PartCode == p_PoDetail.PartCode && p.BOMedtiton == _bom).ToList(); foreach (var sub in subpart) { TA_ASK_SUBPART asksub = new TA_ASK_SUBPART(); asksub.PartCode = p_PoDetail.PartCode; asksub.SubPartCode = sub.SubPartCode; asksub.BOMedtiton = sub.BOMedtiton; asksub.Qty = p_PoDetail.PlanQty*sub.Qty; asksub.AskBillNum = p_AskDetail.PoBillNum; asksublist.Add(asksub); } return asksublist; } private static TB_PO CreatePo1(List p_poList, DataRow p_dataRow, DateTime p_PoBillTime, string str,string site ) { var _VendId = p_dataRow["供应商编号"].ToString(); var po = p_poList.FirstOrDefault(p => p.VendId == _VendId && p.EndTime == p_PoBillTime); if (po != null) return po; TB_PO _po = new TB_PO(); _po.PoBillNum = Guid.NewGuid().ToString(); // _po.VendId = p_dataRow["供应商编号"].ToString(); _po.Buyer = p_dataRow["采购员"].ToString(); _po.ErpBillNum = _po.PoBillNum; _po.ModType = (int)BillFwModType.Contract; _po.BuyerPhone = p_dataRow["采购员电话"].ToString(); _po.Site = site; _po.State = (int)PoState.Open; _po.GUID = Guid.NewGuid(); _po.IsDeleted = false; _po.CreateTime = DateTime.Now; _po.CreateUser = str; _po.BeginTime = DateTime.Now; _po.EndTime = p_PoBillTime; if (site == "U32") { _po.Remark = p_dataRow["备注"].ToString(); } p_poList.Add(_po); return _po; } private static TB_PO CreatePoQh(List p_poList, DataRow p_dataRow, DateTime p_PoBillTime, string str, string site) { var _VendId = p_dataRow["供应商编号"].ToString(); var po = p_poList.FirstOrDefault(p => p.VendId == _VendId && p.EndTime == p_PoBillTime); if (po != null) return po; TB_PO _po = new TB_PO(); _po.PoBillNum = Guid.NewGuid().ToString(); // _po.VendId = p_dataRow["供应商编号"].ToString(); _po.Buyer = p_dataRow["采购员"].ToString(); _po.ErpBillNum = _po.PoBillNum; _po.ModType = (int)BillFwModType.Qh_Contract; _po.BuyerPhone = p_dataRow["采购员电话"].ToString(); _po.Site = site; _po.State = (int)PoState.Open; _po.GUID = Guid.NewGuid(); _po.IsDeleted = false; _po.CreateTime = DateTime.Now; _po.CreateUser = str; _po.BeginTime = DateTime.Now; _po.EndTime = p_PoBillTime; if (site == "U32") { _po.Remark = p_dataRow["备注"].ToString(); } _po.UpdateInfo="Y"; p_poList.Add(_po); return _po; } private static TB_ASK CreateAsk1(List p_poList, List p_askList, DataRow p_dataRow, DateTime p_PoBillTime, string str, ScpEntities db,string site ) { var _VendId = p_dataRow["供应商编号"].ToString(); var _po = p_poList.FirstOrDefault(p => p.VendId == _VendId && p.EndTime == p_PoBillTime); var _Ask = p_askList.FirstOrDefault(p => p.VendId == _VendId && p.EndTime == p_PoBillTime); if (_Ask != null) return _Ask; int _num = 1; TB_ASK _ask = new TB_ASK(); _ask.AskBillNum = "1"; _ask.GUID = Guid.NewGuid(); _ask.PoBillNum = _po.PoBillNum; _ask.VendId = _po.VendId; _ask.IsDeleted = false; _ask.CreateTime = DateTime.Now; _ask.CreateUser = str; _ask.Site = site; _ask.ReceivedPort = "";//交货口 _ask.State = (int)AskState.New; //_ask.State = (int)AskState.Release; _ask.ModType = 2; _ask.ErpBillNum = _po.PoBillNum; _ask.BeginTime = DateTime.Parse(_po.BeginTime.ToString()); _ask.Buyer = _po.Buyer; _ask.BuyerPhone = _po.BuyerPhone; _ask.EndTime = p_PoBillTime; _ask.SubSite = site; if (site == "U32") { _ask.Remark = p_dataRow["备注"].ToString(); } p_askList.Add(_ask); return _ask; } private static TB_ASK_DETAIL CreateAskDetail1(ScpEntities db, DataRow p_dataRow, TB_PO p_Po, TB_ASK p_Ask, TB_PO_DETAIL p_PoDetail, string str,string site) { TB_ASK_DETAIL _tDetail = new TB_ASK_DETAIL(); _tDetail.PoBillNum = p_Po.PoBillNum; _tDetail.AskBillNum = p_Ask.AskBillNum; _tDetail.PoLine = p_PoDetail.PoLine; _tDetail.PoUnit = p_PoDetail.PoUnit; _tDetail.CreateTime = DateTime.Now; _tDetail.CreateUser = str; _tDetail.PartCode = p_PoDetail.PartCode; _tDetail.BeginTime = DateTime.Now; _tDetail.EndTime = p_PoDetail.EndTime; _tDetail.TempQty = 0; _tDetail.AskQty = p_PoDetail.PlanQty; _tDetail.IsDeleted = false; _tDetail.LocUnit = p_PoDetail.LocUnit; _tDetail.UnConv = 1; _tDetail.SubSite = p_dataRow["零件号"].ToString(); if (!string.IsNullOrEmpty(_tDetail.SubSite.ToString())) { var _vender2 = db.TA_Appliance.FirstOrDefault(t => t.PartNumber == _tDetail.SubSite.ToUpper() && t.VendID == p_Po.VendId); _tDetail.Extend1 = _vender2.ReceivingPort;//收货口 _tDetail.Extend2 = _vender2.Model;//车型 _tDetail.Extend3 = _vender2.Texture;//材质 } var part = db.TA_PART.SingleOrDefault(t => t.PartCode == _tDetail.PartCode); _tDetail.DockCode = part.PartGroup; _tDetail.State = (int)PoState.Open; _tDetail.Currency = part.PartDesc2;//规格 _tDetail.GUID = Guid.NewGuid(); _tDetail.Price = p_PoDetail.Price; _tDetail.Remark = p_Po.VendId; _tDetail.Remark1 = p_Po.VendId; if (site == "U32") { _tDetail.Remark = p_dataRow["备注"].ToString(); } return _tDetail; } private static TB_PO_DETAIL CreatePoDetail1(DataRow p_dataRow, decimal p_Qty, ScpEntities db, DateTime p_PoBillTime, TB_PO p_Po, TB_ASK p_Ask, string str,string site) { int _rowNumber = 1; TB_PO_DETAIL _detail = new TB_PO_DETAIL(); _detail.PartCode= p_dataRow["物料号码"].ToString(); _detail.PoBillNum = p_Po.PoBillNum; _detail.PoUnit = p_dataRow["单位"].ToString(); _detail.Extend1 = p_dataRow["零件号"].ToString(); _detail.Currency = "CNY"; _detail.PoLine = _rowNumber; _detail.CreateTime = DateTime.Parse(p_dataRow["订单创建时间"].ToString()); _detail.BeginTime = DateTime.Now; _detail.IsDeleted = false; _detail.UnConv = 1; _detail.State = (int)PoState.Open; _detail.GUID = Guid.NewGuid(); _detail.Site = site; _detail.EndTime = p_PoBillTime; _detail.PlanQty = p_Qty; _detail.CreateUser = str; var _price = db.TB_PRICE.Count(t => t.PartCode == _detail.PartCode.ToUpper() && t.VendId == p_Po.VendId); if (_price == 0) { var _price1 = db.TA_PART.SingleOrDefault(t => t.PartCode == _detail.PartCode.ToUpper()); _detail.Price = decimal.Parse(_price1.Remark); } else { var _price2 = db.TB_PRICE.Where(t => t.PartCode == _detail.PartCode.ToUpper()&&t.VendId==p_Po.VendId).Select(r => r.EndTime).Max(); var _price8 = db.TB_PRICE.Where(t => t.PartCode == _detail.PartCode.ToUpper() && t.VendId == p_Po.VendId).Select(r => r.StartTime).Max(); DateTime dateTime = DateTime.Now; if(_price2> dateTime|| _price2 ==dateTime) { var _price3 = db.TB_PRICE.Where(t => t.PartCode == _detail.PartCode.ToUpper() && t.EndTime == _price2 && t.VendId == p_Po.VendId).OrderByDescending(o => o.UID).FirstOrDefault(); //获取最新采购的价格 _detail.Price = _price3.Amt; } else { var _price4 = db.TA_PART.FirstOrDefault(t => t.PartCode == _detail.PartCode.ToUpper()); _detail.Price = decimal.Parse(_price4.Remark); } } _detail.Extend2 = p_dataRow["存储地点"].ToString(); _detail.CreateUser = p_dataRow["采购组"].ToString();//采购组 _rowNumber++; return _detail; } private static TB_PO_DETAIL CreatePoDetail1Qh(DataRow p_dataRow, decimal p_Qty, ScpEntities db, DateTime p_PoBillTime, TB_PO p_Po, TB_ASK p_Ask, string str, string site) { int _rowNumber = 1; TB_PO_DETAIL _detail = new TB_PO_DETAIL(); _detail.PartCode = p_dataRow["物料号码"].ToString(); _detail.PoBillNum = p_Po.PoBillNum; _detail.PoUnit = p_dataRow["单位"].ToString(); _detail.Extend1 = p_dataRow["零件号"].ToString(); _detail.Currency = "CNY"; _detail.PoLine = _rowNumber; _detail.CreateTime = DateTime.Parse(p_dataRow["订单创建时间"].ToString()); _detail.BeginTime = DateTime.Now; _detail.IsDeleted = false; _detail.UnConv = 1; _detail.State = (int)PoState.Open; _detail.GUID = Guid.NewGuid(); _detail.Site = site; _detail.EndTime = p_PoBillTime; _detail.PlanQty = p_Qty; _detail.CreateUser = str; var _price = db.TB_PRICE.Count(t => t.PartCode == _detail.PartCode.ToUpper() && t.VendId == p_Po.VendId); if (_price == 0) { var _price1 = db.TA_PART.SingleOrDefault(t => t.PartCode == _detail.PartCode.ToUpper()); _detail.Price = decimal.Parse(_price1.Remark); } else { var _price2 = db.TB_PRICE.Where(t => t.PartCode == _detail.PartCode.ToUpper() && t.VendId == p_Po.VendId).Select(r => r.EndTime).Max(); var _price8 = db.TB_PRICE.Where(t => t.PartCode == _detail.PartCode.ToUpper() && t.VendId == p_Po.VendId).Select(r => r.StartTime).Max(); DateTime dateTime = DateTime.Now; if (_price2 > dateTime || _price2 == dateTime) { var _price3 = db.TB_PRICE.FirstOrDefault(t => t.PartCode == _detail.PartCode.ToUpper() && t.EndTime == _price2 && t.VendId == p_Po.VendId); _detail.Price = _price3.Amt; } else { var _price4 = db.TA_PART.FirstOrDefault(t => t.PartCode == _detail.PartCode.ToUpper()); _detail.Price = decimal.Parse(_price4.Remark); } } _detail.Extend2 = p_dataRow["存储地点"].ToString(); _detail.CreateUser = p_dataRow["采购组"].ToString();//采购组 _detail.UpdateInfo = p_dataRow["供应商编号"].ToString(); _rowNumber++; return _detail; } private static TS_UNI_API CreateTsuniapi1(TB_PO p_Po, TB_ASK p_Ask, TB_PO_DETAIL p_PoDetail, DataRow p_dataRow,TB_ASK_DETAIL _Askdetail,string site) { TS_UNI_API uni = new TS_UNI_API(); uni.InterfaceType = "Pobillnum"; //订单标识 uni.TableName = "TS_UNI_API"; uni.BillType = (int)BillType.ReHandleVin; uni.SubBillType = 0; uni.BillNum = p_Po.PoBillNum;//订单号 uni.PartCode = p_PoDetail.PartCode; //零件号 uni.Buyer = p_Po.Buyer;//采购员 uni.BuyerPhone = p_Po.BuyerPhone;//采购员电话 uni.ModType = p_PoDetail.CreateUser;//采购组 uni.Qty = p_PoDetail.PlanQty;//零件数量 uni.CreateOper = p_Po.CreateUser; uni.CreateTime = p_Po.CreateTime;//订单创建时间 uni.PutTime = ScpCache.GetServerTime(); uni.VendId = p_Po.VendId;//供应商编号 uni.PoUnit = p_PoDetail.PoUnit;//零件单位 uni.LocUnit = p_PoDetail.LocUnit;//组件单位 uni.ValidDate = DateTime.Now;//当前系统时间 uni.ErpLineNum = 1;//订单行号 uni.Price = p_PoDetail.Price;//零件价格 uni.Site = p_Po.Site;//地点 uni.Extend3 = p_dataRow["存储地点"].ToString(); uni.Domain = site; uni.Extend2 = "N";//退货凭证 uni.PutTime = DateTime.Parse(p_PoDetail.EndTime.ToString()); //要求到货日期 uni.Batch = p_PoDetail.PoUnit;//采购计量单位 uni.VendBatch = p_PoDetail.CreateUser; uni.State = 1; uni.Invoice = "0"; if (p_Po.Site == "W21") { uni.Barcode = "CY01"; } else{ uni.Barcode = "FB03"; } uni.Currency = p_PoDetail.Extend3; uni.Receiver = "I"; uni.SubSite = _Askdetail.Extend1; if (site == "U32") { uni.Attn = p_dataRow["备注"].ToString(); } return uni; } private static TS_UNI_API CreateTsuniapiQh(TB_PO p_Po, TB_ASK p_Ask, TB_PO_DETAIL p_PoDetail, DataRow p_dataRow, TB_ASK_DETAIL _Askdetail, string site) { TS_UNI_API uni = new TS_UNI_API(); uni.InterfaceType = "Pobillnum"; //订单标识 uni.TableName = "TS_UNI_API"; uni.BillType = (int)BillType.ReHandleVin; uni.SubBillType = 0; uni.BillNum = p_Po.PoBillNum;//订单号 uni.PartCode = p_PoDetail.PartCode; //零件号 uni.Buyer = p_Po.Buyer;//采购员 uni.BuyerPhone = p_Po.BuyerPhone;//采购员电话 uni.ModType = p_PoDetail.CreateUser;//采购组 uni.Qty = p_PoDetail.PlanQty;//零件数量 uni.CreateOper = p_Po.CreateUser; uni.CreateTime = p_Po.CreateTime;//订单创建时间 uni.PutTime = ScpCache.GetServerTime(); uni.VendId = p_Po.VendId;//供应商编号 uni.PoUnit = p_PoDetail.PoUnit;//零件单位 uni.LocUnit = p_PoDetail.LocUnit;//组件单位 uni.ValidDate = DateTime.Now;//当前系统时间 uni.ErpLineNum = 1;//订单行号 uni.Price = p_PoDetail.Price;//零件价格 uni.Site = p_Po.Site;//地点 uni.Extend3 = p_dataRow["存储地点"].ToString(); uni.Domain = site; uni.Extend2 = "N";//退货凭证 uni.PutTime = DateTime.Parse(p_PoDetail.EndTime.ToString()); //要求到货日期 uni.Batch = p_PoDetail.PoUnit;//采购计量单位 uni.VendBatch = p_PoDetail.CreateUser; uni.State = 1; uni.Invoice = "0"; if (p_Po.Site == "W21") { uni.Barcode = "CY01"; } else { uni.Barcode = "FB03"; } uni.Currency = p_PoDetail.Extend3; uni.Receiver = "I"; uni.SubSite = _Askdetail.Extend1; uni.SubSite = "Y"; return uni; } public static List EXCEL_ASK_Check(List p_order_list) { List ErrorList = new List(); using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { p_order_list.ForEach (p => { //var _ls = CheckExcel(db, p); var _checkls = CheckExcelPackQty(db, p); if (_checkls.Count > 0) { ErrorList.Add(string.Join("
", _checkls.ToArray())); } }); } return ErrorList; } public static ResultObject EXCEL_PO_TO_ASK(List p_order_list, string p_creator, string p_buyer, DateTime p_time, BillModType p_modtype, string p_site, bool IsAutoPublish = false) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { int number = 1; List lineError = new List(); List ErrorList = new List(); p_order_list.ForEach (p => { var _ls = CheckExcel(db, p); if (_ls.Count > 0) { lineError.Add(number.ToString()); ErrorList.Add(string.Join("
", _ls.ToArray())); } number++; }); if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { p_order_list = p_order_list.Where(p => int.Parse(p.数量) != 0).ToList(); //var VenderList = p_order_list.Select(p => p.供应商编号).Distinct(); //var PartCodeList = p_order_list.Select(p => p.零件号).Distinct(); var OrderList = p_order_list.GroupBy(p => new { p.分组编号, p.供应商编号 }).ToList(); OrderList.ForEach((p) => { var list_distinct = p.GroupBy(t => new { t.零件号, t.行号 }).ToList(); var list = p.ToList(); if (list_distinct.Count < list.Count) { _ret.MessageList.Add("相同组号,存在同一编号、行号的数据"); return; } if (list.Count > 0) { var _entity = list.FirstOrDefault(); TB_ASK _ask = new TB_ASK(); _ask.AskBillNum = SCP_BILLCODE_CONTROLLER.MakeASKCode(); _ask.State = (int)AskState.New; _ask.PoBillNum = _entity.QAD订单号.ToUpper(); _ask.ModType = (int)BillModType.Contract; _ask.Site = p_site; if (IsAutoPublish) { _ask.State = (int)AskState.Release; } else { _ask.State = (int)AskState.New; } _ask.BeginTime = DateTime.Now; _ask.Buyer = _entity.交货联系人; _ask.BuyerPhone = _entity.交货联系人电话; _ask.ErpBillNum = _entity.QAD订单号.ToUpper(); _ask.EndTime = DateTime.Parse(_entity.要求到货日期); _ask.CreateTime = DateTime.Now; _ask.CreateUser = p_creator; _ask.VendId = _entity.供应商编号.ToUpper(); _ask.GUID = Guid.NewGuid(); _ask.IsDeleted = false; db.TB_ASK.Add(_ask); #region 供应商新任务代办接口 TB_PENING_ITEMS _item = new TB_PENING_ITEMS(); _item.ROLE_NAME = "供应商"; _item.ITEM_NO = _ask.AskBillNum; _item.ITEM_CONTENT = "要货看盘有信息"; _item.ITEM_TYPE = (int)PENDING_MESSAGE_TYPE.NEW_ASK; _item.VEND_ID = _ask.VendId; _item.ITEM_STATE = (int)PENDING_STATE.WAITING; _item.SENDER = _entity.交货联系人; _item.SENDING_TIME = DateTime.Now; db.TB_PENING_ITEMS.Add(_item); #endregion // int _number = 1; list.ForEach((itm) => { TB_ASK_DETAIL _t_ASK_Detail = new TB_ASK_DETAIL(); //_t_ASK_Detail.PoLine = _number; _t_ASK_Detail.PoLine = Int32.Parse(itm.行号); _t_ASK_Detail.Currency = itm.币种; _t_ASK_Detail.AskBillNum = _ask.AskBillNum; _t_ASK_Detail.PoBillNum = _ask.PoBillNum; _t_ASK_Detail.PoUnit = itm.单位; _t_ASK_Detail.CreateTime = DateTime.Now; _t_ASK_Detail.CreateUser = _ask.CreateUser; _t_ASK_Detail.PartCode = (itm.零件号.ToUpper()).TrimEnd(); _t_ASK_Detail.BeginTime = _ask.BeginTime; _t_ASK_Detail.EndTime = DateTime.Parse(itm.要求到货日期); _t_ASK_Detail.TempQty = decimal.Parse(itm.数量); _t_ASK_Detail.AskQty = decimal.Parse(itm.数量); _t_ASK_Detail.IsDeleted = false; _t_ASK_Detail.LocUnit = itm.单位; _t_ASK_Detail.UnConv = 1; _t_ASK_Detail.State = _ask.State; _t_ASK_Detail.Price = string.IsNullOrEmpty(itm.价格) ? 0 : decimal.Parse(itm.价格); _t_ASK_Detail.GUID = Guid.NewGuid(); _t_ASK_Detail.Remark = itm.备注; db.TB_ASK_DETAIL.Add(_t_ASK_Detail); // _number++; }); } else { _ret.MessageList.Add("ERP订单编号已存在,请重新导入!"); return; } if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } ); } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_TO_ASK", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_TO_ASK", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_TO_ASK", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "EXCEL_PO_TO_ASK", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); if (e.InnerException != null) { _ret.MessageList.Add(e.InnerException.Message); } else { _ret.MessageList.Add(e.Message); } } return _ret; } public static ResultObject Save_PO_TO_ASK(V_TB_PO p_order, List p_order_list , string p_buyer, string p_buyerPhone, string p_creator) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { TB_ASK _t = new TB_ASK(); _t.AskBillNum = SCP_BILLCODE_CONTROLLER.MakeASKCode(); _t.PoBillNum = p_order.PoBillNum; _t.VendId = p_order.VendId; _t.IsDeleted = false;//操作员 _t.CreateTime = DateTime.Now; _t.CreateUser = p_creator; _t.Site = p_order.Site; _t.ReceivedPort = p_order.ReceivedPort; _t.Remark = p_order.Remark; _t.State = (int)AskState.New; _t.SubSite = p_order.SubSite; _t.Extend1 = p_order.Extend1; _t.Extend2 = p_order.Extend2; _t.Extend3 = p_order.Extend3; _t.GUID = Guid.NewGuid(); _t.ModType = (int)p_order.ModType; _t.ErpBillNum = p_order.ErpBillNum; _t.BeginTime = (DateTime)p_order.BeginTime; var _date = p_order.BeginTime; if (p_order_list.Count > 0) { _date = p_order_list[0].EndTime; } _t.EndTime = p_order.EndTime; _t.Buyer = p_buyer; _t.BuyerPhone = p_buyerPhone; db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _t); List _list = new List(); foreach (var itm in p_order_list) { TB_ASK_DETAIL _tDetail = new TB_ASK_DETAIL(); _tDetail.Remark = _t.Remark; _tDetail.PoBillNum = _t.PoBillNum; _tDetail.AskBillNum = _t.AskBillNum; _tDetail.PoLine = itm.PoLine; _tDetail.PoUnit = itm.PoUnit; _tDetail.CreateTime = DateTime.Now; _tDetail.CreateUser = p_creator; _tDetail.PartCode = itm.PartCode; _tDetail.ReceivedPort = itm.ReceivedPort; _tDetail.BeginTime = itm.BeginTime; _tDetail.EndTime = _t.EndTime; _tDetail.TempQty = itm.TempQty == null ? 0 : (decimal)itm.TempQty; _tDetail.AskQty = (decimal)itm.PublishQty; _tDetail.IsDeleted = false; _tDetail.LocUnit = itm.LocUnit; _tDetail.UnConv = itm.UnConv; _tDetail.State = (int)p_order.State; _tDetail.Price = itm.Price; _tDetail.GUID = Guid.NewGuid(); _tDetail.Currency = itm.Currency; _tDetail.Site = itm.Site; _tDetail.SubSite = itm.SubSite; _tDetail.Extend1 = itm.Extend1; _tDetail.Extend2 = itm.Extend2; _tDetail.Extend3 = itm.Extend3; db.TB_ASK_DETAIL.Add(_tDetail); var _order_detail = db.TB_PO_DETAIL.Where(p => p.UID == itm.UID).FirstOrDefault(); _order_detail.TempQty = itm.TempQty; db.TB_PO_DETAIL.AddOrUpdate(p => p.UID, _order_detail); } int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public static ResultObject ToVoid_ts_uni_api(List ls,List part) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { var pp = ls.First(); var billnum = db.TB_PO_DETAIL.Count(p => p.PoBillNum == pp && p.State > 0); if (billnum == ls.Count) { var po1 = db.TB_PO.FirstOrDefault(t => t.PoBillNum == pp && t.State == 1); po1.State = 0; db.TB_PO.AddOrUpdate(po1); var ask1 = db.TB_ASK.FirstOrDefault(t => t.PoBillNum == pp && t.State > -1); ask1.State = -1; ask1.IsDeleted = true; db.TB_ASK.AddOrUpdate(ask1); } foreach(var po in ls) { foreach(var pa in part) { var asn = db.TB_ASN_DETAIL.Count(p => p.PartCode == pa && p.PoBillNum == po&&p.State>=0); if (asn > 0) { _ret.MessageList.Add("零件号"+pa+"已经存在发货单,订单明细作废失败"); } else { var ponum = db.TB_PO_DETAIL.Where(p => p.PartCode == pa && p.PoBillNum == po&&p.State>0).ToList(); foreach(var poo in ponum) { poo.State = 0; db.TB_PO_DETAIL.AddOrUpdate(poo); } var ask = db.TB_ASK_DETAIL.Where(p => p.PartCode == pa && p.PoBillNum == po).ToList(); foreach (var askk in ask) { askk.State = -1; askk.IsDeleted = true; db.TB_ASK_DETAIL.AddOrUpdate(askk); } var uni = db.TS_UNI_API.Where(p => p.PartCode == pa && p.BillNum == po&&p.Receiver=="I"); foreach(var un in uni) { un.State = 1; un.Receiver = "D"; db.TS_UNI_API.AddOrUpdate(un); } var coust = db.TB_MAXPO_CONSUME.Where(t => t.BillNum == po&&t.PartCode==pa).ToList(); foreach (var co in coust) { var maxpo = db.TB_MAXPO_DETAIL.FirstOrDefault(t => t.PoBillNum == co.PoBillNum && t.PartCode == co.PartCode); maxpo.SurplusQty = maxpo.SurplusQty + co.PoQty; } } } } if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public static ResultObject Save_ts_uni_api(List ls) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { { int number = 1; List lineError = new List(); List ErrorList = new List(); foreach (var po in ls) { var _ls = CheckExce2(db, po); if (_ls.Count > 0) { lineError.Add(number.ToString()); ErrorList.Add(string.Join("
", _ls.ToArray())); number++; } if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { var po1 = db.TB_PO.FirstOrDefault(t => t.PoBillNum == po&&t.State==1); po1.State = 0; db.TB_PO.AddOrUpdate(po1); var po2 = db.TB_PO_DETAIL.Where(t => t.PoBillNum == po&&t.State==1).ToList(); foreach (var po3 in po2) { po3.State = 0; db.TB_PO_DETAIL.AddOrUpdate(po3); } var ask1 = db.TB_ASK.FirstOrDefault(t => t.PoBillNum == po && t.State > -1); ask1.State = -1; ask1.IsDeleted = true; db.TB_ASK.AddOrUpdate(ask1); var ask2 = db.TB_ASK_DETAIL.Where(t => t.PoBillNum == po&&t.State>-1).ToList(); foreach (var ask3 in ask2) { ask3.State = -1; db.TB_ASK_DETAIL.AddOrUpdate(ask3); } var lx = db.TS_UNI_API.Where(t => t.BillNum == po&&t.Receiver=="I").ToList(); foreach (var po4 in lx) { po4.State = 1; po4.Receiver = "D"; db.TS_UNI_API.AddOrUpdate(po4); } var coust = db.TB_MAXPO_CONSUME.Where(t => t.BillNum == po).ToList(); if (coust.Count() > 0) { foreach (var co in coust) { var maxpo = db.TB_MAXPO_DETAIL.FirstOrDefault(t => t.PoBillNum == co.PoBillNum && t.PartCode == co.PartCode); maxpo.SurplusQty = maxpo.SurplusQty + co.PoQty; db.TB_MAXPO_CONSUME.Remove(co); } } } } } if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public static ResultObject Maxpo_ts_uni_api(List maxpo) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { { foreach(var po in maxpo) { var _list = db.TB_MAXPO_DETAIL.Where(p=>p.PoBillNum==po).ToList(); foreach(var _li in _list) { if (_li.OrderQtykg != _li.SurplusQty) { _ret.MessageList.Add("大订单号" + _li.PoBillNum + "已经开始期货订单消耗,作废失败"); } else { UniApiEntities idb = EntitiesFactory.CreateUniApiInstance(); var _wmsret = idb.xxwms_rc_det.Where(p=>p.xxwms_rc_ware_class.Contains(_li.PoBillNum)).ToList(); if (_wmsret.Count() > 0) { _ret.MessageList.Add("大订单号" + _li.PoBillNum + "已经开始收货消耗,作废失败"); } } } } if(_ret.MessageList.Count == 0) { foreach (var po in maxpo) { var _maxpo = db.TB_MAXPO.FirstOrDefault(p=>p.PoBillNum== po); _maxpo.IsDeleted = true; db.TB_MAXPO.AddOrUpdate(_maxpo); var _maxpodetail=db.TB_MAXPO_DETAIL.Where(p => p.PoBillNum == po).ToList(); _maxpodetail.ForEach(itm => itm.IsDeleted = true); db.TB_MAXPO_DETAIL.AddOrUpdate(itm => itm.UID, _maxpodetail.ToArray()); var _Ts = db.TS_UNI_API.Where(p => p.BillNum == po).ToList(); foreach(var ts in _Ts) { ts.Extend3 = "D"; ts.State = 1; db.TS_UNI_API.AddOrUpdate(ts); } } } } if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.MessageList= _ret.MessageList.Distinct().ToList(); _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public static ResultObject Maxpodetail_ts_uni_api(List Uid) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { { foreach (var ui in Uid) { var maxpodetail = db.V_TB_MAXPO_DETAIL.FirstOrDefault(p=>p.UID.ToString()==ui); if (maxpodetail.SurplusQty != maxpodetail.OrderQtykg || maxpodetail.AnQty > 0 || maxpodetail.ReceQty > 0) { _ret.MessageList.Add("零件号"+maxpodetail.PartCode+"已经开始消耗,作废失败!"); } } if (_ret.MessageList.Count == 0) { foreach (var ui in Uid) { var maxpodetail = db.V_TB_MAXPO_DETAIL.FirstOrDefault(p => p.UID.ToString() == ui); var uni = db.TS_UNI_API.FirstOrDefault(p=>p.PartCode==maxpodetail.PartCode&&p.BillNum==maxpodetail.PoBillNum); uni.State = 1; db.TS_UNI_API.AddOrUpdate(uni); } } } if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.MessageList = _ret.MessageList.Distinct().ToList(); _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public static ResultObject Delete_Ta_Subpart() { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { { var sublist = db.TA_SubPartCode.ToList(); foreach(var sub in sublist) { db.TA_SubPartCode.Remove(sub); } } if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public static ResultObject Save_ts_uni_api1(List ls) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { { int number = 1; List lineError = new List(); List ErrorList = new List(); foreach (var po in ls) { var _ls = CheckExce3(db, po); if (_ls.Count > 0) { lineError.Add(number.ToString()); ErrorList.Add(string.Join("
", _ls.ToArray())); number++; } if (lineError.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.MessageList.AddRange(ErrorList); _ret.Result = false; } else { var _entity = db.TB_ASK.FirstOrDefault(p => p.AskBillNum.ToString() == po); _entity.State = -1; _entity.IsDeleted = true; db.TB_ASK.AddOrUpdate(_entity); if (_entity.Site == "U32") { var _po = db.TB_PO.FirstOrDefault(P => P.PoBillNum == _entity.PoBillNum); _po.State = 0; db.TB_PO.AddOrUpdate(_po); var _podetail = db.TB_PO_DETAIL.Where(p=>p.PoBillNum==_entity.PoBillNum).ToList(); _podetail.ForEach(p => { p.State = 0; db.TB_PO_DETAIL.AddOrUpdate(p); }); } var _entity1 = db.TB_ASK_DETAIL.Where(p => p.AskBillNum.ToString() == po).ToList(); foreach(var ask in _entity1) { ask.State = -1; ask.IsDeleted = true; db.TB_ASK_DETAIL.AddOrUpdate(ask); } } } } if (_ret.MessageList.Count == 0) { int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Save_PO_TO_ASK", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public static void Get_V_TB_PO_DETAIL_OUTPUT_List(V_TB_PO_DETAIL p_entity, Action>> p_action) { ResultObject> _ret = new ResultObject>(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { IQueryable q = db.V_TB_PO_DETAIL; if (!string.IsNullOrEmpty(p_entity.PoBillNum)) { q = q.Where(p => p.PoBillNum == p_entity.PoBillNum); } if (!string.IsNullOrEmpty(p_entity.ErpBillNum)) { q = q.Where(p => p.ErpBillNum.Contains(p_entity.ErpBillNum)); } if (p_entity.BeginTime != null) { q = q.Where(p => p.BeginTime >= p_entity.BeginTime); } if (p_entity.EndTime != null) { q = q.Where(p => p.BeginTime <= p_entity.EndTime); } if (!string.IsNullOrEmpty(p_entity.VendId)) { q = q.Where(p => p.VendId.Contains(p_entity.VendId)); } if (!string.IsNullOrEmpty(p_entity.VendName)) { q = q.Where(p => p.VendName.Contains(p_entity.VendName)); } if (p_entity.ModType != null) { q = q.Where(p => p.ModType == p_entity.ModType); } if (!string.IsNullOrEmpty(p_entity.ProjectId)) { q = q.Where(p => p.ProjectId.Contains(p_entity.ProjectId)); } if (!string.IsNullOrEmpty(p_entity.PartCode)) { q = q.Where(p => p.PartCode.Contains(p_entity.PartCode)); } if (p_entity.State != null) { q = q.Where(p => p.State == p_entity.State); } //q = q.Where(p => p.IsDeleted == p_entity.IsDeleted); //IQueryable _aq = db.TB_ASK_DETAIL; //_aq = _aq.Where(p => p.PoBillNum == p_entity.PoBillNum); //var _a=_aq.GroupBy(p => new { p.PoBillNum, p.PoLine, p.PartCode }).Select(p => new { AskSum = p.Max(itm=>itm .AskQty),PoLine=p.Key }); if (p_entity.UserInAddress != null && p_entity.UserInAddress.Count > 0) { q = q.Where(p => p_entity.UserInAddress.Contains(p.Site)); } if (!string.IsNullOrEmpty(p_entity.SubSite)) { q = q.Where(p => p.SubSite == p_entity.SubSite); } if (!string.IsNullOrEmpty(p_entity.Extend1)) { q = q.Where(p => p.Extend1 == p_entity.Extend1); } if (!string.IsNullOrEmpty(p_entity.Extend2)) { q = q.Where(p => p.Extend1 == p_entity.Extend2); } if (!string.IsNullOrEmpty(p_entity.Extend3)) { q = q.Where(p => p.Extend1 == p_entity.Extend3); } if (!string.IsNullOrEmpty(p_entity.SubSite)) { q = q.Where(p => p.SubSite.Contains(p_entity.SubSite)); } if (!string.IsNullOrEmpty(p_entity.Extend1)) { q = q.Where(p => p.Extend1.Contains(p_entity.Extend1)); } if (!string.IsNullOrEmpty(p_entity.Extend2)) { q = q.Where(p => p.Extend2.Contains(p_entity.Extend2)); } if (!string.IsNullOrEmpty(p_entity.Extend3)) { q = q.Where(p => p.Extend3.Contains(p_entity.Extend3)); } _ret.State = ReturnStatus.Succeed; _ret.Result = q; p_action(_ret); } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", e.Message); throw e; } } public static void Get_V_TB_PO_DETAIL_List(V_TB_PO_DETAIL p_entity, Action>> p_action) { ResultObject> _ret = new ResultObject>(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { IQueryable q = db.V_TB_PO_DETAIL; if (!string.IsNullOrEmpty(p_entity.PoBillNum)) { q = q.Where(p => p.PoBillNum == p_entity.PoBillNum); } if (!string.IsNullOrEmpty(p_entity.ErpBillNum)) { q = q.Where(p => p.ErpBillNum.Contains(p_entity.ErpBillNum)); } if (p_entity.BeginTime != null) { q = q.Where(p => p.BeginTime >= p_entity.BeginTime); } if (p_entity.EndTime != null) { q = q.Where(p => p.BeginTime <= p_entity.EndTime); } if (!string.IsNullOrEmpty(p_entity.VendName)) { q = q.Where(p => p.VendName == p_entity.VendName); } if (p_entity.ModType != null) { q = q.Where(p => p.ModType == p_entity.ModType); } if (!string.IsNullOrEmpty(p_entity.ProjectId)) { q = q.Where(p => p.ProjectId == p_entity.ProjectId); } if (!string.IsNullOrEmpty(p_entity.PartCode)) { q = q.Where(p => p.PartCode == p_entity.PartCode); } if (p_entity.State != null) { q = q.Where(p => p.State == p_entity.State); } //q = q.Where(p => p.IsDeleted == p_entity.IsDeleted); //IQueryable _aq = db.TB_ASK_DETAIL; //_aq = _aq.Where(p => p.PoBillNum == p_entity.PoBillNum); //var _a=_aq.GroupBy(p => new { p.PoBillNum, p.PoLine, p.PartCode }).Select(p => new { AskSum = p.Max(itm=>itm .AskQty),PoLine=p.Key }); if (p_entity.UserInAddress != null && p_entity.UserInAddress.Count > 0) { q = q.Where(p => p_entity.UserInAddress.Contains(p.Site)); } _ret.State = ReturnStatus.Succeed; _ret.Result = q; p_action(_ret); } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", e.Message); throw e; } } public static void Get_V_TB_MAXPO_DETAIL_List(V_TB_MAXPO_DETAIL p_entity, Action>> p_action) { ResultObject> _ret = new ResultObject>(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { IQueryable q = db.V_TB_MAXPO_DETAIL; if (!string.IsNullOrEmpty(p_entity.PoBillNum)) { q = q.Where(p => p.PoBillNum == p_entity.PoBillNum); } if (!string.IsNullOrEmpty(p_entity.ContractMonth)) { q = q.Where(p => p.ContractMonth == p_entity.ContractMonth); } if (!string.IsNullOrEmpty(p_entity.PartCode)) { q = q.Where(p => p.PartCode == p_entity.PartCode); } if (!string.IsNullOrEmpty(p_entity.VendId)) { q = q.Where(p => p.VendId == p_entity.VendId); } if (!string.IsNullOrEmpty(p_entity.CreateUser)) { q = q.Where(p => p.CreateUser == p_entity.CreateUser); } if (!string.IsNullOrEmpty(p_entity.PartNumber)) { q = q.Where(p => p.PartNumber == p_entity.PartNumber); } if (!string.IsNullOrEmpty(p_entity.BeginTime.ToString())) { q = q.Where(p => p.CreateTime >= p_entity.BeginTime); } if (!string.IsNullOrEmpty(p_entity.EndTime.ToString())) { q = q.Where(p => p.CreateTime <= p_entity.EndTime); } q = q.Where(p=>p.IsDeleted==p_entity.IsDeleted); _ret.State = ReturnStatus.Succeed; _ret.Result = q; p_action(_ret); } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", e.Message); throw e; } } public static void Get_V_TB_MAXPO_INCOMPLETE_DETAIL(V_TB_MAXPO_CONSUME p_entity, Action>> p_action) { ResultObject> _ret = new ResultObject>(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { IQueryable q = db.V_TB_MAXPO_CONSUME; //if (!string.IsNullOrEmpty(p_entity.PoBillNum)) //{ // q = q.Where(p => p.PoBillNum == p_entity.PoBillNum); //} //if (!string.IsNullOrEmpty(p_entity.PartCode)) //{ // q = q.Where(p => p.PartCode == p_entity.PartCode); //} if (p_entity.PoList != null && p_entity.PoList.Count > 0) { q = q.Where(p => p_entity.PoList.Contains(p.PoBillNum)); } if (p_entity.PartList != null && p_entity.PartList.Count > 0) { q = q.Where(p => p_entity.PartList.Contains(p.PartCode)); } _ret.State = ReturnStatus.Succeed; _ret.Result = q; p_action(_ret); } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", e.Message); throw e; } } public static void Get_V_TB_MAXPO_List(V_TB_MAXPO p_entity, Action>> p_action) { ResultObject> _ret = new ResultObject>(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { IQueryable q = db.V_TB_MAXPO; if (!string.IsNullOrEmpty(p_entity.PoBillNum)) { q = q.Where(p => p.PoBillNum == p_entity.PoBillNum); } if (!string.IsNullOrEmpty(p_entity.VendId)) { q = q.Where(p => p.VendId == p_entity.VendId); } if (!string.IsNullOrEmpty(p_entity.CreateUser)) { q = q.Where(p => p.CreateUser == p_entity.CreateUser); } if (!string.IsNullOrEmpty(p_entity.ContractMonth)) { q = q.Where(p => p.ContractMonth == p_entity.ContractMonth); } if (!string.IsNullOrEmpty(p_entity.BeginTime.ToString())) { q = q.Where(p => p.CreateTime >= p_entity.BeginTime); } if (!string.IsNullOrEmpty(p_entity.EndTime.ToString())) { q = q.Where(p => p.CreateTime <= p_entity.EndTime); } q = q.Where(p => p.IsDeleted == p_entity.IsDeleted); _ret.State = ReturnStatus.Succeed; _ret.Result = q; p_action(_ret); } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", e.Message); throw e; } } public static void Get_V_TB_PO_SUBDETAIL(V_TB_PO_SUBDETAIL p_entity, Action>> p_action) { ResultObject> _ret = new ResultObject>(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { IQueryable q = db.V_TB_PO_SUBDETAIL; if (!string.IsNullOrEmpty(p_entity.PoBillNum)) { q = q.Where(p => p.PoBillNum == p_entity.PoBillNum); } _ret.State = ReturnStatus.Succeed; _ret.Result = q; p_action(_ret); } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", e.Message); throw e; } } #region 沈阳金杯 public static ResultObject Save_PO_TO_ASK_SYJB(V_TB_PO p_order, List p_order_list , string p_buyer, string p_buyerPhone) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { TB_ASK _t = new TB_ASK(); _t.AskBillNum = SCP_BILLCODE_CONTROLLER.MakeASKCode(); _t.PoBillNum = p_order.PoBillNum; _t.VendId = p_order.VendId; _t.IsDeleted = false;//操作员 _t.CreateTime = DateTime.Now; _t.CreateUser = p_buyer; _t.Site = p_order.Site; _t.Remark = p_order.Remark; _t.State = (int)AskState.Release; _t.Remark = p_order.Remark; _t.GUID = p_order.GUID; _t.ModType = (int)p_order.ModType; _t.ErpBillNum = p_order.ErpBillNum; _t.BeginTime = (DateTime)p_order.BeginTime; _t.EndTime = p_order.BeginTime; _t.Buyer = p_buyer; _t.BuyerPhone = p_buyerPhone; db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _t); List _list = new List(); foreach (var itm in p_order_list) { TB_ASK_DETAIL _tDetail = new TB_ASK_DETAIL(); _tDetail.PoBillNum = _t.PoBillNum; _tDetail.AskBillNum = _t.AskBillNum; _tDetail.PoLine = itm.PoLine; _tDetail.PoUnit = itm.PoUnit; _tDetail.CreateTime = DateTime.Now; _tDetail.CreateUser = p_buyer; _tDetail.PartCode = itm.PartCode; _tDetail.BeginTime = itm.BeginTime; _tDetail.EndTime = itm.EndTime; _tDetail.Currency = itm.Currency; _tDetail.TempQty = itm.TempQty == null ? 0 : (decimal)itm.TempQty; _tDetail.AskQty = (decimal)itm.PlanQty; _tDetail.IsDeleted = false; _tDetail.LocUnit = itm.LocUnit; _tDetail.UnConv = itm.UnConv; _tDetail.State = (int)p_order.State; _tDetail.Price = itm.Price; _tDetail.GUID = itm.GUID; db.TB_ASK_DETAIL.Add(_tDetail); var _order_detail = db.TB_PO_DETAIL.Where(p => p.UID == itm.UID).FirstOrDefault(); _order_detail.TempQty = itm.TempQty; db.TB_PO_DETAIL.AddOrUpdate(p => p.UID, _order_detail); } int state = db.SaveChanges(); if (state != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(TB_PO), "Save_PO_TO_ASK", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public static void Get_V_TA_VENDER(V_TB_PO_DETAIL p_entity, Action>> p_action) { ResultObject> _ret = new ResultObject>(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { List result = new List(); IQueryable q = db.V_TA_VENDER; if (!string.IsNullOrEmpty(p_entity.VendId)) { q = q.Where(p => p.VendId.Contains(p_entity.VendId)); } if (!string.IsNullOrEmpty(p_entity.VendName)) { q = q.Where(p => p.VendName.Contains(p_entity.VendName)); } if (p_entity.UserInAddress != null && p_entity.UserInAddress.Count > 0) { q = q.Where(p => p_entity.UserInAddress.Contains(p.Site)); } IQueryable q2 = db.TB_ASN; if (!string.IsNullOrEmpty(p_entity.PoBillNum)) { q2 = q2.Where(p => p.PoBillNum.Contains(p_entity.PoBillNum)); } if (p_entity.BeginTime != null) { q2 = q2.Where(p => p.ShipTime >= p_entity.BeginTime); } if (p_entity.EndTime != null) { q2 = q2.Where(p => p.ShipTime <= p_entity.EndTime); } //返回全部供应商 if (string.IsNullOrEmpty(p_entity.PoBillNum) && p_entity.BeginTime == null && p_entity.EndTime == null) { result = q.ToList(); } //返回符合条件发货单里的供应商 else { List lsVendId = new List(); q.ToList().ForEach(p => { q2.ToList().ForEach(itm => { if (p.VendId == itm.VendId) { if (!lsVendId.Contains(p.VendId)) { result.Add(p); lsVendId.Add(p.VendId); } } }); }); } _ret.State = ReturnStatus.Succeed; _ret.Result = result.AsQueryable(); p_action(_ret); } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_PO_CONTROLLER), "Get_V_TB_PO_DETAIL_List", e.Message); throw e; } } public static List LOAD_PO_DETAIL_SUM_PROMPTNESS(V_TB_PO_DETAIL p_entity, List p_list) { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { if (p_list.Count > 0) { //var _detail = p_list[0]; foreach (V_TA_VENDER _detail in p_list) { IQueryable q = db.TB_ASN.Where(p => p.VendId == _detail.VendId && p_entity.UserInAddress.Contains(p.Site)); if (!string.IsNullOrEmpty(p_entity.PoBillNum)) { q = q.Where(p => p.PoBillNum.Contains(p_entity.PoBillNum)); } if (p_entity.BeginTime != null) { q = q.Where(p => p.ShipTime >= p_entity.BeginTime); } if (p_entity.EndTime != null) { q = q.Where(p => p.ShipTime <= p_entity.EndTime); } int asnNo = q.ToList().Count;//是发货数量 int arriveNo = 0; q.ToList().ForEach(p => { TB_ARRIVE q2 = db.TB_ARRIVE.FirstOrDefault(p1 => p1.AsnBillNum == p.AsnBillNum && p_entity.UserInAddress.Contains(p1.Site) && p1.BillType.ToString() == "0"); if (q2 != null && q2.ShipTime != null && p.ShipTime != null && q2.ShipTime <= p.ShipTime) { arriveNo += 1; } }); _detail.ShippedQty = asnNo.ToString();//发货数量 _detail.ArriveQty = arriveNo.ToString();//到货数量 if (asnNo == 0) { _detail.Promptness = "0%";//及时率 } else { double temp = (arriveNo / asnNo) * 100; _detail.Promptness = temp.ToString("0.00") + "% ";//及时率 } //arrive.ToList().ForEach(itm => //{ // if (_detail.PoBillNum == itm.PoBillNum && _detail.PoLine == itm.PoLine && _detail.PartCode == itm.PartCode) // { // _detail.ArriveQty = itm.ArriveSum.ToString(); // } //}); } } } return p_list; } #endregion } }