Przeglądaj źródła

完成客户信息撤销,作废接口

wuxw7 9 lat temu
rodzic
commit
e6883f7be0

+ 338 - 314
.idea/workspace.xml

@@ -2,12 +2,25 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="a191bf23-5de1-438a-810e-95cec23d6b25" name="Default" comment="change fastjson dependenciy">
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/OrderService/src/test/java/com/java110/order/common/PreBoCustAttr.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/OrderService/target/classes/com/java110/order/mq/MqConfig.class" afterPath="$PROJECT_DIR$/OrderService/target/classes/com/java110/order/mq/MqConfig.class" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/OrderService/target/classes/com/java110/order/smo/impl/OrderServiceSMOImpl.class" afterPath="$PROJECT_DIR$/OrderService/target/classes/com/java110/order/smo/impl/OrderServiceSMOImpl.class" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/bean/target/classes/com/java110/entity/user/BoCust.class" afterPath="$PROJECT_DIR$/bean/target/classes/com/java110/entity/user/BoCust.class" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/bean/target/classes/com/java110/entity/user/BoCustAttr.class" afterPath="$PROJECT_DIR$/bean/target/classes/com/java110/entity/user/BoCustAttr.class" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/common/target/classes/com/java110/common/util/Assert.class" afterPath="$PROJECT_DIR$/common/target/classes/com/java110/common/util/Assert.class" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/OrderService/src/main/java/com/java110/order/smo/impl/OrderServiceSMOImpl.java" afterPath="$PROJECT_DIR$/OrderService/src/main/java/com/java110/order/smo/impl/OrderServiceSMOImpl.java" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/UserService/src/main/java/com/java110/user/rest/UserServiceRest.java" afterPath="$PROJECT_DIR$/UserService/src/main/java/com/java110/user/rest/UserServiceRest.java" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/UserService/src/main/java/com/java110/user/smo/IUserServiceSMO.java" afterPath="$PROJECT_DIR$/UserService/src/main/java/com/java110/user/smo/IUserServiceSMO.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/OrderService/target/classes/META-INF/spring-configuration-metadata.json" afterPath="$PROJECT_DIR$/OrderService/target/classes/META-INF/spring-configuration-metadata.json" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/OrderService/target/classes/application.yml" afterPath="$PROJECT_DIR$/OrderService/target/classes/application.yml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/Readme.md" afterPath="$PROJECT_DIR$/Readme.md" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/UserService/src/main/java/com/java110/user/dao/IUserServiceDao.java" afterPath="$PROJECT_DIR$/UserService/src/main/java/com/java110/user/dao/IUserServiceDao.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/UserService/src/main/java/com/java110/user/dao/impl/UserServiceDaoImpl.java" afterPath="$PROJECT_DIR$/UserService/src/main/java/com/java110/user/dao/impl/UserServiceDaoImpl.java" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/UserService/src/main/java/com/java110/user/smo/impl/UserServiceSMOImpl.java" afterPath="$PROJECT_DIR$/UserService/src/main/java/com/java110/user/smo/impl/UserServiceSMOImpl.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/bean/src/main/java/com/java110/entity/user/BoCust.java" afterPath="$PROJECT_DIR$/bean/src/main/java/com/java110/entity/user/BoCust.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/bean/src/main/java/com/java110/entity/user/BoCustAttr.java" afterPath="$PROJECT_DIR$/bean/src/main/java/com/java110/entity/user/BoCustAttr.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/common/src/main/java/com/java110/common/util/Assert.java" afterPath="$PROJECT_DIR$/common/src/main/java/com/java110/common/util/Assert.java" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/config/src/main/resources/mapper/user/UserServiceDaoImplMapper.xml" afterPath="$PROJECT_DIR$/config/src/main/resources/mapper/user/UserServiceDaoImplMapper.xml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/config/target/classes/mapper/user/UserServiceDaoImplMapper.xml" afterPath="$PROJECT_DIR$/config/target/classes/mapper/user/UserServiceDaoImplMapper.xml" />
     </list>
     <ignored path="$PROJECT_DIR$/out/" />
     <ignored path="$PROJECT_DIR$/target/" />
@@ -38,31 +51,37 @@
   <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
   <component name="FileEditorManager">
     <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
-      <file leaf-file-name="UserServiceRest.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/UserService/src/main/java/com/java110/user/rest/UserServiceRest.java">
+      <file leaf-file-name="UserServiceSMOImpl.java" pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/UserService/src/main/java/com/java110/user/smo/impl/UserServiceSMOImpl.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="402">
-              <caret line="290" column="105" lean-forward="false" selection-start-line="290" selection-start-column="105" selection-end-line="290" selection-end-column="105" />
-              <folding />
+            <state relative-caret-position="303">
+              <caret line="402" column="18" lean-forward="false" selection-start-line="402" selection-start-column="18" selection-end-line="402" selection-end-column="18" />
+              <folding>
+                <element signature="e#21323#21335#0" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="IUserServiceSMO.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/UserService/src/main/java/com/java110/user/smo/IUserServiceSMO.java">
+      <file leaf-file-name="PreBoCustAttr.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/OrderService/src/test/java/com/java110/order/common/PreBoCustAttr.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="164">
-              <caret line="60" column="17" lean-forward="true" selection-start-line="59" selection-start-column="7" selection-end-line="60" selection-end-column="17" />
-              <folding />
+            <state relative-caret-position="147">
+              <caret line="97" column="3" lean-forward="false" selection-start-line="97" selection-start-column="3" selection-end-line="112" selection-end-column="5" />
+              <folding>
+                <element signature="imports" expanded="true" />
+                <element signature="e#844#856#0" expanded="true" />
+                <element signature="e#3104#3116#0" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="UserServiceSMOImpl.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/UserService/src/main/java/com/java110/user/smo/impl/UserServiceSMOImpl.java">
+      <file leaf-file-name="AppTest.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/OrderService/src/test/java/com/java110/order/AppTest.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="422">
-              <caret line="489" column="0" lean-forward="false" selection-start-line="489" selection-start-column="0" selection-end-line="489" selection-end-column="0" />
+            <state relative-caret-position="357">
+              <caret line="29" column="0" lean-forward="true" selection-start-line="10" selection-start-column="4" selection-end-line="29" selection-end-column="0" />
               <folding />
             </state>
           </provider>
@@ -71,49 +90,115 @@
       <file leaf-file-name="UserServiceDaoImpl.java" pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/UserService/src/main/java/com/java110/user/dao/impl/UserServiceDaoImpl.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="340">
-              <caret line="221" column="72" lean-forward="false" selection-start-line="221" selection-start-column="54" selection-end-line="221" selection-end-column="72" />
+            <state relative-caret-position="170">
+              <caret line="166" column="64" lean-forward="false" selection-start-line="166" selection-start-column="46" selection-end-line="166" selection-end-column="64" />
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="UserServiceDaoImplMapper.xml" pinned="false" current-in-tab="true">
+      <file leaf-file-name="UserServiceDaoImplMapper.xml" pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/config/src/main/resources/mapper/user/UserServiceDaoImplMapper.xml">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="334">
-              <caret line="103" column="18" lean-forward="false" selection-start-line="103" selection-start-column="18" selection-end-line="103" selection-end-column="18" />
+            <state relative-caret-position="325">
+              <caret line="81" column="41" lean-forward="false" selection-start-line="81" selection-start-column="41" selection-end-line="81" selection-end-column="41" />
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="BoCust.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/bean/src/main/java/com/java110/entity/user/BoCust.java">
+      <file leaf-file-name="IUserServiceDao.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/UserService/src/main/java/com/java110/user/dao/IUserServiceDao.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="374">
-              <caret line="49" column="24" lean-forward="false" selection-start-line="49" selection-start-column="19" selection-end-line="49" selection-end-column="24" />
+            <state relative-caret-position="17">
+              <caret line="73" column="15" lean-forward="false" selection-start-line="73" selection-start-column="15" selection-end-line="73" selection-end-column="15" />
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="OrderServiceDaoImplMapper.xml" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/config/src/main/resources/mapper/order/OrderServiceDaoImplMapper.xml">
+      <file leaf-file-name="cust.db" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/config/db/cust.db">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="1082">
-              <caret line="77" column="47" lean-forward="true" selection-start-line="77" selection-start-column="7" selection-end-line="77" selection-end-column="47" />
+            <state relative-caret-position="799">
+              <caret line="47" column="13" lean-forward="false" selection-start-line="47" selection-start-column="4" selection-end-line="47" selection-end-column="13" />
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="DeleteCustDispatchListener.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/OrderService/src/main/java/com/java110/order/listener/DeleteCustDispatchListener.java">
+      <file leaf-file-name="BoCust.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/bean/src/main/java/com/java110/entity/user/BoCust.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="283">
-              <caret line="60" column="69" lean-forward="false" selection-start-line="60" selection-start-column="41" selection-end-line="60" selection-end-column="69" />
-              <folding />
+            <state relative-caret-position="1819">
+              <caret line="159" column="32" lean-forward="false" selection-start-line="159" selection-start-column="32" selection-end-line="159" selection-end-column="32" />
+              <folding>
+                <element signature="e#1124#1125#0" expanded="false" />
+                <element signature="e#1151#1152#0" expanded="false" />
+                <element signature="e#1191#1192#0" expanded="false" />
+                <element signature="e#1223#1224#0" expanded="false" />
+                <element signature="e#1256#1257#0" expanded="false" />
+                <element signature="e#1285#1286#0" expanded="false" />
+                <element signature="e#1329#1330#0" expanded="false" />
+                <element signature="e#1365#1366#0" expanded="false" />
+                <element signature="e#1396#1397#0" expanded="false" />
+                <element signature="e#1423#1424#0" expanded="false" />
+                <element signature="e#1463#1464#0" expanded="false" />
+                <element signature="e#1495#1496#0" expanded="false" />
+                <element signature="e#1527#1528#0" expanded="false" />
+                <element signature="e#1555#1556#0" expanded="false" />
+                <element signature="e#1597#1598#0" expanded="false" />
+                <element signature="e#1631#1632#0" expanded="false" />
+                <element signature="e#1667#1668#0" expanded="false" />
+                <element signature="e#1699#1700#0" expanded="false" />
+                <element signature="e#1749#1750#0" expanded="false" />
+                <element signature="e#1791#1792#0" expanded="false" />
+                <element signature="e#1826#1827#0" expanded="false" />
+                <element signature="e#1857#1858#0" expanded="false" />
+                <element signature="e#1905#1906#0" expanded="false" />
+                <element signature="e#1945#1946#0" expanded="false" />
+                <element signature="e#1975#1976#0" expanded="false" />
+                <element signature="e#2001#2002#0" expanded="false" />
+                <element signature="e#2039#2040#0" expanded="false" />
+                <element signature="e#2069#2070#0" expanded="false" />
+                <element signature="e#2104#2105#0" expanded="false" />
+                <element signature="e#2135#2136#0" expanded="false" />
+                <element signature="e#2183#2184#0" expanded="false" />
+                <element signature="e#2223#2224#0" expanded="false" />
+                <element signature="e#2255#2256#0" expanded="false" />
+                <element signature="e#2283#2284#0" expanded="false" />
+                <element signature="e#2325#2326#0" expanded="false" />
+                <element signature="e#2359#2360#0" expanded="false" />
+                <element signature="e#2396#2397#0" expanded="false" />
+                <element signature="e#2429#2430#0" expanded="false" />
+                <element signature="e#2481#2482#0" expanded="false" />
+                <element signature="e#2525#2526#0" expanded="false" />
+                <element signature="e#2560#2561#0" expanded="false" />
+                <element signature="e#2591#2592#0" expanded="false" />
+                <element signature="e#2639#2640#0" expanded="false" />
+                <element signature="e#2679#2680#0" expanded="false" />
+                <element signature="e#2712#2713#0" expanded="false" />
+                <element signature="e#2741#2742#0" expanded="false" />
+                <element signature="e#2785#2786#0" expanded="false" />
+                <element signature="e#2821#2822#0" expanded="false" />
+                <element signature="e#2853#2854#0" expanded="false" />
+                <element signature="e#2881#2882#0" expanded="false" />
+                <element signature="e#2923#2924#0" expanded="false" />
+                <element signature="e#2957#2958#0" expanded="false" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="Readme.md" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/Readme.md">
+          <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
+            <state split_layout="SPLIT">
+              <first_editor relative-caret-position="1326">
+                <caret line="78" column="20" lean-forward="false" selection-start-line="78" selection-start-column="20" selection-end-line="78" selection-end-column="20" />
+                <folding />
+              </first_editor>
+              <second_editor />
             </state>
           </provider>
         </entry>
@@ -125,9 +210,9 @@
       <list>
         <option value="Kotlin Interface" />
         <option value="Interface" />
-        <option value="Class" />
         <option value="UML Class" />
         <option value="UML Sequence" />
+        <option value="Class" />
       </list>
     </option>
   </component>
@@ -149,6 +234,8 @@
       <find>ApplicationContextInitializer</find>
       <find>queryBusiOrderAndAttr</find>
       <find>queryDataToCust</find>
+      <find>queryBoCust</find>
+      <find>deleteDataToCustAttr</find>
     </findStrings>
     <replaceStrings>
       <replace>microcommunity.version</replace>
@@ -168,18 +255,12 @@
   <component name="IdeDocumentHistory">
     <option name="CHANGED_PATHS">
       <list>
-        <option value="$PROJECT_DIR$/OrderService/src/main/java/com/java110/order/smo/IOrderServiceSMO.java" />
-        <option value="$PROJECT_DIR$/OrderService/src/main/java/com/java110/order/rest/OrderServiceRest.java" />
-        <option value="$PROJECT_DIR$/config/src/main/resources/mapper/order/OrderServiceDaoImplMapper.xml" />
-        <option value="$PROJECT_DIR$/OrderService/src/test/java/com/java110/order/type/CommonTest.java" />
-        <option value="$PROJECT_DIR$/OrderService/src/test/java/com/java110/order/type/AppEvent.java" />
         <option value="$PROJECT_DIR$/core/src/main/java/com/java110/core/event/AppPayEvent.java" />
         <option value="$PROJECT_DIR$/core/src/main/java/com/java110/core/event/AppMerchantEvent.java" />
         <option value="$PROJECT_DIR$/OrderService/src/test/java/com/java110/order/type/AppCustEvent.java" />
         <option value="$PROJECT_DIR$/feign/src/main/java/com/java110/feign/user/IUserService.java" />
         <option value="$PROJECT_DIR$/core/src/main/java/com/java110/core/base/smo/BaseServiceSMO.java" />
         <option value="$PROJECT_DIR$/core/src/main/java/com/java110/core/context/AppContext.java" />
-        <option value="$PROJECT_DIR$/common/src/main/java/com/java110/common/util/Assert.java" />
         <option value="$PROJECT_DIR$/common/src/main/java/com/java110/common/util/ProtocolUtil.java" />
         <option value="$PROJECT_DIR$/feign/src/main/java/com/java110/feign/user/UserServiceFallback.java" />
         <option value="$PROJECT_DIR$/OrderService/src/test/java/com/java110/order/jsonpath/CustIdTest.java" />
@@ -213,12 +294,18 @@
         <option value="$PROJECT_DIR$/OrderService/src/main/java/com/java110/order/mq/MqConfig.java" />
         <option value="$PROJECT_DIR$/OrderService/src/main/java/com/java110/order/mq/DeleteOrderInfoProducer.java" />
         <option value="$PROJECT_DIR$/OrderService/src/main/resources/application.yml" />
-        <option value="$PROJECT_DIR$/Readme.md" />
-        <option value="$PROJECT_DIR$/OrderService/src/main/java/com/java110/order/smo/impl/OrderServiceSMOImpl.java" />
         <option value="$PROJECT_DIR$/UserService/src/main/java/com/java110/user/smo/IUserServiceSMO.java" />
         <option value="$PROJECT_DIR$/UserService/src/main/java/com/java110/user/rest/UserServiceRest.java" />
-        <option value="$PROJECT_DIR$/UserService/src/main/java/com/java110/user/smo/impl/UserServiceSMOImpl.java" />
+        <option value="$PROJECT_DIR$/UserService/src/main/java/com/java110/user/dao/impl/UserServiceDaoImpl.java" />
+        <option value="$PROJECT_DIR$/UserService/src/main/java/com/java110/user/dao/IUserServiceDao.java" />
+        <option value="$PROJECT_DIR$/OrderService/src/main/java/com/java110/order/smo/impl/OrderServiceSMOImpl.java" />
+        <option value="$PROJECT_DIR$/Readme.md" />
+        <option value="$PROJECT_DIR$/common/src/main/java/com/java110/common/util/Assert.java" />
+        <option value="$PROJECT_DIR$/bean/src/main/java/com/java110/entity/user/BoCust.java" />
+        <option value="$PROJECT_DIR$/bean/src/main/java/com/java110/entity/user/BoCustAttr.java" />
+        <option value="$PROJECT_DIR$/OrderService/src/test/java/com/java110/order/common/PreBoCustAttr.java" />
         <option value="$PROJECT_DIR$/config/src/main/resources/mapper/user/UserServiceDaoImplMapper.xml" />
+        <option value="$PROJECT_DIR$/UserService/src/main/java/com/java110/user/smo/impl/UserServiceSMOImpl.java" />
       </list>
     </option>
   </component>
@@ -311,6 +398,7 @@
       <foldersAlwaysOnTop value="true" />
     </navigator>
     <panes>
+      <pane id="Scope" />
       <pane id="PackagesPane" />
       <pane id="Scratches" />
       <pane id="ProjectPane">
@@ -339,46 +427,6 @@
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
             </PATH_ELEMENT>
           </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="MicroCommunity" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="MicroCommunity" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="OrderService" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="src" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="MicroCommunity" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="MicroCommunity" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="OrderService" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="src" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="main" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
           <PATH>
             <PATH_ELEMENT>
               <option name="myItemId" value="MicroCommunity" />
@@ -397,7 +445,7 @@
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
             </PATH_ELEMENT>
             <PATH_ELEMENT>
-              <option name="myItemId" value="main" />
+              <option name="myItemId" value="test" />
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
             </PATH_ELEMENT>
             <PATH_ELEMENT>
@@ -430,94 +478,9 @@
               <option name="myItemId" value="main" />
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
             </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="java" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="order" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="smo" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="MicroCommunity" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="MicroCommunity" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="OrderService" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="src" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="main" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="java" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="order" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="smo" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="impl" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="MicroCommunity" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="MicroCommunity" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="OrderService" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="src" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="main" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="java" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="order" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="mq" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
           </PATH>
         </subPane>
       </pane>
-      <pane id="Scope" />
     </panes>
   </component>
   <component name="PropertiesComponent">
@@ -561,33 +524,7 @@
       </list>
     </option>
   </component>
-  <component name="RunManager" selected="Application.AppSpringBootApplication">
-    <configuration default="false" name="CommonTest.testSubString" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
-      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
-        <pattern>
-          <option name="PATTERN" value="com.java110.order.type.*" />
-          <option name="ENABLED" value="true" />
-        </pattern>
-      </extension>
-      <module name="OrderService" />
-      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
-      <option name="ALTERNATIVE_JRE_PATH" />
-      <option name="PACKAGE_NAME" value="com.java110.order.type" />
-      <option name="MAIN_CLASS_NAME" value="com.java110.order.type.CommonTest" />
-      <option name="METHOD_NAME" value="testSubString" />
-      <option name="TEST_OBJECT" value="method" />
-      <option name="VM_PARAMETERS" value="-ea" />
-      <option name="PARAMETERS" />
-      <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
-      <option name="ENV_VARIABLES" />
-      <option name="PASS_PARENT_ENVS" value="true" />
-      <option name="TEST_SEARCH_SCOPE">
-        <value defaultName="singleModule" />
-      </option>
-      <envs />
-      <patterns />
-      <method />
-    </configuration>
+  <component name="RunManager" selected="JUnit.PreBoCustAttr.testGetPreBoCustAttr">
     <configuration default="false" name="CustIdTest.testCustId" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
       <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
         <pattern>
@@ -686,6 +623,32 @@
       <envs />
       <method />
     </configuration>
+    <configuration default="false" name="PreBoCustAttr.testGetPreBoCustAttr" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
+        <pattern>
+          <option name="PATTERN" value="com.java110.order.common.*" />
+          <option name="ENABLED" value="true" />
+        </pattern>
+      </extension>
+      <module name="OrderService" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="PACKAGE_NAME" value="com.java110.order.common" />
+      <option name="MAIN_CLASS_NAME" value="com.java110.order.common.PreBoCustAttr" />
+      <option name="METHOD_NAME" value="testGetPreBoCustAttr" />
+      <option name="TEST_OBJECT" value="method" />
+      <option name="VM_PARAMETERS" value="-ea" />
+      <option name="PARAMETERS" />
+      <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <option name="TEST_SEARCH_SCOPE">
+        <value defaultName="singleModule" />
+      </option>
+      <envs />
+      <patterns />
+      <method />
+    </configuration>
     <configuration default="true" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" factoryName="Plugin">
       <module name="" />
       <option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
@@ -863,19 +826,19 @@
       <method />
     </configuration>
     <list size="5">
-      <item index="0" class="java.lang.String" itemvalue="JUnit.CommonTest.testSubString" />
-      <item index="1" class="java.lang.String" itemvalue="JUnit.CustIdTest.testCustId" />
-      <item index="2" class="java.lang.String" itemvalue="JUnit.ExecutorTest.testThrowException" />
-      <item index="3" class="java.lang.String" itemvalue="JUnit.ExecutorTest.testThrowException1" />
-      <item index="4" class="java.lang.String" itemvalue="Application.AppSpringBootApplication" />
+      <item index="0" class="java.lang.String" itemvalue="JUnit.CustIdTest.testCustId" />
+      <item index="1" class="java.lang.String" itemvalue="JUnit.ExecutorTest.testThrowException" />
+      <item index="2" class="java.lang.String" itemvalue="JUnit.ExecutorTest.testThrowException1" />
+      <item index="3" class="java.lang.String" itemvalue="Application.AppSpringBootApplication" />
+      <item index="4" class="java.lang.String" itemvalue="JUnit.PreBoCustAttr.testGetPreBoCustAttr" />
     </list>
     <recent_temporary>
       <list size="5">
-        <item index="0" class="java.lang.String" itemvalue="Application.AppSpringBootApplication" />
-        <item index="1" class="java.lang.String" itemvalue="JUnit.ExecutorTest.testThrowException1" />
-        <item index="2" class="java.lang.String" itemvalue="JUnit.ExecutorTest.testThrowException" />
-        <item index="3" class="java.lang.String" itemvalue="JUnit.CustIdTest.testCustId" />
-        <item index="4" class="java.lang.String" itemvalue="JUnit.CommonTest.testSubString" />
+        <item index="0" class="java.lang.String" itemvalue="JUnit.PreBoCustAttr.testGetPreBoCustAttr" />
+        <item index="1" class="java.lang.String" itemvalue="Application.AppSpringBootApplication" />
+        <item index="2" class="java.lang.String" itemvalue="JUnit.ExecutorTest.testThrowException1" />
+        <item index="3" class="java.lang.String" itemvalue="JUnit.ExecutorTest.testThrowException" />
+        <item index="4" class="java.lang.String" itemvalue="JUnit.CustIdTest.testCustId" />
       </list>
     </recent_temporary>
   </component>
@@ -955,21 +918,6 @@
     <servers />
   </component>
   <component name="TestHistory">
-    <history-entry file="CustIdTest_testCustId - 2017.04.24 at 10h 22m 41s.xml">
-      <configuration name="CustIdTest.testCustId" configurationId="JUnit" />
-    </history-entry>
-    <history-entry file="CustIdTest_testCustId - 2017.04.24 at 10h 29m 57s.xml">
-      <configuration name="CustIdTest.testCustId" configurationId="JUnit" />
-    </history-entry>
-    <history-entry file="ExecutorTest_testThrowException - 2017.04.25 at 23h 20m 01s.xml">
-      <configuration name="ExecutorTest.testThrowException" configurationId="JUnit" />
-    </history-entry>
-    <history-entry file="ExecutorTest_testThrowException - 2017.04.25 at 23h 20m 24s.xml">
-      <configuration name="ExecutorTest.testThrowException" configurationId="JUnit" />
-    </history-entry>
-    <history-entry file="ExecutorTest_testThrowException - 2017.04.25 at 23h 20m 50s.xml">
-      <configuration name="ExecutorTest.testThrowException" configurationId="JUnit" />
-    </history-entry>
     <history-entry file="ExecutorTest_testThrowException - 2017.04.25 at 23h 54m 01s.xml">
       <configuration name="ExecutorTest.testThrowException" configurationId="JUnit" />
     </history-entry>
@@ -985,6 +933,21 @@
     <history-entry file="ExecutorTest_testThrowException1 - 2017.04.26 at 00h 03m 15s.xml">
       <configuration name="ExecutorTest.testThrowException1" configurationId="JUnit" />
     </history-entry>
+    <history-entry file="PreBoCustAttr_testGetPreBoCustAttr - 2017.04.29 at 19h 11m 50s.xml">
+      <configuration name="PreBoCustAttr.testGetPreBoCustAttr" configurationId="JUnit" />
+    </history-entry>
+    <history-entry file="PreBoCustAttr_testGetPreBoCustAttr - 2017.04.29 at 19h 13m 29s.xml">
+      <configuration name="PreBoCustAttr.testGetPreBoCustAttr" configurationId="JUnit" />
+    </history-entry>
+    <history-entry file="PreBoCustAttr_testGetPreBoCustAttr - 2017.04.29 at 19h 13m 50s.xml">
+      <configuration name="PreBoCustAttr.testGetPreBoCustAttr" configurationId="JUnit" />
+    </history-entry>
+    <history-entry file="PreBoCustAttr_testGetPreBoCustAttr - 2017.04.29 at 19h 14m 37s.xml">
+      <configuration name="PreBoCustAttr.testGetPreBoCustAttr" configurationId="JUnit" />
+    </history-entry>
+    <history-entry file="PreBoCustAttr_testGetPreBoCustAttr - 2017.04.29 at 19h 15m 07s.xml">
+      <configuration name="PreBoCustAttr.testGetPreBoCustAttr" configurationId="JUnit" />
+    </history-entry>
   </component>
   <component name="TimeTrackingManager">
     <option name="totallyTimeSpent" value="312226000" />
@@ -996,14 +959,15 @@
       <window_info id="PlantUML" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.51966715" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
+      <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32786885" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Palette&#9;" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3295082" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
       <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.37784523" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3295082" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.5391015" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.83114755" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
       <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.39016393" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
-      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.24205749" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
+      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.21331316" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
       <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.24962178" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
       <window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
       <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
@@ -1017,7 +981,6 @@
       <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
       <window_info id="Inspection Results" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3295082" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
       <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.24962063" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32786885" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
       <window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
       <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
@@ -1096,7 +1059,7 @@
           <option name="timeStamp" value="42" />
         </line-breakpoint>
       </breakpoints>
-      <option name="time" value="43" />
+      <option name="time" value="44" />
     </breakpoint-manager>
     <watches-manager />
   </component>
@@ -1105,48 +1068,6 @@
     <option name="FILTER_TARGETS" value="false" />
   </component>
   <component name="editorHistoryManager">
-    <entry file="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/4.3.2.RELEASE/spring-context-4.3.2.RELEASE-sources.jar!/org/springframework/context/ApplicationContext.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="272">
-          <caret line="58" column="0" lean-forward="true" selection-start-line="58" selection-start-column="0" selection-end-line="58" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot/1.4.0.RELEASE/spring-boot-1.4.0.RELEASE-sources.jar!/org/springframework/boot/context/embedded/EmbeddedWebApplicationContext.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="306">
-          <caret line="88" column="66" lean-forward="true" selection-start-line="88" selection-start-column="66" selection-end-line="88" selection-end-column="66" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="jar://$MAVEN_REPOSITORY$/org/springframework/spring-web/4.3.2.RELEASE/spring-web-4.3.2.RELEASE-sources.jar!/org/springframework/web/context/ConfigurableWebApplicationContext.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="402">
-          <caret line="104" column="34" lean-forward="true" selection-start-line="104" selection-start-column="4" selection-end-line="104" selection-end-column="34" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/OrderService/AnnotationConfigEmbeddedWebApplicationContext.puml">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="2669">
-          <caret line="157" column="48" lean-forward="false" selection-start-line="157" selection-start-column="48" selection-end-line="157" selection-end-column="48" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/4.3.2.RELEASE/spring-core-4.3.2.RELEASE-sources.jar!/org/springframework/core/io/DefaultResourceLoader.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="2244">
-          <caret line="164" column="45" lean-forward="true" selection-start-line="164" selection-start-column="45" selection-end-line="164" selection-end-column="45" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="jar://$MAVEN_REPOSITORY$/org/springframework/spring-web/4.3.2.RELEASE/spring-web-4.3.2.RELEASE-sources.jar!/org/springframework/web/context/support/GenericWebApplicationContext.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="187">
-          <caret line="62" column="65" lean-forward="false" selection-start-line="62" selection-start-column="65" selection-end-line="62" selection-end-column="65" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/OrderService/ApplicationContext.puml">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="153">
@@ -1362,7 +1283,6 @@
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="731">
           <caret line="68" column="7" lean-forward="false" selection-start-line="68" selection-start-column="7" selection-end-line="68" selection-end-column="7" />
-          <folding />
         </state>
       </provider>
     </entry>
@@ -1370,13 +1290,6 @@
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="374">
           <caret line="22" column="33" lean-forward="false" selection-start-line="22" selection-start-column="17" selection-end-line="22" selection-end-column="33" />
-          <folding>
-            <element signature="imports" expanded="false" />
-            <element signature="e#500#501#0" expanded="false" />
-            <element signature="e#556#557#0" expanded="false" />
-            <element signature="e#605#606#0" expanded="false" />
-            <element signature="e#661#662#0" expanded="false" />
-          </folding>
         </state>
       </provider>
     </entry>
@@ -1384,7 +1297,6 @@
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="102">
           <caret line="6" column="20" lean-forward="false" selection-start-line="6" selection-start-column="20" selection-end-line="6" selection-end-column="20" />
-          <folding />
         </state>
       </provider>
     </entry>
@@ -1392,7 +1304,6 @@
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="187">
           <caret line="16" column="36" lean-forward="false" selection-start-line="16" selection-start-column="13" selection-end-line="16" selection-end-column="36" />
-          <folding />
         </state>
       </provider>
     </entry>
@@ -1400,96 +1311,209 @@
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="289">
           <caret line="23" column="13" lean-forward="false" selection-start-line="23" selection-start-column="13" selection-end-line="23" selection-end-column="13" />
-          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/OrderService/src/main/java/com/java110/order/listener/DeleteCustDispatchListener.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="765">
+          <caret line="60" column="69" lean-forward="false" selection-start-line="60" selection-start-column="41" selection-end-line="60" selection-end-column="69" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/UserService/src/main/java/com/java110/user/rest/UserServiceRest.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="4743">
+          <caret line="290" column="105" lean-forward="false" selection-start-line="290" selection-start-column="105" selection-end-line="290" selection-end-column="105" />
+          <folding>
+            <element signature="imports" expanded="false" />
+            <element signature="e#7586#7587#0" expanded="false" />
+            <element signature="e#7624#7625#0" expanded="false" />
+            <element signature="e#7695#7696#0" expanded="false" />
+            <element signature="e#7749#7750#0" expanded="false" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/UserService/src/main/java/com/java110/user/smo/IUserServiceSMO.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="986">
+          <caret line="60" column="17" lean-forward="false" selection-start-line="59" selection-start-column="7" selection-end-line="60" selection-end-column="17" />
+          <folding>
+            <element signature="imports" expanded="false" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/config/src/main/resources/mapper/order/OrderServiceDaoImplMapper.xml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1309">
+          <caret line="77" column="47" lean-forward="false" selection-start-line="77" selection-start-column="7" selection-end-line="77" selection-end-column="47" />
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/Readme.md">
       <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
         <state split_layout="SPLIT">
-          <first_editor relative-caret-position="190">
-            <caret line="86" column="26" lean-forward="false" selection-start-line="86" selection-start-column="26" selection-end-line="86" selection-end-column="26" />
+          <first_editor relative-caret-position="1326">
+            <caret line="78" column="20" lean-forward="false" selection-start-line="78" selection-start-column="20" selection-end-line="78" selection-end-column="20" />
+            <folding />
           </first_editor>
           <second_editor />
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/common/src/main/java/com/java110/common/util/Assert.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="312">
+          <caret line="57" column="19" lean-forward="false" selection-start-line="57" selection-start-column="19" selection-end-line="57" selection-end-column="19" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
     <entry file="file://$PROJECT_DIR$/OrderService/src/main/java/com/java110/order/smo/impl/OrderServiceSMOImpl.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="542">
-          <caret line="564" column="58" lean-forward="false" selection-start-line="564" selection-start-column="58" selection-end-line="564" selection-end-column="58" />
-          <folding>
-            <element signature="e#4805#4824#0" expanded="false" />
-            <element signature="e#11613#11633#0" expanded="false" />
-            <element signature="e#12826#12845#0" expanded="false" />
-          </folding>
+        <state relative-caret-position="253">
+          <caret line="410" column="91" lean-forward="true" selection-start-line="410" selection-start-column="91" selection-end-line="410" selection-end-column="91" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/OrderService/src/main/java/com/java110/order/listener/DeleteCustDispatchListener.java">
+    <entry file="file://$PROJECT_DIR$/config/db/cust.db">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="283">
-          <caret line="60" column="69" lean-forward="false" selection-start-line="60" selection-start-column="41" selection-end-line="60" selection-end-column="69" />
+        <state relative-caret-position="799">
+          <caret line="47" column="13" lean-forward="false" selection-start-line="47" selection-start-column="4" selection-end-line="47" selection-end-column="13" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/UserService/src/main/java/com/java110/user/rest/UserServiceRest.java">
+    <entry file="file://$PROJECT_DIR$/bean/src/main/java/com/java110/entity/user/BoCustAttr.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="402">
-          <caret line="290" column="105" lean-forward="false" selection-start-line="290" selection-start-column="105" selection-end-line="290" selection-end-column="105" />
-          <folding />
+        <state relative-caret-position="136">
+          <caret line="8" column="13" lean-forward="false" selection-start-line="8" selection-start-column="13" selection-end-line="8" selection-end-column="13" />
+          <folding>
+            <element signature="e#1044#1045#0" expanded="true" />
+            <element signature="e#1076#1077#0" expanded="true" />
+            <element signature="e#1124#1125#0" expanded="true" />
+            <element signature="e#1166#1167#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/UserService/src/main/java/com/java110/user/smo/IUserServiceSMO.java">
+    <entry file="file://$PROJECT_DIR$/bean/src/main/java/com/java110/entity/user/BoCust.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="164">
-          <caret line="60" column="17" lean-forward="true" selection-start-line="59" selection-start-column="7" selection-end-line="60" selection-end-column="17" />
-          <folding />
+        <state relative-caret-position="1819">
+          <caret line="159" column="32" lean-forward="false" selection-start-line="159" selection-start-column="32" selection-end-line="159" selection-end-column="32" />
+          <folding>
+            <element signature="e#1124#1125#0" expanded="false" />
+            <element signature="e#1151#1152#0" expanded="false" />
+            <element signature="e#1191#1192#0" expanded="false" />
+            <element signature="e#1223#1224#0" expanded="false" />
+            <element signature="e#1256#1257#0" expanded="false" />
+            <element signature="e#1285#1286#0" expanded="false" />
+            <element signature="e#1329#1330#0" expanded="false" />
+            <element signature="e#1365#1366#0" expanded="false" />
+            <element signature="e#1396#1397#0" expanded="false" />
+            <element signature="e#1423#1424#0" expanded="false" />
+            <element signature="e#1463#1464#0" expanded="false" />
+            <element signature="e#1495#1496#0" expanded="false" />
+            <element signature="e#1527#1528#0" expanded="false" />
+            <element signature="e#1555#1556#0" expanded="false" />
+            <element signature="e#1597#1598#0" expanded="false" />
+            <element signature="e#1631#1632#0" expanded="false" />
+            <element signature="e#1667#1668#0" expanded="false" />
+            <element signature="e#1699#1700#0" expanded="false" />
+            <element signature="e#1749#1750#0" expanded="false" />
+            <element signature="e#1791#1792#0" expanded="false" />
+            <element signature="e#1826#1827#0" expanded="false" />
+            <element signature="e#1857#1858#0" expanded="false" />
+            <element signature="e#1905#1906#0" expanded="false" />
+            <element signature="e#1945#1946#0" expanded="false" />
+            <element signature="e#1975#1976#0" expanded="false" />
+            <element signature="e#2001#2002#0" expanded="false" />
+            <element signature="e#2039#2040#0" expanded="false" />
+            <element signature="e#2069#2070#0" expanded="false" />
+            <element signature="e#2104#2105#0" expanded="false" />
+            <element signature="e#2135#2136#0" expanded="false" />
+            <element signature="e#2183#2184#0" expanded="false" />
+            <element signature="e#2223#2224#0" expanded="false" />
+            <element signature="e#2255#2256#0" expanded="false" />
+            <element signature="e#2283#2284#0" expanded="false" />
+            <element signature="e#2325#2326#0" expanded="false" />
+            <element signature="e#2359#2360#0" expanded="false" />
+            <element signature="e#2396#2397#0" expanded="false" />
+            <element signature="e#2429#2430#0" expanded="false" />
+            <element signature="e#2481#2482#0" expanded="false" />
+            <element signature="e#2525#2526#0" expanded="false" />
+            <element signature="e#2560#2561#0" expanded="false" />
+            <element signature="e#2591#2592#0" expanded="false" />
+            <element signature="e#2639#2640#0" expanded="false" />
+            <element signature="e#2679#2680#0" expanded="false" />
+            <element signature="e#2712#2713#0" expanded="false" />
+            <element signature="e#2741#2742#0" expanded="false" />
+            <element signature="e#2785#2786#0" expanded="false" />
+            <element signature="e#2821#2822#0" expanded="false" />
+            <element signature="e#2853#2854#0" expanded="false" />
+            <element signature="e#2881#2882#0" expanded="false" />
+            <element signature="e#2923#2924#0" expanded="false" />
+            <element signature="e#2957#2958#0" expanded="false" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/UserService/src/main/java/com/java110/user/smo/impl/UserServiceSMOImpl.java">
+    <entry file="file://$PROJECT_DIR$/OrderService/src/test/java/com/java110/order/AppTest.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="422">
-          <caret line="489" column="0" lean-forward="false" selection-start-line="489" selection-start-column="0" selection-end-line="489" selection-end-column="0" />
+        <state relative-caret-position="357">
+          <caret line="29" column="0" lean-forward="true" selection-start-line="10" selection-start-column="4" selection-end-line="29" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/UserService/src/main/java/com/java110/user/dao/impl/UserServiceDaoImpl.java">
+    <entry file="file://$PROJECT_DIR$/OrderService/src/test/java/com/java110/order/common/PreBoCustAttr.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="340">
-          <caret line="221" column="72" lean-forward="false" selection-start-line="221" selection-start-column="54" selection-end-line="221" selection-end-column="72" />
-          <folding />
+        <state relative-caret-position="147">
+          <caret line="97" column="3" lean-forward="false" selection-start-line="97" selection-start-column="3" selection-end-line="112" selection-end-column="5" />
+          <folding>
+            <element signature="imports" expanded="true" />
+            <element signature="e#844#856#0" expanded="true" />
+            <element signature="e#3104#3116#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/config/src/main/resources/mapper/order/OrderServiceDaoImplMapper.xml">
+    <entry file="file://$PROJECT_DIR$/UserService/src/main/java/com/java110/user/dao/IUserServiceDao.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1082">
-          <caret line="77" column="47" lean-forward="true" selection-start-line="77" selection-start-column="7" selection-end-line="77" selection-end-column="47" />
+        <state relative-caret-position="17">
+          <caret line="73" column="15" lean-forward="false" selection-start-line="73" selection-start-column="15" selection-end-line="73" selection-end-column="15" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/bean/src/main/java/com/java110/entity/user/BoCust.java">
+    <entry file="file://$PROJECT_DIR$/UserService/src/main/java/com/java110/user/dao/impl/UserServiceDaoImpl.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="374">
-          <caret line="49" column="24" lean-forward="false" selection-start-line="49" selection-start-column="19" selection-end-line="49" selection-end-column="24" />
+        <state relative-caret-position="170">
+          <caret line="166" column="64" lean-forward="false" selection-start-line="166" selection-start-column="46" selection-end-line="166" selection-end-column="64" />
           <folding />
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/config/src/main/resources/mapper/user/UserServiceDaoImplMapper.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="334">
-          <caret line="103" column="18" lean-forward="false" selection-start-line="103" selection-start-column="18" selection-end-line="103" selection-end-column="18" />
+        <state relative-caret-position="325">
+          <caret line="81" column="41" lean-forward="false" selection-start-line="81" selection-start-column="41" selection-end-line="81" selection-end-column="41" />
           <folding />
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/UserService/src/main/java/com/java110/user/smo/impl/UserServiceSMOImpl.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="303">
+          <caret line="402" column="18" lean-forward="false" selection-start-line="402" selection-start-column="18" selection-end-line="402" selection-end-column="18" />
+          <folding>
+            <element signature="e#21323#21335#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
   </component>
   <component name="masterDetails">
     <states>

+ 4 - 3
OrderService/src/main/java/com/java110/order/smo/impl/OrderServiceSMOImpl.java

@@ -369,6 +369,7 @@ public class OrderServiceSMOImpl extends BaseServiceSMO implements IOrderService
             busiOrderAttr.setBoId(newBoId);
             busiOrderAttr.setAttrCd(AttrCdConstant.BUSI_ORDER_ATTR_10000001);
             busiOrderAttr.setValue(needDeleteBoIdMap.get("boId"));
+            needDeleteBoIdMap.put("newBoId",newBoId);
 
             saveBusiOrderFlag =  iOrderServiceDao.saveDataToBusiOrderAttr(busiOrderAttr);
             if(saveBusiOrderFlag < 1){
@@ -486,10 +487,10 @@ public class OrderServiceSMOImpl extends BaseServiceSMO implements IOrderService
         Assert.isNull(datasTmp,"processDeleteOrderByActionTypeCd 方法的参数 datasTmp 为空,");
 
         // 如果这两个中有一个为空,则从库中查询
-        if(StringUtils.isBlank(needDeleteBoIdMap.get("olId")) || StringUtils.isBlank(needDeleteBoIdMap.get("actionTypeCd"))){
+        if(StringUtils.isBlank(needDeleteBoIdMap.get("newBoId")) || StringUtils.isBlank(needDeleteBoIdMap.get("actionTypeCd"))){
             BusiOrder busiOrderTmp = new BusiOrder();
             busiOrderTmp.setBoId(needDeleteBoIdMap.get("boId"));
-            //这里只有一条其他,则抛出异常
+            //这里只有一条其他,则抛出异常
             List<BusiOrder> oldBusiOrders =  iOrderServiceDao.queryBusiOrderAndAttr(busiOrderTmp);
 
             if(oldBusiOrders == null || oldBusiOrders.size() != 1){
@@ -513,7 +514,7 @@ public class OrderServiceSMOImpl extends BaseServiceSMO implements IOrderService
         dataJsonTmp.add(JSONObject.parseObject(JSONObject.toJSONString(needDeleteBoIdMap)));
         datasTmp.put(actionTypeCd,dataJsonTmp);
 
-        deleteOrderInfoProducer.send(datasTmp.toString());
+        //deleteOrderInfoProducer.send(datasTmp.toString());
     }
 
 

+ 115 - 0
OrderService/src/test/java/com/java110/order/common/PreBoCustAttr.java

@@ -0,0 +1,115 @@
+package com.java110.order.common;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.entity.user.BoCustAttr;
+import com.java110.order.AppTest;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Created by wuxw on 2017/4/29.
+ */
+public class PreBoCustAttr extends TestCase
+{
+    /**
+     * Create the test case
+     *
+     * @param testName name of the test case
+     */
+    public PreBoCustAttr( String testName )
+    {
+        super( testName );
+    }
+
+    /**
+     * @return the suite of tests being tested
+     */
+    public static Test suite()
+    {
+        return new TestSuite( PreBoCustAttr.class );
+    }
+
+
+    public void testGetPreBoCustAttr(){
+        List<BoCustAttr> boCustAttrs = new ArrayList<BoCustAttr>();
+        BoCustAttr boCustAttr = null;
+        for(int boCustAttrIndex = 0; boCustAttrIndex < 3; boCustAttrIndex++){
+            boCustAttr = new BoCustAttr();
+
+            boCustAttr.setCustId("1234456");
+            boCustAttr.setBoId("1");
+            boCustAttr.setAttrCd("BoCustAttr"+boCustAttrIndex);
+            boCustAttr.setCreate_dt(new Date());
+            boCustAttr.setState("ADD");
+            boCustAttr.setValue(boCustAttrIndex+"");
+            boCustAttrs.add(boCustAttr);
+        }
+
+        for(int boCustAttrIndex = 0; boCustAttrIndex < 5; boCustAttrIndex++){
+            boCustAttr = new BoCustAttr();
+
+            boCustAttr.setCustId("1234456");
+            boCustAttr.setBoId("2");
+            boCustAttr.setAttrCd("BoCustAttr"+boCustAttrIndex);
+            boCustAttr.setCreate_dt(new Date());
+            boCustAttr.setState("ADD");
+            boCustAttr.setValue(boCustAttrIndex+"");
+            boCustAttrs.add(boCustAttr);
+        }
+
+        for(int boCustAttrIndex = 0; boCustAttrIndex < 3; boCustAttrIndex++){
+            boCustAttr = new BoCustAttr();
+
+            boCustAttr.setCustId("1234456");
+            boCustAttr.setBoId("3");
+            boCustAttr.setAttrCd("BoCustAttr"+boCustAttrIndex);
+            boCustAttr.setCreate_dt(new Date());
+            boCustAttr.setState("ADD");
+            boCustAttr.setValue(boCustAttrIndex+"");
+            boCustAttrs.add(boCustAttr);
+        }
+
+        for (BoCustAttr boCustAttrTml : boCustAttrs){
+            System.out.println(JSONObject.toJSON(boCustAttrTml));
+        }
+
+        System.out.println("-----------------------------处理前------------------------------------");
+
+        boCustAttrs = getPreBoCustAttrs(boCustAttrs);
+
+        for (BoCustAttr boCustAttrTml : boCustAttrs){
+            System.out.println(JSONObject.toJSON(boCustAttrTml));
+        }
+
+        System.out.println("-----------------------------处理后------------------------------------");
+
+    }
+
+    /**
+     * 获取上上一次的操作
+     * @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;
+    }
+
+}

+ 1 - 47
OrderService/target/classes/META-INF/spring-configuration-metadata.json

@@ -4,52 +4,6 @@
     "type": "com.java110.order.mq.MqConfig",
     "sourceType": "com.java110.order.mq.MqConfig"
   }],
-  "properties": [
-    {
-      "name": "mq.queue.name.broker-url",
-      "type": "java.lang.String",
-      "sourceType": "com.java110.order.mq.MqConfig"
-    },
-    {
-      "name": "mq.queue.name.delete-order-queue-name",
-      "type": "java.lang.String",
-      "sourceType": "com.java110.order.mq.MqConfig"
-    },
-    {
-      "name": "mq.queue.name.delete-order-topic-name",
-      "type": "java.lang.String",
-      "sourceType": "com.java110.order.mq.MqConfig"
-    },
-    {
-      "name": "mq.queue.name.max-connection",
-      "type": "java.lang.String",
-      "sourceType": "com.java110.order.mq.MqConfig"
-    },
-    {
-      "name": "mq.queue.name.mq-connection-factory",
-      "type": "javax.jms.ConnectionFactory",
-      "sourceType": "com.java110.order.mq.MqConfig"
-    },
-    {
-      "name": "mq.queue.name.password",
-      "type": "java.lang.String",
-      "sourceType": "com.java110.order.mq.MqConfig"
-    },
-    {
-      "name": "mq.queue.name.pooled-connection-factory",
-      "type": "org.apache.activemq.pool.PooledConnectionFactory",
-      "sourceType": "com.java110.order.mq.MqConfig"
-    },
-    {
-      "name": "mq.queue.name.user-queue-name",
-      "type": "java.lang.String",
-      "sourceType": "com.java110.order.mq.MqConfig"
-    },
-    {
-      "name": "mq.queue.name.username",
-      "type": "java.lang.String",
-      "sourceType": "com.java110.order.mq.MqConfig"
-    }
-  ],
+  "properties": [],
   "hints": []
 }

+ 3 - 1
OrderService/target/classes/application.yml

@@ -2,4 +2,6 @@ spring:
   activemq:
     broker-url: tcp://localhost:61616
     in-memory: true
-    enabled: false
+    enabled: false
+  jms:
+    pub-sub-domain: true

BIN
OrderService/target/classes/com/java110/order/mq/MqConfig.class


BIN
OrderService/target/classes/com/java110/order/smo/impl/OrderServiceSMOImpl.class


BIN
OrderService/target/test-classes/com/java110/order/common/PreBoCustAttr.class


+ 6 - 3
Readme.md

@@ -64,17 +64,20 @@ Java + spring cloud + mybatis + mysql + activemq + redis
 [
     
     {
-        'olId': '123456',
+        'olId':'123456',
+        'newBoId': '123456',
         'boId': '222222',
         'actionTypeCd': 'C1'
     },
     {
-        'olId': '123456',
+    'olId':'123456',
+        'newBoId': '123456',
         'boId': '222222',
         'actionTypeCd': 'C1'
     },
     {
-        'olId': '123456',
+    'olId':'123456',
+        'newBoId': '123456',
         'boId': '222222',
         'actionTypeCd': 'C1'
     }

+ 22 - 0
UserService/src/main/java/com/java110/user/dao/IUserServiceDao.java

@@ -1,5 +1,7 @@
 package com.java110.user.dao;
 
+import com.java110.common.log.LoggerEngine;
+import com.java110.common.util.Assert;
 import com.java110.entity.user.BoCust;
 import com.java110.entity.user.BoCustAttr;
 import com.java110.entity.user.Cust;
@@ -132,5 +134,25 @@ public interface IUserServiceDao {
      */
     public String queryDataToCustAndCustAttr(String custInfo) throws RuntimeException;
 
+    /**
+     *
+     * 查询 客户基本信息(过程表bo_cust)
+     *
+     * @param boCust
+     * @return
+     * @throws Exception
+     */
+    public List<BoCust> queryBoCust(BoCust boCust) throws Exception;
+
+    /**
+     *
+     * 查询 客户属性信息(过程表 bo_cust_attr)
+     *
+     * @param boCustAttr
+     * @return
+     * @throws Exception
+     */
+    public List<BoCustAttr> queryBoCustAttr(BoCustAttr boCustAttr) throws Exception;
+
 
 }

+ 36 - 0
UserService/src/main/java/com/java110/user/dao/impl/UserServiceDaoImpl.java

@@ -1,6 +1,7 @@
 package com.java110.user.dao.impl;
 
 import com.alibaba.fastjson.JSONObject;
+import com.java110.common.util.Assert;
 import com.java110.entity.user.BoCust;
 import com.java110.entity.user.BoCustAttr;
 import com.java110.entity.user.Cust;
@@ -16,6 +17,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 import java.util.Map;
+import java.util.logging.Logger;
 
 /**
  * 用户服务 与数据库交互
@@ -235,4 +237,38 @@ public class UserServiceDaoImpl extends BaseServiceDao implements IUserServiceDa
     public String queryDataToCustAndCustAttr(String custInfo) throws RuntimeException {
         return null;
     }
+
+    /**
+     *
+     * 查询 客户基本信息(过程表bo_cust)
+     *
+     * @param boCust
+     * @return
+     * @throws Exception
+     */
+    public List<BoCust> queryBoCust(BoCust boCust) throws Exception{
+        LoggerEngine.debug("----【UserServiceDAOImpl.queryBoCustAttr】:"+boCust);
+
+        Assert.isNull(boCust,"查询bo_cust 入参为空");
+
+        return sqlSessionTemplate.selectList("userServiceDAOImpl.queryBoCust",boCust);
+    }
+
+    /**
+     *
+     * 查询 客户属性信息(过程表 bo_cust_attr)
+     *
+     * @param boCustAttr
+     * @return
+     * @throws Exception
+     */
+    public List<BoCustAttr> queryBoCustAttr(BoCustAttr boCustAttr) throws Exception{
+
+        LoggerEngine.debug("【userServiceDAOImpl.queryBoCustAttr】:"+boCustAttr);
+
+        Assert.isNull(boCustAttr,"查询bo_cust_attr 入参为空");
+
+        return sqlSessionTemplate.selectList("userServiceDAOImpl.queryBoCustAttr",boCustAttr);
+
+    }
 }

+ 135 - 4
UserService/src/main/java/com/java110/user/smo/impl/UserServiceSMOImpl.java

@@ -9,6 +9,7 @@ import com.java110.common.util.ProtocolUtil;
 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.stereotype.Service;
 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 @@ public class UserServiceSMOImpl extends BaseServiceSMO implements IUserServiceSM
         Assert.isNull(datas,"传入的data节点下没有任何内容");
 
         for(int boIdIndex = 0 ; boIdIndex < datas.size(); boIdIndex++){
+            JSONObject data = datas.getJSONObject(boIdIndex);
 
+            Assert.isNull(data,"boId","当前节点中没有包含boId节点格式错误"+data);
+
+            // 复原Cust
+            doDeleteBoCust(data);
+
+            // 复原CustAttr
+            doDeleteBoCustAttr(data);
 
         }
 
@@ -486,8 +492,133 @@ public class UserServiceSMOImpl extends BaseServiceSMO implements IUserServiceSM
      * @throws Exception
      */
     public void doDeleteBoCust(JSONObject data) throws Exception{
+
+
+        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;
+        }
+       //在过程表中补一条作废的数据,然后根据boId的动作对实例数据进行处理
+
+        boCust.setCustId(boCusts.get(0).getCustId());
+        boCust.setBoId("");
+        //查询出所有custId 一样的数据
+        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("向bo_cust表中保存数据失败,boCust="+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));
+            }
+        }
+
+        //删除实例数据 这里思路是,删除实例数据中数据,将上一次ADD数据重新写一遍
+        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() {

+ 12 - 0
bean/src/main/java/com/java110/entity/user/BoCust.java

@@ -1,5 +1,7 @@
 package com.java110.entity.user;
 
+import java.util.Date;
+
 /**
  * 客户信息(过程)
  * 主要用于新建客户,更新客户,删除客户时,保存到以bo开头的过程表 实体
@@ -49,6 +51,8 @@ public class BoCust implements Comparable {
 
     private String state;
 
+    private Date create_dt;
+
     public String getBoId() {
         return boId;
     }
@@ -153,6 +157,14 @@ public class BoCust implements Comparable {
         this.state = state;
     }
 
+    public Date getCreate_dt() {
+        return create_dt;
+    }
+
+    public void setCreate_dt(Date create_dt) {
+        this.create_dt = create_dt;
+    }
+
     /**
      * 转为实例数据
      * @return

+ 12 - 0
bean/src/main/java/com/java110/entity/user/BoCustAttr.java

@@ -1,5 +1,7 @@
 package com.java110.entity.user;
 
+import java.util.Date;
+
 /**
  * 客户属性表(过程表)
  * Created by wuxw on 2016/12/27.
@@ -16,6 +18,8 @@ public class BoCustAttr implements Comparable{
 
     private String state;
 
+    private Date create_dt;
+
     public String getBoId() {
         return boId;
     }
@@ -56,6 +60,14 @@ public class BoCustAttr implements Comparable{
         this.attrCd = attrCd;
     }
 
+    public Date getCreate_dt() {
+        return create_dt;
+    }
+
+    public void setCreate_dt(Date create_dt) {
+        this.create_dt = create_dt;
+    }
+
     /**
      * 将过程数据转为实例数据
      * @return

BIN
bean/target/classes/com/java110/entity/user/BoCust.class


BIN
bean/target/classes/com/java110/entity/user/BoCustAttr.class


+ 13 - 0
common/src/main/java/com/java110/common/util/Assert.java

@@ -54,6 +54,19 @@ public class Assert extends org.springframework.util.Assert{
         }
     }
 
+    /**
+     * 判断是否只有一条记录数据
+     * @param targetList
+     * @param message
+     */
+    public static void isOne(List<?> targetList,String message){
+        Assert.isNull(targetList,message);
+
+        if(targetList.size() != 1){
+            throw new IllegalArgumentException(message) ;
+        }
+    }
+
     /**
      * 校验map 中是否有值
      * @param targetMap

BIN
common/target/classes/com/java110/common/util/Assert.class


+ 15 - 5
config/src/main/resources/mapper/user/UserServiceDaoImplMapper.xml

@@ -74,9 +74,13 @@
     </insert>
     <!-- 删除实例客户信息 cust -->
     <update id="deleteDataToCustAttr" parameterType="com.java110.entity.user.CustAttr">
-        <![CDATA[
-           delete * from cust_attr ct where ct.custId = #{custId} and ct.attrCd = #{attrCd}
-        ]]>
+           delete * from cust_attr ct where 1=1
+           <if test="custId != null and custId != ''">
+               and ct.custId = #{custId}
+           </if>
+            <if test="attrCd != null and attrCd != ''">
+                and ct.attrCd = #{attrCd}
+            </if>
     </update>
     <!--根据客户ID 查询客户信息,其中包括 cust 和custAttr 数据-->
     <select id="queryDataToCust" parameterType="com.java110.entity.user.Cust" resultMap="custMap">
@@ -91,7 +95,7 @@
 
     <!-- 查询客户过程数据 -->
     <select id="queryBoCust" parameterType="com.java110.entity.user.BoCust" resultType="com.java110.entity.user.BoCust">
-        select bc.custId,bc.name,bc.email,bc.cellphone,bc.realName,bc.sex,bc.password,bc.lanId,bc.custAdress,bc.custType,bc.openId
+        select bc.boId,bc.custId,bc.name,bc.email,bc.cellphone,bc.realName,bc.sex,bc.password,bc.lanId,bc.custAdress,bc.custType,bc.openId,bc.create_dt
         from bo_cust bc where 1=1
         <if test="boId != null and boId != ''">
             and bc.boId = #{boId}
@@ -100,16 +104,22 @@
             and bc.custId = #{custId}
         </if>
         and bc.state in ('ADD','DEL')
+        <if test="create_dt != null and create_dt != ''">
+            order by bc.create_dt desc
+        </if>
     </select>
     <!-- 查询客户属性过程表-->
     <select id="queryBoCustAttr" parameterType="com.java110.entity.user.BoCustAttr" resultType="com.java110.entity.user.BoCustAttr">
-        select * from bo_cust_attr bca where 1=1
+        select bca.boId,bca.custId,bca.attrCd,bca.value,bca.state,bca.create_dt from bo_cust_attr bca where 1=1
         <if test="boId !=null and boId != ''">
             and bca.boId = #{boId}
         </if>
         <if test="custId != null and custId != ''">
             and bca.custId = #{custId}
         </if>
+        <if test="create_dt != null and create_dt != ''">
+            order by bc.create_dt desc
+        </if>
     </select>
 
 </mapper>

+ 29 - 0
config/target/classes/mapper/user/UserServiceDaoImplMapper.xml

@@ -89,4 +89,33 @@
         ]]>
     </select>
 
+    <!-- 查询客户过程数据 -->
+    <select id="queryBoCust" parameterType="com.java110.entity.user.BoCust" resultType="com.java110.entity.user.BoCust">
+        select bc.boId,bc.custId,bc.name,bc.email,bc.cellphone,bc.realName,bc.sex,bc.password,bc.lanId,bc.custAdress,bc.custType,bc.openId,bc.create_dt
+        from bo_cust bc where 1=1
+        <if test="boId != null and boId != ''">
+            and bc.boId = #{boId}
+        </if>
+        <if test="custId != null and custId != ''">
+            and bc.custId = #{custId}
+        </if>
+        and bc.state in ('ADD','DEL')
+        <if test="create_dt != null and create_dt != ''">
+            order by bc.create_dt desc
+        </if>
+    </select>
+    <!-- 查询客户属性过程表-->
+    <select id="queryBoCustAttr" parameterType="com.java110.entity.user.BoCustAttr" resultType="com.java110.entity.user.BoCustAttr">
+        select bca.boId,bca.custId,bca.attrCd,bca.value,bca.state,bca.create_dt from bo_cust_attr bca where 1=1
+        <if test="boId !=null and boId != ''">
+            and bca.boId = #{boId}
+        </if>
+        <if test="custId != null and custId != ''">
+            and bca.custId = #{custId}
+        </if>
+        <if test="create_dt != null and create_dt != ''">
+            order by bc.create_dt desc
+        </if>
+    </select>
+
 </mapper>