package com.dderp.business.service; import com.dderp.business.dao.StoreDao; import com.dderp.common.api.NoSqlKeysService; import com.dderp.common.api.PlatformService; import com.dderp.common.api.StoreService; import com.dderp.common.base.BaseService; import com.dderp.common.datas.ESKeys; import com.dderp.common.datas.business.PlatformType; import com.dderp.common.entity.platform.PlatformInfo; import com.dderp.common.entity.site.ERPTokenUser; import com.dderp.common.entity.store.*; import com.dderp.common.tool.ERPUtils; import com.dySweetFishPlugin.elasticsearch.ESClient; import com.dySweetFishPlugin.sql.TableIdService; import com.dySweetFishPlugin.sql.dao.TunaService; import com.sweetfish.convert.json.JsonConvert; import com.sweetfish.service.Local; import com.sweetfish.service.RetResult; import com.sweetfish.source.PageFlipper; import com.sweetfish.util.AnyValue; import com.sweetfish.util.AutoLoad; import com.sweetfish.util.ResourceType; import org.apache.commons.lang3.StringUtils; import org.elasticsearch.action.DocWriteResponse; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.action.support.WriteRequest; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.Operator; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.sort.SortBuilders; import org.elasticsearch.search.sort.SortOrder; import org.rex.RMap; import javax.annotation.Resource; import java.util.List; @AutoLoad(value = false) @Local @ResourceType(StoreService.class) public class StoreServiceImpl extends BaseService implements StoreService { @Resource private ESClient esClient; @Resource private JsonConvert jsonConvert; @Resource private NoSqlKeysService keysService; @Resource private TableIdService tableIdService; @Resource private TunaService tunaService; private StoreDao storeDao; @Override public void start(AnyValue config) { super.start(config); storeDao = tunaService.generate(StoreDao.class); } @Override public List queryStoreBrandList(RMap params, PageFlipper pageFlipper, long supplierCode) { List storeBrandList = searchESList(esClient, jsonConvert, StoreBrand.class, null, ((sd) -> { BoolQueryBuilder qb = QueryBuilders.boolQuery(); qb = qb.must(QueryBuilders.typeQuery(ESKeys.ES_DELIVER_STORE_BRAND_INDEX)); if (ERPUtils.mapContainKey(params, "brandName")) { String platformName = params.getString("brandName"); BoolQueryBuilder qbPlatformName = QueryBuilders.boolQuery() .should(QueryBuilders.matchQuery("brandName", platformName).analyzer("query_ansj").operator(Operator.AND)) .should(QueryBuilders.termQuery("brandName.number", platformName.toLowerCase())) .should(QueryBuilders.matchQuery("brandName.letter", platformName.toLowerCase()).operator(Operator.AND)); qb = qb.must(qbPlatformName); } if (ERPUtils.mapContainKey(params, "voidFlag")) { qb = qb.must(QueryBuilders.termQuery("voidFlag", params.getInt("voidFlag"))); } return qb; }), keysService.getESKey(ESKeys.ES_DELIVER_STORE_BRAND_TYPE, supplierCode), (() -> SortBuilders.fieldSort("id").order(SortOrder.DESC))); return storeBrandList; } @Override public StoreBrand getStoreBrand(long id, long supplierCode) { return this.getESOneInfo(esClient, jsonConvert, StoreBrand.class, String.valueOf(id), keysService.getESKey(ESKeys.ES_DELIVER_STORE_BRAND_INDEX, supplierCode), ESKeys.ES_DELIVER_STORE_BRAND_TYPE, null); } @Override public RetResult addStoreBrand(StoreBrand storeBrand, ERPTokenUser currentUser, String dataSourceId, long supplierCode) { if (StringUtils.isBlank(storeBrand.getBrandName())) return RetResult.errorT().retinfo("门店品牌名称不可为空"); //先查一下有没有重名的平台信息 StoreBrand esInfo = this.getESOneInfo(esClient, jsonConvert, StoreBrand.class, (a) -> { BoolQueryBuilder qb = QueryBuilders.boolQuery().must(QueryBuilders.typeQuery(ESKeys.ES_DELIVER_STORE_BRAND_TYPE)); qb.must(QueryBuilders.termQuery("brandName.raw", storeBrand.getBrandName())); return qb; }, keysService.getESKey(ESKeys.ES_DELIVER_STORE_BRAND_INDEX, supplierCode), null); if (esInfo != null) return RetResult.errorT().retinfo("已存在同名的门店品牌"); storeBrand.setId(tableIdService.getTableIdMulti("tbStoreBrand.id", 1, dataSourceId, String.valueOf(supplierCode))); StoreBrand.create(storeBrand, currentUser.getId()); IndexResponse itemResponse = esClient.getClient() .prepareIndex(keysService.getESKey(ESKeys.ES_DELIVER_STORE_BRAND_INDEX, supplierCode), ESKeys.ES_DELIVER_STORE_BRAND_TYPE) .setId(String.valueOf(storeBrand.getId())) .setSource(jsonConvert.convertTo(storeBrand), XContentType.JSON) .setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE) .get(); if (itemResponse.getResult() == DocWriteResponse.Result.CREATED) { storeDao.addStoreBrand(storeBrand, dataSourceId, supplierCode); } else { return RetResult.errorT().retinfo("创建平台档案失败"); } return RetResult.successT().result(storeBrand); } @Override public RetResult uploadBrandLogo(long idStoreBrand, ERPTokenUser currentUser, String dataSourceId, long supplierCode) { return null; } @Override public RetResult updateStoreBrand(StoreBrand storeBrand, ERPTokenUser currentUser, String dataSourceId, long supplierCode) { return null; } @Override public RetResult voidStoreBrand(StoreBrand storeBrand, ERPTokenUser currentUser, String dataSourceId, long supplierCode) { return null; } @Override public List queryViewStoreInfo(RMap params, PageFlipper pageFlipper, long supplierCode) { return null; } @Override public ViewStoreInfo getViewStoreInfo(long idStore, long supplierCode, int withInvoice) { return null; } @Override public RetResult addStoreInfo(StoreInfo storeInfo, ERPTokenUser currentUser, String dataSourceId, long supplierCode) { return null; } @Override public RetResult configStoreInvoiceInfo(StoreInvoiceInfo invoiceInfo, int enableInvoice, ERPTokenUser currentUser, String dataSourceId, long supplierCode) { return null; } @Override public RetResult updateStoreInfo(StoreInfo storeInfo, ERPTokenUser currentUser, String dataSourceId, long supplierCode) { return null; } @Override public RetResult voidStoreInfo(StoreInfo storeInfo, ERPTokenUser currentUser, String dataSourceId, long supplierCode) { return null; } @Override public RetResult addStorePlatform(StorePlatform storePlatform, ERPTokenUser currentUser, String dataSourceId, long supplierCode) { return null; } @Override public RetResult configStorePlatform(StorePlatform storePlatform, ERPTokenUser currentUser, String dataSourceId, long supplierCode) { return null; } }