Browse Source

子项目工时成本表

yurk 2 years ago
parent
commit
1d4c4fca96

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

@@ -1157,5 +1157,15 @@ public class ProjectController {
         return projectService.exportProjectGroupAndCategoryWorkTime(request,startDate,endDate,projectId);
     }
 
+    @RequestMapping("/getSubProjectTimeCost")
+    public HttpRespMsg getSubProjectTimeCost(HttpServletRequest request,String startDate,String endDate,Integer projectId,Integer pageIndex,Integer pageSize){
+        return projectService.getSubProjectTimeCost(request,startDate,endDate,projectId,pageIndex,pageSize);
+    }
+
+    @RequestMapping("/exportSubProjectTimeCost")
+    public HttpRespMsg exportSubProjectTimeCost(HttpServletRequest request,Integer projectId){
+        return projectService.exportSubProjectTimeCost(request,projectId);
+    }
+
 }
 

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

@@ -140,4 +140,8 @@ public interface ProjectMapper extends BaseMapper<Project> {
     List<Map<String, Object>> getProjectGroupAndCategoryData(String startDate, String endDate, Integer projectId, Integer companyId, Integer start, Integer size, List<Integer> inchagerIds);
 
     long getProjectGroupAndCategoryCount(String startDate, String endDate, Integer projectId, Integer companyId, Integer start, Integer size, List<Integer> inchagerIds);
+
+    List<Map<String, Object>> getSubProjectTimeCost(Integer companyId, String startDate, String endDate, Integer projectId,Integer start,Integer size, List<Integer> inchagerIds);
+
+    long countWithSubProjectTimeCost(Integer companyId, String startDate, String endDate, Integer projectId, Integer start,Integer size, List<Integer> inchagerIds);
 }

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

@@ -217,4 +217,8 @@ public interface ProjectService extends IService<Project> {
     HttpRespMsg projectGroupAndCategoryWorkTime(HttpServletRequest request, String startDate, String endDate, Integer projectId,Integer pageIndex,Integer pageSize);
 
     HttpRespMsg exportProjectGroupAndCategoryWorkTime(HttpServletRequest request, String startDate, String endDate, Integer projectId);
+
+    HttpRespMsg getSubProjectTimeCost(HttpServletRequest request, String startDate, String endDate, Integer projectId,Integer pageIndex,Integer pageSize);
+
+    HttpRespMsg exportSubProjectTimeCost(HttpServletRequest request, Integer projectId);
 }

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

@@ -8945,6 +8945,87 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         return msg;
     }
 
+    @Override
+    public HttpRespMsg getSubProjectTimeCost(HttpServletRequest request, String startDate, String endDate, Integer projectId,Integer pageIndex,Integer pageSize) {
+        HttpRespMsg msg=new HttpRespMsg();
+        Integer start = (pageIndex-1)*pageSize;
+        Integer size = pageSize*pageIndex;
+        User user = userMapper.selectById(request.getHeader("token"));
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", user.getCompanyId()));
+        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部子项目工时成本");
+        List<SysRichFunction> functionInchargeList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责项目子项目工时成本");
+        //判断查看权限
+        List<Integer> inchagerIds=null;
+        if(functionAllList.size()==0){
+            inchagerIds=new ArrayList<>();
+            if(functionInchargeList.size()>0){
+                List<Project> list = projectList.stream().filter(pl -> (pl.getInchargerId()==null?0:pl.getInchargerId()).equals(user.getId())).collect(Collectors.toList());
+                if(list!=null){
+                    List<Integer> collect = list.stream().map(li -> li.getId()).collect(Collectors.toList());
+                    inchagerIds.addAll(collect);
+                }
+            }else {
+                inchagerIds.add(-1);
+            }
+        }
+        List<Map<String,Object>> list=projectMapper.getSubProjectTimeCost(companyId,startDate,endDate,projectId,start,size,inchagerIds);
+        long total=projectMapper.countWithSubProjectTimeCost(companyId,startDate,endDate,projectId,null,null,inchagerIds);
+        Map<String,Object> map=new HashMap<>();
+        map.put("record",list);
+        map.put("total",total);
+        msg.data=map;
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg exportSubProjectTimeCost(HttpServletRequest request, Integer projectId) {
+        HttpRespMsg msg=new HttpRespMsg();
+        User user = userMapper.selectById(request.getHeader("token"));
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", user.getCompanyId()));
+        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部子项目工时成本");
+        List<SysRichFunction> functionInchargeList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责项目子项目工时成本");
+        //判断查看权限
+        List<Integer> inchagerIds=null;
+        if(functionAllList.size()==0){
+            inchagerIds=new ArrayList<>();
+            if(functionInchargeList.size()>0){
+                List<Project> list = projectList.stream().filter(pl -> (pl.getInchargerId()==null?0:pl.getInchargerId()).equals(user.getId())).collect(Collectors.toList());
+                if(list!=null){
+                    List<Integer> collect = list.stream().map(li -> li.getId()).collect(Collectors.toList());
+                    inchagerIds.addAll(collect);
+                }
+            }else {
+                inchagerIds.add(-1);
+            }
+        }
+        List<Map<String,Object>> list=projectMapper.getSubProjectTimeCost(companyId,null,null,projectId,null,null,inchagerIds);
+        List<List<String>> dataList=new ArrayList<>();
+        List<String> titleList=new ArrayList<>();
+        titleList.add("项目编号");
+        titleList.add("项目名称");
+        titleList.add("子项目编号");
+        titleList.add("子项目名称");
+        titleList.add("子项目工时");
+        titleList.add("子项目成本");
+        dataList.add(titleList);
+        for (Map<String, Object> map : list) {
+            List<String> item=new ArrayList<>();
+            item.add(String.valueOf(map.get("projectCode")==null?"":map.get("projectCode")));
+            item.add(String.valueOf(map.get("projectName")==null?"":map.get("projectName")));
+            item.add(String.valueOf(map.get("subProjectCode")==null?"":map.get("subProjectCode")));
+            item.add(String.valueOf(map.get("subProjectName")==null?"":map.get("subProjectName")));
+            item.add(String.valueOf(map.get("cost")==null?"":map.get("cost")));
+            item.add(String.valueOf(map.get("workingTime")==null?"":map.get("workingTime")));
+            dataList.add(item);
+        }
+        String fileName = "子项目工时成本表"+System.currentTimeMillis();
+        String resp = ExcelUtil.exportGeneralExcelByTitleAndList(fileName, dataList, path);
+        msg.data=resp;
+        return msg;
+    }
+
     private List<GanttDataItem> getUserGanttDataItemList(GanttDataItem userGantt, List<GanttDataItem> itemList) {
         if(itemList==null){
             itemList=new ArrayList<>();

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

@@ -175,6 +175,55 @@
         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
+        from sub_project a
+        left join project b on b.id=a.project_id
+        left join report c on c.sub_project_id=a.id
+        where a.company_id=#{companyId}
+        <if test="startDate != null and endDate != null">
+            and c.create_date between #{startDate} and #{endDate}
+        </if>
+        <if test="projectId!=null">
+            and a.project_id=#{projectId}
+        </if>
+        <if test="inchagerIds!=null and inchagerIds.size()>0">
+            and b.id in
+            <foreach collection="inchagerIds" open="(" close=")" separator="," item="item">
+                #{item}
+            </foreach>
+        </if>
+        group by b.id,a.id
+        <if test="start!=null and size!=null">
+            limit #{start},#{size}
+        </if>
+    </select>
+
+    <select id="countWithSubProjectTimeCost" resultType="java.lang.Long">
+        select count(1) from(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
+        from sub_project a
+        left join project b on b.id=a.project_id
+        left join report c on c.sub_project_id=a.id
+        where a.company_id=#{companyId}
+        <if test="startDate != null and endDate != null">
+            and c.create_date between #{startDate} and #{endDate}
+        </if>
+        <if test="projectId!=null">
+            and a.project_id=#{projectId}
+        </if>
+        <if test="inchagerIds!=null and inchagerIds.size()>0">
+            and b.id in
+            <foreach collection="inchagerIds" open="(" close=")" separator="," item="item">
+                #{item}
+            </foreach>
+        </if>
+        group by b.id,a.id
+        <if test="start!=null and size!=null">
+            limit #{start},#{size}
+        </if>) as total
+    </select>
+
 
 
     <!--获取查询者所在公司每个项目的工时成本-->