Route.java 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package com.sagacloud.route;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.github.rjeschke.txtmark.Processor;
  4. import com.sagacloud.route.processors.Insurance.*;
  5. import com.sagacloud.route.processors.GetPropByPjProcessor;
  6. import com.sagacloud.route.processors.Maintainance.FilterPropertyProcessor;
  7. import com.sagacloud.route.processors.Maintainance.QueryPropertyProcesspr;
  8. import com.sagacloud.route.processors.Manufacturer.MaunfacturerFilter;
  9. import com.sagacloud.route.processors.Manufacturer.GetVenderBySpecProcessor;
  10. import com.sagacloud.route.processors.PeriodTask.StatisticsProcessor;
  11. import com.sagacloud.route.processors.supplier.SupplierFilter;
  12. import com.sagacloud.utils.Const;
  13. import org.apache.commons.io.IOUtils;
  14. import javax.ws.rs.core.MediaType;
  15. import java.io.StringWriter;
  16. import java.util.ArrayList;
  17. import java.util.List;
  18. /**
  19. * Created by Xiaoyu on 2018/7/10
  20. */
  21. public class Route extends ExceptionHandlerBaseRoute {
  22. @Override
  23. public void configure() throws Exception {
  24. configExceptionHandler();
  25. rest().get("/doc")
  26. .produces("text/html;charset=UTF-8")
  27. .route()
  28. .process(msg -> {
  29. String docContentStr = Processor.process(Route.class.getClassLoader().getResourceAsStream("documentation.md"));
  30. StringWriter writer = new StringWriter();
  31. IOUtils.copy(Route.class.getClassLoader().getResourceAsStream("template.html"), writer, "utf-8");
  32. String tmplateContentStr = writer.toString();
  33. msg.getOut().setBody(tmplateContentStr.replace("#replaceMePlease#", docContentStr));
  34. });
  35. // 生产商查询项目下的资产
  36. rest("/manufacturer/property/").post("query")
  37. .consumes(MediaType.APPLICATION_JSON)
  38. .produces(MediaType.APPLICATION_JSON)
  39. .route()
  40. .process(exchange -> {
  41. String jsonStr = exchange.getIn().getBody(String.class);
  42. JSONObject json = JSONObject.parseObject(jsonStr);
  43. exchange.setProperty("venderId",json.getString("venderId"));
  44. exchange.getIn().setBody(jsonStr);
  45. })
  46. .to("direct:getPropertiesByPj")
  47. .process(new GetVenderBySpecProcessor())
  48. .to(Const.venders+"/manufacturer/specification/query_vender")
  49. .process(new MaunfacturerFilter());
  50. // 供应商查询项目下的资产
  51. rest("/supplier/property/").post("query")
  52. .consumes(MediaType.APPLICATION_JSON)
  53. .produces(MediaType.APPLICATION_JSON)
  54. .route()
  55. .process(exchange -> {
  56. String jsonStr = exchange.getIn().getBody(String.class);
  57. JSONObject json = JSONObject.parseObject(jsonStr);
  58. exchange.setProperty("venderId",json.getString("venderId"));
  59. exchange.getIn().setBody(jsonStr);
  60. })
  61. .to("direct:getPropertiesByPj")
  62. .process(new GetVenderBySpecProcessor())
  63. .to(Const.venders+"/manufacturer/specification/query_vender")
  64. .process(new SupplierFilter());
  65. // 获取在保资产清单
  66. rest("/insurance/project/").post("query")
  67. .consumes(MediaType.APPLICATION_JSON)
  68. .produces(MediaType.APPLICATION_JSON)
  69. .route()
  70. .process(new GetInsuranceNoListProcessor())
  71. .to(String.join("", InitEnvRoute.venders, "/insurance/contract/query"))
  72. .process(new HandleWarrantyFromVenderProcessor())
  73. .to("direct:getPropertiesByPj")
  74. //.to(String.join("", InitEnvRoute.dataPlatform, "/property/relation_query"))
  75. .process(new GetPropertyUnderWarrantyProcessor());
  76. // 获取所有保单列表
  77. rest("/insurance/contract/").post("query")
  78. .consumes(MediaType.APPLICATION_JSON)
  79. .produces(MediaType.APPLICATION_JSON)
  80. .route()
  81. .process(new GetInsuranceNoListProcessor())
  82. .to(String.join("", InitEnvRoute.venders, "/insurance/contract/query"))
  83. .process(new HandleWarrantyFromVenderProcessor())
  84. .to("direct:getPropertiesByPj")
  85. .process(new GetPropertyCountInAllWarrantyProcessor());
  86. // 根据保单获取资产
  87. rest("/insurance/contract/property/").post("query")
  88. .consumes(MediaType.APPLICATION_JSON)
  89. .produces(MediaType.APPLICATION_JSON)
  90. .route()
  91. .process(new StoreInsuranceNoProcessor())
  92. .to("direct:getPropertiesByPj")
  93. .process(new GetPropertyInCertainWarrantyProcessor());
  94. // 查询指定项目内合同有效期内的资产/查询指定项目内历史维护资产
  95. rest("/maintainance/property/").post("query")
  96. .consumes(MediaType.APPLICATION_JSON)
  97. .produces(MediaType.APPLICATION_JSON)
  98. .route()
  99. .process(new QueryPropertyProcesspr())
  100. .to("direct:getPropertiesByPj")
  101. .process(new FilterPropertyProcessor());
  102. rest("/test/").get().produces(MediaType.APPLICATION_JSON).route()
  103. .process(msg -> {
  104. List<String> lst = new ArrayList<>();
  105. for(int i = 0; i < 1000; i++){
  106. lst.add("hh" + i);
  107. }
  108. msg.getOut().setBody(lst);
  109. }).split(body(), (oldmsg, newmsg) -> {
  110. if(oldmsg == null){
  111. return newmsg;
  112. }
  113. oldmsg.getIn().setBody(oldmsg.getIn().getBody(String.class) + newmsg.getIn().getBody(String.class));
  114. return oldmsg;
  115. }).parallelProcessing().parallelAggregate().to("direct://test");
  116. // 需要输入 body是Pj1101080001, getProperty("propertyData") 是 DPSelectPropertyResult类型,
  117. // getProperty("idMap") 是 Map<String, String>类型, 说明: 所有DPID --> venderId
  118. // getProperty("nameMap") 是 Map<String, Map<String, String>>类型 说明: 信息点Name --> (厂商库该信息点的值 --> 所属厂商)
  119. from("direct:getProperty").process(new StatisticsProcessor())
  120. .to(String.join("", InitEnvRoute.venders, "/auxiliary/property/create_by_project"));
  121. //body为JSONObject,含有projectId字段
  122. from("direct:getPropertiesByPj")
  123. .process(new GetPropByPjProcessor())
  124. .to(Const.dataPlatform+"/property/relation_query");
  125. // .process(exchange -> {
  126. // System.out.println(exchange.getIn().getBody(String.class));
  127. // });
  128. rest("/test").post()
  129. .consumes(MediaType.APPLICATION_JSON)
  130. .produces(MediaType.APPLICATION_JSON)
  131. .route()
  132. .to("direct:getPropertiesByPj");
  133. }
  134. }