Commit 2c9a864a1639ce8ff2bd7c658daa34b09fc81178

Authored by shiyang
1 parent 14ff2b27bc
Exists in master and in 1 other branch dev

统计医生回访数 和回访率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 }