Jelajahi Sumber

工时统计页添加按照项目状态

zhouyy 3 minggu lalu
induk
melakukan
114fa05b4c

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

@@ -270,13 +270,8 @@ public class ProjectController {
      * 获取查询者所在公司每个项目的工时成本
      */
     @RequestMapping("/getTimeCost")
-    public HttpRespMsg getTimeCost(String startDate, String endDate, String userIds,Integer projectId,Integer type) {
-        return projectService.getTimeCost(startDate, endDate, userIds,projectId,type, request);
-    }
-
-    @RequestMapping("/getTimeCostByStatus")
-    public HttpRespMsg getTimeCostByStatus(String startDate, String endDate, String userIds,Integer status,Integer type) {
-        return projectService.getTimeCostByStatus(startDate, endDate, userIds,status,type, request);
+    public HttpRespMsg getTimeCost(String startDate, String endDate, String userIds,Integer projectId,Integer type, @RequestParam(required = false) Integer status) {
+        return projectService.getTimeCost(startDate, endDate, userIds,projectId,type,status, request);
     }
 
     /**
@@ -299,8 +294,8 @@ public class ProjectController {
      * 导出查询者所在公司每个项目的工时成本
      */
     @RequestMapping("/exportTimeCost")
-    public HttpRespMsg exportTimeCost(@RequestParam(required = false, defaultValue = "0") Integer withMainProject, String exportContent,String startDate, String endDate, Integer projectId, String userIds, Boolean projectSum,Integer type,Integer deptId,@RequestParam(defaultValue = "1") Integer stateKey, @RequestParam(required = false, defaultValue = "0") Integer withPercent,Integer projectCategoryId) {
-        return projectService.exportTimeCost(withMainProject, exportContent,startDate, endDate, projectId, userIds, projectSum,type,deptId,stateKey, withPercent,projectCategoryId, request);
+    public HttpRespMsg exportTimeCost(@RequestParam(required = false, defaultValue = "0") Integer withMainProject, @RequestParam(required = false) Integer status,String exportContent,String startDate, String endDate, Integer projectId, String userIds, Boolean projectSum,Integer type,Integer deptId,@RequestParam(defaultValue = "1") Integer stateKey, @RequestParam(required = false, defaultValue = "0") Integer withPercent,Integer projectCategoryId) {
+        return projectService.exportTimeCost(withMainProject, exportContent,startDate, endDate, projectId, userIds, projectSum,type,deptId,stateKey, withPercent,projectCategoryId,status, request);
     }
 
     @RequestMapping("/exportTimeByProjectAndEmployee")

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

@@ -29,12 +29,8 @@ public interface ProjectMapper extends BaseMapper<Project> {
     List<Map<String, Object>> getTimeCost(@Param("companyId") Integer companyId, @Param("startDate") String startDate, @Param("endDate") String endDate,
                                           @Param("projectId") Integer projectId, @Param("userIdList") List<String> userIdList,
                                           @Param("deptIds")List<Integer> deptIds,@Param("filterDeptIds")List<Integer> filterDeptIds, @Param("deptRelatedProjectIds") List<Integer> deptRelatedProjectIds,
-                                          @Param("projectIds") List<Integer> projectIds, @Param("inchargeUserIds") List<String> inchargeUserIds,@Param("categoryId") Integer categoryId);
-
-    List<Map<String, Object>> getTimeCostByStatus(@Param("companyId") Integer companyId, @Param("startDate") String startDate, @Param("endDate") String endDate,
-                                          @Param("status") Integer status, @Param("userIdList") List<String> userIdList,
-                                          @Param("deptIds")List<Integer> deptIds,@Param("filterDeptIds")List<Integer> filterDeptIds, @Param("deptRelatedProjectIds") List<Integer> deptRelatedProjectIds,
-                                          @Param("projectIds") List<Integer> projectIds, @Param("inchargeUserIds") List<String> inchargeUserIds,@Param("categoryId") Integer categoryId);
+                                          @Param("projectIds") List<Integer> projectIds, @Param("inchargeUserIds") List<String> inchargeUserIds
+            ,@Param("categoryId") Integer categoryId,@Param("status") Integer status);
 
     List<Map<String, Object>> getCustomDataSum(@Param("companyId") Integer companyId, @Param("startDate") String startDate, @Param("endDate") String endDate,
                                           @Param("projectId") Integer projectId, @Param("userId") String userId);

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

@@ -66,7 +66,7 @@ public interface ProjectService extends IService<Project> {
 
     HttpRespMsg deleteProject(Integer id, Integer force);
 
-    HttpRespMsg getTimeCost(String startDate, String endDate, String userIds,Integer projectId, Integer type,HttpServletRequest request);
+    HttpRespMsg getTimeCost(String startDate, String endDate, String userIds,Integer projectId, Integer type,Integer status,HttpServletRequest request);
 
     HttpRespMsg getProjectCost(String startDate, String endDate, Integer projectId,Integer stateKey, HttpServletRequest request);
 
@@ -74,7 +74,7 @@ public interface ProjectService extends IService<Project> {
 
     HttpRespMsg getAllMembCost(String startDate, String endDate, Integer projectId, HttpServletRequest request);
 
-    HttpRespMsg exportTimeCost(Integer withMainProject, String exportContent,String startDate, String endDate, Integer projectId,String userIds, Boolean projectSum,Integer type,Integer deptId,Integer stateKey, Integer withPercent,Integer projectCategoryId, HttpServletRequest request);
+    HttpRespMsg exportTimeCost(Integer withMainProject, String exportContent,String startDate, String endDate, Integer projectId,String userIds, Boolean projectSum,Integer type,Integer deptId,Integer stateKey, Integer withPercent,Integer projectCategoryId,Integer status, HttpServletRequest request);
 
     HttpRespMsg updateProgress(Integer id, Integer progress, HttpServletRequest request);
 
@@ -331,5 +331,4 @@ public interface ProjectService extends IService<Project> {
 
     HttpRespMsg exportTaskPlanFTEData(String monthStart, String monthEnd, String area, String userId, Integer departmentId, HttpServletRequest request);
 
-    HttpRespMsg getTimeCostByStatus(String startDate, String endDate, String userIds, Integer status, Integer type, HttpServletRequest request);
 }

+ 4 - 108
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -2581,7 +2581,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 
     //获取查询者所在公司每个项目的工时成本
     @Override
-    public HttpRespMsg getTimeCost(String startDate, String endDate, String userIds,Integer projectId, Integer type,HttpServletRequest request) {
+    public HttpRespMsg getTimeCost(String startDate, String endDate, String userIds,Integer projectId, Integer type,Integer status,HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         try {
             //根据系统配置的员工成本计算方式,按固定时薪还是固定月薪,分情况计算。
@@ -2642,111 +2642,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 String[] split = userIds.split(",");
                 userIdList = Arrays.asList(split);
             }
-            List<Map<String, Object>> list = projectMapper.getTimeCost(companyId, startDate, endDate, projectId, userIdList,deptIds,null, deptRelatedProjectIds, projectIds, inchargeUserIds,null);
-            BigDecimal totalMoneyCost = BigDecimal.valueOf(0);
-            for (Map<String, Object> map : list) {
-                if (!map.containsKey("cost")) {
-                    map.put("cost", 0);
-                }
-                if (!map.containsKey("costMoney")) {
-                    map.put("costMoney", 0);
-                } else {
-                    totalMoneyCost = totalMoneyCost.add((BigDecimal)map.get("costMoney"));
-                }
-            }
-
-            if (type.equals(0)){
-                list = list.stream().sorted(Comparator.comparing(l -> -Double.parseDouble(l.get("costMoney").toString()))).collect(Collectors.toList());
-            }else {
-                list = list.stream().sorted(Comparator.comparing(l -> -Double.parseDouble(l.get("cost").toString()))).collect(Collectors.toList());
-            }
-            resultMap.put("costList", list);
-            resultMap.put("totalMoneyCost", totalMoneyCost);
-            if(functionCostList.size()==0){
-                resultMap.put("totalCostMoney",new BigDecimal(0));
-                list.forEach(li->{
-                    li.put("costMoney",new BigDecimal(0));
-                });
-            }
-            if(functionTimeList.size()==0){
-                list.forEach(li->{
-                    li.put("cost",0.0);
-                });
-            }
-            httpRespMsg.data = resultMap;
-        } catch (NullPointerException e) {
-            e.printStackTrace();
-            //httpRespMsg.setError("验证失败");
-            httpRespMsg.setError(MessageUtils.message("access.verificationError"));
-            return httpRespMsg;
-        }
-
-        return httpRespMsg;
-    }
-
-    @Override
-    public HttpRespMsg getTimeCostByStatus(String startDate, String endDate, String userIds,Integer status, Integer type,HttpServletRequest request) {
-        HttpRespMsg httpRespMsg = new HttpRespMsg();
-        try {
-            //根据系统配置的员工成本计算方式,按固定时薪还是固定月薪,分情况计算。
-            User targetUser = userMapper.selectById(request.getHeader("Token"));
-            Integer companyId = targetUser.getCompanyId();
-            Map<String, Object> resultMap = new HashMap<>();
-            //当前用户管理部门
-            List<Integer> deptIds=null;
-            List<Department> allDepartmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id",companyId));
-            List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", targetUser.getId()).eq("company_id", companyId));
-            List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", targetUser.getId()));
-            List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看全公司");
-            List<SysRichFunction> functionDpartList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看负责部门");
-            List<SysRichFunction> functionTimeList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看工时统计");
-            List<SysRichFunction> functionCostList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看成本统计");
-            List<Integer> deptRelatedProjectIds = new ArrayList<>();
-            List<Integer> projectIds = null;
-            //针对威派格,部门的主要和其他负责人需要查看部门下人员负责的项目或者项目下的任务分组的工时
-            boolean containDeptMembInchargeProjects = targetUser.getCompanyId() == 936;
-            List<String> inchargeUserIds = null;
-            //判断查看权限
-            if(functionAllList.size()==0){
-                deptIds=new ArrayList<>();
-                deptIds.add(-1);
-
-                //获取负责的部门的相关的项目,对于这些项目是有查看全部参与人的权限的
-                List<Integer> allMyManagedDeptIds = new ArrayList<>();
-                List<Integer> collect = departmentList.stream().map(dm -> dm.getDepartmentId()).distinct().collect(Collectors.toList());
-                List<Integer> otherCollect = departmentOtherManagerList.stream().map(dom -> dom.getDepartmentId()).distinct().collect(Collectors.toList());
-                collect.addAll(otherCollect);
-                for (Integer integer : collect) {
-                    List<Integer> branchDepartment = getBranchDepartment(integer, allDepartmentList);
-                    allMyManagedDeptIds.addAll(branchDepartment);
-                }
-                if (allMyManagedDeptIds.size() > 0) {
-                    List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().select("id").in("dept_id", allMyManagedDeptIds));
-                    deptRelatedProjectIds = projectList.stream().map(Project::getId).collect(Collectors.toList());
-                }
-
-                //有限匹配项目经理的数据视角
-                List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().select("id").eq("incharger_id", targetUser.getId()));
-                if (projectList.size() > 0) {
-                    projectIds = projectList.stream().map(Project::getId).collect(Collectors.toList());
-                    deptIds = null;
-                } else {
-                    if(functionDpartList.size()>0){
-                        if(functionTimeList.size()>0||functionCostList.size()>0){
-                            deptIds.addAll(allMyManagedDeptIds);
-                        }
-                        if (containDeptMembInchargeProjects && deptIds.size() > 1) {
-                            inchargeUserIds = userMapper.selectList(new QueryWrapper<User>().select("id").in("department_id", deptIds)).stream().map(User::getId).collect(Collectors.toList());
-                        }
-                    }
-                }
-            }
-            List<String> userIdList=new ArrayList<>();
-            if(userIds!=null&&userIds.length()>0){
-                String[] split = userIds.split(",");
-                userIdList = Arrays.asList(split);
-            }
-            List<Map<String, Object>> list = projectMapper.getTimeCostByStatus(companyId, startDate, endDate, status, userIdList,deptIds,null, deptRelatedProjectIds, projectIds, inchargeUserIds,null);
+            List<Map<String, Object>> list = projectMapper.getTimeCost(companyId, startDate, endDate, projectId, userIdList,deptIds,null, deptRelatedProjectIds, projectIds, inchargeUserIds,null,status);
             BigDecimal totalMoneyCost = BigDecimal.valueOf(0);
             for (Map<String, Object> map : list) {
                 if (!map.containsKey("cost")) {
@@ -2938,7 +2834,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     //导出查询者所在公司每个项目的工时成本,包括项目人员明细统计
     @Override
     public HttpRespMsg exportTimeCost(Integer withMainProject, String exportContent,String startDate, String endDate,Integer projectId, String userIds,
-                                      Boolean projectSum,Integer type,Integer deptId, Integer stateKey, Integer withPercent,Integer projectCategoryId, HttpServletRequest request) {
+                                      Boolean projectSum,Integer type,Integer deptId, Integer stateKey, Integer withPercent,Integer projectCategoryId,Integer status, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         try {
             User targetUser = userMapper.selectById(request.getHeader("Token"));
@@ -3019,7 +2915,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 String[] split = userIds.split(",");
                 userIdList = Arrays.asList(split);
             }
-            List<Map<String, Object>> list = projectMapper.getTimeCost(companyId, startDate, endDate, projectId, userIdList,deptIds,filterDeptIds,deptRelatedProjectIds, manProjectIds, inchargeUserIds,projectCategoryId);
+            List<Map<String, Object>> list = projectMapper.getTimeCost(companyId, startDate, endDate, projectId, userIdList,deptIds,filterDeptIds,deptRelatedProjectIds, manProjectIds, inchargeUserIds,projectCategoryId,status);
             BigDecimal totalMoneyCost = BigDecimal.valueOf(0);
             List<List<String>> allList=null ;
             List<String> sumRow = null;

+ 1 - 63
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -161,69 +161,6 @@
         <if test="projectId != null">
             AND a.id = #{projectId}
         </if>
-        <if test="categoryId != null">
-            AND a.category = #{categoryId}
-        </if>
-        <if test="projectIds != null">
-            and a.id in
-            <foreach collection="projectIds" open="(" close=")" separator="," item="item">
-                #{item}
-            </foreach>
-        </if>
-        <if test="userIdList != null and userIdList.size()>0">
-            AND b.creator_id in
-            <foreach collection="userIdList" item="item" open="(" separator="," close=")">
-                #{item}
-            </foreach>
-        </if>
-        <if test="startDate != null and endDate != null">
-            AND b.create_date between #{startDate} and #{endDate}
-        </if>
-        <choose>
-            <when test="filterDeptIds!=null and filterDeptIds.size()>0">
-                and b.dept_id in
-                <foreach collection="filterDeptIds" open="(" item="item" separator="," close=")">
-                    #{item}
-                </foreach>
-            </when>
-            <otherwise>
-                <if test="deptIds!=null and deptIds.size()>0">
-                    and (b.dept_id in
-                    <foreach collection="deptIds" open="(" item="item" separator="," close=")">
-                        #{item}
-                    </foreach>
-                    <if test="deptRelatedProjectIds.size() > 0">
-                        or a.id in
-                        <foreach collection="deptRelatedProjectIds" open="(" item="pid" separator="," close=")">
-                            #{pid}
-                        </foreach>
-                    </if>
-                    <if test="inchargeUserIds != null and inchargeUserIds.size()>0">
-                        OR a.`incharger_id` IN
-                        <foreach collection="inchargeUserIds" open="(" item="pid" separator="," close=")">
-                            #{pid}
-                        </foreach>
-                        OR b.`group_id` IN(SELECT id FROM task_group WHERE incharger_id IN
-                        <foreach collection="inchargeUserIds" open="(" item="pid" separator="," close=")">
-                            #{pid}
-                        </foreach>
-                        )
-                    </if>
-                    )
-                </if>
-            </otherwise>
-        </choose>
-        AND b.state = 1
-        GROUP BY a.id
-        ORDER BY a.id ASC
-    </select>
-
-    <select id="getTimeCostByStatus" resultType="java.util.Map">
-        SELECT a.id, a.project_main_id as projectMainId, a.project_code as projectCode, a.project_name AS project, SUM(b.working_time) AS cost, SUM(b.cost) AS costMoney,a.category_name as categoryName
-        FROM project AS a
-        LEFT JOIN report AS b ON b.project_id = a.id
-        JOIN user AS c ON b.creator_id = c.id
-        WHERE a.company_id = #{companyId}
         <if test="status != null">
             AND a.status = #{status}
         </if>
@@ -284,6 +221,7 @@
         ORDER BY a.id ASC
     </select>
 
+
     <!--获取查询者所在公司每个子项目的工时成本-->
     <select id="getSubProjectTimeCost" resultType="java.util.Map">
         select b.project_code as projectCode,b.project_name as projectName,a.code as subProjectCode,a.name as subProjectName,SUM(c.cost) as cost,SUM(c.working_time) as workingTime