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;
        }
Esempio n. 2
0
        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;
        }