Commit 4d175334 by zhangzhijie

app每日警情和每周态势接口

parent 274fcd63
......@@ -11,9 +11,7 @@ import java.time.temporal.ChronoField;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAdjuster;
import java.time.temporal.TemporalAdjusters;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.*;
import java.util.regex.Pattern;
/**
......@@ -117,7 +115,19 @@ public class DateUtil {
cal.add(Calendar.WEEK_OF_MONTH, 0);
cal.set(Calendar.DAY_OF_WEEK, 2);
Date time=cal.getTime();
return new SimpleDateFormat("yyyy-MM-dd").format(time)+" 00:00:00";
return new SimpleDateFormat("yyyy-MM-dd").format(time);
}
/**
* 获取本周最后一天
* @return String
* **/
public static String getWeekEnd(){
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_WEEK, cal.getActualMaximum(Calendar.DAY_OF_WEEK));
cal.add(Calendar.DAY_OF_WEEK, 1);
Date time = cal.getTime();
return new SimpleDateFormat("yyyy-MM-dd").format(time);
}
public static String format(Date date, String pattern) throws ParseException {
......@@ -147,4 +157,22 @@ public class DateUtil {
}
return sj;
}
/**
* 获取 两个时间内 全部日期
*/
public static List<String> getAscDateList(LocalDate startDate, LocalDate endDate) {
List<String> result = new ArrayList<>();
if (endDate.compareTo(startDate) < 0) {
return result;
}
while (true) {
result.add(startDate.toString());
if (startDate.compareTo(endDate) >= 0) {
break;
}
startDate = startDate.plusDays(1);
}
return result;
}
}
package org.springblade.founder.xxtz.controller;
import org.springblade.founder.utils.R;
import org.springblade.founder.xxtz.entity.WeeklySituationBo;
import org.springblade.founder.xxtz.entity.WeeklySituationVo;
import org.springblade.founder.xxtz.service.XxtzService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@RestController
......@@ -48,4 +52,24 @@ public class XxtzController {
return R.error(e.getMessage());
}
}
/**
* 每日警情信息
* @return
*/
@GetMapping("/getDailyPoliceSituation")
public R getDailyPoliceSituation(){
Map<String, Object> resultMap = xxtzService.getDailyPoliceSituation();
return R.ok().data(resultMap);
}
/**
* 每周态势信息
* @return
*/
@GetMapping("/getWeeklySituation")
public R getWeeklySituation(WeeklySituationBo bo){
List<WeeklySituationVo> records = xxtzService.getWeeklySituation(bo);
return R.ok().data("records",records);
}
}
package org.springblade.founder.xxtz.entity;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author zzj
* 每日警情
*/
@Data
@NoArgsConstructor
public class PoliceSituation {
/**
* 可疑人员数量
*/
private Integer countKyry;
/**
* 可疑号码数量
*/
private Integer countKyhm;
/**
* 可疑车辆数量
*/
private Integer countKycl;
/**
* 可疑图像数量
*/
private Integer countKytx;
/**
* 可疑视频数量
*/
private Integer countKysp;
/**
* 可疑音频数量
*/
private Integer countKyyp;
}
package org.springblade.founder.xxtz.entity;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
/**
* @author zzj
* 每周态势业务类
*/
@Data
@NoArgsConstructor
public class WeeklySituationBo {
/**
* 案件类别代码
*/
private String ajlbdm;
/**
* 单位代码
*/
private String unitcode;
/**
* 开始时间
*/
private String startTime;
/**
* 结束时间
*/
private String endTime;
/**
* 侦查阶段代码
*/
private List<String> zcjddms;
}
package org.springblade.founder.xxtz.entity;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author zzj
* 每周态势视图对象
*/
@Data
@NoArgsConstructor
public class WeeklySituationVo {
/**
* 发生日期
*/
private String fsrq;
/**
* 案发数量
*/
private Integer countAsjfs;
/**
* 破案数量
*/
private Integer countAsjPa;
}
......@@ -2,8 +2,13 @@ package org.springblade.founder.xxtz.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springblade.founder.xxtz.entity.WeeklySituationBo;
import org.springblade.founder.xxtz.entity.WeeklySituationVo;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
@Mapper
@Repository
public interface XxtzMapper {
......@@ -22,4 +27,10 @@ public interface XxtzMapper {
Integer selectXsxxCountByDjr(String zjhm);
Integer selectXssbCountByDjr(String zjhm);
Integer queryTodayAreaCount(@Param("unitcode") String unitcode,@Param("today") String today,@Param("tableName") String tableName);
List<WeeklySituationVo> queryAsjfsCount(@Param("bo") WeeklySituationBo bo);
List<WeeklySituationVo> queryAsjPaCount(@Param("bo")WeeklySituationBo bo);
}
......@@ -55,4 +55,60 @@
and XSZT = '1'
and XXDJRY_GMSFHM = #{zjhm,jdbcType=VARCHAR}
</select>
<select id="queryTodayAreaCount" resultType="java.lang.Integer">
select count(xxzjbh)
from ${tableName}
where DJSJ between STR_TO_DATE('${today} 00:00:00', '%Y-%m-%d %H:%i:%S') and STR_TO_DATE('${today} 23:59:59', '%Y-%m-%d %H:%i:%S')
and XXDJDW_GAJGJGDM like '${unitcode}%'
and XXSC_PDBZ = '0'
</select>
<select id="queryAsjfsCount" resultType="org.springblade.founder.xxtz.entity.WeeklySituationVo">
select count(ASJBH) as countAsjfs, date_format(ASJFSSJ_ASJFSKSSJ, '%Y-%m-%d') as fsrq
from tb_st_asj
<where>
XXSC_PDBZ = '0'
<if test="bo.ajlbdm != null and bo.ajlbdm != ''">
and ajlbdm = #{bo.ajlbdm}
</if>
<if test="bo.startTime != null and bo.startTime != ''">
and asjfssj_asjfskssj > STR_TO_DATE(#{bo.startTime}, '%Y-%m-%d %H:%i:%S')
</if>
<if test="bo.endTime != null and bo.endTime != ''">
and asjfssj_asjfskssj <![CDATA[ <= ]]> STR_TO_DATE(#{bo.endTime}, '%Y-%m-%d %H:%i:%S')
</if>
<if test="bo.unitcode != null and bo.unitcode != ''">
and xxdjdw_gajgjgdm like '${bo.unitcode}%'
</if>
</where>
group by date_format(ASJFSSJ_ASJFSKSSJ, '%Y-%m-%d') order by fsrq
</select>
<select id="queryAsjPaCount" resultType="org.springblade.founder.xxtz.entity.WeeklySituationVo">
select count(ASJBH) as countAsjPa, date_format(ZCZJ_ZXSJ01, '%Y-%m-%d') as fsrq
from tb_st_asj
<where>
XXSC_PDBZ = '0'
<if test="bo.ajlbdm != null and bo.ajlbdm != ''">
and ajlbdm = #{bo.ajlbdm}
</if>
<if test="bo.startTime != null and bo.startTime != ''">
and ZCZJ_ZXSJ01 > STR_TO_DATE(#{bo.startTime}, '%Y-%m-%d %H:%i:%S')
</if>
<if test="bo.endTime != null and bo.endTime != ''">
and ZCZJ_ZXSJ01 <![CDATA[ <= ]]> STR_TO_DATE(#{bo.endTime}, '%Y-%m-%d %H:%i:%S')
</if>
<if test="bo.unitcode != null and bo.unitcode != ''">
and xxdjdw_gajgjgdm like '${bo.unitcode}%'
</if>
<if test="bo.zcjddms != null and bo.zcjddms.size() > 0">
and zcjddm in
<foreach collection="bo.zcjddms" open="(" item="item" close=")" separator="," index="index">
#{item}
</foreach>
</if>
</where>
group by date_format(ZCZJ_ZXSJ01, '%Y-%m-%d') order by fsrq
</select>
</mapper>
package org.springblade.founder.xxtz.service;
import org.springblade.founder.xxtz.entity.WeeklySituationBo;
import org.springblade.founder.xxtz.entity.WeeklySituationVo;
import java.text.ParseException;
import java.util.List;
import java.util.Map;
public interface XxtzService {
......@@ -28,4 +32,8 @@ public interface XxtzService {
* 2022/5/5 10:20
*/
Map<String, Object> getXscjslAndXssbsl();
Map<String, Object> getDailyPoliceSituation();
List<WeeklySituationVo> getWeeklySituation(WeeklySituationBo bo);
}
package org.springblade.founder.xxtz.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import org.springblade.core.secure.utils.SecureUtil;
import org.springblade.founder.utils.DateUtil;
import org.springblade.founder.utils.Utils;
import org.springblade.founder.xxtz.entity.WeeklySituationBo;
import org.springblade.founder.xxtz.entity.WeeklySituationVo;
import org.springblade.founder.xxtz.mapper.XxtzMapper;
import org.springblade.founder.xxtz.service.XxtzService;
import org.springblade.modules.system.entity.XzxtUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.time.LocalDate;
import java.util.*;
@Service
public class XxtzServiceImpl implements XxtzService {
@Value("${ssdw}")
private String ssdw;
@Autowired
private XxtzMapper xxtzMapper;
......@@ -31,7 +37,7 @@ public class XxtzServiceImpl implements XxtzService {
date = sdf.format(new Date());
date += " 00:00:00";
} else {
date = DateUtil.getWeekStart();
date = DateUtil.getWeekStart() + " 00:00:00";
}
Integer xsajsl = xxtzMapper.selectXsajCountByDw(dwlike, date);
if ("0".equals(type)) {
......@@ -72,4 +78,109 @@ public class XxtzServiceImpl implements XxtzService {
resultMap.put("xssbCount", xssbCount);
return resultMap;
}
@Override
public Map<String, Object> getDailyPoliceSituation() {
String unitcode = ssdw;
XzxtUser userXzxt = SecureUtil.getUserXzxt();
if (userXzxt != null) {
unitcode = userXzxt.getUnitcode();
String grade = userXzxt.getGrade();
if ("S".equals(grade)) {
unitcode = unitcode.substring(0, 2);
} else if ("D".equals(grade)) {
unitcode = unitcode.substring(0, 4);
} else {
unitcode = unitcode.substring(0, 6);
}
} else {
unitcode = unitcode.substring(0, 2);
}
String today = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
//可疑人员数
String tableName = "tb_xw_kyxs_ry";
Integer countKyry = xxtzMapper.queryTodayAreaCount(unitcode, today, tableName);
//可疑号码数量
tableName = "tb_xw_kyxs_hm";
Integer countKyhm = xxtzMapper.queryTodayAreaCount(unitcode, today, tableName);
//可疑车辆数量
tableName = "tb_xw_kyxs_jdc";
Integer countKycl = xxtzMapper.queryTodayAreaCount(unitcode, today, tableName);
//可疑图像数量
tableName = "tb_xw_kyxs_tx";
Integer countKytx = xxtzMapper.queryTodayAreaCount(unitcode, today, tableName);
//可疑视频数量
tableName = "tb_xw_kyxs_sp";
Integer countKysp = xxtzMapper.queryTodayAreaCount(unitcode, today, tableName);
//可疑音频数量
tableName = "tb_xw_kyxs_yy";
Integer countKyyp = xxtzMapper.queryTodayAreaCount(unitcode, today, tableName);
Map<String, Object> result = new HashMap<>(16);
result.put("countKyry", countKyry == null ? 0 : countKyry);
result.put("countKyhm", countKyhm == null ? 0 : countKyhm);
result.put("countKycl", countKycl == null ? 0 : countKycl);
result.put("countKytx", countKytx == null ? 0 : countKytx);
result.put("countKysp", countKysp == null ? 0 : countKysp);
result.put("countKyyp", countKyyp == null ? 0 : countKyyp);
return result;
}
@Override
public List<WeeklySituationVo> getWeeklySituation(WeeklySituationBo bo) {
List<WeeklySituationVo> result = new ArrayList<>();
String startTime = DateUtil.getWeekStart();
String endTime = DateUtil.getWeekEnd();
String unitcode = bo.getUnitcode();
if (!StringUtils.hasText(bo.getStartTime())) {
bo.setStartTime(startTime);
}
if (!StringUtils.hasText(bo.getEndTime())) {
bo.setEndTime(endTime);
}
if (!StringUtils.hasText(unitcode)) {
XzxtUser userXzxt = SecureUtil.getUserXzxt();
if (userXzxt != null) {
unitcode = userXzxt.getUnitcode();
} else {
unitcode = ssdw;
}
}
bo.setUnitcode(Utils.getDwlikeByUnitCode(unitcode));
//时间范围内案事件发生总数
List<WeeklySituationVo> countAsjs = xxtzMapper.queryAsjfsCount(bo);
//事件范围内案事件侦破总数
List<String> zcjddms = new ArrayList<>();
zcjddms.add("0600");
zcjddms.add("0700");
zcjddms.add("0800");
bo.setZcjddms(zcjddms);
List<WeeklySituationVo> countAsjPas = xxtzMapper.queryAsjPaCount(bo);
List<String> dateList = DateUtil.getAscDateList(LocalDate.parse(bo.getStartTime()), LocalDate.parse(bo.getEndTime()));
for (String date : dateList) {
WeeklySituationVo record = new WeeklySituationVo();
record.setFsrq(date);
record.setCountAsjPa(0);
record.setCountAsjfs(0);
for (WeeklySituationVo vo : countAsjs) {
String fsrq = vo.getFsrq();
if (date.equals(fsrq)) {
record.setCountAsjfs(vo.getCountAsjfs());
break;
}
}
for (WeeklySituationVo vo : countAsjPas) {
String fsrq = vo.getFsrq();
if (date.equals(fsrq)) {
record.setCountAsjPa(vo.getCountAsjPa());
break;
}
}
result.add(record);
}
return result;
}
}
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