WSComplaints.asmx.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395
  1. using SysBaseLibs;
  2. using SysDataLibs;
  3. using SysDataLibs.TableClass;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.IO;
  7. using System.Linq;
  8. using System.Web;
  9. using System.Web.Services;
  10. using System.Xml.Serialization;
  11. namespace GSMarketSys.WS
  12. {
  13. /// <summary>
  14. /// WSComplaints 的摘要说明
  15. /// </summary>
  16. [WebService(Namespace = "http://tempuri.org/")]
  17. [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  18. [System.ComponentModel.ToolboxItem(false)]
  19. // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
  20. // [System.Web.Script.Services.ScriptService]
  21. public class WSComplaints : System.Web.Services.WebService
  22. {
  23. public WSComplaints()
  24. {
  25. //如果使用设计的组件,请取消注释以下行
  26. //InitializeComponent();
  27. }
  28. // 实现处理食安办分派过来的投诉举报信息
  29. [XmlInclude(typeof(ComplaintsResult))]
  30. [WebMethod]
  31. public ComplaintsResult CompaintsIssued(string OnlineComplaintsID, string OnlineComplaintsIP, string OnlineComplaintsName,
  32. string OnlineComplaintsContent, DateTime CreateDate, string ComplaintsDept, DateTime EndHandleDate, string ContactTel,
  33. string ComplaintType, string AssignNo, string AcceptancePeople,
  34. int EndHandleDateCount, ComplaintsAttachEntity[] Attachments, string Guid)
  35. {
  36. ComplaintsResult result = new ComplaintsResult();
  37. result.Flag = false;
  38. result.Message = "";
  39. DBConnSql loDBConn = null;
  40. try
  41. {
  42. // 检查是否有效guid
  43. if (LoginGUID.Instance.GetOne(Guid) == null)
  44. {
  45. string strMsg = "Invalid guid " + Guid;
  46. result.Message = strMsg;
  47. throw new Exception(strMsg);
  48. }
  49. FSOnlineComplaints_info complaints = new FSOnlineComplaints_info();
  50. complaints.OnlineComplaintsID = SysBaseLibs.Utils.AreaToSQL(OnlineComplaintsID);
  51. complaints.OnlineComplaintsIP = SysBaseLibs.Utils.AreaToSQL(OnlineComplaintsIP);
  52. complaints.OnlineComplaintsName = SysBaseLibs.Utils.AreaToSQL(OnlineComplaintsName);
  53. complaints.OnlineComplaintsContent = SysBaseLibs.Utils.AreaToSQL(OnlineComplaintsContent);
  54. complaints.IsAudit = "0";
  55. complaints.IsDeleted = "0";
  56. complaints.IsReply = "0";
  57. complaints.CreateDate = CreateDate.ToString();
  58. complaints.ComplaintsDept = SysBaseLibs.Utils.AreaToSQL(ComplaintsDept);
  59. complaints.ReplyPeople = "";
  60. complaints.ReplyDate = "";
  61. complaints.ReplyContent = "";
  62. complaints.EndHandleDateCount = EndHandleDateCount.ToString();
  63. complaints.EndHandleDate = EndHandleDate.ToString();
  64. complaints.OnlineComplaintsRemark = "";
  65. complaints.ContactTel = SysBaseLibs.Utils.AreaToSQL(ContactTel);
  66. complaints.ComplaintType = SysBaseLibs.Utils.AreaToSQL(ComplaintType);
  67. complaints.AssignedNo = SysBaseLibs.Utils.AreaToSQL(AssignNo);
  68. complaints.AcceptancePeople = SysBaseLibs.Utils.AreaToSQL(AcceptancePeople);
  69. // 数据库操作
  70. loDBConn = new DBConnSql();
  71. if (loDBConn.Open())
  72. {
  73. // 通过CompaintsIssued接口调用的OnlineComplaintsID,理论上不会有重复
  74. string lcSql = complaints.InsertSql();
  75. if (loDBConn.ExcuteSqlTran(lcSql))
  76. {
  77. // 保存附件信息
  78. SaveAttachments(OnlineComplaintsID, Attachments, loDBConn);
  79. result.Flag = true;
  80. }
  81. }
  82. }
  83. catch (Exception err)
  84. {
  85. result.Flag = false;
  86. result.Message = err.Message;
  87. string strTemp = "WSComplaints::CompaintsIssued失败," + err.Message;
  88. ThreadLog.LogInfo(strTemp);
  89. }
  90. finally
  91. {
  92. if (loDBConn != null && loDBConn.IsOpened)
  93. loDBConn.Close();
  94. }
  95. return result;
  96. }
  97. // 实现接收从其他系统中转交过来的投诉举报
  98. [XmlInclude(typeof(ComplaintsResult))]
  99. [WebMethod]
  100. public ComplaintsResult CompaintsTransmit(string OnlineComplaintsID, string OnlineComplaintsIP, string OnlineComplaintsName,
  101. string OnlineComplaintsContent, DateTime CreateDate, string ComplaintsDept, DateTime EndHandleDate, string ContactTel,
  102. string ComplaintType, string AssignNo, string AcceptancePeople, int EndHandleDateCount, ComplaintsAttachEntity[] Attachments,
  103. string TransmitPeople, string OldDept, string Guid)
  104. {
  105. ComplaintsResult result = new ComplaintsResult();
  106. result.Flag = false;
  107. result.Message = "";
  108. DBConnSql loDBConn = null;
  109. try
  110. {
  111. // 检查是否有效guid
  112. if (LoginGUID.Instance.GetOne(Guid) == null)
  113. {
  114. string strMsg = "Invalid guid " + Guid;
  115. result.Message = strMsg;
  116. throw new Exception(strMsg);
  117. }
  118. OnlineComplaintsID = SysBaseLibs.Utils.AreaToSQL(OnlineComplaintsID);
  119. FSOnlineComplaints_info complaints = new FSOnlineComplaints_info();
  120. complaints.OnlineComplaintsID = OnlineComplaintsID;
  121. complaints.OnlineComplaintsIP = SysBaseLibs.Utils.AreaToSQL(OnlineComplaintsIP);
  122. complaints.OnlineComplaintsName = SysBaseLibs.Utils.AreaToSQL(OnlineComplaintsName);
  123. complaints.OnlineComplaintsContent = SysBaseLibs.Utils.AreaToSQL(OnlineComplaintsContent);
  124. complaints.IsAudit = "0";
  125. complaints.IsDeleted = "0";
  126. complaints.IsReply = "0";
  127. complaints.CreateDate = CreateDate.ToString();
  128. complaints.ComplaintsDept = SysBaseLibs.Utils.AreaToSQL(ComplaintsDept);
  129. complaints.ReplyPeople = "";
  130. complaints.ReplyDate = "";
  131. complaints.ReplyContent = "";
  132. complaints.EndHandleDateCount = EndHandleDateCount.ToString();
  133. complaints.EndHandleDate = EndHandleDate.ToString();
  134. complaints.OnlineComplaintsRemark = "";
  135. complaints.ContactTel = SysBaseLibs.Utils.AreaToSQL(ContactTel);
  136. complaints.ComplaintType = SysBaseLibs.Utils.AreaToSQL(ComplaintType);
  137. complaints.AssignedNo = SysBaseLibs.Utils.AreaToSQL(AssignNo);
  138. complaints.AcceptancePeople = SysBaseLibs.Utils.AreaToSQL(AcceptancePeople);
  139. // 数据库操作
  140. loDBConn = new DBConnSql();
  141. if (loDBConn.Open())
  142. {
  143. // 记录转发信息
  144. FSOnlineComplaintsTransmit_info transmit = new FSOnlineComplaintsTransmit_info();
  145. transmit.TransmitID = System.Guid.NewGuid().ToString("N");
  146. transmit.OnlineComplaintsID = OnlineComplaintsID;
  147. transmit.TransmitDept = SysBaseLibs.Utils.AreaToSQL(ComplaintsDept);
  148. transmit.OldDept = SysBaseLibs.Utils.AreaToSQL(OldDept);
  149. transmit.TransmitPeople = SysBaseLibs.Utils.AreaToSQL(TransmitPeople);
  150. transmit.UpdateTime = DateTime.Now.ToString();
  151. if (loDBConn.ExcuteSqlTran(transmit.InsertSql()))
  152. {
  153. string strSql = string.Empty;
  154. bool bSaveAttach = false;
  155. // OnlineComplaintsID已经存在
  156. if (IsComplaintsExist(OnlineComplaintsID, loDBConn) == true)
  157. {
  158. // 只要更新改记录的承办部门即可
  159. strSql = complaints.UpdateComplaintsDeptSql();
  160. }
  161. // 也可能是通过CompaintsTransmit转发过来的,该ID第一次出现
  162. else
  163. {
  164. // 新增投诉记录
  165. strSql = complaints.InsertSql();
  166. // 需要保存附件
  167. bSaveAttach = true;
  168. }
  169. if (loDBConn.ExcuteSqlTran(strSql))
  170. {
  171. if (bSaveAttach)
  172. {
  173. // 保存附件信息
  174. SaveAttachments(OnlineComplaintsID, Attachments, loDBConn);
  175. }
  176. result.Flag = true;
  177. }
  178. }
  179. }
  180. }
  181. catch (Exception err)
  182. {
  183. result.Flag = false;
  184. result.Message = err.Message;
  185. string strTemp = "WSComplaints::CompaintsTransmit失败," + err.Message;
  186. ThreadLog.LogInfo(strTemp);
  187. }
  188. finally
  189. {
  190. if (loDBConn != null && loDBConn.IsOpened)
  191. loDBConn.Close();
  192. }
  193. return result;
  194. }
  195. // 实现处理 平台对子系统投诉举报信息“要求反馈时间延期申请”的回复
  196. [XmlInclude(typeof(ComplaintsResult))]
  197. [WebMethod]
  198. public ComplaintsResult CompaintsDelayReply(string DelayID, string OnlineComplaintsID, string BackPeople,
  199. string BackContent, int IsDegree, string Guid)
  200. {
  201. ComplaintsResult result = new ComplaintsResult();
  202. result.Flag = false;
  203. result.Message = "";
  204. DBConnSql loDBConn = null;
  205. try
  206. {
  207. // 检查是否有效guid
  208. if (LoginGUID.Instance.GetOne(Guid) == null)
  209. {
  210. string strMsg = "Invalid guid " + Guid;
  211. result.Message = strMsg;
  212. throw new Exception(strMsg);
  213. }
  214. DelayID = SysBaseLibs.Utils.AreaToSQL(DelayID);
  215. OnlineComplaintsID = SysBaseLibs.Utils.AreaToSQL(OnlineComplaintsID);
  216. // 数据库操作
  217. loDBConn = new DBConnSql();
  218. if (loDBConn.Open())
  219. {
  220. // 修改延期申请记录
  221. FSOnlineComplaintsDelay_info delay = new FSOnlineComplaintsDelay_info();
  222. delay.DelayID = DelayID;
  223. delay.IsAgree = IsDegree.ToString(); // 1同意;-1不同意
  224. delay.BackPeople = SysBaseLibs.Utils.AreaToSQL(BackPeople);
  225. delay.BackContent = SysBaseLibs.Utils.AreaToSQL(BackContent);
  226. delay.UpdateTime = DateTime.Now.ToString();
  227. string lcSql = delay.UpdateSql();
  228. loDBConn.ExcuteSqlTran(lcSql);
  229. // 申请延期同意
  230. if (IsDegree == 1)
  231. {
  232. // 查询延期申请中的延期时间
  233. FSOnlineComplaintsDelay_Qry delayQry = new FSOnlineComplaintsDelay_Qry();
  234. string lcDelayQrySql = "select * from " + Tn.FSOnlineComplaintsDelay + " where " + FSOnlineComplaintsDelay_info.cDelayID + "='" + DelayID + "'";
  235. if (delayQry.Open(lcDelayQrySql, loDBConn) && (delayQry.RecCount > 0))
  236. {
  237. int nDelayCount = delayQry.GetInt(FSOnlineComplaintsDelay_info.cDelayCount);
  238. string strDelayDate = delayQry.GetString(FSOnlineComplaintsDelay_info.cDelayDate);
  239. // 用延期时间去修改投诉记录的'要求反馈日期'
  240. FSOnlineComplaints_info complaints = new FSOnlineComplaints_info();
  241. complaints.OnlineComplaintsID = OnlineComplaintsID;
  242. complaints.EndHandleDate = strDelayDate;
  243. //complaints.EndHandleDateCount = nDelayCount.ToString();
  244. lcSql = complaints.UpdateDelaySql();
  245. if (loDBConn.ExcuteSqlTran(lcSql))
  246. {
  247. result.Flag = true;
  248. }
  249. }
  250. }
  251. }
  252. }
  253. catch (Exception err)
  254. {
  255. result.Flag = false;
  256. result.Message = err.Message;
  257. string strTemp = "WSComplaints::CompaintsDelayReply失败," + err.Message;
  258. ThreadLog.LogInfo(strTemp);
  259. }
  260. finally
  261. {
  262. if (loDBConn != null && loDBConn.IsOpened)
  263. loDBConn.Close();
  264. }
  265. return result;
  266. }
  267. // 查询指定投诉信息是否存在
  268. private bool IsComplaintsExist(string lcComplaintsID, DBConnSql loConn)
  269. {
  270. bool bRet = false;
  271. string lcSql = "select count(*) as totalcount from " + Tn.FSOnlineComplaints +
  272. " where " + FSOnlineComplaints_info.cOnlineComplaintsID + "='" + lcComplaintsID + "'";
  273. SysBaseLibs.rsQuery loQuery = loConn.OpenQuery(lcSql);
  274. if (loQuery != null && loQuery.IsOpened && loQuery.RecCount > 0)
  275. {
  276. int nCount = loQuery.GetInt("totalcount");
  277. if (nCount > 0)
  278. bRet = true;
  279. }
  280. return bRet;
  281. }
  282. // 保存附件文件
  283. private void SaveAttachments(string OnlineComplaintsID, ComplaintsAttachEntity[] Attachments, DBConnSql loDBConn)
  284. {
  285. if (Attachments == null)
  286. return;
  287. foreach (ComplaintsAttachEntity attachFile in Attachments)
  288. {
  289. if (string.IsNullOrEmpty(attachFile.AttachmentName) || string.IsNullOrEmpty(attachFile.AttachmentFormat) || attachFile.AttachmentContent == null)
  290. {
  291. continue;
  292. }
  293. try
  294. {
  295. // 相对路径路径
  296. string strFilePath = SysDataLibs.AppEnv.SysSetObj.GetString("DOWNLOADPATH") + "/" +
  297. SysDataLibs.AppEnv.SysSetObj.GetString("ATTACHFILES") + "/" + Tn.FSOnlineComplaints.ToUpper();
  298. // 物理路径
  299. string strPhysicalDir = HttpContext.Current.Request.PhysicalApplicationPath;
  300. strPhysicalDir += strFilePath;
  301. if (!Directory.Exists(strPhysicalDir))
  302. {
  303. Directory.CreateDirectory(strPhysicalDir);
  304. }
  305. string strFileExt = attachFile.AttachmentFormat.Replace("'", "");
  306. strFileExt = strFileExt.Replace(".", ""); // 扩展名不需要"."符号
  307. string strFileTitle = attachFile.AttachmentName.Replace("'", "");
  308. string lcDateRd = strFileTitle + "-" + DateTime.Now.ToString("yyyyMMddHHmmssffffff") + "." + strFileExt;
  309. string strFileName = lcDateRd.Replace(" ", "");
  310. // 写入文件
  311. System.IO.File.WriteAllBytes(strPhysicalDir + "/" + strFileName, attachFile.AttachmentContent);
  312. // 附件信息写入数据库
  313. Sys_AttachFiles_info loAttachFile = new Sys_AttachFiles_info();
  314. loAttachFile.TableId = Tn.FSOnlineComplaints;
  315. loAttachFile.ColumnId = FSOnlineComplaints_info.cOnlineComplaintsID;
  316. loAttachFile.SourceKey = OnlineComplaintsID;
  317. loAttachFile.FileTitle = strFileTitle;
  318. loAttachFile.FileName = strFileName;
  319. loAttachFile.FilePath = strFilePath;
  320. loAttachFile.FileExt = strFileExt;
  321. loAttachFile.TimeCreated = DateTime.Now.ToString();
  322. loAttachFile.TimeLastMod = DateTime.Now.ToString();
  323. loAttachFile.UserIDLastMod = "platuser";
  324. loAttachFile.Description = "";
  325. string strSql = loAttachFile.InsertSql();
  326. bool bRet = loDBConn.ExcuteSqlTran(strSql);
  327. }
  328. catch (Exception err)
  329. {
  330. string strMsg = "WSComplaints.SaveAttachments exception," + err.Message;
  331. ThreadLog.LogErr(strMsg);
  332. }
  333. }//foreach
  334. }
  335. }
  336. // 附件信息
  337. [Serializable]
  338. public class ComplaintsAttachEntity
  339. {
  340. public string AttachmentName; // 附件名称
  341. public byte[] AttachmentContent; // 附件内容
  342. public string AttachmentFormat; // 附件格式
  343. }
  344. // 调用返回结果
  345. [Serializable]
  346. public class ComplaintsResult
  347. {
  348. public bool Flag; // 是否执行成功
  349. public string Message; // 无法执行成功的原因
  350. }
  351. }