|
@ -2,6 +2,7 @@
|
|
|
package com.yihu.wlyy.service.app.consult;
|
|
|
|
|
|
|
|
|
import com.yihu.wlyy.aop.ObserverRequired;
|
|
|
import com.yihu.wlyy.entity.consult.ConsultTeam;
|
|
|
import com.yihu.wlyy.entity.consult.Evaluate;
|
|
|
import com.yihu.wlyy.entity.consult.EvaluateLabel;
|
|
@ -49,12 +50,14 @@ public class EvaluateService extends BaseService {
|
|
|
public void saveByJson(String jsonData, String patient) {
|
|
|
JSONObject jsonObject = new JSONObject(jsonData);
|
|
|
String consult = jsonObject.getString("consult");
|
|
|
String remark = jsonObject.getString("remark");
|
|
|
ConsultTeam consultTeam = consultTeamService.findByCode(consult);
|
|
|
//评价的分数
|
|
|
JSONArray evaluateArray = jsonObject.getJSONArray("evaluate");
|
|
|
//标签
|
|
|
JSONArray labelArray = jsonObject.getJSONArray("label");
|
|
|
|
|
|
JSONArray doctorArray = jsonObject.getJSONArray("doctors");
|
|
|
|
|
|
List<Evaluate> evaluateList = null;
|
|
|
List<EvaluateLabel> evaluateLabelList = new ArrayList<>();
|
|
|
Map<String, List<Evaluate>> docEvaMap = new HashMap<>();
|
|
@ -85,8 +88,15 @@ public class EvaluateService extends BaseService {
|
|
|
evaluateLabel.setPatient(patient);
|
|
|
evaluateLabelList.add(evaluateLabel);
|
|
|
}
|
|
|
Map<String,JSONObject> doctorMap = new HashMap<>();
|
|
|
//生成医生信息
|
|
|
for(Object doctor : doctorArray){
|
|
|
JSONObject d = (JSONObject) doctor;
|
|
|
doctorMap.put((String)d.get("doctor"),d);
|
|
|
}
|
|
|
|
|
|
//计算单条得分
|
|
|
evaluateScoreC(docEvaMap, consult,remark);
|
|
|
evaluateScoreC(docEvaMap, consult,doctorMap);
|
|
|
this.save(docEvaMap);
|
|
|
evaluateLabelService.save(evaluateLabelList);
|
|
|
consultTeam.setEvaluate(1);
|
|
@ -101,10 +111,12 @@ public class EvaluateService extends BaseService {
|
|
|
public void updateByJson(String jsonData, String patient) {
|
|
|
JSONObject jsonObject = new JSONObject(jsonData);
|
|
|
String consult = jsonObject.getString("consult");
|
|
|
String doctors = jsonObject.getString("doctors");
|
|
|
if(StringUtils.isNotBlank(doctors)){
|
|
|
String doctor[] = doctors.split(",");
|
|
|
for(int i =0;i<doctor.length;i++){
|
|
|
JSONArray doctors = jsonObject.getJSONArray("doctors");
|
|
|
|
|
|
if(doctors!=null&&doctors.length()>0){
|
|
|
for(Object d:doctors){
|
|
|
JSONObject jd = (JSONObject) d;
|
|
|
String doctor = jd.getString("doctor");
|
|
|
//删除各类别分数
|
|
|
String delEvSql = " DELETE FROM wlyy_evaluate WHERE consult ='"+consult+"' AND doctor ='"+doctor+"'";
|
|
|
//删除分数
|
|
@ -156,9 +168,8 @@ public class EvaluateService extends BaseService {
|
|
|
return evaluates;
|
|
|
}
|
|
|
|
|
|
private void evaluateScoreC(Map<String, List<Evaluate>> docEvaMap, String consult,String remark) {
|
|
|
private void evaluateScoreC(Map<String, List<Evaluate>> docEvaMap, String consult,Map<String,JSONObject> doctorMap) {
|
|
|
for (String doctor : docEvaMap.keySet()) {
|
|
|
List<Evaluate> evaluates = docEvaMap.get(doctor);
|
|
|
BigDecimal anonymousScore1 = new BigDecimal(ANONYMOUS_SCORE_DEFAULT_ONE);//专业能力
|
|
|
BigDecimal anonymousScore2 = new BigDecimal(ANONYMOUS_SCORE_DEFAULT_TWO);//服务态度
|
|
|
BigDecimal anonymousScore3 = new BigDecimal(ANONYMOUS_SCORE_DEFAULT_THREE);//回复速度
|
|
@ -177,6 +188,9 @@ public class EvaluateService extends BaseService {
|
|
|
evaluateScore.setConsult(consult);
|
|
|
evaluateScore.setDoctor(doctor);
|
|
|
evaluateScore.setScore(score.doubleValue());
|
|
|
//获取医生评价信息
|
|
|
JSONObject doctorInfo = doctorMap.get(doctor);
|
|
|
String remark = (String)doctorInfo.get("remark");
|
|
|
if(StringUtils.isNotBlank(remark)){
|
|
|
evaluateScore.setRemark(remark);
|
|
|
}else{
|
|
@ -287,7 +301,7 @@ public class EvaluateService extends BaseService {
|
|
|
" AND s.consult = c.consult " +
|
|
|
" AND p.`code` = c.patient " +
|
|
|
" AND e.evaluate_type <> 0 "+
|
|
|
" AND s.doctor ="+doctor+" ";
|
|
|
" AND s.doctor ='"+doctor+"' ";
|
|
|
|
|
|
|
|
|
if("0".equals(type)){
|
|
@ -317,17 +331,27 @@ public class EvaluateService extends BaseService {
|
|
|
public JSONArray getScoreListTitle(String doctor){
|
|
|
String sql ="SELECT " +
|
|
|
" (SELECT COUNT(1) FROM wlyy_evaluate_score s " +
|
|
|
" WHERE s.doctor="+doctor+") total, " +
|
|
|
" WHERE s.doctor='"+doctor+"') total, " +
|
|
|
" (SELECT COUNT(1) FROM wlyy_evaluate_score s " +
|
|
|
" WHERE s.doctor="+doctor+" AND s.score>=71) good, " +
|
|
|
" WHERE s.doctor='"+doctor+"' AND s.score>=71) good, " +
|
|
|
" (SELECT COUNT(1) FROM wlyy_evaluate_score s " +
|
|
|
" WHERE s.doctor="+doctor+" AND s.score>=41 AND s.score<71) notBad, " +
|
|
|
" WHERE s.doctor='"+doctor+"' AND s.score>=41 AND s.score<71) notBad, " +
|
|
|
" (SELECT COUNT(1) FROM wlyy_evaluate_score s " +
|
|
|
" WHERE s.doctor="+doctor+" AND s.score<41) bad";
|
|
|
" WHERE s.doctor='"+doctor+"' AND s.score<41) bad";
|
|
|
List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql);
|
|
|
return new JSONArray(rs);
|
|
|
}
|
|
|
|
|
|
public JSONArray getScoreTitle(String doctor){
|
|
|
String sql = "SELECT" +
|
|
|
" (SELECT evaluate_score FROM wlyy_doctor WHERE code ='"+doctor+"') score ," +
|
|
|
" (SELECT ifnull(FORMAT(avg(score),1),0) FROM wlyy_evaluate WHERE evaluate_type = 1 AND doctor ='"+doctor+"') ability ," +
|
|
|
" (SELECT ifnull(FORMAT(avg(score),1),0) FROM wlyy_evaluate WHERE evaluate_type = 2 AND doctor ='"+doctor+"') attitude ," +
|
|
|
" (SELECT ifnull(FORMAT(avg(score),1),0) FROM wlyy_evaluate WHERE evaluate_type = 3 AND doctor ='"+doctor+"') speed";
|
|
|
List<Map<String,Object>> rs =jdbcTemplate.queryForList(sql);
|
|
|
return new JSONArray(rs);
|
|
|
}
|
|
|
|
|
|
public static Long REAL_SCORE_DEFAULT = 100L;
|
|
|
public static Long ANONYMOUS_SCORE_DEFAULT_ONE = 100L;
|
|
|
public static Long ANONYMOUS_SCORE_DEFAULT_TWO = 100L;
|