@ -1,17 +1,33 @@
package com.ms.api.service.impl ;
import java.util.HashMap ;
import cn.hutool.core.date.DateUtil ;
import cn.hutool.core.util.ObjectUtil ;
import com.ms.api.consts.DsOrderConst ;
import com.ms.api.consts.TblConst ;
import cn.hutool.core.util.StrUtil ;
import com.alibaba.fastjson.JSONObject ;
import com.doudian.open.api.order_BatchSearchIndex.OrderBatchSearchIndexRequest ;
import com.doudian.open.api.order_BatchSearchIndex.data.OrderBatchSearchIndexData ;
import com.doudian.open.api.order_BatchSearchIndex.data.PlainToEncryptIndexListItem ;
import com.doudian.open.api.order_BatchSearchIndex.param.OrderBatchSearchIndexParam ;
import com.doudian.open.api.order_BatchSearchIndex.param.PlainTextListItem ;
import com.ms.api.common.Pager ;
import com.ms.api.consts.* ;
import com.ms.api.dto.order.PurchaseSettingDTO ;
import com.ms.api.dto.order.SearchDsOrderFilterDTO ;
import com.ms.api.service.PurchaseOrderService ;
import com.ms.dal.entity.PurchaseOrder ;
import com.ms.dal.mapper.PurchaseOrderMapper ;
import com.ms.api.service.ShopService ;
import com.ms.api.tool.CommonTool ;
import com.ms.api.tool.PurchaseTool ;
import com.ms.api.util.DdRequestUtil ;
import com.ms.dal.bo.PurchaseOrderBO ;
import com.ms.dal.entity.* ;
import com.ms.dal.mapper.* ;
import org.apache.commons.lang3.StringUtils ;
import org.springframework.beans.factory.annotation.Autowired ;
import org.springframework.stereotype.Service ;
import java.util.* ;
import java.util.stream.Collectors ;
/ * *
*
* /
@ -21,6 +37,26 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
@Autowired
private PurchaseOrderMapper purchaseOrderMapper ;
@Autowired
private OpOrderChildMapper opOrderChildMapper ;
@Autowired
private OpOrderMapper opOrderMapper ;
@Autowired
private OpOrderEncryptIndexMapper opOrderEncryptIndexMapper ;
@Autowired
private PurchaseOrderItemMapper purchaseOrderItemMapper ;
@Autowired
private PurchaseOrderSettingMapper purchaseOrderSettingMapper ;
@Autowired
private PurchaseSettingMapper purchaseSettingMapper ;
@Autowired
private ShopService shopService ;
@Override
public int deleteByPrimaryKey ( Long id ) {
return purchaseOrderMapper . deleteByPrimaryKey ( id ) ;
@ -51,15 +87,69 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
return purchaseOrderMapper . updateByPrimaryKey ( record ) ;
}
public void searchDsOrderList ( SearchDsOrderFilterDTO params ) {
@Override
public Pager < OpOrder > searchDsOrderList ( String shopId , Integer page , Integer pageSize , SearchDsOrderFilterDTO filter , Boolean isEnsconceString , Boolean needOutstorageResult ) {
List < String > shopIds = new ArrayList < > ( ) ;
if ( ObjectUtil . isNotEmpty ( filter . getAuthShopIds ( ) ) ) {
shopIds = CommonTool . convertValToArray ( filter . getAuthShopIds ( ) ) ;
} else {
shopIds . add ( shopId ) ;
}
Pager < String > orderIdPage = searchDsOrderIds ( filter , Collections . singletonList ( shopId ) , page , pageSize ) ;
Pager < OpOrder > resultPage = new Pager < OpOrder > ( ) ;
resultPage . setPage ( page ) ;
resultPage . setPageSize ( pageSize ) ;
resultPage . setTotal ( orderIdPage . getTotal ( ) ) ;
if ( ObjectUtil . isEmpty ( orderIdPage . getData ( ) ) ) {
resultPage . setData ( new ArrayList < > ( ) ) ;
return resultPage ;
}
List < OpOrder > orderList = opOrderMapper . selectById ( shopIds , orderIdPage . getData ( ) ) ;
if ( ObjectUtil . isEmpty ( orderList ) ) {
resultPage . setData ( orderList ) ;
return resultPage ;
}
List < String > orderIds = orderList . stream ( ) . map ( OpOrder : : getOrderId ) . collect ( Collectors . toList ( ) ) ;
Map < String , List < PurchaseOrderBO > > orderIdAndPurchaseOrdersMap = getOrderIdAndPurchaseOrdersMap ( shopIds , orderIds , filter , true , false ) ;
Map < Long , Shop > shopMap = shopService . getShopByIds ( shopIds ) . stream ( ) . collect ( Collectors . toMap ( Shop : : getShopId , x - > x ) ) ;
Map < String , String > orderIdAndSameOrderIdsMap = new HashMap < > ( ) ;
// if (ObjectUtil.isNotNull(filter.getIsShowSameReceiverOrder()) && filter.getIsShowSameReceiverOrder()) {
// orderIdAndSameOrderIdsMap = getOrderIdAndSameOrderIdsMap(shopId, orderIds);
// }
// returnOrders = getOrderAndPurchaseOrdersMap(shopId, shopIds, orderIds, orderList,
// orderIdAndPurchaseOrdersMap, shopIdAndShopInfoMap, orderIdAndSameOrderIdsMap, isEnsconceString, true);
//
// if (needOutstorageResult) {
// appendOrderOutstorageResultToOrders(shopIds, returnOrders, true);
// }
resultPage . setData ( orderList ) ;
return resultPage ;
}
public void searchDsOrderIds ( SearchDsOrderFilterDTO params ) {
public Pager < String > searchDsOrderIds ( SearchDsOrderFilterDTO filter , List < String > shopIds , Integer page , Integer pageSize ) {
String dsTbl = TblConst . op_order_ds ;
JSONObject searchDsOrderListCondition = getSearchDsOrderListCondition ( filter , dsTbl , shopIds ) ;
String masterTbl = searchDsOrderListCondition . getString ( "masterTbl" ) ;
String masterTblAlias = searchDsOrderListCondition . getString ( "masterTblAlias" ) ;
String whereConditions = searchDsOrderListCondition . getString ( "whereConditions" ) ;
String distinctStr = searchDsOrderListCondition . getString ( "distinctStr" ) ;
String joinTables = searchDsOrderListCondition . getString ( "joinTables" ) ;
Integer total = purchaseOrderMapper . selectOrderIdsCount ( distinctStr , masterTblAlias , masterTbl , joinTables , shopIds , whereConditions ) ;
List < String > orderIdList = purchaseOrderMapper . selectOrderIds ( distinctStr , masterTblAlias , masterTbl , joinTables , shopIds , whereConditions , ( page - 1 ) * pageSize , pageSize ) ;
Pager < String > pager = new Pager < String > ( ) ;
pager . setPage ( page ) ;
pager . setPageSize ( pageSize ) ;
pager . setData ( orderIdList ) ;
pager . setTotal ( total ) ;
return pager ;
}
public void getSearchDsOrderListCondition ( SearchDsOrderFilterDTO filter , String dsTbl ) {
public JSONObject getSearchDsOrderListCondition ( SearchDsOrderFilterDTO filter , String dsTbl , List < String > shopIds ) {
String opOrderExtTbl = TblConst . op_order_ext ;
String purchaseOrderTbl = TblConst . purchase_order ;
@ -75,31 +165,383 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
String masterTblAlias = "" ;
StringBuilder whereConditions = new StringBuilder ( ) ;
HashMap < String , String > joinTables = new HashMap < > ( ) ;
StringBuilder distinctStr = new StringBuilder ( ) ;
String distinctStr = "" ;
List < String > orderIds = new ArrayList < > ( ) ;
if ( ObjectUtil . isNotEmpty ( filter . getDsOrderRelateState ( ) ) ) {
filter . setDsPurchaseStatus ( null ) ;
masterTbl = ooahTbl ;
masterTblAlias = " o";
whereConditions . append ( String . format ( " AND ol.`order_id` is null " ) ) ;
joinTables . put ( opOrderLtaoTbl , String . format ( " left join %s ol on o.order_id = ol.order_id", opOrderLtaoTbl ) ) ;
masterTblAlias = " o";
whereConditions . append ( " AND ol.`order_id` is null " ) ;
joinTables . put ( opOrderLtaoTbl , String . format ( " left join %s ol on o.order_id = ol.order_id", opOrderLtaoTbl ) ) ;
} else {
masterTbl = dsTbl ;
masterTblAlias = " 'ood' ";
masterTblAlias = " ood ";
}
if ( DsOrderConst . DS_ORDER_RELATE_STATE_UNRELATED . equals ( filter . getDsOrderRelateState ( ) ) ) {
whereConditions . append ( String . format ( " AND (ood.`order_id` is null or ood.ds_relation_source_status in (%s,%s )) " , DsOrderConst . _DS_RELATION_SOURCE_STATUS_PART_PRODUCT , DsOrderConst . _DS_RELATION_SOURCE_STATUS_NONE_PRODUCT ) ) ;
}
if ( ObjectUtil . isNotEmpty ( filter . getOrderStartTime ( ) ) ) {
whereConditions . append ( String . format ( " AND %s.`gmt_create_time` >= %s", masterTblAlias , filter. getOrderStartTime ( ) ) ) ;
whereConditions . append ( String . format ( " AND %s.`gmt_create_time` >= ' %s' ", masterTblAlias , DateUtil. formatDateTime ( filter. getOrderStartTime ( ) ) ) ) ;
}
if ( ObjectUtil . isNotEmpty ( filter . getOrderEndTime ( ) ) ) {
whereConditions . append ( String . format ( " AND %s.`gmt_create_time` <= %s", masterTblAlias , filter. getOrderEndTime ( ) ) ) ;
whereConditions . append ( String . format ( " AND %s.`gmt_create_time` <= ' %s' ", masterTblAlias , DateUtil. formatDateTime ( filter. getOrderEndTime ( ) ) ) ) ;
}
if ( ObjectUtil . isNotEmpty ( filter . getOrderStatus ( ) ) ) {
whereConditions . append ( String . format ( "AND %s.`gmt_create_time` <= %s" , masterTblAlias , filter . getOrderEndTime ( ) ) ) ;
whereConditions . append ( String . format ( " AND %s.`order_status` IN (%s)" , masterTblAlias , CommonTool . intToSQLIN ( filter . getOrderStatus ( ) ) ) ) ;
}
if ( ObjectUtil . isNotEmpty ( filter . getDsWaitPayStatus ( ) ) ) {
whereConditions . append ( String . format ( " AND ood.ds_wait_pay_status IN (%s)" , CommonTool . intToSQLIN ( filter . getDsWaitPayStatus ( ) ) ) ) ;
}
if ( ObjectUtil . isNotEmpty ( filter . getPurchaseOrderStatus ( ) ) ) {
whereConditions . append ( String . format ( " AND ood.ds_purchase_status IN (%s)" , CommonTool . stringToSQLIN ( CommonTool . convertValToArray ( filter . getPurchaseOrderStatus ( ) ) ) ) ) ;
}
if ( ObjectUtil . isNotEmpty ( filter . getOrderIds ( ) ) ) {
whereConditions . append ( String . format ( " AND %s.`order_status` IN (%s)" , masterTblAlias , CommonTool . stringToSQLIN ( filter . getOrderIds ( ) ) ) ) ;
}
if ( ObjectUtil . isNotEmpty ( filter . getPurchaseOrderSn ( ) ) ) {
whereConditions . append ( String . format ( " AND po.`purchase_order_sn` IN (%s)" , CommonTool . stringToSQLIN ( filter . getPurchaseOrderSn ( ) ) ) ) ;
joinTables . put ( purchaseOrderTbl , String . format ( " inner join %s po on po.order_id = %s.order_id" , purchaseOrderTbl , masterTblAlias ) ) ;
}
if ( ObjectUtil . isNotEmpty ( filter . getPurchaseOrderStatus ( ) ) ) {
whereConditions . append ( String . format ( " AND po.`purchase_order_status` IN (%s)" , filter . getPurchaseOrderStatus ( ) ) ) ;
joinTables . put ( purchaseOrderTbl , String . format ( " inner join %s po on po.order_id = %s.order_id" , purchaseOrderTbl , masterTblAlias ) ) ;
}
if ( ObjectUtil . isNotEmpty ( filter . getPurchaseStartTime ( ) ) ) {
whereConditions . append ( String . format ( " AND po.`purchase_order_start_time` >= '%s'" , DateUtil . formatDateTime ( filter . getPurchaseStartTime ( ) ) ) ) ;
joinTables . put ( purchaseOrderTbl , String . format ( " LEFT JOIN %s po ON po.`order_id` = %s.`order_id`" , purchaseOrderTbl , masterTblAlias ) ) ;
}
if ( ObjectUtil . isNotEmpty ( filter . getPurchaseEndTime ( ) ) ) {
whereConditions . append ( String . format ( " AND po.`purchase_order_start_time` <= '%s'" , DateUtil . formatDateTime ( filter . getPurchaseEndTime ( ) ) ) ) ;
joinTables . put ( purchaseOrderTbl , String . format ( " LEFT JOIN %s po ON po.`order_id` = %s.`order_id`" , purchaseOrderTbl , masterTblAlias ) ) ;
}
if ( ObjectUtil . isNotEmpty ( filter . getDelaySendStatus ( ) ) ) {
Date date = new Date ( ) ;
if ( filter . getDelaySendStatus ( ) . toString ( ) . equals ( OrderConst . DELAY_SEND_STATUS_WILL_DELAY_SEND ) ) {
Date willDelayTime = DateUtil . offsetHour ( date , 24 ) ;
whereConditions . append ( String . format ( " AND ooc.`gmt_exp_ship_time` > %s AND ooc.`gmt_exp_ship_time` < '%s'" , date , DateUtil . formatDateTime ( willDelayTime ) ) ) ;
joinTables . put ( oocTbl , String . format ( " LEFT JOIN %s ooc ON ooc.`order_id` = %s.`order_id`" , oocTbl , masterTblAlias ) ) ;
} else if ( filter . getDelaySendStatus ( ) . toString ( ) . equals ( OrderConst . DELAY_SEND_STATUS_HAS_DELAY_SEND ) ) {
whereConditions . append ( String . format ( " AND ooc.`gmt_exp_ship_time` < '%s'" , DateUtil . formatDateTime ( date ) ) ) ;
joinTables . put ( oocTbl , String . format ( " LEFT JOIN %s ooc ON ooc.`order_id` = %s.`order_id`" , oocTbl , masterTblAlias ) ) ;
}
}
if ( ObjectUtil . isNotEmpty ( filter . getPurchaseOrderSeller ( ) ) ) {
whereConditions . append ( String . format ( " AND po.`purchase_order_seller` = '%s' " , filter . getPurchaseOrderSeller ( ) ) ) ;
joinTables . put ( purchaseOrderTbl , String . format ( " LEFT JOIN %s po ON po.`order_id` = %s.`order_id`" , purchaseOrderTbl , masterTblAlias ) ) ;
}
if ( ObjectUtil . isNotEmpty ( filter . getPurchaseOrderStatus ( ) ) ) {
whereConditions . append ( String . format ( " AND po.`purchase_order_status` = '%s'" , filter . getPurchaseOrderStatus ( ) ) ) ;
joinTables . put ( purchaseOrderTbl , String . format ( " LEFT JOIN %s po ON po.`order_id` = %s.`order_id`" , purchaseOrderTbl , masterTblAlias ) ) ;
}
if ( StrUtil . isNotBlank ( filter . getSkuName ( ) ) ) {
whereConditions . append ( String . format ( " AND ooc.`product_name` like %s" , CommonTool . stringToSQLLike ( filter . getSkuName ( ) ) ) ) ;
joinTables . put ( oocTbl , String . format ( "JOIN %s ooc ON ooc.`order_id` = %s.`order_id`" , oocTbl , masterTblAlias ) ) ;
}
if ( StrUtil . isNotBlank ( filter . getSkuSubName ( ) ) ) {
whereConditions . append ( String . format ( " AND ooc.`spec_desc` like %s" , CommonTool . stringToSQLLike ( filter . getSkuSubName ( ) ) ) ) ;
joinTables . put ( oocTbl , String . format ( "JOIN %s ooc ON ooc.`order_id` = %s.`order_id`" , oocTbl , masterTblAlias ) ) ;
}
if ( StrUtil . isNotBlank ( filter . getProductId ( ) ) ) {
whereConditions . append ( String . format ( " AND ooc.`product_id` = '%s'" , filter . getProductId ( ) ) ) ;
joinTables . put ( oocTbl , String . format ( "JOIN %s ooc ON ooc.`order_id` = %s.`order_id`" , oocTbl , masterTblAlias ) ) ;
}
if ( StrUtil . isNotBlank ( filter . getBuyerRemark ( ) ) ) {
whereConditions . append ( String . format ( " AND o.`buyer_words` LIKE %s " , CommonTool . stringToSQLLike ( filter . getBuyerRemark ( ) ) ) ) ;
}
if ( StrUtil . isNotBlank ( filter . getSellerRemark ( ) ) ) {
whereConditions . append ( String . format ( " AND o.`seller_words` LIKE %s " , CommonTool . stringToSQLLike ( filter . getSellerRemark ( ) ) ) ) ;
}
if ( StrUtil . isNotBlank ( filter . getSellerRemarkStars ( ) ) ) {
whereConditions . append ( String . format ( " AND o.`seller_remark_stars` IN (%s) " , CommonTool . stringToSQLIN ( CommonTool . convertValToArray ( filter . getSellerRemark ( ) ) ) ) ) ;
}
if ( StrUtil . isNotBlank ( filter . getSellerNote ( ) ) ) {
whereConditions . append ( String . format ( " AND ooe.shop_note like %s " , CommonTool . stringToSQLLike ( filter . getSellerNote ( ) ) ) ) ;
joinTables . put ( opOrderExtTbl , String . format ( " inner join %s ooe on ooe.order_id = %s.order_id" , opOrderExtTbl , masterTblAlias ) ) ;
}
if ( StringUtils . isNumeric ( filter . getHasBuyerRemark ( ) ) ) {
boolean index = Integer . parseInt ( filter . getHasBuyerRemark ( ) ) ! = 0 ;
whereConditions . append ( index ? " AND o.buyer_words != ''" : " AND o.buyer_words = ''" ) ;
}
if ( StringUtils . isNumeric ( filter . getHasSellerRemark ( ) ) ) {
boolean index = Integer . parseInt ( filter . getHasSellerRemark ( ) ) ! = 0 ;
whereConditions . append ( index ? " AND o.seller_words != ''" : " AND o.seller_words = ''" ) ;
}
if ( StringUtils . isNumeric ( filter . getHasSellerNote ( ) ) ) {
boolean index = Integer . parseInt ( filter . getHasSellerNote ( ) ) ! = 0 ;
whereConditions . append ( index ? " AND ooe.shop_note != ''" : " AND ooe.shop_note = ''" ) ;
joinTables . put ( opOrderExtTbl , String . format ( " inner join %s ooe on ooe.order_id = %s.order_id" , opOrderExtTbl , masterTblAlias ) ) ;
}
if ( StrUtil . isNotBlank ( filter . getHasNoRemarks ( ) ) ) {
whereConditions . append ( " AND o.`buyer_words` = '' AND o.`seller_words` = ''" ) ;
}
if ( StrUtil . isNotBlank ( filter . getLogisticsCode ( ) ) ) {
String waybillCodeOrderIds = getOpOrderIdsByWaybillCode ( shopIds , filter . getLogisticsCode ( ) ) ;
orderIds . add ( waybillCodeOrderIds ) ;
}
if ( StrUtil . isNotBlank ( filter . getFullname ( ) ) ) {
List < String > fullnameOrderIds = getOpOrderIdByFullname ( shopIds , filter . getFullname ( ) ) ;
orderIds . addAll ( fullnameOrderIds ) ;
}
if ( StrUtil . isNotBlank ( filter . getMobile ( ) ) ) {
String mobileOrderIds = getOpOrderIdByMobile ( shopIds , filter . getMobile ( ) ) ;
orderIds . add ( mobileOrderIds ) ;
}
if ( ObjectUtil . isNotEmpty ( orderIds ) ) {
whereConditions . append ( String . format ( " AND %s.`order_id` in (%s)" , masterTblAlias , CommonTool . stringToSQLIN ( orderIds ) ) ) ;
}
if ( joinTables . containsKey ( purchaseOrderTbl ) ) {
whereConditions . append ( String . format ( " AND po.`status` = '%s' " , StatusConst . normal ) ) ;
}
if ( ObjectUtil . isNotEmpty ( filter . getIsIsolation ( ) ) ) {
whereConditions . append ( String . format ( " AND ooe.is_isolation = %d " , filter . getIsIsolation ( ) ) ) ;
joinTables . put ( opOrderExtTbl , String . format ( " inner join %s ooe on ooe.order_id = %s.order_id" , opOrderExtTbl , masterTblAlias ) ) ;
}
if ( ObjectUtil . isNotEmpty ( filter . getIsPriorirtyDelivery ( ) ) ) {
whereConditions . append ( String . format ( " and exists(select 1 from %d oopd where oopd.order_id = o.order_id) " , filter . getIsPriorirtyDelivery ( ) ) ) ;
}
if ( ObjectUtil . isNotEmpty ( filter . getHasAfterSale ( ) ) ) {
if ( Objects . equals ( filter . getHasAfterSale ( ) , "yes" ) ) {
joinTables . put ( afsTbl , String . format ( "JOIN %s afs ON afs.`order_id` = %s.`order_id` and afs.shop_id in (%s) and aftersale_status not in (%s)" ,
afsTbl ,
masterTblAlias ,
CommonTool . stringToSQLIN ( shopIds ) ,
CommonTool . intToSQLIN ( AfterSaleConst . getAfterSaleCloseOrCancelStatusList ( ) ) ) ) ;
}
if ( Objects . equals ( filter . getHasAfterSale ( ) , "no" ) ) {
whereConditions . append ( String . format ( " AND NOT EXISTS (select 1 from %s afs WHERE afs.pid = %s.order_id and afs.shop_id in (%s) and aftersale_status not in (%s)) " ,
afsTbl ,
masterTblAlias ,
CommonTool . stringToSQLIN ( shopIds ) ,
CommonTool . intToSQLIN ( AfterSaleConst . getAfterSaleCloseOrCancelStatusList ( ) )
) ) ;
}
}
if ( ObjectUtil . isNotEmpty ( filter . getOrderTags ( ) ) & & OrderConst . ORDER_TAG_RECEIVER_ADDRESS_CHANGED . equals ( filter . getOrderTags ( ) ) ) {
whereConditions . append ( String . format ( " AND EXISTS(select 1 from %s ooah where ooah.order_id = %s.order_id and ooah.shop_id IN (%s)) " ,
ooahTbl ,
masterTblAlias ,
CommonTool . stringToSQLIN ( shopIds ) ) ) ;
}
if ( ObjectUtil . isNotEmpty ( filter . getAfterSaleStatus ( ) ) ) {
whereConditions . append ( String . format ( " AND oocas.after_sale_status IN (%s)) " , CommonTool . stringToSQLIN ( CommonTool . convertValToArray ( filter . getAfterSaleStatus ( ) ) ) ) ) ;
joinTables . put ( opOrderChildAfterSaleTbl , String . format ( " inner join %s oocas on oocas.order_id = %s.order_id" , opOrderChildAfterSaleTbl , masterTblAlias ) ) ;
}
List < String > needDistinctJoinTbls = Arrays . asList ( purchaseOrderTbl , oocTbl , opOrderChildAfterSaleTbl ) ;
distinctStr = ( joinTables . keySet ( ) . stream ( ) . anyMatch ( needDistinctJoinTbls : : contains ) ) ? "distinct" : "" ;
if ( ! Objects . equals ( masterTbl , orderTbl ) & & whereConditions . indexOf ( "o." ) > 0 ) {
joinTables . put ( orderTbl , String . format ( " JOIN %s o ON o.`order_id` = %s.`order_id`" , orderTbl , masterTblAlias ) ) ;
}
if ( ! Objects . equals ( masterTbl , dsTbl ) & & whereConditions . indexOf ( "ood." ) > 0 ) {
joinTables . put ( dsTbl , String . format ( " left join %s ood on ood.order_id = %s.order_id " , dsTbl , masterTblAlias ) ) ;
}
JSONObject result = new JSONObject ( ) ;
result . put ( "masterTbl" , masterTbl ) ;
result . put ( "masterTblAlias" , masterTblAlias ) ;
result . put ( "whereConditions" , whereConditions . toString ( ) ) ;
result . put ( "joinTables" , String . join ( " " , joinTables . values ( ) ) ) ;
result . put ( "distinctStr" , distinctStr ) ;
return result ;
}
public String getOpOrderIdsByWaybillCode ( List < String > shopIds , String waybillCode ) {
return opOrderChildMapper . selectOrderIdByShopIdAndTrackingNo ( shopIds , waybillCode ) ;
}
public List < String > getOpOrderIdByFullname ( List < String > shopIds , String fullname ) {
List < String > list = new ArrayList < > ( ) ;
if ( ObjectUtil . isEmpty ( shopIds ) | | ObjectUtil . isNull ( fullname ) ) {
return list ;
}
String fullnameOrderIds = opOrderMapper . selectOrderIdByShopIdAndFullname ( shopIds , CommonTool . smd5Value ( fullname ) ) ;
String searchIndex = getOrderSearchIndexFromDd ( fullname , OrderConst . SENSITIVE_TYPE_FULLNAME ) ;
String encryptIndexOrderIds = opOrderEncryptIndexMapper . selectOrderIdByShopIdAndFullname ( shopIds , searchIndex ) ;
if ( StrUtil . isNotBlank ( fullnameOrderIds ) ) {
list . add ( fullnameOrderIds ) ;
}
if ( StrUtil . isNotBlank ( encryptIndexOrderIds ) ) {
list . add ( encryptIndexOrderIds ) ;
}
return list ;
}
public String getOpOrderIdByMobile ( List < String > shopIds , String waybillCode ) {
return opOrderChildMapper . selectOrderIdByShopIdAndTrackingNo ( shopIds , waybillCode ) ;
}
public String getOrderSearchIndexFromDd ( String plainText , Integer sensitiveType ) {
if ( StrUtil . isBlank ( plainText ) | | ObjectUtil . isNull ( sensitiveType ) ) {
throw new RuntimeException ( "参数错误" ) ;
}
List < PlainTextListItem > plainList = new ArrayList < PlainTextListItem > ( ) ;
PlainTextListItem item = new PlainTextListItem ( ) ;
item . setPlainText ( plainText ) ;
item . setEncryptType ( sensitiveType ) ;
plainList . add ( item ) ;
Map < String , String > plainTextAndSearchIndexMap = batchGetOrderSearchIndexFromDd ( plainList ) ;
if ( ! plainTextAndSearchIndexMap . containsKey ( plainText ) ) {
throw new RuntimeException ( "获取索引失败" ) ;
}
return plainTextAndSearchIndexMap . get ( plainText ) ;
}
public Map < String , String > batchGetOrderSearchIndexFromDd ( List < PlainTextListItem > plainList ) {
OrderBatchSearchIndexRequest request = new OrderBatchSearchIndexRequest ( ) ;
OrderBatchSearchIndexParam param = request . getParam ( ) ;
param . setPlainTextList ( plainList ) ;
OrderBatchSearchIndexData data = DdRequestUtil . orderBatchSearchIndexRequest ( param ) ;
Map < String , String > plainTextAndSearchIndexMap = new HashMap < > ( ) ;
for ( PlainToEncryptIndexListItem item : data . getPlainToEncryptIndexList ( ) ) {
plainTextAndSearchIndexMap . put ( item . getPlain ( ) , item . getSearchIndex ( ) ) ;
}
return plainTextAndSearchIndexMap ;
}
public Map < String , List < PurchaseOrderBO > > getOrderIdAndPurchaseOrdersMap ( List < String > shopIds ,
List < String > orderIds ,
SearchDsOrderFilterDTO filter ,
boolean needItems ,
boolean needPurchaseSetting ) {
if ( ObjectUtil . isEmpty ( shopIds ) | | ObjectUtil . isEmpty ( orderIds ) ) {
return new HashMap < > ( ) ;
}
StringBuilder where = new StringBuilder ( ) ;
if ( ObjectUtil . isNotEmpty ( filter . getPurchaseStartTime ( ) ) ) {
where . append ( String . format ( " and purchase_order_start_time >= '%s'" , DateUtil . formatDateTime ( filter . getPurchaseStartTime ( ) ) ) ) ;
}
if ( ObjectUtil . isNotEmpty ( filter . getPurchaseEndTime ( ) ) ) {
where . append ( String . format ( " and purchase_order_start_time <= '%s'" , DateUtil . formatDateTime ( filter . getPurchaseEndTime ( ) ) ) ) ;
}
List < PurchaseOrderBO > purchaseOrders = purchaseOrderMapper . selectPurchaseOrders ( shopIds , orderIds , StatusConst . normal , where . toString ( ) ) ;
if ( ObjectUtil . isEmpty ( purchaseOrders ) ) {
return new HashMap < > ( ) ;
}
if ( needItems ) {
List < String > purchaseOrderIds = purchaseOrders . stream ( ) . map ( x - > x . getPurchaseOrderId ( ) . toString ( ) ) . collect ( Collectors . toList ( ) ) ;
Map < Integer , PurchaseOrderItem > purchaseOrderItemsMap = getPurchaseOrderItemsMapByPurchaseOrderIds ( shopIds , purchaseOrderIds , StatusConst . normal ) . stream ( ) . collect ( Collectors . toMap ( PurchaseOrderItem : : getPurchaseOrderId , x - > x ) ) ;
for ( PurchaseOrderBO purchaseOrder : purchaseOrders ) {
if ( purchaseOrderItemsMap . containsKey ( purchaseOrder . getPurchaseOrderId ( ) . intValue ( ) ) ) {
purchaseOrder . setItem ( purchaseOrderItemsMap . get ( purchaseOrder . getPurchaseOrderId ( ) . intValue ( ) ) ) ;
}
}
}
if ( needPurchaseSetting ) {
List < String > purchaseOrderIds = purchaseOrders . stream ( ) . map ( x - > x . getPurchaseOrderId ( ) . toString ( ) ) . collect ( Collectors . toList ( ) ) ;
Map < Integer , PurchaseOrderSetting > purchaseOrderSettingsMap = getPurchaseOrderSettingsMapByPurchaseOrderIds ( shopIds , purchaseOrderIds ) ;
for ( PurchaseOrderBO purchaseOrder : purchaseOrders ) {
if ( purchaseOrderSettingsMap . containsKey ( purchaseOrder . getPurchaseOrderId ( ) . intValue ( ) ) ) {
purchaseOrder . setPurchaseSetting ( purchaseOrderSettingsMap . get ( purchaseOrder . getPurchaseOrderId ( ) . intValue ( ) ) ) ;
}
}
}
// todo 给的源码不包含 attachPurchaseOrderTransitAddressToPurchaseOrders 也没有对应的表 跳过
// if ($needPurchaseOrderTransitAddress) {
// $this->attachPurchaseOrderTransitAddressToPurchaseOrders($purchaseOrders, $shopIds);
// }
return purchaseOrders . stream ( ) . collect ( Collectors . groupingBy ( PurchaseOrderBO : : getOrderId ) ) ;
}
public List < PurchaseOrderItem > getPurchaseOrderItemsMapByPurchaseOrderIds ( List < String > shopIds , List < String > purchaseOrderIds , String status ) {
return purchaseOrderItemMapper . getPurchaseOrderItemsMapByPurchaseOrderIds ( shopIds , purchaseOrderIds , status ) ;
}
public Map < Integer , PurchaseOrderSetting > getPurchaseOrderSettingsMapByPurchaseOrderIds ( List < String > shopIds , List < String > purchaseOrderIds ) {
if ( ObjectUtil . isEmpty ( shopIds ) | | ObjectUtil . isEmpty ( purchaseOrderIds ) ) {
return new HashMap < > ( ) ;
}
List < PurchaseOrderSetting > rows = purchaseOrderSettingMapper . selectByPurchaseOrderIds ( shopIds , purchaseOrderIds ) ;
// TODO: 2023/8/28 java无法反序列化回来 只能抛给前端处理 跳过
// for (PurchaseOrderSetting orderSetting : rows) {
// if ($row['add_consignee_address_suffix_fields']) {
// $row['add_consignee_address_suffix_fields'] = unserialize($row['add_consignee_address_suffix_fields']);
// }
// if ($row['add_consignee_name_suffix_fields']) {
// $row['add_consignee_name_suffix_fields'] = unserialize($row['add_consignee_name_suffix_fields']);
// }
// }
return rows . stream ( ) . collect ( Collectors . toMap ( PurchaseOrderSetting : : getPurchaseOrderId , x - > x ) ) ;
}
public PurchaseSettingDTO getPurchaseSetting ( Long shopId ) {
PurchaseSetting purchaseSetting = purchaseSettingMapper . selectByShopId ( shopId ) ;
// boolean isNewestVersion = purchaseSetting.version = PurchaseOrderConst.CURRENT_PURCHASE_SETTING_VERSION;
Integer isAppendShopRemark ;
Integer isAppendShopNote ;
Integer isAutoFillRemark ;
Integer isAutoFillOrderMemo ;
String appendShopRemarkTpl ;
String appendShopNoteTpl ;
String autoFillRemarkTpl ;
String autoFillOrderMemoTpl ;
if ( purchaseSetting = = null ) {
isAppendShopRemark = 1 ;
isAppendShopNote = 1 ;
isAutoFillRemark = 0 ;
isAutoFillOrderMemo = 0 ;
appendShopRemarkTpl = PurchaseTool . getDefaultAppendVenderRemarkTpl ( ) ;
appendShopNoteTpl = PurchaseTool . getDefaultAppendVenderRemarkTpl ( ) ;
autoFillRemarkTpl = null ;
autoFillOrderMemoTpl = null ;
} else {
isAppendShopRemark = purchaseSetting . getIsAppendShopRemark ( ) ;
isAppendShopNote = purchaseSetting . getIsAppendShopNote ( ) ;
isAutoFillRemark = purchaseSetting . getIsAutoFillRemark ( ) ;
isAutoFillOrderMemo = purchaseSetting . getIsAutoFillOrderMemo ( ) ;
appendShopRemarkTpl = PurchaseTool . removeRemarkMobileTplHashTag ( purchaseSetting . getAppendShopRemarkTpl ( ) ) ;
appendShopNoteTpl = PurchaseTool . removeRemarkMobileTplHashTag ( purchaseSetting . getAppendShopNoteTpl ( ) ) ;
autoFillRemarkTpl = purchaseSetting . getAutoFillRemarkTpl ( ) ;
autoFillOrderMemoTpl = purchaseSetting . getAutoFillOrderMemoTpl ( ) ;
}
PurchaseSettingDTO purchaseSettingDTO = new PurchaseSettingDTO ( ) ;
purchaseSettingDTO . setIsAppendShopRemark ( isAppendShopRemark ) ;
purchaseSettingDTO . setIsAppendShopNote ( isAppendShopNote ) ;
purchaseSettingDTO . setIsAutoFillRemark ( isAutoFillRemark ) ;
purchaseSettingDTO . setIsAutoFillOrderMemo ( isAutoFillOrderMemo ) ;
purchaseSettingDTO . setAppendShopRemarkTpl ( appendShopRemarkTpl ) ;
purchaseSettingDTO . setAppendShopNoteTpl ( appendShopNoteTpl ) ;
purchaseSettingDTO . setAutoFillRemarkTpl ( autoFillRemarkTpl ) ;
purchaseSettingDTO . setAutoFillOrderMemoTpl ( autoFillOrderMemoTpl ) ;
if ( purchaseSetting = = null ) {
savePurchaseSetting ( shopId , purchaseSettingDTO ) ;
}
return purchaseSettingDTO ;
}
public boolean savePurchaseSetting ( Long shopId , PurchaseSettingDTO purchaseSettingDTO ) {
// todo:
return false ;
}
}