From 72ff161ca62826ee25c40f8f7c2b5009af482a8c Mon Sep 17 00:00:00 2001 From: zhuyy Date: Fri, 16 Jun 2023 15:04:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8C=87=E6=A0=87=EF=BC=8C?= =?UTF-8?q?=E7=99=BB=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../staff/controller/AuditLogControoller.java | 31 ++ .../controller/CompanyNameController.java | 11 +- .../controller/OrganizationController.java | 10 + .../controller/RecruitmentController.java | 17 + .../com/ydool/staff/dto/CompanyNameDto.java | 14 + .../java/com/ydool/staff/dto/PlacesDto.java | 11 + .../com/ydool/staff/entity/CompanyName.java | 3 + .../com/ydool/staff/entity/Organization.java | 3 + .../java/com/ydool/staff/entity/Places.java | 23 + .../mapper/PersonnelIndicatorsMapper.java | 7 +- .../com/ydool/staff/mapper/PlacesMapper.java | 15 + .../ydool/staff/mapper/RecruitmentMapper.java | 6 +- .../com/ydool/staff/request/AuditRequest.java | 2 +- .../staff/request/OrganizationRequest.java | 3 + .../request/PersonnelIndicatorsRequest.java | 7 + .../staff/request/RecruitmentRequest.java | 7 + .../ydool/staff/service/IAuditLogService.java | 3 + .../ydool/staff/service/IAuditService.java | 5 + .../staff/service/ICompanyNameService.java | 3 + .../staff/service/IOrganizationService.java | 1 + .../service/impl/AuditLogServiceImpl.java | 22 +- .../staff/service/impl/AuditServiceImpl.java | 403 +++++++++++------- .../service/impl/CompanyNameServiceImpl.java | 26 +- .../impl/DirectorsSupervisorsServiceImpl.java | 33 +- .../service/impl/OrganizationServiceImpl.java | 47 +- .../impl/PersonnelIndicatorsServiceImpl.java | 29 +- .../service/impl/RecruitmentServiceImpl.java | 49 ++- 27 files changed, 570 insertions(+), 221 deletions(-) create mode 100644 src/main/java/com/ydool/staff/controller/AuditLogControoller.java create mode 100644 src/main/java/com/ydool/staff/dto/CompanyNameDto.java create mode 100644 src/main/java/com/ydool/staff/dto/PlacesDto.java create mode 100644 src/main/java/com/ydool/staff/entity/Places.java create mode 100644 src/main/java/com/ydool/staff/mapper/PlacesMapper.java diff --git a/src/main/java/com/ydool/staff/controller/AuditLogControoller.java b/src/main/java/com/ydool/staff/controller/AuditLogControoller.java new file mode 100644 index 0000000..7a7d2b0 --- /dev/null +++ b/src/main/java/com/ydool/staff/controller/AuditLogControoller.java @@ -0,0 +1,31 @@ +package com.ydool.staff.controller; + + +import com.github.xiaoymin.knife4j.annotations.ApiSupport; +import com.ydool.common.base.BaseController; +import com.ydool.common.constant.UrlConstant; +import com.ydool.common.data.dto.AjaxResult; +import com.ydool.staff.dto.AuditLogDto; +import com.ydool.staff.service.impl.AuditLogServiceImpl; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping(UrlConstant.ALTERATION) +@Api(tags = "人事日志", value = "人事日志") +@ApiSupport(order = 12) +public class AuditLogControoller extends BaseController { + + @Autowired + AuditLogServiceImpl auditLogService; + + @GetMapping("/log") + @ApiOperation(value = "人事日志", response = AuditLogDto.class) + public AjaxResult audtiLog() { + return auditLogService.auditLog(getPage()); + } +} diff --git a/src/main/java/com/ydool/staff/controller/CompanyNameController.java b/src/main/java/com/ydool/staff/controller/CompanyNameController.java index 62035bc..4f8c62d 100644 --- a/src/main/java/com/ydool/staff/controller/CompanyNameController.java +++ b/src/main/java/com/ydool/staff/controller/CompanyNameController.java @@ -4,14 +4,13 @@ import com.github.xiaoymin.knife4j.annotations.ApiSupport; import com.ydool.common.base.BaseController; import com.ydool.common.constant.UrlConstant; import com.ydool.common.data.dto.AjaxResult; +import com.ydool.staff.dto.CompanyNameDto; import com.ydool.staff.service.ICompanyNameService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController @@ -36,4 +35,10 @@ public class CompanyNameController extends BaseController { return companyNameService.companyName(id); } + + @PutMapping("/update") + @ApiOperation(value = "修改总指标人数") + public AjaxResult update(@RequestBody CompanyNameDto companyNameDto) { + return companyNameService.update(companyNameDto); + } } diff --git a/src/main/java/com/ydool/staff/controller/OrganizationController.java b/src/main/java/com/ydool/staff/controller/OrganizationController.java index f7a362d..431ceaf 100644 --- a/src/main/java/com/ydool/staff/controller/OrganizationController.java +++ b/src/main/java/com/ydool/staff/controller/OrganizationController.java @@ -13,6 +13,7 @@ import com.ydool.staff.entity.Organization; import com.ydool.staff.request.OrganizationSearch; import com.ydool.staff.service.*; import com.ydool.system.request.IdsRequest; +import com.ydool.system.service.impl.ConfigServiceImpl; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -28,6 +29,8 @@ public class OrganizationController extends BaseController { @Autowired IOrganizationService organizationService; + @Autowired + ConfigServiceImpl configService; @GetMapping("/selectOrganizationPersonnelIndicatorsList") @ApiOperation(value = "人员招聘登记人员指标申报列表") @@ -44,6 +47,12 @@ public class OrganizationController extends BaseController { return organizationService.deleteOrganization(id); } + @GetMapping(value = "/approval") + @ApiOperation(value = "招聘单号") + public AjaxResult approval() { + return organizationService.approval(); + } + @GetMapping("/submitRecruitment") @ApiOperation(value = "人员招聘登记送审") @ApiImplicitParams({@ApiImplicitParam(value = "登记id", name = "id")}) @@ -57,4 +66,5 @@ public class OrganizationController extends BaseController { public AjaxResult submitPersonnelIndicators(String id) { return organizationService.submitRecruitment(id, ArgsConst.PERSONNEL_INDICATORS); } + } diff --git a/src/main/java/com/ydool/staff/controller/RecruitmentController.java b/src/main/java/com/ydool/staff/controller/RecruitmentController.java index 7db0f52..b2dc671 100644 --- a/src/main/java/com/ydool/staff/controller/RecruitmentController.java +++ b/src/main/java/com/ydool/staff/controller/RecruitmentController.java @@ -1,5 +1,6 @@ package com.ydool.staff.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiSupport; import com.github.xiaoymin.knife4j.annotations.DynamicParameter; @@ -8,7 +9,9 @@ import com.ydool.common.base.BaseController; import com.ydool.common.constant.UrlConstant; import com.ydool.common.data.dto.AjaxResult; import com.ydool.staff.dto.RecruitmentDto; +import com.ydool.staff.entity.Audit; import com.ydool.staff.request.RecruitmentRequest; +import com.ydool.staff.service.IAuditService; import com.ydool.staff.service.IRecruitmentService; import com.ydool.system.request.IdsRequest; import io.swagger.annotations.Api; @@ -26,6 +29,8 @@ public class RecruitmentController extends BaseController { @Autowired IRecruitmentService recruitmentService; + @Autowired + IAuditService auditService; @GetMapping("/selectCompanyNameById") @ApiOperation(value = "人员招聘登记详情") @@ -48,4 +53,16 @@ public class RecruitmentController extends BaseController { return recruitmentService.deleteRecruitment(id); } + + // @GetMapping(value = "/submit") + // @ApiOperation(value = "已提交审批") + // public AjaxResult submit() { + // return auditService.submitAudit(getPage()); + // } + + @GetMapping(value = "/waiting") + @ApiOperation(value = "待我审批") + public AjaxResult waiting() { + return auditService.waitingAudit(getPage()); + } } diff --git a/src/main/java/com/ydool/staff/dto/CompanyNameDto.java b/src/main/java/com/ydool/staff/dto/CompanyNameDto.java new file mode 100644 index 0000000..63c9360 --- /dev/null +++ b/src/main/java/com/ydool/staff/dto/CompanyNameDto.java @@ -0,0 +1,14 @@ +package com.ydool.staff.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CompanyNameDto { + + @ApiModelProperty(value = "id") + private String id; + + @ApiModelProperty(value = "总指标人数") + private Long checkNumber; +} diff --git a/src/main/java/com/ydool/staff/dto/PlacesDto.java b/src/main/java/com/ydool/staff/dto/PlacesDto.java new file mode 100644 index 0000000..42e953b --- /dev/null +++ b/src/main/java/com/ydool/staff/dto/PlacesDto.java @@ -0,0 +1,11 @@ +package com.ydool.staff.dto; + +import lombok.Data; + +@Data +public class PlacesDto { + + private String id; + + private String odd; +} diff --git a/src/main/java/com/ydool/staff/entity/CompanyName.java b/src/main/java/com/ydool/staff/entity/CompanyName.java index 067f24c..72fcf33 100644 --- a/src/main/java/com/ydool/staff/entity/CompanyName.java +++ b/src/main/java/com/ydool/staff/entity/CompanyName.java @@ -47,6 +47,9 @@ public class CompanyName extends BaseEntity { @ApiModelProperty(value = "本次核准后总指标人数") private Long thisApprovalNumber; + @ApiModelProperty(value = "核定用工指标人数") + private Long recruit; + @ApiModelProperty(value = "类型 登记organization 申报personnel_indicators") private String type; diff --git a/src/main/java/com/ydool/staff/entity/Organization.java b/src/main/java/com/ydool/staff/entity/Organization.java index 587ec80..f17d75b 100644 --- a/src/main/java/com/ydool/staff/entity/Organization.java +++ b/src/main/java/com/ydool/staff/entity/Organization.java @@ -42,6 +42,9 @@ public class Organization extends BaseEntity{ @ApiModelProperty(value = "核定用工人数") private Long checkNumber; + @ApiModelProperty(value = "剩余指标人数") + private Long addNumber; + @ApiModelProperty(value = "剩余指标人数") private Long residualNumber; diff --git a/src/main/java/com/ydool/staff/entity/Places.java b/src/main/java/com/ydool/staff/entity/Places.java new file mode 100644 index 0000000..27b32ff --- /dev/null +++ b/src/main/java/com/ydool/staff/entity/Places.java @@ -0,0 +1,23 @@ +package com.ydool.staff.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.ydool.common.base.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +@TableName("t_lc_places") +public class Places extends BaseEntity { + + @ApiModelProperty(value = "登记id") + private String organizationId; + + @ApiModelProperty(value = "单号") + + private String odd; + @ApiModelProperty(value = "状态") + + private Boolean status; +} diff --git a/src/main/java/com/ydool/staff/mapper/PersonnelIndicatorsMapper.java b/src/main/java/com/ydool/staff/mapper/PersonnelIndicatorsMapper.java index c8e238f..70b91c8 100644 --- a/src/main/java/com/ydool/staff/mapper/PersonnelIndicatorsMapper.java +++ b/src/main/java/com/ydool/staff/mapper/PersonnelIndicatorsMapper.java @@ -1,8 +1,11 @@ package com.ydool.staff.mapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; import com.ydool.staff.entity.PersonnelIndicators; import com.github.yulichang.base.MPJBaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; /** @@ -29,6 +32,6 @@ public interface PersonnelIndicatorsMapper extends MPJBaseMapper wrapper); } diff --git a/src/main/java/com/ydool/staff/mapper/PlacesMapper.java b/src/main/java/com/ydool/staff/mapper/PlacesMapper.java new file mode 100644 index 0000000..b91d844 --- /dev/null +++ b/src/main/java/com/ydool/staff/mapper/PlacesMapper.java @@ -0,0 +1,15 @@ +package com.ydool.staff.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.github.yulichang.base.MPJBaseMapper; +import com.ydool.staff.entity.Places; +import com.ydool.staff.entity.Recruitment; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PlacesMapper extends MPJBaseMapper { + +} diff --git a/src/main/java/com/ydool/staff/mapper/RecruitmentMapper.java b/src/main/java/com/ydool/staff/mapper/RecruitmentMapper.java index a9a5849..6e17612 100644 --- a/src/main/java/com/ydool/staff/mapper/RecruitmentMapper.java +++ b/src/main/java/com/ydool/staff/mapper/RecruitmentMapper.java @@ -1,5 +1,7 @@ package com.ydool.staff.mapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; import com.ydool.staff.entity.Recruitment; import com.github.yulichang.base.MPJBaseMapper; import com.ydool.staff.request.CompanyNameRequest; @@ -27,6 +29,6 @@ public interface RecruitmentMapper extends MPJBaseMapper { List recruitmentList(); - @Select("SELECT SUM(places) places FROM `t_lc_recruitment` WHERE company_id = #{companyId}") - Long recruitmentPlaces(String companyId); + @Select("SELECT SUM(places) places FROM `t_lc_recruitment` ${ew.customSqlSegment}") + Long recruitmentPlaces(@Param(Constants.WRAPPER) QueryWrapper wrapper); } diff --git a/src/main/java/com/ydool/staff/request/AuditRequest.java b/src/main/java/com/ydool/staff/request/AuditRequest.java index 5ae5676..3843e96 100644 --- a/src/main/java/com/ydool/staff/request/AuditRequest.java +++ b/src/main/java/com/ydool/staff/request/AuditRequest.java @@ -26,7 +26,7 @@ public class AuditRequest { @ApiModelProperty(value = "审批意见") private String auditOpinion; - @ApiModelProperty(value = "人员类型:personnel:人员 change:变更 exchange:选调") + @ApiModelProperty(value = "人员类型:personnel:人员 change:变更 exchange:选调 personnel_indicators:申报 organization:登记") private String type; diff --git a/src/main/java/com/ydool/staff/request/OrganizationRequest.java b/src/main/java/com/ydool/staff/request/OrganizationRequest.java index 959f5e0..1baf828 100644 --- a/src/main/java/com/ydool/staff/request/OrganizationRequest.java +++ b/src/main/java/com/ydool/staff/request/OrganizationRequest.java @@ -21,6 +21,9 @@ public class OrganizationRequest implements Serializable { @ApiModelProperty(value = "核定用工人数") private Long checkNumber; + @ApiModelProperty(value = "核定用工人数") + private Long addNumber; + @ApiModelProperty(value = "在职人数") private Long activeStaff; diff --git a/src/main/java/com/ydool/staff/request/PersonnelIndicatorsRequest.java b/src/main/java/com/ydool/staff/request/PersonnelIndicatorsRequest.java index 2234cd0..86da2b9 100644 --- a/src/main/java/com/ydool/staff/request/PersonnelIndicatorsRequest.java +++ b/src/main/java/com/ydool/staff/request/PersonnelIndicatorsRequest.java @@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; import java.io.Serializable; import java.util.List; @@ -18,10 +20,15 @@ import java.util.List; @Data public class PersonnelIndicatorsRequest implements Serializable { + @ApiModelProperty(value = "保存:preserve/送审:approval") + @NotBlank(message = "类型不能为空") + private String type; + @ApiModelProperty(value = "人员指标") @Valid private OrganizationRequest organizationRequest; @ApiModelProperty(value = "人员指标申报") + @NotEmpty(message = "人员指标申报不能为空") private List personnelIndicators; } diff --git a/src/main/java/com/ydool/staff/request/RecruitmentRequest.java b/src/main/java/com/ydool/staff/request/RecruitmentRequest.java index 9dbd850..89b2032 100644 --- a/src/main/java/com/ydool/staff/request/RecruitmentRequest.java +++ b/src/main/java/com/ydool/staff/request/RecruitmentRequest.java @@ -5,17 +5,24 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; import java.io.Serializable; import java.util.List; @Data public class RecruitmentRequest implements Serializable { + @ApiModelProperty(value = "保存:preserve/送审:approval") + @NotBlank(message = "类型不能为空") + private String type; + @ApiModelProperty(value = "招聘登记") @Valid private OrganizationRequest organizationRequest; @ApiModelProperty(value = "人员招聘登记") + @NotEmpty(message = "人员登记不能为空") private List recruitments; } diff --git a/src/main/java/com/ydool/staff/service/IAuditLogService.java b/src/main/java/com/ydool/staff/service/IAuditLogService.java index 67f101a..554447a 100644 --- a/src/main/java/com/ydool/staff/service/IAuditLogService.java +++ b/src/main/java/com/ydool/staff/service/IAuditLogService.java @@ -1,5 +1,6 @@ package com.ydool.staff.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ydool.common.data.dto.AjaxResult; /** @@ -13,5 +14,7 @@ import com.ydool.common.data.dto.AjaxResult; public interface IAuditLogService { AjaxResult auditLog(String id, String personnelType); + + AjaxResult auditLog(Page page); } diff --git a/src/main/java/com/ydool/staff/service/IAuditService.java b/src/main/java/com/ydool/staff/service/IAuditService.java index 64ce2ae..06cfc98 100644 --- a/src/main/java/com/ydool/staff/service/IAuditService.java +++ b/src/main/java/com/ydool/staff/service/IAuditService.java @@ -2,6 +2,7 @@ package com.ydool.staff.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ydool.common.data.dto.AjaxResult; +import com.ydool.staff.entity.Audit; import com.ydool.staff.request.AuditRequest; /** @@ -25,5 +26,9 @@ public interface IAuditService { AjaxResult submitRecruitmentAudit(AuditRequest auditRequest); AjaxResult submitPersonnelIndicatorsAudit(AuditRequest auditRequest); + + AjaxResult submitAudit(Page page); + + AjaxResult waitingAudit(Page page); } diff --git a/src/main/java/com/ydool/staff/service/ICompanyNameService.java b/src/main/java/com/ydool/staff/service/ICompanyNameService.java index fcf362f..831a4a5 100644 --- a/src/main/java/com/ydool/staff/service/ICompanyNameService.java +++ b/src/main/java/com/ydool/staff/service/ICompanyNameService.java @@ -1,6 +1,7 @@ package com.ydool.staff.service; import com.ydool.common.data.dto.AjaxResult; +import com.ydool.staff.dto.CompanyNameDto; import com.ydool.staff.dto.EnterpriseIndicatorsExportDto; import com.ydool.staff.dto.PersonnelReportExportDto; import com.ydool.staff.dto.PersonnelStatementDto; @@ -40,5 +41,7 @@ public interface ICompanyNameService { AjaxResult getEntityParam(); void export(ExcelPersonnelStatementRequest personnelParam, HttpServletResponse response); + + AjaxResult update(CompanyNameDto companyNameDto); } diff --git a/src/main/java/com/ydool/staff/service/IOrganizationService.java b/src/main/java/com/ydool/staff/service/IOrganizationService.java index d16b0e5..fe9731c 100644 --- a/src/main/java/com/ydool/staff/service/IOrganizationService.java +++ b/src/main/java/com/ydool/staff/service/IOrganizationService.java @@ -23,5 +23,6 @@ public interface IOrganizationService { AjaxResult submitRecruitment(String id, String type); + AjaxResult approval(); } diff --git a/src/main/java/com/ydool/staff/service/impl/AuditLogServiceImpl.java b/src/main/java/com/ydool/staff/service/impl/AuditLogServiceImpl.java index 49c2598..38abb95 100644 --- a/src/main/java/com/ydool/staff/service/impl/AuditLogServiceImpl.java +++ b/src/main/java/com/ydool/staff/service/impl/AuditLogServiceImpl.java @@ -1,8 +1,12 @@ package com.ydool.staff.service.impl; +import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ydool.common.base.BaseService; import com.ydool.common.constant.ArgsConst; import com.ydool.common.data.dto.AjaxResult; @@ -13,10 +17,12 @@ import com.ydool.staff.mapper.AuditLogMapper; import com.ydool.staff.service.IAuditLogService; import com.ydool.system.entity.User; import com.ydool.system.mapper.UserMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; +import java.util.stream.Collectors; /** *

@@ -34,7 +40,7 @@ public class AuditLogServiceImpl extends BaseService i @Override public AjaxResult auditLog(String id, String personnelType) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper() - .eq(AuditLog::getType,personnelType) + .eq(AuditLog::getType, personnelType) .eq(AuditLog::getPersonnelId, id).orderByDesc(AuditLog::getCreatedAt); List list = list(wrapper); List auditLogDtos = BeanUtil.copyToList(list, AuditLogDto.class); @@ -44,5 +50,19 @@ public class AuditLogServiceImpl extends BaseService i } return AjaxResult.ok().data(auditLogDtos); } + + @Override + public AjaxResult auditLog(Page page) { + Page selectPage = page(page, Wrappers.lambdaQuery(AuditLog.class).orderByDesc(AuditLog::getCreatedAt)); + List records = selectPage.getRecords(); + for (AuditLog record : records) { + User userName = userMapper.selectById(record.getApprover()); + if (ObjectUtil.isNotNull(userName)) { + record.setApprover(userName.getUserName()); + } + } + selectPage.setRecords(records); + return AjaxResult.ok().data(selectPage); + } } diff --git a/src/main/java/com/ydool/staff/service/impl/AuditServiceImpl.java b/src/main/java/com/ydool/staff/service/impl/AuditServiceImpl.java index 31117e0..a70ec7e 100644 --- a/src/main/java/com/ydool/staff/service/impl/AuditServiceImpl.java +++ b/src/main/java/com/ydool/staff/service/impl/AuditServiceImpl.java @@ -1,14 +1,20 @@ package com.ydool.staff.service.impl; import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.query.MPJQueryWrapper; import com.ydool.common.base.BaseService; import com.ydool.common.cache.ConfigCache; import com.ydool.common.constant.ArgsConst; import com.ydool.common.data.dto.AjaxResult; +import com.ydool.oa.workFlow.data.entity.WorkFlowNotice; +import com.ydool.oa.workFlow.service.WorkFlowNoticeService; import com.ydool.staff.entity.*; import com.ydool.staff.mapper.*; import com.ydool.staff.request.AuditRequest; @@ -26,6 +32,8 @@ import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.util.Date; import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; /** *

@@ -38,6 +46,7 @@ import java.util.List; @Service public class AuditServiceImpl extends BaseService implements IAuditService { + private static final AtomicInteger counter = new AtomicInteger(0); @Resource private ConfigMapper configMapper; @Resource @@ -65,6 +74,16 @@ public class AuditServiceImpl extends BaseService implements CompanyNameMapper companyNameMapper; @Autowired RecruitmentMapper recruitmentMapper; + @Autowired + PlacesMapper placesMapper; + + @Autowired + WorkFlowNoticeService workFlowNoticeService; + + public static String getNextId() { + int value = counter.incrementAndGet(); + return String.format("%04d", value); + } @Override public AjaxResult getAuditList(Page page) { @@ -79,79 +98,79 @@ public class AuditServiceImpl extends BaseService implements User loginUser = userMapper.selectById(loginId); Audit one = getOne(new LambdaQueryWrapper() .eq(Audit::getPersonnelId, auditRequest.getPersonnelId()) - .eq(Audit::getPerType,auditRequest.getType()) + .eq(Audit::getPerType, auditRequest.getType()) .eq(Audit::getAuditOrder, ArgsConst.WAITING) .eq(Audit::getApprover, loginId)); - if(ObjectUtil.isEmpty(one)){ + if (ObjectUtil.isEmpty(one)) { return AjaxResult.fail().msg("该用户不能审批!"); } - if(ArgsConst.PASS.equals(one.getAuditState())){ + if (ArgsConst.PASS.equals(one.getAuditState())) { return AjaxResult.fail().msg("用户已审批,请勿重复操作!"); } one.setOpinion(auditRequest.getAuditOpinion()); one.setApproverTime(new Date()); - //同意 - if ("2".equals(auditRequest.getStatus())){ + // 同意 + if ("2".equals(auditRequest.getStatus())) { Config director = configMapper.selectOne(new LambdaQueryWrapper().eq(Config::getParamKey, ConfigCache.SYS_USER_PERSONNEL_DIRECTOR)); - if (loginUser.getLoginName().equals(director.getParamValue())){ + if (loginUser.getLoginName().equals(director.getParamValue())) { one.setAuditOrder(ArgsConst.FIRST); one.setAuditState(ArgsConst.PASS); boolean update = updateById(one); - if (update){ + if (update) { User user = userMapper.selectOne(new LambdaQueryWrapper() .eq(User::getLoginName, configMapper.selectOne(new LambdaQueryWrapper() .eq(Config::getParamKey, ConfigCache.SYS_USER_LEADERSHIP)).getParamValue())); - Audit auditOne = getOne(new LambdaQueryWrapper().eq(Audit::getApprover, user.getId()).eq(Audit::getPerType,auditRequest.getType()).eq(Audit::getPersonnelId, auditRequest.getPersonnelId())); + Audit auditOne = getOne(new LambdaQueryWrapper().eq(Audit::getApprover, user.getId()).eq(Audit::getPerType, auditRequest.getType()).eq(Audit::getPersonnelId, auditRequest.getPersonnelId())); auditOne.setAuditOrder(ArgsConst.WAITING); updateById(auditOne); - if (ArgsConst.PERSONNEL.equals(auditRequest.getType())||ArgsConst.CHANGE.equals(auditRequest.getType())){ + if (ArgsConst.PERSONNEL.equals(auditRequest.getType()) || ArgsConst.CHANGE.equals(auditRequest.getType())) { Personnel personnel = personnelMapper.selectById(auditOne.getPersonnelId()); - if (ArgsConst.PERSONNEL.equals(auditRequest.getType())){ + if (ArgsConst.PERSONNEL.equals(auditRequest.getType())) { personnel.setAuditState(2); personnel.setFirstTrialRemark(auditRequest.getAuditOpinion()); - }else if (ArgsConst.CHANGE.equals(auditRequest.getType())){ + } else if (ArgsConst.CHANGE.equals(auditRequest.getType())) { personnel.setChangeAuditState(2); personnel.setFirstTrialRemark(auditRequest.getAuditOpinion()); } personnelMapper.updateById(personnel); - }else if(ArgsConst.EXCHANGE.equals(auditRequest.getType())){ + } else if (ArgsConst.EXCHANGE.equals(auditRequest.getType())) { Exchange exchange = exchangeMapper.selectById(auditOne.getPersonnelId()); exchange.setFirstTrialRemark(auditRequest.getAuditOpinion()); exchange.setAuditState(2); exchangeMapper.updateById(exchange); } - saveAuditLog(auditRequest.getPersonnelId(),loginId,auditRequest.getType(),"一般初审通过",auditRequest.getAuditOpinion()); + saveAuditLog(auditRequest.getPersonnelId(), loginId, auditRequest.getType(), "一般初审通过", auditRequest.getAuditOpinion()); } - return update ? AjaxResult.ok().msg("审批成功!"):AjaxResult.fail().msg("审批成功!"); + return update ? AjaxResult.ok().msg("审批成功!") : AjaxResult.fail().msg("审批成功!"); } Config leadership = configMapper.selectOne(new LambdaQueryWrapper().eq(Config::getParamKey, ConfigCache.SYS_USER_LEADERSHIP)); - if (leadership.getParamValue().equals(loginUser.getLoginName())){ + if (leadership.getParamValue().equals(loginUser.getLoginName())) { one.setAuditOrder(ArgsConst.LAST); one.setAuditState(ArgsConst.PASS); boolean update = updateById(one); - if (update){ - saveAuditLog(auditRequest.getPersonnelId(),loginId,auditRequest.getType(),"一般终审通过",auditRequest.getAuditOpinion()); + if (update) { + saveAuditLog(auditRequest.getPersonnelId(), loginId, auditRequest.getType(), "一般终审通过", auditRequest.getAuditOpinion()); - if (ArgsConst.PERSONNEL.equals(auditRequest.getType())||ArgsConst.CHANGE.equals(auditRequest.getType())){ + if (ArgsConst.PERSONNEL.equals(auditRequest.getType()) || ArgsConst.CHANGE.equals(auditRequest.getType())) { Personnel personnel = personnelMapper.selectById(auditRequest.getPersonnelId()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper().eq(PersonnelMiddle::getBeforeId, personnel.getId()).eq(PersonnelMiddle::getState, "1"); - if (ArgsConst.PERSONNEL.equals(auditRequest.getType())){ - wrapper.eq(PersonnelMiddle::getType,ArgsConst.PERSONNEL); - }else if (ArgsConst.CHANGE.equals(auditRequest.getType())){ - wrapper.eq(PersonnelMiddle::getType,ArgsConst.CHANGE); + if (ArgsConst.PERSONNEL.equals(auditRequest.getType())) { + wrapper.eq(PersonnelMiddle::getType, ArgsConst.PERSONNEL); + } else if (ArgsConst.CHANGE.equals(auditRequest.getType())) { + wrapper.eq(PersonnelMiddle::getType, ArgsConst.CHANGE); } PersonnelMiddle middle = personnelMiddleMapper.selectOne(wrapper); Personnel personnelOne = personnelMapper.selectById(middle.getAfterId()); String id = personnelOne.getId(); personnelOne.setState("2"); - if (ArgsConst.PERSONNEL.equals(auditRequest.getType())){ + if (ArgsConst.PERSONNEL.equals(auditRequest.getType())) { personnelOne.setFinalTrialRemark(auditRequest.getAuditOpinion()); personnelOne.setWorkState("在职"); personnelOne.setAlterationSign("2"); personnelOne.setAuditState(3); } - if (ArgsConst.CHANGE.equals(auditRequest.getType())){ + if (ArgsConst.CHANGE.equals(auditRequest.getType())) { personnelOne.setFinalTrialRemark(auditRequest.getAuditOpinion()); personnelOne.setChangeAlterationSign("2"); personnelOne.setChangeAuditState(3); @@ -163,8 +182,8 @@ public class AuditServiceImpl extends BaseService implements personnelMapper.updateById(personnelOne); personnelMapper.updateById(personnel); personnelMiddleMapper.updateById(middle); - }else if (ArgsConst.EXCHANGE.equals(auditRequest.getType())){ - Exchange exchange = exchangeMapper.selectOne(new LambdaQueryWrapper().eq(Exchange::getState,"1").eq(Exchange::getId,auditRequest.getPersonnelId())); + } else if (ArgsConst.EXCHANGE.equals(auditRequest.getType())) { + Exchange exchange = exchangeMapper.selectOne(new LambdaQueryWrapper().eq(Exchange::getState, "1").eq(Exchange::getId, auditRequest.getPersonnelId())); Personnel personnel = personnelMapper.selectById(exchange.getPersonnelId()); exchange.setAuditState(3); exchange.setState("0"); @@ -176,10 +195,10 @@ public class AuditServiceImpl extends BaseService implements personnelMapper.updateById(personnel); } } - return update ? AjaxResult.ok().msg("审批成功!"):AjaxResult.fail().msg("审批成功!"); + return update ? AjaxResult.ok().msg("审批成功!") : AjaxResult.fail().msg("审批成功!"); } } - //拒绝 + // 拒绝 List auditList = list(new LambdaQueryWrapper().eq(Audit::getPersonnelId, auditRequest.getPersonnelId())); Config director = configMapper.selectOne(new LambdaQueryWrapper().eq(Config::getParamKey, ConfigCache.SYS_USER_PERSONNEL_DIRECTOR)); @@ -187,17 +206,17 @@ public class AuditServiceImpl extends BaseService implements Personnel afterPersonnel = personnelMapper.selectById(middle.getAfterId()); Personnel personnel = personnelMapper.selectById(auditRequest.getPersonnelId()); Exchange exchange = exchangeMapper.selectById(auditRequest.getPersonnelId()); - if (loginUser.getLoginName().equals(director.getParamValue())){ + if (loginUser.getLoginName().equals(director.getParamValue())) { one.setAuditOrder(ArgsConst.REJECT); one.setOpinion(auditRequest.getAuditOpinion()); boolean update = updateById(one); - if (update){ - saveAuditLog(auditRequest.getPersonnelId(),loginId,auditRequest.getType(),"一般初审拒绝",auditRequest.getAuditOpinion()); - if (ArgsConst.PERSONNEL.equals(auditRequest.getType())||ArgsConst.CHANGE.equals(auditRequest.getType())){ - updateByPer(1,afterPersonnel.getId(),personnel,auditRequest.getType(),auditRequest.getAuditOpinion()); + if (update) { + saveAuditLog(auditRequest.getPersonnelId(), loginId, auditRequest.getType(), "一般初审拒绝", auditRequest.getAuditOpinion()); + if (ArgsConst.PERSONNEL.equals(auditRequest.getType()) || ArgsConst.CHANGE.equals(auditRequest.getType())) { + updateByPer(1, afterPersonnel.getId(), personnel, auditRequest.getType(), auditRequest.getAuditOpinion()); } - if(ArgsConst.EXCHANGE.equals(auditRequest.getType())){ + if (ArgsConst.EXCHANGE.equals(auditRequest.getType())) { exchange.setAuditState(4); exchange.setState("0"); exchange.setFirstTrialRemark(auditRequest.getAuditOpinion()); @@ -207,18 +226,18 @@ public class AuditServiceImpl extends BaseService implements delete(auditOne.getId()); } } - return update ? AjaxResult.ok().msg("审批成功!"):AjaxResult.fail().msg("审批成功!"); + return update ? AjaxResult.ok().msg("审批成功!") : AjaxResult.fail().msg("审批成功!"); } Config leadership = configMapper.selectOne(new LambdaQueryWrapper().eq(Config::getParamKey, ConfigCache.SYS_USER_LEADERSHIP)); - if (leadership.getParamValue().equals(loginUser.getLoginName())){ + if (leadership.getParamValue().equals(loginUser.getLoginName())) { one.setAuditOrder(ArgsConst.REJECT); one.setOpinion(auditRequest.getAuditOpinion()); boolean update = updateById(one); - if (update){ - saveAuditLog(auditRequest.getPersonnelId(),loginId,auditRequest.getType(),"一般终审拒绝",auditRequest.getAuditOpinion()); - if (ArgsConst.PERSONNEL.equals(auditRequest.getType())||ArgsConst.CHANGE.equals(auditRequest.getType())){ - updateByPer(2,afterPersonnel.getId(),personnel,auditRequest.getType(),auditRequest.getAuditOpinion()); - }else if(ArgsConst.EXCHANGE.equals(auditRequest.getType())){ + if (update) { + saveAuditLog(auditRequest.getPersonnelId(), loginId, auditRequest.getType(), "一般终审拒绝", auditRequest.getAuditOpinion()); + if (ArgsConst.PERSONNEL.equals(auditRequest.getType()) || ArgsConst.CHANGE.equals(auditRequest.getType())) { + updateByPer(2, afterPersonnel.getId(), personnel, auditRequest.getType(), auditRequest.getAuditOpinion()); + } else if (ArgsConst.EXCHANGE.equals(auditRequest.getType())) { exchange.setAuditState(4); exchange.setState("0"); exchange.setFinalTrialRemark(auditRequest.getAuditOpinion()); @@ -228,13 +247,13 @@ public class AuditServiceImpl extends BaseService implements delete(auditOne.getId()); } } - return update ? AjaxResult.ok().msg("审批成功!"):AjaxResult.fail().msg("审批成功!"); + return update ? AjaxResult.ok().msg("审批成功!") : AjaxResult.fail().msg("审批成功!"); } return null; } - public Integer saveAuditLog(String personnelId,String approverId,String type,String auditSate,String opinion){ + public Integer saveAuditLog(String personnelId, String approverId, String type, String auditSate, String opinion) { AuditLog auditLog = new AuditLog(); auditLog.setPersonnelId(personnelId); auditLog.setType(type); @@ -243,17 +262,18 @@ public class AuditServiceImpl extends BaseService implements auditLog.setAuditState(auditSate); return auditLogMapper.insert(auditLog); } - public void updateByPer(Integer num,String afterId,Personnel personnel,String type,String auditOpinion){ + + public void updateByPer(Integer num, String afterId, Personnel personnel, String type, String auditOpinion) { delete(afterId); - if (1==num){ + if (1 == num) { personnel.setFirstTrialRemark(auditOpinion); - }else if (2==num){ + } else if (2 == num) { personnel.setFinalTrialRemark(auditOpinion); } - if (ArgsConst.PERSONNEL.equals(type)){ + if (ArgsConst.PERSONNEL.equals(type)) { personnel.setAuditState(4); personnel.setAlterationSign("2"); - }else if (ArgsConst.CHANGE.equals(type)){ + } else if (ArgsConst.CHANGE.equals(type)) { personnel.setChangeAuditState(4); personnel.setChangeAlterationSign("2"); } @@ -271,7 +291,6 @@ public class AuditServiceImpl extends BaseService implements @Transactional(rollbackFor = Exception.class) public AjaxResult submitRecruitmentAudit(AuditRequest auditRequest) { Organization organization = organizationMapper.selectById(auditRequest.getPersonnelId()); - if (3 == organization.getAuditState()) { return AjaxResult.fail().msg("已拒绝请勿重复审批!"); } @@ -281,72 +300,85 @@ public class AuditServiceImpl extends BaseService implements return AjaxResult.fail().msg("该用户不能审批!"); } // 人事部负责人 - Config director = configMapper.selectOne(new LambdaQueryWrapper().eq(Config::getParamKey, ConfigCache.SYS_USER_PERSONNEL_DIRECTOR)); + // Config director = configMapper.selectOne(new LambdaQueryWrapper().eq(Config::getParamKey, ConfigCache.SYS_USER_PERSONNEL_DIRECTOR)); // 领导 Config leadership = configMapper.selectOne(new LambdaQueryWrapper().eq(Config::getParamKey, ConfigCache.SYS_USER_LEADERSHIP)); User byId = userMapper.selectById(one.getApprover()); // 同意 if ("2".equals(auditRequest.getStatus())) { // 人事初审批同意 - if (director.getParamValue().equals(byId.getLoginName())) { - one.setAuditOrder(ArgsConst.FIRST); - one.setAuditState(ArgsConst.PASS); - boolean update = updateById(one); - if (update) { - Audit one1 = getOne(new LambdaQueryWrapper().eq(Audit::getPersonnelId, auditRequest.getPersonnelId()).eq(Audit::getAuditOrder, ArgsConst.LAST)); - one1.setAuditOrder(ArgsConst.WAITING); - updateById(one1); - organization.setAuditState(2); - organization.setFirstTime(new Date()); - organization.setFirstTrial(auditRequest.getAuditOpinion()); - organizationMapper.updateById(organization); - } - return update ? AjaxResult.ok().msg("人事审批成功!") : AjaxResult.fail().msg("人事审批失败!"); - } - // 领导终审批同意 + // if (director.getParamValue().equals(byId.getLoginName())) { + // one.setAuditOrder(ArgsConst.FIRST); + // one.setAuditState(ArgsConst.PASS); + // boolean update = updateById(one); + // if (update) { + // Audit one1 = getOne(new LambdaQueryWrapper().eq(Audit::getPersonnelId, auditRequest.getPersonnelId()).eq(Audit::getAuditOrder, ArgsConst.LAST)); + // one1.setAuditOrder(ArgsConst.WAITING); + // updateById(one1); + // organization.setAuditState(2); + // organization.setFirstTime(new Date()); + // organization.setFirstTrial(auditRequest.getAuditOpinion()); + // organizationMapper.updateById(organization); + // } + // saveAuditLog(auditRequest.getPersonnelId(), loginId, "organization", "人事审批通过", auditRequest.getAuditOpinion()); + // return update ? AjaxResult.ok().msg("人事审批成功!") : AjaxResult.fail().msg("人事审批失败!"); + // } + // // 领导终审批同意 if (leadership.getParamValue().equals(byId.getLoginName())) { CompanyName companyName = companyNameMapper.selectOne(new LambdaQueryWrapper().eq(CompanyName::getId, organization.getCompanyId())); // 名额 - Long places = recruitmentMapper.selectOne(new MPJQueryWrapper().select(" SUM(places) places ").eq("company_id", organization.getId())).getPlaces(); - Long quota = companyName.getResidualNumber() - places; - // 剩余指标人数 = 剩余指标人数 - 名额 - if(quota < 0){ - return AjaxResult.fail().msg("招聘人数不能大于剩余人数!"); - } + // Long places = recruitmentMapper.selectOne(new MPJQueryWrapper().select(" SUM(places) places ").eq("company_id", organization.getId())).getPlaces(); one.setAuditOrder(ArgsConst.LAST); one.setAuditState(ArgsConst.PASS); + one.setApproverTime(new Date()); boolean update = updateById(one); if (update) { - // 剩余指标人数 = 原核定用工指标人数 - 名额 - companyName.setResidualNumber(quota); - companyName.setThisApprovalNumber(organization.getThisApprovalNumber()); - companyNameMapper.updateById(companyName); + QueryWrapper queryWrapper = new QueryWrapper().eq("company_id", organization.getId()); + Long places = recruitmentMapper.recruitmentPlaces(queryWrapper); + // companyNameMapper.update(null, new LambdaUpdateWrapper().set(CompanyName::getThisApprovalNumber, companyName.getThisApprovalNumber() - places).eq(CompanyName::getId, companyName.getId())); + companyNameMapper.update(null, new LambdaUpdateWrapper().set(CompanyName::getResidualNumber, companyName.getResidualNumber() - places) + // .set(CompanyName::getResidualNumber, companyName.getResidualNumber() - addNumber) + // .set(CompanyName::getRecruit, companyName.getCheckNumber() - companyName.getThisApprovalNumber()) + .eq(CompanyName::getId, companyName.getId())); organization.setAuditState(3); - organization.setResidualNumber(companyName.getResidualNumber()); organization.setLastTime(new Date()); organization.setLastInstance(auditRequest.getAuditOpinion()); organizationMapper.updateById(organization); } + List recruitments = recruitmentMapper.selectList(Wrappers.lambdaQuery(Recruitment.class).eq(Recruitment::getCompanyId, organization.getId())); + List list = recruitments.stream().map(Recruitment::getPlaces).collect(Collectors.toList()); + for (Long aLong : list) { + for (int i = 0; i < aLong.intValue(); i++) { + Places places = new Places(); + places.setStatus(Boolean.FALSE); + places.setOrganizationId(organization.getId()); + places.setOdd(DateUtil.format(DateUtil.date(), "yyyyMMddHHmmss" + getNextId())); + placesMapper.insert(places); + } + } + saveAuditLog(auditRequest.getPersonnelId(), loginId, ArgsConst.ORGANIZATION, "领导审批通过", auditRequest.getAuditOpinion()); return update ? AjaxResult.ok().msg("领导审批成功!") : AjaxResult.fail().msg("领导审批失败!"); } } else { // 人事初审批拒绝 - if (director.getParamValue().equals(byId.getLoginName())) { - one.setAuditOrder(ArgsConst.FIRST); - one.setAuditState(ArgsConst.REJECT); - boolean update = updateById(one); - if (update) { - organization.setAuditState(4); - organization.setFirstTime(new Date()); - organization.setFirstTrial(auditRequest.getAuditOpinion()); - organizationMapper.updateById(organization); - } - return update ? AjaxResult.ok().msg("人事审批拒绝!") : AjaxResult.fail().msg("人事审批失败!"); - } + // if (director.getParamValue().equals(byId.getLoginName())) { + // one.setAuditOrder(ArgsConst.FIRST); + // one.setAuditState(ArgsConst.REJECT); + // boolean update = updateById(one); + // if (update) { + // organization.setAuditState(4); + // organization.setFirstTime(new Date()); + // organization.setFirstTrial(auditRequest.getAuditOpinion()); + // organizationMapper.updateById(organization); + // } + // saveAuditLog(auditRequest.getPersonnelId(), loginId, "organization", "人事审批拒绝", auditRequest.getAuditOpinion()); + // return update ? AjaxResult.ok().msg("人事审批拒绝!") : AjaxResult.fail().msg("人事审批失败!"); + // } // 领导终审批拒绝 if (leadership.getParamValue().equals(byId.getLoginName())) { one.setAuditOrder(ArgsConst.LAST); one.setAuditState(ArgsConst.REJECT); + one.setApproverTime(new Date()); boolean update = updateById(one); if (update) { organization.setAuditState(4); @@ -354,6 +386,7 @@ public class AuditServiceImpl extends BaseService implements organization.setLastInstance(auditRequest.getAuditOpinion()); organizationMapper.updateById(organization); } + saveAuditLog(auditRequest.getPersonnelId(), loginId, ArgsConst.ORGANIZATION, "领导审批拒绝", auditRequest.getAuditOpinion()); return update ? AjaxResult.ok().msg("领导审批拒绝!") : AjaxResult.fail().msg("领导审批失败!"); } } @@ -370,7 +403,6 @@ public class AuditServiceImpl extends BaseService implements @Transactional(rollbackFor = Exception.class) public AjaxResult submitPersonnelIndicatorsAudit(AuditRequest auditRequest) { Organization organization = organizationMapper.selectById(auditRequest.getPersonnelId()); - if (3 == organization.getAuditState()) { return AjaxResult.fail().msg("已拒绝请勿重复审批!"); } @@ -380,75 +412,82 @@ public class AuditServiceImpl extends BaseService implements return AjaxResult.fail().msg("该用户不能审批!"); } // 人事部负责人 - Config director = configMapper.selectOne(new LambdaQueryWrapper().eq(Config::getParamKey, ConfigCache.SYS_USER_PERSONNEL_DIRECTOR)); + // Config director = configMapper.selectOne(new LambdaQueryWrapper().eq(Config::getParamKey, ConfigCache.SYS_USER_PERSONNEL_DIRECTOR)); // 领导 Config leadership = configMapper.selectOne(new LambdaQueryWrapper().eq(Config::getParamKey, ConfigCache.SYS_USER_LEADERSHIP)); // 同意 + User byId = userMapper.selectById(one.getApprover()); if ("2".equals(auditRequest.getStatus())) { - User byId = userMapper.selectById(one.getApprover()); - // 人事初审批同意 - if (director.getParamValue().equals(byId.getLoginName())) { - one.setAuditOrder(ArgsConst.FIRST); - one.setAuditState(ArgsConst.PASS); - boolean update = updateById(one); - if (update) { - Audit one1 = getOne(new LambdaQueryWrapper().eq(Audit::getPersonnelId, auditRequest.getPersonnelId()).eq(Audit::getAuditOrder, ArgsConst.LAST)); - one1.setAuditOrder(ArgsConst.WAITING); - updateById(one1); - organization.setAuditState(2); - organization.setFirstTime(new Date()); - organization.setFirstTrial(auditRequest.getAuditOpinion()); - organizationMapper.updateById(organization); - } - return update ? AjaxResult.ok().msg("人事审批成功!") : AjaxResult.fail().msg("人事审批失败!"); - } + // // 人事初审批同意 + // if (director.getParamValue().equals(byId.getLoginName())) { + // one.setAuditOrder(ArgsConst.FIRST); + // one.setAuditState(ArgsConst.PASS); + // boolean update = updateById(one); + // if (update) { + // Audit one1 = getOne(new LambdaQueryWrapper().eq(Audit::getPersonnelId, auditRequest.getPersonnelId()).eq(Audit::getAuditOrder, ArgsConst.LAST)); + // one1.setAuditOrder(ArgsConst.WAITING); + // updateById(one1); + // organization.setAuditState(2); + // organization.setFirstTime(new Date()); + // organization.setFirstTrial(auditRequest.getAuditOpinion()); + // organizationMapper.updateById(organization); + // } + // saveAuditLog(auditRequest.getPersonnelId(), loginId, "personnel_indicators", "人事审批通过", auditRequest.getAuditOpinion()); + // return update ? AjaxResult.ok().msg("人事审批成功!") : AjaxResult.fail().msg("人事审批失败!"); + // } // 领导终审批同意 if (leadership.getParamValue().equals(byId.getLoginName())) { - //统计核准指标人数 - Long addNumber = personnelIndicatorsMapper.selectOne(new MPJQueryWrapper().select(" SUM(add_number) addNumber ").eq("organization_id", organization.getId())).getAddNumber(); - //统计要求增加指标人数 - Long standardNumber = personnelIndicatorsMapper.selectOne(new MPJQueryWrapper().select(" SUM(standard_number) standardNumber ").eq("organization_id", organization.getId())).getStandardNumber(); - Long thisApprovalNumber = organizationMapper.selectOne(new MPJQueryWrapper().select(" SUM(this_approval_number) thisApprovalNumber ").eq("company_id", organization.getCompanyId()).eq("type", ArgsConst.PERSONNEL_INDICATORS)).getThisApprovalNumber(); CompanyName companyName = companyNameMapper.selectOne(new LambdaQueryWrapper().eq(CompanyName::getId, organization.getCompanyId())); + // 统计要求增加指标人数 + QueryWrapper queryWrapper = new QueryWrapper().eq("organization_id", organization.getId()); + Long addNumber = personnelIndicatorsMapper.personnelIndicatorsAddNumber(queryWrapper); + // Long thisApprovalNumber = organizationMapper.selectOne(new MPJQueryWrapper().select(" SUM(this_approval_number) thisApprovalNumber ").eq("company_id", organization.getCompanyId()).eq("type", ArgsConst.PERSONNEL_INDICATORS)).getThisApprovalNumber(); one.setAuditOrder(ArgsConst.LAST); one.setAuditState(ArgsConst.PASS); + one.setApproverTime(new Date()); boolean update = updateById(one); if (update) { - //原核定用工指标人数 - companyName.setCheckNumber(addNumber + companyName.getCheckNumber()); - // 指标加了剩余人数也加 - companyName.setResidualNumber(standardNumber + companyName.getResidualNumber()); - //本次核准后总指标人数 - companyName.setThisApprovalNumber(standardNumber + companyName.getThisApprovalNumber()); - companyNameMapper.updateById(companyName); - organization.setCheckNumber(companyName.getCheckNumber()); - organization.setThisApprovalNumber(thisApprovalNumber); + companyNameMapper.update(null, new LambdaUpdateWrapper().set(CompanyName::getThisApprovalNumber, companyName.getThisApprovalNumber() - addNumber) + .set(CompanyName::getResidualNumber, companyName.getResidualNumber() + addNumber) + // .set(CompanyName::getResidualNumber, companyName.getResidualNumber() + addNumber) + .set(CompanyName::getRecruit, companyName.getRecruit() + addNumber) + .eq(CompanyName::getId, companyName.getId())); organization.setAuditState(3); organization.setLastTime(new Date()); organization.setLastInstance(auditRequest.getAuditOpinion()); organizationMapper.updateById(organization); } + // WorkFlowNotice workFlowNotice = new WorkFlowNotice(); + // workFlowNotice.setStatus(Boolean.FALSE); + // workFlowNotice.setFlowType(ArgsConst.PERSONNEL_INDICATORS); + // workFlowNotice.setUserId(one.getApprover()); + // workFlowNotice.setTitle(byId.getUserName() + "的指标申报待你审批"); + // workFlowNotice.setFlowId(auditRequest.getPersonnelId()); + // workFlowNoticeService.save(workFlowNotice); + saveAuditLog(auditRequest.getPersonnelId(), loginId, ArgsConst.PERSONNEL_INDICATORS, "领导审批通过", auditRequest.getAuditOpinion()); return update ? AjaxResult.ok().msg("领导审批成功!") : AjaxResult.fail().msg("领导审批失败!"); } } else { // 人事初审批拒绝 - User byId = userMapper.selectById(one.getApprover()); - if (director.getParamValue().equals(byId.getLoginName())) { - one.setAuditOrder(ArgsConst.FIRST); - one.setAuditState(ArgsConst.REJECT); - boolean update = updateById(one); - if (update) { - organization.setAuditState(4); - organization.setFirstTime(new Date()); - organization.setFirstTrial(auditRequest.getAuditOpinion()); - organizationMapper.updateById(organization); - } - return update ? AjaxResult.ok().msg("人事审批拒绝!") : AjaxResult.fail().msg("人事审批失败!"); - } + // User byId = userMapper.selectById(one.getApprover()); + // if (director.getParamValue().equals(byId.getLoginName())) { + // one.setAuditOrder(ArgsConst.FIRST); + // one.setAuditState(ArgsConst.REJECT); + // boolean update = updateById(one); + // if (update) { + // organization.setAuditState(4); + // organization.setFirstTime(new Date()); + // organization.setFirstTrial(auditRequest.getAuditOpinion()); + // organizationMapper.updateById(organization); + // } + // saveAuditLog(auditRequest.getPersonnelId(), loginId, "personnel_indicators", "人事审批拒绝", auditRequest.getAuditOpinion()); + // return update ? AjaxResult.ok().msg("人事审批拒绝!") : AjaxResult.fail().msg("人事审批失败!"); + // } // 领导终审批拒绝 if (leadership.getParamValue().equals(byId.getLoginName())) { one.setAuditOrder(ArgsConst.LAST); one.setAuditState(ArgsConst.REJECT); + one.setApproverTime(new Date()); boolean update = updateById(one); if (update) { organization.setAuditState(4); @@ -456,6 +495,14 @@ public class AuditServiceImpl extends BaseService implements organization.setLastInstance(auditRequest.getAuditOpinion()); organizationMapper.updateById(organization); } + // WorkFlowNotice workFlowNotice = new WorkFlowNotice(); + // workFlowNotice.setStatus(Boolean.FALSE); + // workFlowNotice.setFlowType(ArgsConst.PERSONNEL_INDICATORS); + // workFlowNotice.setUserId(one.getApprover()); + // workFlowNotice.setTitle(byId.getUserName() + "的指标申报已驳回"); + // workFlowNotice.setFlowId(auditRequest.getPersonnelId()); + // workFlowNoticeService.save(workFlowNotice); + saveAuditLog(auditRequest.getPersonnelId(), loginId, ArgsConst.PERSONNEL_INDICATORS, "领导审批拒绝", auditRequest.getAuditOpinion()); return update ? AjaxResult.ok().msg("领导审批拒绝!") : AjaxResult.fail().msg("领导审批失败!"); } } @@ -482,31 +529,32 @@ public class AuditServiceImpl extends BaseService implements return AjaxResult.fail().msg("该用户不能审批!"); } // 人事部负责人 - Config director = configMapper.selectOne(new LambdaQueryWrapper().eq(Config::getParamKey, ConfigCache.SYS_USER_PERSONNEL_DIRECTOR)); + // Config director = configMapper.selectOne(new LambdaQueryWrapper().eq(Config::getParamKey, ConfigCache.SYS_USER_PERSONNEL_DIRECTOR)); // 领导 Config leadership = configMapper.selectOne(new LambdaQueryWrapper().eq(Config::getParamKey, ConfigCache.SYS_USER_LEADERSHIP)); User byId = userMapper.selectById(audit.getApprover()); if ("2".equals(auditRequest.getStatus())) { // 人事初审批同意 - if (director.getParamValue().equals(byId.getLoginName())) { - audit.setAuditOrder(ArgsConst.FIRST); - audit.setAuditState(ArgsConst.PASS); - boolean update = updateById(audit); - if (update) { - Audit one1 = getOne(new LambdaQueryWrapper().eq(Audit::getPersonnelId, auditRequest.getPersonnelId()).eq(Audit::getAuditOrder, ArgsConst.LAST)); - one1.setAuditOrder(ArgsConst.WAITING); - updateById(one1); - recruitment.setAuditState(2); - recruitment.setFirstTime(new Date()); - recruitment.setFirstTrial(auditRequest.getAuditOpinion()); - directorsSupervisorsMapper.updateById(recruitment); - } - return update ? AjaxResult.ok().msg("人事审批成功!") : AjaxResult.fail().msg("人事审批失败!"); - } + // if (director.getParamValue().equals(byId.getLoginName())) { + // audit.setAuditOrder(ArgsConst.FIRST); + // audit.setAuditState(ArgsConst.PASS); + // boolean update = updateById(audit); + // if (update) { + // Audit one1 = getOne(new LambdaQueryWrapper().eq(Audit::getPersonnelId, auditRequest.getPersonnelId()).eq(Audit::getAuditOrder, ArgsConst.LAST)); + // one1.setAuditOrder(ArgsConst.WAITING); + // updateById(one1); + // recruitment.setAuditState(2); + // recruitment.setFirstTime(new Date()); + // recruitment.setFirstTrial(auditRequest.getAuditOpinion()); + // directorsSupervisorsMapper.updateById(recruitment); + // } + // return update ? AjaxResult.ok().msg("人事审批成功!") : AjaxResult.fail().msg("人事审批失败!"); + // } // 领导终审批同意 if (leadership.getParamValue().equals(byId.getLoginName())) { audit.setAuditOrder(ArgsConst.LAST); audit.setAuditState(ArgsConst.PASS); + audit.setApproverTime(new Date()); boolean update = updateById(audit); if (update) { recruitment.setAuditState(3); @@ -514,26 +562,28 @@ public class AuditServiceImpl extends BaseService implements recruitment.setLastInstance(auditRequest.getAuditOpinion()); directorsSupervisorsMapper.updateById(recruitment); } + saveAuditLog(auditRequest.getPersonnelId(), loginId, ArgsConst.DIRECTORS, "领导审批通过", auditRequest.getAuditOpinion()); return update ? AjaxResult.ok().msg("领导审批成功!") : AjaxResult.fail().msg("领导审批失败!"); } } else { // 人事初审批拒绝 - if (director.getParamValue().equals(byId.getLoginName())) { - audit.setAuditOrder(ArgsConst.FIRST); - audit.setAuditState(ArgsConst.REJECT); - boolean update = updateById(audit); - if (update) { - recruitment.setAuditState(4); - recruitment.setFirstTime(new Date()); - recruitment.setFirstTrial(auditRequest.getAuditOpinion()); - directorsSupervisorsMapper.updateById(recruitment); - } - return update ? AjaxResult.ok().msg("人事审批拒绝!") : AjaxResult.fail().msg("人事审批失败!"); - } + // if (director.getParamValue().equals(byId.getLoginName())) { + // audit.setAuditOrder(ArgsConst.FIRST); + // audit.setAuditState(ArgsConst.REJECT); + // boolean update = updateById(audit); + // if (update) { + // recruitment.setAuditState(4); + // recruitment.setFirstTime(new Date()); + // recruitment.setFirstTrial(auditRequest.getAuditOpinion()); + // directorsSupervisorsMapper.updateById(recruitment); + // } + // return update ? AjaxResult.ok().msg("人事审批拒绝!") : AjaxResult.fail().msg("人事审批失败!"); + // } // 领导终审批拒绝 if (leadership.getParamValue().equals(byId.getLoginName())) { audit.setAuditOrder(ArgsConst.LAST); audit.setAuditState(ArgsConst.REJECT); + audit.setApproverTime(new Date()); boolean update = updateById(audit); if (update) { recruitment.setAuditState(4); @@ -541,6 +591,7 @@ public class AuditServiceImpl extends BaseService implements recruitment.setLastInstance(auditRequest.getAuditOpinion()); directorsSupervisorsMapper.updateById(recruitment); } + saveAuditLog(auditRequest.getPersonnelId(), loginId, ArgsConst.DIRECTORS, "领导审批拒绝", auditRequest.getAuditOpinion()); return update ? AjaxResult.ok().msg("领导审批拒绝!") : AjaxResult.fail().msg("领导审批失败!"); } } @@ -548,5 +599,31 @@ public class AuditServiceImpl extends BaseService implements } + /** + * 已提交审批 + * + * @param page + * @return + */ + @Override + public AjaxResult submitAudit(Page page) { + Page selectPage = auditMapper.selectPage(page, Wrappers.lambdaQuery(Audit.class) + .eq(Audit::getAuditState, "submit").eq(Audit::getApprover, StpUtil.getLoginIdAsString())); + return AjaxResult.ok().data(selectPage); + } + + + /** + * 待我审批日志 + * + * @param page + * @return + */ + @Override + public AjaxResult waitingAudit(Page page) { + Page selectPage = auditMapper.selectPage(page, Wrappers.lambdaQuery(Audit.class) + .eq(Audit::getAuditOrder, "waiting").eq(Audit::getApprover, StpUtil.getLoginIdAsString())); + return AjaxResult.ok().data(selectPage); + } } diff --git a/src/main/java/com/ydool/staff/service/impl/CompanyNameServiceImpl.java b/src/main/java/com/ydool/staff/service/impl/CompanyNameServiceImpl.java index 6df2f7e..33c97b7 100644 --- a/src/main/java/com/ydool/staff/service/impl/CompanyNameServiceImpl.java +++ b/src/main/java/com/ydool/staff/service/impl/CompanyNameServiceImpl.java @@ -5,10 +5,14 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.yulichang.query.MPJQueryWrapper; import com.ydool.common.base.BaseService; import com.ydool.common.data.dto.AjaxResult; import com.ydool.common.utils.EasyExcelAlibabaUtil; +import com.ydool.staff.dto.CompanyNameDto; import com.ydool.staff.dto.EnterpriseIndicatorsExportDto; import com.ydool.staff.dto.PersonnelReportExportDto; import com.ydool.staff.dto.PersonnelStatementDto; @@ -135,7 +139,7 @@ public class CompanyNameServiceImpl extends BaseService perStatement(String id, String firstDate,String finalDate) { + public List perStatement(String id, String firstDate, String finalDate) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date first = null; Date finals = null; @@ -152,14 +156,14 @@ public class CompanyNameServiceImpl extends BaseService statementDtos = new ArrayList<>(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(StrUtil.isNotBlank(id),CompanyName::getId,id); + queryWrapper.eq(StrUtil.isNotBlank(id), CompanyName::getId, id); List list = companyNameMapper.selectList(queryWrapper); for (CompanyName companyName : list) { Integer count = directorsSupervisorsMapper.selectCount(new LambdaQueryWrapper().eq(DirectorsSupervisors::getAuditState, 3).eq(DirectorsSupervisors::getOrganizationId, companyName.getId())); LambdaQueryWrapper wrapper = new LambdaQueryWrapper() .eq(Personnel::getCompanyName, companyName.getId()) - .eq(Personnel::getWorkState,"在职") - .eq(Personnel::getState,"2") + .eq(Personnel::getWorkState, "在职") + .eq(Personnel::getState, "2") .ge(ObjectUtil.isNotNull(first), Personnel::getHireDate, first) .le(ObjectUtil.isNotNull(finals), Personnel::getHireDate, finals); List listPersonnel = personnelMapper.selectList(wrapper); @@ -179,7 +183,6 @@ public class CompanyNameServiceImpl extends BaseService().set("check_number", companyNameDto.getCheckNumber()).eq("id", companyNameDto.getId())); + if (i > 0) { + return AjaxResult.ok().msg("修改成功!"); + } + return AjaxResult.fail().msg("修改失败!"); + } } diff --git a/src/main/java/com/ydool/staff/service/impl/DirectorsSupervisorsServiceImpl.java b/src/main/java/com/ydool/staff/service/impl/DirectorsSupervisorsServiceImpl.java index 47068b0..25eaede 100644 --- a/src/main/java/com/ydool/staff/service/impl/DirectorsSupervisorsServiceImpl.java +++ b/src/main/java/com/ydool/staff/service/impl/DirectorsSupervisorsServiceImpl.java @@ -7,16 +7,14 @@ import cn.hutool.core.util.IdcardUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ydool.common.cache.ConfigCache; import com.ydool.common.constant.ArgsConst; import com.ydool.common.data.dto.AjaxResult; import com.ydool.staff.dto.AttachmentDto; import com.ydool.staff.dto.DirectorsSupervisorsDto; -import com.ydool.staff.entity.Attachment; -import com.ydool.staff.entity.Audit; -import com.ydool.staff.entity.CompanyName; -import com.ydool.staff.entity.DirectorsSupervisors; +import com.ydool.staff.entity.*; import com.ydool.common.base.BaseService; import com.ydool.staff.mapper.AttachmentMapper; import com.ydool.staff.mapper.AuditMapper; @@ -156,12 +154,16 @@ public class DirectorsSupervisorsServiceImpl extends BaseService 0) { + return AjaxResult.fail("当前有未审批的董监申报!"); + } String loginId = StpUtil.getLoginIdAsString(); DirectorsSupervisors directorsSupervisors = get(id); if (1 == directorsSupervisors.getAuditState()) { return AjaxResult.fail().msg("该数据已送审,请勿重复操作!"); } - for (int i = 0; i <= 2; i++) { + for (int i = 0; i <= 1; i++) { Audit audit = new Audit(); audit.setPersonnelId(id); audit.setPerType(type); @@ -171,26 +173,25 @@ public class DirectorsSupervisorsServiceImpl extends BaseService().eq(Config::getParamKey, ConfigCache.SYS_USER_PERSONNEL_DIRECTOR)); - User user1 = userMapper.selectOne(new LambdaQueryWrapper().eq(User::getLoginName, config.getParamValue())); - audit.setAuditOrder(ArgsConst.WAITING); - audit.setApprover(user1.getId()); - audit.setApproverTime(new Date()); - directorsSupervisors.setFirstId(user1.getUserName()); + // } else if (i == 1) { + // // 待审批 人事部负责人 + // Config config = configMapper.selectOne(new LambdaQueryWrapper().eq(Config::getParamKey, ConfigCache.SYS_USER_PERSONNEL_DIRECTOR)); + // User user1 = userMapper.selectOne(new LambdaQueryWrapper().eq(User::getLoginName, config.getParamValue())); + // audit.setAuditOrder(ArgsConst.WAITING); + // audit.setApprover(user1.getId()); + // audit.setApproverTime(new Date()); + // directorsSupervisors.setFirstId(user1.getUserName()); } else { // 领导 Config config = configMapper.selectOne(new LambdaQueryWrapper().eq(Config::getParamKey, ConfigCache.SYS_USER_LEADERSHIP)); User user2 = userMapper.selectOne(new LambdaQueryWrapper().eq(User::getLoginName, config.getParamValue())); - audit.setAuditOrder(ArgsConst.LAST); + audit.setAuditOrder(ArgsConst.WAITING); audit.setApprover(user2.getId()); - audit.setApproverTime(new Date()); directorsSupervisors.setLastId(user2.getUserName()); } auditMapper.insert(audit); } - directorsSupervisors.setAuditState(1); + directorsSupervisors.setAuditState(2); return updateById(directorsSupervisors) ? AjaxResult.ok().msg("送审成功!") : AjaxResult.fail().msg("送审失败!"); } } diff --git a/src/main/java/com/ydool/staff/service/impl/OrganizationServiceImpl.java b/src/main/java/com/ydool/staff/service/impl/OrganizationServiceImpl.java index df2586d..676ec26 100644 --- a/src/main/java/com/ydool/staff/service/impl/OrganizationServiceImpl.java +++ b/src/main/java/com/ydool/staff/service/impl/OrganizationServiceImpl.java @@ -1,19 +1,23 @@ package com.ydool.staff.service.impl; import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ydool.common.cache.ConfigCache; import com.ydool.common.constant.ArgsConst; import com.ydool.common.data.dto.AjaxResult; +import com.ydool.oa.workFlow.data.entity.WorkFlowNotice; +import com.ydool.oa.workFlow.service.WorkFlowNoticeService; +import com.ydool.staff.dto.PlacesDto; import com.ydool.staff.entity.*; import com.ydool.common.base.BaseService; import com.ydool.staff.mapper.*; import com.ydool.staff.request.OrganizationSearch; -import com.ydool.staff.service.IAuditService; import com.ydool.staff.service.IOrganizationService; import com.ydool.system.entity.Config; import com.ydool.system.entity.User; @@ -53,6 +57,10 @@ public class OrganizationServiceImpl extends BaseService page, OrganizationSearch organizationSearch) { @@ -104,11 +112,12 @@ public class OrganizationServiceImpl extends BaseService().eq(Config::getParamKey, ConfigCache.SYS_USER_PERSONNEL_DIRECTOR)); - User user1 = userMapper.selectOne(new LambdaQueryWrapper().eq(User::getLoginName, config.getParamValue())); - audit.setAuditOrder(ArgsConst.WAITING); - audit.setApprover(user1.getId()); - audit.setApproverTime(new Date()); - organization.setFirstId(user1.getUserName()); + // } else if (i == 1) { + // // 待审批 人事部负责人 + // Config config = configMapper.selectOne(new LambdaQueryWrapper().eq(Config::getParamKey, ConfigCache.SYS_USER_PERSONNEL_DIRECTOR)); + // User user1 = userMapper.selectOne(new LambdaQueryWrapper().eq(User::getLoginName, config.getParamValue())); + // audit.setAuditOrder(ArgsConst.WAITING); + // audit.setApprover(user1.getId()); + // audit.setApproverTime(new Date()); + // organization.setFirstId(user1.getUserName()); } else { // 领导 Config config = configMapper.selectOne(new LambdaQueryWrapper().eq(Config::getParamKey, ConfigCache.SYS_USER_LEADERSHIP)); User user2 = userMapper.selectOne(new LambdaQueryWrapper().eq(User::getLoginName, config.getParamValue())); - audit.setAuditOrder(ArgsConst.LAST); + audit.setAuditOrder(ArgsConst.WAITING); audit.setApprover(user2.getId()); - audit.setApproverTime(new Date()); organization.setLastId(user2.getUserName()); + WorkFlowNotice workFlowNotice = new WorkFlowNotice(); + workFlowNotice.setStatus(Boolean.FALSE); + workFlowNotice.setFlowType(ArgsConst.PERSONNEL_INDICATORS); + workFlowNotice.setUserId(user2.getId()); + workFlowNotice.setTitle(user.getUserName() + "的指标申报待你审批"); + workFlowNotice.setFlowId(organization.getId()); + workFlowNoticeService.save(workFlowNotice); } auditMapper.insert(audit); } - organization.setAuditState(1); + organization.setAuditState(2); return updateById(organization) ? AjaxResult.ok().msg("送审成功!") : AjaxResult.ok().msg("送审失败!"); } + + @Override + public AjaxResult approval() { + List places = placesMapper.selectList(Wrappers.lambdaQuery(Places.class).eq(Places::getStatus, Boolean.FALSE).orderByAsc(Places::getOdd)); + return AjaxResult.ok().data(BeanUtil.copyToList(places, PlacesDto.class)); + } } diff --git a/src/main/java/com/ydool/staff/service/impl/PersonnelIndicatorsServiceImpl.java b/src/main/java/com/ydool/staff/service/impl/PersonnelIndicatorsServiceImpl.java index e30565d..3da8bc4 100644 --- a/src/main/java/com/ydool/staff/service/impl/PersonnelIndicatorsServiceImpl.java +++ b/src/main/java/com/ydool/staff/service/impl/PersonnelIndicatorsServiceImpl.java @@ -1,10 +1,14 @@ package com.ydool.staff.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ydool.common.constant.ArgsConst; import com.ydool.common.data.dto.AjaxResult; import com.ydool.staff.dto.PersonnelIndicatorsDto; @@ -17,11 +21,13 @@ import com.ydool.staff.mapper.PersonnelIndicatorsMapper; import com.ydool.staff.mapper.PersonnelMapper; import com.ydool.staff.request.OrganizationRequest; import com.ydool.staff.request.PersonnelIndicatorsRequest; +import com.ydool.staff.service.IOrganizationService; import com.ydool.staff.service.IPersonnelIndicatorsService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** @@ -35,25 +41,44 @@ import java.util.stream.Collectors; @Service public class PersonnelIndicatorsServiceImpl extends BaseService implements IPersonnelIndicatorsService { + private static final AtomicInteger counter = new AtomicInteger(0); + @Autowired PersonnelIndicatorsMapper personnelIndicatorsMapper; @Autowired OrganizationMapper organizationMapper; @Autowired CompanyNameMapper companyNameMapper; + @Autowired + IOrganizationService organizationService; + + public static String getNextId() { + int value = counter.incrementAndGet(); + return String.format("%04d", value); + } @Override public AjaxResult savePersonnelIndicators(PersonnelIndicatorsRequest personnelIndicatorsRequest) { + Integer count = organizationMapper.selectCount(Wrappers.lambdaQuery(Organization.class).in(Organization::getAuditState, 0, 2).eq(Organization::getType, ArgsConst.PERSONNEL_INDICATORS)); + if (count > 0) { + return AjaxResult.fail("当前有未审批的指标申请!"); + } OrganizationRequest organizationRequest = personnelIndicatorsRequest.getOrganizationRequest(); Organization organization = BeanUtil.copyProperties(organizationRequest, Organization.class); + // organization.setApprovalNumber(DateUtil.format(DateUtil.date(), "yyyyMMddHHmmss" + getNextId())); organization.setType(ArgsConst.PERSONNEL_INDICATORS); int i = organizationMapper.insert(organization); if (i > 0) { List personnelIndicators = personnelIndicatorsRequest.getPersonnelIndicators(); - for (PersonnelIndicators personnelIndicator : personnelIndicators) { - personnelIndicator.setOrganizationId(organization.getId()); + if (CollUtil.isEmpty(personnelIndicators)) { + return AjaxResult.fail("人员指标申报不能为空!"); } + personnelIndicators.forEach(e -> e.setOrganizationId(organization.getId())); saveBatch(personnelIndicators); + // 保存并且送审 + if ("approval".equals(personnelIndicatorsRequest.getType())) { + return organizationService.submitRecruitment(organization.getId(), ArgsConst.PERSONNEL_INDICATORS); + } return AjaxResult.ok().msg("添加成功!"); } return AjaxResult.fail().msg("添加失败!"); diff --git a/src/main/java/com/ydool/staff/service/impl/RecruitmentServiceImpl.java b/src/main/java/com/ydool/staff/service/impl/RecruitmentServiceImpl.java index d8f0a76..86562d3 100644 --- a/src/main/java/com/ydool/staff/service/impl/RecruitmentServiceImpl.java +++ b/src/main/java/com/ydool/staff/service/impl/RecruitmentServiceImpl.java @@ -1,24 +1,22 @@ package com.ydool.staff.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ydool.common.constant.ArgsConst; import com.ydool.common.data.dto.AjaxResult; import com.ydool.staff.dto.RecruitmentDto; -import com.ydool.staff.entity.CompanyName; -import com.ydool.staff.entity.Organization; -import com.ydool.staff.entity.Personnel; -import com.ydool.staff.entity.Recruitment; +import com.ydool.staff.entity.*; import com.ydool.common.base.BaseService; -import com.ydool.staff.mapper.CompanyNameMapper; -import com.ydool.staff.mapper.OrganizationMapper; -import com.ydool.staff.mapper.PersonnelMapper; -import com.ydool.staff.mapper.RecruitmentMapper; +import com.ydool.staff.mapper.*; import com.ydool.staff.request.OrganizationRequest; import com.ydool.staff.request.RecruitmentRequest; +import com.ydool.staff.service.IOrganizationService; import com.ydool.staff.service.IRecruitmentService; import com.ydool.system.request.IdsRequest; import org.springframework.beans.factory.annotation.Autowired; @@ -27,6 +25,8 @@ import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; /** *

@@ -39,26 +39,55 @@ import java.util.List; @Service public class RecruitmentServiceImpl extends BaseService implements IRecruitmentService { + private static final AtomicInteger counter = new AtomicInteger(0); + @Autowired RecruitmentMapper recruitmentMapper; @Autowired CompanyNameMapper companyNameMapper; @Autowired OrganizationMapper organizationMapper; + @Autowired + IOrganizationService organizationService; + @Autowired + PlacesMapper placesMapper; + + public static String getNextId() { + int value = counter.incrementAndGet(); + return String.format("%04d", value); + } @Override @Transactional(rollbackFor = Exception.class) public AjaxResult saveRecruitment(RecruitmentRequest recruitmentRequest) { + Integer count = organizationMapper.selectCount(Wrappers.lambdaQuery(Organization.class).in(Organization::getAuditState, 0, 2).eq(Organization::getType, ArgsConst.PERSONNEL_INDICATORS)); + if (count > 0) { + return AjaxResult.fail("当前有未审批的招聘登记!"); + } OrganizationRequest organizationRequest = recruitmentRequest.getOrganizationRequest(); Organization organization = BeanUtil.copyProperties(organizationRequest, Organization.class); + // organization.setApprovalNumber(DateUtil.format(DateUtil.date(), "yyyyMMddHHmmss" + getNextId())); organization.setType(ArgsConst.ORGANIZATION); int i = organizationMapper.insert(organization); if (i > 0) { List recruitments = recruitmentRequest.getRecruitments(); - for (Recruitment recruitment : recruitments) { - recruitment.setCompanyId(organization.getId()); + if (CollUtil.isEmpty(recruitments)) { + return AjaxResult.fail("人员登记不能为空!"); } + recruitments.forEach(e -> e.setCompanyId(organization.getId())); saveBatch(recruitments); + // List list = recruitments.stream().map(Recruitment::getPlaces).collect(Collectors.toList()); + // for (int j = 0; j < list.size(); j++) { + // Places places = new Places(); + // places.setStatus(Boolean.FALSE); + // places.setOrganizationId(organization.getId()); + // places.setOdd(DateUtil.format(DateUtil.date(), "yyyyMMddHHmmss" + getNextId())); + // placesMapper.insert(places); + // } + // 保存并且送审 + if ("approval".equals(recruitmentRequest.getType())) { + return organizationService.submitRecruitment(organization.getId(), ArgsConst.RECRUITMENT); + } return AjaxResult.ok().msg("添加成功!"); } return AjaxResult.fail().msg("添加失败!");