public ReturnValueInfo BatchInsertRecord(List<SourceConsumeRecord_scr_Info> listSource) { ReturnValueInfo rvInfo = new ReturnValueInfo(); if (listSource == null) { rvInfo.isError = true; rvInfo.messageText = Common.DefineConstantValue.SystemMessageText.strMessageText_E_ObjectNull; return rvInfo; } try { using (SIOTSDB_HHZXDataContext db = new SIOTSDB_HHZXDataContext()) { try { List<SourceConsumeRecord_scr> listInsertSource = new List<SourceConsumeRecord_scr>(); try { DateTime dtSearchMin = listSource.Min(x => x.scr_dRecordTime); StringBuilder sbSQL = new StringBuilder(); sbSQL.AppendLine("select scr_cRecordID,scr_cCardNo,scr_fBalance,scr_fConsume,scr_dRecordTime"); sbSQL.AppendLine(" ,scr_iMacNo,src_lIsSync,scr_cAdd,scr_dAddDate from SourceConsumeRecord_scr"); sbSQL.AppendLine("where scr_dRecordTime >= '" + dtSearchMin.Date.ToString("yyyy-MM-dd 00:00") + "'"); //List<SourceConsumeRecord_scr> listCompAll = db.SourceConsumeRecord_scr.Where(x => x.scr_dRecordTime.Date >= dtSearchMin.Date).ToList(); List<SourceConsumeRecord_scr> listCompAll = db.ExecuteQuery<SourceConsumeRecord_scr>(sbSQL.ToString(), new object[] { }).ToList(); for (int i = 0; i < listSource.Count; i++) { //检查是否已保存本条记录 #region 检查是否已保存本条记录 List<SourceConsumeRecord_scr> listComp = listCompAll.Where(x => x.scr_dRecordTime == listSource[i].scr_dRecordTime && x.scr_cCardNo.Trim() == listSource[i].scr_cCardNo.Trim() && x.scr_fBalance == listSource[i].scr_fBalance && x.scr_fConsume == listSource[i].scr_fConsume && x.scr_iMacNo == listSource[i].scr_iMacNo ).ToList(); if (listComp == null || listComp.Count < 1) { SourceConsumeRecord_scr record = Common.General.CopyObjectValue<SourceConsumeRecord_scr_Info, SourceConsumeRecord_scr>(listSource[i]); record.src_lIsSync = true; listInsertSource.Add(record); } else { rvInfo.messageText += "重复数据:" + listSource[i].scr_cRecordID.ToString(); } #endregion } } catch (Exception exChkRecord) { rvInfo.isError = true; rvInfo.messageText = "【检查是否已保存本条记录】,异常:" + exChkRecord.Message; return rvInfo; } if (listInsertSource.Count > 0) { //待添加加工消费记录 List<ConsumeRecord_csr> listCSRInsert = new List<ConsumeRecord_csr>(); //回馈用消费记录 List<ConsumeRecord_csr_Info> listCSRReturn = new List<ConsumeRecord_csr_Info>(); try { //各消费时段 List<CodeMaster_cmt> listTimes = db.CodeMaster_cmt.Where(x => x.cmt_cKey1 == Common.DefineConstantValue.CodeMasterDefine.KEY1_MealTimeSpan.ToString() ).ToList(); foreach (SourceConsumeRecord_scr sourceItem in listInsertSource) { #region 加工消费数据 if (sourceItem == null) { continue; } //配对发卡信息 UserCardPair_ucp pairInfo = db.UserCardPair_ucp.Where(x => x.ucp_iCardNo == int.Parse(sourceItem.scr_cCardNo)).FirstOrDefault(); //配对消费机信息 ConsumeMachineMaster_cmm macInfo = db.ConsumeMachineMaster_cmm.Where(x => x.cmm_iMacNo == sourceItem.scr_iMacNo ).FirstOrDefault(); if (pairInfo != null && macInfo != null) { ConsumeRecord_csr csRecord = new ConsumeRecord_csr(); csRecord.csr_cAdd = sourceItem.scr_cAdd; csRecord.csr_cCardID = pairInfo.ucp_cCardID; csRecord.csr_cCardUserID = pairInfo.ucp_cCUSID; csRecord.csr_cConsumeType = macInfo == null ? Common.DefineConstantValue.ConsumeMachineType.Unknown.ToString() : macInfo.cmm_cUsageType; csRecord.csr_cMachineID = macInfo == null ? Guid.Empty : macInfo.cmm_cRecordID; //确定消费餐类型 if (macInfo.cmm_cUsageType == Common.DefineConstantValue.ConsumeMachineType.StuSetmeal.ToString()) { //学生定餐 csRecord.csr_cMealType = getMealType(listTimes, sourceItem.scr_dRecordTime); } else if (macInfo.cmm_cUsageType == Common.DefineConstantValue.ConsumeMachineType.StuPay.ToString()) { //学生加菜 csRecord.csr_cMealType = Common.DefineConstantValue.MealType.StuFreeMeal.ToString(); } else if (macInfo.cmm_cUsageType == Common.DefineConstantValue.ConsumeMachineType.TeachPay.ToString()) { //老师加菜 csRecord.csr_cMealType = Common.DefineConstantValue.MealType.TechFreeMeal.ToString(); } else if (macInfo.cmm_cUsageType == Common.DefineConstantValue.ConsumeMachineType.HotWaterPay.ToString()) { //热水房 csRecord.csr_cMealType = Common.DefineConstantValue.MealType.HotWaterRent.ToString(); } else if (macInfo.cmm_cUsageType == Common.DefineConstantValue.ConsumeMachineType.DrinkPay.ToString()) { //饮料消费 csRecord.csr_cMealType = Common.DefineConstantValue.MealType.DrinkCost.ToString(); } else if (macInfo.cmm_cUsageType == Common.DefineConstantValue.ConsumeMachineType.MedicalPay.ToString()) { //医疗消费 csRecord.csr_cMealType = Common.DefineConstantValue.MealType.MedicalCost.ToString(); } else { //未知类型 csRecord.csr_cMealType = Common.DefineConstantValue.MealType.UnKnown.ToString(); } csRecord.csr_cRecordID = Guid.NewGuid(); csRecord.csr_cSourceID = sourceItem.scr_cRecordID; csRecord.csr_dAddDate = DateTime.Now; csRecord.csr_dConsumeDate = sourceItem.scr_dRecordTime; csRecord.csr_fCardBalance = sourceItem.scr_fBalance; csRecord.csr_fConsumeMoney = sourceItem.scr_fConsume; csRecord.csr_iCardNo = pairInfo.ucp_iCardNo; ConsumeRecord_csr_Info csrReturn = Common.General.CopyObjectValue<ConsumeRecord_csr, ConsumeRecord_csr_Info>(csRecord); if (csrReturn != null) { listCSRReturn.Add(csrReturn); listCSRInsert.Add(csRecord); } } #endregion } } catch (Exception exProfileData) { rvInfo.isError = true; rvInfo.messageText = "【加工消费数据】,异常:" + exProfileData.Message; return rvInfo; } if (listInsertSource != null && listCSRInsert != null) { if (listInsertSource.Count > 0 || listCSRInsert.Count > 0) { db.Connection.Open(); db.Transaction = db.Connection.BeginTransaction(); if (listInsertSource.Count > 0) { //保存原始消费记录 db.SourceConsumeRecord_scr.InsertAllOnSubmit(listInsertSource); db.SubmitChanges(); } if (listCSRInsert.Count > 0) { //保存加工消费记录 db.ConsumeRecord_csr.InsertAllOnSubmit(listCSRInsert); db.SubmitChanges(); } db.Transaction.Commit(); db.Connection.Close(); } if (listCSRReturn != null) { rvInfo.ValueObject = listCSRReturn; } else { rvInfo.messageText = "返回用数据列表为空。"; } rvInfo.boolValue = true; rvInfo.isError = false; } else { rvInfo.isError = true; rvInfo.messageText = "插入数据库的数据有异常:数据为空。"; } } else { rvInfo.boolValue = true; rvInfo.isError = false; rvInfo.messageText = "无可插入的数据。"; } } catch (Exception ex) { rvInfo.boolValue = false; rvInfo.isError = true; db.Transaction.Rollback(); throw ex; } finally { db.Connection.Close(); } } } catch (Exception ex) { rvInfo.boolValue = false; rvInfo.isError = true; rvInfo.messageText = ex.Message; } return rvInfo; }
public ReturnValueInfo BatchSyncSourceRecord(List<SourceConsumeRecord_scr_Info> listSourceRecord, string strMealType) { ReturnValueInfo rvInfo = new ReturnValueInfo(); if (listSourceRecord == null) { rvInfo.isError = true; rvInfo.messageText = Common.DefineConstantValue.SystemMessageText.strMessageText_E_ObjectNull; return rvInfo; } try { using (SIOTSDB_HHZXDataContext db = new SIOTSDB_HHZXDataContext()) { try { db.Connection.Open(); db.Transaction = db.Connection.BeginTransaction(); List<ConsumeRecord_csr_Info> listReturn = new List<ConsumeRecord_csr_Info>(); foreach (SourceConsumeRecord_scr_Info sourceItem in listSourceRecord) { SourceConsumeRecord_scr sourceRecord = db.SourceConsumeRecord_scr.Where(x => x.scr_cRecordID == sourceItem.scr_cRecordID).FirstOrDefault(); if (sourceRecord != null && !sourceRecord.src_lIsSync) { UserCardPair_ucp pairInfo = db.UserCardPair_ucp.Where(x => x.ucp_iCardNo == int.Parse(sourceItem.scr_cCardNo)).FirstOrDefault(); ConsumeMachineMaster_cmm macInfo = db.ConsumeMachineMaster_cmm.Where(x => x.cmm_iMacNo == sourceRecord.scr_iMacNo).FirstOrDefault(); if (pairInfo != null) { ConsumeRecord_csr csRecord = new ConsumeRecord_csr(); csRecord.csr_cAdd = "sys"; csRecord.csr_cCardID = pairInfo.ucp_cCardID; csRecord.csr_cCardUserID = pairInfo.ucp_cCUSID; csRecord.csr_cConsumeType = macInfo == null ? "UNKNOWN" : macInfo.cmm_cUsageType; csRecord.csr_cMachineID = macInfo == null ? Guid.Empty : macInfo.cmm_cRecordID; csRecord.csr_cMealType = strMealType; csRecord.csr_cRecordID = Guid.NewGuid(); csRecord.csr_cSourceID = sourceRecord.scr_cRecordID; csRecord.csr_dAddDate = DateTime.Now; csRecord.csr_dConsumeDate = sourceRecord.scr_dRecordTime; csRecord.csr_fCardBalance = sourceRecord.scr_fBalance; csRecord.csr_fConsumeMoney = sourceRecord.scr_fConsume; csRecord.csr_iCardNo = pairInfo.ucp_iCardNo; csRecord.csr_lIsSettled = false; csRecord.csr_dSettleTime = null; db.ConsumeRecord_csr.InsertOnSubmit(csRecord); sourceRecord.src_lIsSync = true; db.SubmitChanges(); listReturn.Add(Common.General.CopyObjectValue<ConsumeRecord_csr, ConsumeRecord_csr_Info>(csRecord)); } } } db.Transaction.Commit(); rvInfo.boolValue = true; rvInfo.ValueObject = listReturn; } catch (Exception ex) { db.Transaction.Rollback(); throw ex; } finally { db.Connection.Close(); } } } catch (Exception ex) { rvInfo.isError = true; rvInfo.messageText = ex.Message; } return rvInfo; }