using SysBaseLibs; using SysDataLibs; using SysDataLibs.TableClass; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; using System.Web.Services; using System.Xml.Serialization; namespace GSMarketSys.WS { /// /// WSComplaints 的摘要说明 /// [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 // [System.Web.Script.Services.ScriptService] public class WSComplaints : System.Web.Services.WebService { public WSComplaints() { //如果使用设计的组件,请取消注释以下行 //InitializeComponent(); } // 实现处理食安办分派过来的投诉举报信息 [XmlInclude(typeof(ComplaintsResult))] [WebMethod] public ComplaintsResult CompaintsIssued(string OnlineComplaintsID, string OnlineComplaintsIP, string OnlineComplaintsName, string OnlineComplaintsContent, DateTime CreateDate, string ComplaintsDept, DateTime EndHandleDate, string ContactTel, string ComplaintType, string AssignNo, string AcceptancePeople, int EndHandleDateCount, ComplaintsAttachEntity[] Attachments, string Guid) { ComplaintsResult result = new ComplaintsResult(); result.Flag = false; result.Message = ""; DBConnSql loDBConn = null; try { // 检查是否有效guid if (LoginGUID.Instance.GetOne(Guid) == null) { string strMsg = "Invalid guid " + Guid; result.Message = strMsg; throw new Exception(strMsg); } FSOnlineComplaints_info complaints = new FSOnlineComplaints_info(); complaints.OnlineComplaintsID = SysBaseLibs.Utils.AreaToSQL(OnlineComplaintsID); complaints.OnlineComplaintsIP = SysBaseLibs.Utils.AreaToSQL(OnlineComplaintsIP); complaints.OnlineComplaintsName = SysBaseLibs.Utils.AreaToSQL(OnlineComplaintsName); complaints.OnlineComplaintsContent = SysBaseLibs.Utils.AreaToSQL(OnlineComplaintsContent); complaints.IsAudit = "0"; complaints.IsDeleted = "0"; complaints.IsReply = "0"; complaints.CreateDate = CreateDate.ToString(); complaints.ComplaintsDept = SysBaseLibs.Utils.AreaToSQL(ComplaintsDept); complaints.ReplyPeople = ""; complaints.ReplyDate = ""; complaints.ReplyContent = ""; complaints.EndHandleDateCount = EndHandleDateCount.ToString(); complaints.EndHandleDate = EndHandleDate.ToString(); complaints.OnlineComplaintsRemark = ""; complaints.ContactTel = SysBaseLibs.Utils.AreaToSQL(ContactTel); complaints.ComplaintType = SysBaseLibs.Utils.AreaToSQL(ComplaintType); complaints.AssignedNo = SysBaseLibs.Utils.AreaToSQL(AssignNo); complaints.AcceptancePeople = SysBaseLibs.Utils.AreaToSQL(AcceptancePeople); // 数据库操作 loDBConn = new DBConnSql(); if (loDBConn.Open()) { // 通过CompaintsIssued接口调用的OnlineComplaintsID,理论上不会有重复 string lcSql = complaints.InsertSql(); if (loDBConn.ExcuteSqlTran(lcSql)) { // 保存附件信息 SaveAttachments(OnlineComplaintsID, Attachments, loDBConn); result.Flag = true; } } } catch (Exception err) { result.Flag = false; result.Message = err.Message; string strTemp = "WSComplaints::CompaintsIssued失败," + err.Message; ThreadLog.LogInfo(strTemp); } finally { if (loDBConn != null && loDBConn.IsOpened) loDBConn.Close(); } return result; } // 实现接收从其他系统中转交过来的投诉举报 [XmlInclude(typeof(ComplaintsResult))] [WebMethod] public ComplaintsResult CompaintsTransmit(string OnlineComplaintsID, string OnlineComplaintsIP, string OnlineComplaintsName, string OnlineComplaintsContent, DateTime CreateDate, string ComplaintsDept, DateTime EndHandleDate, string ContactTel, string ComplaintType, string AssignNo, string AcceptancePeople, int EndHandleDateCount, ComplaintsAttachEntity[] Attachments, string TransmitPeople, string OldDept, string Guid) { ComplaintsResult result = new ComplaintsResult(); result.Flag = false; result.Message = ""; DBConnSql loDBConn = null; try { // 检查是否有效guid if (LoginGUID.Instance.GetOne(Guid) == null) { string strMsg = "Invalid guid " + Guid; result.Message = strMsg; throw new Exception(strMsg); } OnlineComplaintsID = SysBaseLibs.Utils.AreaToSQL(OnlineComplaintsID); FSOnlineComplaints_info complaints = new FSOnlineComplaints_info(); complaints.OnlineComplaintsID = OnlineComplaintsID; complaints.OnlineComplaintsIP = SysBaseLibs.Utils.AreaToSQL(OnlineComplaintsIP); complaints.OnlineComplaintsName = SysBaseLibs.Utils.AreaToSQL(OnlineComplaintsName); complaints.OnlineComplaintsContent = SysBaseLibs.Utils.AreaToSQL(OnlineComplaintsContent); complaints.IsAudit = "0"; complaints.IsDeleted = "0"; complaints.IsReply = "0"; complaints.CreateDate = CreateDate.ToString(); complaints.ComplaintsDept = SysBaseLibs.Utils.AreaToSQL(ComplaintsDept); complaints.ReplyPeople = ""; complaints.ReplyDate = ""; complaints.ReplyContent = ""; complaints.EndHandleDateCount = EndHandleDateCount.ToString(); complaints.EndHandleDate = EndHandleDate.ToString(); complaints.OnlineComplaintsRemark = ""; complaints.ContactTel = SysBaseLibs.Utils.AreaToSQL(ContactTel); complaints.ComplaintType = SysBaseLibs.Utils.AreaToSQL(ComplaintType); complaints.AssignedNo = SysBaseLibs.Utils.AreaToSQL(AssignNo); complaints.AcceptancePeople = SysBaseLibs.Utils.AreaToSQL(AcceptancePeople); // 数据库操作 loDBConn = new DBConnSql(); if (loDBConn.Open()) { // 记录转发信息 FSOnlineComplaintsTransmit_info transmit = new FSOnlineComplaintsTransmit_info(); transmit.TransmitID = System.Guid.NewGuid().ToString("N"); transmit.OnlineComplaintsID = OnlineComplaintsID; transmit.TransmitDept = SysBaseLibs.Utils.AreaToSQL(ComplaintsDept); transmit.OldDept = SysBaseLibs.Utils.AreaToSQL(OldDept); transmit.TransmitPeople = SysBaseLibs.Utils.AreaToSQL(TransmitPeople); transmit.UpdateTime = DateTime.Now.ToString(); if (loDBConn.ExcuteSqlTran(transmit.InsertSql())) { string strSql = string.Empty; bool bSaveAttach = false; // OnlineComplaintsID已经存在 if (IsComplaintsExist(OnlineComplaintsID, loDBConn) == true) { // 只要更新改记录的承办部门即可 strSql = complaints.UpdateComplaintsDeptSql(); } // 也可能是通过CompaintsTransmit转发过来的,该ID第一次出现 else { // 新增投诉记录 strSql = complaints.InsertSql(); // 需要保存附件 bSaveAttach = true; } if (loDBConn.ExcuteSqlTran(strSql)) { if (bSaveAttach) { // 保存附件信息 SaveAttachments(OnlineComplaintsID, Attachments, loDBConn); } result.Flag = true; } } } } catch (Exception err) { result.Flag = false; result.Message = err.Message; string strTemp = "WSComplaints::CompaintsTransmit失败," + err.Message; ThreadLog.LogInfo(strTemp); } finally { if (loDBConn != null && loDBConn.IsOpened) loDBConn.Close(); } return result; } // 实现处理 平台对子系统投诉举报信息“要求反馈时间延期申请”的回复 [XmlInclude(typeof(ComplaintsResult))] [WebMethod] public ComplaintsResult CompaintsDelayReply(string DelayID, string OnlineComplaintsID, string BackPeople, string BackContent, int IsDegree, string Guid) { ComplaintsResult result = new ComplaintsResult(); result.Flag = false; result.Message = ""; DBConnSql loDBConn = null; try { // 检查是否有效guid if (LoginGUID.Instance.GetOne(Guid) == null) { string strMsg = "Invalid guid " + Guid; result.Message = strMsg; throw new Exception(strMsg); } DelayID = SysBaseLibs.Utils.AreaToSQL(DelayID); OnlineComplaintsID = SysBaseLibs.Utils.AreaToSQL(OnlineComplaintsID); // 数据库操作 loDBConn = new DBConnSql(); if (loDBConn.Open()) { // 修改延期申请记录 FSOnlineComplaintsDelay_info delay = new FSOnlineComplaintsDelay_info(); delay.DelayID = DelayID; delay.IsAgree = IsDegree.ToString(); // 1同意;-1不同意 delay.BackPeople = SysBaseLibs.Utils.AreaToSQL(BackPeople); delay.BackContent = SysBaseLibs.Utils.AreaToSQL(BackContent); delay.UpdateTime = DateTime.Now.ToString(); string lcSql = delay.UpdateSql(); loDBConn.ExcuteSqlTran(lcSql); // 申请延期同意 if (IsDegree == 1) { // 查询延期申请中的延期时间 FSOnlineComplaintsDelay_Qry delayQry = new FSOnlineComplaintsDelay_Qry(); string lcDelayQrySql = "select * from " + Tn.FSOnlineComplaintsDelay + " where " + FSOnlineComplaintsDelay_info.cDelayID + "='" + DelayID + "'"; if (delayQry.Open(lcDelayQrySql, loDBConn) && (delayQry.RecCount > 0)) { int nDelayCount = delayQry.GetInt(FSOnlineComplaintsDelay_info.cDelayCount); string strDelayDate = delayQry.GetString(FSOnlineComplaintsDelay_info.cDelayDate); // 用延期时间去修改投诉记录的'要求反馈日期' FSOnlineComplaints_info complaints = new FSOnlineComplaints_info(); complaints.OnlineComplaintsID = OnlineComplaintsID; complaints.EndHandleDate = strDelayDate; //complaints.EndHandleDateCount = nDelayCount.ToString(); lcSql = complaints.UpdateDelaySql(); if (loDBConn.ExcuteSqlTran(lcSql)) { result.Flag = true; } } } } } catch (Exception err) { result.Flag = false; result.Message = err.Message; string strTemp = "WSComplaints::CompaintsDelayReply失败," + err.Message; ThreadLog.LogInfo(strTemp); } finally { if (loDBConn != null && loDBConn.IsOpened) loDBConn.Close(); } return result; } // 查询指定投诉信息是否存在 private bool IsComplaintsExist(string lcComplaintsID, DBConnSql loConn) { bool bRet = false; string lcSql = "select count(*) as totalcount from " + Tn.FSOnlineComplaints + " where " + FSOnlineComplaints_info.cOnlineComplaintsID + "='" + lcComplaintsID + "'"; SysBaseLibs.rsQuery loQuery = loConn.OpenQuery(lcSql); if (loQuery != null && loQuery.IsOpened && loQuery.RecCount > 0) { int nCount = loQuery.GetInt("totalcount"); if (nCount > 0) bRet = true; } return bRet; } // 保存附件文件 private void SaveAttachments(string OnlineComplaintsID, ComplaintsAttachEntity[] Attachments, DBConnSql loDBConn) { if (Attachments == null) return; foreach (ComplaintsAttachEntity attachFile in Attachments) { if (string.IsNullOrEmpty(attachFile.AttachmentName) || string.IsNullOrEmpty(attachFile.AttachmentFormat) || attachFile.AttachmentContent == null) { continue; } try { // 相对路径路径 string strFilePath = SysDataLibs.AppEnv.SysSetObj.GetString("DOWNLOADPATH") + "/" + SysDataLibs.AppEnv.SysSetObj.GetString("ATTACHFILES") + "/" + Tn.FSOnlineComplaints.ToUpper(); // 物理路径 string strPhysicalDir = HttpContext.Current.Request.PhysicalApplicationPath; strPhysicalDir += strFilePath; if (!Directory.Exists(strPhysicalDir)) { Directory.CreateDirectory(strPhysicalDir); } string strFileExt = attachFile.AttachmentFormat.Replace("'", ""); strFileExt = strFileExt.Replace(".", ""); // 扩展名不需要"."符号 string strFileTitle = attachFile.AttachmentName.Replace("'", ""); string lcDateRd = strFileTitle + "-" + DateTime.Now.ToString("yyyyMMddHHmmssffffff") + "." + strFileExt; string strFileName = lcDateRd.Replace(" ", ""); // 写入文件 System.IO.File.WriteAllBytes(strPhysicalDir + "/" + strFileName, attachFile.AttachmentContent); // 附件信息写入数据库 Sys_AttachFiles_info loAttachFile = new Sys_AttachFiles_info(); loAttachFile.TableId = Tn.FSOnlineComplaints; loAttachFile.ColumnId = FSOnlineComplaints_info.cOnlineComplaintsID; loAttachFile.SourceKey = OnlineComplaintsID; loAttachFile.FileTitle = strFileTitle; loAttachFile.FileName = strFileName; loAttachFile.FilePath = strFilePath; loAttachFile.FileExt = strFileExt; loAttachFile.TimeCreated = DateTime.Now.ToString(); loAttachFile.TimeLastMod = DateTime.Now.ToString(); loAttachFile.UserIDLastMod = "platuser"; loAttachFile.Description = ""; string strSql = loAttachFile.InsertSql(); bool bRet = loDBConn.ExcuteSqlTran(strSql); } catch (Exception err) { string strMsg = "WSComplaints.SaveAttachments exception," + err.Message; ThreadLog.LogErr(strMsg); } }//foreach } } // 附件信息 [Serializable] public class ComplaintsAttachEntity { public string AttachmentName; // 附件名称 public byte[] AttachmentContent; // 附件内容 public string AttachmentFormat; // 附件格式 } // 调用返回结果 [Serializable] public class ComplaintsResult { public bool Flag; // 是否执行成功 public string Message; // 无法执行成功的原因 } }