jlutt@163.com пре 2 година
родитељ
комит
7c71795c39

+ 1 - 1
conf/application-ddWebOne.xml

@@ -29,7 +29,7 @@
 
             <!--登录token加密key-->
             <property name="erpToken.commonkey" value="4c72865cf224465393e3eecb38fc8685"/>
-            <property name="dnyDriver.commonkey" value="95428de286f4accd73b80acebd38abd1"/>
+            <property name="deliver.Store.commonkey" value="95428de286f4accd73b80acebd38abd1"/>
             <property name="dnyMall.commonkey" value="2b23f19e5ec0d17c086eb8fcf68f5b6f"/>
 
             <property name="baiduKey" value="r8bLF3qzzYxVpPACZaxbaWSgYDyihz0d"/>

+ 10 - 0
conf/esTemplate/businessorder.json

@@ -103,6 +103,16 @@
         "type": "text",
         "index": "not_analyzed"
       },
+      "outGoingPlatformOrderCode": {
+        "type": "text",
+        "index": "analyzed",
+        "analyzer": "codefull_analyzer",
+        "fields": {
+          "raw": {
+            "type": "keyword"
+          }
+        }
+      },
       "voidFlagIn": {
         "type": "integer"
       },

+ 17 - 1
conf/esTemplate/orderdetailitem.json

@@ -12,7 +12,23 @@
       },
       "itemName": {
         "type": "text",
-        "index": "not_analyzed"
+        "analyzer": "index_ansj",
+        "search_analyzer": "query_ansj",
+        "fields": {
+          "raw": {
+            "type": "keyword"
+          },
+          "number": {
+            "type": "text",
+            "index": "analyzed",
+            "analyzer": "number_analyzer"
+          },
+          "letter": {
+            "type": "text",
+            "index": "analyzed",
+            "analyzer": "letter_analyzer"
+          }
+        }
       },
       "itemPrice": {
         "type": "double"

+ 109 - 0
conf/esTemplate/orderrideritem.json

@@ -0,0 +1,109 @@
+{
+  "orderrideritem": {
+    "_parent": {
+      "type": "info"
+    },
+    "properties": {
+      "id": {
+        "type": "long"
+      },
+      "idOrder": {
+        "type": "long"
+      },
+      "riderStatus": {
+        "type": "integer"
+      },
+      "statusDesc": {
+        "type": "text",
+        "index": "not_analyzed"
+      },
+      "idPlatform": {
+        "type": "long"
+      },
+      "platformCode": {
+        "type": "text",
+        "index": "analyzed",
+        "analyzer": "codefull_analyzer",
+        "fields": {
+          "raw": {
+            "type": "keyword"
+          }
+        }
+      },
+      "platformName": {
+        "type": "text",
+        "analyzer": "index_ansj",
+        "search_analyzer": "query_ansj",
+        "fields": {
+          "raw": {
+            "type": "keyword"
+          },
+          "number": {
+            "type": "text",
+            "index": "analyzed",
+            "analyzer": "number_analyzer"
+          },
+          "letter": {
+            "type": "text",
+            "index": "analyzed",
+            "analyzer": "letter_analyzer"
+          }
+        }
+      },
+      "platformOrderId": {
+        "type": "text",
+        "index": "not_analyzed"
+      },
+      "operatorName": {
+        "type": "text",
+        "analyzer": "index_ansj",
+        "search_analyzer": "query_ansj",
+        "fields": {
+          "raw": {
+            "type": "keyword"
+          },
+          "number": {
+            "type": "text",
+            "index": "analyzed",
+            "analyzer": "number_analyzer"
+          },
+          "letter": {
+            "type": "text",
+            "index": "analyzed",
+            "analyzer": "letter_analyzer"
+          }
+        }
+      },
+      "operatorPhone": {
+        "type": "text",
+        "index": "analyzed",
+        "analyzer": "codefull_analyzer",
+        "fields": {
+          "raw": {
+            "type": "keyword"
+          }
+        }
+      },
+      "riderLng": {
+        "type": "text",
+        "index": "not_analyzed"
+      },
+      "riderLat": {
+        "type": "text",
+        "index": "not_analyzed"
+      },
+      "createBy": {
+        "type": "long"
+      },
+      "createTimeLong": {
+        "type": "long"
+      },
+      "updateBy": {
+        "type": "long"
+      },
+      "updateTimeLong": {
+        "type": "long"
+      }
+    }
+  }
+}

+ 6 - 16
conf/script/1000/business/BE_ERPLogin.groovy

@@ -49,8 +49,8 @@ class BE_ERPLogin implements BusinessExecutor<ProcessEntityItem<LoginRequest>, L
     @Resource(name = "property.erpToken.commonkey")
     private String ssoERPTokenCommonKey
 
-    @Resource(name = "property.dnyDriver.commonkey")
-    private String ssoDriverTokenCommonKey
+    @Resource(name = "property.deliver.Store.commonkey")
+    private String ssoStoreTokenCommonKey
 
     @Resource(name = "property.dnyMall.commonkey")
     private String ssoMallTokenCommonKey
@@ -98,18 +98,8 @@ class BE_ERPLogin implements BusinessExecutor<ProcessEntityItem<LoginRequest>, L
             "80": [
                     "name"         : "门店后台管理系统登录",
                     "resourceLogin": { LoginRequest loginInfo ->
-
-                        if (loginInfo.password == "D227E2334F89C81FDE0967B115D4F29C") {
-                            LoginUser info = new LoginUser()
-                            info.setId(-999L)
-                            info.setLoginName("SuperResourcer")
-                            info.setUserName("资源管理员")
-                            info.setDeptName("资源管理")
-
-                            return RetResult.<ERPTokenUser> successT().result(new ERPTokenUser(info))
-                        } else {
-                            return RetResult.<ERPTokenUser> errorT().retinfo("用户账号或密码错误,登录失败")
-                        }
+                        //不允许使用superResourcer登录,防漏洞
+                        return RetResult.<ERPTokenUser> errorT().retinfo("用户账号或密码错误,登录失败")
                     },
                     "login"        : { LoginRequest loginInfo, RMap mapParams, DataBaseMultiItemEx supplierItem ->
                         mapParams.put("companyId", 0L)
@@ -125,7 +115,7 @@ class BE_ERPLogin implements BusinessExecutor<ProcessEntityItem<LoginRequest>, L
 
                         return RetResult.<ERPTokenUser> successT().result(new ERPTokenUser(info))
                     },
-                    "tokenKey"     : ssoERPTokenCommonKey
+                    "tokenKey"     : ssoStoreTokenCommonKey
             ]
     ]
 
@@ -143,7 +133,7 @@ class BE_ERPLogin implements BusinessExecutor<ProcessEntityItem<LoginRequest>, L
     RetResult<LoginResult> execute(ProcessEntityItem<LoginRequest> source) {
         //直接定义Resource不好使,还是需要赋值
         loginStrategies.get("0").tokenKey = ssoERPTokenCommonKey
-        loginStrategies.get("80").tokenKey = ssoERPTokenCommonKey
+        loginStrategies.get("80").tokenKey = ssoStoreTokenCommonKey
 
         if (source.inputItem == null) {
             return RetResult.<LoginResult> errorT().retinfo("未传入用户信息")

+ 2 - 1
conf/script/1000/init/Init_16_BusinessOrder.groovy

@@ -16,7 +16,8 @@ static def createRunnable(ESClient esClient, RedisService redisService, Supplier
                         ESKeys.ES_DELIVER_ORDER_DELIVERY_INFO_TYPE, "orderdeliveryinfo.json",
                         ESKeys.ES_DELIVER_ORDER_FINANCES_TYPE, "orderfinances.json",
                         ESKeys.ES_DELIVER_ORDER_DETAIL_ITEM_TYPE, "orderdetailitem.json",
-                        ESKeys.ES_DELIVER_ORDER_AFTER_SALE_BILL_TYPE, "orderaftersalebill.json"))
+                        ESKeys.ES_DELIVER_ORDER_AFTER_SALE_BILL_TYPE, "orderaftersalebill.json",
+                        ESKeys.ES_DELIVER_ORDER_RIDER_ITEM_TYPE, "orderrideritem.json"))
 
         esClient.checkIndexEx(supplierService.getDateYearESIndex(supplierCode, ESKeys.ES_DELIVER_ORDER_STEP_INDEX, 0),
                 ESKeys.INDEX_CONFIG,

+ 196 - 84
conf/script/1000/orderSearch/BE_ERP_BusinessOrder_Search.groovy

@@ -4,9 +4,8 @@ import com.dderp.common.datas.ERPModule
 import com.dderp.common.datas.ESKeys
 import com.dderp.common.datas.ReadOrderOption
 import com.dderp.common.entity.base.ProcessSearchOptionsItem
-import com.dderp.common.entity.order.BusinessOrder
+import com.dderp.common.entity.order.*
 import com.dderp.common.tool.ERPUtils
-import com.dderp.common.datas.ReadOrderOption
 import com.dySweetFishPlugin.elasticsearch.ESClient
 import com.dySweetFishPlugin.tool.lang.DateUtil
 import com.sweetfish.convert.json.JsonConvert
@@ -14,6 +13,7 @@ import com.sweetfish.service.RetResult
 import org.apache.commons.lang3.StringUtils
 import org.apache.logging.log4j.LogManager
 import org.apache.logging.log4j.Logger
+import org.apache.lucene.search.join.ScoreMode
 import org.elasticsearch.action.search.SearchResponse
 import org.elasticsearch.index.query.BoolQueryBuilder
 import org.elasticsearch.index.query.Operator
@@ -31,7 +31,7 @@ import javax.annotation.Resource
 import java.math.RoundingMode
 import java.util.function.ToLongFunction
 
-@SuppressWarnings(["rawtypes"])
+@SuppressWarnings(["rawtypes", "unused"])
 class BE_ERP_BusinessOrder_Search implements BusinessExecutor<ProcessSearchOptionsItem<ReadOrderOption>, BusinessOrder> {
 
     protected final Logger logger = LogManager.getLogger(this.getClass().getSimpleName())
@@ -88,7 +88,7 @@ class BE_ERP_BusinessOrder_Search implements BusinessExecutor<ProcessSearchOptio
                 .execute()
     }
 
-    def <T> List<T> getOrderChildInfo(Class<T> clazz, String childESType, long idOrder, long supplierCode) {
+    def <T> List<T> getOrderChildInfoList(Class<T> clazz, String childESType, long idOrder, long supplierCode) {
         return ESList.<T> getESList()
                 .esClient(esClient)
                 .jsonConvert(jsonConvert)
@@ -103,7 +103,22 @@ class BE_ERP_BusinessOrder_Search implements BusinessExecutor<ProcessSearchOptio
                 .executeNonePage()
     }
 
-    def readOrderOptions(List<BusinessOrder> orderList, String dataSourceId, long supplierCode,
+    def <T> T getOrderChildInfo(Class<T> clazz, String childESType, long idOrder, long supplierCode) {
+        return ESOne.<T> getESOneInfo()
+                .esClient(esClient)
+                .jsonConvert(jsonConvert)
+                .clazz(clazz)
+                .queryBuilder({
+                    //获取完成的数据情况
+                    return QueryBuilders.boolQuery()
+                            .must(QueryBuilders.typeQuery(childESType))
+                            .must(QueryBuilders.termQuery("idOrder", idOrder))
+                })
+                .index(supplierService.getDateYearESIndex(supplierCode, ESKeys.ES_DELIVER_BUSINESS_ORDER_INDEX, 1))
+                .execute()
+    }
+
+    def readOrderOptions(List<BusinessOrder> orderList, long supplierCode,
                          ReadOrderOption... options) {
         long[] idOrders = orderList*.id.toArray() as long[]
 
@@ -111,41 +126,89 @@ class BE_ERP_BusinessOrder_Search implements BusinessExecutor<ProcessSearchOptio
             //防止搞坏事,options传重复数据过来,先去重
             options.toUnique().each { opt ->
                 switch (opt) {
-
+                    case ReadOrderOption.ORDER_PRODUCT:
+                        Map<Long, List<OrderDetailItem>> orderItemMap = searchOrderChildInfoMap(OrderDetailItem.class, ESKeys.ES_DELIVER_ORDER_DETAIL_ITEM_TYPE, idOrders, supplierCode, { it.idOrder })
+                        orderList.each { order ->
+                            order.detailItemList = orderItemMap.get(order.id)
+                        }
+
+                        break
+                    case ReadOrderOption.ORDER_DELIVERY:
+                        List<OrderDeliveryInfo> childInfoList = searchOrderChildInfoList(OrderDeliveryInfo.class, ESKeys.ES_DELIVER_ORDER_DELIVERY_INFO_TYPE, idOrders, supplierCode)
+                        orderList.each { o ->
+                            o.orderDeliveryInfo = childInfoList.find { c -> c.idOrder == o.id }
+                        }
+                        break
+                    case ReadOrderOption.ORDER_FINANCES:
+                        List<OrderFinances> childInfoList = searchOrderChildInfoList(OrderFinances.class, ESKeys.ES_DELIVER_ORDER_FINANCES_TYPE, idOrders, supplierCode)
+                        orderList.each { o ->
+                            o.orderFinances = childInfoList.find { c -> c.idOrder == o.id }
+                        }
+                        break
+                    case ReadOrderOption.ORDER_RIDER:
+                        Map<Long, List<OrderRiderItem>> orderItemMap = searchOrderChildInfoMap(OrderRiderItem.class, ESKeys.ES_DELIVER_ORDER_RIDER_ITEM_TYPE, idOrders, supplierCode, { it.idOrder })
+                        orderList.each { order ->
+                            order.riderItemList = orderItemMap.get(order.id)
+                        }
+
+                        break
                 }
             }
         }
     }
 
-    def readOrderOptions(BusinessOrder businessOrder, String dataSourceId, long supplierCode,
+    def readOrderOptions(BusinessOrder businessOrder, long supplierCode,
                          ReadOrderOption... options) {
         if ((options != null) && (options.length > 0)) {
             //防止搞坏事,options传重复数据过来,先去重
             options.toUnique().each { opt ->
                 switch (opt) {
+                    case ReadOrderOption.ORDER_PRODUCT:
+                        businessOrder.detailItemList = getOrderChildInfoList(OrderDetailItem.class, ESKeys.ES_DELIVER_ORDER_DETAIL_ITEM_TYPE, businessOrder.id, supplierCode)
 
+                        break
+                    case ReadOrderOption.ORDER_DELIVERY:
+                        businessOrder.orderDeliveryInfo = getOrderChildInfo(OrderDeliveryInfo.class, ESKeys.ES_DELIVER_ORDER_DELIVERY_INFO_TYPE, businessOrder.id, supplierCode)
+
+                        break
+                    case ReadOrderOption.ORDER_FINANCES:
+                        businessOrder.orderFinances = getOrderChildInfo(OrderFinances.class, ESKeys.ES_DELIVER_ORDER_FINANCES_TYPE, businessOrder.id, supplierCode)
+
+                        break
+                    case ReadOrderOption.ORDER_RIDER:
+                        businessOrder.riderItemList = getOrderChildInfoList(OrderRiderItem.class, ESKeys.ES_DELIVER_ORDER_RIDER_ITEM_TYPE, businessOrder.id, supplierCode)
+
+                        break
                 }
             }
         }
     }
 
-    def readOrderTotal(RMap searchData, String dataSourceId, long supplierCode, ReadOrderOption... options) {
+    def readOrderTotal(RMap searchData, long supplierCode, ReadOrderOption... options) {
 
         if (!(ReadOrderOption.ORDER_TOTAL in options)) {
             return null
         }
 
         //这里的查询需要和主表一致
-        BoolQueryBuilder bqb = search(searchData)
-                .byOrderStates()
-                .byKeyWord()
-                .byBeginTime_Create()
-                .byEndTime_Create()
-                .byClientName()
-                .byIdClient()
-                .byPlatform()
-                .byIdStore()
-                .byVoidFlag()
+        BoolQueryBuilder bqb = searchByFinance(searchData)
+                .byOrderParentQuery(
+                        search(searchData)
+                                .byOrderStates()
+                                .byKeyWord()
+                                .byOrderCode()
+                                .byIdPlatformIn()
+                                .byIdPlatformOut()
+                                .byVoidFlagIn()
+                                .byVoidFlagOut()
+                                .byDeliverAddress_QuerySlave()
+                                .byItemName_QuerySlave()
+                                .byIdStore()
+                                .byBeginTime_Create()
+                                .byEndTime_Create()
+                                .build()
+                )
+
                 .build()
 
 
@@ -155,24 +218,36 @@ class BE_ERP_BusinessOrder_Search implements BusinessExecutor<ProcessSearchOptio
                 .prepareSearch(supplierService.getDateYearESIndex(supplierCode, ESKeys.ES_DELIVER_BUSINESS_ORDER_INDEX, 1))
                 .setQuery(bqb)
                 .addAggregation(AggregationBuilders.count("sub_count").field("id"))
-                .addAggregation(AggregationBuilders.sum("orderMoneyTotal_Sum").field("orderMoneyTotal"))
-                .addAggregation(AggregationBuilders.sum("chargeMoney_Sum").field("chargeMoney"))
-                .addAggregation(AggregationBuilders.sum("payMoney_Sum").field("payMoney"))
-                .addAggregation(AggregationBuilders.sum("orderQty_Sum").field("orderQty"))
+                .addAggregation(AggregationBuilders.sum("orderMoneySum").field("orderMoney"))
+                .addAggregation(AggregationBuilders.sum("deliverFeeSum").field("deliverFee"))
+                .addAggregation(AggregationBuilders.sum("orderPlatformSubsidySum").field("orderPlatformSubsidy"))
+                .addAggregation(AggregationBuilders.sum("storeDiscountSum").field("storeDiscount"))
+                .addAggregation(AggregationBuilders.sum("customerPaidSum").field("customerPaid"))
+                .addAggregation(AggregationBuilders.sum("platformServiceFeeSum").field("platformServiceFee"))
+                .addAggregation(AggregationBuilders.sum("storeRealCollectionSum").field("storeRealCollection"))
+                .addAggregation(AggregationBuilders.sum("omeServiceFeeSum").field("omeServiceFee"))
                 .execute().actionGet()
 
         ValueCount orderCountSum = searchResponse.getAggregations().get("sub_count")
-        InternalSum orderMoneyTotalSum = searchResponse.getAggregations().get("orderMoneyTotal_Sum")
-        InternalSum chargeMoneySum = searchResponse.getAggregations().get("chargeMoney_Sum")
-        InternalSum payMoneySum = searchResponse.getAggregations().get("payMoney_Sum")
-        InternalSum orderQtySum = searchResponse.getAggregations().get("orderQty_Sum")
+        InternalSum orderMoneySum = searchResponse.getAggregations().get("orderMoneySum")
+        InternalSum deliverFeeSum = searchResponse.getAggregations().get("deliverFeeSum")
+        InternalSum orderPlatformSubsidySum = searchResponse.getAggregations().get("orderPlatformSubsidySum")
+        InternalSum storeDiscountSum = searchResponse.getAggregations().get("storeDiscountSum")
+        InternalSum customerPaidSum = searchResponse.getAggregations().get("customerPaidSum")
+        InternalSum platformServiceFeeSum = searchResponse.getAggregations().get("platformServiceFeeSum")
+        InternalSum storeRealCollectionSum = searchResponse.getAggregations().get("storeRealCollectionSum")
+        InternalSum omeServiceFeeSum = searchResponse.getAggregations().get("omeServiceFeeSum")
 
         RMap<String, Number> collectionData = new RMap<>()
         collectionData.put("orderCountSum", orderCountSum.getValue())
-        collectionData.put("orderMoneyTotalSum", BigDecimal.valueOf(orderMoneyTotalSum.getValue()).setScale(2, RoundingMode.HALF_UP))
-        collectionData.put("chargeMoneySum", BigDecimal.valueOf(chargeMoneySum.getValue()).setScale(2, RoundingMode.HALF_UP))
-        collectionData.put("payMoneySum", BigDecimal.valueOf(payMoneySum.getValue()).setScale(2, RoundingMode.HALF_UP))
-        collectionData.put("orderQtySum", BigDecimal.valueOf(orderQtySum.getValue()).setScale(0, RoundingMode.HALF_UP))
+        collectionData.put("orderMoneySum", BigDecimal.valueOf(orderMoneySum.getValue()).setScale(2, RoundingMode.HALF_UP))
+        collectionData.put("deliverFeeSum", BigDecimal.valueOf(deliverFeeSum.getValue()).setScale(2, RoundingMode.HALF_UP))
+        collectionData.put("orderPlatformSubsidySum", BigDecimal.valueOf(orderPlatformSubsidySum.getValue()).setScale(2, RoundingMode.HALF_UP))
+        collectionData.put("storeDiscountSum", BigDecimal.valueOf(storeDiscountSum.getValue()).setScale(0, RoundingMode.HALF_UP))
+        collectionData.put("customerPaidSum", BigDecimal.valueOf(customerPaidSum.getValue()).setScale(0, RoundingMode.HALF_UP))
+        collectionData.put("platformServiceFeeSum", BigDecimal.valueOf(platformServiceFeeSum.getValue()).setScale(0, RoundingMode.HALF_UP))
+        collectionData.put("storeRealCollectionSum", BigDecimal.valueOf(storeRealCollectionSum.getValue()).setScale(0, RoundingMode.HALF_UP))
+        collectionData.put("omeServiceFeeSum", BigDecimal.valueOf(omeServiceFeeSum.getValue()).setScale(0, RoundingMode.HALF_UP))
 
         return collectionData
 
@@ -195,13 +270,16 @@ class BE_ERP_BusinessOrder_Search implements BusinessExecutor<ProcessSearchOptio
                     return search(source.searchData)
                             .byOrderStates()
                             .byKeyWord()
+                            .byOrderCode()
+                            .byIdPlatformIn()
+                            .byIdPlatformOut()
+                            .byVoidFlagIn()
+                            .byVoidFlagOut()
+                            .byDeliverAddress_QuerySlave()
+                            .byItemName_QuerySlave()
+                            .byIdStore()
                             .byBeginTime_Create()
                             .byEndTime_Create()
-                            .byClientName()
-                            .byIdClient()
-                            .byPlatform()
-                            .byIdStore()
-                            .byVoidFlag()
                             .build()
                 })
                 .index(supplierService.getDateYearESIndex(source.supplierCode, ESKeys.ES_DELIVER_BUSINESS_ORDER_INDEX, 1))
@@ -215,9 +293,9 @@ class BE_ERP_BusinessOrder_Search implements BusinessExecutor<ProcessSearchOptio
                 .dataExecutor(null)
                 .executePage(source.pageFlipper)
 
-        readOrderOptions(orderList, source.dataSourceId, source.supplierCode, source.options)
+        readOrderOptions(orderList, source.supplierCode, source.options)
 
-        RMap<String, Number> collectionData = readOrderTotal(source.searchData, source.dataSourceId, source.supplierCode, source.options)
+        RMap<String, Number> collectionData = readOrderTotal(source.searchData, source.supplierCode, source.options)
         return RetResult.<List<BusinessOrder>> successT().result(orderList).page(source.pageFlipper).attachRMap(collectionData)
 
 
@@ -248,7 +326,7 @@ class BE_ERP_BusinessOrder_Search implements BusinessExecutor<ProcessSearchOptio
                     })
                     .index(supplierService.getDateYearESIndex(source.supplierCode, ESKeys.ES_DELIVER_BUSINESS_ORDER_INDEX, 1))
                     .executeNonePage()
-            readOrderOptions(subOrderList, source.dataSourceId, source.supplierCode, source.options)
+            readOrderOptions(subOrderList, source.supplierCode, source.options)
             if (!subOrderList.isEmpty()) {
                 orderList.addAll(subOrderList)
             }
@@ -280,7 +358,7 @@ class BE_ERP_BusinessOrder_Search implements BusinessExecutor<ProcessSearchOptio
             return RetResult.<BusinessOrder> errorT().retinfo("无效的订单")
         }
 
-        readOrderOptions(businessOrder, source.dataSourceId, source.supplierCode, source.options)
+        readOrderOptions(businessOrder, source.supplierCode, source.options)
 
         return RetResult.<BusinessOrder> successT().result(businessOrder)
     }
@@ -307,7 +385,7 @@ class BE_ERP_BusinessOrder_Search implements BusinessExecutor<ProcessSearchOptio
             return RetResult.<BusinessOrder> errorT().retinfo("无效的订单")
         }
 
-        readOrderOptions(businessOrder, source.dataSourceId, source.supplierCode, source.options)
+        readOrderOptions(businessOrder, source.supplierCode, source.options)
 
         return RetResult.<BusinessOrder> successT().result(businessOrder)
     }
@@ -343,9 +421,17 @@ class BE_ERP_BusinessOrder_Search implements BusinessExecutor<ProcessSearchOptio
         return new ESConditionBuilder(searchData, QueryBuilders.boolQuery().must(QueryBuilders.typeQuery(ESKeys.ES_DELIVER_BUSINESS_ORDER_TYPE)))
     }
 
+    ESConditionBuilder searchByItem(RMap searchData) {
+        return new ESConditionBuilder(searchData, QueryBuilders.boolQuery().must(QueryBuilders.typeQuery(ESKeys.ES_DELIVER_ORDER_DETAIL_ITEM_TYPE)))
+    }
+
+    ESConditionBuilder searchByFinance(RMap searchData) {
+        return new ESConditionBuilder(searchData, QueryBuilders.boolQuery().must(QueryBuilders.typeQuery(ESKeys.ES_DELIVER_ORDER_FINANCES_TYPE)))
+    }
+
     //这里是做一个示例,表示通过查部件子表查询订单
     ESConditionBuilder searchByOrderRider(RMap searchData) {
-        return new ESConditionBuilder(searchData, QueryBuilders.boolQuery().must(QueryBuilders.typeQuery(ESKeys.ES_ERP_ORDER_PART_TYPE)))
+        return new ESConditionBuilder(searchData, QueryBuilders.boolQuery().must(QueryBuilders.typeQuery(ESKeys.ES_DELIVER_ORDER_RIDER_ITEM_TYPE)))
     }
 
     //endregion
@@ -387,22 +473,58 @@ class BE_ERP_BusinessOrder_Search implements BusinessExecutor<ProcessSearchOptio
             return this
         }
 
+        //子表查订单ids
+        ESConditionBuilder byChildIdOrders(long[] idOrders) {
+            qb = qb.must(QueryBuilders.termsQuery("idOrder", idOrders))
+            return this
+        }
+
         ESConditionBuilder byIdOrder(long idOrder) {
             //这里不要判断idOrder是否大于0,防止条件漏了
             qb = qb.must(QueryBuilders.idsQuery(ESKeys.ES_DELIVER_BUSINESS_ORDER_TYPE).addIds(String.valueOf(idOrder)))
             return this
         }
 
+        ESConditionBuilder byIdPlatformIn() {
+            if (ERPUtils.mapContainKey(searchData, "incomePlatformId")) {
+                long idPlatformIn = searchData.getLong("incomePlatformId")
+                if (idPlatformIn > 0L) {
+                    qb = qb.must(QueryBuilders.termQuery("incomePlatformId", idPlatformIn))
+                }
+            }
+            return this
+        }
+
+        ESConditionBuilder byIdPlatformOut() {
+            if (ERPUtils.mapContainKey(searchData, "outGoingPlatformId")) {
+                long idPlatformOut = searchData.getLong("outGoingPlatformId")
+                if (idPlatformOut > 0L) {
+                    qb = qb.must(QueryBuilders.termQuery("outGoingPlatformId", idPlatformOut))
+                }
+            }
+            return this
+        }
+
         ESConditionBuilder byKeyWord() {
             if (ERPUtils.mapContainKey(searchData, "keyWord")) {
                 String keyWord = searchData.getString("keyWord")
+
+                //下面的关系不要弄错了,一定是must里面在should,如果一直should不用must包起来,则导致搜索条件是全部或者的关系,主表搜索只会搜索有子表的记录,结果就是全部数据都会命中
+                QueryBuilder qbDeliveryInfoKeyWord = QueryBuilders.boolQuery()
+                        .must(QueryBuilders.typeQuery(ESKeys.ES_DELIVER_ORDER_DELIVERY_INFO_TYPE))
+                        .must(QueryBuilders.boolQuery()
+                                .should(QueryBuilders.matchQuery("deliverAddress", keyWord).analyzer("query_ansj").operator(Operator.AND))
+                                .should(QueryBuilders.termQuery("deliverAddress.number", keyWord.toLowerCase()))
+                                .should(QueryBuilders.matchQuery("deliverAddress.letter", keyWord.toLowerCase()).operator(Operator.AND))
+                        )
+
                 QueryBuilder qbKeyWord = QueryBuilders.boolQuery()
                         .should(QueryBuilders.termQuery("orderCode", keyWord.toLowerCase()))
+                        .should(QueryBuilders.termQuery("incomePlatformOrderCode", keyWord.toLowerCase()))
+                        .should(QueryBuilders.termQuery("outGoingPlatformOrderCode", keyWord.toLowerCase()))
                         .should(QueryBuilders.matchQuery("orderName", keyWord).operator(Operator.AND))
-                        .should(QueryBuilders.matchQuery("clientName", keyWord).operator(Operator.AND))
-                        .should(QueryBuilders.matchQuery("productName", keyWord).operator(Operator.AND))
-                        .should(QueryBuilders.matchQuery("createMan", keyWord).operator(Operator.AND))
-                        .should(QueryBuilders.matchQuery("orderRegion", keyWord).operator(Operator.AND))
+                        .should(QueryBuilders.matchQuery("storeName", keyWord).operator(Operator.AND))
+                        .should(JoinQueryBuilders.hasChildQuery(ESKeys.ES_DELIVER_ORDER_DELIVERY_INFO_TYPE, qbDeliveryInfoKeyWord, ScoreMode.None))
 
                 qb = qb.must(qbKeyWord)
             }
@@ -427,13 +549,17 @@ class BE_ERP_BusinessOrder_Search implements BusinessExecutor<ProcessSearchOptio
             return this
         }
 
-        ESConditionBuilder byVoidFlag() {
+        ESConditionBuilder byVoidFlagIn() {
             if (ERPUtils.mapContainKey(searchData, "voidFlagIn")) {
                 int voidFlag = searchData.getInt("voidFlagIn")
                 if (voidFlag >= 0) {
                     qb = qb.must(QueryBuilders.termQuery("voidFlagIn", voidFlag))
                 }
             }
+            return this
+        }
+
+        ESConditionBuilder byVoidFlagOut() {
             if (ERPUtils.mapContainKey(searchData, "voidFlagOut")) {
                 int voidFlag = searchData.getInt("voidFlagOut")
                 if (voidFlag >= 0) {
@@ -443,13 +569,6 @@ class BE_ERP_BusinessOrder_Search implements BusinessExecutor<ProcessSearchOptio
             return this
         }
 
-        ESConditionBuilder byVoidFlag(int voidFlag) {
-            if (voidFlag >= 0) {
-                qb = qb.must(QueryBuilders.termQuery("voidFlag", voidFlag))
-            }
-            return this
-        }
-
         ESConditionBuilder byOrderCode() {
             if (ERPUtils.mapContainKey(searchData, "orderCode")) {
                 String orderCode = searchData.getString("orderCode")
@@ -491,36 +610,34 @@ class BE_ERP_BusinessOrder_Search implements BusinessExecutor<ProcessSearchOptio
             return this
         }
 
-        ESConditionBuilder byClientName() {
-            if (ERPUtils.mapContainKey(searchData, "clientName")) {
-                String clientName = searchData.getString("clientName")
-                qb = qb.must(QueryBuilders.boolQuery()
-                        .should(QueryBuilders.matchQuery("clientName", clientName).analyzer("index_ansj").operator(Operator.AND))
-                        .should(QueryBuilders.termQuery("clientName.number", clientName.toLowerCase()))
-                        .should(QueryBuilders.matchQuery("clientName.letter", clientName.toLowerCase()).operator(Operator.AND)))
-            }
-            return this
-        }
-
-        ESConditionBuilder byIdClient() {
-            if (ERPUtils.mapContainKey(searchData, "idClient")) {
-                long idClient = searchData.getLong("idClient")
-                //这里不管是否大于0,都查询
-                qb = qb.must(QueryBuilders.termQuery("idClient", idClient))
+        /**
+         * 主表为order,查子表的查DeliverAddress
+         * @return 查询构造器
+         */
+        ESConditionBuilder byDeliverAddress_QuerySlave() {
+            if (ERPUtils.mapContainKey(searchData, "deliverAddress")) {
+                String deliverAddress = searchData.getString("deliverAddress")
+                BoolQueryBuilder qbDeliverAddress = QueryBuilders.boolQuery()
+                        .should(QueryBuilders.matchQuery("deliverAddress", deliverAddress).analyzer("query_ansj").operator(Operator.AND))
+                        .should(QueryBuilders.termQuery("deliverAddress.number", deliverAddress.toLowerCase()))
+                        .should(QueryBuilders.matchQuery("deliverAddress.letter", deliverAddress.toLowerCase()).operator(Operator.AND))
+                qb = qb.must(JoinQueryBuilders.hasChildQuery(ESKeys.ES_DELIVER_ORDER_DELIVERY_INFO_TYPE, qbDeliverAddress, ScoreMode.None))
             }
             return this
         }
 
-        ESConditionBuilder byPlatform() {
-            if (ERPUtils.mapContainKey(searchData, "incomePlatformId")) {
-                long incomePlatformId = searchData.getLong("incomePlatformId")
-                //这里不管是否大于0,都查询
-                qb = qb.must(QueryBuilders.termQuery("incomePlatformId", incomePlatformId))
-            }
-
-            if (ERPUtils.mapContainKey(searchData, "incomePlatformOrderCode")) {
-                String incomePlatformOrderCode = searchData.getString("incomePlatformOrderCode")
-                qb = qb.must(QueryBuilders.termQuery("incomePlatformOrderCode.raw", incomePlatformOrderCode))
+        /**
+         * 主表为order,查子表的查itemName
+         * @return 查询构造器
+         */
+        ESConditionBuilder byItemName_QuerySlave() {
+            if (ERPUtils.mapContainKey(searchData, "itemName")) {
+                String itemName = searchData.getString("itemName")
+                BoolQueryBuilder qbItemName = QueryBuilders.boolQuery()
+                        .should(QueryBuilders.matchQuery("itemName", itemName).analyzer("query_ansj").operator(Operator.AND))
+                        .should(QueryBuilders.termQuery("itemName.number", itemName.toLowerCase()))
+                        .should(QueryBuilders.matchQuery("itemName.letter", itemName.toLowerCase()).operator(Operator.AND))
+                qb = qb.must(JoinQueryBuilders.hasChildQuery(ESKeys.ES_DELIVER_ORDER_DETAIL_ITEM_TYPE, qbItemName, ScoreMode.None))
             }
             return this
         }
@@ -534,11 +651,6 @@ class BE_ERP_BusinessOrder_Search implements BusinessExecutor<ProcessSearchOptio
             return this
         }
 
-        ESConditionBuilder byIdClient(long idClient) {
-            qb = qb.must(QueryBuilders.termQuery("idClient", idClient))
-            return this
-        }
-
         ESConditionBuilder byOrderParentQuery(QueryBuilder qbParent) {
             qb = qb.must(JoinQueryBuilders.hasParentQuery(ESKeys.ES_DELIVER_BUSINESS_ORDER_TYPE, qbParent, false))
             return this

+ 2 - 0
ddCommon/src/main/java/com/dderp/common/datas/ESKeys.java

@@ -223,6 +223,8 @@ public class ESKeys {
     public static final String ES_DELIVER_ORDER_DELIVERY_INFO_TYPE = "orderdeliveryinfo";
     public static final String ES_DELIVER_ORDER_FINANCES_TYPE = "orderfinances";
     public static final String ES_DELIVER_ORDER_DETAIL_ITEM_TYPE = "orderdetailitem";
+
+    public static final String ES_DELIVER_ORDER_RIDER_ITEM_TYPE = "orderrideritem";
     public static final String ES_DELIVER_ORDER_AFTER_SALE_BILL_TYPE = "orderaftersalebill";
     //endregion
 

+ 12 - 0
ddCommon/src/main/java/com/dderp/common/entity/order/BusinessOrder.java

@@ -94,6 +94,10 @@ public class BusinessOrder extends BaseEntity {
     @Comment("配送平台名称")
     private String outGoingPlatformName;
 
+    @RColumn("outgoingplatformordercode")
+    @Comment("配送平台订单编号")
+    private String outGoingPlatformOrderCode;
+
     @RColumn("voidflagin")
     @Comment("来源平台的退款标记")
     private int voidFlagIn;
@@ -266,6 +270,14 @@ public class BusinessOrder extends BaseEntity {
         this.outGoingPlatformName = outGoingPlatformName;
     }
 
+    public String getOutGoingPlatformOrderCode() {
+        return outGoingPlatformOrderCode;
+    }
+
+    public void setOutGoingPlatformOrderCode(String outGoingPlatformOrderCode) {
+        this.outGoingPlatformOrderCode = outGoingPlatformOrderCode;
+    }
+
     public int getVoidFlagIn() {
         return voidFlagIn;
     }

+ 0 - 7
ddCommon/src/main/java/com/dderp/common/entity/site/ERPTokenUser.java

@@ -69,13 +69,6 @@ public class ERPTokenUser {
         this.userFrom = TokenUserFrom.PC_ADMIN.getValue();
     }
 
-    public ERPTokenUser(StoreInfo storeInfo) {
-        this.id = storeInfo.getId();
-        this.userName = storeInfo.getStoreName();
-        this.account = storeInfo.getLoginAccount();
-        this.userFrom = TokenUserFrom.PC_STORE_ADMIN.getValue();
-    }
-
     public <T extends TokenUserData> ERPTokenUser(T userInfo) {
         this.id = userInfo.getId();
         this.deptId = userInfo.getDeptId();

+ 28 - 1
ddCommon/src/main/java/com/dderp/common/entity/store/StoreInfo.java

@@ -1,7 +1,9 @@
 package com.dderp.common.entity.store;
 
+import com.dderp.common.datas.TokenUserFrom;
 import com.dderp.common.entity.base.BaseEntity;
 import com.dderp.common.entity.geo.GeoPoiLocation;
+import com.dderp.common.entity.site.TokenUserData;
 import com.dderp.common.entity.system.LoginUser;
 import com.sweetfish.util.Comment;
 import org.apache.commons.lang3.StringUtils;
@@ -13,7 +15,8 @@ import java.util.List;
 /**
  * 门店档案
  */
-public class StoreInfo extends BaseEntity {
+public class StoreInfo extends BaseEntity implements TokenUserData {
+
     @RColumn("id")
     private long id;
 
@@ -116,6 +119,30 @@ public class StoreInfo extends BaseEntity {
         return id;
     }
 
+    public long getDeptId() {
+        return 0L;
+    }
+
+    public String getUserName() {
+        return storeName;
+    }
+
+    public String getAccount() {
+        return loginAccount;
+    }
+
+    public String getDeptName() {
+        return "";
+    }
+
+    public int getUserFrom() {
+        return TokenUserFrom.PC_STORE_ADMIN.getValue();
+    }
+
+    public long getIdBindOrg() {
+        return id;
+    }
+
     public void setId(long id) {
         this.id = id;
     }

+ 2 - 1
ddWebCore/src/main/java/com/dderp/webcore/rest/flycat/OrderRest.java

@@ -33,6 +33,7 @@ public class OrderRest extends BaseService {
 
     @Resource
     OrderSearchService orderSearchService;
+
     @RestMapping(name = "callOrder", auth = true, sort = 1, logging = 4, comment = "订单接口", methods = {"POST"})
     public CompletableFuture<InvokeCallResult> callOrder(
             @RestBody(comment = "提交数据") InvokeCallParams callParams,
@@ -50,7 +51,7 @@ public class OrderRest extends BaseService {
         );
     }
 
-    @RestMapping(name = "queryOrderList", auth = true, sort = 1, comment = "获取订单列表", methods = {"GET", "POST"})
+    @RestMapping(name = "queryOrderList", auth = true, sort = 2, comment = "获取订单列表", methods = {"GET", "POST"})
     @WebApiBean(result = true, type = BusinessOrder.class)
     public CompletableFuture<RMap> queryOrderList(
             @RestParam(name = "params", comment = "搜索内容", required = false) RMap searchData,