瀏覽代碼

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

ggooalice 2 年之前
父節點
當前提交
6c2fac36d4

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

@@ -5,8 +5,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.management.platform.entity.Company;
 import com.management.platform.entity.Project;
 import com.management.platform.entity.ProviderCategory;
+import com.management.platform.entity.TimeType;
 import com.management.platform.mapper.CompanyMapper;
 import com.management.platform.mapper.ProviderCategoryMapper;
+import com.management.platform.mapper.TimeTypeMapper;
 import com.management.platform.service.ProjectService;
 import com.management.platform.util.HttpRespMsg;
 import org.apache.poi.hssf.usermodel.*;
@@ -51,6 +53,8 @@ public class ProjectController {
     private CompanyMapper companyMapper;
     @Resource
     private ProviderCategoryMapper providerCategoryMapper;
+    @Resource
+    private TimeTypeMapper timeTypeMapper;
 
     /**
      * 获取我参与的全部项目的负责人列表
@@ -551,11 +555,16 @@ public class ProjectController {
         Company company = companyMapper.selectById(companyId);
         List<ProviderCategory> providerCategoryList = providerCategoryMapper.selectList(new QueryWrapper<ProviderCategory>().eq("company_id", companyId));
         List<String> collect = providerCategoryList.stream().distinct().map(pc -> pc.getProviderCategoryName()).collect(Collectors.toList());
+        TimeType timeType = timeTypeMapper.selectById(companyId);
         heads.add("项目编号");
         heads.add("项目分类");
         heads.add("是否为公共项目");
         heads.add("项目名称");
-        heads.add("子项目(多个用,隔开)");
+        if(timeType.getMainProjectState()==1){
+            heads.add("主项目");
+        }else {
+            heads.add("子项目(多个用,隔开)");
+        }
         heads.add("参与人");
         heads.add("主要负责人");
         heads.add("级别");
@@ -789,5 +798,9 @@ public class ProjectController {
         return msg;
 //        return "";
     }
+    @RequestMapping("/getUserWorkingTimeStatic")
+    public HttpRespMsg getUserWorkingTimeStatic(String startDate,String endDate,Integer pageIndex,Integer pageSize,String userId,Integer departmentId){
+        return projectService.getUserWorkingTimeStatic(startDate,endDate,pageIndex,pageSize,request,userId,departmentId);
+    }
 }
 

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

@@ -103,4 +103,8 @@ public interface ProjectMapper extends BaseMapper<Project> {
 
     @Update("update project set status=4 where id=#{id}")
     void suspendProject(Integer id);
+
+    List<Map<String, Object>> getUserWorkingTimeStatic(String startDate, String endDate, Integer pageIndex, Integer pageSize, String userId, Integer departmentId, List<Integer> deptIds);
+
+    long findCountWithUserWorkingTime(String startDate, String endDate, Integer pageIndex, Integer pageSize, String userId, Integer departmentId, List<Integer> deptIds);
 }

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

@@ -150,4 +150,6 @@ public interface ProjectService extends IService<Project> {
     HttpRespMsg batchSetParticipation(HttpServletRequest request,String projectIdArray , String userIds);
 
     HttpRespMsg suspendProject(Integer id);
+
+    HttpRespMsg getUserWorkingTimeStatic(String startDate, String endDate, Integer pageIndex, Integer pageSize, HttpServletRequest request,String userId,Integer departmentId);
 }

+ 8 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/GroupTemplateServiceImpl.java

@@ -14,6 +14,7 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 /**
@@ -86,11 +87,13 @@ public class GroupTemplateServiceImpl extends ServiceImpl<GroupTemplateMapper, G
                         filterTaskList.forEach(f->{
                             GtemplateTask item = GtemplateTask.fromTask(f);
                             item.setGtemplateId(template.getId());
-                            String stagesName = stagesList.stream().filter(s->s.getId().equals(f.getStagesId())).findFirst().get().getStagesName();
-
-                            Integer tmpSid = tmpstagesList.stream().filter(tmp->tmp.getStagesName().equals(stagesName)).findFirst().get().getId();
-                            item.setTstagesId(tmpSid);
-                            gtemplateTaskList.add(item);
+                            Optional<Stages> first = stagesList.stream().filter(s -> s.getId().equals(f.getStagesId())).findFirst();
+                            if(first.isPresent()){
+                                String stagesName = first.get().getStagesName();
+                                Integer tmpSid = tmpstagesList.stream().filter(tmp->tmp.getStagesName().equals(stagesName)).findFirst().get().getId();
+                                item.setTstagesId(tmpSid);
+                                gtemplateTaskList.add(item);
+                            }
                         });
                     }
 

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

@@ -136,6 +136,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     ProviderCategoryMapper providerCategoryMapper;
     @Resource
     ProviderInfoMapper providerInfoMapper;
+    @Resource
+    ProjectMainMapper projectMainMapper;
 
     @Resource
     private HttpServletResponse response;
@@ -2431,6 +2433,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 List<CustomerInfo> customerInfoList = customerInfoMapper.selectList(new QueryWrapper<CustomerInfo>().eq("company_id", user.getCompanyId()));
                 //获取全部供货商
                 List<ProviderInfo> providerInfoList = providerInfoMapper.selectList(new QueryWrapper<ProviderInfo>().eq("company_id", user.getCompanyId()));
+                //获取主项目
+                List<ProjectMain> projectMainList = projectMainMapper.selectList(new QueryWrapper<ProjectMain>().eq("company_id", user.getCompanyId()));
+                TimeType timeType = timeTypeMapper.selectById(company.getId());
                 List<Project> projectList = new ArrayList<Project>();
                 //由于第一行需要指明列对应的标题
                 int rowNum = sheet.getLastRowNum();
@@ -2458,7 +2463,13 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     HSSFCell categoryCell = row.getCell(1);
                     HSSFCell isPublicCell = row.getCell(2);
                     HSSFCell nameCell = row.getCell(3);
-                    HSSFCell subNameCell = row.getCell(4);
+                    HSSFCell subNameCell=null;
+                    HSSFCell mainNameCell=null;
+                    if(timeType.getMainProjectState()==1){
+                        mainNameCell = row.getCell(4);
+                    }else {
+                        subNameCell = row.getCell(4);
+                    }
                     HSSFCell participatorCell = row.getCell(5);
                     HSSFCell inchargerCell = row.getCell(6);
                     HSSFCell levelCell = row.getCell(7);
@@ -2486,6 +2497,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     if (categoryCell != null)categoryCell.setCellType(CellType.STRING);
                     if (isPublicCell != null)isPublicCell.setCellType(CellType.STRING);
                     if (subNameCell != null)subNameCell.setCellType(CellType.STRING);
+                    if (mainNameCell != null)mainNameCell.setCellType(CellType.STRING);
                     if (participatorCell != null)participatorCell.setCellType(CellType.STRING);
                     if (inchargerCell != null)inchargerCell.setCellType(CellType.STRING);
                     if (levelCell != null)levelCell.setCellType(CellType.STRING);
@@ -2501,9 +2513,13 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         String code = codeCell.getStringCellValue().trim().replaceAll("\\u00a0", "");
                         if (code.equals("项目编号") && rowIndex == 0) {
                             //检查是否有子项目列
-                            if (!subNameCell.getStringCellValue().trim().startsWith("子项目")) {
+                            if (subNameCell!=null&&!subNameCell.getStringCellValue().trim().startsWith("子项目")&&timeType.getMainProjectState()!=1) {
                                 throw new Exception("缺少子项目列,请下载最新模板");
                             }
+                            //检查是否有主项目列
+                            if (mainNameCell!=null&&!mainNameCell.getStringCellValue().trim().startsWith("主项目")&&timeType.getMainProjectState()==1) {
+                                throw new Exception("缺少主项目列,请下载最新模板");
+                            }
                             //跳过第一行标题
                             continue;
                         }
@@ -2630,6 +2646,40 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     if (isPublicCell != null && !StringUtils.isEmpty(isPublicCell.getStringCellValue())) {
                         project.setIsPublic("是".equals(isPublicCell.getStringCellValue())?1:0);
                     }
+                    if(timeType.getMainProjectState()!=1){
+                        //处理子项目
+                        if (subNameCell != null) {
+                            //兼容中英文逗号
+                            String[] subNames = subNameCell.getStringCellValue().trim().split(",|\\,");
+                            if (subNames != null) {
+                                for (String s : subNames) {
+                                    if (!StringUtils.isEmpty(s)) {
+                                        SubProject sp = new SubProject();
+                                        sp.setName(s);
+                                        sp.setProjectId(project.getId());
+                                        subProjectMapper.insert(sp);
+                                    }
+                                }
+                            }
+                        }
+                    }else {
+                        //处理主项目
+                        if (mainNameCell != null) {
+                            //兼容中英文逗号
+                            String mainName = mainNameCell.getStringCellValue();
+                            if (mainName != null) {
+                                    if (!StringUtils.isEmpty(mainName)) {
+                                        Optional<ProjectMain> first = projectMainList.stream().filter(pm -> pm.getName().equals(mainName)).findFirst();
+                                        if(first.isPresent()){
+                                            project.setProjectMainId(first.get().getId());
+                                        }else {
+                                            msg.setError("主项目["+mainName+"]不存在");
+                                            return msg;
+                                        }
+                                    }
+                            }
+                        }
+                    }
                     if(projectMapper.insert(project)>0){
                         ProjectAuditor projectAuditor=new ProjectAuditor();
                         projectAuditor.setAuditorId(project.getInchargerId());
@@ -2638,21 +2688,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         projectAuditorMapper.insert(projectAuditor);
                     }
                     importCount++;
-                    //处理子项目
-                    if (subNameCell != null) {
-                        //兼容中英文逗号
-                        String[] subNames = subNameCell.getStringCellValue().trim().split(",|\\,");
-                        if (subNames != null) {
-                            for (String s : subNames) {
-                                if (!StringUtils.isEmpty(s)) {
-                                    SubProject sp = new SubProject();
-                                    sp.setName(s);
-                                    sp.setProjectId(project.getId());
-                                    subProjectMapper.insert(sp);
-                                }
-                            }
-                        }
-                    }
                     //参与人
                     if (participatorCell != null) {
                         String part = participatorCell.getStringCellValue().trim();
@@ -4017,6 +4052,35 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         return new HttpRespMsg();
     }
 
+    @Override
+    public HttpRespMsg getUserWorkingTimeStatic(String startDate, String endDate, Integer pageIndex, Integer pageSize, HttpServletRequest request,String userId,Integer departmentId) {
+        User targetUser = userMapper.selectById(request.getHeader("token"));
+        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看全部人员工时统计");
+        List<SysRichFunction> functionDeptList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看负责部门人员工时统计");
+        List<Integer> deptIds=null;
+        List<Department> userDepartmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", targetUser.getId()).eq("company_id",targetUser.getCompanyId()));
+        //判断查看权限
+        if(functionAllList.size()==0){
+            if(functionDeptList.size()>0){
+                deptIds = userDepartmentList.stream().map(dp -> dp.getDepartmentId()).distinct().collect(Collectors.toList());
+            }else {
+                deptIds=new ArrayList<>();
+                deptIds.add(-1);
+            }
+        }
+        long total;
+        List<Map<String,Object>> resultList=projectMapper.getUserWorkingTimeStatic(startDate,endDate,pageIndex,pageSize,userId,departmentId,deptIds);
+        if(pageIndex!=null&&pageSize!=null){
+            total=projectMapper.findCountWithUserWorkingTime(startDate,endDate,pageIndex,pageSize,userId,departmentId,deptIds);
+        }else{
+            total=projectMapper.findCountWithUserWorkingTime(startDate,endDate,null,null,userId,departmentId,deptIds);
+        }
+        Map<String,Object> map=new HashMap<>();
+        map.put("result",resultList);
+        map.put("total",total);
+        return null;
+    }
+
 
     private List<Department> getSubDepts(Department dp, List<Department> list) {
         List<Department> collect = list.stream().filter(l -> dp.getDepartmentId().equals(l.getSuperiorId())).collect(Collectors.toList());

+ 44 - 34
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskServiceImpl.java

@@ -343,17 +343,19 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
                 if (nameCell == null) {
                     break;
                 }
-                XSSFCell typeCell = row.getCell(1);
-                XSSFCell stagesCell = row.getCell(2);
+                XSSFCell stagesCell = row.getCell(1);
+                XSSFCell typeCell = row.getCell(2);
                 XSSFCell executorCell = row.getCell(3);
                 XSSFCell levelCell = row.getCell(4);
                 XSSFCell endDateCell = row.getCell(5);
                 XSSFCell planHoursCell = row.getCell(6);
                 nameCell.setCellType(CellType.STRING);
-                typeCell.setCellType(CellType.STRING);
                 stagesCell.setCellType(CellType.STRING);
+                typeCell.setCellType(CellType.STRING);
                 endDateCell.setCellType(CellType.NUMERIC);
-                planHoursCell.setCellType(CellType.STRING);
+                if(planHoursCell!=null){
+                    planHoursCell.setCellType(CellType.STRING);
+                }
                 String name = nameCell.getStringCellValue();
                 String type = typeCell.getStringCellValue();
                 //忽略表头
@@ -364,32 +366,34 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
                 task.setCompanyId(companyId);
                 task.setProjectId(projectId);
                 task.setGroupId(groupId);
-                String[] executorNameArray = executorCell.getStringCellValue().split(",");
-                List<String> executorNameList = Arrays.asList(executorNameArray);
-                String executorIdString="";
-                String executorNameString="";
-                String executorColorString="";
-                for (int i=0;i<executorNameList.size();i++) {
-                    String executorName = executorNameList.get(i);
-                    Optional<User> first = allUserList.stream().filter(u -> u.getName().equals(executorName)).findFirst();
-                    if (first.isPresent()) {
-                        User find = first.get();
-                        if(i==executorNameList.size()-1){
-                            executorIdString+=find.getId();
-                            executorNameString+=find.getName();
-                            executorColorString+=find.getColor();
-                        }else{
-                            executorIdString+=find.getId()+",";
-                            executorNameString+=find.getName()+",";
-                            executorColorString+=find.getColor()+",";
+                if(executorCell!=null){
+                    String[] executorNameArray = executorCell.getStringCellValue().split(",");
+                    List<String> executorNameList = Arrays.asList(executorNameArray);
+                    String executorIdString="";
+                    String executorNameString="";
+                    String executorColorString="";
+                    for (int i=0;i<executorNameList.size();i++) {
+                        String executorName = executorNameList.get(i);
+                        Optional<User> first = allUserList.stream().filter(u -> u.getName().equals(executorName)).findFirst();
+                        if (first.isPresent()) {
+                            User find = first.get();
+                            if(i==executorNameList.size()-1){
+                                executorIdString+=find.getId();
+                                executorNameString+=find.getName();
+                                executorColorString+=find.getColor();
+                            }else{
+                                executorIdString+=find.getId()+",";
+                                executorNameString+=find.getName()+",";
+                                executorColorString+=find.getColor()+",";
+                            }
+                        }else {
+                            httpRespMsg.setError("执行人["+executorName+"]不存在");
                         }
-                    }else {
-                        httpRespMsg.setError("执行人["+executorName+"]不存在");
                     }
+                    task.setExecutorId(executorIdString);
+                    task.setExecutorName(executorNameString);
+                    task.setExecutorColor(executorColorString);
                 }
-                task.setExecutorId(executorIdString);
-                task.setExecutorName(executorNameString);
-                task.setExecutorColor(executorColorString);
                 //获取当前导入的任务列表
                 List<Stages> stagesList = stagesMapper.selectList(new QueryWrapper<Stages>().eq("project_id",projectId).eq("group_id",groupId));
                 if(!stagesList.stream().anyMatch(sg->sg.getStagesName().equals(stagesCell.getStringCellValue()))){
@@ -409,13 +413,19 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
                     task.setStagesName(theFirst.get().getStagesName());
                     task.setSeq(seq++);
                 }
-                task.setTaskLevel(taskLevelMap.get(levelCell.getStringCellValue()));
-                Date dateCellValue = endDateCell.getDateCellValue();
-                System.out.println("日期=="+dateCellValue.toString());
-                String formatValue = new SimpleDateFormat("yyyy-MM-dd").format(dateCellValue);
-                LocalDate endDate = LocalDate.parse(formatValue, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
-                task.setEndDate(endDate);
-                task.setPlanHours(Integer.parseInt(planHoursCell.getStringCellValue()));
+                if(levelCell!=null){
+                    task.setTaskLevel(taskLevelMap.get(levelCell.getStringCellValue()));
+                }
+                if(endDateCell.getDateCellValue()!=null){
+                    Date dateCellValue = endDateCell.getDateCellValue();
+                    System.out.println("日期=="+dateCellValue.toString());
+                    String formatValue = new SimpleDateFormat("yyyy-MM-dd").format(dateCellValue);
+                    LocalDate endDate = LocalDate.parse(formatValue, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                    task.setEndDate(endDate);
+                }
+                if(planHoursCell!=null){
+                    task.setPlanHours(Integer.parseInt(planHoursCell.getStringCellValue()));
+                }
                 task.setCreaterId(creator.getId());
                 task.setCreatorColor(creator.getColor());
                 task.setCreaterName(creator.getName());

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

@@ -741,4 +741,8 @@
             limit #{start},#{size}
         </if>) total
     </select>
+
+    <select id="getUserWorkingTimeStatic" resultType="java.util.Map">
+
+    </select>
 </mapper>

二進制
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/项目任务导入模板.xlsx