src/main/java/com/ruoyi/staff/controller/StaffJoinLeaveRecordController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,96 @@ package com.ruoyi.staff.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.basic.dto.SupplierManageDto; import com.ruoyi.basic.pojo.SupplierManage; import com.ruoyi.basic.service.ISupplierService; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.staff.pojo.StaffJoinLeaveRecord; import com.ruoyi.staff.service.IStaffJoinLeaveRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.util.List; /** * æ°å¢å ¥è/离è */ @RestController @RequestMapping("/staff/staffJoinLeaveRecord") public class StaffJoinLeaveRecordController { @Resource private IStaffJoinLeaveRecordService staffJoinLeaveRecordService; /** * æ°å¢å ¥è/离è * @param staffJoinLeaveRecord * @return */ @PostMapping("/add") public AjaxResult add(@RequestBody StaffJoinLeaveRecord staffJoinLeaveRecord) { return AjaxResult.success(staffJoinLeaveRecordService.add(staffJoinLeaveRecord)); } /** * å é¤å ¥è/离è * @param ids * @return */ @DeleteMapping("/del") public AjaxResult delStaffJoinLeaveRecord(@RequestBody List<Integer> ids) { if(CollectionUtils.isEmpty(ids)){ return AjaxResult.error("è¯·éæ©è³å°ä¸æ¡æ°æ®"); } return AjaxResult.success(staffJoinLeaveRecordService.delStaffJoinLeaveRecord(ids)); } /** * å ¥è/离è详æ * @param id * @return */ @GetMapping("/{id}") public AjaxResult staffJoinLeaveRecordDetail(@PathVariable("id") Integer id) { return AjaxResult.success(staffJoinLeaveRecordService.getById(id)); } /** * å ¥è/离èä¿®æ¹ * @param staffJoinLeaveRecord * @return */ @PostMapping("/update") public AjaxResult update(@RequestBody StaffJoinLeaveRecord staffJoinLeaveRecord) { return AjaxResult.success(staffJoinLeaveRecordService.updateStaffJoinLeaveRecord(staffJoinLeaveRecord)); } /** * å ¥è/离èå页æ¥è¯¢ * @param page * @param staffJoinLeaveRecord * @return */ @GetMapping("/listPage") public AjaxResult staffJoinLeaveRecordListPage(Page page, StaffJoinLeaveRecord staffJoinLeaveRecord) { return AjaxResult.success(staffJoinLeaveRecordService.staffJoinLeaveRecordListPage(page, staffJoinLeaveRecord)); } /** * å ¥è/离èå¯¼åº * @param response * @param staffJoinLeaveRecord */ @PostMapping("/export") public void staffJoinLeaveRecordExport(HttpServletResponse response,StaffJoinLeaveRecord staffJoinLeaveRecord) { staffJoinLeaveRecordService.staffJoinLeaveRecordExport(response, staffJoinLeaveRecord); } } src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,59 @@ package com.ruoyi.staff.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.staff.pojo.StaffJoinLeaveRecord; import com.ruoyi.staff.pojo.StaffOnJob; import com.ruoyi.staff.service.IStaffJoinLeaveRecordService; import com.ruoyi.staff.service.IStaffOnJobService; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.util.List; /** * åå·¥å°è´¦/åå管ç */ @RestController @RequestMapping("/staff/staffOnJob") public class StaffOnJobController { @Resource private IStaffOnJobService staffOnJobService; /** * å¨èåå·¥å°è´¦å页æ¥è¯¢ * @param page * @param staffOnJob * @return */ @GetMapping("/listPage") public AjaxResult staffOnJobListPage(Page page, StaffOnJob staffOnJob) { return AjaxResult.success(staffOnJobService.staffOnJobListPage(page, staffOnJob)); } /** * å¨èå工详æ * @param staffNo * @return */ @GetMapping("/staffNo") public AjaxResult staffOnJobDetail(String staffNo) { return AjaxResult.success(staffOnJobService.staffOnJobDetail(staffNo)); } /** * å¨èåå·¥å¯¼åº * @param response * @param staffOnJob */ @PostMapping("/export") public void staffOnJobExport(HttpServletResponse response,StaffOnJob staffOnJob) { staffOnJobService.staffOnJobExport(response, staffOnJob); } } src/main/java/com/ruoyi/staff/mapper/StaffJoinLeaveRecordMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,21 @@ package com.ruoyi.staff.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.basic.dto.SupplierManageDto; import com.ruoyi.basic.excel.SupplierManageExcelDto; import com.ruoyi.basic.pojo.SupplierManage; import com.ruoyi.staff.pojo.StaffJoinLeaveRecord; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; @Mapper public interface StaffJoinLeaveRecordMapper extends BaseMapper<StaffJoinLeaveRecord> { IPage<StaffJoinLeaveRecord> staffJoinLeaveRecordListPage(Page page, @Param("staffJoinLeaveRecord") StaffJoinLeaveRecord staffJoinLeaveRecord); List<StaffJoinLeaveRecord> staffJoinLeaveRecordList(@Param("staffJoinLeaveRecord") StaffJoinLeaveRecord staffJoinLeaveRecord); } src/main/java/com/ruoyi/staff/mapper/StaffOnJobMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ package com.ruoyi.staff.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.staff.pojo.StaffJoinLeaveRecord; import com.ruoyi.staff.pojo.StaffOnJob; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; @Mapper public interface StaffOnJobMapper extends BaseMapper<StaffOnJob> { IPage<StaffOnJob> staffOnJobListPage(Page page, @Param("staffOnJob") StaffOnJob staffOnJob); List<StaffOnJob> staffOnJobList(@Param("staffOnJob") StaffOnJob staffOnJob); } src/main/java/com/ruoyi/staff/pojo/StaffJoinLeaveRecord.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,156 @@ package com.ruoyi.staff.pojo; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.NonNull; import javax.validation.constraints.NotBlank; import java.io.Serializable; import java.time.LocalDateTime; import java.util.Date; /** * 人å管ç--æ°å¢å ¥è/离è * staff_join_leave_record */ @TableName(value = "staff_join_leave_record") @Data public class StaffJoinLeaveRecord implements Serializable { private static final long serialVersionUID = 1L; /** * åºå· */ @TableId(type = IdType.AUTO) private Long id; /** * ç¶æ(0:离è;1:å ¥è) */ @NotBlank(message = "åå·¥ç¶æä¸è½ä¸ºç©º!!!!!!!!") @Excel(name = "ç¶æ",readConverterExp = "0=离è,1=å ¥è") private Integer staffState; /** * åå·¥ç¼å· */ @Excel(name = "åå·¥ç¼å·") private String staffNo; /** * åå·¥å§å */ @Excel(name = "åå·¥å§å") private String staffName; /** * æ§å« */ @Excel(name = "æ§å«") private String sex; /** * ç±è´¯ */ @Excel(name = "ç±è´¯") private String nativePlace; /** * å²ä½ */ @Excel(name = "å²ä½") private String postJob; /** * å®¶åºä½å */ @Excel(name = "å®¶åºä½å") private String adress; /** * 第ä¸å¦å */ @Excel(name = "第ä¸å¦å") private String firstStudy; /** * ä¸ä¸ */ @Excel(name = "ä¸ä¸") private String profession; /** * 身份è¯å·ç */ @Excel(name = "身份è¯å·ç ") private String identityCard; /** * å¹´é¾ */ @Excel(name = "å¹´é¾") private String age; /** * èç³»çµè¯ */ @Excel(name = "èç³»çµè¯") private String phone; /** * ç´§æ¥è系人 */ @Excel(name = "ç´§æ¥è系人") private String emergencyContact; /** * ç´§æ¥è系人çµè¯ */ @Excel(name = "ç´§æ¥è系人çµè¯") private String emergencyContactPhone; /** * ååå¹´é */ @Excel(name = "ååå¹´é") private String contractTerm; /** * ååå¼å§æ¥æ */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "ååå¼å§æ¥æ", width = 30, dateFormat = "yyyy-MM-dd") private Date contractStartTime; /** * ååç»ææ¥æ */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "ååç»ææ¥æ", width = 30, dateFormat = "yyyy-MM-dd") private Date contractEndTime; @ApiModelProperty(value = "å建æ¶é´") @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; @ApiModelProperty(value = "åå»ºç¨æ·") @TableField(fill = FieldFill.INSERT) private Integer createUser; @ApiModelProperty(value = "ä¿®æ¹æ¶é´") @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; @ApiModelProperty(value = "ä¿®æ¹ç¨æ·") @TableField(fill = FieldFill.INSERT_UPDATE) private Integer updateUser; @ApiModelProperty(value = "ç§æ·ID") @TableField(fill = FieldFill.INSERT) private Long tenantId; } src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,147 @@ package com.ruoyi.staff.pojo; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; import java.util.Date; /** * 人å管ç--åå·¥å°è´¦/åå管ç * staff_on_job */ @TableName(value = "staff_on_job") @Data public class StaffOnJob implements Serializable { private static final long serialVersionUID = 1L; /** * åºå· */ @TableId(type = IdType.AUTO) private Long id; /** * ç¶æ(0:离è;1:å¨è) */ @Excel(name = "ç¶æ",readConverterExp = "0=离è,1=å¨è") private Integer staffState; /** * åå·¥ç¼å· */ @Excel(name = "åå·¥ç¼å·") private String staffNo; /** * åå·¥å§å */ @Excel(name = "åå·¥å§å") private String staffName; /** * æ§å« */ @Excel(name = "æ§å«") private String sex; /** * ç±è´¯ */ @Excel(name = "ç±è´¯") private String nativePlace; /** * å²ä½ */ @Excel(name = "å²ä½") private String postJob; /** * å®¶åºä½å */ @Excel(name = "å®¶åºä½å") private String adress; /** * 第ä¸å¦å */ @Excel(name = "第ä¸å¦å") private String firstStudy; /** * ä¸ä¸ */ @Excel(name = "ä¸ä¸") private String profession; /** * 身份è¯å·ç */ @Excel(name = "身份è¯å·ç ") private String identityCard; /** * å¹´é¾ */ @Excel(name = "å¹´é¾") private String age; /** * èç³»çµè¯ */ @Excel(name = "èç³»çµè¯") private String phone; /** * ç´§æ¥è系人 */ @Excel(name = "ç´§æ¥è系人") private String emergencyContact; /** * ç´§æ¥è系人çµè¯ */ @Excel(name = "ç´§æ¥è系人çµè¯") private String emergencyContactPhone; /** * ååå¹´é */ @Excel(name = "ååå¹´é") private String contractTerm; /** * ååå°ææ¥æ */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "ååå°ææ¥æ", width = 30, dateFormat = "yyyy-MM-dd") private Date contractExpireTime; @ApiModelProperty(value = "å建æ¶é´") @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; @ApiModelProperty(value = "åå»ºç¨æ·") @TableField(fill = FieldFill.INSERT) private Integer createUser; @ApiModelProperty(value = "ä¿®æ¹æ¶é´") @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; @ApiModelProperty(value = "ä¿®æ¹ç¨æ·") @TableField(fill = FieldFill.INSERT_UPDATE) private Integer updateUser; @ApiModelProperty(value = "ç§æ·ID") @TableField(fill = FieldFill.INSERT) private Long tenantId; } src/main/java/com/ruoyi/staff/service/IStaffJoinLeaveRecordService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,26 @@ package com.ruoyi.staff.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.basic.dto.SupplierManageDto; import com.ruoyi.basic.pojo.SupplierManage; import com.ruoyi.staff.pojo.StaffJoinLeaveRecord; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.List; public interface IStaffJoinLeaveRecordService extends IService<StaffJoinLeaveRecord> { IPage<StaffJoinLeaveRecord> staffJoinLeaveRecordListPage(Page page, StaffJoinLeaveRecord staffJoinLeaveRecord); void staffJoinLeaveRecordExport(HttpServletResponse response, StaffJoinLeaveRecord staffJoinLeaveRecord); int add(StaffJoinLeaveRecord staffJoinLeaveRecord); int delStaffJoinLeaveRecord(List<Integer> ids); int updateStaffJoinLeaveRecord(StaffJoinLeaveRecord staffJoinLeaveRecord); } src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ package com.ruoyi.staff.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.staff.pojo.StaffJoinLeaveRecord; import com.ruoyi.staff.pojo.StaffOnJob; import javax.servlet.http.HttpServletResponse; import java.util.List; public interface IStaffOnJobService extends IService<StaffOnJob> { IPage<StaffOnJob> staffOnJobListPage(Page page, StaffOnJob staffOnJob); List<StaffJoinLeaveRecord> staffOnJobDetail(String staffNo); void staffOnJobExport(HttpServletResponse response, StaffOnJob staffOnJob); } src/main/java/com/ruoyi/staff/service/impl/StaffJoinLeaveRecordServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,169 @@ package com.ruoyi.staff.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.staff.mapper.StaffJoinLeaveRecordMapper; import com.ruoyi.staff.mapper.StaffOnJobMapper; import com.ruoyi.staff.pojo.StaffJoinLeaveRecord; import com.ruoyi.staff.pojo.StaffOnJob; import com.ruoyi.staff.service.IStaffJoinLeaveRecordService; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import javax.servlet.ServletException; import javax.servlet.http.HttpServletResponse; import java.util.*; import java.util.function.Function; @Service @AllArgsConstructor @Transactional(rollbackFor = Exception.class) public class StaffJoinLeaveRecordServiceImpl extends ServiceImpl<StaffJoinLeaveRecordMapper, StaffJoinLeaveRecord> implements IStaffJoinLeaveRecordService { private StaffJoinLeaveRecordMapper staffJoinLeaveRecordMapper; private StaffOnJobMapper staffOnJobMapper; //å页æ¥è¯¢ @Override public IPage<StaffJoinLeaveRecord> staffJoinLeaveRecordListPage(Page page, StaffJoinLeaveRecord staffJoinLeaveRecord) { return staffJoinLeaveRecordMapper.staffJoinLeaveRecordListPage(page,staffJoinLeaveRecord); } //å¯¼åº @Override public void staffJoinLeaveRecordExport(HttpServletResponse response, StaffJoinLeaveRecord staffJoinLeaveRecord) { List<StaffJoinLeaveRecord> staffJoinLeaveRecords =staffJoinLeaveRecordMapper.staffJoinLeaveRecordList(staffJoinLeaveRecord); ExcelUtil<StaffJoinLeaveRecord> util = new ExcelUtil<StaffJoinLeaveRecord>(StaffJoinLeaveRecord.class); util.exportExcel(response, staffJoinLeaveRecords, staffJoinLeaveRecord.getStaffState()==0?"å工离è":"åå·¥å ¥è"+"导åº"); } //æ°å¢å ¥è/离è @Override public int add(StaffJoinLeaveRecord staffJoinLeaveRecord) { String[] ignoreProperties = {"id"};//æé¤id屿§ List<StaffOnJob> staffOnJobs = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery().eq(StaffOnJob::getStaffNo, staffJoinLeaveRecord.getStaffNo())); if (staffJoinLeaveRecord.getStaffState()==1){ /*å ¥è*/ //(æ ¹æ®åå·¥ç¼å·å¤ææ¯å¦å·²ç»æ°å¢å°å¨è表éé¢,å¦æå·²ç»æå°±æ´æ°,没æå°±æ°å¢) if (staffOnJobs.size()>0){ StaffOnJob staffOnJob = staffOnJobs.get(0); //å æ¯è¾å°ææ¥æ,è¿ééç¨å°ææ¥ææä¹ ç if (staffJoinLeaveRecord.getContractEndTime().compareTo(staffOnJob.getContractExpireTime())>0) { BeanUtils.copyProperties(staffJoinLeaveRecord,staffOnJob,ignoreProperties); staffOnJobMapper.updateById(staffOnJob); } }else { StaffOnJob staffOnJob = new StaffOnJob(); BeanUtils.copyProperties(staffJoinLeaveRecord,staffOnJob,ignoreProperties); staffOnJob.setContractExpireTime(staffJoinLeaveRecord.getContractEndTime()); staffOnJobMapper.insert(staffOnJob); } }else { /*离è*/ //æ ¹æ®åå·¥ç¼å·æ¾å°å¯¹åºçæ°æ®å°ç¶æåæ´ if (staffOnJobs.size()>0){ StaffOnJob staffOnJob = staffOnJobs.get(0); staffOnJob.setStaffState(staffJoinLeaveRecord.getStaffState()); staffOnJobMapper.updateById(staffOnJob); }else { throw new BaseException("æ²¡ææ¾å°"+staffJoinLeaveRecord.getStaffNo()+"ç¼å·çåå·¥,æ æ³æ°å¢ç¦»è!!!"); } } return staffJoinLeaveRecordMapper.insert(staffJoinLeaveRecord); } //å é¤å ¥è/离è @Override public int delStaffJoinLeaveRecord(List<Integer> ids) { List<StaffJoinLeaveRecord> staffJoinLeaveRecords = staffJoinLeaveRecordMapper.selectBatchIds(ids); for (StaffJoinLeaveRecord staffJoinLeaveRecord : staffJoinLeaveRecords) { //å 夿æ¯å ¥èè¿æ¯ç¦»è if (staffJoinLeaveRecord.getStaffState()==1){ /*å ¥è*/ //妿æ¯å ¥è,éè¦å æ ¹æ®åå·¥ç¼å·å¤æè¯¥åå·¥æ¯å¦è¿æå ¶ä»å ¥èä¿¡æ¯ List<StaffJoinLeaveRecord> joinLeaveRecords = staffJoinLeaveRecordMapper.selectList(Wrappers.<StaffJoinLeaveRecord>lambdaQuery() .eq(StaffJoinLeaveRecord::getStaffState, 1) .eq(StaffJoinLeaveRecord::getStaffNo, staffJoinLeaveRecord.getStaffNo()) .ne(StaffJoinLeaveRecord::getId, staffJoinLeaveRecord.getId())); if (joinLeaveRecords.size()>0){ //è¿éè¦å¤æè¯¥åå·¥æ¯å¦æç¦»èä¿¡æ¯ List<StaffJoinLeaveRecord> leaveRecords = staffJoinLeaveRecordMapper.selectList(Wrappers.<StaffJoinLeaveRecord>lambdaQuery() .eq(StaffJoinLeaveRecord::getStaffState, 0) .eq(StaffJoinLeaveRecord::getStaffNo, staffJoinLeaveRecord.getStaffNo())); // 妿æé£å¨èè¡¨ä» åæ´æ°ä¸å é¤,å¦ææ²¡æå ¶ä»å ¥èä¿¡æ¯,é£ä¹å¨è表é忥å é¤ if (leaveRecords.size()>0){ //妿æç¦»èä¿¡æ¯,å¤æç¦»èæ°éåå ¥èæ°éæ¯ç«,å¦æå ¥èæ°é大äºç¦»è if (joinLeaveRecords.size()>leaveRecords.size()){ //该åå·¥å°±è¿æ¯å¨è //å æ¯è¾å°ææ¥æ,è¿ééç¨å°ææ¥ææä¹ ç Optional<StaffJoinLeaveRecord> max = joinLeaveRecords.stream().max(Comparator.comparing(StaffJoinLeaveRecord::getContractEndTime)); staffOnJobMapper.update(null,Wrappers.<StaffOnJob>lambdaUpdate() .eq(StaffOnJob::getStaffNo, staffJoinLeaveRecord.getStaffNo()) .set(StaffOnJob::getContractTerm, max.get().getContractTerm()) .set(StaffOnJob::getContractExpireTime, max.get().getContractEndTime())); }else { //该åå·¥å±äºç¦»è staffOnJobMapper.update(null,Wrappers.<StaffOnJob>lambdaUpdate() .eq(StaffOnJob::getStaffNo, staffJoinLeaveRecord.getStaffNo()) .set(StaffOnJob::getStaffState, 0)); } }else { //å¦ææ²¡æç¦»èä¿¡æ¯é£ä¹å°±æ¯è¾å°ææ¥æ,è¿ééç¨å°ææ¥ææä¹ ç Optional<StaffJoinLeaveRecord> max = joinLeaveRecords.stream().max(Comparator.comparing(StaffJoinLeaveRecord::getContractEndTime)); staffOnJobMapper.update(null,Wrappers.<StaffOnJob>lambdaUpdate() .eq(StaffOnJob::getStaffNo, staffJoinLeaveRecord.getStaffNo()) .set(StaffOnJob::getContractTerm, max.get().getContractTerm()) .set(StaffOnJob::getContractExpireTime, max.get().getContractEndTime())); } }else { staffOnJobMapper.delete(Wrappers.<StaffOnJob>lambdaQuery().eq(StaffOnJob::getStaffNo,staffJoinLeaveRecord.getStaffNo())); } }else { /*离è*/ //å æ¥è¯¢å¨è表æ¯å¦æè¿ä¸ª,妿æ,å°±å°è¯¥åå·¥çç¶æåæ´ä¸ºå¨è List<StaffOnJob> staffOnJobs = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery().eq(StaffOnJob::getStaffNo, staffJoinLeaveRecord.getStaffNo())); if (staffOnJobs.size()>0){ StaffOnJob staffOnJob = staffOnJobs.get(0); staffOnJob.setStaffState(1); staffOnJobMapper.updateById(staffOnJob); }else { throw new BaseException("æ²¡ææ¾å°"+staffJoinLeaveRecord.getStaffNo()+"ç¼å·çåå·¥,è¯·æ£æ¥æ¯å¦æèæ°æ®!!!"); } } staffJoinLeaveRecordMapper.deleteById(staffJoinLeaveRecord); } return 0; } //ä¿®æ¹å ¥è/离è @Override public int updateStaffJoinLeaveRecord(StaffJoinLeaveRecord staffJoinLeaveRecord) { String[] ignoreProperties = {"id"};//æé¤id屿§ List<StaffOnJob> staffOnJobs = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery().eq(StaffOnJob::getStaffNo, staffJoinLeaveRecord.getStaffNo())); if (staffJoinLeaveRecord.getStaffState()==1){ /*å ¥è*/ StaffOnJob job = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery() .eq(StaffOnJob::getStaffNo, staffJoinLeaveRecord.getStaffNo())).get(0); //å¦ææ´æ¹çååå°ææ¶é´æ´ä¹ åæ´æ°,å¦ææ²¡æå°±ä¸ç¨æ´æ° if (staffJoinLeaveRecord.getContractEndTime().compareTo(job.getContractExpireTime())>0) { BeanUtils.copyProperties(staffJoinLeaveRecord,job,ignoreProperties); staffOnJobMapper.updateById(job); } }else { /*离è*/ //离èçç¼è¾ä¸ä¼å½±åå¨è表 } return staffJoinLeaveRecordMapper.updateById(staffJoinLeaveRecord); } } src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,55 @@ package com.ruoyi.staff.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.staff.mapper.StaffJoinLeaveRecordMapper; import com.ruoyi.staff.mapper.StaffOnJobMapper; import com.ruoyi.staff.pojo.StaffJoinLeaveRecord; import com.ruoyi.staff.pojo.StaffOnJob; import com.ruoyi.staff.service.IStaffJoinLeaveRecordService; import com.ruoyi.staff.service.IStaffOnJobService; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.util.List; @AllArgsConstructor @Service public class StaffOnJobServiceImpl extends ServiceImpl<StaffOnJobMapper, StaffOnJob> implements IStaffOnJobService { private StaffOnJobMapper staffOnJobMapper; private StaffJoinLeaveRecordMapper staffJoinLeaveRecordMapper; //å¨èåå·¥å°è´¦å页æ¥è¯¢ @Override public IPage<StaffOnJob> staffOnJobListPage(Page page, StaffOnJob staffOnJob) { return staffOnJobMapper.staffOnJobListPage(page,staffOnJob); } //å¨èå工详æ @Override public List<StaffJoinLeaveRecord> staffOnJobDetail(String staffNo) { return staffJoinLeaveRecordMapper.selectList(Wrappers.<StaffJoinLeaveRecord>lambdaQuery() .eq(StaffJoinLeaveRecord::getStaffState,1) .eq(StaffJoinLeaveRecord::getStaffNo,staffNo)); } //å¨èåå·¥å¯¼åº @Override public void staffOnJobExport(HttpServletResponse response, StaffOnJob staffOnJob) { List<StaffOnJob> staffOnJobs = staffOnJobMapper.staffOnJobList(staffOnJob); ExcelUtil<StaffOnJob> util = new ExcelUtil<StaffOnJob>(StaffOnJob.class); util.exportExcel(response, staffOnJobs, "å¨èåå·¥å°è´¦å¯¼åº"); } } src/main/java/com/ruoyi/staff_management/controller/RyglAddEmployeeController.java
ÎļþÒÑɾ³ý src/main/java/com/ruoyi/staff_management/domain/RyglAddEmployee.java
ÎļþÒÑɾ³ý src/main/java/com/ruoyi/staff_management/mapper/RyglAddEmployeeMapper.java
ÎļþÒÑɾ³ý src/main/java/com/ruoyi/staff_management/service/RyglAddEmployeeService.java
ÎļþÒÑɾ³ý src/main/java/com/ruoyi/staff_management/service/impl/RyglAddEmployeeServiceImpl.java
ÎļþÒÑɾ³ý src/main/resources/mapper/staff/StaffJoinLeaveRecordMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,25 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.ruoyi.staff.mapper.StaffJoinLeaveRecordMapper"> <select id="staffJoinLeaveRecordListPage" resultType="com.ruoyi.staff.pojo.StaffJoinLeaveRecord"> SELECT * FROM staff_join_leave_record where staff_state = #{staffJoinLeaveRecord.staffState} <if test="staffJoinLeaveRecord.staffName != null and staffJoinLeaveRecord.staffName != '' "> AND staff_name LIKE CONCAT('%',#{staffJoinLeaveRecord.staffName},'%') </if> </select> <select id="staffJoinLeaveRecordList" resultType="com.ruoyi.staff.pojo.StaffJoinLeaveRecord"> SELECT * FROM staff_join_leave_record where staff_state = #{staffJoinLeaveRecord.staffState} <if test="staffJoinLeaveRecord.staffName != null and staffJoinLeaveRecord.staffName != '' "> AND staff_name LIKE CONCAT('%',#{staffJoinLeaveRecord.staffName},'%') </if> </select> </mapper> src/main/resources/mapper/staff/StaffOnJobMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,28 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.ruoyi.staff.mapper.StaffOnJobMapper"> <select id="staffOnJobListPage" resultType="com.ruoyi.staff.pojo.StaffOnJob"> SELECT * FROM staff_on_job where 1=1 <if test="staffOnJob.staffState != null and staffOnJob.staffState != '' "> AND staff_state = #{staffOnJob.staffState} </if> <if test="staffOnJob.staffName != null and staffOnJob.staffName != '' "> AND staff_name LIKE CONCAT('%',#{staffOnJob.staffName},'%') </if> </select> <select id="staffOnJobList" resultType="com.ruoyi.staff.pojo.StaffOnJob"> SELECT * FROM staff_on_job where 1=1 <if test="staffOnJob.staffState != null and staffOnJob.staffState != '' "> AND staff_state = #{staffOnJob.staffState} </if> <if test="staffOnJob.staffName != null and staffOnJob.staffName != '' "> AND staff_name LIKE CONCAT('%',#{staffOnJob.staffName},'%') </if> </select> </mapper> src/main/resources/mapper/staff_management/RyglAddEmployeeMapper.xml
ÎļþÒÑɾ³ý