Quellcode durchsuchen

Merge branch 'dev-mycat' into dev-mysql

hulh vor 8 Jahren
Ursprung
Commit
3fa4405a3e

+ 22 - 20
src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/ProductServiceImpl.java

@@ -46,9 +46,8 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.Sort;
 import org.springframework.data.jpa.domain.Specification;
-import org.springframework.jdbc.core.CallableStatementCallback;
-import org.springframework.jdbc.core.CallableStatementCreator;
 import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.StatementCallback;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
@@ -58,9 +57,9 @@ import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 import java.lang.reflect.Field;
-import java.sql.CallableStatement;
-import java.sql.Connection;
+import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.sql.Statement;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -320,23 +319,26 @@ public class ProductServiceImpl implements ProductService {
 
     @Override
     public Integer matchAll() {
-//        jdbcTemplate.execute("call TRADE_UPDATE_AVAILABLE_DAYS(" + SystemSession.getUser().getEnterprise().getUu() + ")");
-        Integer updateCount = (Integer) jdbcTemplate.execute(
-            new CallableStatementCreator() {
-                public CallableStatement createCallableStatement(Connection con) throws SQLException {
-                    String sp = "{call vendor_match_products(?,?)}";
-                    CallableStatement cs = con.prepareCall(sp);
-                    cs.setLong(1, SystemSession.getUser().getEnterprise().getUu());
-                    cs.registerOutParameter(2, OracleType.STYLE_INT);
-                    return cs;
-                }
-            }, new CallableStatementCallback() {
-                public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
-                    cs.execute();
-                    return cs.getInt(2);
+        Long enuu = SystemSession.getUser().getEnterprise().getUu();
+        String sql = "/*#mycat:db_type=master*/ call vendor_match_products(%s, @out); select @out";
+        final String querySql = String.format(sql, enuu);
+        String updateCount = jdbcTemplate.execute(new StatementCallback<String>() {
+
+            @Override
+            public String doInStatement(Statement stmt) throws SQLException, DataAccessException {
+                stmt.executeQuery(querySql);
+                ResultSet rs = stmt.getResultSet();
+                if (rs != null) {
+                    rs.next();
+                    return rs.getString(1);
                 }
-            });
-        return updateCount;
+                return null;
+            }
+        });
+        if (StringUtils.isEmpty(updateCount)) {
+            return 0;
+        }
+        return Integer.valueOf(updateCount);
     }
 
 

+ 23 - 4
src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/ReleaseProductByBatchServiceImpl.java

@@ -449,7 +449,8 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 		}
 		commonDao.save(releaseProductByBatchs, ReleaseProductByBatch.class);
 		Long userUU = SystemSession.getUser().getUserUU();
-		releaseProductByBatchDao.callValidProcedure(userUU, batch);
+		Long enuu = SystemSession.getUser().getEnterprise().getUu();
+		callValidProcedure(enuu, batch);
 		Integer failure = releaseProductByBatchDao.getCountPublisherUuAndBatchAndReleaseCode(userUU, batch, ReleaseStatus.failure.value());
 		Integer success = releaseProductByBatchDao.getCountPublisherUuAndBatchAndReleaseCode(userUU, batch, ReleaseStatus.success.value());
 		modelMap.put("total", total);
@@ -460,6 +461,25 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 		return modelMap;
 	}
 
+	/**
+	 * 使用mycat注解方式调用存储过程
+	 * @param enuu  卖家uu
+	 * @param batch 批次号
+	 */
+	private void callValidProcedure(Long enuu, String batch) {
+		final Object[] obj = new Object[]{enuu, batch};
+		String sql = "/*#mycat:db_type=master*/ call PRODUCT_RELEASE_VALID(%s, '%s')";
+		final String updateSql = String.format(sql, obj);
+		jdbcTemplate.execute(new StatementCallback<String>() {
+
+			@Override
+			public String doInStatement(Statement stmt) throws SQLException, DataAccessException {
+				Integer count = stmt.executeUpdate(updateSql);
+				return count.toString();
+			}
+		});
+	}
+
 	/**
 	 * 分析分段的价格
  	 */
@@ -822,14 +842,13 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 	public String publishByBatch(String batch) {
 		Enterprise enterprise = SystemSession.getUser().getEnterprise();
 		final Object [] obj = new Object[]{enterprise.getUu(), enterprise.getEnName(), batch};
-		String sql = "/*#mycat:db_type=master*/ set @enuu = %s; set @enName = '%s'; set @batch = '%s'; call product_release_batch_publish(@enuu, @enName, @batch, @out)";
+		String sql = "/*#mycat:db_type=master*/ set @enuu = %s; set @enName = '%s'; set @batch = '%s'; call product_release_batch_publish(@enuu, @enName, @batch, @out); select @out";
 		final String updateSql = String.format(sql, obj);
 		String num = jdbcTemplate.execute(new StatementCallback<String>() {
 
 			@Override
 			public String doInStatement(Statement stmt) throws SQLException, DataAccessException {
-				stmt.executeUpdate(updateSql);
-				stmt.execute("select @out");
+				stmt.executeQuery(updateSql);
 				ResultSet rs = stmt.getResultSet();
 				if (null != rs) {
 					rs.next();