Authored by fangyeqing

ADD:add weight score service

@@ -2,11 +2,13 @@ package com.xkl; @@ -2,11 +2,13 @@ package com.xkl;
2 2
3 import org.springframework.boot.SpringApplication; 3 import org.springframework.boot.SpringApplication;
4 import org.springframework.boot.autoconfigure.SpringBootApplication; 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
  5 +import org.springframework.scheduling.annotation.EnableScheduling;
5 6
6 /** 7 /**
7 * Spring-Boot启动类 8 * Spring-Boot启动类
8 */ 9 */
9 @SpringBootApplication 10 @SpringBootApplication
  11 +@EnableScheduling
10 public class Application { 12 public class Application {
11 13
12 public static void main(String[] args) { 14 public static void main(String[] args) {
1 package com.xkl.config; 1 package com.xkl.config;
2 2
  3 +import com.xkl.domain.XklAmpReportMetaScoreStandardEntity;
  4 +
  5 +import java.util.HashMap;
  6 +import java.util.Map;
  7 +
3 /** 8 /**
4 * 常量 9 * 常量
5 */ 10 */
6 -public class Constants { 11 +public interface Constants {
7 12
8 /** 13 /**
9 * 存储当前登录用户id的字段名 14 * 存储当前登录用户id的字段名
10 */ 15 */
11 - public static final String CURRENT_USER_ID = "CURRENT_USER_ID"; 16 + String CURRENT_USER_ID = "CURRENT_USER_ID";
12 17
13 /** 18 /**
14 * token有效期(小时) 19 * token有效期(小时)
15 */ 20 */
16 - public static final int TOKEN_EXPIRES_HOUR = 72; 21 + int TOKEN_EXPIRES_HOUR = 72;
17 22
18 /** 23 /**
19 * 存放Authorization的header字段 24 * 存放Authorization的header字段
20 */ 25 */
21 - public static final String AUTHORIZATION = "authorization"; 26 + String AUTHORIZATION = "authorization";
22 27
  28 + /**
  29 + * 单项打分标准
  30 + */
  31 + Map<Integer,XklAmpReportMetaScoreStandardEntity> scoreMap=new HashMap<>();
  32 +
  33 + /**
  34 + * 综合加权标准
  35 + */
  36 + Map<Integer,Integer> weightedScoreMap=new HashMap<Integer,Integer>(){
  37 + {
  38 + put(2,10);
  39 + put(3,6);
  40 + put(4,4);
  41 + put(5,7);
  42 + put(6,3);
  43 + put(7,10);
  44 + put(8,10);
  45 + put(9,6);
  46 + put(10,4);
  47 + put(11,2);
  48 + put(12,4);
  49 + put(13,5);
  50 + put(14,5);
  51 + put(15,6);
  52 + put(16,4);
  53 + put(17,6);
  54 + put(18,2);
  55 + put(19,6);
  56 + }
  57 + };
23 } 58 }
  1 +package com.xkl.config;
  2 +
  3 +import com.xkl.domain.XklAmpReportMetaScoreStandardEntity;
  4 +import com.xkl.repository.XklAmpReportMetaScoreStandardRespository;
  5 +import lombok.extern.apachecommons.CommonsLog;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.scheduling.annotation.Scheduled;
  8 +import org.springframework.stereotype.Component;
  9 +
  10 +import java.util.Iterator;
  11 +
  12 +
  13 +/**
  14 + * Created by win7 on 2016/11/21.
  15 + * 定时任务读取打分标准
  16 + */
  17 +@Component
  18 +@CommonsLog
  19 +public class ScheduledTask {
  20 + @Autowired
  21 + private XklAmpReportMetaScoreStandardRespository scoreStandardRespository;
  22 +
  23 + @Scheduled(initialDelay = 0,fixedRate = 24*60*60*1000)
  24 + public void getTableMap(){
  25 + log.info("Load ScoreStandard Table");
  26 + Iterator<XklAmpReportMetaScoreStandardEntity> it=scoreStandardRespository.findAll().iterator();
  27 + while(it.hasNext()){
  28 + XklAmpReportMetaScoreStandardEntity scoreStandard=it.next();
  29 + Constants.scoreMap.put(scoreStandard.getItemId(),scoreStandard);
  30 + }
  31 + }
  32 +}
@@ -5,11 +5,13 @@ import com.wordnik.swagger.annotations.ApiImplicitParams; @@ -5,11 +5,13 @@ import com.wordnik.swagger.annotations.ApiImplicitParams;
5 import com.wordnik.swagger.annotations.ApiOperation; 5 import com.wordnik.swagger.annotations.ApiOperation;
6 import com.xkl.authorization.annotation.Authorization; 6 import com.xkl.authorization.annotation.Authorization;
7 import com.xkl.authorization.annotation.CurrentUser; 7 import com.xkl.authorization.annotation.CurrentUser;
8 -import com.xkl.domain.User;  
9 -import com.xkl.domain.XklAmpReportEntity;  
10 -import com.xkl.domain.XklMemberEntity; 8 +import com.xkl.config.Constants;
  9 +import com.xkl.domain.*;
11 import com.xkl.model.ResultModel; 10 import com.xkl.model.ResultModel;
  11 +import com.xkl.repository.XklAmpReportDetailRespository;
  12 +import com.xkl.repository.XklAmpReportHealthScoreRespository;
12 import com.xkl.repository.XklAmpReportRespository; 13 import com.xkl.repository.XklAmpReportRespository;
  14 +import com.xkl.service.IScoreService;
13 import org.springframework.beans.factory.annotation.Autowired; 15 import org.springframework.beans.factory.annotation.Autowired;
14 import org.springframework.http.HttpStatus; 16 import org.springframework.http.HttpStatus;
15 import org.springframework.http.ResponseEntity; 17 import org.springframework.http.ResponseEntity;
@@ -19,7 +21,8 @@ import org.springframework.web.bind.annotation.RequestParam; @@ -19,7 +21,8 @@ import org.springframework.web.bind.annotation.RequestParam;
19 import org.springframework.web.bind.annotation.RestController; 21 import org.springframework.web.bind.annotation.RestController;
20 22
21 import javax.servlet.http.HttpServletRequest; 23 import javax.servlet.http.HttpServletRequest;
22 -import java.util.List; 24 +import java.util.*;
  25 +import java.util.function.DoubleToIntFunction;
23 26
24 /** 27 /**
25 * Created by win7 on 2016/11/20. 28 * Created by win7 on 2016/11/20.
@@ -29,18 +32,41 @@ import java.util.List; @@ -29,18 +32,41 @@ import java.util.List;
29 public class ReportController { 32 public class ReportController {
30 @Autowired 33 @Autowired
31 private XklAmpReportRespository xklAmpReportRespository; 34 private XklAmpReportRespository xklAmpReportRespository;
  35 + @Autowired
  36 + private XklAmpReportDetailRespository xklAmpReportDetailRespository;
32 37
33 - @RequestMapping(method = RequestMethod.GET)  
34 - @Authorization 38 + private XklAmpReportHealthScoreRespository xklAmpReportHealthScoreRespository;
  39 +
  40 + @Autowired
  41 + private IScoreService scoreService;
  42 +
  43 + @RequestMapping(value="/list",method = RequestMethod.GET)
  44 + //@Authorization
35 //@Sign 45 //@Sign
36 @ApiOperation(value = "体检报告列表查询接口") 46 @ApiOperation(value = "体检报告列表查询接口")
37 @ApiImplicitParams({ 47 @ApiImplicitParams({
38 @ApiImplicitParam(name = "authorization", value = "请输入登录返回信息:userId_tokens", required = true, dataType = "string", paramType = "header"), 48 @ApiImplicitParam(name = "authorization", value = "请输入登录返回信息:userId_tokens", required = true, dataType = "string", paramType = "header"),
39 }) 49 })
40 - public ResponseEntity<ResultModel> getUserInfo(HttpServletRequest request, @CurrentUser User user, 50 + public ResponseEntity<ResultModel> getReportList(HttpServletRequest request, @CurrentUser User user,
41 @RequestParam String sign, @RequestParam long t, @RequestParam int type) { 51 @RequestParam String sign, @RequestParam long t, @RequestParam int type) {
42 long member_id=user.getMember_id(); 52 long member_id=user.getMember_id();
43 List<XklAmpReportEntity> xklAmpReportEntity=xklAmpReportRespository.findByMemberId(member_id); 53 List<XklAmpReportEntity> xklAmpReportEntity=xklAmpReportRespository.findByMemberId(member_id);
44 return new ResponseEntity<>(ResultModel.ok(xklAmpReportEntity), HttpStatus.OK); 54 return new ResponseEntity<>(ResultModel.ok(xklAmpReportEntity), HttpStatus.OK);
45 } 55 }
  56 +
  57 + @RequestMapping(value="/score",method = RequestMethod.GET)
  58 + @Authorization
  59 + //@Sign
  60 + @ApiOperation(value = "健康评分接口")
  61 + @ApiImplicitParams({
  62 + @ApiImplicitParam(name = "authorization", value = "请输入登录返回信息:userId_tokens", required = true, dataType = "string", paramType = "header"),
  63 + })
  64 + public ResponseEntity<ResultModel> getReportScore(HttpServletRequest request, @CurrentUser User user,@RequestParam long report_id,
  65 + @RequestParam String sign, @RequestParam long t, @RequestParam int type) {
  66 + scoreService.getScore(report_id);
  67 + return new ResponseEntity<>(ResultModel.ok(), HttpStatus.OK);
  68 + }
  69 +
  70 +
  71 +
46 } 72 }
@@ -2,13 +2,10 @@ package com.xkl.domain; @@ -2,13 +2,10 @@ package com.xkl.domain;
2 2
3 import lombok.Data; 3 import lombok.Data;
4 4
5 -import javax.persistence.Column;  
6 -import javax.persistence.Entity;  
7 -import javax.persistence.Id;  
8 -import javax.persistence.Table; 5 +import javax.persistence.*;
9 6
10 /** 7 /**
11 - * 用户数据的domain类 8 + * 用户登录表
12 */ 9 */
13 @Entity 10 @Entity
14 @Table(name = "xkl_local_account") 11 @Table(name = "xkl_local_account")
@@ -24,6 +21,7 @@ public class User { @@ -24,6 +21,7 @@ public class User {
24 21
25 //用户id 22 //用户id
26 @Id 23 @Id
  24 + @GeneratedValue
27 @Column(name = "id") 25 @Column(name = "id")
28 private long id; 26 private long id;
29 27
  1 +package com.xkl.domain;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import javax.persistence.*;
  6 +
  7 +/**
  8 + * Created by win7 on 2016/11/21.
  9 + * report详情
  10 + */
  11 +@Data
  12 +@Entity
  13 +@Table(name = "xkl_amp_report_detail", schema = "hanhe_test", catalog = "")
  14 +public class XklAmpReportDetailEntity {
  15 + @Id
  16 + @GeneratedValue
  17 + @Column(name = "id")
  18 + private long id;
  19 + @Basic
  20 + @Column(name = "report_id")
  21 + private long reportId;
  22 + @Basic
  23 + @Column(name = "item_id")
  24 + private int itemId;
  25 + @Basic
  26 + @Column(name = "item_value")
  27 + private double itemValue;
  28 + @Basic
  29 + @Column(name = "status")
  30 + private int status;
  31 +}
@@ -7,6 +7,7 @@ import java.io.Serializable; @@ -7,6 +7,7 @@ import java.io.Serializable;
7 7
8 /** 8 /**
9 * Created by win7 on 2016/11/20. 9 * Created by win7 on 2016/11/20.
  10 + * report列表
10 */ 11 */
11 @Data 12 @Data
12 @Entity 13 @Entity
  1 +package com.xkl.domain;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import javax.persistence.*;
  6 +
  7 +/**
  8 + * Created by win7 on 2016/11/21.
  9 + * 每个体检大类的打分
  10 + */
  11 +@Data
  12 +@Entity
  13 +@Table(name = "xkl_amp_report_health_scroe", schema = "hanhe_test", catalog = "")
  14 +public class XklAmpReportHealthScoreEntity {
  15 + @Id
  16 + @GeneratedValue
  17 + @Column(name = "id")
  18 + private long id;
  19 + @Basic
  20 + @Column(name = "report_id")
  21 + private long reportId;
  22 + @Basic
  23 + @Column(name = "type")
  24 + private int type;
  25 + @Basic
  26 + @Column(name = "type_health_score")
  27 + private double typeHealthScore;
  28 +
  29 +}
  1 +package com.xkl.domain;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import javax.persistence.*;
  6 +
  7 +/**
  8 + * Created by win7 on 2016/11/21.
  9 + * 体检结果的解释
  10 + */
  11 +@Data
  12 +@Entity
  13 +@Table(name = "xkl_amp_report_meta_items", schema = "hanhe_test", catalog = "")
  14 +public class XklAmpReportMetaItemsEntity {
  15 + private int id;
  16 + private int itmeId;
  17 + private String type;
  18 + private String title;
  19 + private double standardLowMale;
  20 + private double standardHighMale;
  21 + private double standardLowFemale;
  22 + private double standardHighFemale;
  23 + private String explainLow;
  24 + private String explainHigh;
  25 + private String explainNormal;
  26 +
  27 + @Id
  28 + @Column(name = "id")
  29 + public int getId() {
  30 + return id;
  31 + }
  32 +
  33 + public void setId(int id) {
  34 + this.id = id;
  35 + }
  36 +
  37 + @Basic
  38 + @Column(name = "itme_id")
  39 + public int getItmeId() {
  40 + return itmeId;
  41 + }
  42 +
  43 + public void setItmeId(int itmeId) {
  44 + this.itmeId = itmeId;
  45 + }
  46 +
  47 + @Basic
  48 + @Column(name = "type")
  49 + public String getType() {
  50 + return type;
  51 + }
  52 +
  53 + public void setType(String type) {
  54 + this.type = type;
  55 + }
  56 +
  57 + @Basic
  58 + @Column(name = "title")
  59 + public String getTitle() {
  60 + return title;
  61 + }
  62 +
  63 + public void setTitle(String title) {
  64 + this.title = title;
  65 + }
  66 +
  67 + @Basic
  68 + @Column(name = "standard_low_male")
  69 + public double getStandardLowMale() {
  70 + return standardLowMale;
  71 + }
  72 +
  73 + public void setStandardLowMale(double standardLowMale) {
  74 + this.standardLowMale = standardLowMale;
  75 + }
  76 +
  77 + @Basic
  78 + @Column(name = "standard_high_male")
  79 + public double getStandardHighMale() {
  80 + return standardHighMale;
  81 + }
  82 +
  83 + public void setStandardHighMale(double standardHighMale) {
  84 + this.standardHighMale = standardHighMale;
  85 + }
  86 +
  87 + @Basic
  88 + @Column(name = "standard_low_female")
  89 + public double getStandardLowFemale() {
  90 + return standardLowFemale;
  91 + }
  92 +
  93 + public void setStandardLowFemale(double standardLowFemale) {
  94 + this.standardLowFemale = standardLowFemale;
  95 + }
  96 +
  97 + @Basic
  98 + @Column(name = "standard_high_female")
  99 + public double getStandardHighFemale() {
  100 + return standardHighFemale;
  101 + }
  102 +
  103 + public void setStandardHighFemale(double standardHighFemale) {
  104 + this.standardHighFemale = standardHighFemale;
  105 + }
  106 +
  107 + @Basic
  108 + @Column(name = "explain_low")
  109 + public String getExplainLow() {
  110 + return explainLow;
  111 + }
  112 +
  113 + public void setExplainLow(String explainLow) {
  114 + this.explainLow = explainLow;
  115 + }
  116 +
  117 + @Basic
  118 + @Column(name = "explain_high")
  119 + public String getExplainHigh() {
  120 + return explainHigh;
  121 + }
  122 +
  123 + public void setExplainHigh(String explainHigh) {
  124 + this.explainHigh = explainHigh;
  125 + }
  126 +
  127 + @Basic
  128 + @Column(name = "explain_normal")
  129 + public String getExplainNormal() {
  130 + return explainNormal;
  131 + }
  132 +
  133 + public void setExplainNormal(String explainNormal) {
  134 + this.explainNormal = explainNormal;
  135 + }
  136 +
  137 + @Override
  138 + public boolean equals(Object o) {
  139 + if (this == o) return true;
  140 + if (o == null || getClass() != o.getClass()) return false;
  141 +
  142 + XklAmpReportMetaItemsEntity that = (XklAmpReportMetaItemsEntity) o;
  143 +
  144 + if (id != that.id) return false;
  145 + if (itmeId != that.itmeId) return false;
  146 + if (Double.compare(that.standardLowMale, standardLowMale) != 0) return false;
  147 + if (Double.compare(that.standardHighMale, standardHighMale) != 0) return false;
  148 + if (Double.compare(that.standardLowFemale, standardLowFemale) != 0) return false;
  149 + if (Double.compare(that.standardHighFemale, standardHighFemale) != 0) return false;
  150 + if (type != null ? !type.equals(that.type) : that.type != null) return false;
  151 + if (title != null ? !title.equals(that.title) : that.title != null) return false;
  152 + if (explainLow != null ? !explainLow.equals(that.explainLow) : that.explainLow != null) return false;
  153 + if (explainHigh != null ? !explainHigh.equals(that.explainHigh) : that.explainHigh != null) return false;
  154 + if (explainNormal != null ? !explainNormal.equals(that.explainNormal) : that.explainNormal != null)
  155 + return false;
  156 +
  157 + return true;
  158 + }
  159 +
  160 + @Override
  161 + public int hashCode() {
  162 + int result;
  163 + long temp;
  164 + result = id;
  165 + result = 31 * result + itmeId;
  166 + result = 31 * result + (type != null ? type.hashCode() : 0);
  167 + result = 31 * result + (title != null ? title.hashCode() : 0);
  168 + temp = Double.doubleToLongBits(standardLowMale);
  169 + result = 31 * result + (int) (temp ^ (temp >>> 32));
  170 + temp = Double.doubleToLongBits(standardHighMale);
  171 + result = 31 * result + (int) (temp ^ (temp >>> 32));
  172 + temp = Double.doubleToLongBits(standardLowFemale);
  173 + result = 31 * result + (int) (temp ^ (temp >>> 32));
  174 + temp = Double.doubleToLongBits(standardHighFemale);
  175 + result = 31 * result + (int) (temp ^ (temp >>> 32));
  176 + result = 31 * result + (explainLow != null ? explainLow.hashCode() : 0);
  177 + result = 31 * result + (explainHigh != null ? explainHigh.hashCode() : 0);
  178 + result = 31 * result + (explainNormal != null ? explainNormal.hashCode() : 0);
  179 + return result;
  180 + }
  181 +}
  1 +package com.xkl.domain;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import javax.persistence.*;
  6 +
  7 +/**
  8 + * Created by win7 on 2016/11/21.
  9 + * 打分标准
  10 + */
  11 +@Data
  12 +@Entity
  13 +@Table(name = "xkl_amp_report_meta_score_standard", schema = "hanhe_test", catalog = "")
  14 +public class XklAmpReportMetaScoreStandardEntity {
  15 + @Id
  16 + @GeneratedValue
  17 + @Column(name = "id")
  18 + private long id;
  19 + @Basic
  20 + @Column(name = "item_id")
  21 + private int itemId;
  22 + @Basic
  23 + @Column(name = "item_name")
  24 + private String itemName;
  25 + @Basic
  26 + @Column(name = "item_type")
  27 + private int itemType;
  28 + @Basic
  29 + @Column(name = "interval1_min")
  30 + private double interval1Min;
  31 + @Basic
  32 + @Column(name = "interval1_max")
  33 + private double interval1Max;
  34 + @Basic
  35 + @Column(name = "interval1_score")
  36 + private double interval1Score;
  37 + @Basic
  38 + @Column(name = "interval2_min")
  39 + private double interval2Min;
  40 + @Basic
  41 + @Column(name = "interval2_max")
  42 + private double interval2Max;
  43 + @Basic
  44 + @Column(name = "interval2_score")
  45 + private double interval2Score;
  46 + @Basic
  47 + @Column(name = "interval3_min")
  48 + private double interval3Min;
  49 + @Basic
  50 + @Column(name = "interval3_max")
  51 + private double interval3Max;
  52 + @Basic
  53 + @Column(name = "interval3_score")
  54 + private double interval3Score;
  55 + @Basic
  56 + @Column(name = "interval4_min")
  57 + private double interval4Min;
  58 + @Basic
  59 + @Column(name = "interval4_max")
  60 + private double interval4Max;
  61 + @Basic
  62 + @Column(name = "interval4_score")
  63 + private double interval4Score;
  64 + @Basic
  65 + @Column(name = "interval5_min")
  66 + private double interval5Min;
  67 + @Basic
  68 + @Column(name = "interval5_max")
  69 + private double interval5Max;
  70 + @Basic
  71 + @Column(name = "interval5_score")
  72 + private double interval5Score;
  73 +
  74 + /**
  75 + * 由单项体检的值判断得分
  76 + * @param score
  77 + * @return
  78 + */
  79 + public double getScore(double score){
  80 + double result = 0;
  81 + if(score>interval1Min && score<interval1Max)
  82 + result = interval1Score;
  83 + else if(score>interval2Min && score<interval2Max)
  84 + result = interval2Score;
  85 + else if(score>interval3Min && score<interval3Max)
  86 + result = interval3Score;
  87 + else if(score>interval4Min && score<interval4Max)
  88 + result = interval4Score;
  89 + else if(score>interval5Min && score<interval5Max)
  90 + result = interval5Score;
  91 + return result;
  92 + }
  93 +}
@@ -6,6 +6,7 @@ import javax.persistence.*; @@ -6,6 +6,7 @@ import javax.persistence.*;
6 6
7 /** 7 /**
8 * Created by win7 on 2016/11/20. 8 * Created by win7 on 2016/11/20.
  9 + * 每种访问接口形式的key
9 */ 10 */
10 @Data 11 @Data
11 @Entity 12 @Entity
@@ -8,12 +8,14 @@ import java.sql.Date; @@ -8,12 +8,14 @@ import java.sql.Date;
8 8
9 /** 9 /**
10 * Created by win7 on 2016/11/20. 10 * Created by win7 on 2016/11/20.
  11 + * 用户信息表
11 */ 12 */
12 @Data 13 @Data
13 @Entity 14 @Entity
14 @Table(name = "xkl_member", schema = "hanhe_test", catalog = "") 15 @Table(name = "xkl_member", schema = "hanhe_test", catalog = "")
15 public class XklMemberEntity { 16 public class XklMemberEntity {
16 @Id 17 @Id
  18 + @GeneratedValue
17 @Column(name = "id") 19 @Column(name = "id")
18 private long id; 20 private long id;
19 @Basic 21 @Basic
  1 +package com.xkl.repository;
  2 +
  3 +import com.xkl.domain.XklAmpReportDetailEntity;
  4 +import com.xkl.domain.XklAmpReportHealthScoreEntity;
  5 +import org.springframework.data.repository.CrudRepository;
  6 +
  7 +import java.util.List;
  8 +
  9 +/**
  10 + * Created by win7 on 2016/11/20.
  11 + */
  12 +public interface XklAmpReportDetailRespository extends CrudRepository<XklAmpReportDetailEntity, Long> {
  13 + //item_id
  14 + public List<XklAmpReportDetailEntity> findByReportIdAndItemId(long report_id, long item_id);
  15 +
  16 + public List<XklAmpReportDetailEntity> findAllByReportId(long report_id);
  17 +}
  1 +package com.xkl.repository;
  2 +
  3 +import com.xkl.domain.XklAmpReportHealthScoreEntity;
  4 +import com.xkl.domain.XklAmpReportMetaScoreStandardEntity;
  5 +import org.springframework.data.repository.CrudRepository;
  6 +
  7 +import java.util.List;
  8 +
  9 +/**
  10 + * Created by win7 on 2016/11/20.
  11 + */
  12 +public interface XklAmpReportHealthScoreRespository extends CrudRepository<XklAmpReportHealthScoreEntity, Long> {
  13 + //item_id
  14 + public List<XklAmpReportHealthScoreEntity> findByReportIdAndType(long report_id,int type);
  15 +
  16 + //public boolean existsByReportId(long report_id);
  17 +
  18 + //public void saveByReportId(List<XklAmpReportHealthScoreEntity> list,long report_id);
  19 +
  20 +
  21 +
  22 +}
  1 +package com.xkl.repository;
  2 +
  3 +import com.xkl.domain.XklAmpReportEntity;
  4 +import com.xkl.domain.XklAmpReportMetaScoreStandardEntity;
  5 +import org.springframework.data.repository.CrudRepository;
  6 +
  7 +import java.util.List;
  8 +
  9 +/**
  10 + * Created by win7 on 2016/11/20.
  11 + */
  12 +public interface XklAmpReportMetaScoreStandardRespository extends CrudRepository<XklAmpReportMetaScoreStandardEntity, Long> {
  13 + //item_id
  14 + public List<XklAmpReportMetaScoreStandardEntity> findByItemId(long member_id);
  15 +}
  1 +package com.xkl.service;
  2 +
  3 +/**
  4 + * Created by win7 on 2016/11/21.
  5 + */
  6 +public interface IScoreService {
  7 + public void getScore(long report_id);
  8 +}
  1 +package com.xkl.service;
  2 +
  3 +import com.xkl.config.Constants;
  4 +import com.xkl.domain.XklAmpReportDetailEntity;
  5 +import com.xkl.domain.XklAmpReportEntity;
  6 +import com.xkl.domain.XklAmpReportHealthScoreEntity;
  7 +import com.xkl.domain.XklAmpReportMetaScoreStandardEntity;
  8 +import com.xkl.repository.XklAmpReportDetailRespository;
  9 +import com.xkl.repository.XklAmpReportHealthScoreRespository;
  10 +import com.xkl.repository.XklAmpReportRespository;
  11 +import lombok.extern.apachecommons.CommonsLog;
  12 +import org.springframework.beans.factory.annotation.Autowired;
  13 +import org.springframework.stereotype.Service;
  14 +
  15 +import java.util.*;
  16 +
  17 +/**
  18 + * Created by win7 on 2016/11/21.
  19 + */
  20 +@Service
  21 +@CommonsLog
  22 +public class ScoreServiceImpl implements IScoreService,Constants{
  23 + @Autowired
  24 + private XklAmpReportRespository xklAmpReportRespository;
  25 + @Autowired
  26 + private XklAmpReportDetailRespository xklAmpReportDetailRespository;
  27 + @Autowired
  28 + private XklAmpReportHealthScoreRespository xklAmpReportHealthScoreRespository;
  29 +
  30 + @Override
  31 + public void getScore(long report_id) {
  32 + Map<Integer,Double> typeScoreMap=new HashMap<>();//记录各大项打分的Map
  33 +
  34 + List<XklAmpReportDetailEntity> reportDetailList=xklAmpReportDetailRespository.findAllByReportId(report_id);
  35 +
  36 + for(XklAmpReportDetailEntity detail:reportDetailList){
  37 +
  38 + int item_id=detail.getItemId();
  39 + XklAmpReportMetaScoreStandardEntity scoreStandard= scoreMap.get(item_id);//从定时加载的打分map中取出该体检小项
  40 +
  41 + if(scoreStandard!=null) {
  42 + double score = scoreStandard.getScore(detail.getItemValue());
  43 + int item_type = scoreStandard.getItemType();
  44 +
  45 + if(typeScoreMap.containsKey(item_type)){//将分类中的每个大项中分数相加
  46 + double type_score=typeScoreMap.get(item_type)+score;
  47 + typeScoreMap.put(item_type,type_score);
  48 + }else{
  49 + typeScoreMap.put(item_type,score);
  50 + }
  51 + }
  52 +
  53 + }
  54 + /**
  55 + * 循环每类得分的typeScoreMap,计算总得分
  56 + */
  57 + double finalScore=0;
  58 + List<XklAmpReportHealthScoreEntity> saveScoreList=new ArrayList<>();
  59 +
  60 + Iterator<Map.Entry<Integer,Double>> it=typeScoreMap.entrySet().iterator();
  61 + while(it.hasNext()){
  62 + Map.Entry<Integer, Double> entry = it.next();
  63 + int item_type = entry.getKey();
  64 + double score = entry.getValue();
  65 +
  66 + XklAmpReportHealthScoreEntity scoreEntity=new XklAmpReportHealthScoreEntity();
  67 + scoreEntity.setReportId(report_id);
  68 + scoreEntity.setType(item_type);
  69 + scoreEntity.setTypeHealthScore(score);
  70 + saveScoreList.add(scoreEntity);
  71 +
  72 + double weightedScore=weightedScoreMap.get(item_type);
  73 + finalScore += weightedScore*(score/100);
  74 + }
  75 + /**
  76 + * 每类得分存入xkl_amp_report_health_scroe
  77 + * 总得分存入xkl_amp_report
  78 + */
  79 + if(saveScoreList!=null&&saveScoreList.size()>0)
  80 + xklAmpReportHealthScoreRespository.save(saveScoreList);
  81 +
  82 + XklAmpReportEntity report=xklAmpReportRespository.findOne(report_id);
  83 + if(report!=null){
  84 + report.setScore(finalScore);
  85 + xklAmpReportRespository.save(report);
  86 + }
  87 + }
  88 +}