Browse Source

【运营数据导出】-【添加用户活跃率】-(王童)-2020/8/11

feature/dangjian
Jackwang 5 years ago
parent
commit
4a9dc553c1
  1. 10
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/user/result/ExportOperationDataResultDTO.java
  2. 4
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/excel/ExportOperationDataExcel.java
  3. 8
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/dao/UserAnalysisDao.java
  4. 37
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/service/impl/UserAnalysisServiceImpl.java
  5. 21
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/UserAnalysisDao.xml

10
esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/user/result/ExportOperationDataResultDTO.java

@ -73,9 +73,19 @@ public class ExportOperationDataResultDTO implements Serializable {
*/
private String streetName;
/**
* 街道id
*/
private Long streetId;
/**
* 企业数
*/
private int enterpriseCount = 0;
/**
* 用户活跃率
*/
private String activeUserRate = "0%";
}

4
esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/excel/ExportOperationDataExcel.java

@ -51,5 +51,9 @@ public class ExportOperationDataExcel implements Serializable {
@Excel(name = "社群话题数")
private int communityTopicCount = 0;
@Excel(name = "用户活跃率")
private String activeUserRate = "0%";
}

8
esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/dao/UserAnalysisDao.java

@ -271,4 +271,12 @@ public interface UserAnalysisDao extends BaseMapper<UserAnalysisDTO> {
List<GridOpeningResultDTO> selectExportEnterpriseCountByGridId(Map<String, Object> params);
/**
* @describe: 通过街道id和日期查询活跃用户数
* @author wangtong
* @date 2020/8/11 15:41
* @params [params]
* @return int
*/
int selectActiveUserCountByParams(Map<String, Object> params);
}

37
esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/service/impl/UserAnalysisServiceImpl.java

@ -14,8 +14,8 @@ import com.elink.esua.epdc.datasources.DataSourceNames;
import com.elink.esua.epdc.datasources.annotation.DataSource;
import com.elink.esua.epdc.dto.user.UserAnalysisDTO;
import com.elink.esua.epdc.dto.user.form.ExportOperationFormDTO;
import com.elink.esua.epdc.dto.user.form.UserSortRankFormDTO;
import com.elink.esua.epdc.dto.user.form.UserCountDTO;
import com.elink.esua.epdc.dto.user.form.UserSortRankFormDTO;
import com.elink.esua.epdc.dto.user.result.*;
import com.elink.esua.epdc.modules.user.dao.UserAnalysisDao;
import com.elink.esua.epdc.modules.user.service.UserAnalysisService;
@ -24,7 +24,9 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -347,7 +349,6 @@ public class UserAnalysisServiceImpl extends BaseServiceImpl<UserAnalysisDao, Us
List<ExportOperationDataResultDTO> communityMemberDataResultDTOS = baseDao.selectExportCommunityMemberCount(exportOperationFormDTO);
// 话题
List<ExportOperationDataResultDTO> topicDataResultDTOS = baseDao.selectExportTopicCount(exportOperationFormDTO);
// 企业
List<ExportOperationDataResultDTO> enterpriseDataResultDTOS = baseDao.selectExportEnterpriseCount(exportOperationFormDTO);
//居民数
@ -359,6 +360,12 @@ public class UserAnalysisServiceImpl extends BaseServiceImpl<UserAnalysisDao, Us
exportOperationDataResultDTOS.get(i).setRegisterCount(exportOperationDataResultDTOS.get(i).getRegisterCount());
}
}*/
String activeUserRate = selectActiveUserCountByParams(exportOperationDataResultDTOS.get(i).getStreetId(),
exportOperationFormDTO.getOperationStartTime(),exportOperationFormDTO.getOperationEndTime(),
exportOperationFormDTO.getEndTime(),exportOperationDataResultDTOS.get(i).getRegisterCount(),
exportOperationDataResultDTOS.get(i).getPartyCount());
exportOperationDataResultDTOS.get(i).setActiveUserRate(activeUserRate);
exportOperationDataResultDTOS.get(i).setNewsCount(newsResultDTOS.size() == 0 ? 0 : newsResultDTOS.get(i).getNewsCount());
exportOperationDataResultDTOS.get(i).setItemCount(itemDataResultDTOS.size() == 0 ? 0 : itemDataResultDTOS.get(i).getItemCount());
exportOperationDataResultDTOS.get(i).setItemCloseCount(itemDataResultDTOS.size() == 0 ? 0 : itemDataResultDTOS.get(i).getItemCloseCount());
@ -372,6 +379,32 @@ public class UserAnalysisServiceImpl extends BaseServiceImpl<UserAnalysisDao, Us
return exportOperationDataResultDTOS;
}
/**
* @describe: 通过街道id日期用户总数查询活跃用户数占比
* @author wangtong
* @date 2020/8/11 15:28
* @params []
* @return java.lang.String
*/
private String selectActiveUserCountByParams(Long streetId, String operationStartTime, String operationEndTime, String endTime, int registerCount, int partyCount) {
//用户总数
int userTotal = registerCount + partyCount;
Map<String, Object> params = new HashMap<>();
params.put("streetId", streetId);
params.put("operationStartTime", operationStartTime);
params.put("operationEndTime", operationEndTime);
params.put("endTime", endTime);
//活跃用户总数
int activeUserCount = baseDao.selectActiveUserCountByParams(params);
if(userTotal == 0 || activeUserCount== 0){
return "0%";
}
DecimalFormat df=new DecimalFormat("0.00");
return df.format((float)activeUserCount/(float)userTotal) + "%";
}
@Override
public List<GridOpeningResultDTO> selectListGridHasMaCode(Map<String, Object> params) {
params.put("deptIdList", SecurityUser.getUser().getDeptIdList());

21
esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/UserAnalysisDao.xml

@ -603,6 +603,7 @@
<select id="selectExportUserCount" resultType="com.elink.esua.epdc.dto.user.result.ExportOperationDataResultDTO" parameterType="com.elink.esua.epdc.dto.user.form.ExportOperationFormDTO">
select
tt.name as streetName,
tt.id as streetId,
(ifnull(tab.userTotal,0) - ifnull(tab.partyCount,0)) as registerCount,
ifnull(tab.partyCount,0) as partyCount
from
@ -1336,4 +1337,24 @@
ORDER BY
t0.id ASC
</select>
<select id="selectActiveUserCountByParams" resultType="int">
SELECT IFNULL(count(*),0)
FROM (SELECT ecu.ID
FROM esua_epdc_analysis.`epdc_active_user_info` ecu
LEFT JOIN esua_epdc_analysis.meta_sys_dept dept on ecu.DEPT_ID=dept.ID
LEFT JOIN esua_epdc_analysis.meta_sys_dept com on dept.PID=com.ID
LEFT JOIN esua_epdc_analysis.meta_sys_dept street ON com.PID=street.ID
where street.id=#{streetId}
and ecu.DEL_FLAG=0
<if test=" endTime != null and endTime != ''">
and ecu.REACH_ACTIVE_TIME &lt;= #{endTime}
</if>
<if test="operationStartTime != null and operationStartTime != '' and operationEndTime != null and operationEndTime != ''">
and (#{operationStartTime} BETWEEN ecu.REACH_ACTIVE_TIME and ecu.VALID_TIME
or
#{operationEndTime} BETWEEN ecu.REACH_ACTIVE_TIME and ecu.VALID_TIME)
</if>
group by ecu.USER_ID -- 去重
)total
</select>
</mapper>

Loading…
Cancel
Save