bruce

优化oracle事务

......@@ -14,6 +14,8 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Service;
import com.cjs.site.biz.ServiceException;
......@@ -38,7 +40,11 @@ import com.cjs.site.util.redis.JedisTemplate;
import com.cjs.site.util.t2.T2Result;
import com.cjs.site.util.t2.T2Util;
import com.cjs.site.util.web.ActionUtil;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.transaction.support.DefaultTransactionDefinition;
/**
* 提货
......@@ -78,7 +84,9 @@ public class PickBiz {
private InventoryDao inventoryDao;
@Autowired
private PickPackDao pickPackDao;
@Autowired
@Qualifier("transactionManagerOracle")
private DataSourceTransactionManager transactionManager;
/**
* 封装费用汇总
*/
......@@ -181,6 +189,7 @@ public class PickBiz {
/* if (resultInfo.getCode() == 0) {
return resultInfo;
}*/
ResultInfo resultInfo;
if (pickInfo.getInsuranceType() == null) {
return new ResultInfo(0, "请选择投保方式");
}
......@@ -189,37 +198,47 @@ public class PickBiz {
return new ResultInfo(0, "投保金额不能低于1000元");
}
}
HttpSession session = ActionUtil.getRequest().getSession();
UserAddressInfo addressInfo = userAddressDao.queryById(addressId);
OutpropApplyInfo applyInfo = new OutpropApplyInfo();
String pickDate = this.createPickDate("");
String pack = (String) session.getAttribute("pack"); //0:普通自提;1:封装自提
if (addressInfo == null) {
return new ResultInfo(0, "收货地址不存在");
}
//提货详细信息
applyInfo.setPickType("02");
applyInfo.setPhoneCode(addressInfo.getMobileNo());
applyInfo.setExpressAddress(addressInfo.getAddress());
applyInfo.setPickingName(addressInfo.getUserName());
pickInfo.setPickType("2");
pickInfo.setPickDate(pickDate);
//普通自提时检查是否需要合并取货单
if ("0".equals(pack)) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("pickingName", addressInfo.getUserName());
params.put("expressAddress", addressInfo.getAddress());
params.put("phoneCode", addressInfo.getMobileNo());
params.put("initDate", DateUtil.getNow(DateEnum.UNSIGNED_DATE));
List<OutpropApplyInfo> beforeApplys = outpropApplyDao.search(params);
if (!beforeApplys.isEmpty()) {
pickInfo.setPickNo(beforeApplys.get(0).getOpStation());
pickInfo.setMerge(true);
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = transactionManager.getTransaction(def);
try{
HttpSession session = ActionUtil.getRequest().getSession();
UserAddressInfo addressInfo = userAddressDao.queryById(addressId);
OutpropApplyInfo applyInfo = new OutpropApplyInfo();
String pickDate = this.createPickDate("");
String pack = (String) session.getAttribute("pack"); //0:普通自提;1:封装自提
if (addressInfo == null) {
return new ResultInfo(0, "收货地址不存在");
}
//提货详细信息
applyInfo.setPickType("02");
applyInfo.setPhoneCode(addressInfo.getMobileNo());
applyInfo.setExpressAddress(addressInfo.getAddress());
applyInfo.setPickingName(addressInfo.getUserName());
pickInfo.setPickType("2");
pickInfo.setPickDate(pickDate);
//普通自提时检查是否需要合并取货单
if ("0".equals(pack)) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("pickingName", addressInfo.getUserName());
params.put("expressAddress", addressInfo.getAddress());
params.put("phoneCode", addressInfo.getMobileNo());
params.put("initDate", DateUtil.getNow(DateEnum.UNSIGNED_DATE));
List<OutpropApplyInfo> beforeApplys = outpropApplyDao.search(params);
if (!beforeApplys.isEmpty()) {
pickInfo.setPickNo(beforeApplys.get(0).getOpStation());
pickInfo.setMerge(true);
}
}
resultInfo = this.pick(pickInfo, applyInfo);
transactionManager.commit(status);
}catch (Exception e){
transactionManager.rollback(status);
return new ResultInfo(0, "数据异常,请联系客服!");
}
return this.pick(pickInfo, applyInfo);
return resultInfo;
}
/**转赵涌在线拍卖*/
......@@ -254,7 +273,6 @@ public class PickBiz {
* @return code(0:全部失败;1:成功;2:部分失败)
*/
@SuppressWarnings("unchecked")
@Transactional
public ResultInfo pick(OutpropApplyPickInfo pickInfo, OutpropApplyInfo applyInfo) {
UserInfo user = ActionUtil.getUser();
HttpSession session = ActionUtil.getRequest().getSession();
......
......@@ -186,6 +186,10 @@
<property name="dataSource" ref="dataSourceMySql" />
</bean>
<bean id="transactionManagerOracle" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSourceOracle" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
</beans>
......