Переглянути джерело

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

seyason 2 роки тому
батько
коміт
6d1c387bfd

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

@@ -54,6 +54,10 @@ public class ProjectController {
     private ProjectLevelMapper projectLevelMapper;
     @Resource
     private ProjectStageMapper projectStageMapper;
+    @Resource
+    private ProjectKeyNodesMapper projectKeyNodesMapper;
+    @Resource
+    private ProjectKeyNodesSettingMapper projectKeyNodesSettingMapper;
 
     /**
      * 获取我参与的全部项目的负责人列表
@@ -590,6 +594,7 @@ public class ProjectController {
         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<ProjectKeyNodesSetting> projectKeyNodesSettings = projectKeyNodesSettingMapper.selectList(new QueryWrapper<ProjectKeyNodesSetting>().eq("company_id", companyId));
         List<String> collect = providerCategoryList.stream().distinct().map(pc -> pc.getProviderCategoryName()).collect(Collectors.toList());
         TimeType timeType = timeTypeMapper.selectById(companyId);
         if(timeType.getMainProjectState()==1){
@@ -632,6 +637,11 @@ public class ProjectController {
             heads.add("所属BU");
             heads.add("项目状态");
             heads.add("项目阶段");
+            for (ProjectKeyNodesSetting projectKeyNodesSetting : projectKeyNodesSettings) {
+                heads.add(projectKeyNodesSetting.getName()+"计划完成日期");
+                heads.add(projectKeyNodesSetting.getName()+"实际完成日期");
+                heads.add(projectKeyNodesSetting.getName()+"节点状态");
+            }
         }
         List<List<String>> allList = new ArrayList<>();
         allList.add(heads);
@@ -856,6 +866,19 @@ public class ProjectController {
                                     sheet.addValidationData(data_validation_list);
                                     break;
                             }
+                            if(rowList.get(i).contains("节点状态")){
+                                // 加载下拉列表内容
+                                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);
+                            }
                         }else {
                             cell.setCellStyle(cellStyle);
                         }

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ReportLog.java

@@ -75,6 +75,12 @@ public class ReportLog extends Model<ReportLog> {
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
     private LocalDateTime operateDate;
 
+    @TableField(exist = false)
+    private String creatorName;
+
+    @TableField(exist = false)
+    private String operateName;
+
 
     @Override
     protected Serializable pkVal() {

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

@@ -3005,6 +3005,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 List<ProjectStage> projectStageList = projectStageMapper.selectList(new QueryWrapper<ProjectStage>().eq("company_id", company.getId()));
                 //获取部门
                 List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));
+                //获取所有节点
+                List<ProjectKeyNodesSetting> projectKeyNodesSettingList = projectKeyNodesSettingMapper.selectList(new QueryWrapper<ProjectKeyNodesSetting>().eq("company_id", user.getCompanyId()));
                 TimeType timeType = timeTypeMapper.selectById(company.getId());
                 List<Project> projectList = new ArrayList<Project>();
                 //由于第一行需要指明列对应的标题
@@ -3057,6 +3059,25 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     HSSFCell buCell=null;
                     HSSFCell stateCell=null;
                     HSSFCell stageCell=null;
+                    HSSFCell plate1=null;
+                    HSSFCell plate2=null;
+                    HSSFCell plate3=null;
+                    HSSFCell plate4=null;
+                    HSSFCell plate5=null;
+                    HSSFCell plate6=null;
+                    HSSFCell plate7=null;
+                    HSSFCell plate8=null;
+                    HSSFCell plate9=null;
+                    HSSFCell plate10=null;
+                    HSSFCell plate11=null;
+                    HSSFCell plate12=null;
+                    HSSFCell plate13=null;
+                    HSSFCell plate14=null;
+                    HSSFCell plate15=null;
+                    HSSFCell plate16=null;
+                    HSSFCell plate17=null;
+                    HSSFCell plate18=null;
+
                     int i=0;
                     int k=0;
                     int c=0;
@@ -3099,6 +3120,24 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                             buCell=row.getCell(14+i+k+c+d);
                             stateCell=row.getCell(15+i+k+c+d);
                             stageCell=row.getCell(16+i+k+c+d);
+                            plate1=row.getCell(17+i+k+c+d);
+                            plate2=row.getCell(18+i+k+c+d);
+                            plate3=row.getCell(19+i+k+c+d);
+                            plate4=row.getCell(20+i+k+c+d);
+                            plate5=row.getCell(21+i+k+c+d);
+                            plate6=row.getCell(22+i+k+c+d);
+                            plate7=row.getCell(23+i+k+c+d);
+                            plate8=row.getCell(24+i+k+c+d);
+                            plate9=row.getCell(25+i+k+c+d);
+                            plate10=row.getCell(26+i+k+c+d);
+                            plate11=row.getCell(27+i+k+c+d);
+                            plate12=row.getCell(28+i+k+c+d);
+                            plate13=row.getCell(29+i+k+c+d);
+                            plate14=row.getCell(30+i+k+c+d);
+                            plate15=row.getCell(31+i+k+c+d);
+                            plate16=row.getCell(32+i+k+c+d);
+                            plate17=row.getCell(33+i+k+c+d);
+                            plate18=row.getCell(34+i+k+c+d);
                         }
                     }else {
                         codeCell = row.getCell(0);
@@ -3139,6 +3178,24 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                             buCell=row.getCell(15+i+k+c+d);
                             stateCell=row.getCell(16+i+k+c+d);
                             stageCell=row.getCell(17+i+k+c+d);
+                            plate1=row.getCell(18+i+k+c+d);
+                            plate2=row.getCell(19+i+k+c+d);
+                            plate3=row.getCell(20+i+k+c+d);
+                            plate4=row.getCell(21+i+k+c+d);
+                            plate5=row.getCell(22+i+k+c+d);
+                            plate6=row.getCell(23+i+k+c+d);
+                            plate7=row.getCell(24+i+k+c+d);
+                            plate8=row.getCell(25+i+k+c+d);
+                            plate9=row.getCell(26+i+k+c+d);
+                            plate10=row.getCell(27+i+k+c+d);
+                            plate11=row.getCell(28+i+k+c+d);
+                            plate12=row.getCell(29+i+k+c+d);
+                            plate13=row.getCell(30+i+k+c+d);
+                            plate14=row.getCell(31+i+k+c+d);
+                            plate15=row.getCell(32+i+k+c+d);
+                            plate16=row.getCell(33+i+k+c+d);
+                            plate17=row.getCell(34+i+k+c+d);
+                            plate18=row.getCell(35+i+k+c+d);
                         }
                     }
                     if (codeCell != null)codeCell.setCellType(CellType.STRING);
@@ -3163,6 +3220,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     if (buCell != null)buCell.setCellType(CellType.STRING);
                     if (stateCell != null)stateCell.setCellType(CellType.STRING);
                     if (stageCell != null)stageCell.setCellType(CellType.STRING);
+                    if (plate3 != null)plate3.setCellType(CellType.STRING);
+                    if (plate6 != null)plate6.setCellType(CellType.STRING);
+                    if (plate9 != null)plate9.setCellType(CellType.STRING);
+                    if (plate12 != null)plate12.setCellType(CellType.STRING);
+
                     if (nameCell == null) {//项目名称为空的直接跳过
                         throw new Exception("项目名称不能为空");
                     }
@@ -3441,8 +3503,251 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         }
                         if(flag&&check){
                            projectSeparateMapper.updateById(projectSeparate);
+                            List<ProjectKeyNodes> nodes = projectKeyNodesMapper.selectList(new QueryWrapper<ProjectKeyNodes>().eq("project_id", id));
+                            for (int x = 0; x < projectKeyNodesSettingList.size(); x++) {
+                                ProjectKeyNodesSetting projectKeyNodesSetting = projectKeyNodesSettingList.get(x);
+                                Optional<ProjectKeyNodes> first = nodes.stream().filter(ns -> ns.getNodesId().equals(projectKeyNodesSetting.getId())).findFirst();
+                                ProjectKeyNodes projectKeyNodes=new ProjectKeyNodes();
+                                switch (x){
+                                    case 0:
+                                        if(plate1!=null&&plate1.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(plate1.getDateCellValue())){
+                                            projectKeyNodes.setPlanCompleteDate(sdf.format(plate1.getDateCellValue()));
+                                        }
+                                        if(plate2!=null&&plate2.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(plate2.getDateCellValue())){
+                                            projectKeyNodes.setActualCompleteDate(sdf.format(plate2.getDateCellValue()));
+                                        }
+                                        if(plate3!=null&&!StringUtils.isEmpty(plate3.getStringCellValue())){
+                                            switch (plate3.getStringCellValue()){
+                                                case "正常":projectKeyNodes.setStates("0");
+                                                    break;
+                                                case "延期":projectKeyNodes.setStates("1");
+                                                    break;
+                                                case "完成":projectKeyNodes.setStates("2");
+                                                    break;
+                                            }
+                                        }
+                                        break;
+                                    case 1:
+                                        if(plate4!=null&&plate4.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(plate4.getDateCellValue())){
+                                            projectKeyNodes.setPlanCompleteDate(sdf.format(plate4.getDateCellValue()));
+                                        }
+                                        if(plate5!=null&&plate5.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(plate5.getDateCellValue())){
+                                            projectKeyNodes.setActualCompleteDate(sdf.format(plate5.getDateCellValue()));
+                                        }
+                                        if(plate6!=null&&!StringUtils.isEmpty(plate6.getStringCellValue())){
+                                            switch (plate6.getStringCellValue()){
+                                                case "正常":projectKeyNodes.setStates("0");
+                                                    break;
+                                                case "延期":projectKeyNodes.setStates("1");
+                                                    break;
+                                                case "完成":projectKeyNodes.setStates("2");
+                                                    break;
+                                            }
+                                        }
+                                        break;
+                                    case 2:
+                                        if(plate7!=null&&plate7.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(plate7.getDateCellValue())){
+                                            projectKeyNodes.setPlanCompleteDate(sdf.format(plate7.getDateCellValue()));
+                                        }
+                                        if(plate8!=null&&plate8.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(plate8.getDateCellValue())){
+                                            projectKeyNodes.setActualCompleteDate(sdf.format(plate8.getDateCellValue()));
+                                        }
+                                        if(plate9!=null&&!StringUtils.isEmpty(plate9.getStringCellValue())){
+                                            switch (plate9.getStringCellValue()){
+                                                case "正常":projectKeyNodes.setStates("0");
+                                                    break;
+                                                case "延期":projectKeyNodes.setStates("1");
+                                                    break;
+                                                case "完成":projectKeyNodes.setStates("2");
+                                                    break;
+                                            }
+                                        }
+                                        break;
+                                    case 3:
+                                        if(plate10!=null&&plate10.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(plate10.getDateCellValue())){
+                                            projectKeyNodes.setPlanCompleteDate(sdf.format(plate10.getDateCellValue()));
+                                        }
+                                        if(plate11!=null&&plate11.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(plate11.getDateCellValue())){
+                                            projectKeyNodes.setActualCompleteDate(sdf.format(plate11.getDateCellValue()));
+                                        }
+                                        if(plate12!=null&&!StringUtils.isEmpty(plate12.getStringCellValue())){
+                                            switch (plate12.getStringCellValue()){
+                                                case "正常":projectKeyNodes.setStates("0");
+                                                    break;
+                                                case "延期":projectKeyNodes.setStates("1");
+                                                    break;
+                                                case "完成":projectKeyNodes.setStates("2");
+                                                    break;
+                                            }
+                                        }
+                                        break;
+                                    case 4:
+                                        if(plate13!=null&&plate13.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(plate13.getDateCellValue())){
+                                            projectKeyNodes.setPlanCompleteDate(sdf.format(plate13.getDateCellValue()));
+                                        }
+                                        if(plate14!=null&&plate14.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(plate14.getDateCellValue())){
+                                            projectKeyNodes.setActualCompleteDate(sdf.format(plate14.getDateCellValue()));
+                                        }
+                                        if(plate15!=null&&!StringUtils.isEmpty(plate15.getStringCellValue())){
+                                            switch (plate15.getStringCellValue()){
+                                                case "正常":projectKeyNodes.setStates("0");
+                                                    break;
+                                                case "延期":projectKeyNodes.setStates("1");
+                                                    break;
+                                                case "完成":projectKeyNodes.setStates("2");
+                                                    break;
+                                            }
+                                        }
+                                        break;
+                                    case 5:
+                                        if(plate16!=null&&plate16.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(plate16.getDateCellValue())){
+                                            projectKeyNodes.setPlanCompleteDate(sdf.format(plate16.getDateCellValue()));
+                                        }
+                                        if(plate17!=null&&plate17.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(plate17.getDateCellValue())){
+                                            projectKeyNodes.setActualCompleteDate(sdf.format(plate17.getDateCellValue()));
+                                        }
+                                        if(plate18!=null&&!StringUtils.isEmpty(plate18.getStringCellValue())){
+                                            switch (plate18.getStringCellValue()){
+                                                case "正常":projectKeyNodes.setStates("0");
+                                                    break;
+                                                case "延期":projectKeyNodes.setStates("1");
+                                                    break;
+                                                case "完成":projectKeyNodes.setStates("2");
+                                                    break;
+                                            }
+                                        }
+                                        break;
+                                }
+                                if(first.isPresent()){
+                                     projectKeyNodes.setId(first.get().getId());
+                                    projectKeyNodesMapper.updateById(projectKeyNodes);
+                                }else {
+                                    projectKeyNodes.setProjectId(id);
+                                    projectKeyNodes.setNodesId(projectKeyNodesSetting.getId());
+                                    projectKeyNodes.setNodesName(projectKeyNodesSetting.getName());
+                                    projectKeyNodesMapper.insert(projectKeyNodes);
+                                }
+                            }
                         }else {
                             projectSeparateMapper.insert(projectSeparate);
+                            for (int x = 0; x < projectKeyNodesSettingList.size(); x++) {
+                                ProjectKeyNodesSetting projectKeyNodesSetting = projectKeyNodesSettingList.get(x);
+                                ProjectKeyNodes projectKeyNodes=new ProjectKeyNodes();
+                                projectKeyNodes.setProjectId(id);
+                                projectKeyNodes.setNodesId(projectKeyNodesSetting.getId());
+                                projectKeyNodes.setNodesName(projectKeyNodesSetting.getName());
+                                switch (x) {
+                                    case 0:
+                                        if(plate1!=null&&plate1.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(plate1.getDateCellValue())){
+                                            projectKeyNodes.setPlanCompleteDate(sdf.format(plate1.getDateCellValue()));
+                                        }
+                                        if(plate2!=null&&plate2.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(plate2.getDateCellValue())){
+                                            projectKeyNodes.setActualCompleteDate(sdf.format(plate2.getDateCellValue()));
+                                        }
+                                        if(plate3!=null&&!StringUtils.isEmpty(plate3.getStringCellValue())){
+                                            switch (plate3.getStringCellValue()){
+                                                case "正常":projectKeyNodes.setStates("0");
+                                                    break;
+                                                case "延期":projectKeyNodes.setStates("1");
+                                                    break;
+                                                case "完成":projectKeyNodes.setStates("2");
+                                                    break;
+                                            }
+                                        }
+                                        break;
+                                    case 1:
+                                        if(plate4!=null&&plate4.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(plate4.getDateCellValue())){
+                                            projectKeyNodes.setPlanCompleteDate(sdf.format(plate4.getDateCellValue()));
+                                        }
+                                        if(plate5!=null&&plate5.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(plate5.getDateCellValue())){
+                                            projectKeyNodes.setActualCompleteDate(sdf.format(plate5.getDateCellValue()));
+                                        }
+                                        if(plate6!=null&&!StringUtils.isEmpty(plate6.getStringCellValue())){
+                                            switch (plate6.getStringCellValue()){
+                                                case "正常":projectKeyNodes.setStates("0");
+                                                    break;
+                                                case "延期":projectKeyNodes.setStates("1");
+                                                    break;
+                                                case "完成":projectKeyNodes.setStates("2");
+                                                    break;
+                                            }
+                                        }
+                                        break;
+                                    case 2:
+                                        if(plate7!=null&&plate7.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(plate7.getDateCellValue())){
+                                            projectKeyNodes.setPlanCompleteDate(sdf.format(plate7.getDateCellValue()));
+                                        }
+                                        if(plate8!=null&&plate8.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(plate8.getDateCellValue())){
+                                            projectKeyNodes.setActualCompleteDate(sdf.format(plate8.getDateCellValue()));
+                                        }
+                                        if(plate9!=null&&!StringUtils.isEmpty(plate9.getStringCellValue())){
+                                            switch (plate9.getStringCellValue()){
+                                                case "正常":projectKeyNodes.setStates("0");
+                                                    break;
+                                                case "延期":projectKeyNodes.setStates("1");
+                                                    break;
+                                                case "完成":projectKeyNodes.setStates("2");
+                                                    break;
+                                            }
+                                        }
+                                        break;
+                                    case 3:
+                                        if(plate10!=null&&plate10.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(plate10.getDateCellValue())){
+                                            projectKeyNodes.setPlanCompleteDate(sdf.format(plate10.getDateCellValue()));
+                                        }
+                                        if(plate11!=null&&plate11.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(plate11.getDateCellValue())){
+                                            projectKeyNodes.setActualCompleteDate(sdf.format(plate11.getDateCellValue()));
+                                        }
+                                        if(plate12!=null&&!StringUtils.isEmpty(plate12.getStringCellValue())){
+                                            switch (plate12.getStringCellValue()){
+                                                case "正常":projectKeyNodes.setStates("0");
+                                                    break;
+                                                case "延期":projectKeyNodes.setStates("1");
+                                                    break;
+                                                case "完成":projectKeyNodes.setStates("2");
+                                                    break;
+                                            }
+                                        }
+                                        break;
+                                    case 4:
+                                        if(plate13!=null&&plate13.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(plate13.getDateCellValue())){
+                                            projectKeyNodes.setPlanCompleteDate(sdf.format(plate13.getDateCellValue()));
+                                        }
+                                        if(plate14!=null&&plate14.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(plate14.getDateCellValue())){
+                                            projectKeyNodes.setActualCompleteDate(sdf.format(plate14.getDateCellValue()));
+                                        }
+                                        if(plate15!=null&&!StringUtils.isEmpty(plate15.getStringCellValue())){
+                                            switch (plate15.getStringCellValue()){
+                                                case "正常":projectKeyNodes.setStates("0");
+                                                    break;
+                                                case "延期":projectKeyNodes.setStates("1");
+                                                    break;
+                                                case "完成":projectKeyNodes.setStates("2");
+                                                    break;
+                                            }
+                                        }
+                                        break;
+                                    case 5:
+                                        if(plate16!=null&&plate16.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(plate16.getDateCellValue())){
+                                            projectKeyNodes.setPlanCompleteDate(sdf.format(plate16.getDateCellValue()));
+                                        }
+                                        if(plate17!=null&&plate17.getCellTypeEnum() == CellType.NUMERIC  && !StringUtils.isEmpty(plate17.getDateCellValue())){
+                                            projectKeyNodes.setActualCompleteDate(sdf.format(plate17.getDateCellValue()));
+                                        }
+                                        if(plate18!=null&&!StringUtils.isEmpty(plate18.getStringCellValue())){
+                                            switch (plate18.getStringCellValue()){
+                                                case "正常":projectKeyNodes.setStates("0");
+                                                    break;
+                                                case "延期":projectKeyNodes.setStates("1");
+                                                    break;
+                                                case "完成":projectKeyNodes.setStates("2");
+                                                    break;
+                                            }
+                                        }
+                                        break;
+                                }
+                                projectKeyNodesMapper.insert(projectKeyNodes);
+                            }
                         }
                     }
                     importCount++;
@@ -3588,6 +3893,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         }
         List<HashMap<String, Object>> list = projectMapper.getExportData(user.getCompanyId(), userId);
         HttpRespMsg projectPage = getProjectPage(null, null, null, null, null, null, null, null,null, null, null,null, request);
+        List<ProjectKeyNodesSetting> projectKeyNodesSettingList = projectKeyNodesSettingMapper.selectList(new QueryWrapper<ProjectKeyNodesSetting>().eq("company_id", user.getCompanyId()));
         Map<String,Object> resultMap= (Map<String, Object>) projectPage.data;
         List<ProjectVO> projectVOList= (List<ProjectVO>) resultMap.get("records");
         List<String> nameList= (List<String>) resultMap.get("nameList");
@@ -3633,6 +3939,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             headList.add("所属BU");
             headList.add("项目状态");
             headList.add("项目阶段");
+            for (ProjectKeyNodesSetting projectKeyNodesSetting : projectKeyNodesSettingList) {
+                headList.add(projectKeyNodesSetting.getName()+"计划完成时间");
+                headList.add(projectKeyNodesSetting.getName()+"实际完成时间");
+            }
         }
         List<List<String>> allList = new ArrayList<List<String>>();
         allList.add(headList);
@@ -3644,6 +3954,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         //防止空数据
         collect.add(-1);
         List<ProjectSeparate> projectSeparateList= projectSeparateMapper.selectList(new QueryWrapper<ProjectSeparate>().in("id", collect));
+        List<ProjectKeyNodes> nodesList = projectKeyNodesMapper.selectList(new QueryWrapper<ProjectKeyNodes>().in("project_id", collect));
         for (ProjectVO projectVO : projectVOList) {
             List<String> rowData = new ArrayList<>();
             rowData.add(projectVO.getProjectCode());
@@ -3742,6 +4053,17 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     break;
                 }
                 rowData.add(projectVO.getCurrentStageName()==null?"":projectVO.getCurrentStageName());
+                for (ProjectKeyNodesSetting projectKeyNodesSetting : projectKeyNodesSettingList) {
+                    Optional<ProjectKeyNodes> it = nodesList.stream().filter(nl -> nl.getNodesId().equals(projectKeyNodesSetting.getId())&&nl.getProjectId().equals(projectVO.getId())).findFirst();
+                    if(it.isPresent()){
+                        ProjectKeyNodes projectKeyNodes = it.get();
+                        rowData.add(projectKeyNodes.getPlanCompleteDate());
+                        rowData.add(projectKeyNodes.getActualCompleteDate());
+                    }else{
+                        rowData.add("");
+                        rowData.add("");
+                    }
+                }
             }
             allList.add(rowData);
         }

+ 17 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -35,6 +35,7 @@ import javax.servlet.http.HttpServletRequest;
 import java.io.*;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.sql.Timestamp;
 import java.text.DateFormat;
 import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
@@ -3980,7 +3981,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         String startDate =tokenVo.getStartDate();
         String endDate = tokenVo.getEndDate();
         DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
-        DateFormat dft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         LocalDate openDate = LocalDate.parse(startDate, df);
         LocalDate closeDate = LocalDate.parse(endDate, df);
         if(Duration.between(openDate.atTime(LocalTime.now()),closeDate.atTime(LocalTime.now())).toDays()>31){
@@ -3994,6 +3994,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         }
         ThirdPartyInterface thirdPartyInterface = thirdPartyInterfaceList.get(0);
         List<ReportLog> reportLogList = reportLogMapper.selectList(new QueryWrapper<ReportLog>().eq("company_id", thirdPartyInterface.getComapnyId()).orderByAsc("operate_date"));
+        List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", thirdPartyInterface.getComapnyId()));
         if(LocalDateTime.now().isAfter(thirdPartyInterface.getExpireTime())){
             msg.setError("token过期失效");
             return msg;
@@ -4001,10 +4002,25 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         if(token.equals(thirdPartyInterface.getToken())){
             List<HashMap<String, Object>> allReportByDate = reportMapper.getAllReportByDate(startDate,thirdPartyInterface.getComapnyId(), null, endDate, null, null, null);
             for (HashMap<String, Object> map : allReportByDate) {
+                java.sql.Date sqlCreateDate= (java.sql.Date) map.get("createDate");
+                java.sql.Timestamp sqlProjectAuditTime= (Timestamp) map.get("projectAuditTime");
+                java.sql.Timestamp sqlTime= (Timestamp) map.get("time");
+                LocalDate createDate = sqlCreateDate.toLocalDate();
+                LocalDateTime projectAuditTime = sqlProjectAuditTime.toLocalDateTime();
+                LocalDateTime time = sqlTime.toLocalDateTime();
+                map.put("createDate",df.format(createDate));
+                map.put("projectAuditTime",projectAuditTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                map.put("time",time.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
                 List<ReportLog> item=new ArrayList<>();
                 Integer reportId = (Integer) map.get("id");
                 for (ReportLog reportLog : reportLogList) {
                     List<String> list = Arrays.asList(reportLog.getReportIds().split(","));
+                    reportLog.setCreatorName(!userList.stream().filter(
+                            ul->ul.getId().equals(reportLog.getCreatorId())).findFirst().isPresent()?"":userList.stream().filter(
+                            ul->ul.getId().equals(reportLog.getCreatorId())).findFirst().get().getName());
+                    reportLog.setOperateName(!userList.stream().filter(
+                            ul->ul.getId().equals(reportLog.getOperatorId())).findFirst().isPresent()?"":userList.stream().filter(
+                            ul->ul.getId().equals(reportLog.getOperatorId())).findFirst().get().getName());
                     if(list.contains(String.valueOf(reportId))&&!reportLog.getMsg().contains("提交")){
                          item.add(reportLog);
                     }

+ 4 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -31,7 +31,10 @@ import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.Period;
 import java.time.format.DateTimeFormatter;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 

+ 4 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml

@@ -57,12 +57,12 @@
 
     <!--根据日期获取全部报告信息-->
     <select id="getAllReportByDate" resultType="java.util.Map">
-        SELECT a.id, c.name,c.corpwx_userid as corpwxUserId, b.project_name AS project,b.category_name as categoryName, a.working_time AS duration, a.content, a.create_time   AS time,a.create_date as createDate,
-        a.state, a.time_type as timeType, a.cost, a.report_time_type as reportTimeType,a.start_time as startTime,
-        a.end_time  as endTime, d.name as subProjectName,a.task_id as taskId, task.name as taskName, a.is_overtime as isOvertime,a.progress as progress,
+        SELECT a.id, c.name,c.corpwx_userid as corpwxUserId, b.project_name AS project,b.project_code as projectCode,b.category_name as categoryName, a.working_time AS duration, a.content, a.create_time   AS time,a.create_date as createDate,
+        a.state, a.time_type as timeType, a.cost, a.report_time_type as reportTimeType,a.start_time as startTime,u.job_number as jobNumber,
+        a.end_time  as endTime, d.name as subProjectName,d.code as subProjectCode,a.task_id as taskId, task.name as taskName, a.is_overtime as isOvertime,a.progress as progress,
         a.department_audit_state as departmentAuditState, a.stage, a.pic_str as picStr, multi_worktime as multiWorktime
         , reject_reason as rejectReason, reject_username as rejectUsername, reject_userid as rejectUserid, degree_id as degree_id,report_extra_degree.name as degreeName,task_group.name as groupName,a.group_id as groupId,a.custom_data as customData
-        ,u.name as projectAuditorName, a.project_auditor_id as projectAuditorId, department.department_name as departmentName, a.overtime_hours as overtimeHours, a.custom_text as customText,a.project_audit_time  as projectAuditTime,project_main.name as projectMainName
+        ,u.name as projectAuditorName, a.project_auditor_id as projectAuditorId, department.department_name as departmentName,department.department_id as departmentId, a.overtime_hours as overtimeHours, a.custom_text as customText,a.project_audit_time  as projectAuditTime,project_main.name as projectMainName
         FROM report AS a
         JOIN project AS b ON a.project_id=b.id
         LEFT JOIN user AS c ON a.creator_id=c.id

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -578,7 +578,7 @@
                                 <div class="keyNodesTime">
                                     <el-select v-model="item.states" placeholder="请选择" style="width: 80%" size="small">
                                         <el-option label="正常" value="0"></el-option>
-                                        <el-option label="期" value="1"></el-option>
+                                        <el-option label="期" value="1"></el-option>
                                         <el-option label="完成" value="2"></el-option>
                                     </el-select>
                                 </div>