src/main/java/com/ruoyi/approve/controller/ApproveNodeController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,47 @@ package com.ruoyi.approve.controller; import com.ruoyi.approve.pojo.ApproveNode; import com.ruoyi.approve.service.IApproveNodeService; import com.ruoyi.framework.web.domain.AjaxResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/approveNode") public class ApproveNodeController { @Autowired private IApproveNodeService approveNodeService; /** * æµç¨ç¶æè¯¦æ * @param id æµç¨å®¡æ¹id approve_id * @return */ @GetMapping("/details") public AjaxResult details(@PathVariable String id) { return AjaxResult.success(approveNodeService.details(id)); } /** * 审æ¹èç¹ * @param approveNode * @return */ @PostMapping("/updateApproveNode") public AjaxResult updateApproveNode(@RequestBody ApproveNode approveNode) { approveNodeService.updateApproveNode(approveNode); return AjaxResult.success(); } /** * åå§å审æ¹èç¹ * @param id * @return */ @PostMapping("/init") public AjaxResult init(String id) { approveNodeService.initApproveNodes(id); return AjaxResult.success(); } } src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,105 @@ package com.ruoyi.approve.controller; import com.ruoyi.approve.service.IApproveProcessService; import com.ruoyi.approve.vo.ApproveGetAndUpdateVo; import com.ruoyi.approve.vo.ApproveProcessVO; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.framework.security.LoginUser; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.project.system.domain.SysDept; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/approveProcess") public class ApproveProcessController { @GetMapping("/test") public AjaxResult test() { System.out.println(1111); return AjaxResult.success("æµè¯"); } @Autowired private IApproveProcessService approveProcessService; /**ã * è·åé¨é¨å表 * @return */ @GetMapping("/getDept") public AjaxResult getDept() { Long userId = SecurityUtils.getUserId(); LoginUser user = SecurityUtils.getLoginUser(); Long[] deptIds = SecurityUtils.getDeptId(); List<SysDept> sysDeptList = approveProcessService.selectDeptListByDeptIds(deptIds); return AjaxResult.success(sysDeptList); } /** * æ·»å å®¡æ¹ * @param approveProcessVO * @return */ @PostMapping("/add") public AjaxResult add(@RequestBody ApproveProcessVO approveProcessVO) { if (approveProcessVO == null) { return AjaxResult.warn("åæ°ä¸è½ä¸ºç©º"); } approveProcessService.addApprove(approveProcessVO); return AjaxResult.success("æ·»å æå"); } /** * 审æ¹è¯¦æ * @param approveGetAndUpdateVo * @return */ @GetMapping("/get") public AjaxResult get(@RequestBody ApproveGetAndUpdateVo approveGetAndUpdateVo){ if (approveGetAndUpdateVo.getId() == null || approveGetAndUpdateVo.getId().isEmpty()) { return AjaxResult.warn("åæ°ä¸è½ä¸ºç©º"); } return AjaxResult.success(approveProcessService.getApproveById(approveGetAndUpdateVo.getId())); } /** * æ´æ°å®¡æ¹ * @param approveGetAndUpdateVo * @return */ @PostMapping("/update") public AjaxResult update(@RequestBody ApproveGetAndUpdateVo approveGetAndUpdateVo) { if (approveGetAndUpdateVo == null) { return AjaxResult.warn("åæ°ä¸è½ä¸ºç©º"); } approveProcessService.updateByApproveId(approveGetAndUpdateVo); return AjaxResult.success("æä½æå"); } /** * è·å审æ¹å表 * @return */ @GetMapping("/list") public AjaxResult list() { return AjaxResult.success(approveProcessService.listAll()); } /** * å é¤å®¡æ¹ * @param ids * @return */ @PostMapping("/deleteIds") public AjaxResult deleteIds(@RequestBody Long[] ids) { if (ids == null || ids.length == 0) { return AjaxResult.warn("åæ°ä¸è½ä¸ºç©º"); } approveProcessService.delApprove(ids); return AjaxResult.success("æä½æå"); } } src/main/java/com/ruoyi/approve/mapper/ApproveLogMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ package com.ruoyi.approve.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.approve.pojo.ApproveLog; import org.apache.ibatis.annotations.Mapper; /** * @author Administrator * @description é对表ãapprove_log(å®¡æ¹æ¥å¿è¡¨)ãçæ°æ®åºæä½Mapper * @createDate 2025-07-07 14:47:01 * @Entity com.ruoyi.approve.pojo.ApproveLog */ @Mapper public interface ApproveLogMapper extends BaseMapper<ApproveLog> { } src/main/java/com/ruoyi/approve/mapper/ApproveNodeMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ package com.ruoyi.approve.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.approve.pojo.ApproveNode; /** * @author Administrator * @description é对表ãapprove_node(审æ¹èç¹è¡¨)ãçæ°æ®åºæä½Mapper * @createDate 2025-07-08 16:50:15 * @Entity com.ruoyi.approve.pojo.ApproveNode */ public interface ApproveNodeMapper extends BaseMapper<ApproveNode> { } src/main/java/com/ruoyi/approve/mapper/ApproveProcessMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ package com.ruoyi.approve.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.approve.pojo.ApproveProcess; /** * @author Administrator * @description é对表ãapprove_process(å®¡æ¹æµç¨è¡¨)ãçæ°æ®åºæä½Mapper * @createDate 2025-07-08 16:44:05 * @Entity com.ruoyi.approve.pojo.ApproveProcess */ public interface ApproveProcessMapper extends BaseMapper<ApproveProcess> { } src/main/java/com/ruoyi/approve/pojo/ApproveLog.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,57 @@ package com.ruoyi.approve.pojo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.io.Serializable; import java.util.Date; /** * å®¡æ¹æ¥å¿è¡¨ * @TableName approve_log */ @Data @TableName("approve_log") public class ApproveLog implements Serializable { private static final long serialVersionUID = 1L; /** * */ @TableId(type = IdType.AUTO) private Long id; /** * 审æ¹id */ private Long approveId; /** * 审æ¹èç¹é¡ºåº */ private Integer approveNodeOrder; /** * 审æ¹äººid */ private Long approveUser; /** * å®¡æ¹æ¶é´ */ @JsonFormat(pattern = "yyyy-MM-dd") private Date approveTime; /** * 审æ¹ç¶æ */ private Integer approveStatus; /** * 审æ¹å¤æ³¨ */ private String approveRemark; } src/main/java/com/ruoyi/approve/pojo/ApproveNode.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,78 @@ package com.ruoyi.approve.pojo; import java.io.Serializable; import java.util.Date; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; /** * 审æ¹èç¹è¡¨ * @TableName approve_node */ @Data public class ApproveNode implements Serializable { /** * */ private Long id; /** * 审æ¹id */ private Long approveProcessId; /** * 审æ¹èç¹é¡ºåº */ private Integer approveNodeOrder; /** * 审æ¹èç¹ç¨æ·åå */ private String approveNodeUser; /** * 审æ¹èç¹æ¶é´ */ @JsonFormat(pattern = "yyyy-MM-dd") private Date approveNodeTime; /** * 审æ¹èç¹ç¶æ:1åæï¼2æç»ï¼0å°æªå®¡æ ¸ï¼é»è®¤ä¸º0ï¼ */ private Integer approveNodeStatus; @TableField(exist = false) private Boolean isFirst; @TableField(exist = false) private Boolean isLast; /** * ç§æ·id */ @TableField(fill = FieldFill.INSERT) private Long tenantId; /** * å 餿 è®°:0æ£å¸¸ï¼1å é¤ */ private Integer deleteFlag; /** * 审æ¹èç¹æç»åå */ private String approveNodeReason; /** * 审æ¹èç¹å¤æ³¨ */ private String approveNodeRemark; private static final long serialVersionUID = 1L; } src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,99 @@ package com.ruoyi.approve.pojo; import java.io.Serializable; import java.util.Date; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; /** * å®¡æ¹æµç¨è¡¨ * @TableName approve_process */ @Data @TableName("approve_process") public class ApproveProcess implements Serializable { /** * */ @TableId(type = IdType.AUTO) private Long id; /** * 审æ¹id */ private String approveId; /** * ç³è¯·äººid */ private Long approveUser; /** * ç³è¯·é¨é¨id */ private Long approveDeptId; /** * ç³è¯·é¨é¨åç§° */ private String approveDeptName; /** * ç³è¯·ç¨æ·ids */ private String approveUserIds; /** * ç³è¯·ç¨æ·åç§° */ private String approveUserNames; /** * ç³è¯·åå */ private String approveReason; /** * ç³è¯·æ¥æ */ @JsonFormat(pattern = "yyyy-MM-dd") private Date approveTime; /** * 审æ¹å®ææ¶é´ */ @JsonFormat(pattern = "yyyy-MM-dd") private Date approveOverTime; /** * 审æ¹ç¶æï¼0å¾ å®¡æ ¸ï¼1å®¡æ ¸ä¸ï¼2å®¡æ ¸å®æ */ private Integer approveStatus; /** * å®¡æ¹æ¯å¦å é¤ï¼0æ£å¸¸ï¼1å é¤ */ private Integer approveDelete; /** * ç§æ·id */ @TableField(fill = FieldFill.INSERT) private Long tenantId; /** * 审æ¹ç±»å */ private Integer approveType; /** * 审æ¹å¤æ³¨ */ private String approveRemark; private static final long serialVersionUID = 1L; } src/main/java/com/ruoyi/approve/service/IApproveNodeService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ package com.ruoyi.approve.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.approve.pojo.ApproveNode; import java.util.List; public interface IApproveNodeService extends IService<ApproveNode> { void initApproveNodes(String id); /** * 详æ * @param id */ List<ApproveNode> details(String id); void updateApproveNode(ApproveNode approveNode); } src/main/java/com/ruoyi/approve/service/IApproveProcessService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,37 @@ package com.ruoyi.approve.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.approve.pojo.ApproveNode; import com.ruoyi.approve.pojo.ApproveProcess; import com.ruoyi.approve.vo.ApproveGetAndUpdateVo; import com.ruoyi.approve.vo.ApproveProcessVO; import com.ruoyi.project.system.domain.SysDept; import java.util.List; public interface IApproveProcessService extends IService<ApproveProcess> { /** * æ·»å å®¡æ¹æµç¨ * @param approveProcessVO å®¡æ¹æµç¨VO对象 */ void addApprove(ApproveProcessVO approveProcessVO); /** * æ ¹æ®é¨é¨idæ¥è¯¢é¨é¨ä¿¡æ¯ * @param deptIds é¨é¨IDæ°ç» */ List<SysDept> selectDeptListByDeptIds(Long[] deptIds); List<ApproveProcess> listAll(); void delApprove(Long[] ids); void updateByApproveId(ApproveGetAndUpdateVo approveGetAndUpdateVo); ApproveProcess getApproveById(String id); /** * 审æ¹ç¶ææ´æ° * @param approveNode */ void updateApproveProcessStatus(ApproveNode approveNode); } src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,74 @@ package com.ruoyi.approve.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.approve.mapper.ApproveNodeMapper; import com.ruoyi.approve.pojo.ApproveNode; import com.ruoyi.approve.pojo.ApproveProcess; import com.ruoyi.approve.service.IApproveNodeService; import com.ruoyi.approve.service.IApproveProcessService; import com.ruoyi.common.utils.SecurityUtils; import lombok.AllArgsConstructor; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import java.util.Comparator; import java.util.Date; import java.util.List; @Service @RequiredArgsConstructor public class ApproveNodeServiceImpl extends ServiceImpl<ApproveNodeMapper, ApproveNode> implements IApproveNodeService { @Autowired private ApproveNodeMapper approveNodeMapper; @Autowired private IApproveProcessService approveProcessService; @Override public void initApproveNodes(String id) { //ç§æ·id Long tenantId = SecurityUtils.getLoginUser().getTenantId(); ApproveProcess approve = approveProcessService.getApproveById(id); String[] names = approve.getApproveUserNames().split(","); Long approveId = approve.getId(); for (int i = 0; i < names.length; i++) { ApproveNode approveNode = new ApproveNode(); approveNode.setApproveProcessId(approveId); approveNode.setApproveNodeOrder(i +1); approveNode.setApproveNodeUser(names[i]); approveNode.setApproveNodeTime(new Date()); approveNode.setApproveNodeStatus(0); approveNode.setTenantId(tenantId); approveNode.setDeleteFlag(0); approveNodeMapper.insert(approveNode); } } @Override public List<ApproveNode> details(String id) { ApproveProcess approve = approveProcessService.getApproveById(id); Long approveId = approve.getId(); LambdaQueryWrapper<ApproveNode> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(ApproveNode::getApproveProcessId, approveId); List<ApproveNode> list = list(queryWrapper); // æç § approveNodeOrder åæ®µååºæåº list.sort(Comparator.comparingInt(ApproveNode::getApproveNodeOrder)); return list; } @Override public void updateApproveNode(ApproveNode approveNode) { approveProcessService.updateApproveProcessStatus(approveNode); approveNode.setApproveNodeTime(new Date()); approveNodeMapper.updateById(approveNode); } } src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,128 @@ package com.ruoyi.approve.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.approve.mapper.ApproveProcessMapper; import com.ruoyi.approve.pojo.ApproveNode; import com.ruoyi.approve.pojo.ApproveProcess; import com.ruoyi.approve.service.IApproveNodeService; import com.ruoyi.approve.service.IApproveProcessService; import com.ruoyi.approve.utils.DailyRedisCounter; import com.ruoyi.approve.vo.ApproveGetAndUpdateVo; import com.ruoyi.approve.vo.ApproveProcessVO; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.project.system.domain.SysDept; import com.ruoyi.project.system.mapper.SysDeptMapper; import lombok.AllArgsConstructor; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Date; import java.util.List; @Service @RequiredArgsConstructor public class ApproveProcessServiceImpl extends ServiceImpl<ApproveProcessMapper, ApproveProcess> implements IApproveProcessService { private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyyyMMdd"); private final StringRedisTemplate redisTemplate; private final DailyRedisCounter dailyRedisCounter; private final SysDeptMapper sysDeptMapper; private final IApproveNodeService approveNodeService; @Override public void addApprove(ApproveProcessVO approveProcessVO) { Long userId = SecurityUtils.getUserId(); //ç§æ·id Long tenantId = SecurityUtils.getLoginUser().getTenantId(); String today = LocalDate.now().format(DATE_FORMAT); Long approveId = dailyRedisCounter.incrementAndGet("approveId"); String formattedCount = String.format("%03d", approveId); //æµç¨ ID String approveID = today + formattedCount; ApproveProcess approveProcess = new ApproveProcess(); approveProcess.setApproveId(approveID); approveProcess.setApproveUser(userId); approveProcess.setApproveDeptName(approveProcessVO.getDeptName()); approveProcess.setApproveUserNames(approveProcessVO.getApproverNames()); approveProcess.setApproveTime(new Date()); approveProcess.setApproveReason(approveProcessVO.getApproveReason()); approveProcess.setApproveOverTime(null); approveProcess.setApproveStatus(0); approveProcess.setApproveDelete(0); approveProcess.setTenantId(tenantId); save(approveProcess); //åå§å审æ¹èç¹ approveNodeService.initApproveNodes(approveID); } @Override public List<SysDept> selectDeptListByDeptIds(Long[] deptIds) { List<SysDept> sysDeptList =new ArrayList<SysDept>(); for (Long deptId : deptIds) { SysDept sysDept = sysDeptMapper.selectDeptById(deptId); sysDeptList.add(sysDept); } return sysDeptList; } @Override public List<ApproveProcess> listAll() { LambdaQueryWrapper<ApproveProcess> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(ApproveProcess::getApproveDelete, 0); return list(queryWrapper); } @Override public void delApprove(Long[] ids) { for (Long id : ids) { LambdaQueryWrapper<ApproveProcess> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(ApproveProcess::getApproveId, id); update(queryWrapper); } } @Override public ApproveProcess getApproveById(String id) { LambdaQueryWrapper<ApproveProcess> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(ApproveProcess::getApproveId, id); queryWrapper.eq(ApproveProcess::getApproveDelete, 0); return getOne(queryWrapper); } @Override public void updateApproveProcessStatus(ApproveNode approveNode) { ApproveProcess approveProcess = getById(approveNode.getApproveProcessId()); if(approveNode.getIsFirst()){ if(approveNode.getApproveNodeStatus() == 1){ approveProcess.setApproveStatus(1); } } if(approveNode.getIsLast()){ if(approveNode.getApproveNodeStatus() == 1){ approveProcess.setApproveStatus(2); } } } @Override public void updateByApproveId(ApproveGetAndUpdateVo approveGetAndUpdateVo) { ApproveProcess approve = getApproveById(approveGetAndUpdateVo.getId()); approve.setApproveReason(approveGetAndUpdateVo.getApproveReason()); updateById(approve); } } src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,72 @@ package com.ruoyi.approve.utils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.concurrent.TimeUnit; //åºäºredisçä¸ä¸ªæ¯æ¥è®¡æ°å¨ @Component public class DailyRedisCounter { private static final String KEY_PREFIX = "daily_counter:"; private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyyyMMdd"); private final StringRedisTemplate redisTemplate; public DailyRedisCounter(StringRedisTemplate redisTemplate) { this.redisTemplate = redisTemplate; } /** * è·åæå®è®¡æ°å¨å¨ä»æ¥çæ°å¼ï¼å¹¶èªå¢1 * @param counterName 计æ°å¨åç§°ï¼ä¾å¦ï¼login_countãorder_countï¼ * @return 仿¥èªå¢åç计æ°å¼ */ public long incrementAndGet(String counterName) { String key = getKey(counterName); long count = redisTemplate.opsForValue().increment(key, 1); // ä» å¨ç¬¬ä¸æ¬¡è®¾ç½®æ¶è®¾ç½®è¿ææ¶é´ï¼é¿å éå¤è®¾ç½®ï¼ if (count == 1) { long secondsUntilMidnight = calculateSecondsUntilMidnight(); redisTemplate.expire(key, secondsUntilMidnight, TimeUnit.SECONDS); } return count; } /** * è·åæå®è®¡æ°å¨å¨ä»æ¥çå½åæ°å¼ * @param counterName 计æ°å¨åç§° * @return 仿¥å½å计æ°å¼ï¼è¥ä¸åå¨åè¿å0 */ public long getCurrentCount(String counterName) { String key = getKey(counterName); String value = redisTemplate.opsForValue().get(key); return value != null ? Long.parseLong(value) : 0; } /** * 计ç®è·ç¦»æ¬¡æ¥åæ¨çç§æ° */ private long calculateSecondsUntilMidnight() { LocalDate tomorrow = LocalDate.now().plusDays(1); LocalDate midnight = tomorrow.atStartOfDay().toLocalDate(); return java.time.Duration.between( LocalDate.now().atTime(23, 59, 59), midnight.atTime(0, 0, 0) ).getSeconds() + 1; } /** * çæRedisé® */ private String getKey(String counterName) { String today = LocalDate.now().format(DATE_FORMAT); return KEY_PREFIX + counterName + ":" + today; } } src/main/java/com/ruoyi/approve/vo/ApproveGetAndUpdateVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,15 @@ package com.ruoyi.approve.vo; import lombok.Data; import javax.validation.constraints.NotBlank; @Data public class ApproveGetAndUpdateVo { //审æ¹id @NotBlank(message = "æµç¨ç¼å·ä¸è½ä¸ºç©º") private String id; //ç³è¯·äºç± @NotBlank(message = "ç³è¯·äºç±ä¸è½ä¸ºç©º") private String approveReason; } src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ package com.ruoyi.approve.vo; import lombok.Data; import javax.validation.constraints.NotBlank; @Data public class ApproveProcessVO { //é¨é¨id // private Long deptId; //é¨é¨åç§° @NotBlank(message = "é¨é¨åç§°ä¸è½ä¸ºç©º") private String deptName; //审æ¹äºº ids // private String approverIds; //审æ¹äººåç§° @NotBlank(message = "审æ¹äººä¸è½ä¸ºç©º") private String approverNames; //审æ¹äºç± @NotBlank(message = "11") private String approveReason; } src/main/resources/application.yml
@@ -83,7 +83,7 @@ # æ°æ®åºç´¢å¼ database: 0 # å¯ç password: password: root2022! # password: 123456 # è¿æ¥è¶ æ¶æ¶é´ src/main/resources/mapper/approve/ApproveLogMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,21 @@ <?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.approve.mapper.ApproveLogMapper"> <resultMap id="BaseResultMap" type="com.ruoyi.approve.pojo.ApproveLog"> <id property="id" column="id" /> <result property="approveId" column="approve_id" /> <result property="approveNodeOrder" column="approve_node_order" /> <result property="approveUser" column="approve_user" /> <result property="approveTime" column="approve_time" /> <result property="approveStatus" column="approve_status" /> <result property="approveRemark" column="approve_remark" /> </resultMap> <sql id="Base_Column_List"> id,approve_id,approve_node_order,approve_user,approve_time,approve_status, approve_remark </sql> </mapper> src/main/resources/mapper/approve/ApproveNodeMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,24 @@ <?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.approve.mapper.ApproveNodeMapper"> <resultMap id="BaseResultMap" type="com.ruoyi.approve.pojo.ApproveNode"> <id property="id" column="id" /> <result property="approveProcessId" column="approve_process_id" /> <result property="approveNodeOrder" column="approve_node_order" /> <result property="approveNodeUser" column="approve_node_user" /> <result property="approveNodeTime" column="approve_node_time" /> <result property="approveNodeStatus" column="approve_node_status" /> <result property="tenantId" column="tenant_id" /> <result property="deleteFlag" column="delete_flag" /> <result property="approveNodeReason" column="approve_node_reason" /> <result property="approveNodeRemark" column="approve_node_remark" /> </resultMap> <sql id="Base_Column_List"> id,approve_process_id,approve_node_order,approve_node_user,approve_node_time,approve_node_status, tenant_id,delete_flag,approve_node_reason,approve_node_remark </sql> </mapper> src/main/resources/mapper/approve/ApproveProcessMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,30 @@ <?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.approve.mapper.ApproveProcessMapper"> <resultMap id="BaseResultMap" type="com.ruoyi.approve.pojo.ApproveProcess"> <id property="id" column="id" /> <result property="approveId" column="approve_id" /> <result property="approveUser" column="approve_user" /> <result property="approveDeptId" column="approve_dept_id" /> <result property="approveDeptName" column="approve_dept_name" /> <result property="approveUserIds" column="approve_user_ids" /> <result property="approveUserNames" column="approve_user_names" /> <result property="approveReason" column="approve_reason" /> <result property="approveTime" column="approve_time" /> <result property="approveOverTime" column="approve_over_time" /> <result property="approveStatus" column="approve_status" /> <result property="approveDelete" column="approve_delete" /> <result property="tenantId" column="tenant_id" /> <result property="approveType" column="approve_type" /> <result property="approveRemark" column="approve_remark" /> </resultMap> <sql id="Base_Column_List"> id,approve_id,approve_user,approve_dept_id,approve_dept_name,approve_user_ids, approve_user_names,approve_reason,approve_time,approve_over_time,approve_status, approve_delete,tenant_id,approve_type,approve_remark </sql> </mapper>