Browse Source

2026-03-19

优化【流程关闭】校验
master
fengyuan_yang 3 months ago
parent
commit
0e131fbcb6
  1. 6
      src/main/java/com/spring/modules/change/mapper/ChangeManagementMapper.java
  2. 12
      src/main/java/com/spring/modules/change/service/impl/ChangeManagementServiceImpl.java
  3. 16
      src/main/resources/mapper/change/ChangeManagementMapper.xml

6
src/main/java/com/spring/modules/change/mapper/ChangeManagementMapper.java

@ -234,4 +234,10 @@ public interface ChangeManagementMapper extends BaseMapper<ChangeRequestEntity>{
Integer countDocumentByStatus(@Param("tableName") String tableName, @Param("keyField") String keyField,
@Param("statusField") String statusField, @Param("approvedStatus") String approvedStatus,
@Param("site") String site, @Param("docNo") String docNo);
Integer countDocumentByStepId(@Param("tableName") String tableName, @Param("keyField") String keyField,
@Param("site") String site, @Param("docNo") String docNo);
Integer countApproverMatch(@Param("site") String site, @Param("docNo") String docNo,
@Param("userName") String userName);
}

12
src/main/java/com/spring/modules/change/service/impl/ChangeManagementServiceImpl.java

@ -2507,6 +2507,18 @@ public class ChangeManagementServiceImpl extends ServiceImpl<ChangeManagementMap
throw new RuntimeException("单据 [" + docNo + "] 状态不是审批中,无法关闭流程!");
}
// 校验单据stepId必须是10
Integer stepCount = changeManagementMapper.countDocumentByStepId(tableName, keyField, vo.getSite(), docNo);
if (stepCount == null || stepCount == 0) {
throw new RuntimeException("单据 [" + docNo + "] 当前步骤不是第一审批节点,无法关闭流程!");
}
// 校验当前节点审批人包含当前登录人
Integer approverCount = changeManagementMapper.countApproverMatch(vo.getSite(), docNo, vo.getUserName());
if (approverCount == null || approverCount == 0) {
throw new RuntimeException("单据 [" + docNo + "] 当前节点审批人不包含当前登录用户,无法关闭流程!");
}
// 获取流程信息workflowId + requestId + OA用户ID
List<ProcessFormCloseVo> processFormList = changeManagementMapper.getProcessFormInfoForClose(vo.getSite(), docNo);

16
src/main/resources/mapper/change/ChangeManagementMapper.xml

@ -1726,4 +1726,20 @@
FROM ${tableName}
WHERE site = #{site} AND ${keyField} = #{docNo} AND ${statusField} = #{approvedStatus}
</select>
<select id="countDocumentByStepId" resultType="java.lang.Integer">
SELECT COUNT(1)
FROM ${tableName}
WHERE site = #{site} AND ${keyField} = #{docNo} AND step_id = 10
</select>
<select id="countApproverMatch" resultType="java.lang.Integer">
SELECT COUNT(1)
FROM plm_process_form a
LEFT JOIN sys_user b ON a.domain_control_account = b.domain_control_account
WHERE a.site = #{site}
AND a.document_no = #{docNo}
AND a.is_remark = '0'
AND ISNULL(a.update_by, b.username) = #{userName}
</select>
</mapper>
Loading…
Cancel
Save