Browse Source

再签单BUG修改

wanghui 7 years ago
parent
commit
15a647abf1
1 changed files with 29 additions and 9 deletions
  1. 29 9
      src/main/java/com/goafanti/order/service/impl/OrderServiceImpl.java

+ 29 - 9
src/main/java/com/goafanti/order/service/impl/OrderServiceImpl.java

@@ -945,11 +945,12 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 	}
 
 	@Override
+	@Transactional
 	public int updateSignServiceOrder(String orderNo,String contractNo, String signFirstPayment, String signTotalAmount,
 			String approval,String orderRemarks,String signTime) {
 		TOrder tOrder = tOrderMapper.selectByPrimaryKey(orderNo);
 		checkOrder(tOrder); //检查订单状态
-		checkProject(tOrder); //检查是否可签单
+		List<LockingReleaseBo> releaseList = checkProject(tOrder); //检查是否可签单
 		if (tOrder.getOrderStatus() != OrderState.WAIT_FOR_SIGN.getCode()) {
 			throw new BusinessException(new Error(ErrorConstants.NOT_ACCORD_WITH_NEXT, orderNo, ""));
 		} else {
@@ -968,8 +969,9 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 			tOrder.setOrderRemarks(orderRemarks);
 			tOrder.setContractNo(contractNo);
 			tOrderMapper.updateByPrimaryKeySelective(tOrder);
+			releaseProject(releaseList);//释放原锁定业务
+			lockProject(tOrder);//锁定客户业务
 		}
-		lockProject(tOrder);//锁定客户业务·
 		return 1;
 	}
 
@@ -1002,7 +1004,7 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 			 throw new BusinessException(new Error(ErrorConstants.ORDER_ALREADY_REVOKE, tOrder.getOrderNo(),""));
 	}
 
-	public void checkProject(TOrder tOrder){
+	public List<LockingReleaseBo> checkProject(TOrder tOrder){
 		List<TOrderDetail> list = tOrderMapper.selectOrderCommodity(tOrder.getOrderNo());
 		//检查客户锁定情况
 		boolean isUserOwner = false;
@@ -1011,24 +1013,29 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 			isUserOwner = true;
 		}
 		//检查业务锁定情况
-		List<LockingReleaseBo> businessLockedList = null;
+		List<LockingReleaseBo> lockedList = null;
+		List<LockingReleaseBo> releaseList = new ArrayList<LockingReleaseBo>();
 		boolean isBusinessOwner = false;
 		String businessName = "";
 		for(TOrderDetail td : list){
-			businessLockedList = userMapper.selectLockedProject(tOrder.getBuyerId(), null,td.getCommodityId(), 1, UserLockReleaseStatus.LOCKED.getCode());
+			lockedList = userMapper.selectLockedProject(tOrder.getBuyerId(), null,td.getCommodityId(), 1, UserLockReleaseStatus.LOCKED.getCode());
 			businessName = businessProjectMapper.selectByPrimaryKey(td.getCommodityId()).getBname();
-			if(businessLockedList.size() > 0){
-				for(LockingReleaseBo bo : businessLockedList){
-					if(bo.getAid().equals(TokenManager.getAdminId())) isBusinessOwner = true;
+			if(lockedList.size() > 0){
+				for(LockingReleaseBo bo : lockedList){
+					if(bo.getAid().equals(TokenManager.getAdminId())){
+						isBusinessOwner = true;
+						lockedList.add(bo);
+					} 
 				}
 				if(!isBusinessOwner) throw new BusinessException(new Error(ErrorConstants.BUSINESS_ALREADY_LOCKED,businessName,""));
 			}else{
 				if(!isUserOwner) throw new BusinessException(new Error(ErrorConstants.CUSTOMER_ALREADY_LOCKED,businessName,""));
 			}
 		}
+		return releaseList;
 	}
 	
-	public void lockProject(TOrder tOrder){
+	private void lockProject(TOrder tOrder){
 		List<TOrderDetail> list = tOrderMapper.selectOrderCommodity(tOrder.getOrderNo());
 		UserLockRelease ulr = null;
 		for(TOrderDetail td : list){
@@ -1046,6 +1053,19 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 		}
 	}
 	
+	private void releaseProject(List<LockingReleaseBo> releaseList){
+		if(releaseList != null && releaseList.size()>0){
+			UserLockRelease ulr = null;
+			for(LockingReleaseBo bo : releaseList){
+				ulr = new UserLockRelease();
+				ulr.setId(bo.getId());
+				ulr.setStatus(UserLockReleaseStatus.RELEASE.getCode());
+				userLockReleaseMapper.updateByPrimaryKeySelective(ulr);
+			}
+			
+		}
+	}
+	
 	@Override
 	@Transactional
 	public int addOrderCommodity(String orderNo, String commodityId,String commodityName, String commodityMode, Integer commodityQuantity,Integer commodityType,