src/main/java/com/ruoyi/approve/controller/ApproveNodeController.java
@@ -3,9 +3,15 @@ import com.ruoyi.approve.pojo.ApproveNode; import com.ruoyi.approve.service.IApproveNodeService; import com.ruoyi.framework.web.domain.AjaxResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.io.IOException; @Api(tags = "审æ¹è®°å½") @RestController @RequestMapping("/approveNode") public class ApproveNodeController { @@ -18,6 +24,7 @@ * @return */ @GetMapping("/details/{id}") @ApiOperation(value = "æµç¨ç¶æè¯¦æ ") public AjaxResult details(@PathVariable String id) { return AjaxResult.success(approveNodeService.details(id)); } @@ -28,7 +35,9 @@ * @return */ @PostMapping("/updateApproveNode") public AjaxResult updateApproveNode(@RequestBody ApproveNode approveNode) { @Transactional(rollbackFor = Exception.class) @ApiOperation(value = "审æ¹èç¹") public AjaxResult updateApproveNode(@RequestBody ApproveNode approveNode) throws IOException { approveNodeService.updateApproveNode(approveNode); return AjaxResult.success(); } src/main/java/com/ruoyi/approve/pojo/ApproveNode.java
@@ -3,11 +3,15 @@ import java.io.Serializable; import java.time.LocalDateTime; import java.util.Date; import java.util.List; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.sales.pojo.CommonFile; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** @@ -16,7 +20,18 @@ */ @Data @TableName("approve_node") @ApiModel public class ApproveNode{ @ApiModelProperty("éä»¶id") @TableField(exist = false) private List<String> tempFileIds; @TableField(exist = false) @ApiModelProperty("éä»¶å表") private String url; /** * */ src/main/java/com/ruoyi/approve/service/IApproveNodeService.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.approve.pojo.ApproveNode; import java.io.IOException; import java.util.List; public interface IApproveNodeService extends IService<ApproveNode> { @@ -14,7 +15,7 @@ */ List<ApproveNode> details(String id); void updateApproveNode(ApproveNode approveNode); void updateApproveNode(ApproveNode approveNode) throws IOException; void delApproveNodeByApproveId(Long id); } src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -8,13 +8,20 @@ import com.ruoyi.approve.pojo.ApproveNode; import com.ruoyi.approve.pojo.ApproveProcess; import com.ruoyi.approve.service.IApproveNodeService; import com.ruoyi.common.enums.FileNameType; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.other.service.impl.TempFileServiceImpl; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.mapper.SysUserMapper; import com.ruoyi.sales.mapper.CommonFileMapper; import com.ruoyi.sales.pojo.CommonFile; import com.ruoyi.sales.service.impl.CommonFileServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.io.IOException; import java.time.LocalDateTime; import java.util.Comparator; import java.util.Date; @@ -30,6 +37,12 @@ private ApproveProcessMapper approveProcessMapper; @Autowired private SysUserMapper sysUserMapper; @Autowired private TempFileServiceImpl tempFileService; @Autowired private CommonFileMapper fileMapper; public ApproveProcess getApproveById(String id) { @@ -87,6 +100,12 @@ return list; } for (ApproveNode approveNode : list) { List<CommonFile> commonFiles = fileMapper.selectList(new LambdaQueryWrapper<CommonFile>() .eq(CommonFile::getCommonId, approveNode.getId()) .eq(CommonFile::getType, FileNameType.ApproveNode.getValue())); if(!CollectionUtils.isEmpty(commonFiles)){ approveNode.setUrl(commonFiles.get(0).getUrl()); } if(approveNode.getApproveNodeStatus() == 1){ continue; } @@ -96,7 +115,7 @@ return list; } public void updateApproveProcessStatus(ApproveNode approveNode,Integer status) { public void updateApproveProcessStatus(ApproveNode approveNode,Integer status) throws IOException { LambdaQueryWrapper<ApproveProcess> approveProcessLambdaQueryWrapper = new LambdaQueryWrapper<>(); approveProcessLambdaQueryWrapper.eq(ApproveProcess::getApproveId, approveNode.getApproveProcessId()) .eq(ApproveProcess::getApproveDelete, 0) @@ -117,10 +136,15 @@ approveProcess.setApproveUserCurrentName(approveNode1.getApproveNodeUser()); } approveProcessMapper.updateById(approveProcess); // ç»å®éä»¶ if(!CollectionUtils.isEmpty(approveNode.getTempFileIds()) && approveNode.getApproveNodeStatus() == 1){ tempFileService.migrateTempFilesToFormal(approveNode.getId(), approveNode.getTempFileIds(), FileNameType.ApproveNode.getValue()); } } @Override public void updateApproveNode(ApproveNode approveNode) { public void updateApproveNode(ApproveNode approveNode) throws IOException { // 审æ¹èç¹ç¶æ:1åæï¼2æç»ï¼0å°æªå®¡æ ¸ switch (approveNode.getApproveNodeStatus()){ case 1: src/main/java/com/ruoyi/common/enums/FileNameType.java
@@ -7,7 +7,8 @@ INVOICE(3), //å票 PURCHASELEDGER(4), MEASURING(5), //计éå¨å ·å°è´¦ MEASURINGRecord(6); //计éå¨å ·å°è´¦è®°å½ MEASURINGRecord(6),//计éå¨å ·å°è´¦è®°å½ ApproveNode(7); //åå审æ¹å®¡æ ¸ private final int value; src/main/java/com/ruoyi/compensationperformance/controller/CompensationPerformanceController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,69 @@ package com.ruoyi.compensationperformance.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.compensationperformance.pojo.CompensationPerformance; import com.ruoyi.compensationperformance.service.CompensationPerformanceService; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; 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 = "èªé ¬ç»©æ") @RequestMapping("/compensationPerformance") public class CompensationPerformanceController extends BaseController { @Autowired private CompensationPerformanceService compensationPerformanceService; @GetMapping("/listPage") @Log(title = "èªé ¬ç»©æ-å页æ¥è¯¢", businessType = BusinessType.OTHER) @ApiOperation("èªé ¬ç»©æ-å页æ¥è¯¢") public AjaxResult listPage(Page page, CompensationPerformance compensationPerformance){ IPage<CompensationPerformance> listPage = compensationPerformanceService.listPage(page, compensationPerformance); return AjaxResult.success(listPage); } @PostMapping("/add") @Log(title = "èªé ¬ç»©æ-æ·»å ", businessType = BusinessType.INSERT) @ApiOperation("èªé ¬ç»©æ-æ·»å ") @Transactional(rollbackFor = Exception.class) public AjaxResult add(@RequestBody CompensationPerformance compensationPerformance){ boolean save = compensationPerformanceService.save(compensationPerformance); return save ? AjaxResult.success("æ·»å æå") : AjaxResult.error("æ·»å 失败"); } @PostMapping("/update") @Log(title = "èªé ¬ç»©æ-ä¿®æ¹", businessType = BusinessType.UPDATE) @ApiOperation("èªé ¬ç»©æ-ä¿®æ¹") @Transactional(rollbackFor = Exception.class) public AjaxResult update(@RequestBody CompensationPerformance compensationPerformance){ boolean update = compensationPerformanceService.updateById(compensationPerformance); return update ? AjaxResult.success("ä¿®æ¹æå") : AjaxResult.error("ä¿®æ¹å¤±è´¥"); } @DeleteMapping("/delete") @Log(title = "èªé ¬ç»©æ-å é¤", businessType = BusinessType.DELETE) @ApiOperation("èªé ¬ç»©æ-å é¤") @Transactional(rollbackFor = Exception.class) public AjaxResult delete(@RequestBody List<Long> ids){ if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("è¯·ä¼ å ¥è¦å é¤çID"); boolean delete = compensationPerformanceService.removeBatchByIds(ids); return delete ? AjaxResult.success("å 餿å") : AjaxResult.error("å é¤å¤±è´¥"); } } src/main/java/com/ruoyi/compensationperformance/mapper/CompensationPerformanceMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ package com.ruoyi.compensationperformance.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.compensationperformance.pojo.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); } src/main/java/com/ruoyi/compensationperformance/pojo/CompensationPerformance.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,230 @@ package com.ruoyi.compensationperformance.pojo; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.framework.aspectj.lang.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; } src/main/java/com/ruoyi/compensationperformance/service/CompensationPerformanceService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.ruoyi.compensationperformance.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.compensationperformance.pojo.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); } src/main/java/com/ruoyi/compensationperformance/service/impl/CompensationPerformanceServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,30 @@ package com.ruoyi.compensationperformance.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.compensationperformance.mapper.CompensationPerformanceMapper; import com.ruoyi.compensationperformance.pojo.CompensationPerformance; import com.ruoyi.compensationperformance.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; } } src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerRecordServiceImpl.java
@@ -65,7 +65,8 @@ IPage<MeasuringInstrumentLedgerRecord> measuringInstrumentLedgerRecordIPage = measuringInstrumentLedgerRecordMapper.listPage(page, measuringInstrumentLedgerRecord); measuringInstrumentLedgerRecordIPage.getRecords().forEach(item -> { LambdaQueryWrapper<CommonFile> salesLedgerFileWrapper = new LambdaQueryWrapper<>(); salesLedgerFileWrapper.eq(CommonFile::getCommonId, item.getId()); salesLedgerFileWrapper.eq(CommonFile::getCommonId, item.getId()) .eq(CommonFile::getType, FileNameType.MEASURINGRecord.getValue()); List<CommonFile> commonFiles = commonFileMapper.selectList(salesLedgerFileWrapper); item.setCommonFiles(commonFiles); }); src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerServiceImpl.java
@@ -71,6 +71,9 @@ @Override public IPage<MeasuringInstrumentLedger> listPage(Page page, MeasuringInstrumentLedger measuringInstrumentLedger) { IPage<MeasuringInstrumentLedger> measuringInstrumentLedgerIPage = measuringInstrumentLedgerMapper.listPage(page, measuringInstrumentLedger); List<Integer> types = new ArrayList<>(); types.add(FileNameType.MEASURING.getValue()); types.add(FileNameType.MEASURINGRecord.getValue()); measuringInstrumentLedgerIPage.getRecords().forEach(item -> { LambdaQueryWrapper<MeasuringInstrumentLedgerRecord> measuringInstrumentLedgerRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); measuringInstrumentLedgerRecordLambdaQueryWrapper.eq(MeasuringInstrumentLedgerRecord::getMeasuringInstrumentLedgerId, item.getId()); @@ -81,7 +84,8 @@ } collect.add(item.getId()); LambdaQueryWrapper<CommonFile> salesLedgerFileWrapper = new LambdaQueryWrapper<>(); salesLedgerFileWrapper.in(CommonFile::getCommonId, collect); salesLedgerFileWrapper.in(CommonFile::getCommonId, collect) .in(CommonFile::getType,types); List<CommonFile> commonFiles = commonFileMapper.selectList(salesLedgerFileWrapper); item.setCommonFiles(commonFiles); src/main/java/com/ruoyi/other/service/impl/TempFileServiceImpl.java
@@ -87,7 +87,7 @@ * @param tempFileIds ä¸´æ¶æä»¶IDå表 * @throws IOException æä»¶æä½å¼å¸¸ */ private void migrateTempFilesToFormal(Long businessId, List<String> tempFileIds,Integer fileType) throws IOException { public void migrateTempFilesToFormal(Long businessId, List<String> tempFileIds, Integer fileType) throws IOException { if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(tempFileIds)) { return; } src/main/resources/mapper/compensationperformance/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.compensationperformance.mapper.CompensationPerformanceMapper"> <select id="listPage" resultType="com.ruoyi.compensationperformance.pojo.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>