private IList<DssExportHistory> GroupData(IList<LocationTransaction> locTrans, DssOutboundControl dssOutboundControl, DateTime effectiveDate) { #region 补充0成品工单 var fgOrderDetIdList = locTrans .Where(l => StringHelper.Eq(l.TransactionType, BusinessConstants.CODE_MASTER_LOCATION_TRANSACTION_TYPE_VALUE_RCT_WO)) .Select(l => l.OrderDetailId).Distinct().ToList(); var rmOrderDetIdList = locTrans .Where(l => StringHelper.Eq(l.TransactionType, BusinessConstants.CODE_MASTER_LOCATION_TRANSACTION_TYPE_VALUE_ISS_WO)) .Select(l => l.OrderDetailId).Distinct().ToList(); var addList = rmOrderDetIdList.Except(fgOrderDetIdList).Distinct().ToList(); #region 添加虚拟RCT-WO if (addList.Count > 0) { IList<LocationTransaction> virtualWOList = this.GetVirRctWo(addList);//GetVirtualRCTWO 修改为 GetVirRctWo if (virtualWOList.Count > 0) { foreach (var virtualWO in virtualWOList) { virtualWO.TransactionType = BusinessConstants.CODE_MASTER_LOCATION_TRANSACTION_TYPE_VALUE_RCT_WO; virtualWO.EffectiveDate = effectiveDate; virtualWO.Qty = 0; } locTrans = locTrans.Concat(virtualWOList).ToList(); } } #endregion #endregion #region Transformer var fgQuery = locTrans.Where(l => StringHelper.Eq(l.TransactionType, BusinessConstants.CODE_MASTER_LOCATION_TRANSACTION_TYPE_VALUE_RCT_WO)).ToList(); var rmQuery = locTrans.Where(l => StringHelper.Eq(l.TransactionType, BusinessConstants.CODE_MASTER_LOCATION_TRANSACTION_TYPE_VALUE_ISS_WO)).ToList(); log.Debug("Begin to group single data, count:" + fgQuery.Count); IList<DssExportHistory> dssExportHistoryList = this.GroupSingleDssExportHistory(fgQuery, rmQuery, dssOutboundControl, effectiveDate); #endregion return dssExportHistoryList; }
/// <summary> /// ISS-UNP 计划外出库 /// </summary> /// <param name="list"></param> /// <param name="dssOutboundControl"></param> /// <param name="isFLag">是</param> /// <returns></returns> protected IList <DssExportHistory> ConvertList(IList list, DssOutboundControl dssOutboundControl, bool isFLag) { IList <DssExportHistory> result = new List <DssExportHistory>(); if (list != null && list.Count > 0) { foreach (object obj in list) { DssExportHistory dssExportHistory = commonOutboundMgr.ConvertLocationTransactionToDssExportHistory(obj, dssOutboundControl); //add djin 20120910 if ((string)((object[])obj)[4] == "Reject" && ((object[])obj).Length > 9) { dssExportHistory.PartyTo = locMgr.LoadLocation((string)((object[])obj)[9]).Region.Code; } dssExportHistory.KeyCode = dssExportHistory.OrderNo;//订单号 #region 账户、分账户、成本中心、项目 dssExportHistory.DefinedString1 = null; //账户 dssExportHistory.DefinedString2 = null; //分账户 dssExportHistory.DefinedString3 = null; //成本中心 dssExportHistory.DefinedString4 = null; //项目 this.GetAccount(dssExportHistory); #endregion result.Add(dssExportHistory); } } return(result); }
protected IList <DssExportHistory> ConvertList(IList list, DssOutboundControl dssOutboundControl) { IList <DssExportHistory> result = new List <DssExportHistory>(); if (list != null && list.Count > 0) { foreach (object obj in list) { DssExportHistory dssExportHistory = commonOutboundMgr.ConvertLocationTransactionToDssExportHistory(obj, dssOutboundControl); dssExportHistory.KeyCode = dssExportHistory.OrderNo;//订单号 #region 账户、分账户、成本中心、项目 dssExportHistory.DefinedString1 = null; //账户 dssExportHistory.DefinedString2 = null; //分账户 dssExportHistory.DefinedString3 = null; //成本中心 dssExportHistory.DefinedString4 = null; //项目 this.GetAccount(dssExportHistory); #endregion result.Add(dssExportHistory); } } return(result); }
//protected override object Serialize(object obj) //{ // throw new NotImplementedException(); //} #region Private Method public IList<DssExportHistory> ConvertList(IList<BillDetail> list, DssOutboundControl dssOutboundControl) { IList<DssExportHistory> result = new List<DssExportHistory>(); if (list != null && list.Count > 0) { foreach (BillDetail billDetail in list) { DssExportHistory dssExportHistory = new DssExportHistory(); dssExportHistory.DssOutboundControl = dssOutboundControl; dssExportHistory.EventCode = BusinessConstants.DSS_EVENT_CODE_CREATE; dssExportHistory.IsActive = true; dssExportHistory.CreateDate = DateTime.Now; dssExportHistory.OriginalId = billDetail.Id; dssExportHistory.OrderNo = billDetail.ActingBill.OrderHead.OrderNo; dssExportHistory.ReceiptNo = billDetail.ActingBill.ReceiptNo; dssExportHistory.Item = billDetail.ActingBill.Item.Code; dssExportHistory.Location = dssExportHistory.DssOutboundControl.UndefinedString1;//客户库位 dssExportHistory.Qty = billDetail.BilledQty; dssExportHistory.EffectiveDate = billDetail.Bill.CreateDate.Date; dssExportHistory.PartyTo = billDetail.Bill.BillAddress.Party.Code;//客户 dssExportHistory.DefinedString1 = billDetail.Bill.BillNo;//开票通知单号 dssExportHistory.KeyCode = DssHelper.GetBillKeyCode(dssExportHistory, billDetail.Bill.BillNo); this.GetLoctransInfo(dssExportHistory); result.Add(dssExportHistory); } } return result; }
protected override IList<DssExportHistory> ExtractOutboundData(DssOutboundControl dssOutboundControl) { IList result = commonOutboundMgr.ExtractOutboundDataFromLocationTransaction(dssOutboundControl, BusinessConstants.CODE_MASTER_LOCATION_TRANSACTION_TYPE_VALUE_RCT_UNP, MatchMode.Exact); return this.ConvertList(result, dssOutboundControl); }
public DssExportHistory ConvertLocationTransactionToDssExportHistory(object obj, DssOutboundControl dssOutboundControl) { DssExportHistory dssExportHistory = new DssExportHistory(); dssExportHistory.DssOutboundControl = dssOutboundControl; dssExportHistory.EventCode = BusinessConstants.DSS_EVENT_CODE_CREATE; dssExportHistory.IsActive = true; dssExportHistory.CreateDate = DateTime.Now; dssExportHistory.OriginalId = (int)((object[])obj)[0]; dssExportHistory.OrderNo = (string)((object[])obj)[1]; dssExportHistory.ReceiptNo = (string)((object[])obj)[2]; dssExportHistory.Item = (string)((object[])obj)[3]; dssExportHistory.Location = (string)((object[])obj)[4]; dssExportHistory.Qty = (decimal)((object[])obj)[5]; dssExportHistory.EffectiveDate = (DateTime)((object[])obj)[6]; dssExportHistory.PartyFrom = (string)((object[])obj)[7]; dssExportHistory.PartyTo = (string)((object[])obj)[8]; //记录RefLoc if (((object[])obj).Length > 9) { dssExportHistory.ReferenceLocation = (string)((object[])obj)[9]; } return dssExportHistory; }
private IList <DssExportHistory> ConvertList(IList list, DssOutboundControl dssOutboundControl) { IList <DssExportHistory> result = new List <DssExportHistory>(); if (list != null && list.Count > 0) { foreach (object obj in list) { DssExportHistory dssExportHistory = commonOutboundMgr.ConvertLocationTransactionToDssExportHistory(obj, dssOutboundControl); dssExportHistory.Qty = -dssExportHistory.Qty; //修正数量 dssExportHistory.KeyCode = dssExportHistory.OrderNo; //订单号 dssExportHistory.ReferenceLocation = dssOutboundControl.UndefinedString1; //客户库位 if (dssExportHistory.Location != null && dssExportHistory.ReferenceLocation != null && dssExportHistory.Location.Trim().ToUpper() == dssExportHistory.ReferenceLocation.Trim().ToUpper()) { continue; } result.Add(dssExportHistory); } } return(result); }
public IList<DssExportHistory> ConvertList(IList list, DssOutboundControl dssOutboundControl) { IList<DssExportHistory> result = new List<DssExportHistory>(); if (list != null && list.Count > 0) { foreach (object obj in list) { DssExportHistory dssExportHistory = commonOutboundMgrE.ConvertLocationTransactionToDssExportHistory(obj, dssOutboundControl); dssExportHistory.KeyCode = dssExportHistory.OrderNo;//订单号 #region 账户、分账户、成本中心、项目 dssExportHistory.DefinedString1 = null;//账户 dssExportHistory.DefinedString2 = null;//分账户 dssExportHistory.DefinedString3 = null;//成本中心 dssExportHistory.DefinedString4 = null;//项目 this.GetAccount(dssExportHistory); #endregion result.Add(dssExportHistory); } } return result; }
protected override IList <DssExportHistory> ExtractOutboundData(DssOutboundControl dssOutboundControl) { IList result = commonOutboundMgr.ExtractOutboundDataFromLocationTransaction(dssOutboundControl, BusinessConstants.CODE_MASTER_LOCATION_TRANSACTION_TYPE_VALUE_ISS_SO, MatchMode.Start); return(this.ConvertList(result, dssOutboundControl)); }
//获取issunp djin private IList <DssExportHistory> GetIssUnpLocationTransaction(int mark, DssOutboundControl outCon) { DssOutboundControl dc = dssOutboundControlMgr.LoadDssOutboundControl(9); IList <DssExportHistory> result = GetRctTrLocationTransaction(dc.Mark, "ISS-UNP"); string[] delCCode = { "0000" }; DetachedCriteria subjectList = DetachedCriteria.For(typeof(SubjectList)); subjectList.Add(Expression.In("CostCenterCode", delCCode)); subjectList.Add(Expression.Eq("SubjectCode", "11111111")); IList subjectListCode = criteriaMgr.FindAll(subjectList); var miscoOrder = (from l in result select l.OrderNo).Distinct().ToList(); DetachedCriteria misOrderCriteria = DetachedCriteria.For(typeof(MiscOrder));//需要删除的miscorder misOrderCriteria.Add(Expression.In("OrderNo", miscoOrder)); misOrderCriteria.Add(Expression.In("SubjectList", subjectListCode)); IList <MiscOrder> miscOrderList = criteriaMgr.FindAll <MiscOrder>(misOrderCriteria); IList <DssExportHistory> addList = (from l in result join n in miscOrderList on l.OrderNo equals n.OrderNo select l).ToList(); foreach (DssExportHistory dssExp in addList) { dssExp.Qty = dssExp.Qty * -1; dssExp.Comments = "ISS-UNP2RCT-TR"; dssExp.ReferenceLocation = dssExp.Location; dssExp.Location = "LXXS"; } return(addList); }
protected override IList<DssExportHistory> ExtractOutboundData(DssOutboundControl dssOutboundControl) { DetachedCriteria criteria = DetachedCriteria.For(typeof(BillDetail)) .CreateAlias("Bill", "b") .Add(Expression.Gt("Id", dssOutboundControl.Mark)) .Add(Expression.Eq("b.TransactionType", BusinessConstants.BILL_TRANS_TYPE_SO)); //.Add(Expression.In("b.Status", new string[] { BusinessConstants.CODE_MASTER_STATUS_VALUE_CREATE, BusinessConstants.CODE_MASTER_STATUS_VALUE_SUBMIT })); IList<BillDetail> result = criteriaMgrE.FindAll<BillDetail>(criteria); return this.ConvertList(result, dssOutboundControl); }
protected override IList <DssExportHistory> ExtractOutboundData(DssOutboundControl dssOutboundControl) { DetachedCriteria criteria = DetachedCriteria.For(typeof(BillDetail)) .CreateAlias("Bill", "b") .Add(Expression.Gt("Id", dssOutboundControl.Mark)) .Add(Expression.Eq("b.TransactionType", BusinessConstants.BILL_TRANS_TYPE_PO)) .Add(Expression.In("b.Status", new string[] { BusinessConstants.CODE_MASTER_STATUS_VALUE_CREATE, BusinessConstants.CODE_MASTER_STATUS_VALUE_SUBMIT })); IList <BillDetail> result = criteriaMgr.FindAll <BillDetail>(criteria); return(this.ConvertList(result, dssOutboundControl)); }
private void button1_Click(object sender, EventArgs e) { IWindsorContainer container = new WindsorContainer(new XmlInterpreter(new ConfigResource("castle"))); com.Sconit.Service.Dss.IOutboundMgr dssOutboundJob = container.Resolve <com.Sconit.Service.Dss.IOutboundMgr>("RctwoOutboundMgr.Service"); com.Sconit.Service.Dss.IDssOutboundControlMgr dssOutboundControlMgr = container.Resolve <com.Sconit.Service.Dss.IDssOutboundControlMgr>("DssOutboundControlMgr.Service"); DssOutboundControl dssOutboundControl = dssOutboundControlMgr.LoadDssOutboundControl(6); dssOutboundJob.ProcessOutbound(dssOutboundControl); //IJobRunMgr jobRunMgr = container.Resolve<IJobRunMgr>("JobRunMgr.service"); //jobRunMgr.RunBatchJobs(container); container.Dispose(); }
protected override IList<DssExportHistory> ExtractOutboundData(DssOutboundControl dssOutboundControl) { IList<LocationTransaction> inpTr = this.GetInpLocationTransaction(dssOutboundControl.Mark); IList<DssExportHistory> trList = this.GetRctTrLocationTransaction(dssOutboundControl.Mark, "RCT-TR"); this.ProcessRctTr(trList, dssOutboundControl); IList<DssExportHistory> inpList = this.ProcessRctInp(inpTr); IList<DssExportHistory> issunplist = GetIssUnpLocationTransaction(dssOutboundControl.Mark, dssOutboundControl); IList<DssExportHistory> result = trList.Concat(inpList).ToList(); result = result.Concat(issunplist).ToList(); log.Debug("Get records: RCT-TR:" + trList.Count + ",RCT-INP:" + inpList.Count + ",ISS-UNP:" + issunplist.Count + ",concat result:" + result.Count); result = this.GroupData(result, dssOutboundControl); log.Debug("Group data,now records: " + result.Count); return result; }
protected override IList <DssExportHistory> ExtractOutboundData(DssOutboundControl dssOutboundControl) { IList <LocationTransaction> inpTr = this.GetInpLocationTransaction(dssOutboundControl.Mark); IList <DssExportHistory> trList = this.GetRctTrLocationTransaction(dssOutboundControl.Mark, "RCT-TR"); this.ProcessRctTr(trList, dssOutboundControl); IList <DssExportHistory> inpList = this.ProcessRctInp(inpTr); IList <DssExportHistory> issunplist = GetIssUnpLocationTransaction(dssOutboundControl.Mark, dssOutboundControl); IList <DssExportHistory> result = trList.Concat(inpList).ToList(); result = result.Concat(issunplist).ToList(); log.Debug("Get records: RCT-TR:" + trList.Count + ",RCT-INP:" + inpList.Count + ",ISS-UNP:" + issunplist.Count + ",concat result:" + result.Count); result = this.GroupData(result, dssOutboundControl); log.Debug("Group data,now records: " + result.Count); return(result); }
private void ProcessRctTr(IList <DssExportHistory> list, DssOutboundControl dssOutboundControl) { if (list != null && list.Count > 0) { List <int> orderDetIdList = list.Where(l => l.OrderDetailId > 0).Select(l => l.OrderDetailId).Distinct().ToList(); //orderdet超过2千个会有问题,先临时拆分一下 IList <LocationTransaction> issList = new List <LocationTransaction>(); if (orderDetIdList.Count < 2000) { issList = this.GetIssTr(orderDetIdList); } else { log.Debug("total count: " + orderDetIdList.Count); int count = orderDetIdList.Count / 2000; for (int i = 0; i <= count; i++) { int interval = i * 2000; int maxCount = i == count ? orderDetIdList.Count - interval : 2000; log.Debug("begin index: " + interval); log.Debug("record count: " + maxCount); List <int> tempOrderDetIdList = orderDetIdList.GetRange(interval, maxCount); IList <LocationTransaction> tempIssList = this.GetIssTr(tempOrderDetIdList); issList = issList.Concat(tempIssList).ToList(); } } if (issList != null && issList.Count > 0) { foreach (var dssExportHistory in list) { var issTrans = issList.Where(i => i.OrderDetailId == dssExportHistory.OrderDetailId).SingleOrDefault(); if (issTrans != null) { dssExportHistory.ReferenceLocation = issTrans.Location; //djin 20120903 mod //orginal partyfrom=issTrans.PartyFrom //if (issTrans.Location == "Reject") // dssExportHistory.PartyFrom = locationMgr.LoadLocation(issTrans.RefLocation).Region.Code; //else dssExportHistory.PartyFrom = issTrans.PartyFrom; } } } } }
//protected override object Serialize(object obj) //{ // throw new NotImplementedException(); //} #region Private Method private IList <DssExportHistory> ConvertList(IList <BillDetail> list, DssOutboundControl dssOutboundControl) { DetachedCriteria criteria = DetachedCriteria.For(typeof(DssObjectMapping)) .Add(Expression.Eq("Entity", "BillTo")).Add(Expression.Eq("ExternalSystem", "QAD")) .Add(Expression.Eq("ExternalEntity", "ShipTo")); IList <DssObjectMapping> dom = criteriaMgr.FindAll <DssObjectMapping>(criteria); IList <DssExportHistory> result = new List <DssExportHistory>(); if (list != null && list.Count > 0) { foreach (BillDetail billDetail in list) { DssExportHistory dssExportHistory = new DssExportHistory(); dssExportHistory.DssOutboundControl = dssOutboundControl; dssExportHistory.EventCode = BusinessConstants.DSS_EVENT_CODE_CREATE; dssExportHistory.IsActive = true; dssExportHistory.CreateDate = DateTime.Now; dssExportHistory.OriginalId = billDetail.Id; dssExportHistory.OrderNo = billDetail.ActingBill.OrderNo; dssExportHistory.ReceiptNo = billDetail.ActingBill.ReceiptNo; dssExportHistory.Item = billDetail.ActingBill.Item.Code; dssExportHistory.Location = dssExportHistory.DssOutboundControl.UndefinedString1;//客户库位 dssExportHistory.Qty = billDetail.BilledQty; //dssExportHistory.EffectiveDate = billDetail.Bill.CreateDate.Date; dssExportHistory.EffectiveDate = DateTime.Now; dssExportHistory.PartyTo = billDetail.Bill.BillAddress.Party.Code; //客户 dssExportHistory.DefinedString1 = billDetail.Bill.BillNo; //开票通知单号 dssExportHistory.DefinedString2 = billDetail.Bill.BillAddress.Code; //BillTo if (dom != null && dom.Count > 0) { DssObjectMapping sd = dom.Where(d => d.Code == billDetail.Bill.BillAddress.Code).FirstOrDefault(); dssExportHistory.DefinedString3 = sd.ExternalCode; //Map到shipto } dssExportHistory.KeyCode = DssHelper.GetBillKeyCode(dssExportHistory, billDetail.Bill.BillNo); this.GetLoctransInfo(dssExportHistory); result.Add(dssExportHistory); } } return(result); }
private IList <DssExportHistory> ConvertList(IList list, DssOutboundControl dssOutboundControl) { IList <DssExportHistory> result = new List <DssExportHistory>(); if (list != null && list.Count > 0) { foreach (object obj in list) { DssExportHistory dssExportHistory = new DssExportHistory(); dssExportHistory.DssOutboundControl = dssOutboundControl; dssExportHistory.EventCode = BusinessConstants.DSS_EVENT_CODE_CREATE; dssExportHistory.IsActive = true; dssExportHistory.CreateDate = DateTime.Now; dssExportHistory.OriginalId = (int)((object[])obj)[0]; dssExportHistory.OrderNo = (string)((object[])obj)[1]; dssExportHistory.ReceiptNo = (string)((object[])obj)[2]; dssExportHistory.Item = (string)((object[])obj)[3]; dssExportHistory.Qty = (decimal)((object[])obj)[4]; dssExportHistory.EffectiveDate = (DateTime)((object[])obj)[5]; dssExportHistory.PartyFrom = (string)((object[])obj)[6]; if ((string)((object[])obj)[8] == BusinessConstants.SYSTEM_LOCATION_REJECT) { dssExportHistory.PartyTo = (string)((object[])obj)[7]; // this.GetLoctransInfo(dssExportHistory); this.GetLoctransInfo(dssExportHistory, true);//10-15上线 dssExportHistory.KeyCode = orderHeadMgr.LoadOrderHead(dssExportHistory.OrderNo).ExternalOrderNo; } else { dssExportHistory.PartyTo = (string)((object[])obj)[6]; this.GetLoctransInfo(dssExportHistory); dssExportHistory.KeyCode = this.GetKeyCode(dssExportHistory, dssExportHistory.ReceiptNo); } result.Add(dssExportHistory); } } return(result); }
private string GetTransNumber(DssOutboundControl dssOutboundControl, string filePrefix, DateTime effDate) { string codePrefix = filePrefix + effDate.ToString("yyyyMMdd"); if (dssOutboundControl.ExternalSystem.Flag != null && dssOutboundControl.ExternalSystem.Flag.Trim() != string.Empty) { codePrefix += dssOutboundControl.ExternalSystem.Flag.Substring(0, 1); } else { codePrefix += "0"; } string transNo = this.numberControlMgr.GenerateNumber(codePrefix, 8); return(transNo.Substring(transNo.Length - 17, 17)); }
protected override IList<DssExportHistory> ExtractOutboundData(DssOutboundControl dssOutboundControl) { DetachedCriteria criteria = DetachedCriteria.For(typeof(BillTransaction)) .Add(Expression.Gt("Id", dssOutboundControl.Mark)) .Add(Expression.Eq("TransactionType", BusinessConstants.BILL_TRANS_TYPE_PO)); criteria.SetProjection(Projections.ProjectionList() .Add(Projections.Max("Id")) .Add(Projections.GroupProperty("OrderNo")) .Add(Projections.GroupProperty("ReceiptNo")) .Add(Projections.GroupProperty("Item")) .Add(Projections.Sum("Qty")) .Add(Projections.GroupProperty("EffectiveDate")) .Add(Projections.GroupProperty("Party"))); IList result = criteriaMgrE.FindAll(criteria); return this.ConvertList(result, dssOutboundControl); }
protected override IList <DssExportHistory> ExtractOutboundData(DssOutboundControl dssOutboundControl) { IList <LocationTransaction> locTrans = this.GetLocationTransaction(dssOutboundControl.Mark); log.Debug("Get records: LocTrans:" + locTrans.Count); locTrans = locTrans.Where(l => l.OrderDetailId > 0).ToList();//保险代码 #region 投料事务修正 if (locTrans != null && locTrans.Count > 0) { foreach (var locTran in locTrans) { if (StringHelper.Eq(locTran.TransactionType, BusinessConstants.CODE_MASTER_LOCATION_TRANSACTION_TYPE_VALUE_ISS_WO_BF)) { locTran.TransactionType = BusinessConstants.CODE_MASTER_LOCATION_TRANSACTION_TYPE_VALUE_ISS_WO; locTran.Location = locTran.RefLocation; } } } #endregion //按生效日期分类汇总 var query = from l in locTrans orderby l.EffectiveDate group l by l.EffectiveDate into g select new { EffectiveDate = g.Key, list = g.ToList() }; IList <DssExportHistory> result = new List <DssExportHistory>(); foreach (var q in query) { log.Debug("Now processing EffectiveDate:" + q.EffectiveDate.ToString("yyyy-MM-dd")); IList <DssExportHistory> group = this.GroupData(q.list, dssOutboundControl, q.EffectiveDate); result = result.Concat(group).ToList(); } log.Debug("Result count after processing:" + result.Count); return(result); }
protected override IList<DssExportHistory> ExtractOutboundData(DssOutboundControl dssOutboundControl) { IList<LocationTransaction> locTrans = this.GetLocationTransaction(dssOutboundControl.Mark); log.Debug("Get records: LocTrans:" + locTrans.Count); locTrans = locTrans.Where(l => l.OrderDetailId > 0).ToList();//保险代码 #region 投料事务修正 if (locTrans != null && locTrans.Count > 0) { foreach (var locTran in locTrans) { if (StringHelper.Eq(locTran.TransactionType, BusinessConstants.CODE_MASTER_LOCATION_TRANSACTION_TYPE_VALUE_ISS_WO_BF)) { locTran.TransactionType = BusinessConstants.CODE_MASTER_LOCATION_TRANSACTION_TYPE_VALUE_ISS_WO; locTran.Location = locTran.RefLocation; } } } #endregion //按生效日期分类汇总 var query = from l in locTrans orderby l.EffectiveDate group l by l.EffectiveDate into g select new { EffectiveDate = g.Key, list = g.ToList() }; IList<DssExportHistory> result = new List<DssExportHistory>(); foreach (var q in query) { log.Debug("Now processing EffectiveDate:" + q.EffectiveDate.ToString("yyyy-MM-dd")); IList<DssExportHistory> group = this.GroupData(q.list, dssOutboundControl, q.EffectiveDate); result = result.Concat(group).ToList(); } log.Debug("Result count after processing:" + result.Count); return result; }
protected override IList <DssExportHistory> ExtractOutboundData(DssOutboundControl dssOutboundControl) { IList result = commonOutboundMgr.ExtractOutboundDataFromLocationTransaction(dssOutboundControl, BusinessConstants.CODE_MASTER_LOCATION_TRANSACTION_TYPE_VALUE_ISS_UNP, MatchMode.Exact, true); //mod by djin 2012-09-15 // IList<DssExportHistory> list = this.ConvertList(result, dssOutboundControl); IList <DssExportHistory> list = this.ConvertList(result, dssOutboundControl, true);//10-15 //去除固定科目的Iss-unp string[] delCCode = { "0000" }; DetachedCriteria subjectList = DetachedCriteria.For(typeof(SubjectList)); subjectList.Add(Expression.In("CostCenterCode", delCCode)); subjectList.Add(Expression.Eq("SubjectCode", "11111111")); IList subjectListCode = criteriaMgr.FindAll(subjectList); var miscoOrder = (from l in list select l.KeyCode).Distinct().ToList(); DetachedCriteria misOrderCriteria = DetachedCriteria.For(typeof(MiscOrder));//需要删除的miscorder misOrderCriteria.Add(Expression.In("OrderNo", miscoOrder)); misOrderCriteria.Add(Expression.In("SubjectList", subjectListCode)); IList <MiscOrder> miscOrderList = criteriaMgr.FindAll <MiscOrder>(misOrderCriteria); IList <DssExportHistory> delList = (from l in list join n in miscOrderList on l.KeyCode equals n.OrderNo select l).ToList(); foreach (DssExportHistory dss in list) { if (delList.Contains(dss)) { dss.Comments = "DEL"; } } //mod end if (list != null && list.Count > 0) { foreach (var item in list) { item.Qty = -item.Qty;//修正数量 } } return(list); }
//modified by [email protected] //2012/5 //Filename default: Region + FilePrefix + TransNo + FileSuffix .REQ private string GetFileName(DssOutboundControl dssOutboundControl, string filePrefix, string transNo, string region) { string fileSuffix = string.Empty; if (dssOutboundControl.FileSuffix != null && dssOutboundControl.FileSuffix.Trim() != string.Empty) { fileSuffix = dssOutboundControl.FileSuffix; } else { fileSuffix = dssOutboundControl.ExternalObjectCode + ".REQ"; } string fileName = filePrefix + "_" + transNo + "_" + fileSuffix; if (region != "") { fileName = region + filePrefix + "_" + transNo + "_" + fileSuffix; } return(fileName); }
private IList <DssExportHistory> ConvertList(IList <BillDetail> list, DssOutboundControl dssOutboundControl) { IList <DssExportHistory> result = new List <DssExportHistory>(); if (list != null && list.Count > 0) { foreach (BillDetail billDetail in list) { DssExportHistory dssExportHistory = new DssExportHistory(); dssExportHistory.DssOutboundControl = dssOutboundControl; dssExportHistory.EventCode = BusinessConstants.DSS_EVENT_CODE_CREATE; dssExportHistory.IsActive = true; dssExportHistory.CreateDate = DateTime.Now; dssExportHistory.OriginalId = billDetail.Id; dssExportHistory.OrderNo = billDetail.ActingBill.OrderNo; dssExportHistory.ReceiptNo = billDetail.ActingBill.ReceiptNo; dssExportHistory.Item = billDetail.ActingBill.Item.Code; dssExportHistory.Uom = billDetail.ActingBill.Uom.Code; dssExportHistory.Qty = billDetail.BilledQty; dssExportHistory.EffectiveDate = billDetail.ActingBill.EffectiveDate; dssExportHistory.PartyFrom = billDetail.Bill.BillAddress.Party.Code; //供应商 dssExportHistory.DefinedString1 = billDetail.Bill.BillNo; //开票通知单号 dssExportHistory.DefinedString2 = billDetail.Currency.Code; //币种 dssExportHistory.DefinedString3 = billDetail.UnitPrice.ToString("0.########"); //发票单价 dssExportHistory.DefinedString4 = billDetail.UnitPrice.ToString("0.########"); //采购单价 dssExportHistory.DefinedString5 = billDetail.OrderAmount.ToString("0.########"); //金额 dssExportHistory.KeyCode = DssHelper.GetBillKeyCode(dssExportHistory, billDetail.Bill.BillNo); this.GetLoctransInfo(dssExportHistory); result.Add(dssExportHistory); } } return(result); }
protected override IList <DssExportHistory> ExtractOutboundData(DssOutboundControl dssOutboundControl) { DetachedCriteria criteria = DetachedCriteria.For(typeof(BillTransaction)) .Add(Expression.Gt("Id", dssOutboundControl.Mark)) .Add(Expression.Eq("TransactionType", BusinessConstants.BILL_TRANS_TYPE_PO)); criteria.SetProjection(Projections.ProjectionList() .Add(Projections.Max("Id")) .Add(Projections.GroupProperty("OrderNo")) .Add(Projections.GroupProperty("ReceiptNo")) .Add(Projections.GroupProperty("Item")) .Add(Projections.Sum("Qty")) .Add(Projections.GroupProperty("EffectiveDate")) .Add(Projections.GroupProperty("Party")) .Add(Projections.GroupProperty("PartyFrom")) .Add(Projections.GroupProperty("LocationFrom"))) ; IList result = criteriaMgr.FindAll(criteria); return(this.ConvertList(result, dssOutboundControl)); }
protected override IList<DssExportHistory> ExtractOutboundData(DssOutboundControl dssOutboundControl) { IList result = commonOutboundMgr.ExtractOutboundDataFromLocationTransaction(dssOutboundControl, BusinessConstants.CODE_MASTER_LOCATION_TRANSACTION_TYPE_VALUE_ISS_UNP, MatchMode.Exact, true); //mod by djin 2012-09-15 // IList<DssExportHistory> list = this.ConvertList(result, dssOutboundControl); IList<DssExportHistory> list = this.ConvertList(result, dssOutboundControl, true);//10-15 //去除固定科目的Iss-unp string[] delCCode = { "0000" }; DetachedCriteria subjectList = DetachedCriteria.For(typeof(SubjectList)); subjectList.Add(Expression.In("CostCenterCode", delCCode)); subjectList.Add(Expression.Eq("SubjectCode", "11111111")); IList subjectListCode = criteriaMgr.FindAll(subjectList); var miscoOrder = (from l in list select l.KeyCode).Distinct().ToList(); DetachedCriteria misOrderCriteria = DetachedCriteria.For(typeof(MiscOrder));//需要删除的miscorder misOrderCriteria.Add(Expression.In("OrderNo", miscoOrder)); misOrderCriteria.Add(Expression.In("SubjectList", subjectListCode)); IList<MiscOrder> miscOrderList = criteriaMgr.FindAll<MiscOrder>(misOrderCriteria); IList<DssExportHistory> delList = (from l in list join n in miscOrderList on l.KeyCode equals n.OrderNo select l).ToList(); foreach (DssExportHistory dss in list) { if (delList.Contains(dss)) dss.Comments = "DEL"; } //mod end if (list != null && list.Count > 0) { foreach (var item in list) { item.Qty = -item.Qty;//修正数量 } } return list; }
protected override IList<DssExportHistory> ExtractOutboundData(DssOutboundControl dssOutboundControl) { DetachedCriteria criteria = DetachedCriteria.For(typeof(BillDetail)) .CreateAlias("Bill", "b") // .Add(Expression.Gt("Id", dssOutboundControl.Mark)) 不根据id了,根据是否导出,是否暂估和状态非创建 .Add(Expression.Eq("b.HasProvEst", false)) .Add(Expression.Eq("b.IsExport", false)) // .Add(Expression.Not(Expression.Eq("b.Status", BusinessConstants.CODE_MASTER_STATUS_VALUE_CREATE))) .Add(Expression.Eq("b.TransactionType", BusinessConstants.BILL_TRANS_TYPE_SO)) .Add(Expression.In("b.Status", new string[] { BusinessConstants.CODE_MASTER_STATUS_VALUE_SUBMIT ,BusinessConstants.CODE_MASTER_STATUS_VALUE_CLOSE ,BusinessConstants.CODE_MASTER_STATUS_VALUE_VOID})); IList<BillDetail> result = criteriaMgr.FindAll<BillDetail>(criteria); IList<DssExportHistory> resultList = this.ConvertList(result, dssOutboundControl); IList<Bill> billList = result.Select(r => r.Bill).Distinct().ToList(); foreach (Bill bill in billList) { bill.IsExport = true; this.billMgr.UpdateBill(bill); } return resultList; }
private string GetFilePrefix(DssOutboundControl dssOutboundControl) { if (dssOutboundControl.FilePrefix != null && dssOutboundControl.FilePrefix.Trim() != string.Empty) { return(dssOutboundControl.FilePrefix); } string sysCode = BusinessConstants.DSS_SYSTEM_CODE_SCONIT; string extSysCode = dssOutboundControl.ExternalSystem.Code; if (dssOutboundControl.SysAlias != null && dssOutboundControl.SysAlias.Trim() != string.Empty) { sysCode = dssOutboundControl.SysAlias; } if (dssOutboundControl.ExternalSystem.SysAlias != null && dssOutboundControl.ExternalSystem.SysAlias.Trim() != string.Empty) { extSysCode = dssOutboundControl.ExternalSystem.SysAlias; } string filePrefix = sysCode + "_" + extSysCode; return(filePrefix); }
public IList ExtractOutboundDataFromLocationTransaction(DssOutboundControl dssOutboundControl, string transType, MatchMode matchMode, bool includeRefLoc) { DetachedCriteria criteria = DetachedCriteria.For(typeof(LocationTransaction)); criteria.Add(Expression.Gt("Id", dssOutboundControl.Mark)); criteria.Add(Expression.Like("TransactionType", transType, matchMode)); if (includeRefLoc) { criteria.SetProjection(Projections.ProjectionList() .Add(Projections.Max("Id")) .Add(Projections.GroupProperty("OrderNo")) .Add(Projections.GroupProperty("ReceiptNo")) .Add(Projections.GroupProperty("Item")) .Add(Projections.GroupProperty("Location")) .Add(Projections.Sum("Qty")) .Add(Projections.GroupProperty("EffectiveDate")) .Add(Projections.GroupProperty("PartyFrom")) .Add(Projections.GroupProperty("PartyTo")) .Add(Projections.GroupProperty("RefLocation"))); } else { criteria.SetProjection(Projections.ProjectionList() .Add(Projections.Max("Id")) .Add(Projections.GroupProperty("OrderNo")) .Add(Projections.GroupProperty("ReceiptNo")) .Add(Projections.GroupProperty("Item")) .Add(Projections.GroupProperty("Location")) .Add(Projections.Sum("Qty")) .Add(Projections.GroupProperty("EffectiveDate")) .Add(Projections.GroupProperty("PartyFrom")) .Add(Projections.GroupProperty("PartyTo"))); } return(criteriaMgr.FindAll(criteria)); }
private IList <DssExportHistory> GroupData(IList <DssExportHistory> list, DssOutboundControl dssOutboundControl) { var query = from l in list group l by new { l.Item, l.PartyFrom, l.ReferenceLocation, l.PartyTo, l.Location, l.EffectiveDate, l.Comments } into g select new DssExportHistory { Item = g.Key.Item, PartyFrom = g.Key.PartyFrom, ReferenceLocation = g.Key.ReferenceLocation, PartyTo = g.Key.PartyTo, Location = g.Key.Location, Qty = g.Sum(d => d.Qty), EffectiveDate = g.Key.EffectiveDate, OriginalId = g.Max(d => d.OriginalId), KeyCode = g.Max(d => d.OriginalId).ToString(), DssOutboundControl = dssOutboundControl, EventCode = BusinessConstants.DSS_EVENT_CODE_CREATE, IsActive = true, CreateDate = DateTime.Now, Comments = g.Key.Comments }; return(query.Where(q => q.Qty != 0).ToList()); }
protected override IList <DssExportHistory> ExtractOutboundData(DssOutboundControl dssOutboundControl) { DetachedCriteria criteria = DetachedCriteria.For(typeof(BillDetail)) .CreateAlias("Bill", "b") // .Add(Expression.Gt("Id", dssOutboundControl.Mark)) 不根据id了,根据是否导出,是否暂估和状态非创建 .Add(Expression.Eq("b.HasProvEst", false)) .Add(Expression.Eq("b.IsExport", false)) // .Add(Expression.Not(Expression.Eq("b.Status", BusinessConstants.CODE_MASTER_STATUS_VALUE_CREATE))) .Add(Expression.Eq("b.TransactionType", BusinessConstants.BILL_TRANS_TYPE_SO)) .Add(Expression.In("b.Status", new string[] { BusinessConstants.CODE_MASTER_STATUS_VALUE_SUBMIT, BusinessConstants.CODE_MASTER_STATUS_VALUE_CLOSE, BusinessConstants.CODE_MASTER_STATUS_VALUE_VOID })); IList <BillDetail> result = criteriaMgr.FindAll <BillDetail>(criteria); IList <DssExportHistory> resultList = this.ConvertList(result, dssOutboundControl); IList <Bill> billList = result.Select(r => r.Bill).Distinct().ToList(); foreach (Bill bill in billList) { bill.IsExport = true; this.billMgr.UpdateBill(bill); } return(resultList); }
protected abstract IList <DssExportHistory> ExtractOutboundData(DssOutboundControl dssOutboundControl);
public void CreateDssExportHistory(IList <DssExportHistory> dssExportHistoryList, DssOutboundControl dssOutboundControl) { if (dssExportHistoryList != null && dssExportHistoryList.Count > 0) { int newMark1 = 0; if (dssOutboundControl.Id != 3) { newMark1 = dssExportHistoryList.Max(d => d.OriginalId); } else if (dssOutboundControl.Id == 3)//RCT-TR中取费零星销售的最大ID { var dssList = (from dss in dssExportHistoryList where dss.Comments != "ISS-UNP2RCT-TR" select dss).ToList(); if (dssList != null && dssList.Count > 0) { newMark1 = dssList.Max(d => d.OriginalId); } } int newMark2 = 0; // bool errFlag = false; // int markID = 0; if (dssOutboundControl.Id == 9) { Fileter(dssExportHistoryList); //ISS-UNP中删除零星销售 } if (dssExportHistoryList != null && dssExportHistoryList.Count > 0) { dssExportHistoryMgr.CreateDssExportHistory(dssExportHistoryList); #region //dssExportHistoryList = (from l in dssExportHistoryList orderby l.OriginalId select l).ToList(); //try //{ // foreach (DssExportHistory dss in dssExportHistoryList) // { // dssExportHistoryMgr.CreateDssExportHistory(dss); // if (dss.DssExportHistoryDetails != null && dss.DssExportHistoryDetails.Count > 0) // { // markID = dss.DssExportHistoryDetails.Max(d => d.OriginalId); // } // markID = Math.Max(markID, dss.OriginalId); // } //} //catch (Exception ex) //{ // errFlag = true; //} #endregion #region New Mark var query = from d in dssExportHistoryList where d.DssExportHistoryDetails != null && d.DssExportHistoryDetails.Count > 0 from dd in d.DssExportHistoryDetails select dd; if (query != null && query.Count() > 0) { newMark2 = query.Max(d => d.OriginalId); } } DssOutboundControl newDssOutboundControl = this.dssOutboundControlMgr.LoadDssOutboundControl(dssOutboundControl.Id); newMark1 = Math.Max(newMark1, newDssOutboundControl.Mark); //if (!errFlag) newDssOutboundControl.Mark = Math.Max(newMark1, newMark2); dssOutboundControl.Mark = newDssOutboundControl.Mark;//修正logBug // else // newDssOutboundControl.Mark = markID; #endregion try { dssOutboundControlMgr.UpdateDssOutboundControl(newDssOutboundControl); } catch (Exception ex) { log.Error(ex.Message + " Markid" + newDssOutboundControl.Mark); bool isupd = false; int i = 0; while (!isupd && i < 100) { dssOutboundControlMgr.UpdateDssOutboundControl(newDssOutboundControl); DssOutboundControl errDSC = this.dssOutboundControlMgr.LoadDssOutboundControl(newDssOutboundControl.Id); i++; if (errDSC.Mark == newDssOutboundControl.Mark) { isupd = true; } } } } }
public IList<DssExportHistory> GroupData(IList<DssExportHistory> list, DssOutboundControl dssOutboundControl) { var query = from l in list group l by new { l.Item, l.PartyFrom, l.ReferenceLocation, l.PartyTo, l.Location, l.EffectiveDate } into g select new DssExportHistory { Item = g.Key.Item, PartyFrom = g.Key.PartyFrom, ReferenceLocation = g.Key.ReferenceLocation, PartyTo = g.Key.PartyTo, Location = g.Key.Location, Qty = g.Sum(d => d.Qty), EffectiveDate = g.Key.EffectiveDate, OriginalId = g.Max(d => d.OriginalId), KeyCode = g.Max(d => d.OriginalId).ToString(), DssOutboundControl = dssOutboundControl, EventCode = BusinessConstants.DSS_EVENT_CODE_CREATE, IsActive = true, CreateDate = DateTime.Now }; return query.Where(q => q.Qty != 0).ToList(); }
public void CreateDssExportHistory(IList<DssExportHistory> dssExportHistoryList, DssOutboundControl dssOutboundControl) { if (dssExportHistoryList != null && dssExportHistoryList.Count > 0) { int newMark1 = 0; if (dssOutboundControl.Id != 3) newMark1 = dssExportHistoryList.Max(d => d.OriginalId); else if (dssOutboundControl.Id == 3)//RCT-TR中取费零星销售的最大ID { var dssList = (from dss in dssExportHistoryList where dss.Comments != "ISS-UNP2RCT-TR" select dss).ToList(); if (dssList != null && dssList.Count > 0) newMark1 = dssList.Max(d => d.OriginalId); } int newMark2 = 0; // bool errFlag = false; // int markID = 0; if (dssOutboundControl.Id == 9) Fileter(dssExportHistoryList);//ISS-UNP中删除零星销售 if (dssExportHistoryList != null && dssExportHistoryList.Count > 0) { dssExportHistoryMgr.CreateDssExportHistory(dssExportHistoryList); #region //dssExportHistoryList = (from l in dssExportHistoryList orderby l.OriginalId select l).ToList(); //try //{ // foreach (DssExportHistory dss in dssExportHistoryList) // { // dssExportHistoryMgr.CreateDssExportHistory(dss); // if (dss.DssExportHistoryDetails != null && dss.DssExportHistoryDetails.Count > 0) // { // markID = dss.DssExportHistoryDetails.Max(d => d.OriginalId); // } // markID = Math.Max(markID, dss.OriginalId); // } //} //catch (Exception ex) //{ // errFlag = true; //} #endregion #region New Mark var query = from d in dssExportHistoryList where d.DssExportHistoryDetails != null && d.DssExportHistoryDetails.Count > 0 from dd in d.DssExportHistoryDetails select dd; if (query != null && query.Count() > 0) { newMark2 = query.Max(d => d.OriginalId); } } DssOutboundControl newDssOutboundControl = this.dssOutboundControlMgr.LoadDssOutboundControl(dssOutboundControl.Id); newMark1 = Math.Max(newMark1, newDssOutboundControl.Mark); //if (!errFlag) newDssOutboundControl.Mark = Math.Max(newMark1, newMark2); dssOutboundControl.Mark = newDssOutboundControl.Mark;//修正logBug // else // newDssOutboundControl.Mark = markID; #endregion try { dssOutboundControlMgr.UpdateDssOutboundControl(newDssOutboundControl); } catch (Exception ex) { log.Error(ex.Message + " Markid" + newDssOutboundControl.Mark); bool isupd = false; int i = 0; while (!isupd && i < 100) { dssOutboundControlMgr.UpdateDssOutboundControl(newDssOutboundControl); DssOutboundControl errDSC = this.dssOutboundControlMgr.LoadDssOutboundControl(newDssOutboundControl.Id); i++; if (errDSC.Mark == newDssOutboundControl.Mark) isupd = true; } } } }
private IList<DssExportHistory> ConvertList(IList list, DssOutboundControl dssOutboundControl) { IList<DssExportHistory> result = new List<DssExportHistory>(); if (list != null && list.Count > 0) { foreach (object obj in list) { DssExportHistory dssExportHistory = new DssExportHistory(); dssExportHistory.DssOutboundControl = dssOutboundControl; dssExportHistory.EventCode = BusinessConstants.DSS_EVENT_CODE_CREATE; dssExportHistory.IsActive = true; dssExportHistory.CreateDate = DateTime.Now; dssExportHistory.OriginalId = (int)((object[])obj)[0]; dssExportHistory.OrderNo = (string)((object[])obj)[1]; dssExportHistory.ReceiptNo = (string)((object[])obj)[2]; dssExportHistory.Item = (string)((object[])obj)[3]; dssExportHistory.Qty = (decimal)((object[])obj)[4]; dssExportHistory.EffectiveDate = (DateTime)((object[])obj)[5]; dssExportHistory.PartyFrom = (string)((object[])obj)[6]; if ((string)((object[])obj)[8] == BusinessConstants.SYSTEM_LOCATION_REJECT) { dssExportHistory.PartyTo = (string)((object[])obj)[7]; // this.GetLoctransInfo(dssExportHistory); this.GetLoctransInfo(dssExportHistory,true);//10-15上线 dssExportHistory.KeyCode = orderHeadMgr.LoadOrderHead(dssExportHistory.OrderNo).ExternalOrderNo; } else { dssExportHistory.PartyTo = (string)((object[])obj)[6]; this.GetLoctransInfo(dssExportHistory); dssExportHistory.KeyCode = this.GetKeyCode(dssExportHistory, dssExportHistory.ReceiptNo); } result.Add(dssExportHistory); } } return result; }
private void ProcessRctTr(IList<DssExportHistory> list, DssOutboundControl dssOutboundControl) { if (list != null && list.Count > 0) { List<int> orderDetIdList = list.Where(l => l.OrderDetailId > 0).Select(l => l.OrderDetailId).Distinct().ToList(); IList<LocationTransaction> issList = this.GetIssTr(orderDetIdList); if (issList != null && issList.Count > 0) { foreach (var dssExportHistory in list) { var issTrans = issList.Where(i => i.OrderDetailId == dssExportHistory.OrderDetailId).SingleOrDefault(); if (issTrans != null) { dssExportHistory.ReferenceLocation = issTrans.Location; dssExportHistory.PartyFrom = issTrans.PartyFrom; } } } } }
private IList<DssExportHistoryDetail> GroupSingleDssExportHistoryDetail(List<int> orderDetIdList, IList<LocationTransaction> rmLocTrans, DssOutboundControl dssOutboundControl, DateTime effectiveDate, Dictionary<string, IList<int>> orderdet, string fcol) { if (orderdet.ContainsKey(fcol))//包含同类 { IList<int> orderdetid = (IList<int>)orderdet[fcol]; foreach (int i in orderdetid) { if (orderDetIdList.Contains(i)) orderDetIdList.Remove(i); } if (orderDetIdList != null && orderDetIdList.Count > 0) { foreach (int i in orderDetIdList) { orderdetid.Add(i); } orderdet[fcol] = orderdetid; } } else { orderdet.Add(fcol, orderDetIdList); } var details = rmLocTrans.Where(r => orderDetIdList.Contains(r.OrderDetailId)).ToList(); var query = from d in details group d by new { d.PartyFrom, d.PartyTo, d.Location, d.Item } into g select new DssExportHistoryDetail { PartyFrom = g.Key.PartyFrom, PartyTo = g.Key.PartyTo, Location = this.GetMappingExternalCode(BusinessConstants.DSS_ENTITY_LOCATION, dssOutboundControl.ExternalSystem.Code, g.Key.Location, g.Key.Location), Item = g.Key.Item, Qty = -g.Sum(d => d.Qty),//生产消耗事务数为负 需要修改 EffDate = effectiveDate, OriginalId = g.Max(d => d.Id), KeyCode = g.Max(d => d.Id).ToString() }; return query.ToList(); }
public virtual void UpdateDssOutboundControl(DssOutboundControl entity) { entityDao.UpdateDssOutboundControl(entity); }
//获取issunp djin private IList<DssExportHistory> GetIssUnpLocationTransaction(int mark, DssOutboundControl outCon) { DssOutboundControl dc = dssOutboundControlMgr.LoadDssOutboundControl(9); IList<DssExportHistory> result = GetRctTrLocationTransaction(dc.Mark, "ISS-UNP"); string[] delCCode = { "0000" }; DetachedCriteria subjectList = DetachedCriteria.For(typeof(SubjectList)); subjectList.Add(Expression.In("CostCenterCode", delCCode)); subjectList.Add(Expression.Eq("SubjectCode", "11111111")); IList subjectListCode = criteriaMgr.FindAll(subjectList); var miscoOrder = (from l in result select l.OrderNo).Distinct().ToList(); DetachedCriteria misOrderCriteria = DetachedCriteria.For(typeof(MiscOrder));//需要删除的miscorder misOrderCriteria.Add(Expression.In("OrderNo", miscoOrder)); misOrderCriteria.Add(Expression.In("SubjectList", subjectListCode)); IList<MiscOrder> miscOrderList = criteriaMgr.FindAll<MiscOrder>(misOrderCriteria); IList<DssExportHistory> addList = (from l in result join n in miscOrderList on l.OrderNo equals n.OrderNo select l).ToList(); foreach(DssExportHistory dssExp in addList) { dssExp.Qty = dssExp.Qty * -1; dssExp.Comments = "ISS-UNP2RCT-TR"; dssExp.ReferenceLocation = dssExp.Location; dssExp.Location = "LXXS"; } return addList; }
private IList <DssExportHistoryDetail> GroupSingleDssExportHistoryDetail(List <int> orderDetIdList, IList <LocationTransaction> rmLocTrans, DssOutboundControl dssOutboundControl, DateTime effectiveDate, Dictionary <string, IList <int> > orderdet, string fcol) { if (orderdet.ContainsKey(fcol))//包含同类 { IList <int> orderdetid = (IList <int>)orderdet[fcol]; foreach (int i in orderdetid) { if (orderDetIdList.Contains(i)) { orderDetIdList.Remove(i); } } if (orderDetIdList != null && orderDetIdList.Count > 0) { foreach (int i in orderDetIdList) { orderdetid.Add(i); } orderdet[fcol] = orderdetid; } } else { orderdet.Add(fcol, orderDetIdList); } var details = rmLocTrans.Where(r => orderDetIdList.Contains(r.OrderDetailId)).ToList(); var query = from d in details group d by new { d.PartyFrom, d.PartyTo, d.Location, d.Item } into g select new DssExportHistoryDetail { PartyFrom = g.Key.PartyFrom, PartyTo = g.Key.PartyTo, Location = this.GetMappingExternalCode(BusinessConstants.DSS_ENTITY_LOCATION, dssOutboundControl.ExternalSystem.Code, g.Key.Location, g.Key.Location), Item = g.Key.Item, Qty = -g.Sum(d => d.Qty), //生产消耗事务数为负 需要修改 EffDate = effectiveDate, OriginalId = g.Max(d => d.Id), KeyCode = g.Max(d => d.Id).ToString() }; return(query.ToList()); }
private IList <DssExportHistory> GroupSingleDssExportHistory(IList <LocationTransaction> fgLocTrans, IList <LocationTransaction> rmLocTrans, DssOutboundControl dssOutboundControl, DateTime effectiveDate) { var refLoc = (from l in fgLocTrans where l.Location == "Reject" select l.RefLocation).Distinct().ToList(); Dictionary <string, string> refDic = new Dictionary <string, string>(); foreach (var i in refLoc) { if (i == null) { continue; } Location loc = locMgr.LoadLocation(i); if (loc != null && !refDic.ContainsKey(i)) { refDic.Add(i, loc.Region.Code); } } Dictionary <string, IList <int> > orderdet = new Dictionary <string, IList <int> >(); var x = (from xxxx in fgLocTrans where xxxx.Item == "" select xxxx).ToList(); var query = from l in fgLocTrans group l by new { l.PartyFrom, l.PartyTo, l.Location, l.Item, l.RefLocation } into g select new DssExportHistory { PartyFrom = g.Key.PartyFrom, PartyTo = getPartTo(g.Key.Location, g.Key.PartyTo, g.Key.RefLocation, refDic), //10-15 Location = g.Key.Location, Item = g.Key.Item, // ReferenceLocation=g.Key.RefLocation, Qty = g.Sum(d => d.Qty), EffectiveDate = effectiveDate, OriginalId = g.Max(d => d.Id), DssOutboundControl = dssOutboundControl, EventCode = BusinessConstants.DSS_EVENT_CODE_CREATE, IsActive = true, CreateDate = DateTime.Now, DssExportHistoryDetails = this.GroupSingleDssExportHistoryDetail(g.Select(d => d.OrderDetailId).Distinct().ToList(), rmLocTrans, dssOutboundControl, effectiveDate, orderdet, g.Key.PartyFrom + g.Key.PartyTo + g.Key.Location + g.Key.Item ), UndefinedString1 = dssOutboundControl.ExternalSystem.UndefinedString1, //Site,备用 UndefinedString2 = dssOutboundControl.UndefinedString1, //雇员 UndefinedString3 = dssOutboundControl.UndefinedString2, //工序 KeyCode = g.Max(d => d.Id).ToString() //Max LocTransId , Comments = g.Key.PartyFrom + g.Key.PartyTo + g.Key.Location + g.Key.Item }; var list = query.ToList(); //djin ISS-wo重复删除 //var comments = (from i in list select i.Comments).Distinct().ToList(); //foreach (var com in comments) //{ // var dsss = (from dss in list where dss.Comments == com select dss).ToList(); // bool flag = true; // foreach (DssExportHistory dss in dsss) // { // if (!flag) // { // dss.DssExportHistoryDetails = null; // } // else // { // flag = false; // } // } //} return(list); }
private IList <DssExportHistory> GroupData(IList <LocationTransaction> locTrans, DssOutboundControl dssOutboundControl, DateTime effectiveDate) { #region 补充0成品工单 var fgOrderDetIdList = locTrans .Where(l => StringHelper.Eq(l.TransactionType, BusinessConstants.CODE_MASTER_LOCATION_TRANSACTION_TYPE_VALUE_RCT_WO)) .Select(l => l.OrderDetailId).Distinct().ToList(); var rmOrderDetIdList = locTrans .Where(l => StringHelper.Eq(l.TransactionType, BusinessConstants.CODE_MASTER_LOCATION_TRANSACTION_TYPE_VALUE_ISS_WO)) .Select(l => l.OrderDetailId).Distinct().ToList(); var addList = rmOrderDetIdList.Except(fgOrderDetIdList).Distinct().ToList(); #region 添加虚拟RCT-WO if (addList.Count > 0) { IList <LocationTransaction> virtualWOList = this.GetVirRctWo(addList);//GetVirtualRCTWO 修改为 GetVirRctWo if (virtualWOList.Count > 0) { foreach (var virtualWO in virtualWOList) { virtualWO.TransactionType = BusinessConstants.CODE_MASTER_LOCATION_TRANSACTION_TYPE_VALUE_RCT_WO; virtualWO.EffectiveDate = effectiveDate; virtualWO.Qty = 0; } locTrans = locTrans.Concat(virtualWOList).ToList(); } } #endregion #endregion #region Transformer var fgQuery = locTrans.Where(l => StringHelper.Eq(l.TransactionType, BusinessConstants.CODE_MASTER_LOCATION_TRANSACTION_TYPE_VALUE_RCT_WO)).ToList(); var rmQuery = locTrans.Where(l => StringHelper.Eq(l.TransactionType, BusinessConstants.CODE_MASTER_LOCATION_TRANSACTION_TYPE_VALUE_ISS_WO)).ToList(); log.Debug("Begin to group single data, count:" + fgQuery.Count); IList <DssExportHistory> dssExportHistoryList = this.GroupSingleDssExportHistory(fgQuery, rmQuery, dssOutboundControl, effectiveDate); #endregion return(dssExportHistoryList); }
public void ProcessOutbound(DssOutboundControl dssOutboundControl) { log.Info("Start process outbound."); this.Initital_DBCache(); #region Initailize this._dssObjectMapping = this.dssObjectMappingMgr.GetAllDssObjectMapping(); #endregion string outFolder = dssOutboundControl.OutFolder; //string serviceName = dssOutboundControl.ServiceName; string archiveFolder = dssOutboundControl.ArchiveFolder; string tempFolder = dssOutboundControl.TempFolder; //string encoding = dssOutboundControl.FileEncoding; string encoding = Encoding.Default.WebName; string filePrefix = this.GetFilePrefix(dssOutboundControl); #region 初始化本地目录 outFolder = outFolder.Replace("\\", "/"); if (!outFolder.EndsWith("/")) { outFolder += "/"; } if (!Directory.Exists(outFolder)) { Directory.CreateDirectory(outFolder); } archiveFolder = archiveFolder.Replace("\\", "/"); if (!archiveFolder.EndsWith("/")) { archiveFolder += "/"; } if (!Directory.Exists(archiveFolder)) { Directory.CreateDirectory(archiveFolder); } tempFolder = tempFolder.Replace("\\", "/"); if (!tempFolder.EndsWith("/")) { tempFolder += "/"; } if (Directory.Exists(tempFolder)) { Directory.Delete(tempFolder, true); } Directory.CreateDirectory(tempFolder); #endregion #region 抽取数据 log.Info("Begin to extract data:extsyscode:" + dssOutboundControl.ExternalSystem.Code + ",extobjcode:" + dssOutboundControl.ExternalObjectCode + ",service:" + dssOutboundControl.ServiceName); IList <DssExportHistory> dataList = this.GetHisList(dssOutboundControl.Id); #region 缓存数据 IList <DssExportHistory> dssExportHistoryList = ExtractOutboundData(dssOutboundControl); this.ObjectMapping(dssExportHistoryList); dssExportHistoryList = this.FilterList(dssExportHistoryList); if (dssExportHistoryList != null && dssExportHistoryList.Count > 0) { this.CreateDssExportHistory(dssExportHistoryList, dssOutboundControl); dataList = dataList.Concat(dssExportHistoryList).ToList(); log.Info("DssExportHistory count:" + dataList.Count + ",update new mark:" + dssOutboundControl.Mark); } #endregion #endregion #region 循环处理抽取数据 if (dataList != null && dataList.Count > 0) { //if (dssOutboundControl.Id != 7) //{ #region 非iss-so foreach (DssExportHistory dssExportHistory in dataList) { try { object obj = null; try { obj = GetOutboundData(dssExportHistory); } catch (BusinessErrorException ex) { log.Warn("Get no outbound data:", ex); continue; } if (obj == null) { continue; } #region 对象转换为数组 object o = Serialize(obj); DateTime effDate = (DateTime)((object[])o)[0]; string[][] data = (string[][])((object[])o)[1]; #endregion #region 抽取数据导入文件 string transNo = this.GetTransNumber(dssOutboundControl, filePrefix, effDate); //modified by [email protected] //2012/5 string location = dssExportHistory.Location; bool partyfrom = dssExportHistory.PartyFrom == "1001" ? true : false; bool partyto = dssExportHistory.PartyTo == "1001" ? true : false; //string region = locationMgr.LoadLocation(location).Region.Code; string bj_region = partyfrom || partyto == true ? "BJ" : ""; string fileName = this.GetFileName(dssOutboundControl, filePrefix, transNo, bj_region); //modified end StreamWriter streamWriter = new StreamWriter(tempFolder + fileName, false, Encoding.GetEncoding(encoding)); FlatFileWriter flatFileWriter = new FlatFileWriter(streamWriter, Environment.NewLine, "|"); flatFileWriter.Write(data); flatFileWriter.Dispose(); #endregion #region 文件移至目录 try { File.Copy(tempFolder + fileName, archiveFolder + fileName); //备份目录 File.Move(tempFolder + fileName, outFolder + fileName); //导出目录 #region 更新导出标记 dssExportHistory.IsActive = false; dssExportHistory.TransNo = transNo; dssExportHistoryMgr.UpdateDssExportHistory(dssExportHistory); #endregion } catch (Exception ex) { log.Error("Create export file error.", ex); if (File.Exists(archiveFolder + fileName)) { File.Delete(archiveFolder + fileName); } if (File.Exists(outFolder + fileName)) { File.Delete(outFolder + fileName); } } #endregion } catch (Exception ex) { log.Error("Export data error.", ex); break; //2012-10-24 发生错误执行下一任务 djin } } #endregion //} //else //{ // var dataListGroup = (from i in dataList select i.DefinedString1).Distinct().ToList(); // foreach (var i in dataListGroup) // { // IList<string[][]> outString = new List<string[][]>(); // var result = (from x in dataList where x.DefinedString1 == i select x).ToList(); // #region iss-so // if (result != null && result.Count > 0) // { // foreach (DssExportHistory dssExportHistory in result) // { // try // { // object obj = null; // try // { // obj = GetOutboundData(dssExportHistory); // } // catch (BusinessErrorException ex) // { // log.Warn("Get no outbound data:", ex); // continue; // } // if (obj == null) // continue; // #region 对象转换为数组 // object o = Serialize(obj); // string[][] data = (string[][])((object[])o)[1]; // outString.Add(data); // #endregion // } // catch (Exception ex) // { // log.Error("Export data error.", ex); // break;//2012-10-24 发生错误执行下一任务 djin // } // } // #region 抽取数据导入文件 // try // { // DateTime effDate = (DateTime)((object[])Serialize(GetOutboundData(result[0])))[0]; // string transNo = this.GetTransNumber(dssOutboundControl, filePrefix, effDate); // //modified by [email protected] // //2012/5 // string location = result[0].Location; // bool partyfrom = result[0].PartyFrom == "1001" ? true : false; // bool partyto = result[0].PartyTo == "1001" ? true : false; // //string region = locationMgr.LoadLocation(location).Region.Code; // string bj_region = partyfrom || partyto == true ? "BJ" : ""; // string fileName = this.GetFileName(dssOutboundControl, filePrefix, transNo, bj_region); // fileName = fileName.Split(new char[] { '.' })[0].TrimEnd(new char[] { '1' }) +"."+ fileName.Split(new char[] { '.' })[1]; // //modified end // StreamWriter streamWriter = new StreamWriter(tempFolder + fileName, false, Encoding.GetEncoding(encoding)); // FlatFileWriter flatFileWriter = new FlatFileWriter(streamWriter, Environment.NewLine, "|"); // flatFileWriter.WriteWithNewLine(((string[][])(outString[0]))[0]); // foreach (string[][] str in outString) // { // flatFileWriter.WriteWithNewLine(str[1]); // } // flatFileWriter.Dispose(); // #endregion // #region 文件移至目录 // try // { // File.Copy(tempFolder + fileName, archiveFolder + fileName); //备份目录 // File.Move(tempFolder + fileName, outFolder + fileName); //导出目录 // #region 更新导出标记 // foreach (DssExportHistory dssExportHistory in dataList) // { // dssExportHistory.IsActive = false; // dssExportHistory.TransNo = transNo; // dssExportHistoryMgr.UpdateDssExportHistory(dssExportHistory); // } // #endregion // } // catch (Exception ex) // { // log.Error("Create export file error.", ex); // if (File.Exists(archiveFolder + fileName)) // { // File.Delete(archiveFolder + fileName); // } // if (File.Exists(outFolder + fileName)) // { // File.Delete(outFolder + fileName); // } // } // #endregion // } // catch (Exception ex) // { // continue; // } // #endregion // } // } //} } else { log.Info("No data export."); } #endregion this.Initital_DBCache(); log.Info("Start process outbound successful."); }
private IList<DssExportHistory> GroupSingleDssExportHistory(IList<LocationTransaction> fgLocTrans, IList<LocationTransaction> rmLocTrans, DssOutboundControl dssOutboundControl, DateTime effectiveDate) { var query = from l in fgLocTrans group l by new { l.PartyFrom, l.PartyTo, l.Location, l.Item } into g select new DssExportHistory { PartyFrom = g.Key.PartyFrom, PartyTo = g.Key.PartyTo, Location = g.Key.Location, Item = g.Key.Item, Qty = g.Sum(d => d.Qty), EffectiveDate = effectiveDate, OriginalId = g.Max(d => d.Id), DssOutboundControl = dssOutboundControl, EventCode = BusinessConstants.DSS_EVENT_CODE_CREATE, IsActive = true, CreateDate = DateTime.Now, DssExportHistoryDetails = this.GroupSingleDssExportHistoryDetail(g.Select(d => d.OrderDetailId).Distinct().ToList(), rmLocTrans, dssOutboundControl, effectiveDate), UndefinedString1 = dssOutboundControl.ExternalSystem.UndefinedString1,//Site,备用 UndefinedString2 = dssOutboundControl.UndefinedString1,//雇员 UndefinedString3 = dssOutboundControl.UndefinedString2,//工序 KeyCode = g.Max(d => d.Id).ToString()//Max LocTransId }; return query.ToList(); }
private IList<DssExportHistoryDetail> GroupSingleDssExportHistoryDetail(List<int> orderDetIdList, IList<LocationTransaction> rmLocTrans, DssOutboundControl dssOutboundControl, DateTime effectiveDate) { var details = rmLocTrans.Where(r => orderDetIdList.Contains(r.OrderDetailId)).ToList(); var query = from d in details group d by new { d.PartyFrom, d.PartyTo, d.Location, d.Item } into g select new DssExportHistoryDetail { PartyFrom = g.Key.PartyFrom, PartyTo = g.Key.PartyTo, Location = this.GetMappingExternalCode(BusinessConstants.DSS_ENTITY_LOCATION, dssOutboundControl.ExternalSystem.Code, g.Key.Location, g.Key.Location), Item = g.Key.Item, Qty = -g.Sum(d => d.Qty),//生产消耗事务数为负 EffDate = effectiveDate, OriginalId = g.Max(d => d.Id), KeyCode = g.Max(d => d.Id).ToString() }; return query.ToList(); }
private string GetTransNumber(DssOutboundControl dssOutboundControl, string filePrefix, DateTime effDate) { string codePrefix = filePrefix + effDate.ToString("yyyyMMdd"); if (dssOutboundControl.ExternalSystem.Flag != null && dssOutboundControl.ExternalSystem.Flag.Trim() != string.Empty) codePrefix += dssOutboundControl.ExternalSystem.Flag.Substring(0, 1); else codePrefix += "0"; string transNo = this.numberControlMgr.GenerateNumber(codePrefix, 8); return transNo.Substring(transNo.Length - 17, 17); }
public void ProcessOutbound(DssOutboundControl dssOutboundControl) { log.Info("Start process outbound."); this.Initital_DBCache(); #region Initailize this._dssObjectMapping = this.dssObjectMappingMgr.GetAllDssObjectMapping(); #endregion string outFolder = dssOutboundControl.OutFolder; //string serviceName = dssOutboundControl.ServiceName; string archiveFolder = dssOutboundControl.ArchiveFolder; string tempFolder = dssOutboundControl.TempFolder; //string encoding = dssOutboundControl.FileEncoding; string encoding = Encoding.Default.WebName; string filePrefix = this.GetFilePrefix(dssOutboundControl); #region 初始化本地目录 outFolder = outFolder.Replace("\\", "/"); if (!outFolder.EndsWith("/")) { outFolder += "/"; } if (!Directory.Exists(outFolder)) { Directory.CreateDirectory(outFolder); } archiveFolder = archiveFolder.Replace("\\", "/"); if (!archiveFolder.EndsWith("/")) { archiveFolder += "/"; } if (!Directory.Exists(archiveFolder)) { Directory.CreateDirectory(archiveFolder); } tempFolder = tempFolder.Replace("\\", "/"); if (!tempFolder.EndsWith("/")) { tempFolder += "/"; } if (Directory.Exists(tempFolder)) { Directory.Delete(tempFolder, true); } Directory.CreateDirectory(tempFolder); #endregion #region 抽取数据 log.Info("Begin to extract data:extsyscode:" + dssOutboundControl.ExternalSystem.Code + ",extobjcode:" + dssOutboundControl.ExternalObjectCode + ",service:" + dssOutboundControl.ServiceName); IList<DssExportHistory> dataList = this.GetHisList(dssOutboundControl.Id); #region 缓存数据 IList<DssExportHistory> dssExportHistoryList = ExtractOutboundData(dssOutboundControl); this.ObjectMapping(dssExportHistoryList); dssExportHistoryList = this.FilterList(dssExportHistoryList); if (dssExportHistoryList != null && dssExportHistoryList.Count > 0) { this.CreateDssExportHistory(dssExportHistoryList, dssOutboundControl); dataList = dataList.Concat(dssExportHistoryList).ToList(); log.Info("DssExportHistory count:" + dataList.Count + ",update new mark:" + dssOutboundControl.Mark); } #endregion #endregion #region 循环处理抽取数据 if (dataList != null && dataList.Count > 0) { //if (dssOutboundControl.Id != 7) //{ #region 非iss-so foreach (DssExportHistory dssExportHistory in dataList) { try { object obj = null; try { obj = GetOutboundData(dssExportHistory); } catch (BusinessErrorException ex) { log.Warn("Get no outbound data:", ex); continue; } if (obj == null) continue; #region 对象转换为数组 object o = Serialize(obj); DateTime effDate = (DateTime)((object[])o)[0]; string[][] data = (string[][])((object[])o)[1]; #endregion #region 抽取数据导入文件 string transNo = this.GetTransNumber(dssOutboundControl, filePrefix, effDate); //modified by [email protected] //2012/5 string location = dssExportHistory.Location; bool partyfrom = dssExportHistory.PartyFrom == "1001" ? true : false; bool partyto = dssExportHistory.PartyTo == "1001" ? true : false; //string region = locationMgr.LoadLocation(location).Region.Code; string bj_region = partyfrom || partyto == true ? "BJ" : ""; string fileName = this.GetFileName(dssOutboundControl, filePrefix, transNo, bj_region); //modified end StreamWriter streamWriter = new StreamWriter(tempFolder + fileName, false, Encoding.GetEncoding(encoding)); FlatFileWriter flatFileWriter = new FlatFileWriter(streamWriter, Environment.NewLine, "|"); flatFileWriter.Write(data); flatFileWriter.Dispose(); #endregion #region 文件移至目录 try { File.Copy(tempFolder + fileName, archiveFolder + fileName); //备份目录 File.Move(tempFolder + fileName, outFolder + fileName); //导出目录 #region 更新导出标记 dssExportHistory.IsActive = false; dssExportHistory.TransNo = transNo; dssExportHistoryMgr.UpdateDssExportHistory(dssExportHistory); #endregion } catch (Exception ex) { log.Error("Create export file error.", ex); if (File.Exists(archiveFolder + fileName)) { File.Delete(archiveFolder + fileName); } if (File.Exists(outFolder + fileName)) { File.Delete(outFolder + fileName); } } #endregion } catch (Exception ex) { log.Error("Export data error.", ex); break;//2012-10-24 发生错误执行下一任务 djin } } #endregion //} //else //{ // var dataListGroup = (from i in dataList select i.DefinedString1).Distinct().ToList(); // foreach (var i in dataListGroup) // { // IList<string[][]> outString = new List<string[][]>(); // var result = (from x in dataList where x.DefinedString1 == i select x).ToList(); // #region iss-so // if (result != null && result.Count > 0) // { // foreach (DssExportHistory dssExportHistory in result) // { // try // { // object obj = null; // try // { // obj = GetOutboundData(dssExportHistory); // } // catch (BusinessErrorException ex) // { // log.Warn("Get no outbound data:", ex); // continue; // } // if (obj == null) // continue; // #region 对象转换为数组 // object o = Serialize(obj); // string[][] data = (string[][])((object[])o)[1]; // outString.Add(data); // #endregion // } // catch (Exception ex) // { // log.Error("Export data error.", ex); // break;//2012-10-24 发生错误执行下一任务 djin // } // } // #region 抽取数据导入文件 // try // { // DateTime effDate = (DateTime)((object[])Serialize(GetOutboundData(result[0])))[0]; // string transNo = this.GetTransNumber(dssOutboundControl, filePrefix, effDate); // //modified by [email protected] // //2012/5 // string location = result[0].Location; // bool partyfrom = result[0].PartyFrom == "1001" ? true : false; // bool partyto = result[0].PartyTo == "1001" ? true : false; // //string region = locationMgr.LoadLocation(location).Region.Code; // string bj_region = partyfrom || partyto == true ? "BJ" : ""; // string fileName = this.GetFileName(dssOutboundControl, filePrefix, transNo, bj_region); // fileName = fileName.Split(new char[] { '.' })[0].TrimEnd(new char[] { '1' }) +"."+ fileName.Split(new char[] { '.' })[1]; // //modified end // StreamWriter streamWriter = new StreamWriter(tempFolder + fileName, false, Encoding.GetEncoding(encoding)); // FlatFileWriter flatFileWriter = new FlatFileWriter(streamWriter, Environment.NewLine, "|"); // flatFileWriter.WriteWithNewLine(((string[][])(outString[0]))[0]); // foreach (string[][] str in outString) // { // flatFileWriter.WriteWithNewLine(str[1]); // } // flatFileWriter.Dispose(); // #endregion // #region 文件移至目录 // try // { // File.Copy(tempFolder + fileName, archiveFolder + fileName); //备份目录 // File.Move(tempFolder + fileName, outFolder + fileName); //导出目录 // #region 更新导出标记 // foreach (DssExportHistory dssExportHistory in dataList) // { // dssExportHistory.IsActive = false; // dssExportHistory.TransNo = transNo; // dssExportHistoryMgr.UpdateDssExportHistory(dssExportHistory); // } // #endregion // } // catch (Exception ex) // { // log.Error("Create export file error.", ex); // if (File.Exists(archiveFolder + fileName)) // { // File.Delete(archiveFolder + fileName); // } // if (File.Exists(outFolder + fileName)) // { // File.Delete(outFolder + fileName); // } // } // #endregion // } // catch (Exception ex) // { // continue; // } // #endregion // } // } //} } else { log.Info("No data export."); } #endregion this.Initital_DBCache(); log.Info("Start process outbound successful."); }
public virtual void UpdateDssOutboundControl(DssOutboundControl entity) { Update(entity); }
private IList<DssExportHistory> ConvertList(IList<BillDetail> list, DssOutboundControl dssOutboundControl) { DetachedCriteria criteria = DetachedCriteria.For(typeof(DssObjectMapping)) .Add(Expression.Eq("Entity", "BillTo")).Add(Expression.Eq("ExternalSystem", "QAD")) .Add(Expression.Eq("ExternalEntity", "ShipTo")); IList<DssObjectMapping> dom = criteriaMgr.FindAll<DssObjectMapping>(criteria); IList<DssExportHistory> result = new List<DssExportHistory>(); if (list != null && list.Count > 0) { foreach (BillDetail billDetail in list) { DssExportHistory dssExportHistory = new DssExportHistory(); dssExportHistory.DssOutboundControl = dssOutboundControl; dssExportHistory.EventCode = BusinessConstants.DSS_EVENT_CODE_CREATE; dssExportHistory.IsActive = true; dssExportHistory.CreateDate = DateTime.Now; dssExportHistory.OriginalId = billDetail.Id; dssExportHistory.OrderNo = billDetail.ActingBill.OrderNo; dssExportHistory.ReceiptNo = billDetail.ActingBill.ReceiptNo; dssExportHistory.Item = billDetail.ActingBill.Item.Code; dssExportHistory.Location = dssExportHistory.DssOutboundControl.UndefinedString1;//客户库位 dssExportHistory.Qty = billDetail.BilledQty; //dssExportHistory.EffectiveDate = billDetail.Bill.CreateDate.Date; dssExportHistory.EffectiveDate = DateTime.Now; dssExportHistory.PartyTo = billDetail.Bill.BillAddress.Party.Code;//客户 dssExportHistory.DefinedString1 = billDetail.Bill.BillNo;//开票通知单号 dssExportHistory.DefinedString2 = billDetail.Bill.BillAddress.Code; //BillTo if (dom != null && dom.Count > 0) { DssObjectMapping sd = dom.Where(d => d.Code == billDetail.Bill.BillAddress.Code).FirstOrDefault(); dssExportHistory.DefinedString3 = sd.ExternalCode; //Map到shipto } dssExportHistory.KeyCode = DssHelper.GetBillKeyCode(dssExportHistory, billDetail.Bill.BillNo); this.GetLoctransInfo(dssExportHistory); result.Add(dssExportHistory); } } return result; }
protected abstract IList<DssExportHistory> ExtractOutboundData(DssOutboundControl dssOutboundControl);
private IList<DssExportHistory> GroupSingleDssExportHistory(IList<LocationTransaction> fgLocTrans, IList<LocationTransaction> rmLocTrans, DssOutboundControl dssOutboundControl, DateTime effectiveDate) { var refLoc = (from l in fgLocTrans where l.Location == "Reject" select l.RefLocation).Distinct().ToList(); Dictionary<string, string> refDic = new Dictionary<string, string>(); foreach (var i in refLoc) { if (i == null) continue; Location loc = locMgr.LoadLocation(i); if (loc != null && !refDic.ContainsKey(i)) refDic.Add(i, loc.Region.Code); } Dictionary<string, IList<int>> orderdet = new Dictionary<string, IList<int>>(); var x = (from xxxx in fgLocTrans where xxxx.Item== "" select xxxx).ToList(); var query = from l in fgLocTrans group l by new { l.PartyFrom, l.PartyTo, l.Location, l.Item, l.RefLocation } into g select new DssExportHistory { PartyFrom = g.Key.PartyFrom, PartyTo = getPartTo(g.Key.Location, g.Key.PartyTo, g.Key.RefLocation, refDic),//10-15 Location = g.Key.Location, Item = g.Key.Item, // ReferenceLocation=g.Key.RefLocation, Qty = g.Sum(d => d.Qty), EffectiveDate = effectiveDate, OriginalId = g.Max(d => d.Id), DssOutboundControl = dssOutboundControl, EventCode = BusinessConstants.DSS_EVENT_CODE_CREATE, IsActive = true, CreateDate = DateTime.Now, DssExportHistoryDetails = this.GroupSingleDssExportHistoryDetail(g.Select(d => d.OrderDetailId).Distinct().ToList(), rmLocTrans, dssOutboundControl, effectiveDate, orderdet, g.Key.PartyFrom + g.Key.PartyTo + g.Key.Location + g.Key.Item ), UndefinedString1 = dssOutboundControl.ExternalSystem.UndefinedString1,//Site,备用 UndefinedString2 = dssOutboundControl.UndefinedString1,//雇员 UndefinedString3 = dssOutboundControl.UndefinedString2,//工序 KeyCode = g.Max(d => d.Id).ToString()//Max LocTransId , Comments = g.Key.PartyFrom + g.Key.PartyTo + g.Key.Location + g.Key.Item }; var list = query.ToList(); //djin ISS-wo重复删除 //var comments = (from i in list select i.Comments).Distinct().ToList(); //foreach (var com in comments) //{ // var dsss = (from dss in list where dss.Comments == com select dss).ToList(); // bool flag = true; // foreach (DssExportHistory dss in dsss) // { // if (!flag) // { // dss.DssExportHistoryDetails = null; // } // else // { // flag = false; // } // } //} return list; }
//modified by [email protected] //2012/5 //Filename default: Region + FilePrefix + TransNo + FileSuffix .REQ private string GetFileName(DssOutboundControl dssOutboundControl, string filePrefix, string transNo, string region) { string fileSuffix = string.Empty; if (dssOutboundControl.FileSuffix != null && dssOutboundControl.FileSuffix.Trim() != string.Empty) fileSuffix = dssOutboundControl.FileSuffix; else fileSuffix = dssOutboundControl.ExternalObjectCode + ".REQ"; string fileName = filePrefix + "_" + transNo + "_" + fileSuffix; if (region != "") { fileName = region + filePrefix + "_" + transNo + "_" + fileSuffix; } return fileName; }
private string GetFilePrefix(DssOutboundControl dssOutboundControl) { if (dssOutboundControl.FilePrefix != null && dssOutboundControl.FilePrefix.Trim() != string.Empty) return dssOutboundControl.FilePrefix; string sysCode = BusinessConstants.DSS_SYSTEM_CODE_SCONIT; string extSysCode = dssOutboundControl.ExternalSystem.Code; if (dssOutboundControl.SysAlias != null && dssOutboundControl.SysAlias.Trim() != string.Empty) sysCode = dssOutboundControl.SysAlias; if (dssOutboundControl.ExternalSystem.SysAlias != null && dssOutboundControl.ExternalSystem.SysAlias.Trim() != string.Empty) extSysCode = dssOutboundControl.ExternalSystem.SysAlias; string filePrefix = sysCode + "_" + extSysCode; return filePrefix; }
private void ProcessRctTr(IList<DssExportHistory> list, DssOutboundControl dssOutboundControl) { if (list != null && list.Count > 0) { List<int> orderDetIdList = list.Where(l => l.OrderDetailId > 0).Select(l => l.OrderDetailId).Distinct().ToList(); //orderdet超过2千个会有问题,先临时拆分一下 IList<LocationTransaction> issList = new List<LocationTransaction>(); if (orderDetIdList.Count < 2000) { issList = this.GetIssTr(orderDetIdList); } else { log.Debug("total count: " + orderDetIdList.Count); int count = orderDetIdList.Count / 2000; for (int i = 0; i <= count; i++) { int interval = i * 2000; int maxCount = i == count ? orderDetIdList.Count - interval : 2000; log.Debug("begin index: " + interval); log.Debug("record count: " + maxCount); List<int> tempOrderDetIdList = orderDetIdList.GetRange(interval, maxCount); IList<LocationTransaction> tempIssList = this.GetIssTr(tempOrderDetIdList); issList = issList.Concat(tempIssList).ToList(); } } if (issList != null && issList.Count > 0) { foreach (var dssExportHistory in list) { var issTrans = issList.Where(i => i.OrderDetailId == dssExportHistory.OrderDetailId).SingleOrDefault(); if (issTrans != null) { dssExportHistory.ReferenceLocation = issTrans.Location; //djin 20120903 mod //orginal partyfrom=issTrans.PartyFrom //if (issTrans.Location == "Reject") // dssExportHistory.PartyFrom = locationMgr.LoadLocation(issTrans.RefLocation).Region.Code; //else dssExportHistory.PartyFrom = issTrans.PartyFrom; } } } } }
public virtual void CreateDssOutboundControl(DssOutboundControl entity) { Create(entity); }
public IList ExtractOutboundDataFromLocationTransaction(DssOutboundControl dssOutboundControl, string transType, MatchMode matchMode) { return ExtractOutboundDataFromLocationTransaction(dssOutboundControl, transType, matchMode, false); }
public virtual void DeleteDssOutboundControl(DssOutboundControl entity) { Delete(entity); }
public IList ExtractOutboundDataFromLocationTransaction(DssOutboundControl dssOutboundControl, string transType, MatchMode matchMode, bool includeRefLoc) { DetachedCriteria criteria = DetachedCriteria.For(typeof(LocationTransaction)); criteria.Add(Expression.Gt("Id", dssOutboundControl.Mark)); criteria.Add(Expression.Like("TransactionType", transType, matchMode)); if (includeRefLoc) { criteria.SetProjection(Projections.ProjectionList() .Add(Projections.Max("Id")) .Add(Projections.GroupProperty("OrderNo")) .Add(Projections.GroupProperty("ReceiptNo")) .Add(Projections.GroupProperty("Item")) .Add(Projections.GroupProperty("Location")) .Add(Projections.Sum("Qty")) .Add(Projections.GroupProperty("EffectiveDate")) .Add(Projections.GroupProperty("PartyFrom")) .Add(Projections.GroupProperty("PartyTo")) .Add(Projections.GroupProperty("RefLocation"))); } else { criteria.SetProjection(Projections.ProjectionList() .Add(Projections.Max("Id")) .Add(Projections.GroupProperty("OrderNo")) .Add(Projections.GroupProperty("ReceiptNo")) .Add(Projections.GroupProperty("Item")) .Add(Projections.GroupProperty("Location")) .Add(Projections.Sum("Qty")) .Add(Projections.GroupProperty("EffectiveDate")) .Add(Projections.GroupProperty("PartyFrom")) .Add(Projections.GroupProperty("PartyTo"))); } return criteriaMgr.FindAll(criteria); }