Sfoglia il codice sorgente

Merge branch 'master' of http://47.100.37.243:10080/wutt/manHourHousekeeper

ggooalice 3 anni fa
parent
commit
0255586d66

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

@@ -319,8 +319,8 @@ public class ProjectController {
 
     //分页查询客户项目统计报表
     @RequestMapping("/getCustomerProjectInAndOut")
-    public HttpRespMsg getCustomerProjectInAndOut(@RequestParam Integer pageIndex, @RequestParam Integer pageSize) {
-        return projectService.getCustomerProjectInAndOut(pageIndex, pageSize, request);
+    public HttpRespMsg getCustomerProjectInAndOut(@RequestParam Integer pageIndex, @RequestParam Integer pageSize,Integer customerId,Integer projectId) {
+        return projectService.getCustomerProjectInAndOut(pageIndex, pageSize, request,customerId,projectId);
     }
     //导出项目收支平衡表
     @RequestMapping("/exportCustomerProjectInAndOut")

+ 32 - 9
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectRequirementController.java

@@ -28,6 +28,7 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.io.*;
+import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -72,7 +73,8 @@ public class ProjectRequirementController {
     }
 
     @RequestMapping("/listByPage")
-    public HttpRespMsg listByPage(Integer pageIndex, Integer pageSize, Integer projectId, String groupName) {
+    public HttpRespMsg listByPage(Integer pageIndex, Integer pageSize, Integer projectId, String groupName,String reStartDate,String reEndDate ) {
+        SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
         HttpRespMsg msg = new HttpRespMsg();
         Integer companyId = userMapper.selectById(request.getHeader("TOKEN")).getCompanyId();
         int startIndex = (pageIndex-1)*pageSize;
@@ -80,17 +82,14 @@ public class ProjectRequirementController {
         now = now.minusDays(7);
         String startDate = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(now);
         List<Integer> projectIds = new ArrayList<>();
-        long total;
         if (!StringUtils.isEmpty(groupName)) {
             List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
             List<Integer> collect = projectList.stream().map(Project::getId).collect(Collectors.toList());
             List<TaskGroup> taskGroups = taskGroupMapper.selectList(new QueryWrapper<TaskGroup>().eq("name", groupName).in("project_id", collect));
             projectIds = taskGroups.stream().map(TaskGroup::getProjectId).collect(Collectors.toList());
-            total=projectIds.size();
-        }else{
-            total = projectMapper.selectCount(new QueryWrapper<Project>().eq("company_id", companyId));
         }
-        List<ProjectRequirement> projectRequirements = projectRequirementMapper.customSelect(companyId, startDate, projectId, projectIds.size()==0?null:projectIds, startIndex, pageSize);
+        List<ProjectRequirement> projectRequirements = projectRequirementMapper.customSelect(companyId, startDate, projectId, projectIds.size()==0?null:projectIds, startIndex, pageSize,reStartDate,reEndDate);
+        long total=projectRequirementMapper.selectCountByDate(companyId, startDate, projectId, projectIds.size()==0?null:projectIds, startIndex, pageSize,reStartDate,reEndDate);
         HashMap map = new HashMap();
         map.put("total", total);
         map.put("records", projectRequirements);
@@ -100,14 +99,15 @@ public class ProjectRequirementController {
     }
     @RequestMapping("/exportData")
     public HttpRespMsg exportData(){
+        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
         HttpRespMsg httpRespMsg=new HttpRespMsg();
         Integer companyId = userMapper.selectById(request.getHeader("TOKEN")).getCompanyId();
         LocalDate now = LocalDate.now();
         now = now.minusDays(7);
         String startDate = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(now);
-        List<ProjectRequirement> projectRequirementList = projectRequirementMapper.customSelect(companyId,startDate, null, null, null, null);
+        List<ProjectRequirement> projectRequirementList = projectRequirementMapper.customSelect(companyId,startDate, null, null, null, null,null,null);
         List<List<String>> dataList=new ArrayList<>();
-        String[] titleString={"项目编号","项目名称","近七日活跃人员","人员需求","任务需求"};
+        String[] titleString={"项目编号","项目名称","近七日活跃人员","人员需求","任务需求","开始时间","结束时间"};
         List<String> nameList = Arrays.asList(titleString);
         dataList.add(nameList);
         projectRequirementList.forEach(pr->{
@@ -117,6 +117,14 @@ public class ProjectRequirementController {
             resultData.add(pr.getActiveUsers());
             resultData.add(pr.getMembReq());
             resultData.add(pr.getTaskReq());
+            if(pr.getStartDate()!=null){
+                String s=df.format(pr.getStartDate());
+                resultData.add(s);
+            }
+            if(pr.getEndDate()!=null){
+                String s1=df.format(pr.getEndDate());
+                resultData.add(s1);
+            }
             dataList.add(resultData);
         });
         //生成excel文件导出
@@ -153,6 +161,8 @@ public class ProjectRequirementController {
             List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
             List<ProjectRequirement> projectRequirementList = projectRequirementMapper.selectList(null);
             List<ProjectRequirement> projectRequirements=new ArrayList<>();
+            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
+            LocalDate date=LocalDate.now();
             for (int rowIndex = 0; rowIndex <= rowNum; rowIndex++) {
                 XSSFRow row = sheet.getRow(rowIndex+1);
                 if (row == null) {
@@ -166,15 +176,18 @@ public class ProjectRequirementController {
                 XSSFCell codeCell = row.getCell(0);
                 XSSFCell taskReqCell = row.getCell(1);
                 XSSFCell membReqCell = row.getCell(2);
+                XSSFCell startDateCell = row.getCell(3);
+                XSSFCell endDateCell = row.getCell(4);
 
                 if (codeCell != null)codeCell.setCellType(CellType.STRING);
                 if (taskReqCell != null)taskReqCell.setCellType(CellType.STRING);
                 if (membReqCell != null)membReqCell.setCellType(CellType.STRING);
+                if (startDateCell != null)startDateCell.setCellType(CellType.NUMERIC);
+                if (endDateCell != null)endDateCell.setCellType(CellType.NUMERIC);
                 ProjectRequirement projectRequirement=new ProjectRequirement();
                 if(codeCell==null){
                     throw new Exception("项目编号/名称不能为空");
                 }
-                System.out.println(codeCell.getStringCellValue());
                 List<Project> list = projectList.stream().filter(project ->
                         (StringUtils.isEmpty(project.getProjectCode())?"":project.getProjectCode()).equals(codeCell.getStringCellValue())
                         || (StringUtils.isEmpty(project.getProjectName())?"":project.getProjectName()).equals(codeCell.getStringCellValue())
@@ -187,6 +200,16 @@ public class ProjectRequirementController {
                         projectRequirement.setProjectId(li.getId());
                         projectRequirement.setTaskReq(StringUtils.isEmpty(taskReqCell.getStringCellValue())?"":taskReqCell.getStringCellValue());
                         projectRequirement.setMembReq(StringUtils.isEmpty(membReqCell.getStringCellValue())?"":membReqCell.getStringCellValue());
+                        if(startDateCell!=null){
+                            projectRequirement.setStartDate(startDateCell.getDateCellValue());
+                        }else {
+                            projectRequirement.setStartDate(null);
+                        }
+                        if(endDateCell!=null){
+                            projectRequirement.setEndDate(endDateCell.getDateCellValue());
+                        }else {
+                            projectRequirement.setEndDate(null);
+                        }
                         boolean flag = projectRequirementList.stream().anyMatch(pr -> pr.getProjectId().equals(li.getId()));
                         if(flag){
                             Optional<ProjectRequirement> first = projectRequirementList.stream().filter(pr -> pr.getProjectId().equals(li.getId())).findFirst();

+ 18 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ProjectRequirement.java

@@ -1,13 +1,18 @@
 package com.management.platform.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.extension.activerecord.Model;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableField;
-import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
 
 /**
  * <p>
@@ -36,6 +41,16 @@ public class ProjectRequirement extends Model<ProjectRequirement> {
     @TableField("task_req")
     private String taskReq;
 
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date startDate;
+
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date endDate;
+
     @TableField(exist = false)
     private String projectCode;
     @TableField(exist = false)

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

@@ -50,9 +50,9 @@ public interface ProjectMapper extends BaseMapper<Project> {
 
     List<Project> getProjectInAndOut(Integer companyId, Integer pageStart, Integer pageSize, Integer projectId);
 
-    List<CustomerProject> getCustomerProjectInAndOut(Integer companyId, Integer pageStart, Integer pageSize);
+    List<CustomerProject> getCustomerProjectInAndOut(Integer companyId, Integer pageStart, Integer pageSize,Integer customerId,Integer projectId);
 
-    Integer getCustomerProjectInAndOutCount(Integer companyId);
+    Integer getCustomerProjectInAndOutCount(Integer companyId,Integer customerId,Integer projectId);
 
     List<CustomerProject> getProjectInAndOutByRange(Integer companyId, List<Integer> ids);
 

+ 3 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectRequirementMapper.java

@@ -15,5 +15,7 @@ import java.util.List;
  */
 public interface ProjectRequirementMapper extends BaseMapper<ProjectRequirement> {
 
-    public List<ProjectRequirement> customSelect(Integer companyId, String startDate, Integer projectId, List<Integer> refProjectIdList, Integer startIndex, Integer pageSize);
+    public List<ProjectRequirement> customSelect(Integer companyId, String startDate, Integer projectId, List<Integer> refProjectIdList, Integer startIndex, Integer pageSize,String reStartDate,String reEndDate);
+
+    long selectCountByDate(Integer companyId, String startDate, Integer projectId, List<Integer> refProjectIdList, int startIndex, Integer pageSize, String reStartDate, String reEndDate);
 }

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

@@ -84,7 +84,7 @@ public interface ProjectService extends IService<Project> {
 
     HttpRespMsg importData(String userId, MultipartFile file, HttpServletRequest request);
 
-    HttpRespMsg getCustomerProjectInAndOut(Integer pageIndex, Integer pageSize, HttpServletRequest request);
+    HttpRespMsg getCustomerProjectInAndOut(Integer pageIndex, Integer pageSize, HttpServletRequest request,Integer customerId,Integer projectId);
 
     HttpRespMsg exportCustomerProjectInAndOut(HttpServletRequest request);
 

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

@@ -1315,13 +1315,13 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     }
 
     @Override
-    public HttpRespMsg getCustomerProjectInAndOut(Integer pageIndex, Integer pageSize, HttpServletRequest request) {
+    public HttpRespMsg getCustomerProjectInAndOut(Integer pageIndex, Integer pageSize, HttpServletRequest request,Integer customerId,Integer projectId) {
         User user = userMapper.selectById(request.getHeader("Token"));
         Integer companyId = user.getCompanyId();
 
-        int total = projectMapper.getCustomerProjectInAndOutCount(companyId);
+        int total = projectMapper.getCustomerProjectInAndOutCount(companyId,customerId,projectId);
         int pageStart = (pageIndex -1) * pageSize;
-        List<CustomerProject> list = projectMapper.getCustomerProjectInAndOut(companyId, pageStart, pageSize);
+        List<CustomerProject> list = projectMapper.getCustomerProjectInAndOut(companyId, pageStart, pageSize,customerId,projectId);
         list.forEach(data->{
             List<Integer> integers = ListUtil.convertIntegerIdsArrayToList(data.getProjectIds());
             data.setChildren(projectMapper.getProjectInAndOutByRange(companyId, integers));
@@ -1381,7 +1381,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         User user = userMapper.selectById(request.getHeader("Token"));
         Integer companyId = user.getCompanyId();
 
-        List<CustomerProject> projectList = projectMapper.getCustomerProjectInAndOut(companyId, null, null);
+        List<CustomerProject> projectList = projectMapper.getCustomerProjectInAndOut(companyId, null, null,null,null);
         List<List<String>> exportList = new ArrayList<>();
         String[] titles = {"客户名称", "相关项目", "合同金额", "人工成本", "一般费用", "差旅费用","外包费用", "总费用", "利润", "利润率"};
         exportList.add(Lists.list(titles));
@@ -1642,6 +1642,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         btIdList.add(bt.getId());
                     });
                     bpQueryWrapper.in("bustrip_id", btIdList);
+                    if(projectIds!=null){
+                        bpQueryWrapper.in("project_id", projectIds);
+                    }
                 }
                 List<BustripProject> bustripProjectList = bustripProjectMapper.selectList(bpQueryWrapper);
                 List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", user.getCompanyId()));

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

@@ -333,6 +333,12 @@
         SUM((SELECT IFNULL(SUM(amount),0) FROM expense_item , expense_sheet WHERE project_id = project.id AND  expense_sheet.id = expense_item.`expense_id` AND expense_sheet.type = 2 and expense_sheet.status = 0)) AS fee_outsourcing
         FROM project WHERE project.`company_id` = #{companyId} AND customer_id > 0
         AND (project.status &lt;&gt; 3 OR project.status IS NULL)
+        <if test="customerId!=null">
+            and project.customer_id=#{customerId}
+        </if>
+        <if test="projectId!=null">
+            and project.id=#{projectId}
+        </if>
         GROUP BY customer_id
         <if test="pageStart != null and pageSize != null">
             LIMIT #{pageStart},#{pageSize}
@@ -342,6 +348,12 @@
     <select id="getCustomerProjectInAndOutCount" resultType="java.lang.Integer">
         SELECT COUNT(DISTINCT customer_id) FROM project WHERE project.`company_id` = #{companyId} AND customer_id > 0
         AND (project.status &lt;&gt; 3 OR project.status IS NULL)
+        <if test="customerId!=null">
+            and project.customer_id=#{customerId}
+        </if>
+        <if test="projectId!=null">
+            and project.id=#{projectId}
+        </if>
     </select>
 
     <!--分页获取项目收支平衡 -->

+ 31 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectRequirementMapper.xml

@@ -8,6 +8,8 @@
         <result column="project_id" property="projectId" />
         <result column="memb_req" property="membReq" />
         <result column="task_req" property="taskReq" />
+        <result column="start_date" property="startDate" javaType="java.util.Date"/>
+        <result column="end_date" property="endDate" javaType="java.util.Date"/>
     </resultMap>
 
     <resultMap id="RichMap" type="com.management.platform.entity.ProjectRequirement">
@@ -18,6 +20,8 @@
         <result column="project_code" property="projectCode" />
         <result column="project_name" property="projectName" />
         <result column="active_users" property="activeUsers" />
+        <result column="start_date" property="startDate" javaType="java.util.Date"/>
+        <result column="end_date" property="endDate" javaType="java.util.Date"/>
     </resultMap>
 
     <!-- 通用查询结果列 -->
@@ -26,7 +30,7 @@
     </sql>
 
     <select id="customSelect" resultMap="RichMap">
-        SELECT project_requirement.id, project.id AS project_id, project.`project_name`, project.`project_code`, project_requirement.`memb_req`, project_requirement.`task_req`,
+        SELECT project_requirement.id, project.id AS project_id, project.`project_name`, project.`project_code`, project_requirement.`memb_req`, project_requirement.`task_req`,project_requirement.start_date,project_requirement.end_date,
         (SELECT GROUP_CONCAT(DISTINCT user.`name`) FROM report LEFT JOIN `user` ON user.`id` = report.`creator_id` WHERE report.company_id=#{companyId} AND report.create_time >= #{startDate} AND report.`project_id` = project.id) AS active_users
         FROM project LEFT JOIN project_requirement ON project.id = project_requirement.`project_id`
         WHERE project.`company_id` = #{companyId}
@@ -39,9 +43,35 @@
                  #{item}
              </foreach>
          </if>
+        <if test="reStartDate != null and reEndDate !=null">
+            and project_requirement.start_date>=#{reStartDate} and project_requirement.end_date&lt;=#{reEndDate}
+        </if>
         order by project.id asc
         <if test="startIndex!=null and startIndex!='' and pageSize!=null and pageSize!=''">
             limit #{startIndex}, #{pageSize}
         </if>
     </select>
+    <select id="selectCountByDate" resultType="java.lang.Long">
+        select count(*)
+        from (SELECT project_requirement.id, project.id AS project_id, project.`project_name`, project.`project_code`, project_requirement.`memb_req`, project_requirement.`task_req`,project_requirement.start_date,project_requirement.end_date,
+        (SELECT GROUP_CONCAT(DISTINCT user.`name`) FROM report LEFT JOIN `user` ON user.`id` = report.`creator_id` WHERE report.company_id=#{companyId} AND report.create_time >= #{startDate} AND report.`project_id` = project.id) AS active_users
+        FROM project LEFT JOIN project_requirement ON project.id = project_requirement.`project_id`
+        WHERE project.`company_id` = #{companyId}
+        <if test="projectId != null">
+            and project.id = #{projectId}
+        </if>
+        <if test="refProjectIdList != null">
+            and project.id in
+            <foreach collection="refProjectIdList" index="index" close=")" open="(" separator="," item="item">
+                #{item}
+            </foreach>
+        </if>
+        <if test="reStartDate != null and reEndDate !=null">
+            and project_requirement.start_date>=#{reStartDate} and project_requirement.end_date&lt;=#{reEndDate}
+        </if>
+        order by project.id asc
+        <if test="startIndex!=null and startIndex!='' and pageSize!=null and pageSize!=''">
+            limit #{startIndex}, #{pageSize}
+        </if>) as total
+    </select>
 </mapper>