Merge remote-tracking branch 'origin/pim-jlmy' into pim-jlmy
| | |
| | | <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> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-web</artifactId> |
| | | </dependency> |
| | | |
| | | <!-- æ ¸å¿æ¨¡å--> |
| | | <dependency> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.business.annotation; |
| | | |
| | | import java.lang.annotation.*; |
| | | |
| | | /** |
| | | * å¿å访é®ä¸é´ææ³¨è§£ |
| | | * |
| | | * @author ruoyi |
| | | */ |
| | | @Target({ ElementType.METHOD, ElementType.TYPE }) |
| | | @Retention(RetentionPolicy.RUNTIME) |
| | | @Documented |
| | | public @interface Anonymous |
| | | { |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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 ""; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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; |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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(); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.business.controller; |
| | | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.business.entity.AccountFile; |
| | | import com.ruoyi.business.service.AccountFileService; |
| | | import com.ruoyi.common.core.domain.AjaxResult; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * è´¢å¡éä»¶ |
| | | */ |
| | | @RestController |
| | | @RequestMapping("/account/accountFile") |
| | | public class AccountFileController { |
| | | |
| | | |
| | | @Resource |
| | | private AccountFileService accountFileService; |
| | | |
| | | |
| | | /** |
| | | * æ°å¢ |
| | | * @param accountFile |
| | | * @return |
| | | */ |
| | | @PostMapping("/add") |
| | | public AjaxResult add(@RequestBody AccountFile accountFile) { |
| | | return AjaxResult.success(accountFileService.save(accountFile)); |
| | | } |
| | | |
| | | /** |
| | | * å é¤ |
| | | * @param ids |
| | | * @return |
| | | */ |
| | | @DeleteMapping("/del") |
| | | public AjaxResult delAccountFile(@RequestBody List<Integer> ids) { |
| | | if(CollectionUtils.isEmpty(ids)){ |
| | | return AjaxResult.error("è¯·éæ©è³å°ä¸æ¡æ°æ®"); |
| | | } |
| | | //å 餿£éªéä»¶ |
| | | return AjaxResult.success(accountFileService.removeBatchByIds(ids)); |
| | | } |
| | | |
| | | /** |
| | | *å页æ¥è¯¢ |
| | | * @param page |
| | | * @param accountFile |
| | | * @return |
| | | */ |
| | | @GetMapping("/listPage") |
| | | public AjaxResult accountFileListPage(Page page, AccountFile accountFile) { |
| | | return AjaxResult.success(accountFileService.accountFileListPage(page, accountFile)); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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("å é¤å¤±è´¥"); |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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); |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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); |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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; |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.business.entity; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import lombok.Data; |
| | | |
| | | |
| | | import java.io.Serializable; |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * è´¢å¡ç®¡ç--éä»¶ |
| | | * account_file |
| | | */ |
| | | @TableName(value = "account_file") |
| | | @Data |
| | | public class AccountFile implements Serializable { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * åºå· |
| | | */ |
| | | @TableId(type = IdType.AUTO) |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "æä»¶åç§°") |
| | | private String name; |
| | | |
| | | @ApiModelProperty(value = "æä»¶è·¯å¾") |
| | | private String url; |
| | | |
| | | @ApiModelProperty(value = "æä»¶å¤§å°") |
| | | private int fileSize; |
| | | |
| | | @ApiModelProperty(value = "è´¢å¡ID") |
| | | @NotBlank(message = "è´¢å¡idä¸è½ä¸ºç©º!") |
| | | private Long accountId; |
| | | |
| | | /** |
| | | * ç±»å(æ¶å
¥/æ¯åº) |
| | | */ |
| | | @ApiModelProperty(value = "ç±»å(æ¶å
¥/æ¯åº)") |
| | | private String accountType; |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private LocalDateTime createTime; |
| | | |
| | | @ApiModelProperty(value = "ä¿®æ¹æ¶é´") |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | private LocalDateTime updateTime; |
| | | |
| | | @ApiModelProperty(value = "åå»ºç¨æ·") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Integer createUser; |
| | | |
| | | @ApiModelProperty(value = "ä¿®æ¹ç¨æ·") |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | private Integer updateUser; |
| | | |
| | | @ApiModelProperty(value = "ç§æ·ID") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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; |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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.AccountFile; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | @Mapper |
| | | public interface AccountFileMapper extends BaseMapper<AccountFile> { |
| | | |
| | | IPage<AccountFile> accountFileListPage(Page page, @Param("accountFile") AccountFile accountFile); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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(); |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.business.other.controller; |
| | | |
| | | |
| | | |
| | | import com.ruoyi.business.other.service.TempFileService; |
| | | import com.ruoyi.common.core.domain.AjaxResult; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | |
| | | @RestController |
| | | @RequestMapping("/file") |
| | | @AllArgsConstructor |
| | | public class TempFileController { |
| | | |
| | | private TempFileService tempFileService; |
| | | |
| | | |
| | | @PostMapping("/upload") |
| | | public AjaxResult uploadFile(MultipartFile file, Integer type) { |
| | | try { |
| | | return AjaxResult.success(tempFileService.uploadFile(file, type)); |
| | | } catch (Exception e) { |
| | | return AjaxResult.error(e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.business.other.mapper; |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.ruoyi.business.other.pojo.CommonFile; |
| | | |
| | | |
| | | public interface CommonFileMapper extends BaseMapper<CommonFile> { |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.business.other.mapper; |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.ruoyi.business.other.pojo.TempFile; |
| | | |
| | | |
| | | public interface TempFileMapper extends BaseMapper<TempFile> { |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.business.other.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * éç¨éä»¶ä¸ä¼ 表 |
| | | */ |
| | | |
| | | @Data |
| | | @TableName("common_file") |
| | | public class CommonFile { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | private Long id; |
| | | |
| | | /** å
³è表主é®D */ |
| | | private Long commonId; |
| | | |
| | | /** æä»¶åç§° */ |
| | | private String name; |
| | | |
| | | /** æä»¶è·¯å¾ */ |
| | | private String url; |
| | | |
| | | /** å
³è表 */ |
| | | private Integer type; |
| | | |
| | | /** å建æ¶é´ */ |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private LocalDateTime createTime; |
| | | |
| | | /** æ´æ°æ¶é´ */ |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | private LocalDateTime updateTime; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.business.other.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | @Data |
| | | @TableName("temp_file") |
| | | public class TempFile { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @TableId |
| | | private String tempId; // ä¸´æ¶æä»¶IDï¼UUIDï¼ |
| | | private String originalName; // åå§æä»¶å |
| | | private String tempPath; // 临æ¶åå¨è·¯å¾ |
| | | private LocalDateTime expireTime; // è¿ææ¶é´ |
| | | private Integer type; // å
³è表类å |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.business.other.service; |
| | | |
| | | |
| | | import com.ruoyi.business.other.pojo.TempFile; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.io.IOException; |
| | | |
| | | public interface TempFileService { |
| | | TempFile uploadFile(MultipartFile file, Integer type) throws IOException; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.business.other.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.business.other.mapper.CommonFileMapper; |
| | | import com.ruoyi.business.other.mapper.TempFileMapper; |
| | | import com.ruoyi.business.other.pojo.CommonFile; |
| | | import com.ruoyi.business.other.pojo.TempFile; |
| | | import com.ruoyi.business.other.service.TempFileService; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.io.FilenameUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.io.IOException; |
| | | import java.nio.file.Files; |
| | | import java.nio.file.Path; |
| | | import java.nio.file.Paths; |
| | | import java.nio.file.StandardCopyOption; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.List; |
| | | import java.util.UUID; |
| | | |
| | | @Service |
| | | @Slf4j |
| | | public class TempFileServiceImpl extends ServiceImpl<TempFileMapper, TempFile> implements TempFileService { |
| | | |
| | | @Autowired |
| | | private TempFileMapper tempFileMapper; |
| | | |
| | | @Autowired |
| | | private CommonFileMapper commonFileMapper; |
| | | |
| | | @Value("${file.upload-dir}") |
| | | private String uploadDir; |
| | | |
| | | @Value("${file.temp-dir}") |
| | | private String tempDir; |
| | | |
| | | // ä¸ä¼ å°ä¸´æ¶ç®å½ |
| | | @Override |
| | | public TempFile uploadFile(MultipartFile file,Integer type) throws IOException { |
| | | // 1. çæä¸´æ¶æä»¶IDåè·¯å¾ |
| | | String tempId = UUID.randomUUID().toString(); |
| | | String originalFilename = file.getOriginalFilename(); |
| | | if(originalFilename == null) throw new IOException("æä»¶åä¸è½ä¸ºç©º"); |
| | | // URLEncoder urlEncoder = new URLEncoder(); |
| | | // String encodedFilename = urlEncoder.encode(originalFilename, StandardCharsets.UTF_8); |
| | | // encodedFilename = encodedFilename.replaceAll("%2E","."); |
| | | // Path tempFilePath = Paths.get(tempDir, tempId + "_" + encodedFilename); |
| | | |
| | | Path tempFilePath = Paths.get(tempDir, tempId + "_" + file.getOriginalFilename()); |
| | | |
| | | // 2. ç¡®ä¿ç®å½åå¨ |
| | | Path parentDir = tempFilePath.getParent(); |
| | | if (parentDir != null && !Files.exists(parentDir)) { |
| | | try { |
| | | // éå½å建ç®å½å¹¶æ£æ¥ç»æ |
| | | Files.createDirectories(parentDir); |
| | | } catch (IOException e) { |
| | | log.error("å建ç®å½å¤±è´¥: {}", parentDir, e); |
| | | throw new IOException("æ æ³å建ç®å½: " + parentDir, e); |
| | | } |
| | | } |
| | | // if (parentDir != null) { |
| | | // Files.createDirectories(parentDir); // éå½å建ç®å½ |
| | | // } |
| | | |
| | | // 3. ä¿åæä»¶å°ä¸´æ¶ç®å½ |
| | | file.transferTo(tempFilePath.toFile()); |
| | | |
| | | // 4. ä¿åä¸´æ¶æä»¶è®°å½ |
| | | TempFile tempFileRecord = new TempFile(); |
| | | tempFileRecord.setTempId(tempId); |
| | | tempFileRecord.setOriginalName(file.getOriginalFilename()); |
| | | tempFileRecord.setTempPath(tempFilePath.toString()); |
| | | tempFileRecord.setExpireTime(LocalDateTime.now().plusHours(2)); // 2å°æ¶åè¿æ |
| | | tempFileRecord.setType(type); |
| | | tempFileMapper.insert(tempFileRecord); |
| | | |
| | | return tempFileRecord; |
| | | } |
| | | |
| | | /** |
| | | * å°ä¸´æ¶æä»¶è¿ç§»å°æ£å¼ç®å½ |
| | | * |
| | | * @param businessId ä¸å¡IDï¼éå®å°è´¦IDï¼ |
| | | * @param tempFileIds ä¸´æ¶æä»¶IDå表 |
| | | * @param fileType æä»¶ç±»å(æ¥èªFileNameType) |
| | | * @throws IOException æä»¶æä½å¼å¸¸ |
| | | */ |
| | | public void migrateTempFilesToFormal(Long businessId, List<String> tempFileIds, Integer fileType) throws IOException { |
| | | if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(tempFileIds)) { |
| | | return; |
| | | } |
| | | |
| | | // æå»ºæ£å¼ç®å½è·¯å¾ï¼æä¸å¡ç±»å忥æåç»ï¼ |
| | | String formalDir = uploadDir + LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE); |
| | | |
| | | Path formalDirPath = Paths.get(formalDir); |
| | | |
| | | // ç¡®ä¿æ£å¼ç®å½åå¨ï¼éå½åå»ºï¼ |
| | | if (!Files.exists(formalDirPath)) { |
| | | Files.createDirectories(formalDirPath); |
| | | } |
| | | |
| | | for (String tempFileId : tempFileIds) { |
| | | // æ¥è¯¢ä¸´æ¶æä»¶è®°å½ |
| | | TempFile tempFile = tempFileMapper.selectById(tempFileId); |
| | | if (tempFile == null) { |
| | | log.warn("ä¸´æ¶æä»¶ä¸åå¨ï¼è·³è¿å¤ç: {}", tempFileId); |
| | | continue; |
| | | } |
| | | |
| | | // æå»ºæ£å¼æä»¶åï¼å
å«ä¸å¡IDåæ¶é´æ³ï¼é¿å
å²çªï¼ |
| | | String originalFilename = tempFile.getOriginalName(); |
| | | String fileExtension = FilenameUtils.getExtension(originalFilename); |
| | | String formalFilename = businessId + "_" + |
| | | System.currentTimeMillis() + "_" + |
| | | UUID.randomUUID().toString().substring(0, 8) + |
| | | (StringUtils.hasText(fileExtension) ? "." + fileExtension : ""); |
| | | |
| | | Path formalFilePath = formalDirPath.resolve(formalFilename); |
| | | |
| | | try { |
| | | // æ§è¡æä»¶è¿ç§»ï¼ä½¿ç¨ååæä½ç¡®ä¿å®å
¨æ§ï¼ |
| | | Files.move( |
| | | Paths.get(tempFile.getTempPath()), |
| | | formalFilePath, |
| | | StandardCopyOption.REPLACE_EXISTING, |
| | | StandardCopyOption.ATOMIC_MOVE |
| | | ); |
| | | log.info("æä»¶è¿ç§»æå: {} -> {}", tempFile.getTempPath(), formalFilePath); |
| | | |
| | | // æ´æ°æä»¶è®°å½ï¼å
³èå°ä¸å¡IDï¼ |
| | | CommonFile fileRecord = new CommonFile(); |
| | | fileRecord.setCommonId(businessId); |
| | | fileRecord.setName(originalFilename); |
| | | fileRecord.setUrl(formalFilePath.toString()); |
| | | fileRecord.setCreateTime(LocalDateTime.now()); |
| | | fileRecord.setType(fileType); |
| | | commonFileMapper.insert(fileRecord); |
| | | |
| | | // å é¤ä¸´æ¶æä»¶è®°å½ |
| | | tempFileMapper.deleteById(tempFile); |
| | | |
| | | log.info("æä»¶è¿ç§»æå: {} -> {}", tempFile.getTempPath(), formalFilePath); |
| | | } catch (IOException e) { |
| | | log.error("æä»¶è¿ç§»å¤±è´¥: {}", tempFile.getTempPath(), e); |
| | | // å¯éæ©åæ»äºå¡æè®°å½å¤±è´¥æä»¶ |
| | | throw new IOException("æä»¶è¿ç§»å¼å¸¸", e); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Scheduled(cron = "0 0 3 * * ?") // æ¯å¤©åæ¨3ç¹æ§è¡ |
| | | public void cleanupExpiredTempFiles() { |
| | | LambdaQueryWrapper<TempFile> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.lt(TempFile::getExpireTime, LocalDateTime.now()); // expireTime < å½åæ¶é´ |
| | | |
| | | List<TempFile> expiredFiles = tempFileMapper.selectList(wrapper); |
| | | for (TempFile file : expiredFiles) { |
| | | try { |
| | | // å é¤ç©çæä»¶ |
| | | Files.deleteIfExists(Paths.get(file.getTempPath())); |
| | | // å 餿°æ®åºè®°å½ |
| | | tempFileMapper.deleteById(file); |
| | | log.info("å·²æ¸
çè¿æä¸´æ¶æä»¶: {}", file.getTempPath()); |
| | | } catch (IOException e) { |
| | | log.error("å é¤æä»¶å¤±è´¥: {}", file.getTempPath(), e); |
| | | // å¯éæ©è®°å½å¤±è´¥æ¥å¿æéè¯ |
| | | } |
| | | } |
| | | log.info("è¿æä¸´æ¶æä»¶æ¸
ç宿ï¼å
±æ¸
ç {} 个æä»¶", expiredFiles.size()); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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.AccountFile; |
| | | |
| | | |
| | | public interface AccountFileService extends IService<AccountFile> { |
| | | |
| | | |
| | | IPage<AccountFile> accountFileListPage(Page page, AccountFile accountFile); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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.entity.AccountFile; |
| | | import com.ruoyi.business.mapper.AccountFileMapper; |
| | | import com.ruoyi.business.service.AccountFileService; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | @AllArgsConstructor |
| | | @Service |
| | | public class AccountFileServiceImpl extends ServiceImpl<AccountFileMapper, AccountFile> implements AccountFileService { |
| | | |
| | | private AccountFileMapper accountFileMapper; |
| | | |
| | | |
| | | @Override |
| | | public IPage<AccountFile> accountFileListPage(Page page, AccountFile accountFile) { |
| | | return accountFileMapper.accountFileListPage(page,accountFile); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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; |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.AccountFileMapper"> |
| | | <select id="accountFileListPage" resultType="com.ruoyi.business.entity.AccountFile"> |
| | | SELECT |
| | | * |
| | | FROM account_file |
| | | where |
| | | 1=1 |
| | | <if test="accountFile.accountId != null and accountFile.accountId != ''"> |
| | | AND account_id = #{accountFile.accountId} |
| | | </if> |
| | | <if test="accountFile.name != null and accountFile.name != '' "> |
| | | AND name = #{accountFile.name} |
| | | </if> |
| | | <if test="accountFile.accountType != null and accountFile.accountType != '' "> |
| | | AND account_type = #{accountFile.accountType} |
| | | </if> |
| | | </select> |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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> |
| | |
| | | excludes: /system/notice |
| | | # å¹é
龿¥ |
| | | urlPatterns: /system/*,/monitor/*,/tool/* |
| | | file: |
| | | temp-dir: D:/Backup/æ¡é¢/download/temp/uploads |
| | | upload-dir: D:/Backup/æ¡é¢/download/prod/uploads |