Browse Source

获取所有项目的成本、每个项目的成本

Reiskuchen 5 years ago
parent
commit
66010a51f2

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

@@ -35,6 +35,16 @@ public class ProjectController {
         return projectService.getProjectList(request);
     }
 
+    /**
+     * 分页获取项目列表
+     * pageIndex 页数
+     * pageSize 页面大小
+     */
+    @RequestMapping("/getProjectPage")
+    public HttpRespMsg getProjectPage(@RequestParam Integer pageIndex, @RequestParam Integer pageSize) {
+        return projectService.getProjectPage(pageIndex, pageSize, request);
+    }
+
     /**
      * 添加或编辑项目
      * id 要编辑项目的id 可填
@@ -53,5 +63,22 @@ public class ProjectController {
     public HttpRespMsg deleteProject(@RequestParam Integer id) {
         return projectService.deleteProject(id);
     }
+
+    /**
+     * 获取查询者所在公司每个项目的工时成本
+     */
+    @RequestMapping("/getTimeCost")
+    public HttpRespMsg getTimeCost() {
+        return projectService.getTimeCost(request);
+    }
+
+    /**
+     * 获取某个项目每个人分别需要的工时
+     * id 项目id
+     */
+    @RequestMapping("/getProjectCost")
+    public HttpRespMsg getProjectCost(@RequestParam Integer id) {
+        return projectService.getProjectCost(id, request);
+    }
 }
 

+ 7 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java

@@ -2,15 +2,20 @@ package com.management.platform.mapper;
 
 import com.management.platform.entity.Project;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
- *  Mapper 接口
+ * Mapper 接口
  * </p>
  *
  * @author 吴涛涛
  * @since 2020-01-03
  */
 public interface ProjectMapper extends BaseMapper<Project> {
-
+    List<Map<String, Object>> getTimeCost(@Param("companyId") Integer companyId);
+    List<Map<String, Object>> getProjectCost(@Param("projectId") Integer projectId);
 }

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

@@ -17,7 +17,13 @@ import javax.servlet.http.HttpServletRequest;
 public interface ProjectService extends IService<Project> {
     HttpRespMsg getProjectList(HttpServletRequest request);
 
+    HttpRespMsg getProjectPage(Integer pageIndex, Integer pageSize, HttpServletRequest request);
+
     HttpRespMsg editProject(Integer id, String name, HttpServletRequest request);
 
     HttpRespMsg deleteProject(Integer id);
+
+    HttpRespMsg getTimeCost(HttpServletRequest request);
+
+    HttpRespMsg getProjectCost(Integer projectId, HttpServletRequest request);
 }

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

@@ -1,6 +1,7 @@
 package com.management.platform.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.management.platform.entity.Project;
 import com.management.platform.entity.Report;
 import com.management.platform.entity.User;
@@ -14,6 +15,8 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -47,6 +50,22 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         return httpRespMsg;
     }
 
+    //分页获取项目列表
+    @Override
+    public HttpRespMsg getProjectPage(Integer pageIndex, Integer pageSize, HttpServletRequest request) {
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        try {
+            //通过公司id获取该公司所有的项目列表
+            Integer companyId = userMapper.selectById(request.getHeader("Token")).getCompanyId();
+            httpRespMsg.data = projectMapper.selectPage(new Page<Project>(pageIndex, pageSize),
+                    new QueryWrapper<Project>().eq("company_id", companyId));
+        } catch (NullPointerException e) {
+            httpRespMsg.setError("验证失败");
+            return httpRespMsg;
+        }
+        return httpRespMsg;
+    }
+
     //添加或编辑项目
     @Override
     public HttpRespMsg editProject(Integer id, String name, HttpServletRequest request) {
@@ -86,4 +105,43 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         }
         return httpRespMsg;
     }
+
+    //获取查询者所在公司每个项目的工时成本
+    @Override
+    public HttpRespMsg getTimeCost(HttpServletRequest request) {
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        try {
+            Integer companyId = userMapper.selectById(request.getHeader("Token")).getCompanyId();
+            List<Map<String, Object>> resultList = projectMapper.getTimeCost(companyId);
+            for (Map<String, Object> map : resultList) {
+                if (!map.containsKey("cost")) {
+                    map.put("cost", 0);
+                }
+            }
+            httpRespMsg.data = resultList;
+        } catch (NullPointerException e) {
+            httpRespMsg.setError("验证失败");
+            return httpRespMsg;
+        }
+        return httpRespMsg;
+    }
+
+    //获取某个项目每个人分别需要的工时
+    @Override
+    public HttpRespMsg getProjectCost(Integer projectId, HttpServletRequest request) {
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        try {
+            Integer companyId = userMapper.selectById(request.getHeader("Token")).getCompanyId();
+            //首先查看有无浏览权限
+            if (!projectMapper.selectById(projectId).getCompanyId().equals(companyId)) {
+                httpRespMsg.setError("无权查看其他公司的项目详情");
+            } else {
+                httpRespMsg.data = projectMapper.getProjectCost(projectId);
+            }
+        } catch (NullPointerException e) {
+            httpRespMsg.setError("验证失败");
+            return httpRespMsg;
+        }
+        return httpRespMsg;
+    }
 }

+ 22 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -4,9 +4,9 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.management.platform.entity.Project">
-        <id column="id" property="id" />
-        <result column="project_name" property="projectName" />
-        <result column="company_id" property="companyId" />
+        <id column="id" property="id"/>
+        <result column="project_name" property="projectName"/>
+        <result column="company_id" property="companyId"/>
     </resultMap>
 
     <!-- 通用查询结果列 -->
@@ -14,4 +14,23 @@
         id, project_name, company_id
     </sql>
 
+    <!--获取查询者所在公司每个项目的工时成本-->
+    <select id="getTimeCost" resultType="java.util.Map">
+        SELECT a.project_name AS project, SUM(b.working_time) AS cost
+        FROM project AS a
+        LEFT JOIN report AS b ON b.project_id = a.id
+        WHERE a.company_id = #{companyId}
+        GROUP BY a.id
+        ORDER BY a.id ASC
+    </select>
+
+    <!--获取某个项目每个人分别需要的工时-->
+    <select id="getProjectCost" resultType="java.util.Map">
+        SELECT b.name, SUM(a.working_time) AS cost
+        FROM report AS a
+        JOIN USER AS b ON a.creator_id = b.id
+        WHERE a.project_id = #{projectId}
+        GROUP BY b.id
+        ORDER BY b.id ASC
+    </select>
 </mapper>

+ 2 - 0
fhKeeper/formulahousekeeper/timesheet/src/port.js

@@ -27,6 +27,8 @@ export default {
         list: '/project/getProjectList', //获取项目列表
         delete: '/project/deleteProject', //删除项目
         add: '/project/editProject', //新增项目
+        listCost: '/project/getTimeCost', //获取所有项目花费的工时
+        projectCost: '/project/getProjectCost', //获取某个项目每个人分别花费的工时
     },
 
     //日报

+ 4 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -52,7 +52,10 @@
                       <b>{{item2.project}}</b>
                     </p>
                     <p>时长:{{item2.time}}h</p>
-                    <p>事项:<span v-html='item2.content'></span></p>
+                    <p>
+                      事项:
+                      <span v-html="item2.content"></span>
+                    </p>
                   </el-card>
                 </el-timeline-item>
               </el-timeline>