Commit 64b6762dcfd13e3da0ec08962e27b3490a4e0efd

Authored by shiyang
1 parent 12efe23ded
Exists in master and in 1 other branch dev

小程序医生回访统计

Showing 2 changed files with 107 additions and 4 deletions

talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/DoctorController.java View file @ 64b6762
... ... @@ -11,10 +11,7 @@
11 11 import com.lyms.talkonlineweb.domain.*;
12 12 import com.lyms.talkonlineweb.result.BaseResponse;
13 13 import com.lyms.talkonlineweb.service.*;
14   -import com.lyms.talkonlineweb.util.Constant;
15   -import com.lyms.talkonlineweb.util.HXService;
16   -import com.lyms.talkonlineweb.util.JwtUtils;
17   -import com.lyms.talkonlineweb.util.StringUtil;
  14 +import com.lyms.talkonlineweb.util.*;
18 15 import lombok.extern.log4j.Log4j2;
19 16 import org.springframework.beans.factory.annotation.Autowired;
20 17 import org.springframework.util.DigestUtils;
... ... @@ -23,6 +20,7 @@
23 20 import org.springframework.validation.annotation.Validated;
24 21 import org.springframework.web.bind.annotation.*;
25 22  
  23 +import java.text.NumberFormat;
26 24 import java.util.*;
27 25  
28 26 /**
... ... @@ -53,6 +51,10 @@
53 51 private AppgetdoctorlistInfoService appgetdoctorlistInfoService;
54 52 @Autowired
55 53 private LymsChatgroupService lymsChatgroupService;
  54 + @Autowired
  55 + private LymsReturnVisitRecordService lymsReturnVisitRecordService;
  56 + @Autowired
  57 + private LymsMessageService lymsMessageService;
56 58  
57 59 /**
58 60 * 获取医生列表
... ... @@ -355,6 +357,78 @@
355 357 }
356 358 baseResponse.setObject(doctorAminList);
357 359 baseResponse.setErrormsg("成功");
  360 + return baseResponse;
  361 + }
  362 + /**
  363 + * 小程序回访统计,按医生
  364 + * @param groupId 群组ID
  365 + * @return
  366 + */
  367 + @GetMapping("getReturnVisit")
  368 + @TokenRequired
  369 + public BaseResponse getReturnVisit(String dlogin,String startTime,String endTime){
  370 + BaseResponse baseResponse=new BaseResponse();
  371 + try {
  372 + //总回访数
  373 + int visitCount=0;
  374 + //有效回访数
  375 + int visitRateCount=0;
  376 +
  377 + LambdaQueryWrapper<LymsReturnVisitRecord> wrapper = new QueryWrapper().lambda();
  378 + wrapper.eq(LymsReturnVisitRecord::getDlogin, dlogin);
  379 + if(StringUtil.isNotEmpty(startTime) && StringUtil.isNotEmpty(endTime)){
  380 + wrapper.ge(LymsReturnVisitRecord::getCreatedtime,DateUtil.getYyyyMmDdHhMmSs(DateUtil.getDayFirstSecond(DateUtil.parseYMD(startTime))));
  381 + wrapper.le(LymsReturnVisitRecord::getCreatedtime, DateUtil.getYyyyMmDdHhMmSs(DateUtil.getDayLastSecond(DateUtil.parseYMD(endTime))));
  382 + }
  383 + wrapper.groupBy(LymsReturnVisitRecord::getHxgroupid);
  384 + final List<LymsReturnVisitRecord> visitRecordHxgroupid = lymsReturnVisitRecordService.list(wrapper);
  385 + for (LymsReturnVisitRecord visitRecord : visitRecordHxgroupid) {
  386 + final List<LymsReturnVisitRecord> visitRecords = lymsReturnVisitRecordService.list(new QueryWrapper<LymsReturnVisitRecord>()
  387 + .lambda().eq(LymsReturnVisitRecord::getDlogin, dlogin)
  388 + .eq(LymsReturnVisitRecord::getHxgroupid,visitRecord.getHxgroupid())
  389 + .orderByAsc(LymsReturnVisitRecord::getCreatedtime));
  390 + visitCount+=visitRecords.size();
  391 + for(int i=0;i<visitRecords.size();i++){
  392 + if (i+1==visitRecords.size()) {
  393 + final int messageCount = lymsMessageService.count(new QueryWrapper<LymsMessage>()
  394 + .lambda().eq(LymsMessage::getTargetid,visitRecord.getHxgroupid())
  395 + .eq(LymsMessage::getType,0)
  396 + .ge(LymsMessage::getSendtime, visitRecords.get(i).getCreatedtime()));
  397 + if (messageCount!=0) {
  398 + visitRateCount++;
  399 + }
  400 + }else {
  401 + final int messageCount = lymsMessageService.count(new QueryWrapper<LymsMessage>()
  402 + .lambda().eq(LymsMessage::getTargetid,visitRecord.getHxgroupid())
  403 + .eq(LymsMessage::getType,0)
  404 + .ge(LymsMessage::getSendtime, visitRecords.get(i).getCreatedtime())
  405 + .le(LymsMessage::getSendtime,visitRecords.get(i+1).getCreatedtime()));
  406 + if (messageCount!=0) {
  407 + visitRateCount++;
  408 + }
  409 +
  410 + }
  411 + }
  412 + }
  413 + String visitRate="0";
  414 + if (visitCount!=0) {
  415 + // 创建一个数值格式化对象
  416 + NumberFormat numberFormat = NumberFormat.getInstance();
  417 + // 设置精确到小数点后2位
  418 + numberFormat.setMaximumFractionDigits(2);
  419 + visitRate = numberFormat.format((float)visitRateCount/(float)visitCount*100);
  420 + }
  421 +
  422 + Map<String,Object> map=new HashMap<>();
  423 + map.put("visitCount",visitCount);
  424 + map.put("visitRate",visitRate);
  425 + baseResponse.setObject(map);
  426 + baseResponse.setErrorcode(0);
  427 + baseResponse.setErrormsg("成功");
  428 + } catch (Exception e) {
  429 + baseResponse.setErrorcode(1);
  430 + e.printStackTrace();
  431 + }
358 432 return baseResponse;
359 433 }
360 434 }
talkonlineweb/src/main/java/com/lyms/talkonlineweb/util/DateUtil.java View file @ 64b6762
... ... @@ -260,6 +260,35 @@
260 260  
261 261 return 0;
262 262 }
  263 + /**
  264 + * 当前的开始时间
  265 + *
  266 + * @param date
  267 + * @return
  268 + */
  269 + public static Date getDayFirstSecond(Date date) {
  270 + Calendar instance = Calendar.getInstance();
  271 + instance.setTime(date);
  272 + instance.set(Calendar.HOUR_OF_DAY, 0);
  273 + instance.set(Calendar.MINUTE, 0);
  274 + instance.set(Calendar.SECOND, 0);
  275 + instance.set(Calendar.MILLISECOND, 0);
  276 + return instance.getTime();
  277 + }
  278 +
  279 + /**
  280 + * 把传进来的日期 设置为当天的最后一秒
  281 + *
  282 + * @param date
  283 + */
  284 + public static Date getDayLastSecond(Date date) {
  285 + Calendar calendar = Calendar.getInstance();
  286 + calendar.setTime(date);
  287 + calendar.set(Calendar.HOUR_OF_DAY, 23);
  288 + calendar.set(Calendar.MINUTE, 59);
  289 + calendar.set(Calendar.SECOND, 59);
  290 + return calendar.getTime();
  291 + }
263 292  
264 293 }