我的待办

liweidong
maxiangong 1 week ago
parent 267ed1ce23
commit 3e7400102c
  1. 45
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/common/feign/IMesApprovalRecordClient.java
  2. 47
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/common/pojo/dto/MesApprovalRecordFeignDTO.java
  3. 37
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/common/pojo/entity/MesApprovalFlowDefPermEntity.java
  4. 39
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/common/pojo/entity/MesApprovalRecordHandleLogEntity.java
  5. 35
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/common/pojo/entity/MesApprovalRecordPermissionEntity.java
  6. 14
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/common/pojo/vo/MyMesApprovalRecordVO.java
  7. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/common/controller/MesApprovalRecordController.java
  8. 38
      blade-service/blade-desk/src/main/java/org/springblade/desk/common/feign/MesApprovalRecordClient.java
  9. 69
      blade-service/blade-desk/src/main/java/org/springblade/desk/common/mapper/ApprovalRecordMapper.xml
  10. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/common/mapper/MesApprovalFlowDefPermMapper.java
  11. 20
      blade-service/blade-desk/src/main/java/org/springblade/desk/common/mapper/MesApprovalFlowDefPermMapper.xml
  12. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/common/mapper/MesApprovalRecordHandleLogMapper.java
  13. 20
      blade-service/blade-desk/src/main/java/org/springblade/desk/common/mapper/MesApprovalRecordHandleLogMapper.xml
  14. 22
      blade-service/blade-desk/src/main/java/org/springblade/desk/common/mapper/MesApprovalRecordMapper.java
  15. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/common/mapper/MesApprovalRecordPermissionMapper.java
  16. 20
      blade-service/blade-desk/src/main/java/org/springblade/desk/common/mapper/MesApprovalRecordPermissionMapper.xml
  17. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/common/service/IMesApprovalFlowDefPermService.java
  18. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/common/service/IMesApprovalRecordHandleLogService.java
  19. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/common/service/IMesApprovalRecordPermissionService.java
  20. 81
      blade-service/blade-desk/src/main/java/org/springblade/desk/common/service/IMesApprovalRecordService.java
  21. 11
      blade-service/blade-desk/src/main/java/org/springblade/desk/common/service/impl/MesApprovalFlowDefPermServiceImpl.java
  22. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/common/service/impl/MesApprovalFlowDefinitionServiceImpl.java
  23. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/common/service/impl/MesApprovalFlowUserServiceImpl.java
  24. 13
      blade-service/blade-desk/src/main/java/org/springblade/desk/common/service/impl/MesApprovalRecordHandleLogServiceImpl.java
  25. 11
      blade-service/blade-desk/src/main/java/org/springblade/desk/common/service/impl/MesApprovalRecordPermissionServiceImpl.java
  26. 230
      blade-service/blade-desk/src/main/java/org/springblade/desk/common/service/impl/MesApprovalRecordServiceImpl.java
  27. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemSettlementApprovalServiceImpl.java
  28. 35
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java

@ -26,6 +26,7 @@
package org.springblade.desk.common.feign;
import org.springblade.core.tool.api.R;
import org.springblade.desk.common.pojo.dto.MesApprovalRecordFeignDTO;
import org.springblade.desk.common.pojo.entity.MesApprovalRecordEntity;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
@ -43,22 +44,42 @@ import org.springframework.web.bind.annotation.RequestBody;
public interface IMesApprovalRecordClient {
String API_PREFIX = "/feign/client/mesApprovalRecord";
String SAVE = API_PREFIX + "/save";
String UPDATE = API_PREFIX + "/update";
String CREATE_APPROVAL = API_PREFIX + "/createApproval";
String PASS_APPROVAL = API_PREFIX + "/passApproval";
String PENDING_APPROVAL = API_PREFIX + "/pendingApproval";
String REJECT_APPROVAL = API_PREFIX + "/rejectApproval";
/**
* 创建审核记录
*
* @param mesApprovalRecord
* @return
*/
@PostMapping(CREATE_APPROVAL)
R createApproval(@RequestBody MesApprovalRecordFeignDTO mesApprovalRecord);
/**
* 审核成功记录状态流转
* @param mesApprovalRecord
* @return
*/
@PostMapping(PASS_APPROVAL)
R passApproval(@RequestBody MesApprovalRecordFeignDTO mesApprovalRecord);
/**
* 新增审批记录表
* @param mesApprovalRecord 审批记录表
* @return 结果
* 审核中增加审核人记录
* @param mesApprovalRecord
* @return
*/
@PostMapping(SAVE)
R save(@RequestBody MesApprovalRecordEntity mesApprovalRecord);
@PostMapping(PENDING_APPROVAL)
R pendingApproval(@RequestBody MesApprovalRecordFeignDTO mesApprovalRecord);
/**
* 修改审批记录表
* @param mesApprovalRecord 审批记录表
* @return 结果
* 审核失败记录状态流转
* @param mesApprovalRecord
* @return
*/
@PostMapping(UPDATE)
R update(@RequestBody MesApprovalRecordEntity mesApprovalRecord);
@PostMapping(REJECT_APPROVAL)
R rejectApproval(@RequestBody MesApprovalRecordFeignDTO mesApprovalRecord);
}

@ -0,0 +1,47 @@
package org.springblade.desk.common.pojo.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
/**
* 待办审核记录Feign数据传输对象实体类
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MesApprovalRecordFeignDTO {
/**
* 业务ID
*/
private Long bizId;
/**
* 业务类型
*/
private String bizType;
/**
* 审批用户
*/
private Long approvalUser;
/**
* 审批时间
*/
private Date approvalTime;
/**
* 角色ID集合
*/
private List<Long> roleIds;
/**
* 用户ID集合
*/
private List<Long> userIds;
}

@ -0,0 +1,37 @@
package org.springblade.desk.common.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
/**
* 审批流定义权限表
*/
@Data
@TableName("MES_APPROVAL_FLOW_DEF_PERM")
@Schema(description = "MesApprovalFlowDefPerm对象")
@EqualsAndHashCode(callSuper = true)
public class MesApprovalFlowDefPermEntity extends BaseEntity {
/**
* 定义ID
*/
@Schema(description = "定义ID")
private Long definitionId;
/**
* 权限类型0-角色1-用户
*/
@Schema(description = "权限类型:0-角色,1-用户")
private Integer permissionType;
/**
* 权限ID角色ID用户ID
*/
@Schema(description = "权限ID:角色ID,用户ID")
private Long permissionId;
}

@ -0,0 +1,39 @@
package org.springblade.desk.common.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import java.util.Date;
/**
* 审批记录处理日志表实体类
*/
@Data
@TableName("MES_APPROVAL_RECORD_HANDLE_LOG")
@Schema(description = "MesApprovalRecordHandleLog对象")
@EqualsAndHashCode(callSuper = true)
public class MesApprovalRecordHandleLogEntity extends BaseEntity {
/**
* 审批记录ID
*/
@Schema(description = "审批记录ID")
private Long recordId;
/**
* 审批人
*/
@Schema(description = "审批人")
private Long approvalUser;
/**
* 审批时间
*/
@Schema(description = "审批时间")
private Date approvalTime;
}

@ -0,0 +1,35 @@
package org.springblade.desk.common.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
/**
* 审批记录权限表实体类
*/
@Data
@TableName("MES_APPROVAL_RECORD_PERMISSION")
@Schema(description = "MesApprovalRecordPermission对象")
@EqualsAndHashCode(callSuper = true)
public class MesApprovalRecordPermissionEntity extends BaseEntity {
/**
* 审批记录ID
*/
@Schema(description = "审批记录ID")
private Long recordId;
/**
* 权限类型0-角色1-用户
*/
@Schema(description = "权限类型:0-角色,1-用户")
private Integer permissionType;
/**
* 权限ID角色ID用户ID
*/
@Schema(description = "权限ID:角色ID,用户ID")
private Long permissionId;
}

@ -3,6 +3,8 @@ package org.springblade.desk.common.pojo.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* @author 石玖洲
* @Description 我的审批VO展示类
@ -12,9 +14,15 @@ import lombok.EqualsAndHashCode;
@Data
public class MyMesApprovalRecordVO extends MesApprovalRecordVO{
private String statusName;
private String createUserName;
private String statusList;
private Integer approvalStatus;
private String approvalStatusName;
private Date approvalTime;
private String startTime;
private String endTime;
}

@ -34,6 +34,7 @@ import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.desk.common.pojo.entity.MesApprovalRecordEntity;
@ -67,10 +68,9 @@ public class MesApprovalRecordController extends BladeController {
*/
@GetMapping("/pageMyApprovalRecord")
@Operation(summary = "获取我的审批分页", description = "传入mesApprovalRecord")
public R<IPage<MyMesApprovalRecordVO>> pageMyApprovalRecord(MyMesApprovalRecordVO mesApprovalRecord, Query query) {
// mesApprovalRecord.setNextRoleId(Long.parseLong(AuthUtil.getUser().getRoleId()));
Page<MesApprovalRecordEntity> page = new Page<>(query.getCurrent(), query.getSize());
IPage<MyMesApprovalRecordVO> pages = mesApprovalRecordService.selectMyMesApprovalRecordPage(page, mesApprovalRecord);
public R<IPage<MyMesApprovalRecordVO>> pageMyApprovalRecord(MyMesApprovalRecordVO mesApprovalRecord, Query query, BladeUser user) {
Page<MyMesApprovalRecordVO> page = new Page<>(query.getCurrent(), query.getSize());
IPage<MyMesApprovalRecordVO> pages = mesApprovalRecordService.selectMyMesApprovalRecordPage(page, mesApprovalRecord, user);
return R.data(pages);
}

@ -29,6 +29,7 @@ import lombok.AllArgsConstructor;
import io.swagger.v3.oas.annotations.Hidden;
import org.springblade.core.tool.api.R;
import org.springblade.desk.common.constant.ApprovalStatusConstant;
import org.springblade.desk.common.pojo.dto.MesApprovalRecordFeignDTO;
import org.springblade.desk.common.pojo.entity.MesApprovalRecordEntity;
import org.springblade.desk.common.service.IMesApprovalRecordService;
import org.springframework.web.bind.annotation.RestController;
@ -47,15 +48,42 @@ public class MesApprovalRecordClient implements IMesApprovalRecordClient {
private final IMesApprovalRecordService mesApprovalRecordService;
@Override
public R save(MesApprovalRecordEntity mesApprovalRecord) {
mesApprovalRecord.setStatus(ApprovalStatusConstant.WAITING);
mesApprovalRecordService.save(mesApprovalRecord);
public R createApproval(MesApprovalRecordFeignDTO mesApprovalRecord) {
try {
mesApprovalRecordService.createApproval(mesApprovalRecord.getBizId(), mesApprovalRecord.getBizType(), mesApprovalRecord.getApprovalUser(), mesApprovalRecord.getApprovalTime(), mesApprovalRecord.getRoleIds(), mesApprovalRecord.getUserIds());
} catch (Exception e) {
return R.fail(e.getMessage());
}
return R.success();
}
@Override
public R passApproval(MesApprovalRecordFeignDTO mesApprovalRecord) {
try {
mesApprovalRecordService.passApproval(mesApprovalRecord.getBizId(), mesApprovalRecord.getBizType(), mesApprovalRecord.getApprovalUser(), mesApprovalRecord.getApprovalTime(), mesApprovalRecord.getRoleIds(), mesApprovalRecord.getUserIds());
} catch (Exception e) {
return R.fail(e.getMessage());
}
return R.success();
}
@Override
public R update(MesApprovalRecordEntity mesApprovalRecord) {
mesApprovalRecordService.updateById(mesApprovalRecord);
public R pendingApproval(MesApprovalRecordFeignDTO mesApprovalRecord) {
try {
mesApprovalRecordService.pendingApproval(mesApprovalRecord.getBizId(), mesApprovalRecord.getBizType(), mesApprovalRecord.getApprovalUser(), mesApprovalRecord.getApprovalTime());
} catch (Exception e) {
return R.fail(e.getMessage());
}
return R.success();
}
@Override
public R rejectApproval(MesApprovalRecordFeignDTO mesApprovalRecord) {
try {
mesApprovalRecordService.rejectApproval(mesApprovalRecord.getBizId(), mesApprovalRecord.getBizType(), mesApprovalRecord.getApprovalUser(), mesApprovalRecord.getApprovalTime());
} catch (Exception e) {
return R.fail(e.getMessage());
}
return R.success();
}
}

@ -22,6 +22,11 @@
<result column="IS_DELETED" property="isDeleted"/>
</resultMap>
<resultMap id="mesApprovalRecordVOResultMap" type="org.springblade.desk.common.pojo.vo.MyMesApprovalRecordVO" extends="mesApprovalRecordResultMap">
<result column="APPROVAL_STATUS" property="approvalStatus"/>
<result column="APPROVAL_TIME" property="approvalTime"/>
</resultMap>
<select id="selectMyMesApprovalRecordPage" resultMap="mesApprovalRecordResultMap">
select * from MES_APPROVAL_RECORD where is_deleted = 0
@ -31,4 +36,68 @@
select * from MES_APPROVAL_RECORD where is_deleted = 0
</select>
<select id="selectMyToDoPage" resultMap="mesApprovalRecordVOResultMap">
SELECT DISTINCT t1.*
FROM MES_APPROVAL_RECORD t1
WHERE t1.STATUS = 0
AND t1.IS_DELETED = 0
AND (
NOT EXISTS (SELECT 1
FROM MES_APPROVAL_RECORD_PERMISSION t2
WHERE t2.RECORD_ID = t1.ID
AND t2.IS_DELETED = 0)
OR EXISTS (SELECT 1
FROM MES_APPROVAL_RECORD_PERMISSION t2
WHERE t2.RECORD_ID = t1.ID
AND t2.IS_DELETED = 0
AND (
(t2.PERMISSION_TYPE = 1 AND t2.PERMISSION_ID = #{loginUserId})
<if test="userRoleIds != null and userRoleIds != ''">
OR t2.PERMISSION_TYPE = 0 AND t2.PERMISSION_ID IN
<foreach collection="userRoleIds.split(',')" open="(" close=")" separator="," item="userRoleId">
#{userRoleId}
</foreach>
</if>
))
)
AND NOT EXISTS (SELECT 1
FROM MES_APPROVAL_RECORD_HANDLE_LOG t3
WHERE t3.RECORD_ID = t1.ID
AND t3.APPROVAL_USER = #{loginUserId}
AND t3.IS_DELETED = 0)
<if test="mesApprovalRecord.bizType != null and mesApprovalRecord.bizType != ''">
AND t1.BIZ_TYPE = #{mesApprovalRecord.bizType}
</if>
<if test="mesApprovalRecord.content != null and mesApprovalRecord.content != ''">
AND t1.CONTENT like concat(concat('%', #{mesApprovalRecord.content}),'%')
</if>
<if test="mesApprovalRecord.startTime !=null and mesApprovalRecord.startTime != ''">
and to_char(t1.CREATE_TIME,'YYYY-MM-DD') <![CDATA[ >= ]]> #{mesApprovalRecord.startTime}
</if>
<if test="mesApprovalRecord.endTime !=null and mesApprovalRecord.endTime != ''">
and to_char(t1.CREATE_TIME,'YYYY-MM-DD') <![CDATA[ <= ]]> #{mesApprovalRecord.endTime}
</if>
ORDER BY t1.CREATE_TIME
</select>
<select id="selectMyDonePage" resultMap="mesApprovalRecordVOResultMap">
SELECT DISTINCT t1.*, t3.STATUS as APPROVAL_STATUS, t3.APPROVAL_TIME
FROM MES_APPROVAL_RECORD t1
INNER JOIN MES_APPROVAL_RECORD_HANDLE_LOG t3
ON t1.ID = t3.RECORD_ID AND t3.APPROVAL_USER = #{loginUserId} AND t3.IS_DELETED = 0
WHERE t1.IS_DELETED = 0
<if test="mesApprovalRecord.bizType != null and mesApprovalRecord.bizType != ''">
AND t1.BIZ_TYPE = #{mesApprovalRecord.bizType}
</if>
<if test="mesApprovalRecord.content != null and mesApprovalRecord.content != ''">
AND t1.CONTENT like concat(concat('%', #{mesApprovalRecord.content}),'%')
</if>
<if test="mesApprovalRecord.startTime !=null and mesApprovalRecord.startTime != ''">
and to_char(t3.CREATE_TIME,'YYYY-MM-DD') <![CDATA[ >= ]]> #{mesApprovalRecord.startTime}
</if>
<if test="mesApprovalRecord.endTime !=null and mesApprovalRecord.endTime != ''">
and to_char(t3.CREATE_TIME,'YYYY-MM-DD') <![CDATA[ <= ]]> #{mesApprovalRecord.endTime}
</if>
</select>
</mapper>

@ -0,0 +1,8 @@
package org.springblade.desk.common.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springblade.desk.common.pojo.entity.MesApprovalFlowDefPermEntity;
public interface MesApprovalFlowDefPermMapper extends BaseMapper<MesApprovalFlowDefPermEntity> {
}

@ -0,0 +1,20 @@
<?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="org.springblade.desk.common.mapper.MesApprovalFlowDefPermMapper">
<!-- 通用查询映射结果 -->
<resultMap id="mesApprovalFlowDefPermResultMap" type="org.springblade.desk.common.pojo.entity.MesApprovalFlowDefPermEntity">
<result column="ID" property="id"/>
<result column="DEFINITION_ID" property="definitionId"/>
<result column="PERMISSION_TYPE" property="permissionType"/>
<result column="PERMISSION_ID" property="permissionId"/>
<result column="CREATE_USER" property="createUser"/>
<result column="CREATE_DEPT" property="createDept"/>
<result column="CREATE_TIME" property="createTime"/>
<result column="UPDATE_USER" property="updateUser"/>
<result column="UPDATE_TIME" property="updateTime"/>
<result column="STATUS" property="status"/>
<result column="IS_DELETED" property="isDeleted"/>
</resultMap>
</mapper>

@ -0,0 +1,7 @@
package org.springblade.desk.common.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springblade.desk.common.pojo.entity.MesApprovalRecordHandleLogEntity;
public interface MesApprovalRecordHandleLogMapper extends BaseMapper<MesApprovalRecordHandleLogEntity> {
}

@ -0,0 +1,20 @@
<?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="org.springblade.desk.common.mapper.MesApprovalRecordHandleLogMapper">
<!-- 通用查询映射结果 -->
<resultMap id="mesApprovalRecordHandleLogResultMap" type="org.springblade.desk.common.pojo.entity.MesApprovalRecordHandleLogEntity">
<result column="ID" property="id"/>
<result column="RECORD_ID" property="recordId"/>
<result column="APPROVAL_USER" property="approvalUser"/>
<result column="APPROVAL_TIME" property="approvalTime"/>
<result column="CREATE_USER" property="createUser"/>
<result column="CREATE_DEPT" property="createDept"/>
<result column="CREATE_TIME" property="createTime"/>
<result column="UPDATE_USER" property="updateUser"/>
<result column="UPDATE_TIME" property="updateTime"/>
<result column="STATUS" property="status"/>
<result column="IS_DELETED" property="isDeleted"/>
</resultMap>
</mapper>

@ -28,6 +28,7 @@ package org.springblade.desk.common.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.desk.common.pojo.entity.MesApprovalRecordEntity;
import org.springblade.desk.common.pojo.vo.MesApprovalRecordVO;
import org.springblade.desk.common.pojo.vo.MyHistoryMesApprovalRecordVO;
import org.springblade.desk.common.pojo.vo.MyMesApprovalRecordVO;
@ -59,4 +60,25 @@ public interface MesApprovalRecordMapper extends BaseMapper<MesApprovalRecordEnt
*/
List<MesApprovalRecordEntity> selectMyHistoryMesApprovalRecordPage(IPage page, MyHistoryMesApprovalRecordVO mesApprovalRecord);
/**
* 我的待办分页查询
*
* @param page
* @param loginUserId
* @param userRoleIds
* @param mesApprovalRecord
* @return
*/
List<MyMesApprovalRecordVO> selectMyToDoPage(IPage page, Long loginUserId, String userRoleIds, MyMesApprovalRecordVO mesApprovalRecord);
/**
* 我的已办分页查询
*
* @param page
* @param loginUserId
* @param mesApprovalRecord
* @return
*/
List<MyMesApprovalRecordVO> selectMyDonePage(IPage page, Long loginUserId, MyMesApprovalRecordVO mesApprovalRecord);
}

@ -0,0 +1,9 @@
package org.springblade.desk.common.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springblade.desk.common.pojo.entity.MesApprovalRecordPermissionEntity;
public interface MesApprovalRecordPermissionMapper extends BaseMapper<MesApprovalRecordPermissionEntity> {
}

@ -0,0 +1,20 @@
<?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="org.springblade.desk.common.mapper.MesApprovalRecordPermissionMapper">
<!-- 通用查询映射结果 -->
<resultMap id="mesApprovalRecordPermissionResultMap" type="org.springblade.desk.common.pojo.entity.MesApprovalRecordPermissionEntity">
<result column="ID" property="id"/>
<result column="RECORD_ID" property="recordId"/>
<result column="PERMISSION_TYPE" property="permissionType"/>
<result column="PERMISSION_ID" property="permissionId"/>
<result column="CREATE_USER" property="createUser"/>
<result column="CREATE_DEPT" property="createDept"/>
<result column="CREATE_TIME" property="createTime"/>
<result column="UPDATE_USER" property="updateUser"/>
<result column="UPDATE_TIME" property="updateTime"/>
<result column="STATUS" property="status"/>
<result column="IS_DELETED" property="isDeleted"/>
</resultMap>
</mapper>

@ -0,0 +1,7 @@
package org.springblade.desk.common.service;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.common.pojo.entity.MesApprovalFlowDefPermEntity;
public interface IMesApprovalFlowDefPermService extends BaseService<MesApprovalFlowDefPermEntity> {
}

@ -0,0 +1,7 @@
package org.springblade.desk.common.service;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.common.pojo.entity.MesApprovalRecordHandleLogEntity;
public interface IMesApprovalRecordHandleLogService extends BaseService<MesApprovalRecordHandleLogEntity> {
}

@ -0,0 +1,7 @@
package org.springblade.desk.common.service;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.common.pojo.entity.MesApprovalRecordPermissionEntity;
public interface IMesApprovalRecordPermissionService extends BaseService<MesApprovalRecordPermissionEntity> {
}

@ -28,12 +28,14 @@ package org.springblade.desk.common.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.secure.BladeUser;
import org.springblade.desk.common.pojo.entity.MesApprovalRecordEntity;
import org.springblade.desk.common.pojo.vo.MesApprovalRecordDetailVO;
import org.springblade.desk.common.pojo.vo.MyHistoryMesApprovalRecordVO;
import org.springblade.desk.common.pojo.vo.MyMesApprovalRecordVO;
import java.util.Date;
import java.util.List;
/**
* 审批记录表 服务类
@ -46,11 +48,12 @@ public interface IMesApprovalRecordService extends BaseService<MesApprovalRecord
/**
* 自定义分页
*
* @param page 分页参数
* @param mesApprovalRecord 查询参数
* @return IPage<MyMesApprovalRecordVO>
* @param page
* @param mesApprovalRecord
* @param user
* @return
*/
IPage<MyMesApprovalRecordVO> selectMyMesApprovalRecordPage(Page<MesApprovalRecordEntity> page, MyMesApprovalRecordVO mesApprovalRecord);
IPage<MyMesApprovalRecordVO> selectMyMesApprovalRecordPage(Page<MyMesApprovalRecordVO> page, MyMesApprovalRecordVO mesApprovalRecord, BladeUser user);
/**
* 自定义分页
@ -71,11 +74,43 @@ public interface IMesApprovalRecordService extends BaseService<MesApprovalRecord
/**
* 创建审核记录
*
* @param bizId
* @param bizType
*/
void createApproval(Long bizId, String bizType);
void createApproval(Long bizId, String bizType, Long approvalUser, Date approvalTime);
/**
* 创建审核记录指定下级角色
* @param bizId
* @param bizType
* @param approvalUser
* @param approvalTime
* @param roleIds
*/
void createApprovalWithRoles(Long bizId, String bizType, Long approvalUser, Date approvalTime, List<Long> roleIds);
/**
* 创建审核记录指定下级用户
* @param bizId
* @param bizType
* @param approvalUser
* @param approvalTime
* @param userIds
*/
void createApprovalWithUsers(Long bizId, String bizType, Long approvalUser, Date approvalTime, List<Long> userIds);
/**
* 创建审核记录指定下级权限
* @param bizId
* @param bizType
* @param approvalUser
* @param approvalTime
* @param roleIds
* @param userIds
*/
void createApproval(Long bizId, String bizType, Long approvalUser, Date approvalTime, List<Long> roleIds, List<Long> userIds);
/**
* 待办审核通过
@ -87,13 +122,47 @@ public interface IMesApprovalRecordService extends BaseService<MesApprovalRecord
*/
void passApproval(Long bizId, String bizType, Long approvalUser, Date approvalTime);
/**
* 待办审核通过指定下级角色
*
* @param bizId
* @param bizType
* @param approvalUser
* @param approvalTime
* @param roleIds
*/
void passApprovalWithRoles(Long bizId, String bizType, Long approvalUser, Date approvalTime, List<Long> roleIds);
/**
* 待办审核通过指定下级用户
*
* @param bizId
* @param bizType
* @param approvalUser
* @param approvalTime
* @param userIds
*/
void passApprovalWithUsers(Long bizId, String bizType, Long approvalUser, Date approvalTime, List<Long> userIds);
/**
* 待办审核通过指定下级权限
*
* @param bizId
* @param bizType
* @param approvalUser
* @param approvalTime
* @param roleIds
* @param userIds
*/
void passApproval(Long bizId, String bizType, Long approvalUser, Date approvalTime, List<Long> roleIds, List<Long> userIds);
/**
* 待办审核驳回
*
* @param bizId
* @param bizType
*/
void rejectApproval(Long bizId, String bizType);
void rejectApproval(Long bizId, String bizType, Long approvalUser, Date approvalTime);
/**
* 待办审核中

@ -0,0 +1,11 @@
package org.springblade.desk.common.service.impl;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.common.mapper.MesApprovalFlowDefPermMapper;
import org.springblade.desk.common.pojo.entity.MesApprovalFlowDefPermEntity;
import org.springblade.desk.common.service.IMesApprovalFlowDefPermService;
import org.springframework.stereotype.Service;
@Service
public class MesApprovalFlowDefPermServiceImpl extends BaseServiceImpl<MesApprovalFlowDefPermMapper, MesApprovalFlowDefPermEntity> implements IMesApprovalFlowDefPermService {
}

@ -10,7 +10,7 @@ import org.springframework.stereotype.Service;
* 审批流定义Service实现类
*/
@Service
public class IMesApprovalFlowDefinitionServiceImpl extends BaseServiceImpl<MesApprovalFlowDefinitionMapper, MesApprovalFlowDefinitionEntity> implements IMesApprovalFlowDefinitionService {
public class MesApprovalFlowDefinitionServiceImpl extends BaseServiceImpl<MesApprovalFlowDefinitionMapper, MesApprovalFlowDefinitionEntity> implements IMesApprovalFlowDefinitionService {

@ -13,7 +13,7 @@ import java.util.List;
* 审批流程用户记录Service实现类
*/
@Service
public class IMesApprovalFlowUserServiceImpl extends BaseServiceImpl<MesApprovalFlowUserMapper, MesApprovalFlowUserEntity> implements IMesApprovalFlowUserService {
public class MesApprovalFlowUserServiceImpl extends BaseServiceImpl<MesApprovalFlowUserMapper, MesApprovalFlowUserEntity> implements IMesApprovalFlowUserService {
@Override
public List<MesApprovalFlowUserVO> queryByFlowId(Long flowId) {

@ -0,0 +1,13 @@
package org.springblade.desk.common.service.impl;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.common.mapper.MesApprovalRecordHandleLogMapper;
import org.springblade.desk.common.pojo.entity.MesApprovalRecordHandleLogEntity;
import org.springblade.desk.common.service.IMesApprovalRecordHandleLogService;
import org.springframework.stereotype.Service;
@Service
public class MesApprovalRecordHandleLogServiceImpl extends BaseServiceImpl<MesApprovalRecordHandleLogMapper, MesApprovalRecordHandleLogEntity> implements IMesApprovalRecordHandleLogService {
}

@ -0,0 +1,11 @@
package org.springblade.desk.common.service.impl;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.common.mapper.MesApprovalRecordPermissionMapper;
import org.springblade.desk.common.pojo.entity.MesApprovalRecordPermissionEntity;
import org.springblade.desk.common.service.IMesApprovalRecordPermissionService;
import org.springframework.stereotype.Service;
@Service
public class MesApprovalRecordPermissionServiceImpl extends BaseServiceImpl<MesApprovalRecordPermissionMapper, MesApprovalRecordPermissionEntity> implements IMesApprovalRecordPermissionService {
}

@ -25,22 +25,18 @@
*/
package org.springblade.desk.common.service.impl;
import cn.hutool.core.util.StrUtil;
import com.alibaba.excel.util.StringUtils;
import com.alibaba.nacos.common.utils.CollectionUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.annotation.Resource;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.desk.common.constant.ApprovalStatusConstant;
import org.springblade.desk.common.factory.MesApprovalDetailFactory;
import org.springblade.desk.common.mapper.MesApprovalRecordMapper;
import org.springblade.desk.common.pojo.entity.MesApprovalFlowDefinitionEntity;
import org.springblade.desk.common.pojo.entity.MesApprovalFlowEntity;
import org.springblade.desk.common.pojo.entity.MesApprovalFlowUserEntity;
import org.springblade.desk.common.pojo.entity.MesApprovalRecordEntity;
import org.springblade.desk.common.pojo.entity.*;
import org.springblade.desk.common.pojo.vo.*;
import org.springblade.desk.common.service.*;
import org.springblade.system.cache.UserCache;
@ -67,39 +63,28 @@ public class MesApprovalRecordServiceImpl extends BaseServiceImpl<MesApprovalRec
private IMesApprovalFlowUserService approvalFlowUserService;
@Resource
private IMesApprovalFlowDefinitionService approvalFlowDefinitionService;
@Resource
private IMesApprovalFlowDefPermService approvalFlowDefPermService;
@Resource
private IMesApprovalRecordHandleLogService approvalRecordHandleLogService;
@Resource
private IMesApprovalRecordPermissionService approvalRecordPermissionService;
@Override
public IPage<MyMesApprovalRecordVO> selectMyMesApprovalRecordPage(Page<MesApprovalRecordEntity> page, MyMesApprovalRecordVO mesApprovalRecord) {
List<Integer> statusList = null;
if (StringUtils.isNotBlank(mesApprovalRecord.getStatusList())) {
statusList = Arrays.stream(mesApprovalRecord.getStatusList().split(","))
.filter(StringUtils::isNotBlank)
.map(Integer::valueOf)
.collect(Collectors.toList());
}
Page<MesApprovalRecordEntity> mesNotifyMessageVOPage = this.page(page, new LambdaQueryWrapper<MesApprovalRecordEntity>()
.eq(StrUtil.isNotEmpty(mesApprovalRecord.getBizType()), MesApprovalRecordEntity::getBizType, mesApprovalRecord.getBizType())
.eq(mesApprovalRecord.getStatus() != null, MesApprovalRecordEntity::getStatus, mesApprovalRecord.getStatus())
.in(CollectionUtils.isNotEmpty(statusList), MesApprovalRecordEntity::getStatus, statusList)
.like(StrUtil.isNotEmpty(mesApprovalRecord.getContent()), MesApprovalRecordEntity::getContent, mesApprovalRecord.getContent())
.orderByDesc(MesApprovalRecordEntity::getCreateTime));
Page<MyMesApprovalRecordVO> page1 = new Page<>();
if (!mesNotifyMessageVOPage.getRecords().isEmpty()) {
List<MyMesApprovalRecordVO> recordVOList = new ArrayList<>();
mesNotifyMessageVOPage.getRecords().forEach(entity -> {
MyMesApprovalRecordVO recordVO = new MyMesApprovalRecordVO();
BeanUtils.copyProperties(entity, recordVO);
recordVO.setCreateUserName(AuthUtil.getUserName());
recordVO.setStatusName(buildStatusName(recordVO.getStatus()));
recordVOList.add(recordVO);
public IPage<MyMesApprovalRecordVO> selectMyMesApprovalRecordPage(Page<MyMesApprovalRecordVO> page, MyMesApprovalRecordVO mesApprovalRecord, BladeUser user) {
List<MyMesApprovalRecordVO> vos = null;
if (mesApprovalRecord.getStatus() == null || mesApprovalRecord.getStatus() == 0) {
vos = baseMapper.selectMyToDoPage(page, user.getUserId(), user.getRoleId(), mesApprovalRecord);
} else if (mesApprovalRecord.getStatus() == 1) {
vos = baseMapper.selectMyDonePage(page, user.getUserId(), mesApprovalRecord);
}
if (CollectionUtils.isNotEmpty(vos)) {
vos.forEach(vo -> {
vo.setCreateUserName(AuthUtil.getUserName());
vo.setApprovalStatusName(buildStatusName(vo.getApprovalStatus()));
});
page1.setRecords(recordVOList);
page1.setTotal(page.getTotal());
page1.setSize(page.getSize());
page1.setCurrent(page.getCurrent());
return page1;
}
return page1;
return page.setRecords(vos);
}
private String buildStatusName(Integer status) {
@ -171,7 +156,31 @@ public class MesApprovalRecordServiceImpl extends BaseServiceImpl<MesApprovalRec
}
@Override
public void createApproval(Long bizId, String bizType) {
public void createApproval(Long bizId, String bizType, Long approvalUser, Date approvalTime) {
createApproval(bizId, bizType, approvalUser, approvalTime, null, null);
}
@Override
public void createApprovalWithRoles(Long bizId, String bizType, Long approvalUser, Date approvalTime, List<Long> roleIds) {
createApproval(bizId, bizType, approvalUser, approvalTime, roleIds, null);
}
@Override
public void createApprovalWithUsers(Long bizId, String bizType, Long approvalUser, Date approvalTime, List<Long> userIds) {
createApproval(bizId, bizType, approvalUser, approvalTime, null, userIds);
}
/**
* 创建待办
*
* @param bizId
* @param bizType
* @param roleIds
* @param userIds
*/
@Override
public void createApproval(Long bizId, String bizType, Long approvalUser, Date approvalTime, List<Long> roleIds, List<Long> userIds) {
// 创建待办
MesApprovalRecordEntity approvalRecord = new MesApprovalRecordEntity();
approvalRecord.setBizId(bizId);
@ -180,7 +189,18 @@ public class MesApprovalRecordServiceImpl extends BaseServiceImpl<MesApprovalRec
approvalRecord.setStatus(ApprovalStatusConstant.WAITING);
this.save(approvalRecord);
List<MesApprovalFlowDefinitionEntity> flowDefinitionList = approvalFlowDefinitionService.list(new LambdaQueryWrapper<MesApprovalFlowDefinitionEntity>().eq(MesApprovalFlowDefinitionEntity::getBizType, bizType).orderByAsc(MesApprovalFlowDefinitionEntity::getSort));
// 查询流程定义
List<MesApprovalFlowDefinitionEntity> flowDefinitionList = approvalFlowDefinitionService.list(
new LambdaQueryWrapper<MesApprovalFlowDefinitionEntity>()
.eq(MesApprovalFlowDefinitionEntity::getBizType, bizType)
.orderByAsc(MesApprovalFlowDefinitionEntity::getSort));
if (CollectionUtils.isEmpty(flowDefinitionList) || flowDefinitionList.size() < 2) {
return;
}
// 构建审批记录权限
MesApprovalFlowDefinitionEntity currentFlowDefinition = flowDefinitionList.get(1);
createRecordPermission(approvalRecord.getId(), currentFlowDefinition, roleIds, userIds);
List<MesApprovalFlowEntity> flowList = new ArrayList<>();
for (int i = 0; i < flowDefinitionList.size(); i++) {
MesApprovalFlowDefinitionEntity definition = flowDefinitionList.get(i);
@ -196,45 +216,136 @@ public class MesApprovalRecordServiceImpl extends BaseServiceImpl<MesApprovalRec
flowList.add(flow);
}
approvalFlowService.saveBatch(flowList);
MesApprovalFlowEntity firstFlow = flowList.stream().filter(flow -> flow.getSort() == 1).findFirst().orElse(null);
MesApprovalFlowEntity firstFlow = flowList.get(0);
if (firstFlow != null) {
MesApprovalFlowUserEntity flowUser = new MesApprovalFlowUserEntity();
flowUser.setFlowId(firstFlow.getId());
flowUser.setApprovalUser(approvalRecord.getCreateUser());
flowUser.setApprovalTime(approvalRecord.getCreateTime());
flowUser.setApprovalUser(approvalUser);
flowUser.setApprovalTime(approvalTime);
approvalFlowUserService.save(flowUser);
}
}
/**
* 创建审批记录权限
*
* @param recordId
* @param currentFlowDefinition
* @param roleIds
* @param userIds
*/
private void createRecordPermission(Long recordId, MesApprovalFlowDefinitionEntity currentFlowDefinition, List<Long> roleIds, List<Long> userIds) {
List<MesApprovalRecordPermissionEntity> recordPermList = new ArrayList<>();
// 全为空查询默认配置
if (CollectionUtils.isEmpty(roleIds) && CollectionUtils.isEmpty(userIds)) {
List<MesApprovalFlowDefPermEntity> permList = approvalFlowDefPermService.list(new LambdaQueryWrapper<MesApprovalFlowDefPermEntity>()
.eq(MesApprovalFlowDefPermEntity::getDefinitionId, currentFlowDefinition.getId()));
if (CollectionUtils.isNotEmpty(permList)) {
for (MesApprovalFlowDefPermEntity perm : permList) {
recordPermList.add(buildRecordPermissionEntity(recordId, perm.getPermissionId(), perm.getPermissionType()));
}
}
}
if (CollectionUtils.isNotEmpty(roleIds)) {
for (Long roleId : roleIds) {
recordPermList.add(buildRecordPermissionEntity(recordId, roleId, 0));
}
}
if (CollectionUtils.isNotEmpty(userIds)) {
for (Long userId : userIds) {
recordPermList.add(buildRecordPermissionEntity(recordId, userId, 1));
}
}
approvalRecordPermissionService.saveBatch(recordPermList);
}
/**
* 构建审批记录权限对象
*
* @param recordId
* @param permissionId
* @param permissionType
* @return
*/
private MesApprovalRecordPermissionEntity buildRecordPermissionEntity(Long recordId, Long permissionId, Integer permissionType) {
MesApprovalRecordPermissionEntity recordPerm = new MesApprovalRecordPermissionEntity();
recordPerm.setRecordId(recordId);
recordPerm.setPermissionId(permissionId);
recordPerm.setPermissionType(permissionType);
return recordPerm;
}
@Override
public void passApproval(Long bizId, String bizType, Long approvalUser, Date approvalTime) {
passApproval(bizId, bizType, approvalUser, approvalTime, null, null);
}
@Override
public void passApprovalWithRoles(Long bizId, String bizType, Long approvalUser, Date approvalTime, List<Long> roleIds) {
passApproval(bizId, bizType, approvalUser, approvalTime, roleIds, null);
}
@Override
public void passApprovalWithUsers(Long bizId, String bizType, Long approvalUser, Date approvalTime, List<Long> userIds) {
passApproval(bizId, bizType, approvalUser, approvalTime, null, userIds);
}
/**
* 审批通过
*
* @param bizId
* @param bizType
* @param approvalUser
* @param approvalTime
* @param roleIds
* @param userIds
*/
@Override
public void passApproval(Long bizId, String bizType, Long approvalUser, Date approvalTime, List<Long> roleIds, List<Long> userIds) {
// 获取当前审批记录
MesApprovalRecordEntity entity = getByBiz(bizId, bizType);
if (entity == null || entity.getStatus() != ApprovalStatusConstant.WAITING) {
return;
}
// 修改当前审批记录为审批通过
MesApprovalRecordEntity upd = new MesApprovalRecordEntity();
upd.setId(entity.getId());
upd.setStatus(ApprovalStatusConstant.PASS);
this.updateById(upd);
List<MesApprovalFlowEntity> flowList = approvalFlowService.list(new LambdaQueryWrapper<MesApprovalFlowEntity>().eq(MesApprovalFlowEntity::getBizId, bizId).eq(MesApprovalFlowEntity::getBizType, bizType));
// 增加审批记录处理日志
MesApprovalRecordHandleLogEntity handleLog = new MesApprovalRecordHandleLogEntity();
handleLog.setRecordId(entity.getId());
handleLog.setApprovalUser(approvalUser);
handleLog.setApprovalTime(approvalTime);
handleLog.setStatus(1);
approvalRecordHandleLogService.save(handleLog);
// 查询审批流程
List<MesApprovalFlowEntity> flowList = approvalFlowService.list(
new LambdaQueryWrapper<MesApprovalFlowEntity>()
.eq(MesApprovalFlowEntity::getBizId, bizId)
.eq(MesApprovalFlowEntity::getBizType, bizType));
// 获取状态为进行中流程
MesApprovalFlowEntity currentFlow = flowList.stream().filter(flow -> flow.getStatus().equals(2)).findFirst().orElse(null);
if (currentFlow != null) {
// 修改当前流程为已完成
MesApprovalFlowEntity currentFlowEntity = new MesApprovalFlowEntity();
currentFlowEntity.setId(currentFlow.getId());
currentFlowEntity.setStatus(3);
approvalFlowService.updateById(currentFlowEntity);
// 增加流程节点处理人
MesApprovalFlowUserEntity flowUser = new MesApprovalFlowUserEntity();
flowUser.setFlowId(currentFlow.getId());
flowUser.setApprovalUser(approvalUser);
flowUser.setApprovalTime(approvalTime);
approvalFlowUserService.save(flowUser);
// 获取下一个节点
Integer nextSort = currentFlow.getNextSort();
if (nextSort == null) {
return;
}
MesApprovalFlowEntity nextFlow = flowList.stream().filter(flow -> flow.getSort().equals(nextSort)).findFirst().orElse(null);
if (nextFlow != null) {
// 新增一条审批记录
MesApprovalRecordEntity save = new MesApprovalRecordEntity();
BeanUtils.copyProperties(entity, save);
save.setStatus(ApprovalStatusConstant.WAITING);
@ -242,22 +353,35 @@ public class MesApprovalRecordServiceImpl extends BaseServiceImpl<MesApprovalRec
save.setCreateTime(approvalTime);
save.setId(null);
this.save(save);
// 修改下一节点为进行中
MesApprovalFlowEntity nextFlowEntity = new MesApprovalFlowEntity();
nextFlowEntity.setId(nextFlow.getId());
nextFlowEntity.setStatus(2);
approvalFlowService.updateById(nextFlowEntity);
// 查询流程定义
List<MesApprovalFlowDefinitionEntity> flowDefinitionList = approvalFlowDefinitionService.list(
new LambdaQueryWrapper<MesApprovalFlowDefinitionEntity>()
.eq(MesApprovalFlowDefinitionEntity::getBizType, bizType)
.eq(MesApprovalFlowDefinitionEntity::getSort, nextFlow.getSort())
.orderByAsc(MesApprovalFlowDefinitionEntity::getSort));
if (CollectionUtils.isEmpty(flowDefinitionList) || flowDefinitionList.size() != 1) {
return;
}
MesApprovalFlowDefinitionEntity currentFlowDefinition = flowDefinitionList.get(0);
// 创建审批记录权限
createRecordPermission(save.getId(), currentFlowDefinition, roleIds, userIds);
}
}
}
/**
* 删除待办
* 审批驳回
*
* @param bizId
* @param bizType
*/
@Override
public void rejectApproval(Long bizId, String bizType) {
public void rejectApproval(Long bizId, String bizType, Long approvalUser, Date approvalTime) {
MesApprovalRecordEntity entity = getByBiz(bizId, bizType);
if (entity == null || entity.getStatus() != ApprovalStatusConstant.WAITING) {
return;
@ -266,6 +390,13 @@ public class MesApprovalRecordServiceImpl extends BaseServiceImpl<MesApprovalRec
upd.setId(entity.getId());
upd.setStatus(ApprovalStatusConstant.REJECT);
this.updateById(upd);
// 增加审批记录处理日志
MesApprovalRecordHandleLogEntity handleLog = new MesApprovalRecordHandleLogEntity();
handleLog.setRecordId(entity.getId());
handleLog.setApprovalUser(approvalUser);
handleLog.setApprovalTime(approvalTime);
handleLog.setStatus(2);
approvalRecordHandleLogService.save(handleLog);
List<MesApprovalFlowEntity> flowList = approvalFlowService.list(new LambdaQueryWrapper<MesApprovalFlowEntity>().eq(MesApprovalFlowEntity::getBizId, bizId).eq(MesApprovalFlowEntity::getBizType, bizType));
List<Long> ids = flowList.stream().map(MesApprovalFlowEntity::getId).collect(Collectors.toList());
approvalFlowService.removeByIds(ids);
@ -273,6 +404,17 @@ public class MesApprovalRecordServiceImpl extends BaseServiceImpl<MesApprovalRec
@Override
public void pendingApproval(Long bizId, String bizType, Long approvalUser, Date approvalTime) {
MesApprovalRecordEntity entity = getByBiz(bizId, bizType);
if (entity == null || entity.getStatus() != ApprovalStatusConstant.WAITING) {
return;
}
// 增加审批记录处理日志
MesApprovalRecordHandleLogEntity handleLog = new MesApprovalRecordHandleLogEntity();
handleLog.setRecordId(entity.getId());
handleLog.setApprovalUser(approvalUser);
handleLog.setApprovalTime(approvalTime);
handleLog.setStatus(1);
approvalRecordHandleLogService.save(handleLog);
List<MesApprovalFlowEntity> flowList = approvalFlowService.list(new LambdaQueryWrapper<MesApprovalFlowEntity>().eq(MesApprovalFlowEntity::getBizId, bizId).eq(MesApprovalFlowEntity::getBizType, bizType).eq(MesApprovalFlowEntity::getStatus, 2));
if (CollectionUtils.isEmpty(flowList)) {
return;

@ -221,7 +221,7 @@ public class OemSettlementApprovalServiceImpl extends BaseServiceImpl<OemSettlem
approval.setApprovalStatus(OemSettlementApprovalEntity.ApprovalStatusEnum.PROOFREADING.getCode());
} else {
// 校对不通过
return handleApprovalReject(approval, request.getApprovalMemo());
return handleApprovalReject(approval, currentUserId, request.getApprovalMemo());
}
} else if (approval.getProofreader2Id() == null) {
// 第二次校对
@ -237,7 +237,7 @@ public class OemSettlementApprovalServiceImpl extends BaseServiceImpl<OemSettlem
sendNotificationToAuditLeader(approval);
} else {
// 校对不通过
return handleApprovalReject(approval, request.getApprovalMemo());
return handleApprovalReject(approval, currentUserId, request.getApprovalMemo());
}
} else {
return R.fail("已完成两次校对,无法再次校对");
@ -293,14 +293,14 @@ public class OemSettlementApprovalServiceImpl extends BaseServiceImpl<OemSettlem
return R.success();
} else {
// 审核不通过
return handleApprovalReject(approval, request.getApprovalMemo());
return handleApprovalReject(approval, currentUserId, request.getApprovalMemo());
}
}
/**
* 处理审批不通过
*/
private R handleApprovalReject(OemSettlementApprovalEntity approval, String memo) {
private R handleApprovalReject(OemSettlementApprovalEntity approval, Long currentUserId, String memo) {
Date now = new Date();
// 更新审批状态为【不通过】
@ -312,7 +312,7 @@ public class OemSettlementApprovalServiceImpl extends BaseServiceImpl<OemSettlem
// 更新所有关联结算单的状态为【结算异常】
updateStatementsStatus(approval.getId(), OemStatementEntity.ERR_SETTLEMENT, "MES结算审核不通过");
// 更新待办
mesApprovalRecordService.rejectApproval(approval.getId(), MesApprovalRecordBizTypeEnum.OEM_STATEMENT.getDesc());
mesApprovalRecordService.rejectApproval(approval.getId(), MesApprovalRecordBizTypeEnum.OEM_STATEMENT.getDesc(), currentUserId, now);
return R.success("审批已拒绝");
}

@ -20,10 +20,10 @@ import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.common.enums.MesApprovalRecordBizTypeEnum;
import org.springblade.desk.common.factory.MesApprovalDetailFactory;
import org.springblade.desk.common.feign.IMesApprovalRecordClient;
import org.springblade.desk.common.feign.IMesNotifyMessageClient;
import org.springblade.desk.common.pojo.entity.MesApprovalRecordEntity;
import org.springblade.desk.common.pojo.dto.MesApprovalRecordFeignDTO;
import org.springblade.desk.common.pojo.entity.MesNotifyMessageEntity;
import org.springblade.desk.common.service.ApprovalRecordDetailStrategy;
import org.springblade.desk.common.service.IMesApprovalRecordService;
import org.springblade.desk.oem.mapper.OemStatementMapper;
import org.springblade.desk.oem.mapper.PlatingTypeRulesMapper;
@ -105,6 +105,9 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
@Resource
private MesApprovalDetailFactory mesApprovalDetailFactory;
@Resource
private IMesApprovalRecordClient approvalRecordClient;
public static final String DEPT_CODE_REWORK = "3400";
public static final String MANUAL_AUTO = "0";
public static final String MANUAL_HAND = "1";
@ -1577,17 +1580,31 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
return Collections.emptyList();
// //假数据测试用
// List<PriceSheetVO> priceSheetAllList = new ArrayList<>();
// priceSheetAllList.add(buildTestPriceVO("Y523", "化学钝化", "21E8-004-30450-H1"));
// priceSheetAllList.add(buildTestPriceVO("Y523", "化学钝化", "21E8-004-30391-H1"));
// priceSheetAllList.add(buildTestPriceVO("Y523", "化学钝化", "21E8-004-1903-H1"));
// priceSheetAllList.add(buildTestPriceVO("Y523", "化学钝化", "21E8-003-1447-H1-W"));
// priceSheetAllList.add(buildTestPriceVO("Y059", "化学钝化", "21E8-883-3317-H1"));
// priceSheetAllList.add(buildTestPriceVO("L339", "化学钝化", "21E8-004-3384-H1"));
// priceSheetAllList.add(buildTestPriceVO("Y523", "化学钝化", "21E8-083-10904-H1"));
// priceSheetAllList.add(buildTestPriceVO("L339", "化学钝化", "21E8-050-2899-H1"));
// priceSheetAllList.add(buildTestPriceVO("L339", "化学钝化", "21E8-003-3981-H1"));
// priceSheetAllList.add(buildTestPriceVO("L339", "化学钝化", "21E8-003-10084-H1-N"));
// priceSheetAllList.add(buildTestPriceVO("Y523", "化学钝化", "21E8-304-2433-H4"));
// return priceSheetAllList;
}
// private PriceSheetVO buildTestPriceVO(String splycode, String gxInfo, String prtno) {
// PriceSheetVO sheet = new PriceSheetVO();
// sheet.setStairflag("1");
// sheet.setSplycode("Y523");
// sheet.setGxinfo("化学钝化");
// sheet.setPrtno("21E8-004-30450-H1");
// sheet.setSplycode(splycode);
// sheet.setGxinfo(gxInfo);
// sheet.setPrtno(prtno);
// sheet.setPrice("100");
// sheet.setStartdat("2026-01-01 00:00:00");
// sheet.setValiddat("2026-12-31 00:00:00");
// priceSheetAllList.add(sheet);
// return priceSheetAllList;
}
// return sheet;
// }
/**
* 匹配报价单
@ -2321,7 +2338,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
// 发送消息通知给“外协结算校对员”角色的用户
sendNotificationToProofreaders(approval);
// 创建代办
mesApprovalRecordService.createApproval(approval.getId(), MesApprovalRecordBizTypeEnum.OEM_STATEMENT.getDesc());
mesApprovalRecordService.createApproval(approval.getId(), MesApprovalRecordBizTypeEnum.OEM_STATEMENT.getDesc(), approval.getCreateUser(), approval.getSubmitTime());
return R.success();
}

Loading…
Cancel
Save