diff --git a/pms-admin/src/main/java/tech/unissense/pms/web/controller/business/project/ProjectController.java b/pms-admin/src/main/java/tech/unissense/pms/web/controller/business/project/ProjectController.java index 554dd52..d1529a7 100644 --- a/pms-admin/src/main/java/tech/unissense/pms/web/controller/business/project/ProjectController.java +++ b/pms-admin/src/main/java/tech/unissense/pms/web/controller/business/project/ProjectController.java @@ -24,8 +24,7 @@ import java.util.List; */ @RestController @RequestMapping("/business/project") -public class ProjectController extends BaseController -{ +public class ProjectController extends BaseController { @Autowired private IProjectService service; @Autowired @@ -36,8 +35,7 @@ public class ProjectController extends BaseController */ // @PreAuthorize("@ss.hasPermi('system:dept:list')") @GetMapping("/list") - public TableDataInfo list(Project project) - { + public TableDataInfo list(Project project) { startPage(); List projectList = service.permissisonList(project); return getDataTable(projectList); @@ -49,41 +47,40 @@ public class ProjectController extends BaseController // @PreAuthorize("@ss.hasPermi('system:dept:list')") @PostMapping("/add") @Log(title = "项目管理", businessType = BusinessType.INSERT) - public AjaxResult addData(@RequestBody Project project) - { + public AjaxResult addData(@RequestBody Project project) { service.insert(project); return success(project); } + /** * 新增数据 */ // @PreAuthorize("@ss.hasPermi('system:dept:list')") @PostMapping("/updateCheck") - public AjaxResult updateCheck(@RequestBody Project project) - { + public AjaxResult updateCheck(@RequestBody Project project) { return AjaxResult.success(service.updateCheck(project)); } + /** * 新增数据 */ // @PreAuthorize("@ss.hasPermi('system:dept:list')") @PutMapping("/update") @Log(title = "项目管理", businessType = BusinessType.UPDATE) - public AjaxResult updateDate(@RequestBody Project project) - { + public AjaxResult updateDate(@RequestBody Project project) { service.update(project); return success(); } - /** * 获取项目编号 + * * @return */ @GetMapping("/getCode") - public AjaxResult getCode(){ - return AjaxResult.success("",IdUtils.fastUUID()); + public AjaxResult getCode() { + return AjaxResult.success("", IdUtils.fastUUID()); } /** @@ -92,65 +89,64 @@ public class ProjectController extends BaseController // @PreAuthorize("@ss.hasPermi('system:dept:remove')") @Log(title = "项目人员管理", businessType = BusinessType.DELETE) @DeleteMapping("/team/{teamId}") - public AjaxResult teamRemove(@PathVariable Integer teamId) - { + public AjaxResult teamRemove(@PathVariable Integer teamId) { return toAjax(teamService.deleteById(teamId)); } + /** * 更新项目 */ // @PreAuthorize("@ss.hasPermi('system:dept:remove')") @Log(title = "项目人员管理", businessType = BusinessType.UPDATE) @PostMapping("/team") - public AjaxResult personnelChanges(@RequestBody ProjectTeam team) - { + public AjaxResult personnelChanges(@RequestBody ProjectTeam team) { return success(teamService.personnelChanges(team)); } + /** * 删除项目 */ // @PreAuthorize("@ss.hasPermi('system:dept:remove')") @Log(title = "项目管理", businessType = BusinessType.DELETE) @DeleteMapping("/{projectId}") - public AjaxResult remove(@PathVariable Integer projectId) - { + public AjaxResult remove(@PathVariable Integer projectId) { return toAjax(service.deleteById(projectId)); } + /** * 根据项目获取人员信息 */ // @PreAuthorize("@ss.hasPermi('system:dept:remove')") @GetMapping("/{projectId}") - public AjaxResult getTeamInfo(@PathVariable Integer projectId) - { + public AjaxResult getTeamInfo(@PathVariable Integer projectId) { return success(service.getTeamInfo(projectId)); } + /** * 根据项目获取人员信息 */ // @PreAuthorize("@ss.hasPermi('system:dept:remove')") @GetMapping("/info/{projectId}") - public AjaxResult getProject(@PathVariable Integer projectId) - { + public AjaxResult getProject(@PathVariable Integer projectId) { return success(service.queryById(projectId)); } + /** * 项目执行表 */ // @PreAuthorize("@ss.hasPermi('system:dept:remove')") @PostMapping("/executionInfo") - public AjaxResult executionInfo(@RequestBody WorkLogger workLogger) - { + public AjaxResult executionInfo(@RequestBody WorkLogger workLogger) { return success(service.executionInfo(workLogger)); } + /** * 项目人员表 */ // @PreAuthorize("@ss.hasPermi('system:dept:remove')") @PostMapping("/workInfo") - public AjaxResult workInfo(@RequestBody ProjectQueryDto dto) - { + public AjaxResult workInfo(@RequestBody ProjectQueryDto dto) { return success(service.workInfo(dto)); } } diff --git a/pms-admin/src/main/java/tech/unissense/pms/web/controller/business/work/WorkHourController.java b/pms-admin/src/main/java/tech/unissense/pms/web/controller/business/work/WorkHourController.java index 9146062..4b1e058 100644 --- a/pms-admin/src/main/java/tech/unissense/pms/web/controller/business/work/WorkHourController.java +++ b/pms-admin/src/main/java/tech/unissense/pms/web/controller/business/work/WorkHourController.java @@ -41,6 +41,16 @@ public class WorkHourController extends BaseController { * 新增数据 */ // @PreAuthorize("@ss.hasPermi('system:dept:list')") + @DeleteMapping("/{id}") + @Log(title = "工作日志", businessType = BusinessType.INSERT) + public AjaxResult deleteData(@PathVariable Integer id) { + service.deleteById(id); + return success(); + } + /** + * 新增数据 + */ + // @PreAuthorize("@ss.hasPermi('system:dept:list')") @PutMapping("/update") @Log(title = "工作日志", businessType = BusinessType.UPDATE) public AjaxResult updateData(@RequestBody WorkLogger workLogger) { diff --git a/pms-business/src/main/java/tech/unissense/pms/business/project/service/impl/ProjectServiceImpl.java b/pms-business/src/main/java/tech/unissense/pms/business/project/service/impl/ProjectServiceImpl.java index cc1c81f..1b0f3cf 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/project/service/impl/ProjectServiceImpl.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/project/service/impl/ProjectServiceImpl.java @@ -12,7 +12,6 @@ import tech.unissense.pms.business.project.vo.ProjectExecutionVo; import tech.unissense.pms.business.project.vo.ProjectWorkInfoVo; import tech.unissense.pms.business.projectteam.domain.ProjectTeam; import tech.unissense.pms.business.projectteam.service.IProjectTeamService; - import tech.unissense.pms.business.projectteam.vo.TeamStaticsVo; import tech.unissense.pms.business.work.logger.domain.WorkLogger; import tech.unissense.pms.business.work.logger.service.IWorkLoggerService; @@ -57,7 +56,6 @@ public class ProjectServiceImpl implements IProjectService { @Autowired private RedisCache redisCache; - /** * 通过ID查询单条数据 * @@ -98,20 +96,23 @@ public class ProjectServiceImpl implements IProjectService { private void dataPermissions(Project project) { SysUser user = SecurityUtils.getLoginUser().getUser(); StringBuilder sql = new StringBuilder(); - if (user.isAdmin()){ + if (user.isAdmin()) { return; } - if (CollUtil.isEmpty(user.getRoles())){ + if (CollUtil.isEmpty(user.getRoles())) { sql.append(" and 1=2"); - project.getParams().put("dataScope",sql); + project.getParams().put("dataScope", sql); return; } - if (user.getRoles().stream().anyMatch(item-> "企业管理员".equals(item.getRoleName())|| "公司领导".equals(item.getRoleName()))){ + if (user.getRoles().stream() + .anyMatch(item -> "企业管理员".equals(item.getRoleName()) || "公司领导".equals(item.getRoleName()))) { - }else if (user.getRoles().stream().anyMatch(item -> "项目经理".equals(item.getRoleName()))){ - sql.append("and (t1.project_id in (select project_id from pms_project_team where user_id={} ) or t1.project_leader={} or t1.create_by={})"); - project.getParams().put("dataScope", StringUtils.format(sql.toString(), user.getUserId(), user.getUserId(), user.getUserId())); - }else{ + } else if (user.getRoles().stream().anyMatch(item -> "项目经理".equals(item.getRoleName()))) { + sql.append( + "and (t1.project_id in (select project_id from pms_project_team where user_id={} ) or t1.project_leader={} or t1.create_by={})"); + project.getParams().put("dataScope", + StringUtils.format(sql.toString(), user.getUserId(), user.getUserId(), user.getUserId())); + } else { sql.append("and (t1.project_id in (select project_id from pms_project_team where user_id={} ))"); project.getParams().put("dataScope", StringUtils.format(sql.toString(), user.getUserId())); } @@ -126,6 +127,7 @@ public class ProjectServiceImpl implements IProjectService { } return ""; } + /** * 新增数据 * @@ -138,7 +140,7 @@ public class ProjectServiceImpl implements IProjectService { if (StringUtils.isNotEmpty(errorMsg)) { throw new ServiceException(errorMsg); } - if (StringUtils.isEmpty(project.getState())){ + if (StringUtils.isEmpty(project.getState())) { project.setState("0"); } if (StringUtils.isEmpty(project.getProjectCode())) { @@ -153,9 +155,11 @@ public class ProjectServiceImpl implements IProjectService { String existProjectCode = projectMapper.selectProjectCode(DateUtils.toDate(currentDate)); int initValue = 1; try { - initValue = StringUtils.isNotEmpty(existProjectCode) ? Integer.parseInt(existProjectCode.substring(existProjectCode.length() - 4)) + 1 : 1; + initValue = StringUtils.isNotEmpty(existProjectCode) + ? Integer.parseInt(existProjectCode.substring(existProjectCode.length() - 4)) + 1 + : 1; } catch (NumberFormatException e) { - log.error("项目编码格式化错误,项目编码为:{}",existProjectCode); + log.error("项目编码格式化错误,项目编码为:{}", existProjectCode); } return new AtomicInteger(initValue); } else { @@ -172,7 +176,8 @@ public class ProjectServiceImpl implements IProjectService { } // 新增项目 this.projectMapper.insert(project); - // project.getProjectTeamList().forEach(item -> item.setProjectId(project.getProjectId())); + // project.getProjectTeamList().forEach(item -> + // item.setProjectId(project.getProjectId())); // // 新增项目人员 // teamService.insertBatch(project.getProjectTeamList()); return project; @@ -226,7 +231,7 @@ public class ProjectServiceImpl implements IProjectService { return projectTeamList.stream().map(item -> { String userIdStr = String.valueOf(item.getUserId()); BigDecimal workTime = workHourVo.getOrDefault(userIdStr, BigDecimal.ZERO); - + TeamStaticsVo teamStaticsVo = new TeamStaticsVo(); teamStaticsVo.setTeamId(item.getTeamId()); teamStaticsVo.setUserName(item.getUserName()); @@ -259,7 +264,8 @@ public class ProjectServiceImpl implements IProjectService { Map workTimeMap = workLoggerService.list(workLogger).stream() .filter(item -> teamSet.contains(item.getProjectId() + "_" + item.getUserId())) .collect(Collectors.toMap( - item -> item.getProjectId() + "_" + DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, item.getLoggerDate()), + item -> item.getProjectId() + "_" + + DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, item.getLoggerDate()), item -> new BigDecimal(item.getWorkTime()), BigDecimal::add)); @@ -270,8 +276,10 @@ public class ProjectServiceImpl implements IProjectService { List tempList = Stream.iterate(startDate, date -> date.plusDays(1)) .limit(ChronoUnit.DAYS.between(startDate, endDate) + 1) .map(localDate -> { - if (localDate.isAfter(project.getEndDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()) || - localDate.isBefore(project.getStartDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate())) { + if (localDate.isAfter( + project.getEndDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()) || + localDate.isBefore(project.getStartDate().toInstant().atZone(ZoneId.systemDefault()) + .toLocalDate())) { return BigDecimal.ZERO; } return workTimeMap.getOrDefault(project.getProjectId() + "_" + localDate, BigDecimal.ZERO); @@ -297,20 +305,21 @@ public class ProjectServiceImpl implements IProjectService { List workLoggerList = workLoggerService.listUser(workLogger); ProjectTeam projectTeam = new ProjectTeam(); projectTeam.setProjectId(projectQueryDto.getProjectId()); - Set projectTeamSet = teamService.list(projectTeam).stream().map(ProjectTeam::getUserId).collect(Collectors.toSet()); + Set projectTeamSet = teamService.list(projectTeam).stream().map(ProjectTeam::getUserId) + .collect(Collectors.toSet()); // 使用流按日期分组,并对每个日期的工人按用户ID去重,保留最后一次记录 - Map> workersByDateMap = workLoggerList.stream().filter(item->projectTeamSet.contains(item.getUserId())) + Map> workersByDateMap = workLoggerList.stream() + .filter(item -> projectTeamSet.contains(item.getUserId())) .collect(Collectors.groupingBy( logger -> DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, logger.getLoggerDate()), Collectors.collectingAndThen( Collectors.toMap( - WorkLogger::getUserId, - logger -> logger, - (existing, replacement) -> existing.getCreateTime().after(replacement.getCreateTime()) ? existing : replacement - ), - map -> new ArrayList<>(map.values()) - ) - )); + WorkLogger::getUserId, + logger -> logger, + (existing, + replacement) -> existing.getCreateTime() + .after(replacement.getCreateTime()) ? existing : replacement), + map -> new ArrayList<>(map.values())))); LocalDate startDate = projectQueryDto.getStartDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); LocalDate endDate = projectQueryDto.getEndDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); @@ -332,7 +341,8 @@ public class ProjectServiceImpl implements IProjectService { WorkLogger workLogger = new WorkLogger(); workLogger.setProjectId(project.getProjectId()); List list = workLoggerService.list(workLogger); - if (list.stream().anyMatch(item -> item.getLoggerDate().before(project.getStartDate()) || item.getLoggerDate().after(project.getEndDate()))) { + if (list.stream().anyMatch(item -> item.getLoggerDate().before(project.getStartDate()) + || item.getLoggerDate().after(project.getEndDate()))) { return false; } return true;