package com.sagacloud.route; import com.alibaba.fastjson.JSONObject; import com.github.rjeschke.txtmark.Processor; import com.sagacloud.route.processors.Insurance.*; import com.sagacloud.route.processors.GetPropByPjProcessor; import com.sagacloud.route.processors.Maintainance.FilterPropertyProcessor; import com.sagacloud.route.processors.Maintainance.QueryPropertyProcesspr; import com.sagacloud.route.processors.Manufacturer.MaunfacturerFilter; import com.sagacloud.route.processors.Manufacturer.GetVenderBySpecProcessor; import com.sagacloud.route.processors.PeriodTask.StatisticsProcessor; import com.sagacloud.route.processors.supplier.SupplierFilter; import com.sagacloud.utils.Const; import org.apache.commons.io.IOUtils; import javax.ws.rs.core.MediaType; import java.io.StringWriter; import java.util.ArrayList; import java.util.List; /** * Created by Xiaoyu on 2018/7/10 */ public class Route extends ExceptionHandlerBaseRoute { @Override public void configure() throws Exception { configExceptionHandler(); rest().get("/doc") .produces("text/html;charset=UTF-8") .route() .process(msg -> { String docContentStr = Processor.process(Route.class.getClassLoader().getResourceAsStream("documentation.md")); StringWriter writer = new StringWriter(); IOUtils.copy(Route.class.getClassLoader().getResourceAsStream("template.html"), writer, "utf-8"); String tmplateContentStr = writer.toString(); msg.getOut().setBody(tmplateContentStr.replace("#replaceMePlease#", docContentStr)); }); // 生产商查询项目下的资产 rest("/manufacturer/property/").post("query") .consumes(MediaType.APPLICATION_JSON) .produces(MediaType.APPLICATION_JSON) .route() .process(exchange -> { String jsonStr = exchange.getIn().getBody(String.class); JSONObject json = JSONObject.parseObject(jsonStr); exchange.setProperty("venderId",json.getString("venderId")); exchange.getIn().setBody(jsonStr); }) .to("direct:getPropertiesByPj") .process(new GetVenderBySpecProcessor()) .to(Const.venders+"/manufacturer/specification/query_vender") .process(new MaunfacturerFilter()); // 供应商查询项目下的资产 rest("/supplier/property/").post("query") .consumes(MediaType.APPLICATION_JSON) .produces(MediaType.APPLICATION_JSON) .route() .process(exchange -> { String jsonStr = exchange.getIn().getBody(String.class); JSONObject json = JSONObject.parseObject(jsonStr); exchange.setProperty("venderId",json.getString("venderId")); exchange.getIn().setBody(jsonStr); }) .to("direct:getPropertiesByPj") .process(new GetVenderBySpecProcessor()) .to(Const.venders+"/manufacturer/specification/query_vender") .process(new SupplierFilter()); // 获取在保资产清单 rest("/insurance/project/").post("query") .consumes(MediaType.APPLICATION_JSON) .produces(MediaType.APPLICATION_JSON) .route() .process(new GetInsuranceNoListProcessor()) .to(String.join("", InitEnvRoute.venders, "/insurance/contract/query")) .process(new HandleWarrantyFromVenderProcessor()) .to("direct:getPropertiesByPj") //.to(String.join("", InitEnvRoute.dataPlatform, "/property/relation_query")) .process(new GetPropertyUnderWarrantyProcessor()); // 获取所有保单列表 rest("/insurance/contract/").post("query") .consumes(MediaType.APPLICATION_JSON) .produces(MediaType.APPLICATION_JSON) .route() .process(new GetInsuranceNoListProcessor()) .to(String.join("", InitEnvRoute.venders, "/insurance/contract/query")) .process(new HandleWarrantyFromVenderProcessor()) .to("direct:getPropertiesByPj") .process(new GetPropertyCountInAllWarrantyProcessor()); // 根据保单获取资产 rest("/insurance/contract/property/").post("query") .consumes(MediaType.APPLICATION_JSON) .produces(MediaType.APPLICATION_JSON) .route() .process(new StoreInsuranceNoProcessor()) .to("direct:getPropertiesByPj") .process(new GetPropertyInCertainWarrantyProcessor()); // 查询指定项目内合同有效期内的资产/查询指定项目内历史维护资产 rest("/maintainance/property/").post("query") .consumes(MediaType.APPLICATION_JSON) .produces(MediaType.APPLICATION_JSON) .route() .process(new QueryPropertyProcesspr()) .to("direct:getPropertiesByPj") .process(new FilterPropertyProcessor()); rest("/test/").get().produces(MediaType.APPLICATION_JSON).route() .process(msg -> { List lst = new ArrayList<>(); for(int i = 0; i < 1000; i++){ lst.add("hh" + i); } msg.getOut().setBody(lst); }).split(body(), (oldmsg, newmsg) -> { if(oldmsg == null){ return newmsg; } oldmsg.getIn().setBody(oldmsg.getIn().getBody(String.class) + newmsg.getIn().getBody(String.class)); return oldmsg; }).parallelProcessing().parallelAggregate().to("direct://test"); // 需要输入 body是Pj1101080001, getProperty("propertyData") 是 DPSelectPropertyResult类型, // getProperty("idMap") 是 Map类型, 说明: 所有DPID --> venderId // getProperty("nameMap") 是 Map>类型 说明: 信息点Name --> (厂商库该信息点的值 --> 所属厂商) from("direct:getProperty").process(new StatisticsProcessor()) .to(String.join("", InitEnvRoute.venders, "/auxiliary/property/create_by_project")); //body为JSONObject,含有projectId字段 from("direct:getPropertiesByPj") .process(new GetPropByPjProcessor()) .to(Const.dataPlatform+"/property/relation_query"); // .process(exchange -> { // System.out.println(exchange.getIn().getBody(String.class)); // }); rest("/test").post() .consumes(MediaType.APPLICATION_JSON) .produces(MediaType.APPLICATION_JSON) .route() .to("direct:getPropertiesByPj"); } }