Browse Source

项目数与评分同步到管理员表

anderx 1 year ago
parent
commit
145c1b9f43

+ 86 - 0
src/main/java/com/goafanti/common/dao/AdminProjectStatisticsMapper.java

@@ -0,0 +1,86 @@
+package com.goafanti.common.dao;
+
+import com.goafanti.common.model.AdminProjectStatistics;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.data.domain.Pageable;
+
+import java.util.List;
+
+/**
+ * 管理员用户项目评分表(AdminProjectStatistics)表数据库访问层
+ *
+ * @author makejava
+ * @since 2024-09-29 11:44:37
+ */
+public interface AdminProjectStatisticsMapper {
+
+    /**
+     * 通过ID查询单条数据
+     *
+     * @param id 主键
+     * @return 实例对象
+     */
+    AdminProjectStatistics queryById(Integer id);
+
+
+    /**
+     * 查询指定行数据
+     *
+     * @param adminProjectStatistics 查询条件
+     * @param pageable               分页对象
+     * @return 对象列表
+     */
+    List<AdminProjectStatistics> findAdminProjectStatisticsList(AdminProjectStatistics adminProjectStatistics, @Param("pageable") Pageable pageable);
+
+    /**
+     * 统计总行数
+     *
+     * @param adminProjectStatistics 查询条件
+     * @return 总行数
+     */
+    int findAdminProjectStatisticsCount(AdminProjectStatistics adminProjectStatistics);
+
+    /**
+     * 新增数据
+     *
+     * @param adminProjectStatistics 实例对象
+     * @return 影响行数
+     */
+    int insert(AdminProjectStatistics adminProjectStatistics);
+
+    /**
+     * 批量新增数据(MyBatis原生foreach方法)
+     *
+     * @param entities List<AdminProjectStatistics> 实例对象列表
+     * @return 影响行数
+     */
+    int insertBatch(@Param("entities") List<AdminProjectStatistics> entities);
+
+    /**
+     * 批量新增或按主键更新数据(MyBatis原生foreach方法)
+     *
+     * @param entities List<AdminProjectStatistics> 实例对象列表
+     * @return 影响行数
+     * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参
+     */
+    int insertOrUpdateBatch(@Param("entities") List<AdminProjectStatistics> entities);
+
+    /**
+     * 修改数据
+     *
+     * @param adminProjectStatistics 实例对象
+     * @return 影响行数
+     */
+    int update(AdminProjectStatistics adminProjectStatistics);
+
+    /**
+     * 通过主键删除数据
+     *
+     * @param id 主键
+     * @return 影响行数
+     */
+    int deleteById(Integer id);
+
+    AdminProjectStatistics queryByAid(String aid);
+}
+

+ 8 - 0
src/main/java/com/goafanti/common/mapper/AdminProjectStatisticsMapper.xml

@@ -101,6 +101,7 @@
         </where>
     </select>
 
+
     <!--新增所有列-->
     <insert id="insert" keyProperty="id" useGeneratedKeys="true">
         insert into admin_project_statistics(aid, htSatCount, htSatScoreCount, htSatScoreAverage, memberCount,
@@ -177,5 +178,12 @@
         where id = #{id}
     </delete>
 
+    <select id="queryByAid"  resultMap="AdminProjectStatisticsMap">
+        select
+        <include refid="AdminProjectStatisticsAllSql"/>
+        from admin_project_statistics
+        where aid = #{aid}
+    </select>
+
 </mapper>
 

+ 2 - 2
src/main/java/com/goafanti/common/model/AdminProjectStatistics.java

@@ -8,10 +8,10 @@ import java.util.Date;
  * 管理员用户项目评分表(AdminProjectStatistics)实体类
  *
  * @author makejava
- * @since 2024-09-29 11:42:03
+ * @since 2024-09-29 11:44:37
  */
 public class AdminProjectStatistics implements Serializable {
-    private static final long serialVersionUID = 416767347864934366L;
+    private static final long serialVersionUID = -45736366275028943L;
     /**
      * id
      */

+ 21 - 0
src/main/java/com/goafanti/order/service/impl/TaskScoreServiceImpl.java

@@ -1,8 +1,10 @@
 package com.goafanti.order.service.impl;
 
+import com.goafanti.common.dao.AdminProjectStatisticsMapper;
 import com.goafanti.common.dao.TOrderNewMapper;
 import com.goafanti.common.dao.TOrderTaskMapper;
 import com.goafanti.common.dao.TaskScoreMapper;
+import com.goafanti.common.model.AdminProjectStatistics;
 import com.goafanti.common.model.TOrderNew;
 import com.goafanti.common.model.TOrderTask;
 import com.goafanti.common.model.TaskScore;
@@ -33,6 +35,8 @@ public class TaskScoreServiceImpl extends BaseMybatisDao<TaskScoreMapper> implem
     private TOrderTaskMapper tOrderTaskMapper;
     @Resource
     private TOrderNewMapper tOrderNewMapper;
+    @Resource
+    private AdminProjectStatisticsMapper adminProjectStatisticsMapper;
 
 
     @Override
@@ -69,11 +73,13 @@ public class TaskScoreServiceImpl extends BaseMybatisDao<TaskScoreMapper> implem
     private void updateAdminByTid(Integer tid) {
         List<TOrderTaskBo> tOrderTaskBos = tOrderTaskMapper.selectAdminTaskByTid(tid);
         int size = tOrderTaskBos.size();
+        String aid=null;
         //项目数量
         int htSatCount = 0,htSatScoreCount = 0,memberCount=0,memberScoreCount = 0;
         BigDecimal ht_satSum=new BigDecimal(0);
         BigDecimal hySum=new BigDecimal(0);
         for (TOrderTaskBo tOrderTaskBo : tOrderTaskBos) {
+            if (aid==null)aid=tOrderTaskBo.getTaskReceiver();
             if (tOrderTaskBo.getcSort()==3||tOrderTaskBo.getcSort()==9){
                 htSatCount++;
                 if (tOrderTaskBo.getScoreStatus()==2){
@@ -92,6 +98,21 @@ public class TaskScoreServiceImpl extends BaseMybatisDao<TaskScoreMapper> implem
         BigDecimal memberScoreAverage = BigDecimal.ZERO;
         if (htSatCount>0)htSatScoreAverage=ht_satSum.divide(new BigDecimal(htSatCount),2, RoundingMode.HALF_UP);
         if (memberCount>0)memberScoreAverage=hySum.divide(new BigDecimal(memberCount),2, RoundingMode.HALF_UP);
+        AdminProjectStatistics adminProjectStatistics = adminProjectStatisticsMapper.queryByAid(aid);
+        AdminProjectStatistics aps=new AdminProjectStatistics();
+        aps.setAid(aid);
+        aps.setHtsatcount(htSatCount);
+        aps.setHtsatscoreaverage(htSatScoreAverage.intValue());
+        aps.setHtsatscorecount(htSatScoreCount);
+        aps.setMemberscoreaverage(memberScoreAverage.intValue());
+        aps.setMemberscorecount(memberScoreCount);
+        aps.setMembercount(memberCount);
+        if (adminProjectStatistics==null){
+            adminProjectStatisticsMapper.insert(aps);
+        }else {
+            aps.setId(adminProjectStatistics.getId());
+            adminProjectStatisticsMapper.update(aps);
+        }
     }
 
     /**