Commit 5e33acae authored by taabe's avatar taabe

警情任务派发接口、短信模板获取接口

parent 743ceb4b
package com.yeejoin.amos.boot.biz.common.utils;
import lombok.extern.slf4j.Slf4j;
import java.util.Arrays;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Predicate;
/**
* @Author: songLei
* @Description:
* @Date: 2020/12/23 20:21
* @Version: 1.0
*/
@Slf4j
public class EnumsUtils {
private static Map<Class, Object> map = new ConcurrentHashMap<>();
/**
* 根据条件获取枚举对象
*
* @param className 枚举类
* @param predicate 筛选条件
* @param <T>
* @return
*/
public static <T> Optional<T> getEnumObject(Class<T> className, Predicate<T> predicate) {
if (!className.isEnum()) {
log.info("Class 不是枚举类");
return null;
}
Object obj = map.get(className);
T[] ts = null;
if (obj == null) {
ts = className.getEnumConstants();
map.put(className, ts);
} else {
ts = (T[]) obj;
}
return Arrays.stream(ts).filter(predicate).findAny();
}
}
......@@ -20,12 +20,21 @@ import java.util.List;
public class AlertSubmittedDto {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键id")
private Long sequenceNbr;
@ApiModelProperty(value = "警情id")
private Long alertCalledId;
@ApiModelProperty(value = "业务类型code(警情续报、非警情确认、警情结案)")
private String businessTypeCode;
@ApiModelProperty(value = "通话记录id")
private String callLogId;
@ApiModelProperty(value = "调度类型code(融合调度、外部协调)")
private String schedulingTypeCode;
/**
* 区分是警情报送还是融合调度
* 电话:融合调度
......@@ -38,10 +47,16 @@ public class AlertSubmittedDto {
* 报送对象
*/
@ApiModelProperty(value = "报送对象")
private List<SubmitTargetCompanyDto> submitTargetList;
private List<SubmitTargetCompanyDto> submitCompanyList;
/**
* 报送内容
*/
private JSONObject submitContent;
/**
* 发送对象类型(0:人员,1:单位)
*/
@ApiModelProperty(value = "报送对象类型0:人员,1:单位")
private String type;
}
package com.yeejoin.amos.boot.module.jcs.api.dto;
import lombok.Data;
import java.util.List;
/**
* 警情报送公司对象dto
* @author DELL
*/
@Data
public class SubmitTargetCompanyDto {
/**
......
package com.yeejoin.amos.boot.module.jcs.api.dto;
import lombok.Data;
/**
* 警情报送目标人员dto
* @author DELL
*/
@Data
public class SubmitTargetPersonDto {
/**
......
......@@ -25,12 +25,12 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@ApiModel(value="Template对象", description="模板表")
public class Template extends BaseEntity {
@ApiModelProperty(value = "模板类型")
private String type;
@ApiModelProperty(value = "模板类型code")
private String typeCode;
@ApiModelProperty(value = "模板内容")
private String content;
......
package com.yeejoin.amos.boot.module.jcs.api.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 警情填报类型枚举
*
* @author DELL
*/
@Getter
@AllArgsConstructor
public enum AlertBusinessTypeEnum {
/**
......@@ -19,9 +23,6 @@ public enum AlertBusinessTypeEnum {
private String code;
private String name;
AlertBusinessTypeEnum(String key, String code, String name) {
}
public String getKey() {
return key;
}
......
package com.yeejoin.amos.boot.module.jcs.api.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 警情调度类型枚举
*
* @author DELL
*/
@Getter
@AllArgsConstructor
public enum AlertSchedulingTypeEnum {
/**
......@@ -18,9 +22,6 @@ public enum AlertSchedulingTypeEnum {
private String code;
private String name;
AlertSchedulingTypeEnum(String key, String code, String name) {
}
public String getKey() {
return key;
}
......
package com.yeejoin.amos.boot.module.jcs.api.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 警情报送类型(0:人员,1:单位)
*
* @author DELL
*/
@Getter
@AllArgsConstructor
public enum AlertSubmitTypeEnum {
//人员
Person("0", "人员"),
// 单位
Org("1", "单位");
/**
* key
*/
private String key;
/**
* 名称
*/
private String name;
}
package com.yeejoin.amos.boot.module.jcs.api.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 报送方式枚举
*
* @author DELL
*/
@Getter
@AllArgsConstructor
public enum SubmissionMethodEnum {
PHONE("phone", "311", "电话"),
SMS("sms", "312", "短信");
......@@ -14,9 +18,6 @@ public enum SubmissionMethodEnum {
private String code;
private String name;
SubmissionMethodEnum(String key, String code, String name) {
}
public String getKey() {
return key;
}
......
......@@ -35,5 +35,5 @@ public interface IAlertSubmittedService extends IService<AlertSubmitted> {
* @param alertSubmittedDto
* @return
*/
Object save(AlertSubmittedDto alertSubmittedDto);
Boolean save(AlertSubmittedDto alertSubmittedDto);
}
......@@ -11,4 +11,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface ITemplateService extends IService<Template> {
/**
* 根据模板类型获取模板信息
*
* @param type
* @return
*/
Template getByType(String type);
}
......@@ -46,8 +46,8 @@
jas.submission_method_code,
jas.update_time,
jaso.sequence_nbr,
group_concat(jaso.company_name) companyNames,
group_concat(jaso.user_name) userNames
group_concat(distinct jaso.company_name) companyName,
group_concat(distinct jaso.user_name) userName
from jc_alert_submitted jas
left join jc_alert_submitted_object jaso on jas.sequence_nbr = jaso.alert_submitted_id
where 1=1
......
......@@ -99,7 +99,7 @@ public class AlertSubmittedController extends BaseController {
@RequestMapping(value = "/reporting/list", method = RequestMethod.POST)
@ApiOperation(httpMethod = "POST", value = "根据警情id查询警情报送列表", notes = "根据警情id查询警情报送列表")
public ResponseModel listReportingByParam(@RequestBody AlertSubmittedDto queryParam) {
queryParam.setSubmissionMethodCode(SubmissionMethodEnum.SMS.getCode());
queryParam.setSubmissionMethodCode(SubmissionMethodEnum.PHONE.getCode());
return CommonResponseUtil.success(iAlertSubmittedService.listReportingByParam(queryParam));
}
......
package com.yeejoin.amos.boot.module.jcs.biz.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.Api;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.RestController;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.jcs.api.service.ITemplateService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import javax.servlet.http.HttpServletRequest;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.jcs.api.entity.Template;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.biz.common.utils.NameUtils;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import com.yeejoin.amos.boot.module.jcs.api.entity.Template;
import com.yeejoin.amos.boot.module.jcs.api.service.ITemplateService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
......@@ -39,7 +41,7 @@ public class TemplateController extends BaseController {
* 新增模板表
* @return
*/
@TycloudOperation(needAuth = true, ApiLevel = UserType.AGENCY)
@TycloudOperation(ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/save", method = RequestMethod.POST)
@ApiOperation(httpMethod = "POST", value = "新增模板表", notes = "新增模板表")
public boolean saveTemplate(HttpServletRequest request, @RequestBody Template template){
......@@ -51,42 +53,47 @@ public class TemplateController extends BaseController {
* @param id
* @return
*/
@TycloudOperation(needAuth = true, ApiLevel = UserType.AGENCY)
@TycloudOperation(ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ApiOperation(httpMethod = "DELETE", value = "根据id删除", notes = "根据id删除")
public boolean deleteById(HttpServletRequest request, @PathVariable Long id){
return iTemplateService.removeById(id);
}
/**
* 修改模板表
* @return
*/
@TycloudOperation(needAuth = true, ApiLevel = UserType.AGENCY)
@TycloudOperation(ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/updateById", method = RequestMethod.PUT)
@ApiOperation(httpMethod = "PUT", value = "修改模板表", notes = "修改模板表")
public boolean updateByIdTemplate(HttpServletRequest request, @RequestBody Template template){
return iTemplateService.updateById(template);
}
/**
* 根据id查询
* @param id
* @return
*/
@TycloudOperation(needAuth = true, ApiLevel = UserType.AGENCY)
@TycloudOperation(ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "根据id查询", notes = "根据id查询")
public Template selectById(HttpServletRequest request, @PathVariable Long id){
return iTemplateService.getById(id);
}
/**
* 根据模板类型查询
* @param type
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/info/{type}", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "根据模板类型查询", notes = "根据模板类型查询")
public Template getByType(@PathVariable String type){
return iTemplateService.getByType(type);
}
/**
* 列表分页查询
......
package com.yeejoin.amos.boot.module.jcs.biz.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.yeejoin.amos.boot.biz.common.utils.EnumsUtils;
import com.yeejoin.amos.boot.module.jcs.api.dto.AlertSubmittedDto;
import com.yeejoin.amos.boot.module.jcs.api.entity.AlertSubmitted;
import com.yeejoin.amos.boot.module.jcs.api.entity.AlertSubmittedObject;
import com.yeejoin.amos.boot.module.jcs.api.enums.AlertBusinessTypeEnum;
import com.yeejoin.amos.boot.module.jcs.api.enums.AlertSchedulingTypeEnum;
import com.yeejoin.amos.boot.module.jcs.api.enums.AlertSubmitTypeEnum;
import com.yeejoin.amos.boot.module.jcs.api.enums.SubmissionMethodEnum;
import com.yeejoin.amos.boot.module.jcs.api.mapper.AlertSubmittedMapper;
import com.yeejoin.amos.boot.module.jcs.api.mapper.AlertSubmittedObjectMapper;
import com.yeejoin.amos.boot.module.jcs.api.service.IAlertSubmittedObjectService;
import com.yeejoin.amos.boot.module.jcs.api.service.IAlertSubmittedService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yeejoin.amos.boot.module.jcs.api.vo.AlertSubmittedExtVo;
import com.yeejoin.amos.boot.module.jcs.api.vo.SchedulingReportingVo;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
/**
* 警情报送记录 服务实现类
......@@ -21,6 +31,9 @@ import java.util.List;
@Service
public class AlertSubmittedServiceImpl extends ServiceImpl<AlertSubmittedMapper, AlertSubmitted> implements IAlertSubmittedService {
@Autowired
IAlertSubmittedObjectService iAlertSubmittedObjectService;
@Override
public SchedulingReportingVo listSchedulingByParam(AlertSubmittedDto queryParam) {
SchedulingReportingVo schedulingReportingVo = new SchedulingReportingVo();
......@@ -42,13 +55,62 @@ public class AlertSubmittedServiceImpl extends ServiceImpl<AlertSubmittedMapper,
}
@Override
public Object save(AlertSubmittedDto alertSubmittedDto) {
public Boolean save(AlertSubmittedDto alertSubmittedDto) {
// 1.保存警情记录主表
AlertSubmitted alertSubmitted = new AlertSubmitted();
alertSubmitted.setAlertCalledId(alertSubmittedDto.getAlertCalledId());
alertSubmitted.setBusinessTypeCode(alertSubmittedDto.getBusinessTypeCode());
Optional<AlertBusinessTypeEnum> businessTypeEnum = EnumsUtils.getEnumObject(AlertBusinessTypeEnum.class,
e -> e.getCode().equals(alertSubmittedDto.getBusinessTypeCode()));
alertSubmitted.setBusinessType(businessTypeEnum.orElse(AlertBusinessTypeEnum.警情续报).getName());
alertSubmitted.setCallLogId(alertSubmittedDto.getCallLogId());
alertSubmitted.setSubmissionMethodCode(alertSubmittedDto.getSubmissionMethodCode());
Optional<SubmissionMethodEnum> submissionMethodEnum = EnumsUtils.getEnumObject(SubmissionMethodEnum.class,
e -> e.getCode().equals(alertSubmittedDto.getBusinessTypeCode()));
alertSubmitted.setSubmissionMethod(submissionMethodEnum.orElse(SubmissionMethodEnum.SMS).getName());
Optional<AlertSchedulingTypeEnum> alertSchedulingTypeEnum = EnumsUtils.getEnumObject(AlertSchedulingTypeEnum.class,
e -> e.getCode().equals(alertSubmittedDto.getBusinessTypeCode()));
alertSubmitted.setSchedulingTypeCode(alertSubmittedDto.getSchedulingTypeCode());
alertSubmitted.setSchedulingType(alertSchedulingTypeEnum.orElse(AlertSchedulingTypeEnum.融合调度).getName());
alertSubmitted.setSubmissionContent(alertSubmittedDto.getSubmitContent().toJSONString());
this.baseMapper.insert(alertSubmitted);
// 2.保存任务表
List<AlertSubmittedObject> alertSubmittedObjectList = Lists.newArrayList();
// 报送给单位
if (AlertSubmitTypeEnum.Org.getKey().equals(alertSubmittedDto.getType())) {
alertSubmittedDto.getSubmitCompanyList().forEach(company -> {
AlertSubmittedObject alertSubmittedObject = new AlertSubmittedObject();
alertSubmittedObject.setAlertSubmittedId(alertSubmitted.getSequenceNbr());
alertSubmittedObject.setType(true);
alertSubmittedObject.setCompanyId(company.getCompanyId());
alertSubmittedObject.setCompanyName(company.getCompanyName());
alertSubmittedObjectList.add(alertSubmittedObject);
});
} else {
// 报送给个人
alertSubmittedDto.getSubmitCompanyList().forEach(company -> {
company.getPersonList().forEach(person -> {
AlertSubmittedObject alertSubmittedObject = new AlertSubmittedObject();
alertSubmittedObject.setAlertSubmittedId(alertSubmitted.getSequenceNbr());
alertSubmittedObject.setType(false);
alertSubmittedObject.setCompanyId(company.getCompanyId());
alertSubmittedObject.setCompanyName(company.getCompanyName());
alertSubmittedObject.setUserId(person.getPersonId());
alertSubmittedObject.setUserName(person.getPersonName());
alertSubmittedObject.setUserPhone(person.getPersonPhone());
alertSubmittedObjectList.add(alertSubmittedObject);
});
});
}
iAlertSubmittedObjectService.saveBatch(alertSubmittedObjectList);
// 3.发送任务消息
return null;
// 调用平台短信发送接口发送消息
return true;
}
}
package com.yeejoin.amos.boot.module.jcs.biz.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.boot.module.jcs.api.entity.Template;
import com.yeejoin.amos.boot.module.jcs.api.mapper.TemplateMapper;
import com.yeejoin.amos.boot.module.jcs.api.service.ITemplateService;
......@@ -15,4 +16,8 @@ import org.springframework.stereotype.Service;
@Service
public class TemplateServiceImpl extends ServiceImpl<TemplateMapper, Template> implements ITemplateService {
@Override
public Template getByType(String type) {
return this.baseMapper.selectOne(new QueryWrapper<Template>().eq("type_code", type));
}
}
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