diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/DoctorController.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/DoctorController.java index 6f990c7..5076ff7 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/DoctorController.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/DoctorController.java @@ -11,10 +11,7 @@ import com.lyms.talkonlineweb.annotation.TokenRequired; import com.lyms.talkonlineweb.domain.*; import com.lyms.talkonlineweb.result.BaseResponse; import com.lyms.talkonlineweb.service.*; -import com.lyms.talkonlineweb.util.Constant; -import com.lyms.talkonlineweb.util.HXService; -import com.lyms.talkonlineweb.util.JwtUtils; -import com.lyms.talkonlineweb.util.StringUtil; +import com.lyms.talkonlineweb.util.*; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.DigestUtils; @@ -23,6 +20,7 @@ import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.text.NumberFormat; import java.util.*; /** @@ -53,6 +51,10 @@ public class DoctorController { private AppgetdoctorlistInfoService appgetdoctorlistInfoService; @Autowired private LymsChatgroupService lymsChatgroupService; + @Autowired + private LymsReturnVisitRecordService lymsReturnVisitRecordService; + @Autowired + private LymsMessageService lymsMessageService; /** * 获取医生列表 @@ -357,4 +359,76 @@ public class DoctorController { baseResponse.setErrormsg("成功"); return baseResponse; } + /** + * 小程序回访统计,按医生 + * @param groupId 群组ID + * @return + */ + @GetMapping("getReturnVisit") + @TokenRequired + public BaseResponse getReturnVisit(String dlogin,String startTime,String endTime){ + BaseResponse baseResponse=new BaseResponse(); + try { + //总回访数 + int visitCount=0; + //有效回访数 + int visitRateCount=0; + + LambdaQueryWrapper wrapper = new QueryWrapper().lambda(); + wrapper.eq(LymsReturnVisitRecord::getDlogin, dlogin); + if(StringUtil.isNotEmpty(startTime) && StringUtil.isNotEmpty(endTime)){ + wrapper.ge(LymsReturnVisitRecord::getCreatedtime,DateUtil.getYyyyMmDdHhMmSs(DateUtil.getDayFirstSecond(DateUtil.parseYMD(startTime)))); + wrapper.le(LymsReturnVisitRecord::getCreatedtime, DateUtil.getYyyyMmDdHhMmSs(DateUtil.getDayLastSecond(DateUtil.parseYMD(endTime)))); + } + wrapper.groupBy(LymsReturnVisitRecord::getHxgroupid); + final List visitRecordHxgroupid = lymsReturnVisitRecordService.list(wrapper); + for (LymsReturnVisitRecord visitRecord : visitRecordHxgroupid) { + final List visitRecords = lymsReturnVisitRecordService.list(new QueryWrapper() + .lambda().eq(LymsReturnVisitRecord::getDlogin, dlogin) + .eq(LymsReturnVisitRecord::getHxgroupid,visitRecord.getHxgroupid()) + .orderByAsc(LymsReturnVisitRecord::getCreatedtime)); + visitCount+=visitRecords.size(); + for(int i=0;i() + .lambda().eq(LymsMessage::getTargetid,visitRecord.getHxgroupid()) + .eq(LymsMessage::getType,0) + .ge(LymsMessage::getSendtime, visitRecords.get(i).getCreatedtime())); + if (messageCount!=0) { + visitRateCount++; + } + }else { + final int messageCount = lymsMessageService.count(new QueryWrapper() + .lambda().eq(LymsMessage::getTargetid,visitRecord.getHxgroupid()) + .eq(LymsMessage::getType,0) + .ge(LymsMessage::getSendtime, visitRecords.get(i).getCreatedtime()) + .le(LymsMessage::getSendtime,visitRecords.get(i+1).getCreatedtime())); + if (messageCount!=0) { + visitRateCount++; + } + + } + } + } + String visitRate="0"; + if (visitCount!=0) { + // 创建一个数值格式化对象 + NumberFormat numberFormat = NumberFormat.getInstance(); + // 设置精确到小数点后2位 + numberFormat.setMaximumFractionDigits(2); + visitRate = numberFormat.format((float)visitRateCount/(float)visitCount*100); + } + + Map map=new HashMap<>(); + map.put("visitCount",visitCount); + map.put("visitRate",visitRate); + baseResponse.setObject(map); + baseResponse.setErrorcode(0); + baseResponse.setErrormsg("成功"); + } catch (Exception e) { + baseResponse.setErrorcode(1); + e.printStackTrace(); + } + return baseResponse; + } } diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/util/DateUtil.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/util/DateUtil.java index bacae97..fa1825b 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/util/DateUtil.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/util/DateUtil.java @@ -260,5 +260,34 @@ public class DateUtil { return 0; } + /** + * 当前的开始时间 + * + * @param date + * @return + */ + public static Date getDayFirstSecond(Date date) { + Calendar instance = Calendar.getInstance(); + instance.setTime(date); + instance.set(Calendar.HOUR_OF_DAY, 0); + instance.set(Calendar.MINUTE, 0); + instance.set(Calendar.SECOND, 0); + instance.set(Calendar.MILLISECOND, 0); + return instance.getTime(); + } + + /** + * 把传进来的日期 设置为当天的最后一秒 + * + * @param date + */ + public static Date getDayLastSecond(Date date) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.set(Calendar.HOUR_OF_DAY, 23); + calendar.set(Calendar.MINUTE, 59); + calendar.set(Calendar.SECOND, 59); + return calendar.getTime(); + } }