فهرست منبع

特殊公司项目导入模板修改 导入修改

yurk 2 سال پیش
والد
کامیت
ab1d728e36
12فایلهای تغییر یافته به همراه487 افزوده شده و 42 حذف شده
  1. 50 8
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java
  2. 21 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectSeparateController.java
  3. 3 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Project.java
  4. 82 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ProjectSeparate.java
  5. 3 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java
  6. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectSeparateMapper.java
  7. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectSeparateService.java
  8. 4 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java
  9. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectSeparateServiceImpl.java
  10. 196 32
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  11. 55 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml
  12. 21 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectSeparateMapper.xml

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

@@ -3,10 +3,7 @@ package com.management.platform.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.management.platform.entity.*;
-import com.management.platform.mapper.CompanyMapper;
-import com.management.platform.mapper.ProjectLevelMapper;
-import com.management.platform.mapper.ProviderCategoryMapper;
-import com.management.platform.mapper.TimeTypeMapper;
+import com.management.platform.mapper.*;
 import com.management.platform.service.ProjectService;
 import com.management.platform.util.HttpRespMsg;
 import org.apache.poi.hssf.usermodel.*;
@@ -55,6 +52,8 @@ public class ProjectController {
     private TimeTypeMapper timeTypeMapper;
     @Resource
     private ProjectLevelMapper projectLevelMapper;
+    @Resource
+    private ProjectStageMapper projectStageMapper;
 
     /**
      * 获取我参与的全部项目的负责人列表
@@ -125,12 +124,13 @@ public class ProjectController {
                                    String projectDesc,
                                    Integer projectMainId,
                                    String providerIds,
-                                   String providerNames
+                                   String providerNames,
+                                   ProjectSeparate projectSeparate
                                    ) {
         return projectService.editProject(id, name, code, userId, inchargerId, isPublic, planStartDate, planEndDate, level, contractAmount,
                 projectBaseCostData,
                  budget,customerId,chosenLeaders, associateDegrees, associateDegreeNames,
-                taskGpIncharge,auditUserIds, category, projectDesc,projectMainId, providerIds, providerNames, request);
+                taskGpIncharge,auditUserIds, category, projectDesc,projectMainId, providerIds, providerNames, request,projectSeparate);
     }
 
     @RequestMapping("/adjustBase")
@@ -582,6 +582,7 @@ public class ProjectController {
         HttpRespMsg msg = new HttpRespMsg();
         List<String> heads = new ArrayList<>();
         Company company = companyMapper.selectById(companyId);
+        List<ProjectStage> projectStageList = projectStageMapper.selectList(new QueryWrapper<ProjectStage>().eq("company_id", company.getId()));
         List<ProviderCategory> providerCategoryList = providerCategoryMapper.selectList(new QueryWrapper<ProviderCategory>().eq("company_id", companyId));
         List<ProjectLevel> projectLevelList = projectLevelMapper.selectList(new QueryWrapper<ProjectLevel>().eq("company_id", companyId));
         List<String> collect = providerCategoryList.stream().distinct().map(pc -> pc.getProviderCategoryName()).collect(Collectors.toList());
@@ -590,6 +591,9 @@ public class ProjectController {
             heads.add("主项目");
         }
         heads.add("项目编号");
+        if(company.getId()==936){
+            heads.add("合同编号");
+        }
         if(timeType.getMainProjectState()!=1){
             heads.add("项目分类");
         }
@@ -612,6 +616,15 @@ public class ProjectController {
         heads.add("开始日期");
         heads.add("截止日期");
         heads.add("合同金额");
+        if(company.getId()==936){
+            heads.add("质保开始时间");
+            heads.add("质保截止时间");
+            heads.add("项目类别");
+            heads.add("所属大区");
+            heads.add("所属BU");
+            heads.add("项目状态");
+            heads.add("项目阶段");
+        }
         List<List<String>> allList = new ArrayList<>();
         allList.add(heads);
         String title = company.getCompanyName()+"_项目导入模板";
@@ -804,7 +817,36 @@ public class ProjectController {
                                             "例如: 2021-01-01"));
                                     cell.setCellComment(comment);
                                     break;
-
+                                case "项目状态":
+                                    // 加载下拉列表内容
+                                    textList= new String[]{"全部", "进行中", "已完成", "已撤销", "暂停"};
+                                    constraint = DVConstraint
+                                            .createExplicitListConstraint(textList);
+                                    // 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列
+                                    regions = new CellRangeAddressList(1,
+                                            1000, i, i);
+                                    // 数据有效性对象
+                                    data_validation_list = new HSSFDataValidation(
+                                            regions, constraint);
+                                    sheet.addValidationData(data_validation_list);
+                                    break;
+                                case "项目阶段":
+                                    // 加载下拉列表内容
+                                    List<String> list = projectStageList.stream().map(pc -> pc.getProjectStageName()).collect(Collectors.toList());
+                                    textList= new String[list.size()];
+                                    for (int i1 = 0; i1 < list.size(); i1++) {
+                                        textList[i1]=list.get(i1);
+                                    }
+                                    constraint = DVConstraint
+                                            .createExplicitListConstraint(textList);
+                                    // 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列
+                                    regions = new CellRangeAddressList(1,
+                                            1000, i, i);
+                                    // 数据有效性对象
+                                    data_validation_list = new HSSFDataValidation(
+                                            regions, constraint);
+                                    sheet.addValidationData(data_validation_list);
+                                    break;
                             }
                         }else {
                             cell.setCellStyle(cellStyle);
@@ -853,7 +895,7 @@ public class ProjectController {
     }
     @RequestMapping("/getTimeCostByGroup")
     public HttpRespMsg getTimeCostByGroup(String startDate,String endDate,Integer pageIndex,Integer pageSize,Integer groupId,Integer projectId){
-        return projectService.getTimeCostByGroup(startDate,endDate,pageIndex,pageSize,groupId,projectId);
+        return projectService.getTimeCostByGroup(startDate,endDate,pageIndex,pageSize,groupId,projectId,request);
     }
 }
 

+ 21 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectSeparateController.java

@@ -0,0 +1,21 @@
+package com.management.platform.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-07-29
+ */
+@RestController
+@RequestMapping("/project-separate")
+public class ProjectSeparateController {
+
+}
+

+ 3 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Project.java

@@ -288,6 +288,9 @@ public class Project extends Model<Project> {
     @TableField("current_stage_name")
     private String currentStageName;
 
+    @TableField(exist = false)
+    ProjectSeparate projectSeparate;
+
 
     @Override
     protected Serializable pkVal() {

+ 82 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ProjectSeparate.java

@@ -0,0 +1,82 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+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.time.LocalDate;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-07-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ProjectSeparate extends Model<ProjectSeparate> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 项目id
+     */
+    @TableField("id")
+    private Integer id;
+
+    /**
+     * 合同编号
+     */
+    @TableField("contract_code")
+    private String contractCode;
+
+    /**
+     * 质保开始时间
+     */
+    @TableField("warranty_start_date")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate warrantyStartDate;
+
+    /**
+     * 质保截止时间
+
+     */
+    @TableField("warranty_end_date")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate warrantyEndDate;
+
+    /**
+     * 自主项目类别
+     */
+    @TableField("project_category_sub")
+    private String projectCategorySub;
+
+    /**
+     * 所属大区
+     */
+    @TableField("region")
+    private String region;
+
+    /**
+     * 所属BU
+     */
+    @TableField("bu")
+    private String bu;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return null;
+    }
+
+}

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

@@ -112,4 +112,7 @@ public interface ProjectMapper extends BaseMapper<Project> {
 
     List<Map<String, Object>> getCostByGroup(String startDate, String endDate, Integer projectId);
 
+    List<Map<String, Object>> selectWithGroup(Integer companyId, String startDate, String endDate, Integer startIndex, Integer endIndex, Integer projectId, List<Integer> inchagerIds, Integer groupId);
+
+    long selectCountWithGroup(Integer companyId, String startDate, String endDate, Integer startIndex, Integer endIndex, Integer projectId, List<Integer> inchagerIds, Integer groupId);
 }

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectSeparateMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.ProjectSeparate;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-07-29
+ */
+public interface ProjectSeparateMapper extends BaseMapper<ProjectSeparate> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectSeparateService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.ProjectSeparate;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-07-29
+ */
+public interface ProjectSeparateService extends IService<ProjectSeparate> {
+
+}

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

@@ -2,6 +2,7 @@ package com.management.platform.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.management.platform.entity.Project;
+import com.management.platform.entity.ProjectSeparate;
 import com.management.platform.util.HttpRespMsg;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -41,7 +42,8 @@ public interface ProjectService extends IService<Project> {
                             Integer projectMainId,
                             String providerIds,
                             String providerNames,
-                            HttpServletRequest request);
+                            HttpServletRequest request,
+                            ProjectSeparate projectSeparate);
 
     HttpRespMsg deleteProject(Integer id, Integer force);
 
@@ -163,5 +165,5 @@ public interface ProjectService extends IService<Project> {
 
     HttpRespMsg getCostByGroup(String startDate, String endDate, Integer id, HttpServletRequest request);
 
-    HttpRespMsg getTimeCostByGroup(String startDate, String endDate, Integer pageIndex, Integer pageSize, Integer groupId, Integer projectId);
+    HttpRespMsg getTimeCostByGroup(String startDate, String endDate, Integer pageIndex, Integer pageSize, Integer groupId, Integer projectId,HttpServletRequest request);
 }

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectSeparateServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.ProjectSeparate;
+import com.management.platform.mapper.ProjectSeparateMapper;
+import com.management.platform.service.ProjectSeparateService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-07-29
+ */
+@Service
+public class ProjectSeparateServiceImpl extends ServiceImpl<ProjectSeparateMapper, ProjectSeparate> implements ProjectSeparateService {
+
+}

+ 196 - 32
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -144,6 +144,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     DepartmentOtherManagerMapper departmentOtherManagerMapper;
     @Resource
     ContractModifyRecordMapper contractModifyRecordMapper;
+    @Resource
+    ProjectSeparateMapper projectSeparateMapper;
+    @Resource
+    ProjectStageMapper projectStageMapper;
 
     @Resource
     private HttpServletResponse response;
@@ -252,6 +256,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             List<ProjectMain> projectMainList = projectMainMapper.selectList(new QueryWrapper<ProjectMain>().eq("company_id", companyId));
             List<ProjectLevel> projectLevelList = projectLevelMapper.selectList(new QueryWrapper<ProjectLevel>().eq("company_id", companyId));
             TimeType timeType = timeTypeMapper.selectById(companyId);
+            List<Integer> projectIds = projectList.stream().distinct().map(pl -> pl.getId()).collect(Collectors.toList());
+            List<ProjectSeparate> projectSeparateList = projectSeparateMapper.selectList(new QueryWrapper<ProjectSeparate>().in("id", projectIds));
             List<ProjectVO> list = new ArrayList<>();
             for (Project project : projectList) {
                 ProjectVO projectVO = new ProjectVO();
@@ -307,6 +313,12 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     }
                     projectVO.setProviderInfoList(mapList);
                 }
+                if(companyId==936){
+                    Optional<ProjectSeparate> first1 = projectSeparateList.stream().filter(ps -> ps.getId().equals(project.getId())).findFirst();
+                    if(first1.isPresent()){
+                        projectVO.setProjectSeparate(first1.get());
+                    }
+                }
                 list.add(projectVO);
             }
             List<String> stringList = providerCategoryList.stream().distinct().map(ProviderCategory::getProviderCategoryName).collect(Collectors.toList());
@@ -346,7 +358,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                                    Integer projectMainId,
                                    String providerIds,
                                    String providerNames,
-                                   HttpServletRequest request) {
+                                   HttpServletRequest request,
+                                   ProjectSeparate projectSeparate) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("Token"));
         Integer companyId = user.getCompanyId();
@@ -447,6 +460,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         }
                     }
                     id = project.getId();
+                    if(companyId==936){
+                        projectSeparate.setId(id);
+                        projectSeparateMapper.insert(projectSeparate);
+                    }
                 }
             }
         } else {
@@ -481,6 +498,16 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         p.setCategoryName(projectCategory.getName());
                     }
                 }
+                if(companyId==936){
+                    ProjectSeparate separate = projectSeparateMapper.selectById(id);
+                    projectSeparate.setId(id);
+                    if(separate!=null){
+                        projectSeparateMapper.updateById(projectSeparate);
+                    }else {
+                        projectSeparateMapper.insert(projectSeparate);
+                    }
+
+                }
                 if (!StringUtils.isEmpty(planStartDate)) {
                     p.setPlanStartDate(LocalDate.parse(planStartDate));
                 }
@@ -495,6 +522,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 if (projectMapper.updateById(p) == 0) {
                     httpRespMsg.setError("操作失败");
                 } else {
+
                     if (customerId == null) {
                         //去掉客户
                         projectMapper.removeProjectCustomer(id);
@@ -1515,8 +1543,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         User user = userMapper.selectById(request.getHeader("Token"));
         Integer companyId = user.getCompanyId();
         List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
-        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部项目任务报表");
-        List<SysRichFunction> functionInchargeList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责项目任务报表");
+        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部项目成本报表");
+        List<SysRichFunction> functionInchargeList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责项目成本报表");
         //判断查看权限
         List<Integer> inchagerIds=null;
         if(functionAllList.size()==0){
@@ -1600,8 +1628,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         User user = userMapper.selectById(request.getHeader("Token"));
         Integer companyId = user.getCompanyId();
         List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
-        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部项目任务报表");
-        List<SysRichFunction> functionInchargeList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责项目任务报表");
+        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部项目收支平衡表");
+        List<SysRichFunction> functionInchargeList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责项目收支平衡表");
         //判断查看权限
         List<Integer> inchagerIds=null;
         if(functionAllList.size()==0){
@@ -2151,8 +2179,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         int endIndex = pageSize*pageIndex;
         HttpRespMsg msg = new HttpRespMsg();
         List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
-        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部项目任务报表");
-        List<SysRichFunction> functionInchargeList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责项目任务报表");
+        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部项目阶段工时表");
+        List<SysRichFunction> functionInchargeList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责项目阶段工时表");
         //判断查看权限
         List<Integer> inchagerIds=null;
         if(functionAllList.size()==0){
@@ -2636,6 +2664,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 //获取主项目
                 List<ProjectMain> projectMainList = projectMainMapper.selectList(new QueryWrapper<ProjectMain>().eq("company_id", user.getCompanyId()));
                 List<ProjectLevel> projectLevelList = projectLevelMapper.selectList(new QueryWrapper<ProjectLevel>().eq("company_id", user.getCompanyId()));
+                //获取项目阶段
+                List<ProjectStage> projectStageList = projectStageMapper.selectList(new QueryWrapper<ProjectStage>().eq("company_id", company.getId()));
                 TimeType timeType = timeTypeMapper.selectById(company.getId());
                 List<Project> projectList = new ArrayList<Project>();
                 //由于第一行需要指明列对应的标题
@@ -2669,6 +2699,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     HSSFCell subNameCell=null;
                     HSSFCell mainNameCell=null;
                     HSSFCell codeCell=null;
+                    HSSFCell contractCell=null;
                     HSSFCell isPublicCell=null;
                     HSSFCell nameCell=null;
                     HSSFCell participatorCell=null;
@@ -2679,18 +2710,30 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     HSSFCell endDateCell=null;
                     HSSFCell amountCell=null;
                     HSSFCell categoryCell=null;
+                    HSSFCell warrantyStartDateCell=null;
+                    HSSFCell warrantyEndDateCell=null;
+                    HSSFCell projectCategorySubCell=null;
+                    HSSFCell regionCell=null;
+                    HSSFCell buCell=null;
+                    HSSFCell stateCell=null;
+                    HSSFCell stageCell=null;
                     int i=0;
                     int k=0;
+                    int c=0;
                     if(timeType.getMainProjectState()==1){
                         mainNameCell = row.getCell(0);
                         codeCell = row.getCell(1);
-                        isPublicCell = row.getCell(2);
-                        nameCell = row.getCell(3);
-                        participatorCell = row.getCell(4);
-                        inchargerCell = row.getCell(5);
-                        levelCell = row.getCell(6);
+                        if(company.getId()==936){
+                            contractCell=row.getCell(2);
+                            c++;
+                        }
+                        isPublicCell = row.getCell(2+c);
+                        nameCell = row.getCell(3+c);
+                        participatorCell = row.getCell(4+c);
+                        inchargerCell = row.getCell(5+c);
+                        levelCell = row.getCell(6+c);
                         if(company.getPackageCustomer()==1){
-                            customerCell=row.getCell(7);
+                            customerCell=row.getCell(7+c);
                             i++;
                         }
                         if(company.getPackageProvider()==1){
@@ -2700,21 +2743,33 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                                 }
                             }
                         }
-                        startDateCell = row.getCell(7+i+k);
-                        endDateCell = row.getCell(8+i+k);
-                        amountCell = row.getCell(9+i+k);
+                        startDateCell = row.getCell(7+i+k+c);
+                        endDateCell = row.getCell(8+i+k+c);
+                        amountCell = row.getCell(9+i+k+c);
+                        if(company.getId()==936){
+                            warrantyEndDateCell=row.getCell(10+i+k+c);
+                            warrantyStartDateCell=row.getCell(11+i+k+c);
+                            projectCategorySubCell=row.getCell(12+i+k+c);
+                            regionCell=row.getCell(13+i+k+c);
+                            buCell=row.getCell(14+i+k+c);
+                            stateCell=row.getCell(15+i+k+c);
+                            stageCell=row.getCell(16+i+k+c);
+                        }
                     }else {
                         codeCell = row.getCell(0);
-                        categoryCell = row.getCell(1);
-                        isPublicCell = row.getCell(2);
-                        nameCell = row.getCell(3);
-                        subNameCell = row.getCell(4);
-                        participatorCell = row.getCell(5);
-                        inchargerCell = row.getCell(6);
-                        levelCell = row.getCell(7);
-                        customerCell=null;
+                        if(company.getId()==936){
+                            contractCell=row.getCell(1);
+                            c++;
+                        }
+                        categoryCell = row.getCell(1+c);
+                        isPublicCell = row.getCell(2+c);
+                        nameCell = row.getCell(3+c);
+                        subNameCell = row.getCell(4+c);
+                        participatorCell = row.getCell(5+c);
+                        inchargerCell = row.getCell(6+c);
+                        levelCell = row.getCell(7+c);
                         if(company.getPackageCustomer()==1){
-                            customerCell=row.getCell(8);
+                            customerCell=row.getCell(8+c);
                             i++;
                         }
                         if(company.getPackageProvider()==1){
@@ -2724,9 +2779,18 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                                 }
                             }
                         }
-                        startDateCell = row.getCell(8+i+k);
-                        endDateCell = row.getCell(9+i+k);
-                        amountCell = row.getCell(10+i+k);
+                        startDateCell = row.getCell(8+i+k+c);
+                        endDateCell = row.getCell(9+i+k+c);
+                        amountCell = row.getCell(10+i+k+c);
+                        if(company.getId()==936){
+                            warrantyEndDateCell=row.getCell(11+i+k+c);
+                            warrantyStartDateCell=row.getCell(12+i+k+c);
+                            projectCategorySubCell=row.getCell(13+i+k+c);
+                            regionCell=row.getCell(14+i+k+c);
+                            buCell=row.getCell(15+i+k+c);
+                            stateCell=row.getCell(16+i+k+c);
+                            stageCell=row.getCell(17+i+k+c);
+                        }
                     }
                     if (codeCell != null)codeCell.setCellType(CellType.STRING);
                     if (nameCell != null)nameCell.setCellType(CellType.STRING);
@@ -2741,6 +2805,14 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     /*if (startDateCell != null)startDateCell.setCellType(CellType.NUMERIC);
                     if (endDateCell != null)endDateCell.setCellType(CellType.NUMERIC);*/
                     if (amountCell != null)amountCell.setCellType(CellType.STRING);
+                    if (contractCell != null)amountCell.setCellType(CellType.STRING);
+                    /*if (warrantyStartDateCell != null)amountCell.setCellType(CellType.STRING);
+                    if (warrantyEndDateCell != null)amountCell.setCellType(CellType.STRING);*/
+                    if (projectCategorySubCell != null)amountCell.setCellType(CellType.STRING);
+                    if (regionCell != null)amountCell.setCellType(CellType.STRING);
+                    if (buCell != null)amountCell.setCellType(CellType.STRING);
+                    if (stateCell != null)amountCell.setCellType(CellType.STRING);
+                    if (stageCell != null)amountCell.setCellType(CellType.STRING);
                     if (nameCell == null) {//项目名称为空的直接跳过
                         throw new Exception("项目名称不能为空");
                     }
@@ -2809,6 +2881,37 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                             project.setLevel(projectLevelMap.get(levelStr));
                         }
                     }
+                    //处理威派格 项目相关数据
+                    if(company.getId()==936){
+                        if(StringUtils.isEmpty(stateCell)&&stateCell!=null){
+                            switch (stateCell.getStringCellValue()){
+                                case "全部":
+                                    project.setStatus(0);
+                                break;
+                                case "进行中":
+                                    project.setStatus(1);
+                                    break;
+                                case "已完成":
+                                    project.setStatus(2);
+                                    break;
+                                case "已撤销":
+                                    project.setStatus(3);
+                                    break;
+                                case "暂停":
+                                    project.setStatus(4);
+                                    break;
+                            }
+                        }
+                        if(StringUtils.isEmpty(stageCell)&&stageCell!=null){
+                            HSSFCell finalStageCell = stageCell;
+                            Optional<ProjectStage> first = projectStageList.stream().filter(ps -> ps.getProjectStageName().equals(finalStageCell.getStringCellValue())).findFirst();
+                            if(first.isPresent()){
+                                project.setCurrentStageId(first.get().getId());
+                                project.setCurrentStageName(first.get().getProjectStageName());
+                            }
+
+                        }
+                    }
                     if(customerCell!=null){
                         String cellStringCellValue = customerCell.getStringCellValue();
                         if(!StringUtils.isEmpty(cellStringCellValue)){
@@ -2932,6 +3035,32 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         projectAuditor.setProjectId(project.getId());
                         projectAuditorMapper.insert(projectAuditor);
                     }
+                    Integer id = project.getId();
+                    //处理威派格 垂直分表项目数据数据
+                    if(company.getId()==936){
+                        ProjectSeparate projectSeparate=new ProjectSeparate();
+                        projectSeparate.setId(id);
+                        if (warrantyStartDateCell !=null && !StringUtils.isEmpty(warrantyStartDateCell.getDateCellValue())) {
+                            projectSeparate.setWarrantyStartDate(LocalDate.parse(sdf.format(warrantyStartDateCell.getDateCellValue()), DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+                        }
+                        if (warrantyEndDateCell !=null && warrantyEndDateCell.getCellTypeEnum() == CellType.NUMERIC && !StringUtils.isEmpty(warrantyEndDateCell.getDateCellValue())) {
+                            projectSeparate.setWarrantyEndDate(LocalDate.parse(sdf.format(warrantyEndDateCell.getDateCellValue()), DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+                        }
+
+                        if (contractCell != null && !StringUtils.isEmpty(contractCell.getStringCellValue())) {
+                            projectSeparate.setContractCode(contractCell.getStringCellValue());
+                        }
+                        if (regionCell != null && !StringUtils.isEmpty(regionCell.getStringCellValue())) {
+                            projectSeparate.setRegion(regionCell.getStringCellValue());
+                        }
+                        if (buCell != null && !StringUtils.isEmpty(buCell.getStringCellValue())) {
+                            projectSeparate.setBu(buCell.getStringCellValue());
+                        }
+                        if (projectCategorySubCell != null && !StringUtils.isEmpty(projectCategorySubCell.getStringCellValue())) {
+                            projectSeparate.setProjectCategorySub(projectCategorySubCell.getStringCellValue());
+                        }
+                        projectSeparateMapper.insert(projectSeparate);
+                    }
                     importCount++;
                     //参与人
                     if (participatorCell != null) {
@@ -4125,8 +4254,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         User targetUser= userMapper.selectById(request.getHeader("token"));
         TimeType timeType = timeTypeMapper.selectById(targetUser.getCompanyId());
         Integer timeliness = timeType.getTimeliness();
-        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "全公司工时分配");
-        List<SysRichFunction> functionDeptList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "负责部门工时分配");
+        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "全公司填报及时率");
+        List<SysRichFunction> functionDeptList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "负责部门填报及时率");
         List<Integer> deptIds=null;
         List<Department> allDepartmentList=departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id",targetUser.getCompanyId()));
         List<Department> userDepartmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", targetUser.getId()).eq("company_id",targetUser.getCompanyId()));
@@ -4659,8 +4788,43 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     }
 
     @Override
-    public HttpRespMsg getTimeCostByGroup(String startDate, String endDate, Integer pageIndex, Integer pageSize, Integer groupId, Integer projectId) {
-        return null;
+    public HttpRespMsg getTimeCostByGroup(String startDate, String endDate, Integer pageIndex, Integer pageSize, Integer groupId, Integer projectId,HttpServletRequest request) {
+        String token = request.getHeader("TOKEN");
+        User user = userMapper.selectById(token);
+        Integer companyId = user.getCompanyId();
+        Integer startIndex = (pageIndex-1)*pageSize;
+        Integer endIndex = pageSize*pageIndex;
+        HttpRespMsg msg = new HttpRespMsg();
+        List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
+        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>> record;
+        long total;
+        if(pageIndex!=null&&pageSize!=null){
+            record = projectMapper.selectWithGroup(companyId,startDate,endDate, startIndex, endIndex, projectId,inchagerIds,groupId);
+        }else {
+            record=projectMapper.selectWithGroup(companyId,startDate,endDate, null, null, projectId,inchagerIds,groupId);
+        }
+        total =projectMapper.selectCountWithGroup(companyId,startDate,endDate, null, null, projectId,inchagerIds,groupId);
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("records", record);
+        map.put("total", total);
+        msg.data = map;
+        return msg;
     }
 
 

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

@@ -878,4 +878,59 @@
         group by us.id
         order  by us.department_id)as total
     </select>
+    <select id="selectWithGroup" resultType="java.util.Map">
+        select SUM(a.working_time) as workingTime,IFNULL(b.name,'未分组') as groupName ,c.project_name as projectName,c.project_code as projectCode
+        from report a
+        left join task_group b on a.group_id=b.id
+        left join project c on a.project_id=c.id
+        where c.company_id=#{companyId} and a.state=1
+        <if test="startDate!=null and endDate!=null">
+            and a.create_date &gt;=#{startDate} and a.create_date &lt;=#{endDate}
+        </if>
+        <if test="projectId!=null">
+            and c.id=#{projectId}
+        </if>
+        <if test="inchagerIds!=null and inchagerIds.size()>0">
+            and c.id in
+            <foreach collection="inchagerIds" open="(" separator="," close=")" item="item">
+                #{item}
+            </foreach>
+        </if>
+        <if test="groupId!=null">
+            and a.group_id=#{groupId}
+        </if>
+        group by b.id
+        order by c.id
+        <if test="startIndex!=null and endIndex!=null">
+            limit #{startIndex},#{endIndex}
+        </if>
+    </select>
+    <select id="selectCountWithGroup" resultType="java.lang.Long">
+        select count(1) from(
+        select SUM(a.working_time) as workingTime,IFNULL(b.name,'未分组') as groupName ,c.project_name as projectName,c.project_code as projectCode
+        from report a
+        left join task_group b on a.group_id=b.id
+        left join project c on a.project_id=c.id
+        where c.company_id=#{companyId} and a.state=1
+        <if test="startDate!=null and endDate!=null">
+            and a.create_date &gt;=#{startDate} and a.create_date &lt;=#{endDate}
+        </if>
+        <if test="projectId!=null">
+            and c.id=#{projectId}
+        </if>
+        <if test="inchagerIds!=null and inchagerIds.size()>0">
+            and c.id in
+            <foreach collection="inchagerIds" open="(" separator="," close=")" item="item">
+                #{item}
+            </foreach>
+        </if>
+        <if test="groupId!=null">
+            and a.group_id=#{groupId}
+        </if>
+        group by b.id
+        order by c.id
+        <if test="startIndex!=null and endIndex!=null">
+            limit #{startIndex},#{endIndex}
+        </if>) as total
+    </select>
 </mapper>

+ 21 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectSeparateMapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.ProjectSeparateMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.ProjectSeparate">
+        <result column="id" property="id" />
+        <result column="contract_code" property="contractCode" />
+        <result column="warranty_start_date" property="warrantyStartDate" />
+        <result column="warranty_end_date" property="warrantyEndDate" />
+        <result column="project_category_sub" property="projectCategorySub" />
+        <result column="region" property="region" />
+        <result column="bu" property="bu" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, contract_code, warranty_start_date, warranty_end_date, project_category_sub, region, bu
+    </sql>
+
+</mapper>