/// <summary> /// 直接发送 /// </summary> /// <param name="dmSCRClient"></param> /// <param name="dMSCRProtocol"></param> public void SendReplyToSCRClient(DMClient dmSCRClient, DMSCRProtocol dMSCRProtocol) { if (dmSCRClient != null && dMSCRProtocol != null) { dmSCRClient.Send(dMSCRProtocol.makeMessage()); } }
/// <summary> /// 获取一个时间段的预约情况 /// </summary> /// <param name="deviceId"></param> /// <returns></returns> public string getCalendarBookingJSON(string deviceId, DMSCRProtocol dMSCRProtocol) { string month = dMSCRProtocol.getMonth(); string[] fl = DateArrayHandle.GetMMFirstAndLast(month); string json = GetURLWebAPI(_LIMSBookURL, "/getPeriod/" + deviceId + "/" + fl[0] + "/" + fl[1]); // //string json = TestData.; return(json); }
public DMSCRProtocol getHelpDataRep(string deviceId, DMSCRProtocol dMSCRProtocol, DMClient dmSCRClient) { //string com = dMSCRProtocol.otherInfo[0]; DMSCRProtocol repProtocol; repProtocol = new DMSCRProtocol(HEADER.XXZL.ToString(), VERSION.V0100.ToString(), (int)COMMAND.REP_SCR_HELP, dmSCRClient.DeviceID, (int)STAT.UNCHANGING, (int)POWERSTAT.UNCHANGING, DateTime.Now.ToString("yyyyMMddHHmmss")); //返回卡:设备所属单位,设备和仪器编号,联系人姓名和电话 string[] info = new string[4]; info[0] = _dMServerMainThread.DMEnterprise; info[1] = _dMServerMainThread.DMSystemName; info[2] = _dMServerMainThread.DMContact; info[3] = _dMServerMainThread.DMContactPhone; info = repProtocol.replaceComma(info); repProtocol.OtherInfo = info; return(repProtocol); }
/// <summary> /// 获取一天的预约数据 /// </summary> /// <param name="deviceId"></param> /// <param name="dMSCRProtocol"></param> /// <returns></returns> public string getBookingByDateJSON(string deviceId, DMSCRProtocol dMSCRProtocol) { string day = dMSCRProtocol.getDay(); try { var dayTime = DateTime.ParseExact(day, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture); string json = GetURLWebAPI(_LIMSBookURL, "/getDayByStart/" + deviceId + "/" + dayTime.ToString("yyyy-MM-dd")); return(json); } catch (Exception ex) { writeLog(deviceId, ex.Message, " URL:" + _LIMSBookURL + "/getDayByStart/" + deviceId + " day:" + day); return("[]"); } }
/// <summary> /// 返回以卡查人 /// </summary> /// <param name="deviceId"></param> /// <param name="dMSCRProtocol"></param> /// <param name="dmSCRClient"></param> /// <returns></returns> public DMSCRProtocol getUserDataRep(string deviceId, DMSCRProtocol dMSCRProtocol, DMClient dmSCRClient) { string json; SCRUserinfo userinfo; try { json = GetURLWebAPI(_LIMSBookURL, "/selectUserByCard/" + dMSCRProtocol.Card); userinfo = JsonSerializer.Deserialize <SCRUserinfo>(json); } catch (Exception ex) { writeLog(ex.Message, "人员信息获取端口失败"); userinfo = new SCRUserinfo(); userinfo.userName = "******"; userinfo.phonenumber = ""; userinfo.instrumentName = ""; userinfo.bookingStart = ""; } if (string.IsNullOrEmpty(userinfo.userName)) { userinfo.userName = "******"; userinfo.phonenumber = ""; userinfo.instrumentName = ""; userinfo.bookingStart = ""; } else if (userinfo.userName.Equals("null")) { userinfo.userName = "******"; userinfo.phonenumber = ""; userinfo.instrumentName = ""; userinfo.bookingStart = ""; } //string com = dMSCRProtocol.otherInfo[0]; DMSCRProtocol repProtocol; repProtocol = new DMSCRProtocol(HEADER.XXZL.ToString(), VERSION.V0100.ToString(), (int)COMMAND.REP_SCR_USERINFO, dmSCRClient.DeviceID, (int)STAT.UNCHANGING, (int)POWERSTAT.UNCHANGING, DateTime.Now.ToString("yyyyMMddHHmmss")); //返回卡:设备所属单位,设备和仪器编号,联系人姓名和电话 string[] info = new string[4]; info[0] = userinfo.userName; // "王鑫"; info[1] = "电话:" + userinfo.phonenumber; // "13810010112"; info[2] = "预约:" + userinfo.instrumentName; // "测试预约设备"; info[3] = "时间:" + userinfo.bookingStart; // "2021-12-30 11:30"; info = repProtocol.replaceComma(info); repProtocol.OtherInfo = info; return(repProtocol); }
/// <summary> /// 提交预约数据 向 LIMS /// </summary> /// <param name="protocol"></param> /// <returns></returns> public string submitBooking(DMSCRProtocol protocol) { SCRSubmitBooking booking = new SCRSubmitBooking() { deviceId = protocol.DeviceID, serviceWay = protocol.OtherInfo[0], subjectIncome = protocol.OtherInfo[1], subjectArea = protocol.OtherInfo[2], serviceType = protocol.OtherInfo[3], cardId = protocol.OtherInfo[4], bookingStart = protocol.OtherInfo[5], bookingEnd = protocol.OtherInfo[6] }; foreach (string s in protocol.OtherInfo) { Console.WriteLine(s); if (s == null) { break; } } return(submitBooking(booking)); }
/// <summary> /// 获取基础数据 /// </summary> /// <returns></returns> public DMSCRProtocol getBasicDataRep(string deviceId, DMSCRProtocol dMSCRProtocol, DMClient dmSCRClient) { string com = dMSCRProtocol.OtherInfo[0]; string dataJson0; int i = 1; DMSCRProtocol repProtocol; repProtocol = new DMSCRProtocol(HEADER.XXZL.ToString(), VERSION.V0100.ToString(), (int)COMMAND.REP_SCR_BOOK_INFO, dmSCRClient.DeviceID, (int)STAT.UNCHANGING, (int)POWERSTAT.UNCHANGING, DateTime.Now.ToString("yyyyMMddHHmmss")); switch (com) { case "01": List <SCRServiceType> types; try { dataJson0 = GetURLWebAPI(_LIMSBookURL, "/getServiceType/" + deviceId); types = JsonSerializer.Deserialize <List <SCRServiceType> >(dataJson0); } catch (Exception ex) { writeLog(ex.Message, "GetURLWebAPI getServiceType"); dataJson0 = TestData.ServiceTypes; types = JsonSerializer.Deserialize <List <SCRServiceType> >(dataJson0); } repProtocol.OtherInfo = new string[types.Count + 1]; repProtocol.OtherInfo[0] = com; foreach (var t in types) { repProtocol.OtherInfo[i] = t.serviceType; i++; } //repProtocol.makeMessage(); return(repProtocol); break; case "02": List <SCRSubjectIncome> incomes; try { dataJson0 = GetURLWebAPI(_LIMSBookURL, "/getSubjectIncome/" + deviceId); incomes = JsonSerializer.Deserialize <List <SCRSubjectIncome> >(dataJson0); } catch (Exception ex) { writeLog(ex.Message, "GetURLWebAPI getSubjectIncome"); dataJson0 = TestData.SubjectIncomes; incomes = JsonSerializer.Deserialize <List <SCRSubjectIncome> >(dataJson0); } repProtocol.OtherInfo = new string[incomes.Count + 1]; repProtocol.OtherInfo[0] = com; foreach (var income in incomes) { repProtocol.OtherInfo[i] = income.subjectIncome; i++; } //repProtocol.makeMessage(); return(repProtocol); break; case "03": List <SCRServiceDirection> directions; try { dataJson0 = GetURLWebAPI(_LIMSBookURL, "/getServiceWay/" + deviceId); directions = JsonSerializer.Deserialize <List <SCRServiceDirection> >(dataJson0); } catch (Exception ex) { writeLog(ex.Message, "GetURLWebAPI getServiceWay"); dataJson0 = TestData.ServiceDirections; directions = JsonSerializer.Deserialize <List <SCRServiceDirection> >(dataJson0); } repProtocol.OtherInfo = new string[directions.Count + 1]; repProtocol.OtherInfo[0] = com; foreach (var direction in directions) { repProtocol.OtherInfo[i] = direction.serviceDirection; i++; } //repProtocol.makeMessage(); return(repProtocol); break; } return(null); }
/// <summary> /// 处理SCR数据 暂时越过 /// </summary> /// <param name="deviceId"></param> /// <param name="command"></param> /// <returns></returns> public string HandleServerMessage(string deviceId, COMMAND command, DMClient dmSCRClient, DMSCRProtocol dMSCRProtocol) { string jsonResult0 = ""; string jsonResult1 = ""; switch (command) { case COMMAND.SCR_DEV_INFO: //11 //响应获取仪器信息 jsonResult0 = getInstrumentInformationJSON(deviceId); SendReplyToSCRClient(COMMAND.REP_SCR_DEV_INFO, dmSCRClient, jsonResult0); break; case COMMAND.SCR_STATE_BOOK: //12 //响应获取仪器状态和未来的预约情况 test //jsonResult0 = TestData.InstrumentStatus; //jsonResult1 = TestData.InstrumentFutureStatus; try { jsonResult0 = GetURLWebAPI(_LIMSBookURL, "/getInstrumentStatus/" + deviceId); jsonResult1 = GetURLWebAPI(_LIMSBookURL, "/getInstrumentFutureStatus/" + deviceId); //12月没返回数据 webapi要改 if (string.IsNullOrEmpty(dmSCRClient.InstrumentName)) { SCRInstrumentInformation dataIn = getInstrumentInformation(dmSCRClient.DeviceID); dmSCRClient.InstrumentName = dataIn.cname; dmSCRClient.InstrumentVersion = dataIn.instrVersion; } SendReplyToSCRClient(COMMAND.REP_SCR_STATE_BOOK, dmSCRClient, jsonResult0, jsonResult1); } catch (Exception ex) { writeLog(dmSCRClient, ex.Message, "SCR_STATE_BOOK"); } break; case COMMAND.SCR_BOOK_CALENDAR: //15 //响应仪器日历情况 //jsonResult0 = TestData.InstrumentCalendar; jsonResult0 = getCalendarBookingJSON(deviceId, dMSCRProtocol); SendReplyToSCRClient(COMMAND.REP_SCR_BOOK_CALENDAR, dmSCRClient, jsonResult0); break; case COMMAND.SCR_BOOK_DATE: //16 //当天预约查询 //jsonResult0 = TestData.InstrumentDayBooking; jsonResult0 = getBookingByDateJSON(deviceId, dMSCRProtocol); SendReplyToSCRClient(COMMAND.REP_SCR_BOOK_DATE, dmSCRClient, jsonResult0); break; case COMMAND.SCR_BOOK_INFO: //响应获取预约基础数据 try { DMSCRProtocol rep = getBasicDataRep(deviceId, dMSCRProtocol, dmSCRClient); SendReplyToSCRClient(dmSCRClient, rep); } catch (Exception ex) { writeLog(dmSCRClient, ex.Message, "SCR_BOOK_INFO"); } break; case COMMAND.SCR_BOOKING: //提交预约 //string json = GetURLWebAPI(_LIMSBookURL, "agreed/getInstrumentInformation/" + deviceId); jsonResult0 = submitBooking(dMSCRProtocol); SendReplyToSCRClient(COMMAND.REP_SCR_BOOKING, dmSCRClient, jsonResult0); break; case COMMAND.SCR_HELP: //获取帮助 try { DMSCRProtocol rep = getHelpDataRep(deviceId, dMSCRProtocol, dmSCRClient); SendReplyToSCRClient(dmSCRClient, rep); } catch (Exception ex) { writeLog(dmSCRClient, ex.Message, "SCR_HELP"); } break; case COMMAND.SCR_USERINFO: //19 //获取用户数据 try { DMSCRProtocol rep = getUserDataRep(deviceId, dMSCRProtocol, dmSCRClient); SendReplyToSCRClient(dmSCRClient, rep); } catch (Exception ex) { writeLog(dmSCRClient, ex.Message, "SCR_USERINFO"); } break; } return(""); }
/// <summary> /// 提交预约数据等 后回复设备 /// </summary> /// <param name="command"></param> /// <param name="dmSCRClient"></param> /// <param name="jsonResult0"></param> /// <param name="jsonResult1"></param> public void SendReplyToSCRClient(COMMAND command, DMClient dmSCRClient, string jsonResult0, string jsonResult1 = null) { DMSCRProtocol dMSCRProtocol; switch (command) { //仪器信息 case COMMAND.REP_SCR_DEV_INFO: //51 dMSCRProtocol = new DMSCRProtocol(HEADER.XXZL.ToString(), VERSION.V0100.ToString(), (int)command, dmSCRClient.DeviceID, (int)dmSCRClient.Stat, (int)dmSCRClient.Powerstat, DateTime.Now.ToString("yyyyMMddHHmmss")); try { SCRInstrumentInformation data = JsonSerializer.Deserialize <SCRInstrumentInformation>(jsonResult0); dMSCRProtocol.setSCRInstrumentInformation(data); dmSCRClient.Send(dMSCRProtocol.makeMessage()); } catch (Exception ex) { writeLog(dmSCRClient, ex.Message, "REP_SCR_DEV_INFO故障"); } break; //回复屏幕首页信息 case COMMAND.REP_SCR_STATE_BOOK: //52 try { dMSCRProtocol = new DMSCRProtocol(HEADER.XXZL.ToString(), VERSION.V0100.ToString(), (int)command, dmSCRClient.DeviceID, (int)STAT.UNCHANGING, (int)POWERSTAT.UNCHANGING, DateTime.Now.ToString("yyyyMMddHHmmss")); SCRInstrumentStatus status = JsonSerializer.Deserialize <SCRInstrumentStatus>(jsonResult0); SCRInstrumentFutureStatus futureStatus = new SCRInstrumentFutureStatus() { bookingStart = "", phonenumber = "", userName = "" }; if (!string.IsNullOrEmpty(jsonResult1)) { futureStatus = JsonSerializer.Deserialize <SCRInstrumentFutureStatus>(jsonResult1); } dMSCRProtocol.setSCRInstrumentStatusAndFutureStatus(dmSCRClient.InstrumentName, status, futureStatus); dmSCRClient.Send(dMSCRProtocol.makeMessage()); } catch (Exception ex) { writeLog(dmSCRClient, ex.Message, "REP_SCR_STATE_BOOK"); } break; case COMMAND.REP_SCR_BOOK_CALENDAR: try { List <SCRBookingPeriod> periodList = JsonSerializer.Deserialize <List <SCRBookingPeriod> >(jsonResult0); dMSCRProtocol = new DMSCRProtocol(HEADER.XXZL.ToString(), VERSION.V0100.ToString(), (int)command, dmSCRClient.DeviceID, (int)dmSCRClient.Stat, (int)dmSCRClient.Powerstat, DateTime.Now.ToString("yyyyMMddHHmmss")); dMSCRProtocol.setSCRCalendar(periodList); dmSCRClient.Send(dMSCRProtocol.makeMessage()); } catch (Exception ex) { writeLog(dmSCRClient, ex.Message, "REP_SCR_BOOK_CALENDAR"); } break; case COMMAND.REP_SCR_BOOK_DATE: //56 try { List <SCRBookingByDayInformation> bookingList = JsonSerializer.Deserialize <List <SCRBookingByDayInformation> >(jsonResult0); dMSCRProtocol = new DMSCRProtocol(HEADER.XXZL.ToString(), VERSION.V0100.ToString(), (int)command, dmSCRClient.DeviceID, (int)dmSCRClient.Stat, (int)dmSCRClient.Powerstat, DateTime.Now.ToString("yyyyMMddHHmmss")); dMSCRProtocol.setSCRBookings(bookingList); dmSCRClient.Send(dMSCRProtocol.makeMessage()); } catch (Exception ex) { writeLog(dmSCRClient, ex.Message, "REP_SCR_BOOK_DATE"); } break; case COMMAND.REP_SCR_BOOKING: dMSCRProtocol = new DMSCRProtocol(HEADER.XXZL.ToString(), VERSION.V0100.ToString(), (int)command, dmSCRClient.DeviceID, (int)dmSCRClient.Stat, (int)dmSCRClient.Powerstat, DateTime.Now.ToString("yyyyMMddHHmmss")); try { SCRBookingREP scrBookingREP = JsonSerializer.Deserialize <SCRBookingREP>(jsonResult0); if (scrBookingREP.code == 500) { if (scrBookingREP.msg.Length > 16) { dMSCRProtocol.setSCRBookingResult(scrBookingREP.msg.Substring(0, 15)); } else { dMSCRProtocol.setSCRBookingResult(scrBookingREP.msg); } } else { dMSCRProtocol.setSCRBookingResult(scrBookingREP.msg); } } catch (Exception ex) { writeLog(dmSCRClient, ex.Message, "REP_SCR_BOOKING"); if (jsonResult0.Length > 16) { dMSCRProtocol.setSCRBookingResult(jsonResult0.Substring(0, 15)); } else { dMSCRProtocol.setSCRBookingResult(jsonResult0); } } dmSCRClient.Send(dMSCRProtocol.makeMessage()); break; } }