From e6883f7be0a81d6423b8c9e9ed8290bfe5852eea Mon Sep 17 00:00:00 2001
From: wuxw7 <wuxw7@asiainfo.com>
Date: 星期六, 29 四月 2017 19:52:49 +0800
Subject: [PATCH] 完成客户信息撤销,作废接口

---
 UserService/src/main/java/com/java110/user/smo/impl/UserServiceSMOImpl.java |  141 +++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 136 insertions(+), 5 deletions(-)

diff --git a/UserService/src/main/java/com/java110/user/smo/impl/UserServiceSMOImpl.java b/UserService/src/main/java/com/java110/user/smo/impl/UserServiceSMOImpl.java
index 12aa81a..1faaacd 100644
--- a/UserService/src/main/java/com/java110/user/smo/impl/UserServiceSMOImpl.java
+++ b/UserService/src/main/java/com/java110/user/smo/impl/UserServiceSMOImpl.java
@@ -9,6 +9,7 @@
 import com.java110.entity.user.BoCust;
 import com.java110.entity.user.BoCustAttr;
 import com.java110.entity.user.Cust;
+import com.java110.entity.user.CustAttr;
 import com.java110.feign.base.IPrimaryKeyService;
 import com.java110.user.dao.IUserServiceDao;
 import com.java110.user.smo.IUserServiceSMO;
@@ -20,10 +21,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 鐢ㄦ埛鏈嶅姟淇℃伅绠$悊涓氬姟淇℃伅瀹炵幇
@@ -398,7 +396,15 @@
         Assert.isNull(datas,"浼犲叆鐨刣ata鑺傜偣涓嬫病鏈変换浣曞唴瀹�");
 
         for(int boIdIndex = 0 ; boIdIndex < datas.size(); boIdIndex++){
+            JSONObject data = datas.getJSONObject(boIdIndex);
 
+            Assert.isNull(data,"boId","褰撳墠鑺傜偣涓病鏈夊寘鍚玝oId鑺傜偣鏍煎紡閿欒"+data);
+
+            // 澶嶅師Cust
+            doDeleteBoCust(data);
+
+            // 澶嶅師CustAttr
+            doDeleteBoCustAttr(data);
 
         }
 
@@ -486,8 +492,133 @@
      * @throws Exception
      */
     public void doDeleteBoCust(JSONObject data) throws Exception{
-        //鏍规嵁boId 鏌ヨbo_cust 琛紝鏄惁鏈夋暟鎹紝娌℃暟鎹洿鎺ヨ繑鍥�
 
+
+        Cust deleteCust = null;
+        //鏍规嵁boId 鏌ヨbo_cust 琛紝鏄惁鏈夋暟鎹紝娌℃暟鎹洿鎺ヨ繑鍥�
+        BoCust boCust = new BoCust();
+
+        boCust.setBoId(data.getString("boId"));
+
+       List<BoCust> boCusts =  iUserServiceDao.queryBoCust(boCust);
+
+       //Assert.isOne(boCusts,"鍦ㄨ〃bo_cust涓湭鎵惧埌boId 涓篬"+data.getString("boId")+"]鐨勬暟鎹� 鎴栨湁澶氭潯鏁版嵁锛岃妫�鏌�");
+        if(boCusts == null || boCusts.size() < 1){
+            LoggerEngine.error("褰撳墠娌℃湁鏌ュ埌鏁颁负 "+data+"璇锋鏌ユ暟鎹�");
+            return;
+        }
+       //鍦ㄨ繃绋嬭〃涓ˉ涓�鏉′綔搴熺殑鏁版嵁锛岀劧鍚庢牴鎹産oId鐨勫姩浣滃瀹炰緥鏁版嵁杩涜澶勭悊
+
+        boCust.setCustId(boCusts.get(0).getCustId());
+        boCust.setBoId("");
+        //鏌ヨ鍑烘墍鏈塩ustId 涓�鏍风殑鏁版嵁
+        List<BoCust> boCustAll =  iUserServiceDao.queryBoCust(boCust);
+
+        Assert.isNull(boCustAll,"褰撳墠娌℃湁鏌ュ埌custId 涓� "+boCusts.get(0).getCustId()+"璇锋鏌ユ暟鎹�");
+
+        boCust = boCusts.get(0);
+
+        BoCust newBoCust = new BoCust();
+        newBoCust.setBoId(data.getString("newBoId"));
+        newBoCust.setCustId(boCust.getCustId());
+        newBoCust.setState("DEL");
+        int saveBoCustFlag = iUserServiceDao.saveDataToBoCust(newBoCust);
+
+        if(saveBoCustFlag < 1){
+            throw new RuntimeException("鍚慴o_cust琛ㄤ腑淇濆瓨鏁版嵁澶辫触锛宐oCust="+JSONObject.toJSONString(newBoCust));
+        }
+
+        //棣栧厛鍒犻櫎瀹炰緥鏁版嵁
+        deleteCust = new Cust();
+        deleteCust.setCustId(boCust.getCustId());
+        if(iUserServiceDao.deleteDataToCust(deleteCust) < 1){
+            throw new RuntimeException("鍒犻櫎cust瀹炰緥鏁版嵁澶辫触"+JSONObject.toJSONString(deleteCust));
+        }
+        //濡傛灉鏈夊鏉℃暟鎹紝鍒欐仮澶� 鍓嶄竴鏉℃暟鎹俊鎭紝杩欒竟瀛樺湪bug 濡傛灉涓婁竴鏉$殑鏁版嵁娌℃湁鍒嗚浠ュ墠鏁版嵁鐨勬儏鍐典笅浼氭湁闂锛�
+        // 鎵�浠ユ垜浠殑鍘熷垯鏄啀鏇存柊鎴栧垹闄ゆ暟鎹椂涓�瀹氳鍦ㄨ繃绋嬭〃涓繚瀛樺畬鏁存槸瀹炰緥鏁版嵁淇℃伅
+        if(boCustAll.size() > 1){
+            Cust oldCust = boCustAll.get(1).convert();
+            if(iUserServiceDao.saveDataToCust(oldCust)<1 ){
+                throw new RuntimeException("cust 琛ㄦ仮澶嶈�佹暟鎹俊鎭け璐ワ紝cust 涓猴細"+JSONObject.toJSONString(oldCust));
+            }
+        }
+    }
+
+    /**
+     * 鍒犻櫎 bo_cust_attr
+     * @param data
+     * @throws Exception
+     */
+    public void doDeleteBoCustAttr(JSONObject data) throws Exception{
+
+        BoCustAttr boCustAttrTmp = new BoCustAttr();
+
+        boCustAttrTmp.setBoId(data.getString("boId"));
+
+        List<BoCustAttr> boCustAttrs = iUserServiceDao.queryBoCustAttr(boCustAttrTmp);
+
+        if(boCustAttrs == null || boCustAttrs.size() < 1){
+            LoggerEngine.error("褰撳墠娌℃湁鏌ュ埌鏁颁负 "+data+"璇锋鏌ユ暟鎹�");
+            return;
+        }
+
+        boCustAttrTmp.setBoId("");
+        boCustAttrTmp.setCustId(boCustAttrs.get(0).getCustId());
+
+        List<BoCustAttr> boCustAttrsTmps = iUserServiceDao.queryBoCustAttr(boCustAttrTmp);
+
+        Assert.isNull(boCustAttrsTmps,"褰撳墠娌℃湁鏌ュ埌custId 涓� "+boCustAttrs.get(0).getCustId()+"璇锋鏌ユ暟鎹�");
+
+        //鑾峰彇涓婁竴娆℃墍鏈夌殑灞炴��
+
+        List<BoCustAttr> preBoCustAttrTmps = getPreBoCustAttrs(boCustAttrsTmps);
+
+        //淇濆瓨杩囩▼琛�
+        for(BoCustAttr boCustAttr : boCustAttrs){
+            boCustAttr.setBoId("newBoId");
+            boCustAttr.setState("DEL");
+            if(iUserServiceDao.saveDataToBoCustAttr(boCustAttr) < 1){
+                throw new RuntimeException("淇濆瓨鏁版嵁澶辫触锛屼繚瀛樻暟鎹负boCustAttr = "+ JSONObject.toJSONString(boCustAttr));
+            }
+        }
+
+        //鍒犻櫎瀹炰緥鏁版嵁 杩欓噷鎬濊矾鏄紝鍒犻櫎瀹炰緥鏁版嵁涓暟鎹紝灏嗕笂涓�娆DD鏁版嵁閲嶆柊鍐欎竴閬�
+        CustAttr custAttrTmp = new CustAttr();
+        custAttrTmp.setCustId(boCustAttrs.get(0).getCustId());
+        if(iUserServiceDao.deleteDataToCustAttr(custAttrTmp) < 1){
+            throw new RuntimeException("鍒犻櫎CustAttr 瀹炰緥鏁版嵁澶辫触,鏁版嵁涓猴細"+JSONObject.toJSONString(custAttrTmp));
+        }
+
+        for(BoCustAttr boCustAttr : preBoCustAttrTmps){
+            if("ADD".equals(boCustAttr.getState())){
+                if(iUserServiceDao.deleteDataToCustAttr(boCustAttr.convert()) < 1){
+                    throw new  RuntimeException("澶嶅師鍘熷鏁版嵁澶辫触锛屾暟鎹负锛�" + JSONObject.toJSONString(boCustAttr));
+                }
+            }
+        }
+
+    }
+
+    /**
+     * 鑾峰彇涓婁笂涓�娆$殑鎿嶄綔
+     * @param boCustAttrs
+     * @return
+     */
+    private List<BoCustAttr> getPreBoCustAttrs(List<BoCustAttr> boCustAttrs){
+
+        String firstBoId = boCustAttrs.get(0).getBoId();
+        String preBoId = "";
+        List<BoCustAttr> preBoCustAttrs = new ArrayList<BoCustAttr>();
+        for(BoCustAttr boCustAttr : boCustAttrs){
+            if(!firstBoId.equals(boCustAttr.getBoId())){
+                if(!preBoId.equals(boCustAttr.getBoId()) && !"".equals(preBoId)){
+                    break;
+                }
+                preBoId = boCustAttr.getBoId();
+                preBoCustAttrs.add(boCustAttr);
+            }
+        }
+        return preBoCustAttrs;
     }
 
     public IPrimaryKeyService getiPrimaryKeyService() {

--
Gitblit v1.8.0