From b9b905a6747ebb6cb50aad43a26610a503416ebb Mon Sep 17 00:00:00 2001
From: lin <sbla5888@163.com>
Date: Mon, 26 Feb 2024 18:05:42 +0800
Subject: [PATCH] 物业公司居民评价平均分计算

---
 src/main/java/org/springblade/modules/property/service/impl/PropertyCompanyCommentServiceImpl.java |   22 +++++++++++++++++++++-
 src/main/java/org/springblade/modules/property/mapper/PropertyCompanyScoreMapper.java              |    1 +
 src/main/java/org/springblade/modules/property/service/impl/PropertyCompanyScoreServiceImpl.java   |    5 ++++-
 src/main/java/org/springblade/modules/property/service/IPropertyCompanyScoreService.java           |    1 +
 src/main/java/org/springblade/modules/property/mapper/PropertyCompanyScoreMapper.xml               |   15 +++++++++++++--
 5 files changed, 40 insertions(+), 4 deletions(-)

diff --git a/src/main/java/org/springblade/modules/property/mapper/PropertyCompanyScoreMapper.java b/src/main/java/org/springblade/modules/property/mapper/PropertyCompanyScoreMapper.java
index c71fc40..9e5c4ab 100644
--- a/src/main/java/org/springblade/modules/property/mapper/PropertyCompanyScoreMapper.java
+++ b/src/main/java/org/springblade/modules/property/mapper/PropertyCompanyScoreMapper.java
@@ -40,4 +40,5 @@
 	List<PropertyCompanyScoreVO> selectPropertyCompanyScorePage(IPage page, PropertyCompanyScoreVO propertyCompanyScore);
 
 
+    Integer getScore(Integer propertyCompanyId);
 }
diff --git a/src/main/java/org/springblade/modules/property/mapper/PropertyCompanyScoreMapper.xml b/src/main/java/org/springblade/modules/property/mapper/PropertyCompanyScoreMapper.xml
index c60c98d..479ed50 100644
--- a/src/main/java/org/springblade/modules/property/mapper/PropertyCompanyScoreMapper.xml
+++ b/src/main/java/org/springblade/modules/property/mapper/PropertyCompanyScoreMapper.xml
@@ -3,7 +3,8 @@
 <mapper namespace="org.springblade.modules.property.mapper.PropertyCompanyScoreMapper">
 
     <!-- 通用查询映射结果 -->
-    <resultMap id="propertyCompanyScoreResultMap" type="org.springblade.modules.property.entity.PropertyCompanyScoreEntity">
+    <resultMap id="propertyCompanyScoreResultMap"
+               type="org.springblade.modules.property.entity.PropertyCompanyScoreEntity">
         <result column="id" property="id"/>
         <result column="property_company_id" property="propertyCompanyId"/>
         <result column="score" property="score"/>
@@ -14,7 +15,17 @@
 
 
     <select id="selectPropertyCompanyScorePage" resultMap="propertyCompanyScoreResultMap">
-        select * from jczz_property_company_score where is_deleted = 0
+        select *
+        from jczz_property_company_score
+        where is_deleted = 0
+    </select>
+
+
+    <select id="getScore" resultType="java.lang.Integer">
+        select sum(score)
+        from jczz_property_company_score
+        where is_deleted = 0
+          and property_company_id = #{propertyCompanyId}
     </select>
 
 
diff --git a/src/main/java/org/springblade/modules/property/service/IPropertyCompanyScoreService.java b/src/main/java/org/springblade/modules/property/service/IPropertyCompanyScoreService.java
index 77b6541..4f30e50 100644
--- a/src/main/java/org/springblade/modules/property/service/IPropertyCompanyScoreService.java
+++ b/src/main/java/org/springblade/modules/property/service/IPropertyCompanyScoreService.java
@@ -40,4 +40,5 @@
 	IPage<PropertyCompanyScoreVO> selectPropertyCompanyScorePage(IPage<PropertyCompanyScoreVO> page, PropertyCompanyScoreVO propertyCompanyScore);
 
 
+	Integer getScore(Integer propertyCompanyId);
 }
diff --git a/src/main/java/org/springblade/modules/property/service/impl/PropertyCompanyCommentServiceImpl.java b/src/main/java/org/springblade/modules/property/service/impl/PropertyCompanyCommentServiceImpl.java
index 2e32d67..ca94ee8 100644
--- a/src/main/java/org/springblade/modules/property/service/impl/PropertyCompanyCommentServiceImpl.java
+++ b/src/main/java/org/springblade/modules/property/service/impl/PropertyCompanyCommentServiceImpl.java
@@ -17,13 +17,17 @@
 package org.springblade.modules.property.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.logging.log4j.util.Strings;
+import org.springblade.common.utils.SpringUtils;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.modules.property.entity.PropertyCompanyCommentEntity;
+import org.springblade.modules.property.entity.PropertyCompanyEntity;
 import org.springblade.modules.property.entity.PropertyCompanyScoreEntity;
 import org.springblade.modules.property.service.IPropertyCompanyScoreService;
+import org.springblade.modules.property.service.IPropertyCompanyService;
 import org.springblade.modules.property.vo.PropertyCompanyCommentVO;
 import org.springblade.modules.property.mapper.PropertyCompanyCommentMapper;
 import org.springblade.modules.property.service.IPropertyCompanyCommentService;
@@ -34,6 +38,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.Map;
 
 /**
@@ -116,7 +121,22 @@
 				// 新增
  				propertyCompanyScoreService.save(propertyCompanyScoreEntity);
 			}
-			// todo 计算物业公司评价平均分
+			// t 计算物业公司评价平均分
+
+			QueryWrapper<PropertyCompanyScoreEntity> queryWrapperTwo = new QueryWrapper<>();
+			queryWrapperTwo.eq("is_deleted",0).eq("property_company_id",propertyCompanyComment.getPropertyCompanyId());
+			// t统计物业公司总评价数
+			long count = propertyCompanyScoreService.count(queryWrapperTwo);
+			// 统计物业公司总评价分
+			Integer score = propertyCompanyScoreService.getScore(propertyCompanyComment.getPropertyCompanyId());
+			// 计算评价分
+			BigDecimal divide = BigDecimal.valueOf(score).divide(BigDecimal.valueOf(count));
+			// 更新物业评价平均分
+			PropertyCompanyEntity propertyCompanyEntity = new PropertyCompanyEntity();
+			propertyCompanyEntity.setId(propertyCompanyComment.getPropertyCompanyId());
+			propertyCompanyEntity.setEvaluateScore(divide);
+			IPropertyCompanyService bean = SpringUtils.getBean(IPropertyCompanyService.class);
+			bean.updateById(propertyCompanyEntity);
 		}
 	}
 }
diff --git a/src/main/java/org/springblade/modules/property/service/impl/PropertyCompanyScoreServiceImpl.java b/src/main/java/org/springblade/modules/property/service/impl/PropertyCompanyScoreServiceImpl.java
index 0e371e4..26b3052 100644
--- a/src/main/java/org/springblade/modules/property/service/impl/PropertyCompanyScoreServiceImpl.java
+++ b/src/main/java/org/springblade/modules/property/service/impl/PropertyCompanyScoreServiceImpl.java
@@ -39,5 +39,8 @@
 		return page.setRecords(baseMapper.selectPropertyCompanyScorePage(page, propertyCompanyScore));
 	}
 
-
+	@Override
+	public Integer getScore(Integer propertyCompanyId) {
+		return baseMapper.getScore(propertyCompanyId);
+	}
 }

--
Gitblit v1.9.3