From 3bf6ad29f6b43d69a8b95c2438507b4831a398e2 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Thu, 10 Apr 2025 10:03:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=8D=E6=A0=B8=E5=AE=A1=E6=89=B9=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=BD=92=E6=A1=A3=E5=8A=A8=E4=BD=9C=EF=BC=8C=E4=BA=8B?= =?UTF-8?q?=E6=9D=83=E5=8F=98=E6=9B=B4=E6=93=8D=E4=BD=9C=EF=BC=8C=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E8=87=AA=E5=8A=A8=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../secret/web/AuthorityChangeController.java | 12 +++ .../service/AuthorityChangeService.java | 19 +++++ .../impl/AuthorityChangeServiceImpl.java | 67 +++++++++++++++ src/com/engine/secret/util/FlowUtil.java | 69 ++++++++++++++++ src/com/engine/secret/util/ModeUtil.java | 9 +++ .../secret/web/AuthorityChangeController.java | 39 +++++++++ .../action/ApprovalReviewEndAction.java | 81 +++++++++++++++++++ 7 files changed, 296 insertions(+) create mode 100644 src/com/api/secret/web/AuthorityChangeController.java create mode 100644 src/com/engine/secret/service/AuthorityChangeService.java create mode 100644 src/com/engine/secret/service/impl/AuthorityChangeServiceImpl.java create mode 100644 src/com/engine/secret/util/FlowUtil.java create mode 100644 src/com/engine/secret/web/AuthorityChangeController.java create mode 100644 src/weaver/interfaces/secret/action/ApprovalReviewEndAction.java diff --git a/src/com/api/secret/web/AuthorityChangeController.java b/src/com/api/secret/web/AuthorityChangeController.java new file mode 100644 index 0000000..cdf324e --- /dev/null +++ b/src/com/api/secret/web/AuthorityChangeController.java @@ -0,0 +1,12 @@ +package com.api.secret.web; + +import javax.ws.rs.Path; + +/** + * @author:dxfeng + * @createTime: 2025/04/09 + * @version: 1.0 + */ +@Path("/secret/authority/change") +public class AuthorityChangeController extends com.engine.secret.web.AuthorityChangeController{ +} diff --git a/src/com/engine/secret/service/AuthorityChangeService.java b/src/com/engine/secret/service/AuthorityChangeService.java new file mode 100644 index 0000000..4c5ebb9 --- /dev/null +++ b/src/com/engine/secret/service/AuthorityChangeService.java @@ -0,0 +1,19 @@ +package com.engine.secret.service; + +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2025/04/09 + * @version: 1.0 + */ +public interface AuthorityChangeService { + + /** + * 将审批事权移交至省级 + * + * @param param + * @return + */ + Map delegateToProvincialAuthority(Map param); +} diff --git a/src/com/engine/secret/service/impl/AuthorityChangeServiceImpl.java b/src/com/engine/secret/service/impl/AuthorityChangeServiceImpl.java new file mode 100644 index 0000000..528c66c --- /dev/null +++ b/src/com/engine/secret/service/impl/AuthorityChangeServiceImpl.java @@ -0,0 +1,67 @@ +package com.engine.secret.service.impl; + +import com.engine.core.impl.Service; +import com.engine.secret.exception.CustomizeRunTimeException; +import com.engine.secret.service.AuthorityChangeService; +import com.engine.secret.util.FlowUtil; +import com.engine.secret.util.ModeUtil; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import weaver.common.DateUtil; +import weaver.conn.RecordSet; +import weaver.general.Util; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2025/04/09 + * @version: 1.0 + */ +public class AuthorityChangeServiceImpl extends Service implements AuthorityChangeService { + @Override + public Map delegateToProvincialAuthority(Map param) { + RecordSet rs = new RecordSet(); + String ids = Util.null2String(param.get("ids")); + if (StringUtils.isBlank(ids)) { + throw new CustomizeRunTimeException("请至少选择一条数据"); + } + String customId = Util.null2String(param.get("customId")); + if (StringUtils.isBlank(customId)) { + throw new CustomizeRunTimeException("未获取到查询列表ID"); + } + String modeTableName = ModeUtil.getTableNameByCustomId(customId); + rs.writeLog("ids==" + ids); + rs.writeLog("customId==" + customId); + rs.writeLog("modeTableName==" + modeTableName); + String options = user.getLastname() + "-自动提交流程-"; + + // 查询对应的流程,并更新 + String[] split = ids.split(","); + for (String s : split) { + rs.writeLog("id==" + s); + // 更新事权类别为省级事权 + rs.executeUpdate("update " + modeTableName + " set bmzzzgsqlb = ?,tjdqjd = ? where id =? ", 0, 1, s); + // 查询对应的requestId + rs.executeQuery("select requestId from " + modeTableName + " where id = ?", s); + if (rs.next()) { + String requestId = rs.getString("requestId"); + rs.writeLog("requestId==" + requestId); + List currentUserIds = FlowUtil.getCurrentUserIds(requestId); + if (CollectionUtils.isEmpty(currentUserIds)) { + throw new CustomizeRunTimeException("requestId[" + requestId + "],流程提交失败,未获取到当前节点处理人"); + } + + String submitResult = FlowUtil.submitWorkflowRequest(requestId, currentUserIds.get(0), options + DateUtil.getFullDate()); + if (!"success".equals(submitResult)) { + throw new CustomizeRunTimeException("requestId[" + requestId + "],流程提交失败"); + } + } + } + + + return new HashMap<>(); + } +} diff --git a/src/com/engine/secret/util/FlowUtil.java b/src/com/engine/secret/util/FlowUtil.java new file mode 100644 index 0000000..c590f46 --- /dev/null +++ b/src/com/engine/secret/util/FlowUtil.java @@ -0,0 +1,69 @@ +package com.engine.secret.util; + +import com.alibaba.fastjson.JSON; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.workflow.webservices.WorkflowRequestInfo; +import weaver.workflow.webservices.WorkflowServiceImpl; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author:dxfeng + * @createTime: 2025/04/09 + * @version: 1.0 + */ +public class FlowUtil { + + /** + * 根据流程请求ID,获取对应流程的表名 + * + * @param requestId + * @return + */ + public static String getTableNameByRequestId(String requestId) { + RecordSet rs = new RecordSet(); + rs.executeQuery("select a.tablename from workflow_bill a join workflow_base b on a.id = b.formid where b.id = ( select workflowid from workflow_requestbase where requestid = ?)", requestId); + if (rs.next()) { + return rs.getString("tablename"); + } + return ""; + } + + + /** + * 获取流程的当前处理人 + * + * @param requestId + * @return + */ + public static List getCurrentUserIds(String requestId) { + RecordSet rs = new RecordSet(); + String sql = "select * from workflow_currentoperator where isremark = '0' and usertype = 0 and requestid=? order by id asc"; + List currentUserIds = new ArrayList(); + rs.executeQuery(sql, requestId); + while (rs.next()) { + currentUserIds.add(Util.getIntValue(Util.null2String(rs.getString("userid")))); + } + return currentUserIds; + } + + + /** + * 提交流程到下一节点 + * + * @param requestId + * @param creator + * @param opinions + * @return + */ + public static String submitWorkflowRequest(String requestId, int creator, String opinions) { + BaseBean bean = new BaseBean(); + WorkflowServiceImpl workflowService = new WorkflowServiceImpl(); + WorkflowRequestInfo wri = workflowService.getWorkflowRequest(Util.getIntValue(requestId, 0), creator, 0); + bean.writeLog("wri==" + JSON.toJSONString(wri)); + return workflowService.submitWorkflowRequest(wri, Util.getIntValue(requestId, 0), creator, "submit", opinions); + } +} diff --git a/src/com/engine/secret/util/ModeUtil.java b/src/com/engine/secret/util/ModeUtil.java index d191941..2e656f6 100644 --- a/src/com/engine/secret/util/ModeUtil.java +++ b/src/com/engine/secret/util/ModeUtil.java @@ -422,5 +422,14 @@ public class ModeUtil { return new String(c); } + public static String getTableNameByCustomId(String customId) { + RecordSet rs = new RecordSet(); + rs.executeQuery("select tablename from workflow_bill where id = (select formid from mode_customsearch where id = ?)", customId); + if (rs.next()) { + return rs.getString("tablename"); + } + return ""; + } + } diff --git a/src/com/engine/secret/web/AuthorityChangeController.java b/src/com/engine/secret/web/AuthorityChangeController.java new file mode 100644 index 0000000..4b68aa1 --- /dev/null +++ b/src/com/engine/secret/web/AuthorityChangeController.java @@ -0,0 +1,39 @@ +package com.engine.secret.web; + +import com.engine.common.util.ParamUtil; +import com.engine.common.util.ServiceUtil; +import com.engine.secret.service.AuthorityChangeService; +import com.engine.secret.service.impl.AuthorityChangeServiceImpl; +import com.engine.secret.util.ResponseResult; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2025/04/09 + * @version: 1.0 + */ +public class AuthorityChangeController { + public AuthorityChangeService getService(User user) { + return ServiceUtil.getService(AuthorityChangeServiceImpl.class, user); + } + + @POST + @Path("/delegateToProvincialAuthority") + @Produces(MediaType.APPLICATION_JSON) + public String delegateToProvincialAuthority(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + Map params = ParamUtil.request2Map(request); + return new ResponseResult, Map>(user).run(getService(user)::delegateToProvincialAuthority, params); + + } +} diff --git a/src/weaver/interfaces/secret/action/ApprovalReviewEndAction.java b/src/weaver/interfaces/secret/action/ApprovalReviewEndAction.java new file mode 100644 index 0000000..1b01d2c --- /dev/null +++ b/src/weaver/interfaces/secret/action/ApprovalReviewEndAction.java @@ -0,0 +1,81 @@ +package weaver.interfaces.secret.action; + +import com.engine.secret.exception.CustomizeRunTimeException; +import com.engine.secret.util.FlowUtil; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import weaver.common.DateUtil; +import weaver.conn.RecordSet; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.MainTableInfo; +import weaver.soa.workflow.request.Property; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 审批复核 归档Action + * + * @author:dxfeng + * @createTime: 2025/04/09 + * @version: 1.0 + */ +public class ApprovalReviewEndAction implements Action { + RecordSet rs = new RecordSet(); + + @Override + public String execute(RequestInfo requestInfo) { + try { + MainTableInfo mainTableInfo = requestInfo.getMainTableInfo(); + Property[] properties = mainTableInfo.getProperty(); + Map mainDataMap = new HashMap<>(); + for (Property property : properties) { + mainDataMap.put(property.getName(), property.getValue()); + } + // 获取主流程ID + String mainRequestId = mainDataMap.get("zlcid"); + if (StringUtils.isBlank(mainRequestId)) { + requestInfo.getRequestManager().setMessagecontent("未获取到主流程请求ID"); + return FAILURE_AND_CONTINUE; + } + + // 获取审批复核结论 + String conclusion = mainDataMap.get("spfhjl"); + + // 更新主流程表单的审批复核结论 + String tableNameByRequestId = FlowUtil.getTableNameByRequestId(mainRequestId); + if (StringUtils.isBlank(tableNameByRequestId)) { + requestInfo.getRequestManager().setMessagecontent("主流程表单名称获取异常,请确认"); + return FAILURE_AND_CONTINUE; + } + String sql = "update " + tableNameByRequestId + " set spfhjl = ? where requestid = ?"; + + rs.writeLog("mainRequestId==" + mainRequestId); + rs.writeLog("conclusion==" + conclusion); + rs.writeLog("tableNameByRequestId==" + tableNameByRequestId); + rs.writeLog("sql==" + sql); + + rs.executeUpdate(sql, conclusion, mainRequestId); + + // 更新完成后,自动提交流程到下一节点 + rs.writeLog("mainRequestId==" + mainRequestId); + List currentUserIds = FlowUtil.getCurrentUserIds(mainRequestId); + if (CollectionUtils.isEmpty(currentUserIds)) { + throw new CustomizeRunTimeException("requestId[" + mainRequestId + "],流程提交失败,未获取到当前节点处理人"); + } + String options = requestInfo.getCreatorid() + "-自动提交流程-" + DateUtil.getFullDate(); + String submitResult = FlowUtil.submitWorkflowRequest(mainRequestId, currentUserIds.get(0), options); + if (!"success".equals(submitResult)) { + throw new CustomizeRunTimeException("requestId[" + mainRequestId + "],流程提交失败"); + } + + return SUCCESS; + } catch (Exception e) { + rs.writeLog(e); + requestInfo.getRequestManager().setMessagecontent(e.getMessage()); + return FAILURE_AND_CONTINUE; + } + } +}