|  | @ -0,0 +1,150 @@
 | 
												
													
														
															|  | 
 |  | package com.yihu.figure.controller.patient;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | import com.yihu.figure.controller.BaseController;
 | 
												
													
														
															|  | 
 |  | import com.yihu.figure.model.patient.portrait.UserPortrait;
 | 
												
													
														
															|  | 
 |  | import com.yihu.figure.service.PortraitService;
 | 
												
													
														
															|  | 
 |  | import com.yihu.figure.util.DateUtil;
 | 
												
													
														
															|  | 
 |  | import io.swagger.annotations.Api;
 | 
												
													
														
															|  | 
 |  | import io.swagger.annotations.ApiOperation;
 | 
												
													
														
															|  | 
 |  | import io.swagger.annotations.ApiParam;
 | 
												
													
														
															|  | 
 |  | import org.json.JSONObject;
 | 
												
													
														
															|  | 
 |  | import org.springframework.beans.factory.annotation.Autowired;
 | 
												
													
														
															|  | 
 |  | import org.springframework.http.MediaType;
 | 
												
													
														
															|  | 
 |  | import org.springframework.web.bind.annotation.RequestMapping;
 | 
												
													
														
															|  | 
 |  | import org.springframework.web.bind.annotation.RequestMethod;
 | 
												
													
														
															|  | 
 |  | import org.springframework.web.bind.annotation.RequestParam;
 | 
												
													
														
															|  | 
 |  | import org.springframework.web.bind.annotation.RestController;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | import java.math.BigDecimal;
 | 
												
													
														
															|  | 
 |  | import java.util.HashMap;
 | 
												
													
														
															|  | 
 |  | import java.util.List;
 | 
												
													
														
															|  | 
 |  | import java.util.Map;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | /**
 | 
												
													
														
															|  | 
 |  |  * Created by chenweida on 2017/3/8.
 | 
												
													
														
															|  | 
 |  |  * 用户标签
 | 
												
													
														
															|  | 
 |  |  */
 | 
												
													
														
															|  | 
 |  | @RestController
 | 
												
													
														
															|  | 
 |  | @RequestMapping(value = "/portrait", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
 | 
												
													
														
															|  | 
 |  | @Api(description = "用户标签")
 | 
												
													
														
															|  | 
 |  | public class PortraitController extends BaseController {
 | 
												
													
														
															|  | 
 |  |     @Autowired
 | 
												
													
														
															|  | 
 |  |     private PortraitService portraitService;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     @ApiOperation(value = " 生成用户标签")
 | 
												
													
														
															|  | 
 |  |     @RequestMapping(value = "newPortrait", method = RequestMethod.POST)
 | 
												
													
														
															|  | 
 |  |     public String newPortrait(
 | 
												
													
														
															|  | 
 |  |             @ApiParam(name = "category", value = "标签父类", required = true) @RequestParam(value = "category", required = true) String category,
 | 
												
													
														
															|  | 
 |  |             @ApiParam(name = "subCategory", value = "标签子类", required = true) @RequestParam(value = "subCategory", required = true) String subCategory,
 | 
												
													
														
															|  | 
 |  |             @ApiParam(name = "value", value = "标签值", required = false) @RequestParam(value = "value", required = false) String value) {
 | 
												
													
														
															|  | 
 |  |         try {
 | 
												
													
														
															|  | 
 |  |             portraitService.newPortrait(category, subCategory);
 | 
												
													
														
															|  | 
 |  |             return success("成功");
 | 
												
													
														
															|  | 
 |  |         } catch (Exception e) {
 | 
												
													
														
															|  | 
 |  |             error(e);
 | 
												
													
														
															|  | 
 |  |             return invalidUserException(e, -1, "启动失败:" + e.getMessage());
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     @ApiOperation(value = "获取疾病-所在区域")
 | 
												
													
														
															|  | 
 |  |     @RequestMapping(value = "getPortraits1002001", method = RequestMethod.GET)
 | 
												
													
														
															|  | 
 |  |     public String getPortraits1002001(
 | 
												
													
														
															|  | 
 |  |             @ApiParam(name = "value", value = "疾病名称(糖尿病,高血压)", required = true) @RequestParam(value = "value", required = true) String value) {
 | 
												
													
														
															|  | 
 |  |         try {
 | 
												
													
														
															|  | 
 |  |             Map<String, Integer> data = portraitService.getPortraits("1001005", value);
 | 
												
													
														
															|  | 
 |  |             Map<String, String> returnData = new HashMap<>();
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |             for (Map.Entry<String, Integer> one : data.entrySet()) {
 | 
												
													
														
															|  | 
 |  |                 if (!one.getKey().equals("allSize")) {
 | 
												
													
														
															|  | 
 |  |                     returnData.put(one.getKey(), round(one.getValue(), data.get("allSize"), 2) + "");
 | 
												
													
														
															|  | 
 |  |                 }
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             return write(200, "获取成功!", "data", returnData);
 | 
												
													
														
															|  | 
 |  |         } catch (Exception e) {
 | 
												
													
														
															|  | 
 |  |             error(e);
 | 
												
													
														
															|  | 
 |  |             return invalidUserException(e, -1, "启动失败:" + e.getMessage());
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     @ApiOperation(value = "获取疾病-所在年龄")
 | 
												
													
														
															|  | 
 |  |     @RequestMapping(value = "getPortraits1002003", method = RequestMethod.GET)
 | 
												
													
														
															|  | 
 |  |     public String getPortraits1002003(
 | 
												
													
														
															|  | 
 |  |             @ApiParam(name = "value", value = "疾病名称(糖尿病,高血压)", required = true) @RequestParam(value = "value", required = true) String value) {
 | 
												
													
														
															|  | 
 |  |         try {
 | 
												
													
														
															|  | 
 |  |             Map<String, Integer> data = portraitService.getPortraits("1001003", value);
 | 
												
													
														
															|  | 
 |  |             Map<String, String> returnData = new HashMap<>();
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |             for (Map.Entry<String, Integer> one : data.entrySet()) {
 | 
												
													
														
															|  | 
 |  |                 if (!one.getKey().equals("allSize")) {
 | 
												
													
														
															|  | 
 |  |                     returnData.put(one.getKey(), round(one.getValue(), data.get("allSize"), 2) + "");
 | 
												
													
														
															|  | 
 |  |                 }
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             return write(200, "获取成功!", "data", returnData);
 | 
												
													
														
															|  | 
 |  |         } catch (Exception e) {
 | 
												
													
														
															|  | 
 |  |             error(e);
 | 
												
													
														
															|  | 
 |  |             return invalidUserException(e, -1, "启动失败:" + e.getMessage());
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     @ApiOperation(value = "获取疾病-所在性别")
 | 
												
													
														
															|  | 
 |  |     @RequestMapping(value = "getPortraits1001001", method = RequestMethod.GET)
 | 
												
													
														
															|  | 
 |  |     public String getPortraits1001001(
 | 
												
													
														
															|  | 
 |  |             @ApiParam(name = "value", value = "疾病名称(糖尿病,高血压)", required = true) @RequestParam(value = "value", required = true) String value) {
 | 
												
													
														
															|  | 
 |  |         try {
 | 
												
													
														
															|  | 
 |  |             Map<String, Integer> data = portraitService.getPortraits("1001001", value);
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |             Map<String, String> returnData = new HashMap<>();
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |             for (Map.Entry<String, Integer> one : data.entrySet()) {
 | 
												
													
														
															|  | 
 |  |                 if (!one.getKey().equals("allSize")) {
 | 
												
													
														
															|  | 
 |  |                     returnData.put(one.getKey(), round(one.getValue(), data.get("allSize"), 2) + "");
 | 
												
													
														
															|  | 
 |  |                 }
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             return write(200, "获取成功!", "data", returnData);
 | 
												
													
														
															|  | 
 |  |         } catch (Exception e) {
 | 
												
													
														
															|  | 
 |  |             error(e);
 | 
												
													
														
															|  | 
 |  |             return invalidUserException(e, -1, "启动失败:" + e.getMessage());
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     @ApiOperation(value = "获取一级的标签信息")
 | 
												
													
														
															|  | 
 |  |     @RequestMapping(value = "getPortraitsLevel1", method = RequestMethod.GET)
 | 
												
													
														
															|  | 
 |  |     public String getPortraitsLevel1(
 | 
												
													
														
															|  | 
 |  |             @ApiParam(name = "key", value = "1 疾病 2 健康分布", required = true) @RequestParam(value = "key", required = true) String key) {
 | 
												
													
														
															|  | 
 |  |         try {
 | 
												
													
														
															|  | 
 |  |             Map<String, Integer> data = portraitService.getPortraitsLevel1(key);
 | 
												
													
														
															|  | 
 |  |             JSONObject return1 = new JSONObject();
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |             for (Map.Entry<String, Integer> one : data.entrySet()) {
 | 
												
													
														
															|  | 
 |  |                 if (!one.getKey().equals("allSize")) {
 | 
												
													
														
															|  | 
 |  |                     JSONObject return2 = new JSONObject();
 | 
												
													
														
															|  | 
 |  |                     return2.put("count", one.getValue());
 | 
												
													
														
															|  | 
 |  |                     return2.put("scale ", round(one.getValue(), data.get("allSize"), 2) + "");
 | 
												
													
														
															|  | 
 |  |                     return1.put(one.getKey(), return2);
 | 
												
													
														
															|  | 
 |  |                 }
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             return write(200, "获取成功!", "data", return1);
 | 
												
													
														
															|  | 
 |  |         } catch (Exception e) {
 | 
												
													
														
															|  | 
 |  |             error(e);
 | 
												
													
														
															|  | 
 |  |             return invalidUserException(e, -1, "启动失败:" + e.getMessage());
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     public static double round(Integer up, Integer down, int scale) {
 | 
												
													
														
															|  | 
 |  |         try {
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |             if (scale < 0) {
 | 
												
													
														
															|  | 
 |  |                 throw new IllegalArgumentException(
 | 
												
													
														
															|  | 
 |  |                         "The scale must be a positive integer or zero");
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             BigDecimal upB = new BigDecimal(up);
 | 
												
													
														
															|  | 
 |  |             BigDecimal downB = new BigDecimal(down);
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |             return upB.divide(downB, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
 | 
												
													
														
															|  | 
 |  |         } catch (Exception e) {
 | 
												
													
														
															|  | 
 |  |             return 0;
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | }
 |