diff --git a/.idea/compiler.xml b/.idea/compiler.xml index b186295..03942d0 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -11,6 +11,7 @@ + diff --git a/.idea/misc.xml b/.idea/misc.xml index 6f5230a..010c400 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,3 +1,4 @@ + @@ -10,4 +11,7 @@ + + \ No newline at end of file diff --git a/src/main/java/com/ydool/YdoolApplication.java b/src/main/java/com/ydool/YdoolApplication.java index b60d8f3..cea117d 100644 --- a/src/main/java/com/ydool/YdoolApplication.java +++ b/src/main/java/com/ydool/YdoolApplication.java @@ -5,8 +5,10 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCaching; import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication +@EnableScheduling//开启定时任务 @EnableCaching @EnableAsync public class YdoolApplication { diff --git a/src/main/java/com/ydool/common/constant/ArgsConst.java b/src/main/java/com/ydool/common/constant/ArgsConst.java index baac861..f59d73e 100644 --- a/src/main/java/com/ydool/common/constant/ArgsConst.java +++ b/src/main/java/com/ydool/common/constant/ArgsConst.java @@ -39,6 +39,11 @@ public class ArgsConst { * 附件所属:变更 */ public static final String CHANGE = "change"; + + /** + * 附件所属:变更 + */ + public static final String RETIRE = "retire"; /** * 附件所属:人员 */ diff --git a/src/main/java/com/ydool/platform/saToken/config/SaTokenConfig.java b/src/main/java/com/ydool/platform/saToken/config/SaTokenConfig.java index 399f9b0..cda4c0f 100644 --- a/src/main/java/com/ydool/platform/saToken/config/SaTokenConfig.java +++ b/src/main/java/com/ydool/platform/saToken/config/SaTokenConfig.java @@ -14,7 +14,7 @@ public class SaTokenConfig implements WebMvcConfigurer { // 注册 Sa-Token 拦截器,校验规则为 StpUtil.checkLogin() 登录校验。 registry.addInterceptor(new SaInterceptor(handle -> StpUtil.checkLogin())) .addPathPatterns(UrlConstant.API + "/**") - .excludePathPatterns(UrlConstant.AUTH+"/login"); + .excludePathPatterns(UrlConstant.AUTH+"/login",UrlConstant.PERSON+"/getPersonnelRetire"); } @Override diff --git a/src/main/java/com/ydool/staff/controller/PersonnelController.java b/src/main/java/com/ydool/staff/controller/PersonnelController.java index 25211c3..3c61b92 100644 --- a/src/main/java/com/ydool/staff/controller/PersonnelController.java +++ b/src/main/java/com/ydool/staff/controller/PersonnelController.java @@ -20,6 +20,7 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -54,9 +55,10 @@ public class PersonnelController extends BaseController { @ApiImplicitParam(name = "orderBy", value = "排序顺序 降序:desc,升序:asc"), @ApiImplicitParam(name = "column", value = "排序字段 字段名"), @ApiImplicitParam(name = "current", value = "当前页"), - @ApiImplicitParam(name = "size", value = "每页条数")}) - public AjaxResult personnelList(@RequestBody SelectRequest request, String orderBy,String column){ - return personnelService.personnelList(getPage(),request,orderBy,column); + @ApiImplicitParam(name = "size", value = "每页条数"), + @ApiImplicitParam(name = "isInfo", value = "是否退休列表")}) + public AjaxResult personnelList(@RequestBody SelectRequest request, String orderBy,String column,Boolean isInfo){ + return personnelService.personnelList(getPage(),request,orderBy,column,isInfo); } @GetMapping("getById") @@ -123,6 +125,19 @@ public class PersonnelController extends BaseController { return personnelService.giveAudit(request); } + @GetMapping("getPersonnelRetire") + @ApiOperation(value = "查看近两月是否有人退休") + //@Scheduled(cron = "0 0 7 * * ?") /*每天7点更新一次*/ + //@Scheduled(cron = "0 */1 * * * ?") /*每天7点更新一次*/ + public void getPersonnelRetire(){ + personnelService.getPersonnelRetire(); + } + @GetMapping("updatePersonnelRetire") + @ApiOperation(value = "处理退休事件") + @ApiImplicitParam(name = "id",value = "人员id") + public AjaxResult updatePersonnelRetire(String id){ + return personnelService.updatePersonnelRetire(id); + } } diff --git a/src/main/java/com/ydool/staff/dto/PersonnelDto.java b/src/main/java/com/ydool/staff/dto/PersonnelDto.java index 4328a88..ef44fad 100644 --- a/src/main/java/com/ydool/staff/dto/PersonnelDto.java +++ b/src/main/java/com/ydool/staff/dto/PersonnelDto.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.time.LocalDate; import java.time.LocalDateTime; /** @@ -39,6 +40,10 @@ public class PersonnelDto { @ApiModelProperty(value = "创建时间") private LocalDateTime createdAt; + @ApiModelProperty(value = "退休时间") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private LocalDate retirementTime; + @ApiModelProperty(value = "审批状态 0 未审批 1 待审批,2已通过,3已拒绝") private Integer auditState; @@ -52,5 +57,4 @@ public class PersonnelDto { private String workState; - } diff --git a/src/main/java/com/ydool/staff/entity/Personnel.java b/src/main/java/com/ydool/staff/entity/Personnel.java index b9687eb..1ed6a4d 100644 --- a/src/main/java/com/ydool/staff/entity/Personnel.java +++ b/src/main/java/com/ydool/staff/entity/Personnel.java @@ -162,4 +162,9 @@ public class Personnel extends BaseEntity { @ApiModelProperty(value = "数据状态:0:历史数据 ,1:暂存数据,2:当前数据") private String state; + @ApiModelProperty(value = "是否退休列表") + private Boolean isInfo; + + + } diff --git a/src/main/java/com/ydool/staff/service/IPersonnelService.java b/src/main/java/com/ydool/staff/service/IPersonnelService.java index f0f557d..ee1c6ad 100644 --- a/src/main/java/com/ydool/staff/service/IPersonnelService.java +++ b/src/main/java/com/ydool/staff/service/IPersonnelService.java @@ -26,7 +26,7 @@ public interface IPersonnelService { * 人员列表 * @return */ - AjaxResult personnelList(Page page , SelectRequest request, String orderBy,String column); + AjaxResult personnelList(Page page , SelectRequest request, String orderBy, String column, Boolean isInfo); AjaxResult getById(String id,String type,String personnelType); AjaxResult personnelByExchangeList(); @@ -70,5 +70,8 @@ public interface IPersonnelService { List nameAndPath(String file, String id); + void getPersonnelRetire(); + + AjaxResult updatePersonnelRetire(String id); } 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 56e47f6..61712e3 100644 --- a/src/main/java/com/ydool/staff/service/impl/AuditServiceImpl.java +++ b/src/main/java/com/ydool/staff/service/impl/AuditServiceImpl.java @@ -252,16 +252,14 @@ public class AuditServiceImpl extends BaseService implements if (ArgsConst.PERSONNEL.equals(type)) { personnel.setAuditState(4); personnel.setAlterationSign("2"); - Places places = placesMapper.selectOne(new LambdaQueryWrapper().eq(Places::getOdd, personnel.getRecruitNumber())); - places.setStatus(false); - placesMapper.updateById(places); + personnel.setRecruitNumber("0"); workFlow(personnel.getCreatedId(), ArgsConst.PERSONNEL, personnel.getId(), "企业人员申报", false); } else if (ArgsConst.CHANGE.equals(type)) { personnel.setChangeAuditState(4); personnel.setChangeAlterationSign("2"); workFlow(personnel.getCreatedId(), ArgsConst.CHANGE, personnel.getId(), "人员变更申报", false); } - + System.out.println("personnel = " + personnel); personnelMapper.updateById(personnel); } 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 9806a34..ef34b50 100644 --- a/src/main/java/com/ydool/staff/service/impl/OrganizationServiceImpl.java +++ b/src/main/java/com/ydool/staff/service/impl/OrganizationServiceImpl.java @@ -28,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; @@ -62,6 +63,9 @@ public class OrganizationServiceImpl extends BaseService page, OrganizationSearch organizationSearch) { LambdaQueryWrapper organizationLambdaQueryWrapper = new LambdaQueryWrapper<>(); @@ -162,11 +166,19 @@ public class OrganizationServiceImpl extends BaseService dtoList = new ArrayList<>(); List places = placesMapper.selectList(Wrappers.lambdaQuery(Places.class) .eq(Places::getCompanyId, id) .eq(Places::getStatus, Boolean.FALSE) .orderByAsc(Places::getOdd)); - return AjaxResult.ok().data(BeanUtil.copyToList(places, PlacesDto.class)); + for (Places place : places) { + int count = personnelService.count(new LambdaQueryWrapper().eq(Personnel::getRecruitNumber, place.getOdd())); + if (count list = personnelPage.getRecords(); personnelPage.setRecords(list.stream().map(e -> { @@ -231,9 +234,6 @@ public class PersonnelServiceImpl extends BaseService().eq(Places::getOdd, personnel.getRecruitNumber())); - places.setStatus(true); - placesMapper.updateById(places); saveAttachment(personnelRequest.getCardFile(), ArgsConst.CARD_FILE, personnel.getId(), ArgsConst.SAVE); saveAttachment(personnelRequest.getEngageFile(), ArgsConst.ENGAGE_FILE, personnel.getId(), ArgsConst.SAVE); saveAttachment(personnelRequest.getEducationFile(), ArgsConst.EDUCATION_FILE, personnel.getId(), ArgsConst.SAVE); @@ -274,12 +274,6 @@ public class PersonnelServiceImpl extends BaseService().eq(Places::getOdd, personnel.getRecruitNumber())); - places.setStatus(false); - placesMapper.updateById(places); - } Personnel per = BeanUtil.copyProperties(updateRequest, Personnel.class); List cardFile = updateRequest.getCardFileList(); List educationFile = updateRequest.getEducationFileList(); @@ -314,11 +308,6 @@ public class PersonnelServiceImpl extends BaseService().eq(Places::getOdd, updateRequest.getRecruitNumber())); - places.setStatus(true); - placesMapper.updateById(places); - } if("audit".equals(updateRequest.getType())){ GiveAuditRequest request = new GiveAuditRequest(); String[] ids = new String[]{per.getId()}; @@ -553,14 +542,12 @@ public class PersonnelServiceImpl extends BaseService wrapper = new QueryWrapper<>(); if(ArgsConst.PERSONNEL.equals(request.getType())){ wrapper.lambda().ne(Personnel::getAuditState,"3"); }else{ - wrapper.lambda().eq(Personnel::getAuditState,"3").ne(Personnel::getState,1).ne(Personnel::getState,0); - - + wrapper.lambda().eq(isInfo,Personnel::getIsInfo,true).eq(Personnel::getAuditState,"3").ne(Personnel::getState,1).ne(Personnel::getState,0); } wrapper.lambda().eq(StrUtil.isNotBlank(request.getPersonnelType()),Personnel::getPersonnelType,request.getPersonnelType()) .eq(StrUtil.isNotBlank(request.getPresentDept()),Personnel::getPresentDept,request.getPresentDept()) @@ -803,6 +790,46 @@ public class PersonnelServiceImpl extends BaseService list = list(new LambdaQueryWrapper() + .ne(Personnel::getAlterationSign,1).eq(Personnel::getAuditState,3).eq(Personnel::getState,2) + .eq(Personnel::getWorkState,"在职").between(Personnel::getRetirementTime, nowDate, starTime).eq(Personnel::getIsInfo,false).orderByDesc(Personnel::getRetirementTime)); + if (CollectionUtil.isNotEmpty(list)){ + Config config = configMapper.selectOne(new LambdaQueryWrapper().eq(Config::getParamKey, ConfigCache.SYS_USER_LEADERSHIP)); + User user = userMapper.selectOne(new LambdaQueryWrapper().eq(User::getLoginName, config.getParamValue())); + for (Personnel personnel : list) { + if (!personnel.getIsInfo()) { + WorkFlowNotice workFlowNotice = new WorkFlowNotice(); + workFlowNotice.setStatus(Boolean.FALSE); + workFlowNotice.setUserId(user.getId()); + workFlowNotice.setTitle("企业人员"+personnel.getUserName()+"待退休"); + workFlowNotice.setFlowType(ArgsConst.RETIRE); + workFlowNotice.setFlowId(personnel.getId()); + boolean save = workFlowNoticeService.save(workFlowNotice); + if (save) { + personnel.setIsInfo(true); + updateById(personnel); + } + } + } + } + } + + @Override + public AjaxResult updatePersonnelRetire(String id) { + Personnel personnel = getById(id); + if (!"退休".equals(personnel.getWorkState())){ + return AjaxResult.fail("该人员未办理退休变更,请先办理退休变更!"); + } + personnel.setIsInfo(false); + boolean b = updateById(personnel); + return b ?AjaxResult.ok().msg("处理成功!"):AjaxResult.fail("处理失败!"); + } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 880b11a..1662874 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -16,9 +16,9 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource - url: jdbc:mysql://192.168.2.24:3306/lc_oa?useSSL=false&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF8&autoReconnect=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true + url: jdbc:mysql://localhost:3306/lc_oa?useSSL=false&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF8&autoReconnect=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true username: root - password: Wang09211108 + password: root druid: # 下面为连接池的补充设置,应用到上面所有数据源中 # 初始化大小,最小,最大