| | |
| | | * @return |
| | | */ |
| | | @GetMapping("/get") |
| | | public AjaxResult get(@RequestBody ApproveGetAndUpdateVo approveGetAndUpdateVo){ |
| | | public AjaxResult get(ApproveGetAndUpdateVo approveGetAndUpdateVo){ |
| | | if (approveGetAndUpdateVo.getId() == null || approveGetAndUpdateVo.getId().isEmpty()) { |
| | | return AjaxResult.warn("参数不能为空"); |
| | | } |
| | |
| | | |
| | | 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 lombok.Data; |
| | | |
| | |
| | | * @TableName approve_node |
| | | */ |
| | | @Data |
| | | public class ApproveNode implements Serializable { |
| | | @TableName("approve_node") |
| | | public class ApproveNode{ |
| | | /** |
| | | * |
| | | */ |
| | |
| | | @TableField(exist = false) |
| | | private Boolean isFirst; |
| | | |
| | | |
| | | /** |
| | | * 是否为最后一步 |
| | | */ |
| | | @TableField(exist = false) |
| | | private Boolean isLast; |
| | | |
| | | /** |
| | | * 是否为当前审核节点 |
| | | */ |
| | | @TableField(exist = false) |
| | | private Boolean isShen = false; |
| | | |
| | | /** |
| | | * 租户id |
| | | */ |
| | | @TableField(fill = FieldFill.INSERT) |
| | | // @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Data |
| | | @TableName("approve_process") |
| | | public class ApproveProcess implements Serializable { |
| | | public class ApproveProcess{ |
| | | /** |
| | | * |
| | | */ |
| | |
| | | private Date approveOverTime; |
| | | |
| | | /** |
| | | * 审批状态:0待审核,1审核中,2审核完成 |
| | | * 审批状态:0待审核,1审核中,2审核完成 3审核未通过 |
| | | */ |
| | | private Integer approveStatus; |
| | | |
| | |
| | | /** |
| | | * 租户id |
| | | */ |
| | | @TableField(fill = FieldFill.INSERT) |
| | | // @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | |
| | | /** |
| | |
| | | * 审批状态更新 |
| | | * @param approveNode |
| | | */ |
| | | void updateApproveProcessStatus(ApproveNode approveNode); |
| | | void updateApproveProcessStatus(ApproveNode approveNode,Integer status); |
| | | } |
| | |
| | | public List<ApproveNode> details(String id) { |
| | | LambdaQueryWrapper<ApproveNode> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.eq(ApproveNode::getApproveProcessId, id); |
| | | queryWrapper.eq(ApproveNode::getDeleteFlag, 0); |
| | | queryWrapper.eq(ApproveNode::getTenantId, SecurityUtils.getLoginUser().getTenantId()); |
| | | List<ApproveNode> list = list(queryWrapper); |
| | | // 按照 approveNodeOrder 字段升序排序 |
| | | list.sort(Comparator.comparingInt(ApproveNode::getApproveNodeOrder)); |
| | | LambdaQueryWrapper<ApproveProcess> approveProcessLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | approveProcessLambdaQueryWrapper.eq(ApproveProcess::getApproveId, id) |
| | | .eq(ApproveProcess::getApproveDelete, 0) |
| | | .eq(ApproveProcess::getTenantId, SecurityUtils.getLoginUser().getTenantId()) |
| | | .last("limit 1"); |
| | | ApproveProcess approveProcess = approveProcessService.getOne(approveProcessLambdaQueryWrapper); |
| | | if(approveProcess != null && approveProcess.getApproveStatus() == 3){ |
| | | return list; |
| | | } |
| | | for (ApproveNode approveNode : list) { |
| | | if(approveNode.getApproveNodeStatus() == 1){ |
| | | continue; |
| | | } |
| | | approveNode.setIsShen(true); |
| | | break; |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | @Override |
| | | public void updateApproveNode(ApproveNode approveNode) { |
| | | approveProcessService.updateApproveProcessStatus(approveNode); |
| | | |
| | | // 审批节点状态:1同意,2拒绝,0尚未审核 |
| | | switch (approveNode.getApproveNodeStatus()){ |
| | | case 1: |
| | | approveProcessService.updateApproveProcessStatus(approveNode, Boolean.TRUE.equals(approveNode.getIsLast()) ? 2 : 1); |
| | | break; |
| | | case 2: |
| | | approveProcessService.updateApproveProcessStatus(approveNode, 3); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | approveNode.setApproveNodeTime(new Date()); |
| | | |
| | | approveNodeMapper.updateById(approveNode); |
| | | } |
| | | |
| | |
| | | LambdaQueryWrapper<ApproveProcess> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.eq(ApproveProcess::getApproveId, id); |
| | | queryWrapper.eq(ApproveProcess::getApproveDelete, 0); |
| | | return getOne(queryWrapper); |
| | | queryWrapper.eq(ApproveProcess::getTenantId, SecurityUtils.getLoginUser().getTenantId()); |
| | | queryWrapper.last("limit 1"); |
| | | ApproveProcess one = getOne(queryWrapper); |
| | | return one; |
| | | } |
| | | |
| | | @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); |
| | | } |
| | | } |
| | | |
| | | public void updateApproveProcessStatus(ApproveNode approveNode,Integer status) { |
| | | LambdaQueryWrapper<ApproveProcess> approveProcessLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | approveProcessLambdaQueryWrapper.eq(ApproveProcess::getApproveId, approveNode.getApproveProcessId()) |
| | | .eq(ApproveProcess::getApproveDelete, 0) |
| | | .eq(ApproveProcess::getTenantId, SecurityUtils.getLoginUser().getTenantId()) |
| | | .last("limit 1"); |
| | | ApproveProcess approveProcess = approveProcessMapper.selectOne(approveProcessLambdaQueryWrapper); |
| | | if(approveProcess == null) throw new RuntimeException("审批不存在"); |
| | | approveProcess.setApproveStatus(status); |
| | | updateById(approveProcess); |
| | | } |
| | | |
| | | @Override |
| | |
| | | * @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); |
| | | String approveId = redisTemplate.opsForValue().get("approveNum"); |
| | | if(approveId == null){ |
| | | 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); |
| | | if(aLong == null){ |
| | | redisTemplate.opsForValue().set("approveNum","1",1L, TimeUnit.HOURS); |
| | | return 1; |
| | | }else{ |
| | | aLong += 1; |
| | | redisTemplate.opsForValue().set("approveNum",aLong.toString(),1L, TimeUnit.HOURS); |
| | | return aLong; |
| | | } |
| | | }else{ |
| | | Long num = Long.parseLong(approveId) + 1; |
| | | redisTemplate.opsForValue().set("approveNum",num.toString(),1L, TimeUnit.HOURS); |
| | | return Long.parseLong(approveId); |
| | | } |
| | | |
| | | return aLong == null ? 1 : aLong + 1; |
| | | } |
| | | |
| | | /** |
| | |
| | | package com.ruoyi.procurementrecord.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import lombok.Builder; |
| | | import lombok.Data; |
| | | |
| | |
| | | /** |
| | | * 租户ID |
| | | */ |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | |
| | | } |
| | |
| | | package com.ruoyi.procurementrecord.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import lombok.Builder; |
| | | import lombok.Data; |
| | | |
| | |
| | | /** |
| | | * 租户ID |
| | | */ |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | } |
| | |
| | | .createUser(Long.valueOf(procurementRecordOutAdd.getUserId())) |
| | | .createBy(sysUser.getNickName()) |
| | | .updateUser(Long.valueOf(procurementRecordOutAdd.getUserId())) |
| | | .updateTime(LocalDateTime.now()) |
| | | .tenantId(sysUser.getTenantId()); |
| | | .updateTime(LocalDateTime.now()); |
| | | this.save(procurementRecordOut.build()); |
| | | return 0; |
| | | } |
| | |
| | | .createUser(loginUser.getUserId()) |
| | | .updateTime(LocalDateTime.now()) |
| | | .updateUser(loginUser.getUserId()) |
| | | .tenantId(loginUser.getTenantId()) |
| | | .createBy(procurementDto.getNickName()); |
| | | this.save(procurementRecordBuilder.build()); |
| | | // 入库成功减掉采购数量 |
| | |
| | | </select> |
| | | |
| | | <select id="checkDeptExistUser" parameterType="Long" resultType="int"> |
| | | select count(1) from sys_user where dept_id = #{deptId} and del_flag = '0' |
| | | select count(1) from sys_user_dept where dept_id = #{deptId} |
| | | </select> |
| | | |
| | | <select id="hasChildByDeptId" parameterType="Long" resultType="int"> |
| | |
| | | FROM |
| | | sys_user_dept T1 |
| | | LEFT JOIN sys_dept T2 ON T1.dept_id = T2.dept_id |
| | | <where> |
| | | <if test="tenantId != null and tenantId != 0"> |
| | | T1.dept_id = #{tenantId} |
| | | </if> |
| | | </where> |
| | | GROUP BY T1.user_id |
| | | ) T2 on T2.user_id = u.user_id |
| | | where u.del_flag = '0' |
| | | <if test="tenantId != null and tenantId != 0"> |
| | | and u.tenant_id = #{tenantId} |
| | | </if> |
| | | <if test="userId != null and userId != 0"> |
| | | AND u.user_id = #{userId} |
| | | </if> |