瀏覽代碼

分类工时预警接口和查询表接口

seyason 1 年之前
父節點
當前提交
574f216c84
共有 12 個文件被更改,包括 263 次插入0 次删除
  1. 54 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/CategoryRatioTblSettingController.java
  2. 4 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java
  3. 56 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/CategoryRatioTblSetting.java
  4. 13 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/UserCateTimeVo.java
  5. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/CategoryRatioTblSettingMapper.java
  6. 3 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java
  7. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/CategoryRatioTblSettingService.java
  8. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java
  9. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/CategoryRatioTblSettingServiceImpl.java
  10. 51 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  11. 18 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/CategoryRatioTblSettingMapper.xml
  12. 10 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

+ 54 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/CategoryRatioTblSettingController.java

@@ -0,0 +1,54 @@
+package com.management.platform.controller;
+
+
+import com.management.platform.entity.CategoryRatioTblSetting;
+import com.management.platform.service.CategoryRatioTblSettingService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-01-01
+ */
+@RestController
+@RequestMapping("/category-ratio-tbl-setting")
+public class CategoryRatioTblSettingController {
+
+    @Resource
+    private HttpServletRequest request;
+
+    @Resource
+    private CategoryRatioTblSettingService categoryRatioTblSettingService;
+
+    @RequestMapping("/get")
+    public HttpRespMsg get(Integer companyId) {
+        HttpRespMsg msg = new HttpRespMsg();
+        CategoryRatioTblSetting byId = categoryRatioTblSettingService.getById(companyId);
+        if (byId == null) {
+            byId = new CategoryRatioTblSetting();
+            byId.setCompanyId(companyId);
+        }
+        msg.setData(byId);
+        return msg;
+    }
+
+    @RequestMapping("/update")
+    public HttpRespMsg update(CategoryRatioTblSetting categoryRatioTblSetting) {
+        HttpRespMsg msg = new HttpRespMsg();
+        categoryRatioTblSettingService.saveOrUpdate(categoryRatioTblSetting);
+        return msg;
+    }
+
+
+}
+

+ 4 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java

@@ -1441,5 +1441,9 @@ public class ProjectController {
     }
 
 
+    @RequestMapping("/getMembProjectCateRatio")
+    public HttpRespMsg getMembProjectCateRatio(String startDate,String endDate, Integer onlyShowWarning){
+        return projectService.getMembProjectCateRatio(startDate,endDate, onlyShowWarning);
+    }
 }
 

+ 56 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/CategoryRatioTblSetting.java

@@ -0,0 +1,56 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-01-01
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class CategoryRatioTblSetting extends Model<CategoryRatioTblSetting> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 公司id做主键
+     */
+    @TableId("company_id")
+    private Integer companyId;
+
+    /**
+     * 检测的项目分类id
+     */
+    @TableField("monitor_category_id")
+    private Integer monitorCategoryId;
+
+    /**
+     * 百分比
+     */
+    @TableField("ratio")
+    private Integer ratio;
+
+    /**
+     * 0-低于,1-高于
+     */
+    @TableField("more_or_less")
+    private Integer moreOrLess;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.companyId;
+    }
+
+}

+ 13 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/UserCateTimeVo.java

@@ -0,0 +1,13 @@
+package com.management.platform.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class UserCateTimeVo {
+    public String userId;
+    public String name;
+    public Integer category;
+    public String categoryName;
+    public Double workingTime;
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/CategoryRatioTblSettingMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.CategoryRatioTblSetting;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-01-01
+ */
+public interface CategoryRatioTblSettingMapper extends BaseMapper<CategoryRatioTblSetting> {
+
+}

+ 3 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java

@@ -6,6 +6,7 @@ import com.management.platform.entity.TaskGroup;
 import com.management.platform.entity.vo.CustomerProject;
 import com.management.platform.entity.vo.ProjectWithStage;
 import com.management.platform.entity.vo.StageCost;
+import com.management.platform.entity.vo.UserCateTimeVo;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Update;
 
@@ -162,4 +163,6 @@ public interface ProjectMapper extends BaseMapper<Project> {
     List<Map<String, Object>> getFTEData(Integer companyId, String startDate, String endDate, Integer start, Integer size, String area, List<Integer> branchDepartment, List<Integer> deptIds);
 
     List<Map<String, Object>> getTimeCostByToken(Integer companyId, String startDate, String endDate);
+
+    List<UserCateTimeVo> getMembProjectCateTime(Integer companyId, String startDate, String endDate);
 }

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/CategoryRatioTblSettingService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.CategoryRatioTblSetting;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-01-01
+ */
+public interface CategoryRatioTblSettingService extends IService<CategoryRatioTblSetting> {
+
+}

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java

@@ -270,4 +270,6 @@ public interface ProjectService extends IService<Project> {
     HttpRespMsg getProjectEstimatedWork(Integer pageIndex, Integer pageSize, Integer projectId, HttpServletRequest request);
 
     HttpRespMsg getProjectFillTime(HttpServletRequest request, Integer projectId);
+
+    HttpRespMsg getMembProjectCateRatio(String startDate, String endDate, Integer onlyShowWarning);
 }

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/CategoryRatioTblSettingServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.CategoryRatioTblSetting;
+import com.management.platform.mapper.CategoryRatioTblSettingMapper;
+import com.management.platform.service.CategoryRatioTblSettingService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-01-01
+ */
+@Service
+public class CategoryRatioTblSettingServiceImpl extends ServiceImpl<CategoryRatioTblSettingMapper, CategoryRatioTblSetting> implements CategoryRatioTblSettingService {
+
+}

+ 51 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -131,6 +131,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     @Resource
     ProjectBasecostMapper projectBasecostMapper;
     @Resource
+    CategoryRatioTblSettingMapper categoryRatioTblSettingMapper;
+    @Resource
     CompanyMapper companyMapper;
     @Resource
     StagesMapper stagesMapper;
@@ -11957,6 +11959,55 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         return msg;
     }
 
+    @Override
+    public HttpRespMsg getMembProjectCateRatio(String startDate, String endDate, Integer onlyShowWarning) {
+        HttpRespMsg msg = new HttpRespMsg();
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        List<UserCateTimeVo> timeList = projectMapper.getMembProjectCateTime(companyId, startDate, endDate);
+        CategoryRatioTblSetting categoryRatioTblSetting = categoryRatioTblSettingMapper.selectById(companyId);
+        //把timeList按照用户分组
+        Map<String, List<UserCateTimeVo>> userMap = timeList.stream().collect(Collectors.groupingBy(UserCateTimeVo::getUserId));
+        List<ProjectCategory> categoryList = projectCategoryMapper.selectList(new QueryWrapper<ProjectCategory>().eq("company_id", companyId));
+        List<Map> retList = new ArrayList();
+        for (Map.Entry<String, List<UserCateTimeVo>> entry : userMap.entrySet()) {
+            Map<String, Object> map = new HashMap<>();
+            map.put("userId", entry.getKey());
+            List<UserCateTimeVo> value = entry.getValue();
+            map.put("userName", value.get(0).getName());
+            map.put("cateTimeList", value);
+            //是否仅达到预警的用户列表
+            if (onlyShowWarning == 1) {
+                //获取用户的总工时
+                Double sum = value.stream().mapToDouble(UserCateTimeVo::getWorkingTime).sum();
+                if (categoryRatioTblSetting != null && categoryRatioTblSetting.getRatio() != null) {
+                    Optional<UserCateTimeVo> first = value.stream().filter(v -> categoryRatioTblSetting.getMonitorCategoryId().equals(v.getCategory())).findFirst();
+                    if (first.isPresent()) {
+                        UserCateTimeVo userCateTimeVo = first.get();
+                        //获取用户的总工时预警
+                        int ratio = categoryRatioTblSetting.getRatio();
+                        if (categoryRatioTblSetting.getMoreOrLess() == 1) {
+                            //大于预设比例的需要预警,小于等于则跳过
+                            if (userCateTimeVo.getWorkingTime() <= sum * ratio / 100) {
+                                continue;
+                            }
+                        } else {
+                            //小于预设比例的需要预警;大于等于则跳过
+                            if (userCateTimeVo.getWorkingTime() >= sum * ratio / 100) {
+                                continue;
+                            }
+                        }
+                    }
+                }
+            }
+            retList.add(map);
+        }
+        HashMap retMap = new HashMap();
+        retMap.put("categoryList", categoryList);
+        retMap.put("userList", retList);
+        msg.data = retMap;
+        return msg;
+    }
+
 
 //    public void setDeptIdList(Integer departmentId,List<Integer> deptIds){
 //        LambdaQueryWrapper<Department> lqw = new LambdaQueryWrapper<>();

+ 18 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/CategoryRatioTblSettingMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.CategoryRatioTblSettingMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.CategoryRatioTblSetting">
+        <id column="company_id" property="companyId" />
+        <result column="monitor_category_id" property="monitorCategoryId" />
+        <result column="ratio" property="ratio" />
+        <result column="more_or_less" property="moreOrLess" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        company_id, monitor_category_id, ratio, more_or_less
+    </sql>
+
+</mapper>

+ 10 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -1765,4 +1765,14 @@
         GROUP BY a.id,b.creator_id
         ORDER BY a.id ASC
     </select>
+    <!--获取员工的项目分类工时统计数据 -->
+    <select id="getMembProjectCateTime" resultType="com.management.platform.entity.vo.UserCateTimeVo">
+        SELECT user.id AS userId, user.`name`, project.`category`, project.`category_name` AS categoryName, SUM(report.`working_time`) AS workingTime FROM report LEFT JOIN USER ON user.id = report.`creator_id`
+        LEFT JOIN project ON project.id = report.`project_id`
+        WHERE report.`company_id` = #{companyId}
+        AND report.`create_date` BETWEEN #{startDate} and #{endDate}
+        AND report.state = 1
+        GROUP BY user.id, project.`category`
+    </select>
+
 </mapper>