Commit 9653642d authored by wujiang's avatar wujiang

提交定制统计接口

parent 8f95fc9f
......@@ -147,7 +147,7 @@ public class DocStatisticsResource {
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(value = "文档总数统计")
@RequestMapping(value = "/doc/statistics", method = RequestMethod.GET)
public ResponseModel docStatistics(@RequestParam(value = "categoryName") String categoryName,
public ResponseModel docStatistics(@RequestParam(value = "categoryName", required = false) String categoryName,
@RequestParam(value = "startDate", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
@RequestParam(value = "endDate", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate,
@RequestParam(value = "mode", required = false) String mode) {
......@@ -167,12 +167,31 @@ public class DocStatisticsResource {
}
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(value = "标签总数统计")
@RequestMapping(value = "/tag-time-chart/statistics", method = RequestMethod.GET)
public ResponseModel tagTimeChartStatistics(
@RequestParam(value = "startDate", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
@RequestParam(value = "endDate", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate,
@RequestParam(value = "split") List<Integer> split, @RequestParam(value = "unit") String unit) {
return ResponseHelper
.buildResponse(statisticsRecordService.tagTimeChartStatistics(startDate, endDate, split, unit));
}
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(value = "文档总数统计")
@RequestMapping(value = "/doc-chart/statistics", method = RequestMethod.GET)
public ResponseModel docChartStatistics(
@RequestParam(value = "startDate", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
@RequestParam(value = "endDate", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate) {
return ResponseHelper
.buildResponse(statisticsRecordService.docChartStatistics(startDate, endDate));
return ResponseHelper.buildResponse(statisticsRecordService.docChartStatistics(startDate, endDate));
}
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(value = "文档燃烧物质总数统计")
@RequestMapping(value = "/doc-burn-chart/statistics", method = RequestMethod.GET)
public ResponseModel docBurnChartStatistics(
@RequestParam(value = "startDate", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
@RequestParam(value = "endDate", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate) {
return ResponseHelper.buildResponse(statisticsRecordService.docBurnChartStatistics(startDate, endDate));
}
}
......@@ -51,5 +51,9 @@ public interface StatisticsRecordMapper extends BaseMapper<KnowlegeStatisticsRec
List<Map<String, Object>> tagChartStatistics(String tag, Date startDate, Date endDate,String splitSQL);
List<Map<String, Object>> tagTimeChartStatistics(Date startDate, Date endDate,String splitSQL);
List<Map<String, Object>> docChartStatistics(Date startDate, Date endDate);
List<Map<String, Object>> docBurnChartStatistics(Date startDate, Date endDate);
}
\ No newline at end of file
......@@ -264,7 +264,7 @@ public class StatisticsRecordService
int year = cal.get(Calendar.YEAR);
list.forEach(i -> {
if ("year".equals(mode)) {
if (i.get("date") != null && Integer.valueOf((String)(i.get("date"))) <= year) {
if (i.get("date") != null && Integer.valueOf((String) (i.get("date"))) <= year) {
map.put((String) i.get("date"), i.get("datas"));
}
} else {
......@@ -288,7 +288,7 @@ public class StatisticsRecordService
int year = cal.get(Calendar.YEAR);
list.forEach(i -> {
if ("year".equals(mode)) {
if (i.get("date") != null &&Integer.valueOf((String)(i.get("date"))) <= year) {
if (i.get("date") != null && Integer.valueOf((String) (i.get("date"))) <= year) {
map.put((String) i.get("date"), i.get("datas"));
}
} else {
......@@ -328,6 +328,35 @@ public class StatisticsRecordService
return map;
}
public Map<String, Object> tagTimeChartStatistics(Date startDate, Date endDate, List<Integer> split, String unit) {
endDate = getLastDayOfMonth(endDate);
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();
StringBuffer sb = new StringBuffer();
sb.append("elt(interval(kdc.TAG_VALUE");
for (int s : split) {
sb.append(",").append(s);
}
sb.append(")");
String last = "";
for (int s : split) {
if (StringUtils.isNotEmpty(last)) {
sb.append(",'").append(last).append("-").append(s).append(unit).append("'");
}
last = String.valueOf(s);
}
sb.append(",'").append(last).append(unit).append("以上'").append(")");
// String sql="elt(interval(ktv.TAG_VALUE,0, 5, 10, 40), 'less100', '100to500',
// '500to1000', 'more1000K')";
list = this.baseMapper.tagTimeChartStatistics(startDate, endDate, sb.toString());
list.forEach(i -> {
if (i.get("level") != null) {
map.put((String) i.get("level"), i.get("datas"));
}
});
return map;
}
public Map<String, Object> docChartStatistics(Date startDate, Date endDate) {
endDate = getLastDayOfMonth(endDate);
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
......@@ -340,6 +369,19 @@ public class StatisticsRecordService
});
return map;
}
public Map<String, Object> docBurnChartStatistics(Date startDate, Date endDate) {
endDate = getLastDayOfMonth(endDate);
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();
list = this.baseMapper.docBurnChartStatistics(startDate, endDate);
list.forEach(i -> {
if (i.get("level") != null) {
map.put((String) i.get("level"), i.get("datas"));
}
});
return map;
}
private static Date getLastDayOfMonth(Date date) {
Calendar cal = Calendar.getInstance();
......
......@@ -359,15 +359,85 @@
<select id="docChartStatistics" resultType="java.util.Map"
parameterType="java.util.Map">
SELECT
*
FROM
(SELECT
COUNT(1) AS datas,kdca.CATEGORY_NAME AS categoryName
FROM
knowledge_doc_content kdc
LEFT JOIN knowledge_doc_category kdca ON kdca.SEQUENCE_NBR=kdc.DIRECTORY_ID
knowledge_doc_category kdca
LEFT JOIN knowledge_doc_content kdc ON kdca.SEQUENCE_NBR=kdc.DIRECTORY_ID
LEFT JOIN knowledge_tag_instance kti_time ON kti_time.TARGET_SEQ = kdc.SEQUENCE_NBR AND kti_time.TAG_NAME = '发生时间'
LEFT JOIN knowledge_tag_value ktv_time ON kti_time.SEQUENCE_NBR = ktv_time.INSTANCE_SEQ
WHERE
ktv_time.TAG_VALUE BETWEEN #{startDate} AND #{endDate}
GROUP BY
kdca.CATEGORY_NAME
UNION ALL
SELECT
0,
kdca.CATEGORY_NAME AS categoryName
FROM knowledge_doc_category kdca
) T1
GROUP BY categoryName
</select>
<select id="tagTimeChartStatistics" resultType="java.util.Map"
parameterType="java.util.Map">
SELECT
COUNT(1) AS datas ,${splitSQL} AS level
FROM
(
SELECT
HOUR(IF(TIMEDIFF( ktv2.TAG_VALUE, ktv.TAG_VALUE ) &lt; 0,0,TIMEDIFF( ktv2.TAG_VALUE, ktv.TAG_VALUE ))) AS TAG_VALUE,
kdc.SEQUENCE_NBR
FROM
knowledge_doc_content kdc
LEFT JOIN knowledge_tag_instance kti ON kti.TARGET_SEQ = kdc.SEQUENCE_NBR
AND kti.TAG_NAME = '到场时间'
LEFT JOIN knowledge_tag_value ktv ON kti.SEQUENCE_NBR = ktv.INSTANCE_SEQ
LEFT JOIN knowledge_tag_instance kti2 ON kti2.TARGET_SEQ = kdc.SEQUENCE_NBR
AND kti2.TAG_NAME = '撤离时间'
LEFT JOIN knowledge_tag_value ktv2 ON kti2.SEQUENCE_NBR = ktv2.INSTANCE_SEQ
WHERE
ktv.TAG_VALUE IS NOT NULL
AND ktv2.TAG_VALUE IS NOT NULL
GROUP BY
kdc.SEQUENCE_NBR
) kdc
LEFT JOIN knowledge_tag_instance kti_time ON kti_time.TARGET_SEQ = kdc.SEQUENCE_NBR AND kti_time.TAG_NAME = '发生时间'
LEFT JOIN knowledge_tag_value ktv_time ON kti_time.SEQUENCE_NBR = ktv_time.INSTANCE_SEQ
WHERE
ktv_time.TAG_VALUE BETWEEN #{startDate} AND #{endDate}
GROUP BY
${splitSQL}
</select>
<select id="docBurnChartStatistics" resultType="java.util.Map"
parameterType="java.util.Map">
SELECT * FROM (
SELECT
COUNT( 1 ) AS datas,
kti.TAG_NAME AS level
FROM
knowledge_tag_instance kti
LEFT JOIN knowledge_tag_instance kti_time ON kti_time.TARGET_SEQ = kti.TARGET_SEQ
AND kti_time.TAG_NAME = '发生时间'
LEFT JOIN knowledge_tag_value ktv_time ON kti_time.SEQUENCE_NBR = ktv_time.INSTANCE_SEQ
WHERE
( kti.TAG_NAME = '燃烧物质a类固体' OR kti.TAG_NAME = '燃烧物质b类液体' OR kti.TAG_NAME = '燃烧物质c类气体' OR kti.TAG_NAME = '燃烧物质d类金属' )
AND (ktv_time.TAG_VALUE BETWEEN #{startDate} AND #{endDate})
GROUP BY
kti.TAG_NAME
UNION ALL
SELECT
0,
kti.TAG_NAME AS level
FROM knowledge_tag_instance kti
WHERE ( kti.TAG_NAME = '燃烧物质a类固体' OR kti.TAG_NAME = '燃烧物质b类液体' OR kti.TAG_NAME = '燃烧物质c类气体' OR kti.TAG_NAME = '燃烧物质d类金属' )
GROUP BY
kti.TAG_NAME) t1
GROUP BY
t1.level
</select>
</mapper>
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