コード例 #1
0
ファイル: DataModel.cs プロジェクト: SparkZG/CallCRM
        public void SetData(DataRow dr)
        {
            ID       = Convert.ToInt32(dr["ID"]);
            CallType = Convert.ToInt32(dr["CallType"]);
            Chan     = Convert.ToInt32(dr["Chan"]);

            LineID       = dr["LineID"].ToString();
            CallerID     = dr["CallerID"].ToString();
            StartDate    = Convert.ToDateTime(dr["StartDate"]).Date;
            StartTime    = dr["StartTime"].ToString();
            DuringTime   = dr["DuringTime"].ToString();
            WaveFilePath = BLLCommon.GetWavPath() + dr["WaveFilePath"].ToString();
            if (dr["IsDisposed"].ToString() == "")
            {
                IsDisposed = 0;
            }
            else
            {
                IsDisposed = Convert.ToInt32(dr["IsDisposed"]);
            }

            //如果access里面数据是未接听
            if (CallType == 0 && IsDisposed == 0)
            {
                IsDisposed = 1;
                CreteFaultList.UpdateIsCreate(ID, FaultType.Pending);
            }
            if (CallType == 2)
            {
                WaveFilePath = "";
            }
        }
コード例 #2
0
 private void TryAddCallTime(DataFrame frame)
 {
     if (!CallRecord.Contains(frame.addInfo))
     {
         CallRecord.Add(frame.addInfo);
         AddItemsToStatus(frame.addInfo + "来电");
         CreteFaultList.ShowCreateWindow(frame.addInfo, new CallTime(DateTime.Now));
     }
 }
コード例 #3
0
ファイル: BSViewModel.cs プロジェクト: SparkZG/CallCRM
        public void GetMainData()
        {
            DataTable dtUser = CreteFaultList.GetUser();

            foreach (DataRow item in dtUser.Rows)
            {
                UserDict.Add(new SelfKeyValue(Convert.ToInt32(item["id"]), Convert.ToInt32(item["department_id"] == DBNull.Value ? -1 : item["department_id"]), item["login"].ToString(), item["username"].ToString(), (item["department_name"] == DBNull.Value ? "暂无" : item["department_name"]).ToString()));
            }

            DataTable dtDepartment = CreteFaultList.GetDepartment();

            foreach (DataRow item in dtDepartment.Rows)
            {
                DepartmentDict.Add(new SelfKeyValue(Convert.ToInt32(item["id"]), item["name"].ToString(), item["code"].ToString()));
            }

            DataTable dtAssetType = CreteFaultList.GetAssetType();

            foreach (DataRow item in dtAssetType.Rows)
            {
                AssetTypeDict.Add(new SelfKeyValue(Convert.ToInt32(item["id"]), item["name"].ToString()));
            }

            DataTable dtCompany = CreteFaultList.GetCompany();

            foreach (DataRow item in dtCompany.Rows)
            {
                CompanyDict.Add(new SelfKeyValue(Convert.ToInt32(item["id"]), item["name"].ToString()));
            }

            DataTable dtKnowledge = CreteFaultList.GetKnowledge();

            foreach (DataRow item in dtKnowledge.Rows)
            {
                KnowLedgeDict.Add(new SelfKeyValue(Convert.ToInt32(item["id"]), item["name"].ToString(), item["note_result"].ToString()));
            }

            //插入故障类型
            FaultDict.Add(new SelfKeyValue("hardware", "硬件故障"));
            FaultDict.Add(new SelfKeyValue("soft", "软件故障"));
            FaultDict.Add(new SelfKeyValue("other", "其他"));

            OrderDict.Add(new SelfKeyValue("A", "故障申告"));
            OrderDict.Add(new SelfKeyValue("B", "耗材配送"));

            GetAccessAction = () =>
            {
                //电话挂机后为了防止录音软件没及时写入数据库,等待1秒,
                Thread.Sleep(TimeSpan.FromSeconds(1));

                RefreshMediaInfo();
            };
            //增加委托绑定
            ViewModel.HangupAction += GetAccessAction;
        }
コード例 #4
0
ファイル: BombScreen.xaml.cs プロジェクト: SparkZG/CallCRM
        private void ButtonCreate_Click(object sender, RoutedEventArgs e)
        {
            var       btn  = (SimpleButton)sender;
            FaultType type = CreteFaultList.GetFaultType(btn.Uid);

            if (vm.CreateFaultOrder(type))
            {
                DXMessageBox.Show("操作成功", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
                //更新主界面此记录的状态
                vm._DataModel.IsDisposed = Convert.ToInt32(CreteFaultList.GetState(type));
                //IsCreateSuccess = true;
                this.Close();
            }
            else
            {
                DXMessageBox.Show("操作失败", "提示", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
コード例 #5
0
ファイル: BSViewModel.cs プロジェクト: SparkZG/CallCRM
        public void RefreshMediaInfo()
        {
            DataTable callTable = CreteFaultList.GetMediaInfo(CallerID, _callTime.Date);

            if (callTable.Rows.Count > 0)
            {
                DataRow dr = callTable.Rows[0];
                AccessID     = Convert.ToInt32(dr["ID"]);
                Chan         = Convert.ToInt32(dr["Chan"]);
                LineID       = dr["LineID"].ToString();
                CallerID     = dr["CallerID"].ToString();
                StartDate    = Convert.ToDateTime(dr["StartDate"]);
                StartTime    = dr["StartTime"].ToString();
                DuringTime   = dr["DuringTime"].ToString();
                WaveFilePath = BLLCommon.GetWavPath() + dr["WaveFilePath"].ToString();

                //设置录音信息
                _DataModel.SetData(dr);
            }
        }
コード例 #6
0
ファイル: BSViewModel.cs プロジェクト: SparkZG/CallCRM
        public bool CreateFaultOrder(FaultType _type)
        {
            var fdm = new FaultDataModel();

            if (User == null)
            {
                //不能创建
                Prompt = "报修人员未选择!";
                return(false);
            }
            else
            {
                fdm.user_id = User.Key;
            }

            if (Department == null)
            {
                //不能创建
                Prompt = "请选择部门!";
                return(false);
            }
            else
            {
                fdm.department_id = Department.Key;
            }

            if (AssetType == null)
            {
                //不能创建
                Prompt = "资产类型未选择!";
                return(false);
            }
            else
            {
                fdm.asset_type_id = AssetType.Key;
            }

            if (Company == null)
            {
                //不能创建
                Prompt = "请选择区域!";
                return(false);
            }
            else
            {
                fdm.company_id = Company.Key;
            }

            if (OrderType == null)
            {
                //不能创建
                Prompt = "请选择工单类型!";
                return(false);
            }
            else
            {
                fdm.work_property = OrderType.Text;
            }

            //故障类型
            if (BreakDownCate == null)
            {
                fdm.breakdown_categ = FaultDict[2].Text;
            }
            else
            {
                fdm.breakdown_categ = BreakDownCate.Text;
            }

            //故障主题------------(-1可能导致外键错误)
            if (KnowLedge == null)
            {
                fdm.knowledge_id = 0;
            }
            else
            {
                fdm.knowledge_id = KnowLedge.Key;
            }

            //去除换行符
            Regex reg = new Regex(@"\b\r\n");

            fdm.note        = reg.Replace(Note, ";");
            fdm.address     = reg.Replace(Address, ";");
            fdm.note_result = reg.Replace(Note_Result, ";");


            //设置录音记录信息
            fdm.SetData(_DataModel);


            //这里地址需要加上ip地址(目前不需要加IP了)
            //string ipStr = Provider.getIPAddress();
            //if (ipStr == Properties.Settings.Default.ServerIP)
            //{
            fdm.WaveFilePath = WaveFilePath;
            //}
            //else
            //{
            //    fdm.WaveFilePath = ipStr + "\\" + WaveFilePath;
            //}


            //插入服务器

            if (CreteFaultList.CreateOrder(fdm, _type, IsInsert))
            {
                CreteFaultList.UpdateIsCreate(AccessID, _type);
                return(true);
            }
            return(false);
        }
コード例 #7
0
ファイル: BSViewModel.cs プロジェクト: SparkZG/CallCRM
        public void GetCall_logData()
        {
            DataTable callData = CreteFaultList.GetOrder(AccessID, CallerID);

            if (callData.Rows.Count > 0)
            {
                //update
                IsInsert = false;
                DataRow dr = callData.Rows[0];

                if (dr["user_id"] != null)
                {
                    var skvUser = UserDict.Find(skv => skv.Key == Convert.ToInt32(dr["user_id"]));
                    if (skvUser != null)
                    {
                        User = skvUser;
                    }
                }

                if (dr["department_id"] != null)
                {
                    var skvDepartment = DepartmentDict.Find(skv => skv.Key == Convert.ToInt32(dr["department_id"]));
                    if (skvDepartment != null)
                    {
                        Department = skvDepartment;
                    }
                }


                if (dr["asset_type_id"] != null)
                {
                    var skvAsset = AssetTypeDict.Find(skv => skv.Key == Convert.ToInt32(dr["asset_type_id"]));
                    if (skvAsset != null)
                    {
                        AssetType = skvAsset;
                    }
                }

                if (dr["breakdown_categ"] != null)
                {
                    var skvFault = FaultDict.Find(skv => skv.Text == Convert.ToString(dr["breakdown_categ"]));
                    if (skvFault != null)
                    {
                        BreakDownCate = skvFault;
                    }
                }

                if (dr["company_id"] != null)
                {
                    var skvCompany = CompanyDict.Find(skv => skv.Key == Convert.ToInt32(dr["company_id"]));
                    if (skvCompany != null)
                    {
                        Company = skvCompany;
                    }
                }

                if (dr["work_property"] != null)
                {
                    var skvOrder = OrderDict.Find(skv => skv.Text == Convert.ToString(dr["work_property"]));
                    if (skvOrder != null)
                    {
                        OrderType = skvOrder;
                    }
                }

                if (dr["knowledge_id"] != null)
                {
                    var skvKnow = KnowLedgeDict.Find(skv => skv.Key == Convert.ToInt32(dr["knowledge_id"]));
                    if (skvKnow != null)
                    {
                        KnowLedge = skvKnow;
                    }
                }

                if (dr["note_result"] != null)
                {
                    Note_Result = Convert.ToString(dr["note_result"]);
                }
                if (dr["address"] != null)
                {
                    Address = Convert.ToString(dr["address"]);
                }
                if (dr["note"] != null)
                {
                    Note = Convert.ToString(dr["note"]);
                }

                //更新access数据库和web服务器状态一致
                if (dr["state"] != null)
                {
                    if (_DataModel.IsDisposed != Convert.ToInt32(dr["state"]))
                    {
                        _DataModel.IsDisposed = Convert.ToInt32(dr["state"]);
                        CreteFaultList.UpdateIsCreate(AccessID, CreteFaultList.GetFaultType(_DataModel.IsDisposed.ToString()));
                    }
                }
            }
        }
コード例 #8
0
 private void SimpleButton_Click(object sender, RoutedEventArgs e)
 {
     CreteFaultList.CloseWaitWindow();
 }
コード例 #9
0
        public ViewModel()
        {
            if (Properties.Settings.Default.AccessPath == string.Empty)
            {
                BLLCommon.GetAccessPath();
            }
            else
            {
                if (!AccessHelper.OpenConn())
                {
                    BLLCommon.GetAccessPath();
                }
            }

            HostName = Provider.getIPAddress();
            BLLCommon.GetSystemSet();
            UDPAction = (evt) =>
            {
                try
                {
                    switch (evt.eventType)
                    {
                    case SocketEventType.StartEvent:
                        AddItemsToStatus(evt.remark);
                        break;

                    case SocketEventType.ReceEvent:
                        if (evt.message == null)
                        {
                            AddItemsToStatus(evt.remark);
                        }
                        else
                        {
                            var frame = evt.message as DataFrame;
                            switch (frame.dataType)
                            {
                            case CS_R103.CallNumber:
                                TryAddCallTime(frame);
                                break;

                            case CS_R103.CallerNumberCheck:
                                TryAddCallTime(frame);
                                break;

                            case CS_R103.Hang_up:
                                AddItemsToStatus("已挂机");
                                if (HangupAction != null)
                                {
                                    HangupAction();
                                }
                                break;

                            case CS_R103.OffHook:
                                CreteFaultList.CloseWaitWindow();
                                AddItemsToStatus("已摘机");
                                break;

                            case CS_R103.RingEnd:
                                CreteFaultList.CloseWaitWindow();
                                break;

                            case CS_R103.Ringing:
                                //将最新的来电号码发送过去
                                if (CallRecord.Count > 0)
                                {
                                    CreteFaultList.ShowWaitWindow(CallRecord[CallRecord.Count - 1]);
                                }
                                break;

                            case CS_R103.Unwired:
                                AddItemsToStatus("电话未接线!");
                                break;

                            default:
                                break;
                            }
                        }

                        break;

                    case SocketEventType.SendEvent:

                        break;

                    case SocketEventType.StopEvent:
                        if (_UDPServer != null)
                        {
                            _UDPServer.Dispose();
                            _UDPServer = null;
                        }
                        AddItemsToStatus(evt.remark);
                        break;
                    }
                }
                catch (Exception ex)
                {
                    Log4Helper.Error(GetType(), "弹屏异常!", ex);
                    throw ex;
                }
            };
        }