This commit is contained in:
2025-07-29 15:28:33 +08:00
parent dfce0a6b31
commit ca409dcac6
9 changed files with 472 additions and 85 deletions
@@ -2,10 +2,10 @@ package com.example.caseData.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.example.caseData.common.Response;
import com.example.caseData.dao.StatsCaseClinicalDao;
import com.example.caseData.dao.StatsCaseClinicalDoctorDao;
import com.example.caseData.dao.StatsCaseClinicalHospitalDao;
import com.example.caseData.dao.StatsCaseClinicalLabelDao;
import com.example.caseData.dao.*;
import com.example.caseData.dto.caseClinicalArticle.CaseClinicalArticleDto;
import com.example.caseData.dto.caseClinicalVideo.CaseClinicalVideoDto;
import com.example.caseData.dto.caseExchange.CaseExchangeDto;
import com.example.caseData.dto.statsCaseClinical.StatsCaseClinicalDto;
import com.example.caseData.dto.statsCaseClinicalDoctor.StatsCaseClinicalDoctorDto;
import com.example.caseData.dto.statsCaseClinicalHospital.StatsCaseClinicalHospitalDto;
@@ -17,6 +17,8 @@ import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api")
public class StatsCaseClinicalController extends BaseController {
@@ -32,6 +34,12 @@ public class StatsCaseClinicalController extends BaseController {
@Resource
private StatsCaseClinicalLabelDao statsCaseClinicalLabelDao;
@Resource
private CaseClinicalArticleDao caseClinicalArticleDao;
@Resource
private CaseClinicalVideoDao caseClinicalVideoDao;
/**
* 临床病例库-统计
*/
@@ -100,17 +108,42 @@ public class StatsCaseClinicalController extends BaseController {
public Response<StatsCaseClinicalLabelDto> getClinicalStatsLabel(
@Validated() @ModelAttribute getClinicalStatsLabel request
){
// 统计表-病例库-临床
LambdaQueryWrapper<StatsCaseClinicalLabelModel> statsCaseClinicalLabelQueryWrapper = new LambdaQueryWrapper<>();
statsCaseClinicalLabelQueryWrapper.eq(StatsCaseClinicalLabelModel::getLabelIden, request.getLabel_iden());
StatsCaseClinicalLabelModel statsCaseClinicalLabel = statsCaseClinicalLabelDao.selectOne(statsCaseClinicalLabelQueryWrapper);
Integer articleReadNum = 0;
Integer videoReadNum = 0;
StatsCaseClinicalLabelDto g = StatsCaseClinicalLabelDto.GetDto(statsCaseClinicalLabel);
if (g == null){
return Response.success(new StatsCaseClinicalLabelDto());
// 获取该标签下文章数据
List<CaseClinicalArticleDto> caseClinicalArticles = caseClinicalArticleDao.getCaseClinicalArticleSearchList(
"",
"",
"",
request.getLabel_iden(),
null
);
for (CaseClinicalArticleDto article : caseClinicalArticles){
articleReadNum += article.getReadNum();
}
// 获取该标签下视频数据
List<CaseClinicalVideoDto> caseClinicalVideos = caseClinicalVideoDao.getCaseClinicalVideoSearchList(
"",
"",
"",
request.getLabel_iden(),
null
);
for (CaseClinicalVideoDto video : caseClinicalVideos){
videoReadNum += video.getReadNum();
}
StatsCaseClinicalLabelDto g = new StatsCaseClinicalLabelDto();
g.setStatsId("1");
g.setArticleNum(caseClinicalArticles.size());
g.setArticleReadNum(articleReadNum);
g.setVideoNum(caseClinicalVideos.size());
g.setVideoReadNum(videoReadNum);
return Response.success(g);
}
}
@@ -9,6 +9,8 @@ import com.example.caseData.model.CaseClinicalArticleModel;
import org.apache.ibatis.annotations.*;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
@Mapper
@@ -28,6 +30,20 @@ public interface CaseClinicalArticleDao extends BaseMapper<CaseClinicalArticleMo
@Param("order") Map<String, String> order
);
/**
* 临床病例库-搜索
* @param keyword 搜索关键词-标题/医生名称/标签名称
* @param order 排序
*/
List<CaseClinicalArticleDto> getCaseClinicalArticleSearchList(
@Param("keyword") String keyword,
@Param("hospitalId") String hospitalId,
@Param("doctorId") String doctorId,
@Param("labelIden") String labelIden,
@Param("order") Map<String, String> order
);
/**
* 临床病例库-搜索-数量
* @param keyword 搜索关键词-标题/医生名称/标签名称
@@ -61,4 +77,18 @@ public interface CaseClinicalArticleDao extends BaseMapper<CaseClinicalArticleMo
"SET ${field} = CASE WHEN ${field} >= #{numeral} THEN ${field} - #{numeral} ELSE 0 END " +
"WHERE article_id = #{articleId}")
int dec(@Param("articleId") Long articleId, @Param("field") String field, @Param("numeral") int numeral);
/**
* 根据医院ID查询该医院最后一篇文章的发表时间
* @param hospitalId 医院ID
* @return 最新发表时间,无数据时返回 null
*/
LocalDateTime selectLastArticlePushDateByHospitalId(@Param("hospitalId") Long hospitalId);
/**
* 根据医生ID查询该医生最后一篇文章的发表时间
* @param doctorId 医院ID
* @return 最新发表时间,无数据时返回 null
*/
LocalDateTime selectLastArticlePushDateByDoctorId(@Param("doctorId") Long doctorId);
}
@@ -10,6 +10,7 @@ import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import java.util.List;
import java.util.Map;
@Mapper
@@ -29,6 +30,19 @@ public interface CaseClinicalVideoDao extends BaseMapper<CaseClinicalVideoModel>
@Param("order") Map<String, String> order
);
/**
* 临床病例库-搜索
* @param keyword 搜索关键词-标题/医生名称/标签名称
* @param order 排序
*/
List<CaseClinicalVideoDto> getCaseClinicalVideoSearchList(
@Param("keyword") String keyword,
@Param("hospitalId") String hospitalId,
@Param("doctorId") String doctorId,
@Param("labelIden") String labelIden,
@Param("order") Map<String, String> order
);
/**
* 临床病例库-搜索-数量
* @param keyword 搜索关键词-标题/医生名称/标签名称
@@ -48,6 +48,12 @@ public class StatsCaseClinicalDoctorModel {
@TableField("article_comment_num")
private Integer articleCommentNum;
/**
* 最后一篇文章发表时间
*/
@TableField("last_push_date")
private LocalDateTime lastPushDate;
/**
* 数量-视频
*/
@@ -86,7 +86,7 @@ public class CaseClinicalArticleService {
}
// 新增统计字段
boolean r = IncClinicalArticleStats(articleId,2);
boolean r = IncClinicalArticleStats(articleId,2,1);
if (!r){
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return false;
@@ -117,7 +117,7 @@ public class CaseClinicalArticleService {
}
// 减少文章的统计字段
boolean r = DecClinicalArticleStats(articleId,2);
boolean r = DecClinicalArticleStats(articleId,2,1);
if (!r){
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return false;
@@ -175,7 +175,7 @@ public class CaseClinicalArticleService {
}
// 新增文章的统计字段
boolean r = IncClinicalArticleStats(articleId,3);
boolean r = IncClinicalArticleStats(articleId,3,1);
if (!r){
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return false;
@@ -222,7 +222,7 @@ public class CaseClinicalArticleService {
}
// 减少文章的统计字段
boolean r = DecClinicalArticleStats(String.valueOf(comment.getArticleId()),2);
boolean r = DecClinicalArticleStats(String.valueOf(comment.getArticleId()),2,1);
if (!r){
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return false;
@@ -370,7 +370,7 @@ public class CaseClinicalArticleService {
* @param type 类型:1:阅读量 2:收藏量 3:评论数 4:文章数
*/
@Transactional
public boolean IncClinicalArticleStats(String articleId,Integer type){
public boolean IncClinicalArticleStats(String articleId,Integer type,Integer num){
try {
String caseClinicalArticleField = ""; // 具体文章
String statsCaseClinicalField = ""; // 全部文章
@@ -414,9 +414,9 @@ public class CaseClinicalArticleService {
}
if (!caseClinicalArticleField.isEmpty()){
caseClinicalArticleDao.inc(Long.valueOf(articleId),caseClinicalArticleField,1);
caseClinicalArticleDao.inc(Long.valueOf(articleId),caseClinicalArticleField,num);
}
statsCaseClinicalDao.inc(1L,statsCaseClinicalField,1);
statsCaseClinicalDao.inc(1L,statsCaseClinicalField,num);
// 获取文章作者
LambdaQueryWrapper<CaseClinicalArticleAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
@@ -427,10 +427,10 @@ public class CaseClinicalArticleService {
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId());
// 减少医生文章数
statsCaseClinicalHospitalDao.inc(caseClinicalDoctor.getHospitalId(),statsCaseClinicalHospitalField,1);
statsCaseClinicalHospitalDao.inc(caseClinicalDoctor.getHospitalId(),statsCaseClinicalHospitalField,num);
// 减少医生文章数
statsCaseClinicalDoctorDao.inc(caseClinicalDoctor.getDoctorId(),statsCaseClinicalDoctorField,1);
statsCaseClinicalDoctorDao.inc(caseClinicalDoctor.getDoctorId(),statsCaseClinicalDoctorField,num);
}
// 获取文章标签数据
@@ -438,7 +438,7 @@ public class CaseClinicalArticleService {
labelQueryWrapper.eq(CaseClinicalArticleLabelModel::getArticleId, articleId);
List<CaseClinicalArticleLabelModel> caseClinicalArticleLabels = caseClinicalArticleLabelDao.selectList(labelQueryWrapper);
for (CaseClinicalArticleLabelModel label : caseClinicalArticleLabels) {
statsCaseClinicalLabelDao.inc(label.getAppIden(),statsCaseClinicalLabelField,1);
statsCaseClinicalLabelDao.inc(label.getAppIden(),statsCaseClinicalLabelField,num);
}
return true;
@@ -454,7 +454,7 @@ public class CaseClinicalArticleService {
* @param type 类型:1:阅读量 2:收藏量 3:评论数 4:文章数
*/
@Transactional
public boolean DecClinicalArticleStats(String articleId,Integer type){
public boolean DecClinicalArticleStats(String articleId,Integer type,Integer num){
try {
String caseClinicalArticleField = ""; // 具体文章
String statsCaseClinicalField = ""; // 全部文章
@@ -498,9 +498,9 @@ public class CaseClinicalArticleService {
}
if (!caseClinicalArticleField.isEmpty()){
caseClinicalArticleDao.dec(Long.valueOf(articleId),caseClinicalArticleField,1);
caseClinicalArticleDao.dec(Long.valueOf(articleId),caseClinicalArticleField,num);
}
statsCaseClinicalDao.dec(1L,statsCaseClinicalField,1);
statsCaseClinicalDao.dec(1L,statsCaseClinicalField,num);
// 获取文章作者
LambdaQueryWrapper<CaseClinicalArticleAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
@@ -511,10 +511,10 @@ public class CaseClinicalArticleService {
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId());
// 减少医生文章数
statsCaseClinicalHospitalDao.dec(caseClinicalDoctor.getHospitalId(),statsCaseClinicalHospitalField,1);
statsCaseClinicalHospitalDao.dec(caseClinicalDoctor.getHospitalId(),statsCaseClinicalHospitalField,num);
// 减少医生文章数
statsCaseClinicalDoctorDao.dec(caseClinicalDoctor.getDoctorId(),statsCaseClinicalDoctorField,1);
statsCaseClinicalDoctorDao.dec(caseClinicalDoctor.getDoctorId(),statsCaseClinicalDoctorField,num);
}
// 获取文章标签数据
@@ -522,7 +522,7 @@ public class CaseClinicalArticleService {
labelQueryWrapper.eq(CaseClinicalArticleLabelModel::getArticleId, articleId);
List<CaseClinicalArticleLabelModel> caseClinicalArticleLabels = caseClinicalArticleLabelDao.selectList(labelQueryWrapper);
for (CaseClinicalArticleLabelModel label : caseClinicalArticleLabels) {
statsCaseClinicalLabelDao.dec(label.getAppIden(),statsCaseClinicalLabelField,1);
statsCaseClinicalLabelDao.dec(label.getAppIden(),statsCaseClinicalLabelField,num);
}
return true;
@@ -532,61 +532,62 @@ public class CaseClinicalArticleService {
}
}
/**
* 处理文章所属医院的数量统计
*/
@Transactional
public boolean handleHospitalStat(String doctorId,Long oldHospitalId,String newHospitalId){
try {
// 获取统计表医生数据
LambdaQueryWrapper<StatsCaseClinicalDoctorModel> doctorQueryWrapper = new LambdaQueryWrapper<>();
doctorQueryWrapper.eq(StatsCaseClinicalDoctorModel::getDoctorId, doctorId);
StatsCaseClinicalDoctorModel statsCaseClinicalDoctor = statsCaseClinicalDoctorDao.selectOne(doctorQueryWrapper);
if (statsCaseClinicalDoctor == null){
return true;
}
// 获取旧医院数据
StatsCaseClinicalHospitalModel statsCaseClinicalHospital = statsCaseClinicalHospitalDao.selectById(oldHospitalId);
if (statsCaseClinicalHospital == null){
throw new BusinessException("操作失败");
}
// 减少数-文章
statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_num",statsCaseClinicalDoctor.getArticleNum());
// 减少阅读数-文章
statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_read_num",statsCaseClinicalDoctor.getArticleReadNum());
// 减少收藏数-文章
statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_collect_num",statsCaseClinicalDoctor.getArticleCollectNum());
// 减少评论数-文章
statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_comment_num",statsCaseClinicalDoctor.getArticleCommentNum());
// 减少数-视频
statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_num",statsCaseClinicalDoctor.getVideoNum());
// 减少阅读数-视频
statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_read_num",statsCaseClinicalDoctor.getVideoReadNum());
// 减少收藏数-视频
statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_collect_num",statsCaseClinicalDoctor.getVideoCollectNum());
// 减少评论数-视频
statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_comment_num",statsCaseClinicalDoctor.getVideoCommentNum());
// 最后一篇文章发表时间
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return false;
}
// /**
// * 处理文章所属医院的数量统计
// */
// @Transactional
// public boolean handleHospitalStat(String doctorId,Long oldHospitalId,String newHospitalId){
// try {
// // 获取统计表医生数据
// LambdaQueryWrapper<StatsCaseClinicalDoctorModel> doctorQueryWrapper = new LambdaQueryWrapper<>();
// doctorQueryWrapper.eq(StatsCaseClinicalDoctorModel::getDoctorId, doctorId);
// StatsCaseClinicalDoctorModel statsCaseClinicalDoctor = statsCaseClinicalDoctorDao.selectOne(doctorQueryWrapper);
// if (statsCaseClinicalDoctor == null){
// return true;
// }
//
// // 获取旧医院数据
// StatsCaseClinicalHospitalModel statsCaseClinicalHospital = statsCaseClinicalHospitalDao.selectById(oldHospitalId);
// if (statsCaseClinicalHospital == null){
// throw new BusinessException("操作失败");
// }
//
// // 减少数-文章
// statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_num",statsCaseClinicalDoctor.getArticleNum());
//
// // 减少阅读数-文章
// statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_read_num",statsCaseClinicalDoctor.getArticleReadNum());
//
// // 减少收藏数-文章
// statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_collect_num",statsCaseClinicalDoctor.getArticleCollectNum());
//
// // 减少评论数-文章
// statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_comment_num",statsCaseClinicalDoctor.getArticleCommentNum());
//
// // 减少数-视频
// statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_num",statsCaseClinicalDoctor.getVideoNum());
//
// // 减少阅读数-视频
// statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_read_num",statsCaseClinicalDoctor.getVideoReadNum());
//
// // 减少收藏数-视频
// statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_collect_num",statsCaseClinicalDoctor.getVideoCollectNum());
//
// // 减少评论数-视频
// statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_comment_num",statsCaseClinicalDoctor.getVideoCommentNum());
//
// // 最后一篇文章发表时间
//
// } catch (Exception e) {
// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
// return false;
// }
//
// return true;
//
// }
return true;
}
/**
* 检测作品状态
@@ -1,15 +1,21 @@
package com.example.caseData.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.example.caseData.dao.CaseClinicalArticleDao;
import com.example.caseData.dao.StatsCaseClinicalDoctorDao;
import com.example.caseData.dao.StatsCaseClinicalHospitalDao;
import com.example.caseData.dao.StatsCaseClinicalLabelDao;
import com.example.caseData.exception.BusinessException;
import com.example.caseData.model.CaseClinicalArticleModel;
import com.example.caseData.model.StatsCaseClinicalDoctorModel;
import com.example.caseData.model.StatsCaseClinicalHospitalModel;
import com.example.caseData.model.StatsCaseClinicalLabelModel;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.time.LocalDateTime;
@Service
public class CaseClinicalService {
@@ -22,6 +28,9 @@ public class CaseClinicalService {
@Resource
private StatsCaseClinicalHospitalDao statsCaseClinicalHospitalDao;
@Resource
private CaseClinicalArticleDao caseClinicalArticleDao;
// 新增标签统计
@Transactional
public void AddStatsCaseClinicalLabel(String labelIden,String labelName){
@@ -38,7 +47,7 @@ public class CaseClinicalService {
// 新增医生统计
@Transactional
public void AddStatsCaseClinicalDoctor(String doctorId){
public StatsCaseClinicalDoctorModel AddStatsCaseClinicalDoctor(String doctorId){
LambdaQueryWrapper<StatsCaseClinicalDoctorModel> mapQueryWrapper = new LambdaQueryWrapper<>();
mapQueryWrapper.eq(StatsCaseClinicalDoctorModel::getDoctorId, doctorId);
StatsCaseClinicalDoctorModel statsCaseClinicalDoctor = statsCaseClinicalDoctorDao.selectOne(mapQueryWrapper);
@@ -47,11 +56,13 @@ public class CaseClinicalService {
statsCaseClinicalDoctor.setDoctorId(Long.valueOf(doctorId));
statsCaseClinicalDoctorDao.insert(statsCaseClinicalDoctor);
}
return statsCaseClinicalDoctor;
}
// 新增医院统计
@Transactional
public void AddStatsCaseClinicalHospital(String hospitalId){
public StatsCaseClinicalHospitalModel AddStatsCaseClinicalHospital(String hospitalId){
LambdaQueryWrapper<StatsCaseClinicalHospitalModel> mapQueryWrapper = new LambdaQueryWrapper<>();
mapQueryWrapper.eq(StatsCaseClinicalHospitalModel::getHospitalId, hospitalId);
StatsCaseClinicalHospitalModel statsCaseClinicalHospital = statsCaseClinicalHospitalDao.selectOne(mapQueryWrapper);
@@ -60,5 +71,202 @@ public class CaseClinicalService {
statsCaseClinicalHospital.setHospitalId(Long.valueOf(hospitalId));
statsCaseClinicalHospitalDao.insert(statsCaseClinicalHospital);
}
return statsCaseClinicalHospital;
}
/**
* 处理文章所属医院的数量统计
*/
@Transactional
public boolean handleHospitalStat(Long doctorId,Long oldHospitalId,Long newHospitalId){
try {
// 获取统计表医生数据
LambdaQueryWrapper<StatsCaseClinicalDoctorModel> doctorQueryWrapper = new LambdaQueryWrapper<>();
doctorQueryWrapper.eq(StatsCaseClinicalDoctorModel::getDoctorId, doctorId);
StatsCaseClinicalDoctorModel statsCaseClinicalDoctor = statsCaseClinicalDoctorDao.selectOne(doctorQueryWrapper);
if (statsCaseClinicalDoctor == null){
return true;
}
// 获取旧医院数据
LambdaQueryWrapper<StatsCaseClinicalHospitalModel> hospitalQueryWrapper = new LambdaQueryWrapper<>();
hospitalQueryWrapper.eq(StatsCaseClinicalHospitalModel::getHospitalId, oldHospitalId);
StatsCaseClinicalHospitalModel statsCaseClinicalHospital = statsCaseClinicalHospitalDao.selectOne(hospitalQueryWrapper);
if (statsCaseClinicalHospital == null){
throw new BusinessException("操作失败");
}
// 减少数-文章
statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_num",statsCaseClinicalDoctor.getArticleNum());
// 减少阅读数-文章
statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_read_num",statsCaseClinicalDoctor.getArticleReadNum());
// 减少收藏数-文章
statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_collect_num",statsCaseClinicalDoctor.getArticleCollectNum());
// 减少评论数-文章
statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_comment_num",statsCaseClinicalDoctor.getArticleCommentNum());
// 减少数-视频
statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_num",statsCaseClinicalDoctor.getVideoNum());
// 减少阅读数-视频
statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_read_num",statsCaseClinicalDoctor.getVideoReadNum());
// 减少收藏数-视频
statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_collect_num",statsCaseClinicalDoctor.getVideoCollectNum());
// 减少评论数-视频
statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_comment_num",statsCaseClinicalDoctor.getVideoCommentNum());
// 最后一篇文章发表时间
LocalDateTime lastPushDate = caseClinicalArticleDao.selectLastArticlePushDateByHospitalId(oldHospitalId);
if (lastPushDate != null){
statsCaseClinicalHospital.setLastPushDate(lastPushDate);
statsCaseClinicalHospitalDao.updateById(statsCaseClinicalHospital);
}
// 获取新医院数据
hospitalQueryWrapper = new LambdaQueryWrapper<>();
hospitalQueryWrapper.eq(StatsCaseClinicalHospitalModel::getHospitalId, newHospitalId);
statsCaseClinicalHospital = statsCaseClinicalHospitalDao.selectOne(hospitalQueryWrapper);
if (statsCaseClinicalHospital == null){
// 新增新医院
statsCaseClinicalHospital = AddStatsCaseClinicalHospital(String.valueOf(newHospitalId));
}
// 增加数-文章
statsCaseClinicalHospitalDao.inc(newHospitalId,"article_num",statsCaseClinicalDoctor.getArticleNum());
// 增加阅读数-文章
statsCaseClinicalHospitalDao.inc(newHospitalId,"article_read_num",statsCaseClinicalDoctor.getArticleReadNum());
// 增加收藏数-文章
statsCaseClinicalHospitalDao.inc(newHospitalId,"article_collect_num",statsCaseClinicalDoctor.getArticleCollectNum());
// 增加评论数-文章
statsCaseClinicalHospitalDao.inc(newHospitalId,"article_comment_num",statsCaseClinicalDoctor.getArticleCommentNum());
// 增加数-视频
statsCaseClinicalHospitalDao.inc(newHospitalId,"video_num",statsCaseClinicalDoctor.getVideoNum());
// 增加阅读数-视频
statsCaseClinicalHospitalDao.inc(newHospitalId,"video_read_num",statsCaseClinicalDoctor.getVideoReadNum());
// 增加收藏数-视频
statsCaseClinicalHospitalDao.inc(newHospitalId,"video_collect_num",statsCaseClinicalDoctor.getVideoCollectNum());
// 增加评论数-视频
statsCaseClinicalHospitalDao.inc(newHospitalId,"video_comment_num",statsCaseClinicalDoctor.getVideoCommentNum());
// 最后一篇文章发表时间
lastPushDate = caseClinicalArticleDao.selectLastArticlePushDateByHospitalId(newHospitalId);
if (lastPushDate != null){
statsCaseClinicalHospital.setLastPushDate(lastPushDate);
statsCaseClinicalHospitalDao.updateById(statsCaseClinicalHospital);
}
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return false;
}
return true;
}
/**
* 处理文章所属医生的数量统计
*/
@Transactional
public boolean handleDoctorStat(Long oldDoctorId,Long newDoctorId){
try {
// 获取统计表医生数据-旧
LambdaQueryWrapper<StatsCaseClinicalDoctorModel> doctorQueryWrapper = new LambdaQueryWrapper<>();
doctorQueryWrapper.eq(StatsCaseClinicalDoctorModel::getDoctorId, oldDoctorId);
StatsCaseClinicalDoctorModel statsCaseClinicalDoctor = statsCaseClinicalDoctorDao.selectOne(doctorQueryWrapper);
if (statsCaseClinicalDoctor == null){
return true;
}
// 减少数-文章
statsCaseClinicalDoctorDao.dec(oldDoctorId,"article_num",statsCaseClinicalDoctor.getArticleNum());
// 减少阅读数-文章
statsCaseClinicalDoctorDao.dec(oldDoctorId,"article_read_num",statsCaseClinicalDoctor.getArticleReadNum());
// 减少收藏数-文章
statsCaseClinicalDoctorDao.dec(oldDoctorId,"article_collect_num",statsCaseClinicalDoctor.getArticleCollectNum());
// 减少评论数-文章
statsCaseClinicalDoctorDao.dec(oldDoctorId,"article_comment_num",statsCaseClinicalDoctor.getArticleCommentNum());
// 减少数-视频
statsCaseClinicalDoctorDao.dec(oldDoctorId,"video_num",statsCaseClinicalDoctor.getVideoNum());
// 减少阅读数-视频
statsCaseClinicalDoctorDao.dec(oldDoctorId,"video_read_num",statsCaseClinicalDoctor.getVideoReadNum());
// 减少收藏数-视频
statsCaseClinicalDoctorDao.dec(oldDoctorId,"video_collect_num",statsCaseClinicalDoctor.getVideoCollectNum());
// 减少评论数-视频
statsCaseClinicalDoctorDao.dec(oldDoctorId,"video_comment_num",statsCaseClinicalDoctor.getVideoCommentNum());
// 最后一篇文章发表时间
LocalDateTime lastPushDate = caseClinicalArticleDao.selectLastArticlePushDateByDoctorId(oldDoctorId);
if (lastPushDate != null){
statsCaseClinicalDoctor.setLastPushDate(lastPushDate);
statsCaseClinicalDoctorDao.updateById(statsCaseClinicalDoctor);
}
// 获取统计表医生数据-新
doctorQueryWrapper = new LambdaQueryWrapper<>();
doctorQueryWrapper.eq(StatsCaseClinicalDoctorModel::getDoctorId, newDoctorId);
statsCaseClinicalDoctor = statsCaseClinicalDoctorDao.selectOne(doctorQueryWrapper);
if (statsCaseClinicalDoctor == null){
// 新增新医生
statsCaseClinicalDoctor = AddStatsCaseClinicalDoctor(String.valueOf(newDoctorId));
}
// 增加数-文章
statsCaseClinicalDoctorDao.inc(newDoctorId,"article_num",statsCaseClinicalDoctor.getArticleNum());
// 增加阅读数-文章
statsCaseClinicalDoctorDao.inc(newDoctorId,"article_read_num",statsCaseClinicalDoctor.getArticleReadNum());
// 增加收藏数-文章
statsCaseClinicalDoctorDao.inc(newDoctorId,"article_collect_num",statsCaseClinicalDoctor.getArticleCollectNum());
// 增加评论数-文章
statsCaseClinicalDoctorDao.inc(newDoctorId,"article_comment_num",statsCaseClinicalDoctor.getArticleCommentNum());
// 增加数-视频
statsCaseClinicalDoctorDao.inc(newDoctorId,"video_num",statsCaseClinicalDoctor.getVideoNum());
// 增加阅读数-视频
statsCaseClinicalDoctorDao.inc(newDoctorId,"video_read_num",statsCaseClinicalDoctor.getVideoReadNum());
// 增加收藏数-视频
statsCaseClinicalDoctorDao.inc(newDoctorId,"video_collect_num",statsCaseClinicalDoctor.getVideoCollectNum());
// 增加评论数-视频
statsCaseClinicalDoctorDao.inc(newDoctorId,"video_comment_num",statsCaseClinicalDoctor.getVideoCommentNum());
// 最后一篇文章发表时间
lastPushDate = caseClinicalArticleDao.selectLastArticlePushDateByDoctorId(newDoctorId);
if (lastPushDate != null){
statsCaseClinicalDoctor.setLastPushDate(lastPushDate);
statsCaseClinicalDoctorDao.updateById(statsCaseClinicalDoctor);
}
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return false;
}
return true;
}
}
@@ -65,7 +65,7 @@ public class UserCaseReadService {
// 文章
if (request.getType() == 1){
// 新增统计字段
boolean r = caseClinicalArticleService.IncClinicalArticleStats(request.getId(),1);
boolean r = caseClinicalArticleService.IncClinicalArticleStats(request.getId(),1,1);
if (!r){
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return false;