bruce

优化oracle事务

...@@ -14,6 +14,8 @@ import org.apache.commons.lang3.StringUtils; ...@@ -14,6 +14,8 @@ import org.apache.commons.lang3.StringUtils;
14 import org.apache.logging.log4j.LogManager; 14 import org.apache.logging.log4j.LogManager;
15 import org.apache.logging.log4j.Logger; 15 import org.apache.logging.log4j.Logger;
16 import org.springframework.beans.factory.annotation.Autowired; 16 import org.springframework.beans.factory.annotation.Autowired;
17 +import org.springframework.beans.factory.annotation.Qualifier;
18 +import org.springframework.jdbc.datasource.DataSourceTransactionManager;
17 import org.springframework.stereotype.Service; 19 import org.springframework.stereotype.Service;
18 20
19 import com.cjs.site.biz.ServiceException; 21 import com.cjs.site.biz.ServiceException;
...@@ -38,7 +40,11 @@ import com.cjs.site.util.redis.JedisTemplate; ...@@ -38,7 +40,11 @@ import com.cjs.site.util.redis.JedisTemplate;
38 import com.cjs.site.util.t2.T2Result; 40 import com.cjs.site.util.t2.T2Result;
39 import com.cjs.site.util.t2.T2Util; 41 import com.cjs.site.util.t2.T2Util;
40 import com.cjs.site.util.web.ActionUtil; 42 import com.cjs.site.util.web.ActionUtil;
43 +import org.springframework.transaction.TransactionDefinition;
44 +import org.springframework.transaction.TransactionStatus;
41 import org.springframework.transaction.annotation.Transactional; 45 import org.springframework.transaction.annotation.Transactional;
46 +import org.springframework.transaction.interceptor.TransactionAspectSupport;
47 +import org.springframework.transaction.support.DefaultTransactionDefinition;
42 48
43 /** 49 /**
44 * 提货 50 * 提货
...@@ -78,7 +84,9 @@ public class PickBiz { ...@@ -78,7 +84,9 @@ public class PickBiz {
78 private InventoryDao inventoryDao; 84 private InventoryDao inventoryDao;
79 @Autowired 85 @Autowired
80 private PickPackDao pickPackDao; 86 private PickPackDao pickPackDao;
81 - 87 + @Autowired
88 + @Qualifier("transactionManagerOracle")
89 + private DataSourceTransactionManager transactionManager;
82 /** 90 /**
83 * 封装费用汇总 91 * 封装费用汇总
84 */ 92 */
...@@ -181,6 +189,7 @@ public class PickBiz { ...@@ -181,6 +189,7 @@ public class PickBiz {
181 /* if (resultInfo.getCode() == 0) { 189 /* if (resultInfo.getCode() == 0) {
182 return resultInfo; 190 return resultInfo;
183 }*/ 191 }*/
192 + ResultInfo resultInfo;
184 if (pickInfo.getInsuranceType() == null) { 193 if (pickInfo.getInsuranceType() == null) {
185 return new ResultInfo(0, "请选择投保方式"); 194 return new ResultInfo(0, "请选择投保方式");
186 } 195 }
...@@ -189,37 +198,47 @@ public class PickBiz { ...@@ -189,37 +198,47 @@ public class PickBiz {
189 return new ResultInfo(0, "投保金额不能低于1000元"); 198 return new ResultInfo(0, "投保金额不能低于1000元");
190 } 199 }
191 } 200 }
192 - HttpSession session = ActionUtil.getRequest().getSession(); 201 + DefaultTransactionDefinition def = new DefaultTransactionDefinition();
193 - UserAddressInfo addressInfo = userAddressDao.queryById(addressId); 202 + def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
194 - OutpropApplyInfo applyInfo = new OutpropApplyInfo(); 203 + TransactionStatus status = transactionManager.getTransaction(def);
195 - String pickDate = this.createPickDate(""); 204 + try{
196 - String pack = (String) session.getAttribute("pack"); //0:普通自提;1:封装自提 205 + HttpSession session = ActionUtil.getRequest().getSession();
197 - 206 + UserAddressInfo addressInfo = userAddressDao.queryById(addressId);
198 - if (addressInfo == null) { 207 + OutpropApplyInfo applyInfo = new OutpropApplyInfo();
199 - return new ResultInfo(0, "收货地址不存在"); 208 + String pickDate = this.createPickDate("");
200 - } 209 + String pack = (String) session.getAttribute("pack"); //0:普通自提;1:封装自提
201 - //提货详细信息 210 +
202 - applyInfo.setPickType("02"); 211 + if (addressInfo == null) {
203 - applyInfo.setPhoneCode(addressInfo.getMobileNo()); 212 + return new ResultInfo(0, "收货地址不存在");
204 - applyInfo.setExpressAddress(addressInfo.getAddress());
205 - applyInfo.setPickingName(addressInfo.getUserName());
206 - pickInfo.setPickType("2");
207 - pickInfo.setPickDate(pickDate);
208 -
209 - //普通自提时检查是否需要合并取货单
210 - if ("0".equals(pack)) {
211 - Map<String, Object> params = new HashMap<String, Object>();
212 - params.put("pickingName", addressInfo.getUserName());
213 - params.put("expressAddress", addressInfo.getAddress());
214 - params.put("phoneCode", addressInfo.getMobileNo());
215 - params.put("initDate", DateUtil.getNow(DateEnum.UNSIGNED_DATE));
216 - List<OutpropApplyInfo> beforeApplys = outpropApplyDao.search(params);
217 - if (!beforeApplys.isEmpty()) {
218 - pickInfo.setPickNo(beforeApplys.get(0).getOpStation());
219 - pickInfo.setMerge(true);
220 } 213 }
214 + //提货详细信息
215 + applyInfo.setPickType("02");
216 + applyInfo.setPhoneCode(addressInfo.getMobileNo());
217 + applyInfo.setExpressAddress(addressInfo.getAddress());
218 + applyInfo.setPickingName(addressInfo.getUserName());
219 + pickInfo.setPickType("2");
220 + pickInfo.setPickDate(pickDate);
221 +
222 + //普通自提时检查是否需要合并取货单
223 + if ("0".equals(pack)) {
224 + Map<String, Object> params = new HashMap<String, Object>();
225 + params.put("pickingName", addressInfo.getUserName());
226 + params.put("expressAddress", addressInfo.getAddress());
227 + params.put("phoneCode", addressInfo.getMobileNo());
228 + params.put("initDate", DateUtil.getNow(DateEnum.UNSIGNED_DATE));
229 + List<OutpropApplyInfo> beforeApplys = outpropApplyDao.search(params);
230 + if (!beforeApplys.isEmpty()) {
231 + pickInfo.setPickNo(beforeApplys.get(0).getOpStation());
232 + pickInfo.setMerge(true);
233 + }
234 + }
235 + resultInfo = this.pick(pickInfo, applyInfo);
236 + transactionManager.commit(status);
237 + }catch (Exception e){
238 + transactionManager.rollback(status);
239 + return new ResultInfo(0, "数据异常,请联系客服!");
221 } 240 }
222 - return this.pick(pickInfo, applyInfo); 241 + return resultInfo;
223 } 242 }
224 243
225 /**转赵涌在线拍卖*/ 244 /**转赵涌在线拍卖*/
...@@ -254,7 +273,6 @@ public class PickBiz { ...@@ -254,7 +273,6 @@ public class PickBiz {
254 * @return code(0:全部失败;1:成功;2:部分失败) 273 * @return code(0:全部失败;1:成功;2:部分失败)
255 */ 274 */
256 @SuppressWarnings("unchecked") 275 @SuppressWarnings("unchecked")
257 - @Transactional
258 public ResultInfo pick(OutpropApplyPickInfo pickInfo, OutpropApplyInfo applyInfo) { 276 public ResultInfo pick(OutpropApplyPickInfo pickInfo, OutpropApplyInfo applyInfo) {
259 UserInfo user = ActionUtil.getUser(); 277 UserInfo user = ActionUtil.getUser();
260 HttpSession session = ActionUtil.getRequest().getSession(); 278 HttpSession session = ActionUtil.getRequest().getSession();
......
...@@ -186,6 +186,10 @@ ...@@ -186,6 +186,10 @@
186 <property name="dataSource" ref="dataSourceMySql" /> 186 <property name="dataSource" ref="dataSourceMySql" />
187 </bean> 187 </bean>
188 188
189 + <bean id="transactionManagerOracle" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
190 + <property name="dataSource" ref="dataSourceOracle" />
191 + </bean>
192 +
189 <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" /> 193 <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
190 194
191 </beans> 195 </beans>
......