Min 1 gadu atpakaļ
vecāks
revīzija
e24bb91f35

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

@@ -1445,5 +1445,11 @@ public class ProjectController {
     public HttpRespMsg getMembProjectCateRatio(String startDate,String endDate, Integer onlyShowWarning){
         return projectService.getMembProjectCateRatio(startDate,endDate, onlyShowWarning);
     }
+
+    //依斯倍定制 员工项目进度表
+    @RequestMapping("/userProjectProcessList")
+    public HttpRespMsg userProjectProcessList(Integer deptId,String userId,Integer projectId,Integer pageIndex,Integer pageSize){
+        return projectService.userProjectProcessList(deptId,userId,projectId,pageIndex,pageSize);
+    }
 }
 

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

@@ -168,4 +168,8 @@ public interface ProjectMapper extends BaseMapper<Project> {
 
     @Update("update project set incharger_id = null, finish_date = null, plan_start_date = null, plan_end_date=null, level=null,contract_amount=0.0,man_day=null where id = #{id} and is_public = 1")
     void cleanPublicProjectData(Integer id);
+
+    List<Map<String, Object>> userProjectProcessList(Integer deptId, String userId, Integer projectId, Integer companyId,@Param("list") List<Integer> deptIds, Integer start, Integer size);
+
+    Long userProjectProcessCount(Integer deptId, String userId, Integer projectId, Integer companyId,@Param("list") List<Integer> deptIds);
 }

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

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

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

@@ -12127,4 +12127,53 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             }
         }
     }
+
+    @Override
+    public HttpRespMsg userProjectProcessList(Integer deptId, String userId, Integer projectId,Integer pageIndex, Integer pageSize) {
+        HttpRespMsg msg=new HttpRespMsg();
+        User user = userMapper.selectById(request.getHeader("token"));
+        Integer companyId = user.getCompanyId();
+        boolean viewAll = sysFunctionService.hasPriviledge(user.getRoleId(), "全部员工项目进度表");
+        boolean incharger = sysFunctionService.hasPriviledge(user.getRoleId(), "负责部门员工项目进度表");
+        List<Department> allDeptList = departmentMapper.selectList(new LambdaQueryWrapper<Department>().eq(Department::getCompanyId, companyId));
+        List<Map<String,Object>> resultList;
+        Long total;
+        Integer size=null;
+        Integer start=null;
+        if(pageIndex!=null&&pageSize!=null){
+            size=pageSize;
+            start=(pageIndex-1)*size;
+        }
+        //是否具有查看全部数据的权限
+        if(!viewAll){
+            if(!incharger){
+                //只能查看本人的数据
+                resultList=projectMapper.userProjectProcessList(deptId,user.getId(),projectId,companyId,null,start,size);
+                total=projectMapper.userProjectProcessCount(deptId,user.getId(),projectId,companyId,null);
+            }else {
+                List<Department> departmentList = departmentMapper.selectList(new LambdaQueryWrapper<Department>().select(Department::getDepartmentId).eq(Department::getManagerId, user.getId()));
+                List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", user.getId()));
+                List<Integer> deptIds=new ArrayList<>();
+                List<Integer> theCollect = departmentList.stream().map(dm -> dm.getDepartmentId()).distinct().collect(Collectors.toList());
+                theCollect.add(-1);
+                List<Integer> otherCollect = departmentOtherManagerList.stream().map(dom -> dom.getDepartmentId()).distinct().collect(Collectors.toList());
+                otherCollect.add(-1);
+                theCollect.addAll(otherCollect);
+                for (Integer integer : theCollect) {
+                    List<Integer> branchDepartment = getBranchDepartment(integer, allDeptList);
+                    deptIds.addAll(branchDepartment);
+                }
+                resultList=projectMapper.userProjectProcessList(deptId,userId,projectId,companyId,deptIds,start,size);
+                total=projectMapper.userProjectProcessCount(deptId,userId,projectId,companyId,deptIds);
+            }
+        }else {
+            resultList=projectMapper.userProjectProcessList(deptId,userId,projectId,companyId,null,start,size);
+            total=projectMapper.userProjectProcessCount(deptId,userId,projectId,companyId,null);
+        }
+        Map<String,Object> resultMap=new HashMap<>();
+        resultMap.put("record",resultList);
+        resultMap.put("total",total);
+        msg.setData(resultMap);
+        return msg;
+    }
 }

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

@@ -1778,4 +1778,62 @@
         GROUP BY user.id, project.`category`
     </select>
 
+    <select id="userProjectProcessList" resultType="java.util.Map">
+        select d.department_name as departmentName,d.corpwx_deptid as corpwxDeptId,u.corpwx_userid as corpwxUserId,u.name as userName,u.job_number as jobNumber,p.project_name as projectName,p.project_code as projectCode,
+        IFNULL(IFNULL(SUM(te.plan_hours),0)-IFNULL((select SUM(working_time) from report where task_id=te.task_id),0),0)as residueTime
+        from task_executor te
+        left join  user u on u.id=te.executor_id
+        left join department d on d.department_id=u.department_id
+        left join project p on p.id=te.project_id
+        where u.company_id=#{companyId} and te.project_id is not null and d.department_name in ('4','12','14')
+        <if test="deptId!=null">
+            and d.department_id=#{deptId}
+        </if>
+        <if test="userId!=null and userId!=''">
+            and u.id=#{userId}
+        </if>
+        <if test="projectId!=null">
+            and p.id=#{project}
+        </if>
+        <if test="list!=null and list.size()>0">
+            and d.department_id in
+            <foreach collection="list" open="(" close=")" item="item" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        group by te.executor_id,te.project_id
+        order by d.department_id,u.id
+        <if test="start!=null and size!=null">
+            limit #{start},#{size}
+        </if>
+    </select>
+
+
+    <select id="userProjectProcessCount" resultType="java.lang.Long">
+        select count(1) from (
+            select d.department_name as departmentName
+            from task_executor te
+            left join  user u on u.id=te.executor_id
+            left join department d on d.department_id=u.department_id
+            left join project p on p.id=te.project_id
+            where u.company_id=#{companyId} and te.project_id is not null and d.department_name in ('4','12','14')
+            <if test="deptId!=null">
+                and d.department_id=#{deptId}
+            </if>
+            <if test="userId!=null and userId!=''">
+                and u.id=#{userId}
+            </if>
+            <if test="projectId!=null">
+                and p.id=#{project}
+            </if>
+            <if test="list!=null and list.size()>0">
+                and d.department_id in
+                <foreach collection="list" open="(" close=")" item="item" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            group by te.executor_id,te.project_id
+        ) as total
+    </select>
+
 </mapper>