main-business/pom.xml
@@ -16,6 +16,19 @@ <groupId>com.ruoyi</groupId> <artifactId>ruoyi-common</artifactId> </dependency> <!-- 鲿¢è¿å ¥swagger页颿¥ç±»å转æ¢éè¯¯ï¼æé¤3.0.0ä¸çå¼ç¨ï¼æå¨å¢å 1.6.2çæ¬ --> <dependency> <groupId>io.swagger</groupId> <artifactId>swagger-models</artifactId> <version>1.6.2</version> </dependency> <!-- excelå·¥å · --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.3</version> </dependency> <!-- æ ¸å¿æ¨¡å--> <dependency> main-business/src/main/java/com/ruoyi/business/annotation/Anonymous.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,15 @@ package com.ruoyi.business.annotation; import java.lang.annotation.*; /** * å¿å访é®ä¸é´ææ³¨è§£ * * @author ruoyi */ @Target({ ElementType.METHOD, ElementType.TYPE }) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Anonymous { } main-business/src/main/java/com/ruoyi/business/annotation/DataScope.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,29 @@ package com.ruoyi.business.annotation; import java.lang.annotation.*; /** * æ°æ®æéè¿æ»¤æ³¨è§£ * * @author ruoyi */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface DataScope { /** * é¨é¨è¡¨çå«å */ public String deptAlias() default ""; /** * ç¨æ·è¡¨çå«å */ public String userAlias() default ""; /** * æéå符ï¼ç¨äºå¤ä¸ªè§è²å¹é 符åè¦æ±çæéï¼é»è®¤æ ¹æ®æé注解@ssè·åï¼å¤ä¸ªæéç¨éå·åé弿¥ */ public String permission() default ""; } main-business/src/main/java/com/ruoyi/business/annotation/Excel.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,198 @@ package com.ruoyi.business.annotation; import com.ruoyi.common.utils.poi.ExcelHandlerAdapter; import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.usermodel.IndexedColors; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.math.BigDecimal; /** * èªå®ä¹å¯¼åºExcelæ°æ®æ³¨è§£ * * @author ruoyi */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface Excel { /** * å¯¼åºæ¶å¨excelä¸æåº */ public int sort() default Integer.MAX_VALUE; /** * 导åºå°Excelä¸çåå. */ public String name() default ""; /** * æ¥ææ ¼å¼, å¦: yyyy-MM-dd */ public String dateFormat() default ""; /** * 妿æ¯åå ¸ç±»åï¼è¯·è®¾ç½®åå ¸çtypeå¼ (å¦: sys_user_sex) */ public String dictType() default ""; /** * 读åå å®¹è½¬è¡¨è¾¾å¼ (å¦: 0=ç·,1=女,2=æªç¥) */ public String readConverterExp() default ""; /** * åé符ï¼è¯»åå符串ç»å 容 */ public String separator() default ","; /** * BigDecimal 精度 é»è®¤:-1(é»è®¤ä¸å¼å¯BigDecimalæ ¼å¼å) */ public int scale() default -1; /** * BigDecimal èå ¥è§å é»è®¤:BigDecimal.ROUND_HALF_EVEN */ public int roundingMode() default BigDecimal.ROUND_HALF_EVEN; /** * å¯¼åºæ¶å¨excel䏿¯ä¸ªåçé«åº¦ */ public double height() default 14; /** * å¯¼åºæ¶å¨excel䏿¯ä¸ªåç宽度 */ public double width() default 16; /** * æååç¼,å¦% 90 åæ90% */ public String suffix() default ""; /** * å½å¼ä¸ºç©ºæ¶,åæ®µçé»è®¤å¼ */ public String defaultValue() default ""; /** * æç¤ºä¿¡æ¯ */ public String prompt() default ""; /** * æ¯å¦å 许å 容æ¢è¡ */ public boolean wrapText() default false; /** * 设置åªè½éæ©ä¸è½è¾å ¥çåå 容. */ public String[] combo() default {}; /** * æ¯å¦ä»åå ¸è¯»æ°æ®å°combo,é»è®¤ä¸è¯»å,å¦è¯»åéè¦è®¾ç½®dictType注解. */ public boolean comboReadDict() default false; /** * æ¯å¦éè¦çºµååå¹¶åå æ ¼,åºå¯¹éæ±:嫿listéååå æ ¼) */ public boolean needMerge() default false; /** * æ¯å¦å¯¼åºæ°æ®,åºå¯¹éæ±:ææ¶æä»¬éè¦å¯¼åºä¸ä»½æ¨¡æ¿,è¿æ¯æ é¢éè¦ä½å 容éè¦ç¨æ·æå·¥å¡«å. */ public boolean isExport() default true; /** * å¦ä¸ä¸ªç±»ä¸ç屿§åç§°,æ¯æå¤çº§è·å,以尿°ç¹éå¼ */ public String targetAttr() default ""; /** * æ¯å¦èªå¨ç»è®¡æ°æ®,卿å追å ä¸è¡ç»è®¡æ°æ®æ»å */ public boolean isStatistics() default false; /** * 导åºç±»åï¼0æ°å 1å符串 2å¾çï¼ */ public ColumnType cellType() default ColumnType.STRING; /** * 导åºåå¤´èæ¯é¢è² */ public IndexedColors headerBackgroundColor() default IndexedColors.GREY_50_PERCENT; /** * 导åºå头åä½é¢è² */ public IndexedColors headerColor() default IndexedColors.WHITE; /** * 导åºåå æ ¼èæ¯é¢è² */ public IndexedColors backgroundColor() default IndexedColors.WHITE; /** * 导åºåå æ ¼åä½é¢è² */ public IndexedColors color() default IndexedColors.BLACK; /** * 导åºåæ®µå¯¹é½æ¹å¼ */ public HorizontalAlignment align() default HorizontalAlignment.CENTER; /** * èªå®ä¹æ°æ®å¤çå¨ */ public Class<?> handler() default ExcelHandlerAdapter.class; /** * èªå®ä¹æ°æ®å¤çå¨åæ° */ public String[] args() default {}; /** * åæ®µç±»åï¼0ï¼å¯¼åºå¯¼å ¥ï¼1ï¼ä» 导åºï¼2ï¼ä» å¯¼å ¥ï¼ */ Type type() default Type.ALL; public enum Type { ALL(0), EXPORT(1), IMPORT(2); private final int value; Type(int value) { this.value = value; } public int value() { return this.value; } } public enum ColumnType { NUMERIC(0), STRING(1), IMAGE(2), TEXT(3); private final int value; ColumnType(int value) { this.value = value; } public int value() { return this.value; } } } main-business/src/main/java/com/ruoyi/business/annotation/Excels.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ package com.ruoyi.business.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * Excel注解é * * @author ruoyi */ @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface Excels { public Excel[] value(); } main-business/src/main/java/com/ruoyi/business/controller/CompensationPerformanceController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,64 @@ package com.ruoyi.business.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.business.entity.CompensationPerformance; import com.ruoyi.business.service.CompensationPerformanceService; import com.ruoyi.common.core.domain.R; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import java.util.List; /** * @author :yys * @date : 2025/8/8 9:56 */ @RestController @Api(tags = "èªé ¬ç»©æ") @AllArgsConstructor @RequestMapping("/compensationPerformance") public class CompensationPerformanceController{ @Autowired private CompensationPerformanceService compensationPerformanceService; @GetMapping("/listPage") @ApiOperation("èªé ¬ç»©æ-å页æ¥è¯¢") public R listPage(Page page, CompensationPerformance compensationPerformance){ IPage<CompensationPerformance> listPage = compensationPerformanceService.listPage(page, compensationPerformance); return R.ok(listPage); } @PostMapping("/add") @ApiOperation("èªé ¬ç»©æ-æ·»å ") @Transactional(rollbackFor = Exception.class) public R add(@RequestBody CompensationPerformance compensationPerformance){ boolean save = compensationPerformanceService.save(compensationPerformance); return save ? R.ok("æ·»å æå") : R.fail("æ·»å 失败"); } @PostMapping("/update") @ApiOperation("èªé ¬ç»©æ-ä¿®æ¹") @Transactional(rollbackFor = Exception.class) public R update(@RequestBody CompensationPerformance compensationPerformance){ boolean update = compensationPerformanceService.updateById(compensationPerformance); return update ? R.ok("ä¿®æ¹æå") : R.fail("ä¿®æ¹å¤±è´¥"); } @DeleteMapping("/delete") @ApiOperation("èªé ¬ç»©æ-å é¤") @Transactional(rollbackFor = Exception.class) public R delete(@RequestBody List<Long> ids){ if(CollectionUtils.isEmpty(ids)) return R.fail("è¯·ä¼ å ¥è¦å é¤çID"); boolean delete = compensationPerformanceService.removeBatchByIds(ids); return delete ? R.ok("å 餿å") : R.fail("å é¤å¤±è´¥"); } } main-business/src/main/java/com/ruoyi/business/controller/StaffJoinLeaveRecordController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,90 @@ package com.ruoyi.business.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.business.entity.StaffJoinLeaveRecord; import com.ruoyi.business.service.IStaffJoinLeaveRecordService; import com.ruoyi.common.core.domain.AjaxResult; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; 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); } } main-business/src/main/java/com/ruoyi/business/controller/StaffOnJobController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,78 @@ package com.ruoyi.business.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.business.entity.StaffOnJob; import com.ruoyi.business.service.IStaffOnJobService; import com.ruoyi.common.core.domain.AjaxResult; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; /** * åå·¥å°è´¦/åå管ç */ @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)); } /** * å¨èå工䏿(æ°å¢ç¦»èç¨) * @return */ @GetMapping("/list") public AjaxResult staffOnJobList() { return AjaxResult.success(staffOnJobService.staffOnJobList()); } /** * å¨èå工详æ * @param staffNo * @return */ @GetMapping("/staffNo") public AjaxResult staffOnJobDetail(String staffNo) { return AjaxResult.success(staffOnJobService.staffOnJobDetail(staffNo)); } /** * å¨èåå·¥å¯¼å ¥ */ @PostMapping("/import") public AjaxResult importData(@RequestPart("file") MultipartFile file) { Boolean b = staffOnJobService.importData(file); if (b) { return AjaxResult.success("å¯¼å ¥æå"); } return AjaxResult.error("å¯¼å ¥å¤±è´¥"); } /** * å¨èåå·¥å¯¼åº * @param response * @param staffOnJob */ @PostMapping("/export") public void staffOnJobExport(HttpServletResponse response, StaffOnJob staffOnJob) { staffOnJobService.staffOnJobExport(response, staffOnJob); } } main-business/src/main/java/com/ruoyi/business/dto/DateQueryDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,24 @@ package com.ruoyi.business.dto; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @author :yys * @date : 2025/7/23 11:31 */ @Data @ApiModel public class DateQueryDto { @ApiModelProperty(value = "å¼å§æ¶é´") @TableField(exist = false) private String entryDateStart; @ApiModelProperty(value = "ç»ææ¶é´") @TableField(exist = false) private String entryDateEnd; } main-business/src/main/java/com/ruoyi/business/entity/CompensationPerformance.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,230 @@ package com.ruoyi.business.entity; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.business.annotation.Excel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; /** * @author :yys * @date : 2025/8/8 9:40 */ @Data @TableName("compensation_performance") @ApiModel public class CompensationPerformance { private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.AUTO) private Long id; /** * åå·¥id */ @ApiModelProperty("åå·¥id") @Excel(name = "åå·¥id") private Long staffId; /** * å§å */ @ApiModelProperty("å§å") @Excel(name = "å§å") private String name; /** * èªèµæä»½(æ¥è¯¢) */ @ApiModelProperty("èªèµæä»½(æ¥è¯¢)") @TableField(exist = false) private String payDateStr; /** * èªèµæä»½ */ @ApiModelProperty("èªèµæä»½") @Excel(name = "èªèµæä»½", dateFormat = "yyyy-MM", width = 30) @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM") private Date payDate; /** * åºåºå¤å¤©æ° */ @ApiModelProperty("åºåºå¤å¤©æ°") @Excel(name = "åºåºå¤å¤©æ°") private BigDecimal shouldAttendedNum; /** * å®é åºå¤å¤©æ° */ @ApiModelProperty("å®é åºå¤å¤©æ°") @Excel(name = "å®é åºå¤å¤©æ°") private BigDecimal actualAttendedNum; /** * åºæ¬å·¥èµ */ @ApiModelProperty("åºæ¬å·¥èµ") @Excel(name = "åºæ¬å·¥èµ") private BigDecimal basicSalary; /** * å²ä½å·¥èµ */ @ApiModelProperty("å²ä½å·¥èµ") @Excel(name = "å²ä½å·¥èµ") private BigDecimal postSalary; /** * å ¥ç¦»èç¼ºå¤æ£æ¬¾ */ @ApiModelProperty("å ¥ç¦»èç¼ºå¤æ£æ¬¾") @Excel(name = "å ¥ç¦»èç¼ºå¤æ£æ¬¾") private BigDecimal deductionAbsenteeism; /** * ç åæ£æ¬¾ */ @ApiModelProperty("ç åæ£æ¬¾") @Excel(name = "ç åæ£æ¬¾") private BigDecimal sickLeaveDeductions; /** * äºåæ£æ¬¾ */ @ApiModelProperty("äºåæ£æ¬¾") @Excel(name = "äºåæ£æ¬¾") private BigDecimal deductionPersonalLeave; /** * å¿è®°æå¡æ£æ¬¾ */ @ApiModelProperty("å¿è®°æå¡æ£æ¬¾") @Excel(name = "å¿è®°æå¡æ£æ¬¾") private BigDecimal forgetClockDeduct; /** * 绩æå¾å */ @ApiModelProperty("绩æå¾å") @Excel(name = "绩æå¾å") private BigDecimal performanceScore; /** * 绩æå·¥èµ */ @ApiModelProperty("绩æå·¥èµ") @Excel(name = "绩æå·¥èµ") private BigDecimal performancePay; /** * åºåå计 */ @ApiModelProperty("åºåå计") @Excel(name = "åºåå计") private BigDecimal payableWages; /** * 社ä¿ä¸ªäºº */ @ApiModelProperty("社ä¿ä¸ªäºº") @Excel(name = "社ä¿ä¸ªäºº") private BigDecimal socialSecurityIndividuals; /** * 社ä¿å ¬å¸ */ @ApiModelProperty("社ä¿å ¬å¸") @Excel(name = "社ä¿å ¬å¸") private BigDecimal socialSecurityCompanies; /** * 社ä¿å计 */ @ApiModelProperty("社ä¿å计") @Excel(name = "社ä¿å计") private BigDecimal socialSecurityTotal; /** * å ¬ç§¯éå计 */ @ApiModelProperty("å ¬ç§¯éå计") @Excel(name = "å ¬ç§¯éå计") private BigDecimal providentFundTotal; /** * å ¬ç§¯éå ¬å¸ */ @ApiModelProperty("å ¬ç§¯éå ¬å¸") @Excel(name = "å ¬ç§¯éå ¬å¸") private BigDecimal providentFundCompany; /** * å ¬ç§¯é个人 */ @ApiModelProperty("å ¬ç§¯é个人") @Excel(name = "å ¬ç§¯é个人") private BigDecimal providentFundIndividuals; /** * åºç¨å·¥èµ */ @ApiModelProperty("åºç¨å·¥èµ") @Excel(name = "åºç¨å·¥èµ") private BigDecimal taxableWaget; /** * 个人æå¾ç¨ */ @ApiModelProperty("个人æå¾ç¨") @Excel(name = "个人æå¾ç¨") private BigDecimal personalIncomeTax; /** * å®åå·¥èµ */ @ApiModelProperty("å®åå·¥èµ") @Excel(name = "å®åå·¥èµ") private BigDecimal actualWages; /** * å建è */ @TableField(fill = FieldFill.INSERT) private Integer createUser; /** * å建æ¶é´ */ @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; /** * ä¿®æ¹è */ @TableField(fill = FieldFill.INSERT_UPDATE) private Integer updateUser; /** * ä¿®æ¹æ¶é´ */ @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; /** * ç§æ·ID */ @TableField(fill = FieldFill.INSERT) private Long tenantId; } main-business/src/main/java/com/ruoyi/business/entity/StaffJoinLeaveRecord.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,156 @@ package com.ruoyi.business.entity; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.business.annotation.Excel; import com.ruoyi.business.dto.DateQueryDto; import io.swagger.annotations.ApiModelProperty; import jakarta.validation.constraints.NotBlank; import lombok.Data; 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 extends DateQueryDto 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; } main-business/src/main/java/com/ruoyi/business/entity/StaffOnJob.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,148 @@ package com.ruoyi.business.entity; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.business.dto.DateQueryDto; import com.ruoyi.business.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 extends DateQueryDto 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 = "åå·¥ç¼å·", type = Excel.Type.EXPORT, cellType = Excel.ColumnType.STRING) 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; } main-business/src/main/java/com/ruoyi/business/mapper/CompensationPerformanceMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ package com.ruoyi.business.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.business.entity.CompensationPerformance; import org.apache.ibatis.annotations.Param; /** * @author :yys * @date : 2025/8/8 9:54 */ public interface CompensationPerformanceMapper extends BaseMapper<CompensationPerformance> { /** * å页æ¥è¯¢ * * @param page * @param compensationPerformance * @return */ IPage<CompensationPerformance> listPage(Page page,@Param("req") CompensationPerformance compensationPerformance); } main-business/src/main/java/com/ruoyi/business/mapper/StaffJoinLeaveRecordMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.ruoyi.business.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.business.entity.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); List<StaffJoinLeaveRecord> staffOnJobList(); } main-business/src/main/java/com/ruoyi/business/mapper/StaffOnJobMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ package com.ruoyi.business.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.business.entity.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); } main-business/src/main/java/com/ruoyi/business/service/CompensationPerformanceService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.ruoyi.business.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.business.entity.CompensationPerformance; /** * @author :yys * @date : 2025/8/8 9:55 */ public interface CompensationPerformanceService extends IService<CompensationPerformance> { /** * å页æ¥è¯¢ * * @param page * @param compensationPerformance * @return */ IPage<CompensationPerformance> listPage(Page page, CompensationPerformance compensationPerformance); } main-business/src/main/java/com/ruoyi/business/service/IStaffJoinLeaveRecordService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ package com.ruoyi.business.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.business.entity.StaffJoinLeaveRecord; import jakarta.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); } main-business/src/main/java/com/ruoyi/business/service/IStaffOnJobService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ package com.ruoyi.business.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.business.entity.StaffJoinLeaveRecord; import com.ruoyi.business.entity.StaffOnJob; import jakarta.servlet.http.HttpServletResponse; import org.springframework.web.multipart.MultipartFile; 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); List<StaffJoinLeaveRecord> staffOnJobList(); Boolean importData(MultipartFile file); } main-business/src/main/java/com/ruoyi/business/service/impl/CompensationPerformanceServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,30 @@ package com.ruoyi.business.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.business.mapper.CompensationPerformanceMapper; import com.ruoyi.business.entity.CompensationPerformance; import com.ruoyi.business.service.CompensationPerformanceService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * @author :yys * @date : 2025/8/8 9:55 */ @Service @Slf4j public class CompensationPerformanceServiceImpl extends ServiceImpl<CompensationPerformanceMapper, CompensationPerformance> implements CompensationPerformanceService { @Autowired private CompensationPerformanceMapper compensationPerformanceMapper; @Override public IPage<CompensationPerformance> listPage(Page page, CompensationPerformance compensationPerformance) { IPage<CompensationPerformance> compensationPerformanceIPage = compensationPerformanceMapper.listPage(page, compensationPerformance); return compensationPerformanceIPage; } } main-business/src/main/java/com/ruoyi/business/service/impl/StaffJoinLeaveRecordServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,168 @@ package com.ruoyi.business.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.business.entity.StaffJoinLeaveRecord; import com.ruoyi.business.entity.StaffOnJob; import com.ruoyi.business.mapper.StaffJoinLeaveRecordMapper; import com.ruoyi.business.mapper.StaffOnJobMapper; import com.ruoyi.business.service.IStaffJoinLeaveRecordService; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.poi.ExcelUtil; import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Comparator; import java.util.List; import java.util.Optional; @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); } } main-business/src/main/java/com/ruoyi/business/service/impl/StaffOnJobServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,71 @@ package com.ruoyi.business.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.business.entity.StaffJoinLeaveRecord; import com.ruoyi.business.entity.StaffOnJob; import com.ruoyi.business.mapper.StaffJoinLeaveRecordMapper; import com.ruoyi.business.mapper.StaffOnJobMapper; import com.ruoyi.business.service.IStaffOnJobService; import com.ruoyi.common.utils.poi.ExcelUtil; import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; 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, "å¨èåå·¥å°è´¦å¯¼åº"); } @Override public List<StaffJoinLeaveRecord> staffOnJobList() { return staffJoinLeaveRecordMapper.staffOnJobList(); } @Override public Boolean importData(MultipartFile file) { try { ExcelUtil<StaffOnJob> util = new ExcelUtil<>(StaffOnJob.class); List<StaffOnJob> staffOnJobs = util.importExcel(file.getInputStream()); return saveOrUpdateBatch(staffOnJobs); } catch (Exception e) { e.printStackTrace(); return false; } } } main-business/src/main/resources/mapper/CompensationPerformanceMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ <?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.business.mapper.CompensationPerformanceMapper"> <select id="listPage" resultType="com.ruoyi.business.entity.CompensationPerformance"> select * from compensation_performance <where> <if test="req.name != null and req.name != ''"> and `name` like concat('%',#{req.name},'%') </if> <if test="req.payDateStr != null and req.payDateStr != ''"> and pay_date like concat('%',#{req.payDateStr},'%') </if> </where> </select> </mapper> main-business/src/main/resources/mapper/StaffJoinLeaveRecordMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,39 @@ <?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.business.mapper.StaffJoinLeaveRecordMapper"> <select id="staffJoinLeaveRecordListPage" resultType="com.ruoyi.business.entity.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> <if test="staffJoinLeaveRecord.entryDateStart != null and staffJoinLeaveRecord.entryDateStart != '' "> and contract_start_time like concat('%',#{staffJoinLeaveRecord.entryDateStart},'%') </if> <if test="staffJoinLeaveRecord.entryDateEnd != null and staffJoinLeaveRecord.entryDateEnd != '' "> and contract_end_time like concat('%',#{staffJoinLeaveRecord.entryDateEnd},'%') </if> </select> <select id="staffJoinLeaveRecordList" resultType="com.ruoyi.business.entity.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="staffOnJobList" resultType="com.ruoyi.business.entity.StaffJoinLeaveRecord"> select * from (select *, ROW_NUMBER() over (PARTITION BY staff_no ORDER BY create_time DESC ) as rn from staff_join_leave_record where staff_state = 1) t where rn = 1 </select> </mapper> main-business/src/main/resources/mapper/StaffOnJobMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,34 @@ <?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.business.mapper.StaffOnJobMapper"> <select id="staffOnJobListPage" resultType="com.ruoyi.business.entity.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> <if test="staffOnJob.entryDateStart != null and staffOnJob.entryDateStart != '' "> AND contract_expire_time >= to_date(#{staffOnJob.entryDateStart},'YYYY-MM-DD') </if> <if test="staffOnJob.entryDateEnd != null and staffOnJob.entryDateEnd != '' "> AND contract_expire_time <= to_date(#{staffOnJob.entryDateEnd},'YYYY-MM-DD') </if> </select> <select id="staffOnJobList" resultType="com.ruoyi.business.entity.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>