src/main/java/com/ruoyi/approve/controller/ApproveNodeController.java
@@ -17,7 +17,7 @@ * @param id æµç¨å®¡æ¹id approve_id * @return */ @GetMapping("/details") @GetMapping("/details/{id}") public AjaxResult details(@PathVariable String id) { return AjaxResult.success(approveNodeService.details(id)); } @@ -40,7 +40,7 @@ */ @PostMapping("/init") public AjaxResult init(String id) { approveNodeService.initApproveNodes(id); approveNodeService.initApproveNodes("",id,1L); return AjaxResult.success(); } src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java
@@ -1,5 +1,7 @@ package com.ruoyi.approve.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.approve.pojo.ApproveProcess; import com.ruoyi.approve.service.IApproveProcessService; import com.ruoyi.approve.vo.ApproveGetAndUpdateVo; import com.ruoyi.approve.vo.ApproveProcessVO; @@ -8,8 +10,10 @@ import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.project.system.domain.SysDept; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.text.ParseException; import java.util.List; @RestController @@ -45,7 +49,8 @@ * @return */ @PostMapping("/add") public AjaxResult add(@RequestBody ApproveProcessVO approveProcessVO) { @Transactional(rollbackFor = Exception.class) public AjaxResult add(@RequestBody ApproveProcessVO approveProcessVO) throws ParseException { if (approveProcessVO == null) { return AjaxResult.warn("åæ°ä¸è½ä¸ºç©º"); } @@ -73,6 +78,7 @@ * @return */ @PostMapping("/update") @Transactional(rollbackFor = Exception.class) public AjaxResult update(@RequestBody ApproveGetAndUpdateVo approveGetAndUpdateVo) { if (approveGetAndUpdateVo == null) { return AjaxResult.warn("åæ°ä¸è½ä¸ºç©º"); @@ -85,8 +91,8 @@ * @return */ @GetMapping("/list") public AjaxResult list() { return AjaxResult.success(approveProcessService.listAll()); public AjaxResult list(Page page, ApproveProcess approveProcess) { return AjaxResult.success(approveProcessService.listAll(page, approveProcess)); } /** @@ -94,7 +100,8 @@ * @param ids * @return */ @PostMapping("/deleteIds") @DeleteMapping("/deleteIds") @Transactional(rollbackFor = Exception.class) public AjaxResult deleteIds(@RequestBody Long[] ids) { if (ids == null || ids.length == 0) { return AjaxResult.warn("åæ°ä¸è½ä¸ºç©º"); src/main/java/com/ruoyi/approve/mapper/ApproveProcessMapper.java
@@ -1,7 +1,10 @@ package com.ruoyi.approve.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.approve.pojo.ApproveProcess; import org.apache.ibatis.annotations.Param; /** * @author Administrator @@ -11,6 +14,7 @@ */ public interface ApproveProcessMapper extends BaseMapper<ApproveProcess> { IPage<ApproveProcess> listPage(Page page,@Param("req") ApproveProcess approveProcess); } src/main/java/com/ruoyi/approve/pojo/ApproveNode.java
@@ -1,6 +1,7 @@ package com.ruoyi.approve.pojo; import java.io.Serializable; import java.time.LocalDateTime; import java.util.Date; import com.baomidou.mybatisplus.annotation.FieldFill; @@ -20,9 +21,9 @@ private Long id; /** * 审æ¹id * 审æ¹ç¼å· */ private Long approveProcessId; private String approveProcessId; /** * 审æ¹èç¹é¡ºåº @@ -33,6 +34,11 @@ * 审æ¹èç¹ç¨æ·åå */ private String approveNodeUser; /** * 审æ¹èç¹ç¨æ·id */ private Long approveNodeUserId; /** * 审æ¹èç¹æ¶é´ @@ -63,6 +69,26 @@ private Integer deleteFlag; /** * å ¥åºç¨æ·id */ private Long createUser; /** * å ¥åºæ¶é´ */ private LocalDateTime createTime; /** * ä¿®æ¹è */ private Long updateUser; /** * ä¿®æ¹æ¶é´ */ private LocalDateTime updateTime; /** * 审æ¹èç¹æç»åå */ private String approveNodeReason; src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
@@ -1,6 +1,7 @@ package com.ruoyi.approve.pojo; import java.io.Serializable; import java.time.LocalDateTime; import java.util.Date; import com.baomidou.mybatisplus.annotation.*; @@ -21,7 +22,7 @@ private Long id; /** * 审æ¹id * æµç¨ç¼å· */ private String approveId; @@ -29,6 +30,11 @@ * ç³è¯·äººid */ private Long approveUser; /** * ç³è¯·äººåç§° */ private String approveUserName; /** * ç³è¯·é¨é¨id @@ -41,12 +47,12 @@ private String approveDeptName; /** * ç³è¯·ç¨æ·ids * 审æ¹ç¨æ·ids */ private String approveUserIds; /** * ç³è¯·ç¨æ·åç§° * 审æ¹ç¨æ·åç§° */ private String approveUserNames; @@ -54,6 +60,16 @@ * ç³è¯·åå */ private String approveReason; /** * å½å审æ¹ç¨æ·ID */ private Long approveUserCurrentId; /** * å½å审æ¹ç¨æ·åç§° */ private String approveUserCurrentName; /** * ç³è¯·æ¥æ @@ -93,6 +109,11 @@ */ private String approveRemark; /** * å建æ¶é´ */ private LocalDateTime createTime; private static final long serialVersionUID = 1L; src/main/java/com/ruoyi/approve/service/IApproveNodeService.java
@@ -7,7 +7,7 @@ public interface IApproveNodeService extends IService<ApproveNode> { void initApproveNodes(String id); void initApproveNodes(String approveUserIds,String approveID,Long tenantId); /** * 详æ * @param id @@ -15,4 +15,6 @@ List<ApproveNode> details(String id); void updateApproveNode(ApproveNode approveNode); void delApproveNodeByApproveId(Long id); } src/main/java/com/ruoyi/approve/service/IApproveProcessService.java
@@ -1,5 +1,7 @@ package com.ruoyi.approve.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.approve.pojo.ApproveNode; import com.ruoyi.approve.pojo.ApproveProcess; @@ -7,6 +9,7 @@ import com.ruoyi.approve.vo.ApproveProcessVO; import com.ruoyi.project.system.domain.SysDept; import java.text.ParseException; import java.util.List; public interface IApproveProcessService extends IService<ApproveProcess> { @@ -14,14 +17,14 @@ * æ·»å å®¡æ¹æµç¨ * @param approveProcessVO å®¡æ¹æµç¨VO对象 */ void addApprove(ApproveProcessVO approveProcessVO); void addApprove(ApproveProcessVO approveProcessVO) throws ParseException; /** * æ ¹æ®é¨é¨idæ¥è¯¢é¨é¨ä¿¡æ¯ * @param deptIds é¨é¨IDæ°ç» */ List<SysDept> selectDeptListByDeptIds(Long[] deptIds); List<ApproveProcess> listAll(); IPage<ApproveProcess> listAll(Page page, ApproveProcess approveProcess); void delApprove(Long[] ids); src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -1,6 +1,7 @@ package com.ruoyi.approve.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.approve.mapper.ApproveNodeMapper; import com.ruoyi.approve.pojo.ApproveNode; @@ -8,12 +9,15 @@ import com.ruoyi.approve.service.IApproveNodeService; import com.ruoyi.approve.service.IApproveProcessService; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.mapper.SysUserMapper; 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.time.LocalDateTime; import java.util.Comparator; import java.util.Date; import java.util.List; @@ -26,36 +30,40 @@ private ApproveNodeMapper approveNodeMapper; @Autowired private IApproveProcessService approveProcessService; @Autowired private SysUserMapper sysUserMapper; @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(); public void initApproveNodes(String approveUserIds,String approveID,Long tenantId) { Long userId = SecurityUtils.getLoginUser().getUser().getUserId(); ApproveProcess approve = approveProcessService.getApproveById(approveID); String[] names = approveUserIds.split(","); String approveId = approve.getApproveId(); for (int i = 0; i < names.length; i++) { SysUser sysUser = sysUserMapper.selectUserById(Long.parseLong(names[i])); if (sysUser == null) continue; ApproveNode approveNode = new ApproveNode(); approveNode.setApproveProcessId(approveId); approveNode.setApproveNodeOrder(i +1); approveNode.setApproveNodeUser(names[i]); approveNode.setApproveNodeUser(sysUser.getNickName()); approveNode.setApproveNodeUserId(sysUser.getUserId()); approveNode.setApproveNodeTime(new Date()); approveNode.setApproveNodeStatus(0); approveNode.setTenantId(tenantId); approveNode.setDeleteFlag(0); approveNode.setCreateUser(userId); approveNode.setUpdateUser(userId); approveNode.setCreateTime(LocalDateTime.now()); approveNode.setUpdateTime(LocalDateTime.now()); 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); queryWrapper.eq(ApproveNode::getApproveProcessId, id); List<ApproveNode> list = list(queryWrapper); // æç § approveNodeOrder åæ®µååºæåº list.sort(Comparator.comparingInt(ApproveNode::getApproveNodeOrder)); @@ -71,4 +79,12 @@ approveNodeMapper.updateById(approveNode); } @Override public void delApproveNodeByApproveId(Long id) { UpdateWrapper<ApproveNode> queryWrapper = new UpdateWrapper<>(); queryWrapper.lambda().set(ApproveNode::getDeleteFlag, 1) .eq(ApproveNode::getApproveProcessId, id); update(queryWrapper); } } src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
@@ -1,6 +1,9 @@ package com.ruoyi.approve.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 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.approve.mapper.ApproveProcessMapper; import com.ruoyi.approve.pojo.ApproveNode; @@ -12,19 +15,28 @@ import com.ruoyi.approve.vo.ApproveProcessVO; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.project.system.domain.SysDept; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.mapper.SysDeptMapper; import com.ruoyi.project.system.mapper.SysUserMapper; 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 org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @Service @RequiredArgsConstructor @@ -37,34 +49,52 @@ private final SysDeptMapper sysDeptMapper; private final IApproveNodeService approveNodeService; private final SysUserMapper sysUserMapper; private final ApproveProcessMapper approveProcessMapper; @Override public void addApprove(ApproveProcessVO approveProcessVO) { Long userId = SecurityUtils.getUserId(); //ç§æ·id Long tenantId = SecurityUtils.getLoginUser().getTenantId(); public void addApprove(ApproveProcessVO approveProcessVO) throws ParseException { SysUser sysUser = sysUserMapper.selectUserById(approveProcessVO.getApproveUser()); SysDept sysDept = sysDeptMapper.selectDeptById(approveProcessVO.getApproveDeptId()); String[] split = approveProcessVO.getApproveUserIds().split(","); List<Long> longList = Arrays.stream(split) .map(Long::valueOf) // å°æ¯ä¸ª String 转æ¢ä¸º Long .collect(Collectors.toList()); List<SysUser> sysUsers = sysUserMapper.selectUserByIds(longList); if(CollectionUtils.isEmpty(sysUsers)) throw new RuntimeException("å®¡æ ¸ç¨æ·ä¸åå¨"); if(sysDept == null) throw new RuntimeException("é¨é¨ä¸åå¨"); if(sysUser == null) throw new RuntimeException("ç³è¯·äººä¸åå¨"); String today = LocalDate.now().format(DATE_FORMAT); Long approveId = dailyRedisCounter.incrementAndGet("approveId"); Long approveId = dailyRedisCounter.incrementAndGetByDb(); String formattedCount = String.format("%03d", approveId); //æµç¨ ID String approveID = today + formattedCount; SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); ApproveProcess approveProcess = new ApproveProcess(); approveProcess.setApproveId(approveID); approveProcess.setApproveUser(userId); approveProcess.setApproveDeptName(approveProcessVO.getDeptName()); approveProcess.setApproveUserNames(approveProcessVO.getApproverNames()); approveProcess.setApproveTime(new Date()); approveProcess.setApproveUser(approveProcessVO.getApproveUser()); approveProcess.setApproveUserName(sysUser.getNickName()); approveProcess.setApproveDeptId(approveProcessVO.getApproveDeptId()); approveProcess.setApproveDeptName(sysDept.getDeptName()); approveProcess.setApproveUserNames(sysUsers.stream().map(SysUser::getNickName).collect(Collectors.joining(","))); approveProcess.setApproveTime(StringUtils.isEmpty(approveProcessVO.getApproveTime()) ? null : dateFormat.parse(approveProcessVO.getApproveTime())); approveProcess.setApproveReason(approveProcessVO.getApproveReason()); approveProcess.setApproveOverTime(null); approveProcess.setApproveStatus(0); approveProcess.setApproveDelete(0); approveProcess.setTenantId(tenantId); approveProcess.setCreateTime(LocalDateTime.now()); approveProcess.setTenantId(approveProcessVO.getApproveDeptId()); approveProcess.setApproveUserIds(approveProcessVO.getApproveUserIds()); approveProcess.setApproveUserCurrentId(longList.get(0)); approveProcess.setApproveUserCurrentName(sysUsers .stream() .filter(SysUser -> SysUser.getUserId().equals(longList.get(0))) .collect(Collectors.toList()) .get(0) .getNickName()); save(approveProcess); //åå§å审æ¹èç¹ approveNodeService.initApproveNodes(approveID); approveNodeService.initApproveNodes(approveProcessVO.getApproveUserIds(),approveID,approveProcessVO.getApproveDeptId()); } @Override @@ -78,19 +108,23 @@ } @Override public List<ApproveProcess> listAll() { LambdaQueryWrapper<ApproveProcess> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(ApproveProcess::getApproveDelete, 0); return list(queryWrapper); public IPage<ApproveProcess> listAll(Page page,ApproveProcess approveProcess) { IPage<ApproveProcess> approveProcessIPage = approveProcessMapper.listPage(page,approveProcess); return approveProcessIPage; } @Override public void delApprove(Long[] ids) { for (Long id : ids) { LambdaQueryWrapper<ApproveProcess> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(ApproveProcess::getApproveId, id); UpdateWrapper<ApproveProcess> queryWrapper = new UpdateWrapper<>(); queryWrapper.lambda().set(ApproveProcess::getApproveDelete, 1) .eq(ApproveProcess::getApproveId, id); update(queryWrapper); // å é¤å ³èç审æ¹èç¹ approveNodeService.delApproveNodeByApproveId(id); } } @Override src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java
@@ -1,12 +1,18 @@ package com.ruoyi.approve.utils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.approve.mapper.ApproveProcessMapper; import com.ruoyi.approve.pojo.ApproveProcess; 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.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.Calendar; import java.util.Date; import java.util.concurrent.TimeUnit; @@ -21,7 +27,7 @@ this.redisTemplate = redisTemplate; } /** /**æ¥ç¼å * è·åæå®è®¡æ°å¨å¨ä»æ¥çæ°å¼ï¼å¹¶èªå¢1 * @param counterName 计æ°å¨åç§°ï¼ä¾å¦ï¼login_countãorder_countï¼ * @return 仿¥èªå¢åç计æ°å¼ @@ -39,6 +45,43 @@ return count; } @Autowired private ApproveProcessMapper approveProcessMapper; /** * è·åå½åæ¶é´ç å¼å§æ¥æ ï¼ç»ææ¥æ * @return */ public static StartAndEndDateDto getDateTime(){ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date date = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.DATE,1); String startDateTime = simpleDateFormat.format(date); String endDateTime = simpleDateFormat.format(cal.getTime()); StartAndEndDateDto startAndEndDateDto = new StartAndEndDateDto(); startAndEndDateDto.setStartDate(startDateTime); startAndEndDateDto.setEndDate(endDateTime); return startAndEndDateDto; } /**æ¥æ°æ®åº * è·åæå®è®¡æ°å¨å¨ä»æ¥çæ°å¼ï¼å¹¶èªå¢1 * @return 仿¥èªå¢åç计æ°å¼ */ public long incrementAndGetByDb() { StartAndEndDateDto dateTime = getDateTime(); LambdaQueryWrapper<ApproveProcess> approveProcessLambdaQueryWrapper = new LambdaQueryWrapper<>(); approveProcessLambdaQueryWrapper .eq(ApproveProcess::getApproveDelete,0) .gt(ApproveProcess::getCreateTime,dateTime.getStartDate()) .lt(ApproveProcess::getCreateTime,dateTime.getEndDate()); Long aLong = approveProcessMapper.selectCount(approveProcessLambdaQueryWrapper); return aLong == null ? 1 : aLong + 1; } /** * è·åæå®è®¡æ°å¨å¨ä»æ¥çå½åæ°å¼ * @param counterName 计æ°å¨åç§° src/main/java/com/ruoyi/approve/utils/StartAndEndDateDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,21 @@ package com.ruoyi.approve.utils; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @author :yys * @date : 2023/9/19 10:58 */ @Data @ApiModel public class StartAndEndDateDto { @ApiModelProperty("å¼å§æ¶é´") private String startDate; @ApiModelProperty("ç»ææ¶é´") private String endDate; } src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
@@ -7,17 +7,16 @@ @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 Long approveDeptId; private String approveTime; // ç³è¯·äºº private Long approveUser; // 审æ¹äºº private String approveUserIds; private String approveReason; } src/main/java/com/ruoyi/framework/security/service/TokenService.java
@@ -1,9 +1,15 @@ package com.ruoyi.framework.security.service; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.project.system.domain.SysUserDept; import com.ruoyi.project.system.mapper.SysUserDeptMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -22,6 +28,7 @@ import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import org.springframework.util.CollectionUtils; /** * tokenéªè¯å¤ç @@ -140,6 +147,9 @@ } } @Autowired private SysUserDeptMapper sysUserDeptMapper; /** * å·æ°ä»¤çæææ * @@ -149,6 +159,13 @@ { loginUser.setLoginTime(System.currentTimeMillis()); loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE); LambdaQueryWrapper<SysUserDept> sysUserDeptLambdaQueryWrapper = new LambdaQueryWrapper<>(); sysUserDeptLambdaQueryWrapper.eq(SysUserDept::getUserId, loginUser.getUserId()); List<SysUserDept> sysUserDept = sysUserDeptMapper.selectList(sysUserDeptLambdaQueryWrapper); if(!CollectionUtils.isEmpty(sysUserDept)){ List<Long> collect = sysUserDept.stream().map(SysUserDept::getDeptId).collect(Collectors.toList()); loginUser.setDeptId(collect.toArray(new Long[0])); } // æ ¹æ®uuidå°loginUserç¼å String userKey = getTokenKey(loginUser.getToken()); redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES); src/main/java/com/ruoyi/other/service/impl/TempFileServiceImpl.java
@@ -41,6 +41,7 @@ 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()); src/main/java/com/ruoyi/project/system/mapper/SysUserMapper.java
@@ -54,6 +54,14 @@ public SysUser selectUserById(Long userId); /** * éè¿ç¨æ·IDæ¥è¯¢ç¨æ· * * @param userId ç¨æ·ID * @return ç¨æ·å¯¹è±¡ä¿¡æ¯ */ public List<SysUser> selectUserByIds(@Param("userIds") List<Long> userId); /** * æ°å¢ç¨æ·ä¿¡æ¯ * * @param user ç¨æ·ä¿¡æ¯ src/main/resources/mapper/approve/ApproveProcessMapper.xml
@@ -27,4 +27,10 @@ approve_user_names,approve_reason,approve_time,approve_over_time,approve_status, approve_delete,tenant_id,approve_type,approve_remark </sql> <select id="listPage" resultType="com.ruoyi.approve.pojo.ApproveProcess"> select * from approve_process where approve_delete = 0 <if test="req.approveId != null and req.approveId != ''"> and approve_id like concat('%',#{req.approveId},'%') </if> </select> </mapper> src/main/resources/mapper/system/SysUserMapper.xml
@@ -150,7 +150,13 @@ <select id="checkEmailUnique" parameterType="String" resultMap="SysUserResult"> select user_id, email from sys_user where email = #{email} and del_flag = '0' limit 1 </select> <select id="selectUserByIds" resultType="com.ruoyi.project.system.domain.SysUser"> <include refid="selectUserVo"/> where u.user_id in <foreach collection="userIds" item="item" open="(" separator="," close=")"> #{item} </foreach> </select> <insert id="insertUser" parameterType="com.ruoyi.project.system.domain.SysUser" useGeneratedKeys="true" keyProperty="userId"> insert into sys_user( <if test="userId != null and userId != 0">user_id,</if>