package com.dgtis.data.api; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.arronlong.httpclientutil.HttpClientUtil; import com.arronlong.httpclientutil.common.HttpConfig; import com.arronlong.httpclientutil.exception.HttpProcessException; import com.dgtis.common.core.utils.DateUtils; import com.dgtis.common.core.utils.StringUtils; import com.dgtis.common.core.utils.sql.EsJsonUtil; import com.dgtis.common.core.web.domain.AjaxResult; import com.dgtis.common.security.annotation.PreAuthorize; import org.apache.http.HttpEntity; import org.apache.http.entity.ContentType; import org.apache.http.nio.entity.NStringEntity; import org.apache.http.util.EntityUtils; import org.elasticsearch.client.Response; import org.elasticsearch.client.RestClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.*; /** * @description:客户信息列表api * @author:qxm * @date:2021/1/22 10:24 */ @Controller @RequestMapping("/customer") public class CustomerApiController { private static Logger logger = LoggerFactory.getLogger(CustomerApiController.class); @Autowired private RestClient restClient; @GetMapping("/getCustomerList") @ResponseBody public AjaxResult getCustomerList(@RequestParam(defaultValue = "0") int pageNum,@RequestParam(defaultValue = "10") int pageSize, String education,//学历 String policybelong,//业绩归属 String payS,String payE, //年缴费区间 String fadate,//投保年份 String productname,//险种类别 String insuredAmountS,String insuredAmountE,//保额区间 String ageS,String ageE,//年龄区间 String gender,//性别 String sobirth,//省份 String NOVPolicy,//保单件数 String custtype,//客户类型 投保人 String SCustID,// 核心客户号 String custclass,//客户等级 String participantsDateS,String participantsDateE,//参与方时间 String PIncomeS,String PIncomeE,//年收入区间 String Insured,//投保对象 String lp,//理赔 String yx,//有效 String gzgw,//关注官微 String zcgw//注册官微 ) { // 获取索引的别名,字段,创建时间 String beginBirthDay = ""; String endBirthDay = ""; if(StringUtils.isNotEmpty(ageS)){ String year = DateUtils.getYYYY(); int bYear = Integer.parseInt(year)-Integer.parseInt(ageS); endBirthDay = bYear+"-"+DateUtils.getMMDD(); } if(StringUtils.isNotEmpty(ageE)){ String year = DateUtils.getYYYY(); int bYear = Integer.parseInt(year)-Integer.parseInt(ageE); beginBirthDay = bYear+"-"+DateUtils.getMMDD(); } try { //拼装查询条件 StringBuilder builder =new StringBuilder(); builder.append("{"); builder.append("\"query\": {");//query开始 builder.append("\"bool\": {");//boot开始 builder.append("\"must\": [");//must开始 if(StringUtils.isNotEmpty(gender)){ builder.append("{\"prefix\": { \"gender\": "+gender+"}},"); } if(StringUtils.isNotEmpty(NOVPolicy)){ builder.append("{\"prefix\": { \"label25\": \""+NOVPolicy+"\"}},"); } if(StringUtils.isNotEmpty(custclass)){ builder.append("{\"prefix\": { \"custclass\": \""+custclass+"\"}},"); } if(StringUtils.isNotEmpty(sobirth)){ builder.append("{\"wildcard\": { \"sobirth\": \"*"+sobirth+"*\"}},");//模糊匹配 } if(StringUtils.isNotEmpty(SCustID)){ builder.append("{\"wildcard\": { \"custid\": \"*"+SCustID+"*\"}},");//模糊匹配 } if(StringUtils.isNotEmpty(beginBirthDay) && StringUtils.isNotEmpty(endBirthDay)){ builder.append("{\"range\":{\"birthday\":{\"gt\":\""+beginBirthDay+"\",\"lt\":\""+endBirthDay+"\"}}},"); }else{ if(StringUtils.isNotEmpty(beginBirthDay)){ builder.append("{\"range\":{\"birthday\":{\"gt\":\""+beginBirthDay+"\"}}},"); } if(StringUtils.isNotEmpty(endBirthDay)){ builder.append("{\"range\":{\"birthday\":{\"lt\":\""+endBirthDay+"\"}}},"); } } if(StringUtils.isNotEmpty(gender) || StringUtils.isNotEmpty(NOVPolicy) || StringUtils.isNotEmpty(custclass) || StringUtils.isNotEmpty(sobirth) || StringUtils.isNotEmpty(SCustID)){ builder.delete(builder.length()-1,builder.length()); } builder.append("],");//must结束 builder.append("\"must_not\": [ ],");//must_not builder.append("\"should\": [ ]");//should builder.append("}");//boot结束 builder.append("},");//query结束 builder.append("\"from\": "+pageNum+",");//第几页 builder.append("\"size\": "+pageSize+",");//查询几个 builder.append(" \"sort\": [{\"created_time\":{\"order\":\"desc\"}}],");//排序 builder.append(" \"aggs\": {}");// builder.append("}"); HttpEntity entity = new NStringEntity(builder.toString(), ContentType.APPLICATION_JSON); Response response= restClient.performRequest("GET", "/shanglifeecif.individual/_search",Collections.emptyMap(),entity); String result = EntityUtils.toString(response.getEntity()); JSONObject jsonObject = JSON.parseObject(result); JSONObject hitsobject = (JSONObject) jsonObject.get("hits"); JSONArray array = JSON.parseArray(hitsobject.get("hits").toString()); List listMap = new ArrayList<>(); Map map = new HashMap(); for (int i = 0; i paramMap = new HashMap(); paramMap.put("pretty", "true"); Response response = restClient.performRequest("GET", "/shanglifeecif.individual/default_type_/"+id, paramMap); String result = EntityUtils.toString(response.getEntity()); Map map = new HashMap(); JSONObject jsonObject = JSON.parseObject(result); Map mpInfo = new HashMap(); String indid = jsonObject.getString("_id"); mpInfo.put("id",indid); JSONObject source = JSON.parseObject(jsonObject.getString("_source")); mpInfo.putAll(JSON.parseObject(jsonObject.getString("_source"),Map.class)); //mpInfo.put("birthday",DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",JSON.parseObject(jsonObject.getString("_source")).getDate("birthday"))); if(mpInfo.containsKey("birthday")){ Date date = source.getDate("birthday"); if(date!=null){ mpInfo.put("birthday",DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",date)); mpInfo.put("age",DateUtils.getAge(date)); } }else{ mpInfo.put("birthday",""); mpInfo.put("age",""); } map.put("custInfo",mpInfo); Map query =new HashMap(); query.put("indid1",indid); HttpEntity entity = new NStringEntity(EsJsonUtil.QuerygetMust(query), ContentType.APPLICATION_JSON); response= restClient.performRequest("GET", "/shanglifeecif.indrelationship/_search",Collections.emptyMap(),entity); result = EntityUtils.toString(response.getEntity()); jsonObject = JSON.parseObject(result); JSONObject hitsobject = (JSONObject) jsonObject.get("hits"); JSONArray array = JSON.parseArray(hitsobject.get("hits").toString()); List relationship = new ArrayList<>(); for (int i = 0; i emptyMap(),entity); result = EntityUtils.toString(response.getEntity()); jsonObject = JSON.parseObject(result); hitsobject = (JSONObject) jsonObject.get("hits"); array = JSON.parseArray(hitsobject.get("hits").toString()); List insuranceclaimthread = new ArrayList<>(); for (int i = 0; i paramMap = new HashMap(); paramMap.put("pretty", "true"); Response response = restClient.performRequest("GET", "shanglifeecif.individual/default_type_/"+id, paramMap); String result = EntityUtils.toString(response.getEntity()); Map map = new HashMap(); JSONObject jsonObject = JSON.parseObject(result); Map mpInfo = new HashMap(); String indid = jsonObject.getString("_id"); mpInfo.put("id",indid); JSONObject source = JSON.parseObject(jsonObject.getString("_source")); mpInfo.putAll(JSON.parseObject(jsonObject.getString("_source"),Map.class)); //mpInfo.put("birthday",DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",JSON.parseObject(jsonObject.getString("_source")).getDate("birthday"))); if(mpInfo.containsKey("birthday")){ Date date = source.getDate("birthday"); if(date!=null){ mpInfo.put("birthday",DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",date)); mpInfo.put("age",DateUtils.getAge(date)); } }else{ mpInfo.put("birthday",""); mpInfo.put("age",""); } Map query =new HashMap(); query.put("applicantid",indid); HttpEntity entity = new NStringEntity(EsJsonUtil.QuerygetMust(query), ContentType.APPLICATION_JSON); response= restClient.performRequest("GET", "/shanglifeecif.insurancearrangement/_search",Collections.emptyMap(),entity); result = EntityUtils.toString(response.getEntity()); jsonObject = JSON.parseObject(result); JSONObject hitsobject = (JSONObject) jsonObject.get("hits"); JSONArray array = JSON.parseArray(hitsobject.get("hits").toString()); long prem = 0;//总保费 Map expectedData = new HashMap(); List edata = new ArrayList(); expectedData.put("name",""); Map actaulData = new HashMap(); List adata = new ArrayList(); actaulData.put("name",""); List xaxisData = new ArrayList(); long insureDay = 0; for (int i = 0; i emptyMap(),entity); result = EntityUtils.toString(response.getEntity()); jsonObject = JSON.parseObject(result); hitsobject = (JSONObject) jsonObject.get("hits"); array = JSON.parseArray(hitsobject.get("hits").toString()); List insuranceclaimthread = new ArrayList<>(); for (int i = 0; i