From 3a6141761f742733015b7bb2e651ae2026a5beea Mon Sep 17 00:00:00 2001 From: lihao Date: Fri, 21 Nov 2025 14:43:32 +0800 Subject: [PATCH] =?UTF-8?q?ims=E6=95=B0=E6=8D=AE=E6=BA=90=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bs/ic/m4d/sign/rule/UpdateGyimsRule.java | 3 +- .../bp/rule/AfterApproveSyncImsRule.java | 12 +++- .../public/nc/bs/uapbd/util/GyImsDbUtil.java | 61 ++++++++++++++++++- 3 files changed, 71 insertions(+), 5 deletions(-) diff --git a/ic/src/private/nc/bs/ic/m4d/sign/rule/UpdateGyimsRule.java b/ic/src/private/nc/bs/ic/m4d/sign/rule/UpdateGyimsRule.java index 8ec42699..62b497a3 100644 --- a/ic/src/private/nc/bs/ic/m4d/sign/rule/UpdateGyimsRule.java +++ b/ic/src/private/nc/bs/ic/m4d/sign/rule/UpdateGyimsRule.java @@ -2,6 +2,7 @@ package nc.bs.ic.m4d.sign.rule; import nc.bs.dao.BaseDAO; import nc.bs.logging.Log; +import nc.bs.uapbd.util.GyImsDbUtil; import nc.bs.uapbd.util.MyHelper; import nc.impl.pubapp.pattern.rule.IRule; import nc.vo.ic.m4d.entity.MaterialOutHeadVO; @@ -71,7 +72,7 @@ public class UpdateGyimsRule implements IRule { String updateSql = "update BIPOutMainTab set status = '2' where vbillcode in (" + ids + ")"; // 3. 执行更新(注意:这里不需要再传递参数,SQL已拼接完成) - int rows = getImsDao().executeUpdate(updateSql); + int rows = GyImsDbUtil.update(updateSql); } } catch (BusinessException e) { diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncImsRule.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncImsRule.java index e69e9456..13e479ed 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncImsRule.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncImsRule.java @@ -3,6 +3,7 @@ package nc.bs.mmpac.pmo.pac0002.bp.rule; import nc.bs.dao.BaseDAO; import nc.bs.logging.Log; +import nc.bs.uapbd.util.GyImsDbUtil; import nc.bs.uapbd.util.MyHelper; import nc.impl.pubapp.pattern.rule.IRule; import nc.jdbc.framework.SQLParameter; @@ -169,7 +170,11 @@ public class AfterApproveSyncImsRule implements IRule { private String buildSQL(String tableName, String[] columns, String pkColumn, Object pkValue) throws BusinessException { // 检查记录是否存在 String checkSql = "SELECT COUNT(1) FROM " + tableName + " WHERE " + pkColumn + " = '" + pkValue + "'"; - Integer count = (Integer) getImsDao().executeQuery(checkSql, new ColumnProcessor()); + Map map = GyImsDbUtil.queryOne(checkSql); + if(map.isEmpty()){ + return buildInsertSQL(tableName, columns); + } + Integer count = (Integer) GyImsDbUtil.queryOne(checkSql).get(""); if (count > 0) { // 构建UPDATE SQL @@ -379,7 +384,7 @@ public class AfterApproveSyncImsRule implements IRule { */ private void pushData(String headSql, SQLParameter headParams, List bodySqlList, List bodyParameterList) throws BusinessException { logger.error("gyIms-PMO-headSql = " + headSql); - int headRowsAffected = getImsDao().executeUpdate(headSql, headParams); + int headRowsAffected = GyImsDbUtil.update(headSql, headParams); if (headRowsAffected != 1) { NCCForUAPLogger.debug("gyIms-PMO-headSql = " + headSql); } @@ -387,7 +392,8 @@ public class AfterApproveSyncImsRule implements IRule { for (int i = 0; i < bodySqlList.size(); i++) { String bodySql = bodySqlList.get(i); SQLParameter parameter = bodyParameterList.get(i); - int bodyRowsAffected = getImsDao().executeUpdate(bodySql, parameter); + + int bodyRowsAffected = GyImsDbUtil.update(bodySql, parameter); if (bodyRowsAffected != 1) { NCCForUAPLogger.debug("gyIms-PMO-bodySql = " + bodySql); } diff --git a/uapbd/src/public/nc/bs/uapbd/util/GyImsDbUtil.java b/uapbd/src/public/nc/bs/uapbd/util/GyImsDbUtil.java index 469cebf6..9c5ff386 100644 --- a/uapbd/src/public/nc/bs/uapbd/util/GyImsDbUtil.java +++ b/uapbd/src/public/nc/bs/uapbd/util/GyImsDbUtil.java @@ -1,6 +1,7 @@ package nc.bs.uapbd.util; import nc.bs.logging.Log; +import nc.jdbc.framework.SQLParameter; import nc.vo.pub.BusinessException; import java.sql.*; @@ -334,7 +335,7 @@ public class GyImsDbUtil { * @throws BusinessException 鏇存柊寮傚父 */ public static int update(String sql) throws BusinessException { - return update(sql, null); + return update(sql, (Object[]) null); } /** @@ -537,5 +538,63 @@ public class GyImsDbUtil { return false; } } + + + + + /** + * 鎵ц鏇存柊SQL锛圛NSERT銆乁PDATE銆丏ELETE锛 + * + * @param sql 鏇存柊SQL璇彞 + * @param params 鍙傛暟鏁扮粍 + * @return int 褰卞搷鐨勮鏁 + * @throws BusinessException 鏇存柊寮傚父 + */ + public static int update(String sql, SQLParameter parameter) throws BusinessException { + Connection conn = null; + PreparedStatement pstmt = null; + + try { + conn = getConnection(); + conn.setAutoCommit(false); + pstmt = conn.prepareStatement(sql); + + // 鏍稿績淇敼1锛氱粦瀹氬弬鏁帮紙鏇挎崲鍘熼噸澶嶆墽琛岀殑executeUpdate锛屽亣璁維QLParameter鏈塯etParams()杩斿洖鍙傛暟鏁扮粍锛 + if (parameter != null && parameter.getParameters() != null) { + Object[] params = parameter.getParameters().toArray(); + for (int i = 0; i < params.length; i++) { + Object value = params[i]; + // 绠鍗曞弬鏁扮粦瀹氾紙绱㈠紩浠1寮濮嬶紝绌哄煎鐞嗭級 + if (value == null) { + pstmt.setNull(i + 1, Types.VARCHAR); // 榛樿VARCHAR锛屽彲鏍规嵁瀹為檯璋冩暣 + } else { + pstmt.setObject(i + 1, value); + } + } + } + + logger.info("鎵ц鏇存柊SQL: " + sql); + int rows = pstmt.executeUpdate(); + conn.commit(); + + logger.info("鏇存柊鎴愬姛锛屽奖鍝嶈鏁: " + rows); + return rows; + + } catch (SQLException e) { + if (conn != null) { + try { + conn.rollback(); + logger.info("浜嬪姟宸插洖婊"); + } catch (SQLException rollbackEx) { + logger.error("鍥炴粴浜嬪姟寮傚父", rollbackEx); + } + } + logger.error("鎵ц鏇存柊SQL澶辫触: " + sql, e); + throw new BusinessException("鎵ц鏇存柊SQL澶辫触: " + e.getMessage(), e); + } finally { + closeResources(null, pstmt, conn); + } + } + }