Browse Source

Merge remote-tracking branch 'origin/dev-mysql' into dev-mysql

wangdy 8 years ago
parent
commit
238a48c6dd

+ 2 - 3
src/main/java/com/uas/platform/b2c/prod/commodity/dao/ProductDao.java

@@ -4,7 +4,6 @@ import com.uas.platform.b2c.prod.commodity.model.Product;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.jpa.repository.query.Procedure;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
@@ -35,8 +34,8 @@ public interface ProductDao extends JpaSpecificationExecutor<Product>, JpaReposi
      * @param enuu the enuu 企业enuu
      * @return string
      */
-    @Procedure(procedureName = "PRODUCT$MATCHES")
-    String upateResultByEnuuForB2C(Long enuu);
+//    @Procedure(procedureName = "PRODUCT$MATCHES")
+//    String upateResultByEnuuForB2C(Long enuu);
 
     /**
      * 获取当前的状态的数据

+ 4 - 5
src/main/java/com/uas/platform/b2c/prod/commodity/dao/ProductImportHistDao.java

@@ -4,7 +4,6 @@ import com.uas.platform.b2c.prod.commodity.model.ProductImportHist;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.jpa.repository.query.Procedure;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
@@ -25,8 +24,8 @@ public interface ProductImportHistDao extends JpaRepository<ProductImportHist, L
      * @param uploadNum 本次上传的编号
      * @param enuu      企业的uu
      */
-    @Procedure(procedureName = "PRODUCT$IMPORT$VALIDATE")
-    void validProductImportInfo(String uploadNum, Long enuu);
+//    @Procedure(procedureName = "PRODUCT$IMPORT$VALIDATE")
+//    void validProductImportInfo(String uploadNum, Long enuu);
 
 
     /**
@@ -46,8 +45,8 @@ public interface ProductImportHistDao extends JpaRepository<ProductImportHist, L
      * @param uploadNum 本次导入的标准库
      * @return Integer 导入的条数
      */
-    @Procedure(procedureName = "PRODUCT$IMPORT$REPOSITORY")
-    Integer importToProRepository(String uploadNum);
+//    @Procedure(procedureName = "PRODUCT$IMPORT$REPOSITORY")
+//    Integer importToProRepository(String uploadNum);
 
     /**
      * 导出批次下的 指定状态的信息

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

@@ -37,7 +37,6 @@ import com.uas.platform.core.model.Type;
 import com.uas.platform.core.persistence.criteria.LogicalExpression;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
 import com.uas.platform.core.persistence.criteria.SimpleExpression;
-import oracle.jdbc.oracore.OracleType;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -46,9 +45,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 +56,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 +318,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);
     }
 
 
@@ -368,7 +369,11 @@ public class ProductServiceImpl implements ProductService {
         }
         Integer num = null;
         if (flag) {
-            String result = productDao.upateResultByEnuuForB2C(SystemSession.getUser().getEnterprise().getUu());
+            /**
+             * 目前 测试没有这个存储过程,暂时注释掉这个代码
+             */
+            //String result = productDao.upateResultByEnuuForB2C(SystemSession.getUser().getEnterprise().getUu());
+            String result = "0";
             if (StringUtils.isEmpty(result)) {
                 map.put("size", 0);
                 map.put("redundance", 0);

+ 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();