diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/impl/SysWorkflowRecordHistoryServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/impl/SysWorkflowRecordHistoryServiceImpl.java index ec6b45a9..28570b5d 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/impl/SysWorkflowRecordHistoryServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/impl/SysWorkflowRecordHistoryServiceImpl.java @@ -196,7 +196,7 @@ public class SysWorkflowRecordHistoryServiceImpl implements SysWorkflowRecordHis handleDirectApproval(sysWorkflowNodeList, sysWorkflowRecordHistory, sysUser, taskId, recordCode, recordId,nextNodeId,nodeId); } else { // 处理审核驳回❌ - handleRejection(sysWorkflowNodeList, sysWorkflowRecordHistory); + handleDirectReject(sysWorkflowNodeList, sysWorkflowRecordHistory, sysUser, taskId, recordCode, recordId,nextNodeId,nodeId); } }else{ throw new ServiceException("当前账号没有审批权限!"); @@ -564,6 +564,140 @@ public class SysWorkflowRecordHistoryServiceImpl implements SysWorkflowRecordHis } } + private void handleDirectReject(List sysWorkflowNodeList, SysWorkflowRecordHistory sysWorkflowRecordHistory, + SysUser sysUser, Integer taskId, String recordCode, Integer recordId, Integer nextNodeId, Integer nodeId) { + boolean found = false; + Integer proId = null; + Integer proIdThree = null ; + List userList = new ArrayList<>(); + for (int i = 0; i < sysWorkflowNodeList.size(); i++) { + // 判断列表中哪个节点是当前审批的节点,如果不是审批的节点不处理 + if (sysWorkflowRecordHistory.getNextNodeId().equals(sysWorkflowNodeList.get(i).getId())) { + log.info("-------------进入到了当前审批的节点-------------"); +// sysWorkflowRecordHistoryMapper.addSysWorkflowRecordHistory(sysWorkflowRecordHistory); + // 增加节点code编码判断,是否有节点审批限制 + if (StringUtils.isNotBlank(sysWorkflowNodeList.get(i).getNodeRestrictCode())) { //属于后三个审批流 + log.info("-------------当前节点有审批限制,进行限制🚫-------------"); + switch (sysWorkflowNodeList.get(i).getNodeRestrictCode()) { + case "unit": + // 限制同一unit单位 + //获取转入(接收方)的agreementId + proId = sysWorkflowRecordHistoryMapper.getLeaseAgreementIdByTaskId(sysWorkflowRecordHistory); + if(i==2){ //到发起方施工管理部 + proIdThree = sysWorkflowRecordHistoryMapper.getBackAgreementIdByTaskId(sysWorkflowRecordHistory); + }else{ + proIdThree = null; + } + int deptId = directAuditMapper.getImpUnit(String.valueOf(proId)); + DirectApplyInfo directApplyInfo = new DirectApplyInfo(); + directApplyInfo.setLeaseProId(String.valueOf(proId)); + + directApplyInfo.setDeptId(deptId); + + //插入history表中 + SysWorkflowRecordHistory history = sysWorkflowRecordHistory; + history.setNodeId(sysWorkflowRecordHistory.getNextNodeId()); + if(i!=sysWorkflowNodeList.size()-1){ + history.setNextNodeId(sysWorkflowNodeList.get(i+1).getId()); + sysWorkflowNodeList.get(i).setNextNodeId(sysWorkflowNodeList.get(i+1).getId()); + sysWorkflowNodeList.get(i).setNextRoleIds(sysWorkflowNodeList.get(i+1).getRoleIds()); + }else{ + history.setNextNodeId(null); + sysWorkflowNodeList.get(i).setNextNodeId(null); + sysWorkflowNodeList.get(i).setNextRoleIds(null); + } + sysWorkflowNodeService.copeNodeConfigPersonValuesByNodeTwo(sysWorkflowNodeList.get(i), directApplyInfo,userList,sysWorkflowNodeList.size()); + sysWorkflowRecordHistory.setDirectUserIds(sysWorkflowNodeList.get(i).getConfigValues()); + history.setDirectUserIds(sysWorkflowNodeList.get(i).getConfigValues()); + + sysWorkflowRecordHistoryMapper.addSysWorkflowRecordHistory(history); + + break; + case "project": + // 限制工程,暂无相关需求,暂定 + break; + case "org": + // 限制分公司,暂无相关需求,暂定 + break; + default: + throw new ServiceException("当前节点有审批限制code,却是非法字符,请联系管理员!"); + } + }else{//属于前三个审批流 + proId = sysWorkflowRecordHistoryMapper.getBackAgreementIdByTaskId(sysWorkflowRecordHistory); + int deptId = directAuditMapper.getImpUnit(String.valueOf(proId)); + DirectApplyInfo directApplyInfo = new DirectApplyInfo(); + directApplyInfo.setBackProId(String.valueOf(proId)); + directApplyInfo.setDeptId(deptId); + //插入history表中 + SysWorkflowRecordHistory history = sysWorkflowRecordHistory; + history.setNodeId(sysWorkflowRecordHistory.getNextNodeId()); + if(i!=sysWorkflowNodeList.size()-1){ + history.setNextNodeId(sysWorkflowNodeList.get(i+1).getId()); + sysWorkflowNodeList.get(i).setNextNodeId(sysWorkflowNodeList.get(i+1).getId()); + sysWorkflowNodeList.get(i).setNextRoleIds(sysWorkflowNodeList.get(i+1).getRoleIds()); + }else{ + history.setNextNodeId(null); + sysWorkflowNodeList.get(i).setNextNodeId(null); + sysWorkflowNodeList.get(i).setNextRoleIds(null); + } + sysWorkflowNodeService.copeNodeConfigPersonValuesByNodeTwo(sysWorkflowNodeList.get(i), directApplyInfo,userList,sysWorkflowNodeList.size()); + sysWorkflowRecordHistory.setDirectUserIds(sysWorkflowNodeList.get(i).getConfigValues()); + history.setDirectUserIds(sysWorkflowNodeList.get(i).getConfigValues()); + sysWorkflowRecordHistoryMapper.addSysWorkflowRecordHistory(history); + } + + //获取当前node的directUserIds + String userIdsNow = sysWorkflowRecordHistoryMapper.getNowUserIds(sysWorkflowRecordHistory); + // 判断当前用户是否是当前节点的配置用户 + if (userIdsNow.contains(sysUser.getUserId().toString())) { + log.info("-------------✅通过校验,当前用户是该节点审批人员,进行更新任务信息-------------"); + // 根据任务ID 更新审批流状态 + updateWorkflowStatus(taskId, 1); + // 根据任务ID 更新任务状态 + updateTmTask(taskId.longValue(), LeaseTaskStatusEnum.LEASE_AUDIT_ING.getStatus()); + found = true; + break; + } else { + //删除新增节点 + sysWorkflowRecordHistoryMapper.deleteNowNode(sysWorkflowRecordHistory); + throw new ServiceException("您不是当前节点配置的审批人员,无法进行操作!!"); + } + + } + } + + // 如果前面更新失败 -> 方法停止 -> 不进行下一步操作,否则继续 + if (!found) { + return; + } + //驳回 + updateWorkflowStatus(taskId, 3); + + SysWorkflowAuditDto dto = sysWorkflowRecordMapper.getSysWorkflowRecodeByTaskId(taskId); + if (dto == null) { + throw new ServiceException("任务类型为空"); + } + // 修改工单信息 + updateWorkOrder(recordId, sysUser.getUserName()); + + DirectApplyInfo directApplyInfo = new DirectApplyInfo(); + directApplyInfo.setId(taskId); + directApplyInfo.setStatus("2"); + directAuditMapper.updateDirectAudit(directApplyInfo); + + try { + log.info("-------------节点更新工单信息✔-------------"); + // 修改工单信息 + updateWorkOrder(recordId, sysUser.getUserName()); + + log.info("-------------节点更新工单信息结束-------------"); + } catch (Exception e) { + System.err.println("更新工单信息失败:" + e.getMessage()); + log.error("更新工单信息失败: {}", e.getMessage(), e); + } + + } + private void checkFinalNodeApproval(SysWorkflowRecordHistory sysWorkflowRecordHistory, List sysWorkflowNodeList) { List historyList = sysWorkflowRecordHistoryMapper.seleteSysWorkflowRecordHistory(sysWorkflowRecordHistory); String configValueNew = sysWorkflowConfigMapper.selectConfigValueByNodeId(sysWorkflowRecordHistory.getNodeId()); diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/clz/MaterialLeaseInfoMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/clz/MaterialLeaseInfoMapper.xml index bf0d9e74..4ae83f67 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/clz/MaterialLeaseInfoMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/clz/MaterialLeaseInfoMapper.xml @@ -389,6 +389,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select + sd.dept_name as impUnitName, lai.id, lai.code as code, lai.lease_person as leasePerson, lai.create_by, lai.create_time as leaseTime, lai.update_by, lai.update_time, lai.remark, lai.company_id, lai.lease_sign_url as leaseSignUrl, lai.lease_sign_type as leaseSignType, @@ -450,7 +467,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" JOIN ma_type_keeper mtk ON mtk.type_id = lad.type_id AND mtk.user_id = #{userId} - + where + 1=1 + + and sd.dept_name LIKE CONCAT('%', #{impUnitName}, '%') + + + and lai.lease_person LIKE CONCAT('%', #{leasePerson}, '%') + + + and lai.code LIKE CONCAT('%', #{code}, '%') + + + and bu.unit_name LIKE CONCAT('%', #{leaseUnit}, '%') + + + and bp.pro_name LIKE CONCAT('%', #{leaseProject}, '%') + and tt.task_status in @@ -467,7 +500,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and tt.task_type = '2' - GROUP BY lai.id ORDER BY tt.create_time desc @@ -792,6 +824,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SELECT + sd.dept_name as impUnitName, lai.id AS id, lai.code AS code, lai.create_by AS createBy, diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/clz/MaterialMachineMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/clz/MaterialMachineMapper.xml index 3cd63005..2ad8433a 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/clz/MaterialMachineMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/clz/MaterialMachineMapper.xml @@ -736,6 +736,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SELECT * FROM ( -- 原查询(包含status计算) SELECT + sd.dept_name as impUnitName, + bp.pro_center AS departName, + mt3.type_name as materialName, mt2.type_name AS typeName, mt.type_name AS typeModelName, sai.ma_id AS maId, @@ -759,14 +762,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" LEFT JOIN bm_project bp ON bai.project_id = bp.pro_id LEFT JOIN ma_type mt ON mt.type_id = sai.type_id LEFT JOIN ma_type mt2 ON mt.parent_id = mt2.type_id + LEFT JOIN ma_type mt3 ON mt2.parent_id = mt3.type_id LEFT JOIN ma_machine mm ON mm.ma_id = sai.ma_id LEFT JOIN clz_slt_agreement_info csi ON mm.ma_id = csi.ma_id LEFT JOIN clz_bm_agreement_info cba ON csi.agreement_id = cba.agreement_id LEFT JOIN bm_unit bu ON cba.unit_id = bu.unit_id + LEFT JOIN sys_dept sd ON sd.dept_id = bp.imp_unit WHERE sai.`status` = '0' AND mt.jiju_type = 2 AND sai.ma_id IS NOT NULL + + and sd.dept_name LIKE CONCAT('%', #{impUnitName}, '%') + + + and bp.pro_center LIKE CONCAT('%', #{departName}, '%') + + + and bp.pro_name LIKE CONCAT('%', #{proName}, '%') + + + and mt3.type_name LIKE CONCAT('%', #{materialName}, '%') + + + and bu.unit_name LIKE CONCAT('%', #{teamName}, '%') + + + + AND sai.agreement_id IN @@ -804,27 +827,43 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"