Commit 6efd94ee by songyinghui

feat: 好办数据统计

parent 758cb5ce
......@@ -19,16 +19,18 @@ import com.gic.haoban.manage.web.vo.content.statistics.MaterialDataOverviewVO;
import com.gic.haoban.manage.web.vo.content.statistics.MaterialIndexDataVO;
import com.gic.haoban.manage.web.vo.content.statistics.MaterialRealDataVO;
import com.gic.haoban.manage.web.vo.content.statistics.MaterialStoreUsedDataVO;
import com.gic.haoban.manage.web.vo.content.statistics.bo.MaterialTodayDataBO;
import com.gic.haoban.manage.web.vo.content.statistics.report.MaterialPersonalUsedDataVO;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.Collections;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Optional;
......@@ -60,12 +62,14 @@ public class MaterialDataStaticsController {
search.setEnterpriseId(contentMaterialBaseQO.getEnterpriseId());
search.setPublishBeginStartTime(DateUtil.beginOfDay(new Date()));
search.setPublishBeginEndTime(DateUtil.endOfDay(new Date()));
List<String> storeIds = new ArrayList<>();
if (StringUtils.isBlank(contentMaterialBaseQO.getStoreId())) {
// 区经 获取管辖的权限
List<String> storeIds = this.clerkStoreAdaptor.queryClerkStoreIds(contentMaterialBaseQO.getClerkId(), contentMaterialBaseQO.getWxEnterpriseId());
storeIds = this.clerkStoreAdaptor.queryClerkStoreIds(contentMaterialBaseQO.getClerkId(), contentMaterialBaseQO.getWxEnterpriseId());
search.setStoreIdList(storeIds);
} else {
search.setStoreIdList(Collections.singletonList(contentMaterialBaseQO.getStoreId()));
storeIds.add(contentMaterialBaseQO.getStoreId());
search.setStoreIdList(storeIds);
}
BasePageInfo pageInfo = new BasePageInfo();
pageInfo.setPageNum(1);
......@@ -76,17 +80,16 @@ public class MaterialDataStaticsController {
totalMaterialNum = serviceResponse.getResult().getTotalCount();
}
int totalManagerStoreNum = 0;
List<String> storeIds = clerkStoreAdaptor.queryClerkStoreIds(contentMaterialBaseQO.getClerkId(), contentMaterialBaseQO.getWxEnterpriseId());
MaterialIndexDataVO temp = materialDataAdaptor.queryMaterialIndexData(contentMaterialBaseQO.getEnterpriseId(), storeIds);
MaterialTodayDataBO temp = materialDataAdaptor.queryMaterialTodayData(contentMaterialBaseQO.getEnterpriseId(), storeIds);
if (CollectionUtils.isEmpty(storeIds)) {
// 超管
totalMaterialNum = clerkStoreAdaptor.countAdminManagerStore(contentMaterialBaseQO.getClerkId(), contentMaterialBaseQO.getWxEnterpriseId());
}
MaterialIndexDataVO indexDataVO = MaterialIndexDataVO.builder()
.newMaterialNum(totalMaterialNum)
.useMaterialClerkNum(temp.getUseMaterialClerkNum())
.unUseMaterialClerkNum(temp.getUnUseMaterialClerkNum())
.conversionAmount(Optional.ofNullable(temp.getConversionAmount()).orElse(BigDecimal.ZERO))
.useMaterialClerkNum(temp.getUseMatlClerkNum())
.unUseMaterialClerkNum(temp.getClickUserNum())
.conversionAmount(Optional.ofNullable(temp.getConvSalesAmt()).orElse(BigDecimal.ZERO))
.storeManagerNum(totalManagerStoreNum)
.build();
return RestResponse.successResult(indexDataVO);
......@@ -101,8 +104,16 @@ public class MaterialDataStaticsController {
@RequestMapping(path = "/content/material/real/use/data")
public RestResponse<MaterialRealDataVO> queryMaterialUsedAnalyze(@RequestBody MaterialStatisticsBaseQO materialStatisticsBaseQO) {
return RestResponse.successResult();
List<String> storeIds = new ArrayList<>();
if (StringUtils.isBlank(materialStatisticsBaseQO.getStoreId())) {
storeIds = clerkStoreAdaptor.queryClerkStoreIds(materialStatisticsBaseQO.getClerkId(), materialStatisticsBaseQO.getWxEnterpriseId());
} else {
storeIds.add(materialStatisticsBaseQO.getStoreId());
}
MaterialTodayDataBO materialTodayDataBO = materialDataAdaptor.queryMaterialTodayData(materialStatisticsBaseQO.getEnterpriseId(), storeIds);
MaterialRealDataVO temp = new MaterialRealDataVO();
BeanUtils.copyProperties(materialTodayDataBO, temp);
return RestResponse.successResult(temp);
}
/**
......@@ -113,7 +124,16 @@ public class MaterialDataStaticsController {
*/
@RequestMapping(path = "/content/material/overview/data")
public RestResponse<MaterialDataOverviewVO> queryMaterialOverviewData(@RequestBody MaterialAnalyzeDataQO materialStatisticsBaseQO) {
return RestResponse.successResult();
List<String> storeIds = new ArrayList<>();
if (StringUtils.isBlank(materialStatisticsBaseQO.getStoreId())) {
storeIds = clerkStoreAdaptor.queryClerkStoreIds(materialStatisticsBaseQO.getClerkId(), materialStatisticsBaseQO.getWxEnterpriseId());
} else {
storeIds.add(materialStatisticsBaseQO.getStoreId());
}
MaterialDataOverviewVO materialDataOverviewVO =
materialDataAdaptor.queryMaterialDataOverview(materialStatisticsBaseQO.getEnterpriseId(), storeIds, materialStatisticsBaseQO.getFixedDateDiff());
return RestResponse.successResult(materialDataOverviewVO);
}
......@@ -125,7 +145,15 @@ public class MaterialDataStaticsController {
@RequestMapping(path = "/content/material/clerk/data")
public RestResponse<Page<MaterialClerkUsedDataVO>> queryMaterialClerkUsedData(@RequestBody MaterialAnalyzeDataQO materialStatisticsBaseQO) {
//
return RestResponse.successResult();
List<String> storeIds = new ArrayList<>();
if (StringUtils.isBlank(materialStatisticsBaseQO.getStoreId())) {
storeIds = clerkStoreAdaptor.queryClerkStoreIds(materialStatisticsBaseQO.getClerkId(), materialStatisticsBaseQO.getWxEnterpriseId());
} else {
storeIds.add(materialStatisticsBaseQO.getStoreId());
}
Page<MaterialClerkUsedDataVO> clerkUsedData = materialDataAdaptor.queryMaterialClerkUsedData(materialStatisticsBaseQO.getEnterpriseId(), storeIds,
materialStatisticsBaseQO.getFixedDateDiff(), materialStatisticsBaseQO.getOrderByField(), materialStatisticsBaseQO.getOrder(), materialStatisticsBaseQO.getPageNum(), materialStatisticsBaseQO.getPageSize());
return RestResponse.successResult(clerkUsedData);
}
/**
......@@ -135,7 +163,15 @@ public class MaterialDataStaticsController {
*/
@RequestMapping(path = "/content/material/store/data")
public RestResponse<Page<MaterialStoreUsedDataVO>> queryMaterialStoreUsedData(@RequestBody MaterialAnalyzeDataQO materialStatisticsBaseQO) {
return RestResponse.successResult();
List<String> storeIds = new ArrayList<>();
if (StringUtils.isBlank(materialStatisticsBaseQO.getStoreId())) {
storeIds = clerkStoreAdaptor.queryClerkStoreIds(materialStatisticsBaseQO.getClerkId(), materialStatisticsBaseQO.getWxEnterpriseId());
} else {
storeIds.add(materialStatisticsBaseQO.getStoreId());
}
Page<MaterialStoreUsedDataVO> storeUsedData = materialDataAdaptor.queryMaterialStoreUsedData(materialStatisticsBaseQO.getEnterpriseId(), storeIds,
materialStatisticsBaseQO.getFixedDateDiff(), materialStatisticsBaseQO.getOrderByField(), materialStatisticsBaseQO.getOrder(), materialStatisticsBaseQO.getPageNum(), materialStatisticsBaseQO.getPageSize());
return RestResponse.successResult(storeUsedData);
}
......@@ -163,6 +199,7 @@ public class MaterialDataStaticsController {
/**
* 周/月报--查询门店纬度素材使用数据(店长和区经)
*
* @param materialPersonalUsedQO
* @return
*/
......@@ -173,6 +210,7 @@ public class MaterialDataStaticsController {
/**
* 周/月报--查询门店纬度素材使用数据列表
*
* @param materialPersonalUsedQO
* @return
*/
......
......@@ -2,17 +2,17 @@ package com.gic.haoban.manage.web.controller.content.adaptor;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.haoban.manage.web.utils.target.DataTargetHttpUtils;
import com.gic.haoban.manage.web.vo.content.statistics.MaterialIndexDataVO;
import com.gic.mall.api.dto.MallProDTO;
import com.gic.haoban.manage.web.vo.content.statistics.MaterialClerkUsedDataVO;
import com.gic.haoban.manage.web.vo.content.statistics.MaterialDataOverviewVO;
import com.gic.haoban.manage.web.vo.content.statistics.MaterialStoreUsedDataVO;
import com.gic.haoban.manage.web.vo.content.statistics.bo.MaterialTodayDataBO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
......@@ -36,6 +36,17 @@ public class MaterialDataAdaptor {
* 素材首页数据统计
*/
private static final String MATERIAL_INDEX_DATA = "data_matl_haoban_area_stats_real";
private static final String MATERIAL_OVERVIEW_DATA = "data_matl_haoban_area_stats";
/**
* 导购纬度数据统计
*/
private static final String MATERIAL_CLERK_DATA = "data_matl_haoban_clerk_stats";
/**
* 门店纬度数据统计
*/
private static final String MATERIAL_STORE_DATA = "data_matl_haoban_store_stats";
/**
......@@ -43,7 +54,7 @@ public class MaterialDataAdaptor {
* @param enterpriseId
* @return
*/
public MaterialIndexDataVO queryMaterialIndexData(String enterpriseId, List<String> storeIds) {
public MaterialTodayDataBO queryMaterialTodayData(String enterpriseId, List<String> storeIds) {
Map<String, Object> params = new HashMap<>();
Map<String, Object> inlineParams = new HashMap<>();
params.put("inFields", inlineParams);
......@@ -54,19 +65,109 @@ public class MaterialDataAdaptor {
}
Map<String, Object> result = this.doHttp(JSON.toJSONString(params), MATERIAL_INDEX_DATA);
if (result.get("data") == null) {
return MaterialIndexDataVO.builder()
.useMaterialClerkNum(0)
.unUseMaterialClerkNum(0)
.conversionAmount(BigDecimal.ZERO)
.build();
return MaterialTodayDataBO.empty();
}
return JSON.parseObject(JSON.toJSONString(result.get("data")), MaterialTodayDataBO.class);
}
/**
* 店长/区经
* 查询数据概览
* @param enterpriseId
* @param storeIds
* @param fixedDateDiff
* @return
*/
public MaterialDataOverviewVO queryMaterialDataOverview(String enterpriseId, List<String> storeIds, Integer fixedDateDiff) {
Map<String, Object> params = new HashMap<>();
Map<String, Object> inlineParams = new HashMap<>();
params.put("inFields", inlineParams);
inlineParams.put("enterprsieId", enterpriseId);
inlineParams.put("fixedDateDiff", fixedDateDiff);
if (CollectionUtil.isNotEmpty(storeIds)) {
inlineParams.put("storeId", StringUtils.join(storeIds, ","));
}
Map<String, Object> result = this.doHttp(JSON.toJSONString(params), MATERIAL_OVERVIEW_DATA);
if (result.get("data") == null) {
return new MaterialDataOverviewVO();
}
return JSON.parseObject(JSON.toJSONString(result.get("data")), MaterialDataOverviewVO.class);
}
/**
* 导购纬度数据统计
* @param enterpriseId
* @param storeIds
* @param fixedDateDiff
* @param order
* @return
*/
public Page<MaterialClerkUsedDataVO> queryMaterialClerkUsedData(String enterpriseId, List<String> storeIds, Integer fixedDateDiff,
String orderField, Integer order, Integer pageNo, Integer pageSize) {
Map<String, Object> params = new HashMap<>();
Map<String, Object> inlineParams = new HashMap<>();
params.put("pageNo", pageNo);
params.put("pageSize", pageSize);
params.put("inFields", inlineParams);
inlineParams.put("enterprsieId", enterpriseId);
inlineParams.put("fixedDateDiff", fixedDateDiff);
if (StringUtils.isNotBlank(orderField)) {
String orderStr = new Integer(1).equals(order) ? " asc " : " desc ";
inlineParams.put("orderByField", orderField + orderStr);
}
if (CollectionUtil.isNotEmpty(storeIds)) {
inlineParams.put("storeId", StringUtils.join(storeIds, ","));
}
Map<String, Object> result = this.doHttp(JSON.toJSONString(params), MATERIAL_CLERK_DATA);
if (result.get("data") == null) {
return new Page<>();
}
List<MaterialClerkUsedDataVO> dataVOS = JSON.parseArray(JSON.toJSONString(result.get("data")), MaterialClerkUsedDataVO.class);
Page<MaterialClerkUsedDataVO> pageResult = new Page<>();
pageResult.setTotalCount(1);
pageResult.setResult(dataVOS);
return pageResult;
}
/**
* 门店纬度数据统计
* @param enterpriseId
* @param storeIds
* @param fixedDateDiff
* @param order
* @return
*/
public Page<MaterialStoreUsedDataVO> queryMaterialStoreUsedData(String enterpriseId, List<String> storeIds, Integer fixedDateDiff,
String orderField, Integer order, Integer pageNo, Integer pageSize) {
Map<String, Object> params = new HashMap<>();
Map<String, Object> inlineParams = new HashMap<>();
params.put("pageNo", pageNo);
params.put("pageSize", pageSize);
params.put("inFields", inlineParams);
inlineParams.put("enterprsieId", enterpriseId);
inlineParams.put("fixedDateDiff", fixedDateDiff);
if (StringUtils.isNotBlank(orderField)) {
String orderStr = new Integer(1).equals(order) ? " asc " : " desc ";
inlineParams.put("orderByField", orderField + orderStr);
}
if (CollectionUtil.isNotEmpty(storeIds)) {
inlineParams.put("storeId", StringUtils.join(storeIds, ","));
}
Map<String, Object> result = this.doHttp(JSON.toJSONString(params), MATERIAL_CLERK_DATA);
if (result.get("data") == null) {
return new Page<>();
}
JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(result.get("data")), JSONObject.class);
return MaterialIndexDataVO.builder()
.useMaterialClerkNum(jsonObject.getIntValue("useMatlClerkNum"))
.unUseMaterialClerkNum(jsonObject.getIntValue("unusedMatlClerkNum"))
.conversionAmount(jsonObject.getBigDecimal("convSalesAmt"))
.build();
List<MaterialStoreUsedDataVO> dataVOS = JSON.parseArray(JSON.toJSONString(result.get("data")), MaterialStoreUsedDataVO.class);
Page<MaterialStoreUsedDataVO> pageResult = new Page<>();
pageResult.setTotalCount(1);
pageResult.setResult(dataVOS);
return pageResult;
}
......
package com.gic.haoban.manage.web.qo.content.statistics;
import lombok.Data;
/**
* @Author MUSI
* @Date 2023/3/23 1:00 PM
* @Description
* @Version
**/
@Data
public class MaterialAnalyzeDataQO extends MaterialStatisticsBaseQO {
private static final long serialVersionUID = 3422937373665522931L;
......@@ -20,35 +23,11 @@ public class MaterialAnalyzeDataQO extends MaterialStatisticsBaseQO {
* 日均使用导购占比
* 转化客户数
*/
private Integer orderByField;
private String orderByField;
/**
* 1 生序
* 0 降序
*/
private Integer order;
public Integer getFixedDateDiff() {
return fixedDateDiff;
}
public void setFixedDateDiff(Integer fixedDateDiff) {
this.fixedDateDiff = fixedDateDiff;
}
public Integer getOrderByField() {
return orderByField;
}
public void setOrderByField(Integer orderByField) {
this.orderByField = orderByField;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
}
package com.gic.haoban.manage.web.qo.content.statistics;
import com.gic.api.base.commons.BasePageInfo;
import lombok.Data;
/**
* @Author MUSI
......@@ -8,6 +9,7 @@ import com.gic.api.base.commons.BasePageInfo;
* @Description
* @Version
**/
@Data
public class MaterialStatisticsBaseQO extends BasePageInfo {
/**
......@@ -16,6 +18,11 @@ public class MaterialStatisticsBaseQO extends BasePageInfo {
private String enterpriseId;
/**
* 微信企业id
*/
private String wxEnterpriseId;
/**
* 导购id
*/
private String clerkId;
......@@ -26,7 +33,6 @@ public class MaterialStatisticsBaseQO extends BasePageInfo {
private String storeId;
public String getEnterpriseId() {
return enterpriseId;
}
......
package com.gic.haoban.manage.web.vo.content.statistics.bo;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Author MUSI
* @Date 2023/3/27 1:02 PM
* @Description
* @Version
**/
@Data
public class MaterialTodayDataBO implements Serializable {
/**
* 使用导购数
*/
private Integer useMatlClerkNum;
/**
* 未使用导购数
*/
private Integer unusedMatlClerkNum;
/**
* 转化用户数
*/
private Integer clickUserNum;
/**
* 转化人数
*/
private Integer convUserNum;
/**
* 转化金额
*/
private BigDecimal convSalesAmt;
public static MaterialTodayDataBO empty(){
return new MaterialTodayDataBO();
}
}
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