MakeHelper.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using System.Collections;
  2. using System.Text.RegularExpressions;
  3. using System.Web;
  4. using Common;
  5. using Infrastructure;
  6. using LitJson;
  7. using Microsoft.CodeAnalysis.CSharp.Scripting;
  8. using Services;
  9. namespace Tasks
  10. {
  11. public class MakeHelper
  12. {
  13. public readonly static MakeHelper Instance = new MakeHelper();
  14. private MakeHelper()
  15. { }
  16. public void Start(string QueueName)
  17. {
  18. RabbitMQClient.Instance.StartReceive(QueueName, content => DoWorks(content));
  19. }
  20. public void DoWorks(string content)
  21. {
  22. try
  23. {
  24. if (!string.IsNullOrEmpty(content))
  25. {
  26. DoQueue(content);
  27. }
  28. }
  29. catch (Exception ex)
  30. {
  31. Utils.WriteLog(DateTime.Now.ToString() + "\n" + ex, "生成异常");
  32. }
  33. }
  34. public void DoQueue(string content)
  35. {
  36. JsonData jsonObj = JsonMapper.ToObject(content);
  37. //流水号
  38. string requestId = jsonObj["requestId"].ToString();
  39. //模板文件路径
  40. string modePath = jsonObj["modePath"].ToString();
  41. //附加数据,原样返回
  42. string attach = jsonObj["attach"].ToString();
  43. //读取模板文件内容
  44. // string templateString = Function.ReadInstance("Template/" + modePath);
  45. var templateService = App.GetRequiredService<IMakeTemplateService>();
  46. var template = templateService.GetFirst(m => m.templateName == modePath);
  47. if(template == null) return;
  48. string templateString = template.templateContent;
  49. templateString = HttpUtility.UrlDecode(templateString);
  50. //解析模板内容
  51. string resultString = Util.Maker.StartMake(jsonObj["data"], templateString);
  52. //生成文件
  53. string path = template.makePath.Substring(0, template.makePath.LastIndexOf("/") + 1);
  54. string fileName = template.makePath.Substring(template.makePath.LastIndexOf("/") + 1);
  55. path = Util.Maker.replaceKeyToValue(jsonObj["data"], path);
  56. fileName = Util.Maker.replaceKeyToValue(jsonObj["data"], fileName);
  57. Function.WritePage(path, fileName, resultString);
  58. //MQ回调解析的结果
  59. // RabbitMQClient.Instance.Push("MakeSqlCallBackQueue", requestId + "#cut#" + attach + "#cut#" + resultString);
  60. }
  61. }
  62. }