Commit 2c9a864a1639ce8ff2bd7c658daa34b09fc81178
1 parent
14ff2b27bc
Exists in
master
and in
1 other branch
统计医生回访数 和回访率PC 小程序通用
Showing 1 changed file with 78 additions and 52 deletions
talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/DoctorController.java
View file @
2c9a864
| ... | ... | @@ -366,63 +366,30 @@ |
| 366 | 366 | */ |
| 367 | 367 | @GetMapping("getReturnVisit") |
| 368 | 368 | @TokenRequired |
| 369 | - public BaseResponse getReturnVisit(String dlogin,String startTime,String endTime){ | |
| 369 | + public BaseResponse getReturnVisit(Integer hid,Integer dpid,String dlogin,String startTime,String endTime){ | |
| 370 | 370 | BaseResponse baseResponse=new BaseResponse(); |
| 371 | 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)))); | |
| 372 | + List<Map<String,Object>> result = new ArrayList<>(); | |
| 373 | + LambdaQueryWrapper<LymsDoctor> wrapper = new QueryWrapper().lambda(); | |
| 374 | + if(null!=hid){ | |
| 375 | + wrapper.eq(LymsDoctor::getHid,hid); | |
| 382 | 376 | } |
| 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 | - } | |
| 377 | + if(null!=dpid){ | |
| 378 | + wrapper.eq(LymsDoctor::getDpid,dpid); | |
| 412 | 379 | } |
| 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); | |
| 380 | + if(null!=dlogin){ | |
| 381 | + wrapper.eq(LymsDoctor::getDlogin,dlogin); | |
| 420 | 382 | } |
| 421 | - | |
| 422 | - Map<String,Object> map=new HashMap<>(); | |
| 423 | - map.put("visitCount",visitCount); | |
| 424 | - map.put("visitRate",visitRate); | |
| 425 | - baseResponse.setObject(map); | |
| 383 | + List<LymsDoctor> list = lymsDoctorService.list(wrapper); | |
| 384 | + for (LymsDoctor lymsDoctor : list) { | |
| 385 | + Map<String, Object> visitRateMap = getReturn(lymsDoctor.getDlogin(), startTime, endTime); | |
| 386 | + visitRateMap.put("hid", lymsDoctor.getHid()); | |
| 387 | + visitRateMap.put("hname", lymsDoctor.getHname()); | |
| 388 | + visitRateMap.put("dpid", lymsDoctor.getDpid()); | |
| 389 | + visitRateMap.put("ddname", lymsDoctor.getDdname()); | |
| 390 | + result.add(visitRateMap); | |
| 391 | + } | |
| 392 | + baseResponse.setObject(result); | |
| 426 | 393 | baseResponse.setErrorcode(0); |
| 427 | 394 | baseResponse.setErrormsg("成功"); |
| 428 | 395 | } catch (Exception e) { |
| ... | ... | @@ -431,5 +398,64 @@ |
| 431 | 398 | } |
| 432 | 399 | return baseResponse; |
| 433 | 400 | } |
| 401 | + | |
| 402 | + public Map<String,Object> getReturn(String dlogin,String startTime,String endTime) throws Exception{ | |
| 403 | + | |
| 404 | + //总回访数 | |
| 405 | + int visitCount=0; | |
| 406 | + //有效回访数 | |
| 407 | + int visitRateCount=0; | |
| 408 | + | |
| 409 | + LambdaQueryWrapper<LymsReturnVisitRecord> wrapper = new QueryWrapper().lambda(); | |
| 410 | + wrapper.eq(LymsReturnVisitRecord::getDlogin, dlogin); | |
| 411 | + if(StringUtil.isNotEmpty(startTime) && StringUtil.isNotEmpty(endTime)){ | |
| 412 | + wrapper.ge(LymsReturnVisitRecord::getCreatedtime,DateUtil.getYyyyMmDdHhMmSs(DateUtil.getDayFirstSecond(DateUtil.parseYMD(startTime)))); | |
| 413 | + wrapper.le(LymsReturnVisitRecord::getCreatedtime, DateUtil.getYyyyMmDdHhMmSs(DateUtil.getDayLastSecond(DateUtil.parseYMD(endTime)))); | |
| 414 | + } | |
| 415 | + wrapper.groupBy(LymsReturnVisitRecord::getHxgroupid); | |
| 416 | + final List<LymsReturnVisitRecord> visitRecordHxgroupid = lymsReturnVisitRecordService.list(wrapper); | |
| 417 | + for (LymsReturnVisitRecord visitRecord : visitRecordHxgroupid) { | |
| 418 | + final List<LymsReturnVisitRecord> visitRecords = lymsReturnVisitRecordService.list(new QueryWrapper<LymsReturnVisitRecord>() | |
| 419 | + .lambda().eq(LymsReturnVisitRecord::getDlogin, dlogin) | |
| 420 | + .eq(LymsReturnVisitRecord::getHxgroupid,visitRecord.getHxgroupid()) | |
| 421 | + .orderByAsc(LymsReturnVisitRecord::getCreatedtime)); | |
| 422 | + visitCount+=visitRecords.size(); | |
| 423 | + for(int i=0;i<visitRecords.size();i++){ | |
| 424 | + if (i+1==visitRecords.size()) { | |
| 425 | + final int messageCount = lymsMessageService.count(new QueryWrapper<LymsMessage>() | |
| 426 | + .lambda().eq(LymsMessage::getTargetid,visitRecord.getHxgroupid()) | |
| 427 | + .eq(LymsMessage::getType,0) | |
| 428 | + .ge(LymsMessage::getSendtime, visitRecords.get(i).getCreatedtime())); | |
| 429 | + if (messageCount!=0) { | |
| 430 | + visitRateCount++; | |
| 431 | + } | |
| 432 | + }else { | |
| 433 | + final int messageCount = lymsMessageService.count(new QueryWrapper<LymsMessage>() | |
| 434 | + .lambda().eq(LymsMessage::getTargetid,visitRecord.getHxgroupid()) | |
| 435 | + .eq(LymsMessage::getType,0) | |
| 436 | + .ge(LymsMessage::getSendtime, visitRecords.get(i).getCreatedtime()) | |
| 437 | + .le(LymsMessage::getSendtime,visitRecords.get(i+1).getCreatedtime())); | |
| 438 | + if (messageCount!=0) { | |
| 439 | + visitRateCount++; | |
| 440 | + } | |
| 441 | + | |
| 442 | + } | |
| 443 | + } | |
| 444 | + } | |
| 445 | + String visitRate="0"; | |
| 446 | + if (visitCount!=0) { | |
| 447 | + // 创建一个数值格式化对象 | |
| 448 | + NumberFormat numberFormat = NumberFormat.getInstance(); | |
| 449 | + // 设置精确到小数点后2位 | |
| 450 | + numberFormat.setMaximumFractionDigits(2); | |
| 451 | + visitRate = numberFormat.format((float)visitRateCount/(float)visitCount*100); | |
| 452 | + } | |
| 453 | + | |
| 454 | + Map<String,Object> map=new HashMap<>(); | |
| 455 | + map.put("visitCount",visitCount); | |
| 456 | + map.put("visitRate",visitRate); | |
| 457 | + return map; | |
| 458 | + } | |
| 459 | + | |
| 434 | 460 | } |