Commit 15988601 by guojx

竞赛单项和赛区接口

parent f127c67f
package com.gic.haoban.manage.web.controller.data;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.clerk.api.dto.AuthorizedUser;
import com.gic.commons.util.EntityUtil;
import com.gic.commons.web.qo.PageQo;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.enterprise.api.dto.StoreWidgetDTO;
import com.gic.enterprise.api.dto.rank.StoreRankAreaDTO;
import com.gic.enterprise.api.dto.rank.StoreRankIndexDTO;
import com.gic.enterprise.api.service.StoreWidgetService;
import com.gic.enterprise.api.service.rank.StoreRankApiService;
import com.gic.enterprise.service.CustomSettingApiService;
import com.gic.haoban.manage.web.vo.rank.IndexVO;
import com.gic.haoban.manage.web.vo.rank.StoreRankAreaVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.*;
import java.util.stream.Collectors;
/**
* 单项排行榜
* @Author guojx
* @Date 2023/12/28 14:14
*/
@Controller
@RequestMapping("store-rank")
@Slf4j
public class StoreRankController {
@Autowired
private StoreRankApiService storeRankApiService;
@Autowired
private CustomSettingApiService customSettingApiService;
@Autowired
private StoreWidgetService storeWidgetService;
public static final String RANK_INDEX_DB_NAME = "tab_store_pk_index_dict";
public static final String ORDER_FIELD = "custom_order_field_name";
public static final String ORDER_FIELD_DESC = "custom_order_field_name_desc";
/**
* 企业竞赛单项
* @param enterpriseId
* @return
*/
@RequestMapping(value = "sales-structure")
@ResponseBody
public RestResponse<List<IndexVO>> salesStructure(String enterpriseId) {
Map<String, Object> queryMap = new HashMap<>();
queryMap.put(ORDER_FIELD, "indexSort");
queryMap.put(ORDER_FIELD_DESC, 1);
Page<JSONObject> page = customSettingApiService.page(RANK_INDEX_DB_NAME, queryMap, 1, 100).getResult();
List<JSONObject> list = page.getResult();
List<IndexVO> indexList = JSON.parseArray(JSON.toJSONString(list), IndexVO.class);
List<StoreRankIndexDTO> enterpriseIndexList = storeRankApiService.listStoreRankIndex(enterpriseId);
if (CollectionUtils.isEmpty(enterpriseIndexList)) {
return RestResponse.successResult(Collections.emptyList());
}
Set<String> map = indexList.stream().map(e -> e.getIndexCode()).collect(Collectors.toSet());
indexList = indexList.stream().filter(e -> map.contains(e.getIndexCode())).collect(Collectors.toList());
return RestResponse.successResult(indexList);
}
/**
* 赛区列表
* @param pageQo
* @param indexCode
* @return
*/
@RequestMapping("list-store-rank-area")
@ResponseBody
public RestResponse<Page<StoreRankAreaVO>> listStoreRankArea(PageQo pageQo, String enterpriseId, String indexCode) {
Page<StoreRankAreaDTO> page = storeRankApiService
.pageStoreRankArea(enterpriseId, indexCode, null, null, pageQo.getBasePageInfo());
Page<StoreRankAreaVO> voPage = EntityUtil.changeEntityNew(Page.class, page);
List<StoreRankAreaVO> voList = EntityUtil.changeEntityListNew(StoreRankAreaVO.class, page.getResult());
if (CollectionUtils.isNotEmpty(voList)) {
for (StoreRankAreaVO vo : voList) {
StoreWidgetDTO storeWidgetDTO = storeWidgetService.getStoreWidgetBykey(vo.getStoreWidgetId());
if (storeWidgetDTO != null) {
//0:所有门店 1:门店类型 2:门店标签 3:门店区域 4:门店分组 5:部分门店
Integer selectType = storeWidgetDTO.getSelectType();
String areaName;
switch (selectType) {
case 0:
areaName = "所有门店";
break;
case 1:
areaName = "门店类型";
break;
case 2:
areaName = "门店标签";
break;
case 3:
areaName = "门店区域";
break;
case 4:
areaName = "门店分组";
break;
case 5:
areaName = "部分门店";
break;
default:
areaName = "未知";
}
vo.setAreaName(areaName);
}
}
}
voPage.setResult(voList);
return RestResponse.successResult(voPage);
}
}
package com.gic.haoban.manage.web.vo.rank;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import java.io.Serializable;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author guojx
* @Date 2023/12/25 9:56
*/
@Data
public class IndexVO implements Serializable {
private String indexCode;
private String indexName;
private String indexExplain;
/**
* 前端使用:指标说明:若指标注释中有需要说明的
*/
private List<String> indexRemarkList;
/**
* 前端使用:指标例子
*/
private List<String> indexExampleList;
/**
* 指标说明:若指标注释中有需要说明的,英文分号隔开,可能多个。
*/
private String indexRemark;
/**
* 指标例子: 英文分号隔开,可能多个
*/
private String indexExample;
/**
* yapi文档上的驼峰字段名称
*/
private String apiColName;
/**
* 观云台原指标code
*/
private String itemId;
public List<String> getIndexRemarkList() {
if (StringUtils.isNotBlank(indexRemark)) {
return Arrays.stream(indexRemark.split(";")).collect(Collectors.toList());
}
return indexRemarkList;
}
public List<String> getIndexExampleList() {
if (StringUtils.isNotBlank(indexExample)) {
return Arrays.stream(indexExample.split(";")).collect(Collectors.toList());
}
return indexExampleList;
}
}
package com.gic.haoban.manage.web.vo.rank;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @Author guojx
* @Date 2023/12/25 15:44
*/
@Data
public class StoreRankAreaVO implements Serializable {
private String competitionAreaId;
/**
* 赛区范围
*/
private String areaName;
private String indexCode;
/**
* 赛区名称
*/
private String name;
/**
* 是否显示指标(0:否,1:是)
*/
private Integer showIndex;
/**
* 是否固化门店(0:否,1:是)
*/
private Integer fixedStore;
/**
* 管辖门店控件id
*/
private String storeWidgetId;
private String creatorUserId;
private String creatorName;
private Date createTime;
private Date updateTime;
private Integer storeCount;
}
......@@ -167,4 +167,7 @@
<dubbo:reference id="enterpriseChannelApiService" interface="com.gic.enterprise.api.service.EnterpriseChannelApiService" timeout="10000" retries="0" check="false"/>
<dubbo:reference id="storeRankApiService" interface="com.gic.enterprise.api.service.rank.StoreRankApiService" timeout="100000" retries="0" check="false" />
</beans>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment