Commit ed1a677c by 刘鑫

CI:PEA 对外接口API定义

1 parent 0638281b
package com.dituhui.pea.order.controller;
import com.dituhui.pea.common.Result;
import com.dituhui.pea.order.dto.OrganizationTreeDTO;
import com.dituhui.pea.order.dto.param.CapacityQueryDTO;
import com.dituhui.pea.order.dto.param.EngineerParamDTO;
import com.dituhui.pea.order.dto.param.ValidGroup;
import lombok.RequiredArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDate;
/**
* PEA 调用API
*/
@RestController
@RequestMapping("/pea-order/pea")
@RequiredArgsConstructor
public class PeaApiController {
/**
* 2.1POST 组织架构同步事件通知
*
* @param requestParam 请求参数
* @return 成功或者失败
* @apiNote BEAN系统当组织架构信息变化的时候,通知PEA系统;然后PEA系统,将会根据变化的要素信息,再去向BEAN系统发起查询,去获取详细的信息;
*/
@PostMapping("/organization/tree")
public Result<?> organizationTree(@NotNull(message = "请求参数不能为空") @Validated({ValidGroup.PeaTree.class})
@RequestBody OrganizationTreeDTO.Request requestParam) {
return Result.success(null);
}
/**
* 2.2POST 组织人员同步事件通知
*
* @param requestParam 请求参数
* @return 成功或者失败
* @apiNote 当组织人员有变化的时候,BEAN调用本接口,告知PEA系统,该组织人员有变化,PEA系统再去BEAN系统发起查询,获取该组织所有的人员信息保存到本地;
*/
@PostMapping("/organization/staff")
public Result<?> organizationStaff(@RequestBody OrganizationTreeDTO.Request requestParam) {
return Result.success(null);
}
/**
* 2.3POST 技术员信息同步事件通知
*
* @param requestParam 请求参数
* @return 成功或者失败
* @apiNote 将网点/小组内的工程师信息,推送给PEA系统;包括2种模式:全量/增量;
*/
@PostMapping("/organization/engineer")
public Result<?> organizationEngineer(@RequestBody EngineerParamDTO.Request requestParam) {
return Result.success(null);
}
/**
* 4.1 创单可用容量查询
*
* @param reqDTO 查询参数
* @return 容量列表
*/
@PostMapping("/capacity/query")
public Result<CapacityQueryDTO.Result> capacityQuery(@Validated @RequestBody CapacityQueryDTO.Request reqDTO) {
//TODO 查询日期起止参数限制为一月
return Result.success(null);
}
/**
* 4.2 改派到人容量看板查询
*
* @param engineerCode 工程师工号
* @param beginDate 查询起始日期, 格式:yyyy-MM-dd
* @param endDate 查询截止日期, 格式:yyyy-MM-dd
* @return 容量列表
* @apiNote 查询指定人员的可用容量接口(改派到人)
*/
@GetMapping("/capacity/engineer")
public Result<CapacityQueryDTO.PersonalResult> capacityEngineer(@NotBlank @RequestParam("engineerCode") String engineerCode,
@NotNull @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate beginDate,
@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate endDate) {
return Result.success(null);
}
}
package com.dituhui.pea.order.dto; package com.dituhui.pea.order.dto;
import com.dituhui.pea.order.dto.param.ValidGroup;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import java.util.List; import java.util.List;
@lombok.Data @lombok.Data
...@@ -10,7 +12,15 @@ public class OrganizationTreeDTO { ...@@ -10,7 +12,15 @@ public class OrganizationTreeDTO {
@Data @Data
public static class Request { public static class Request {
/**
* 组织级别,包括:cluster大区; branch分部; group分站/网点
*/
@NotBlank(message = "组织级别不能为空", groups = {ValidGroup.PeaTree.class})
private String levelType; private String levelType;
/**
* 组织编码, 大区、分部、分站的编码;
*/
@NotBlank(message = "组织编码不能为空", groups = {ValidGroup.PeaTree.class})
private String levelValue; private String levelValue;
} }
......
package com.dituhui.pea.order.dto.param;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.validation.annotation.Validated;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
/**
* 创单可用容量
*/
@Validated
public class CapacityQueryDTO {
/**
* 查询参数
*/
@Setter
@Getter
public static class Request {
/**
* 服务技能
*/
@Valid
private List<Service> services;
/**
* 地址坐标信息
*/
@Valid
@NotNull
private Location location;
/**
* 查询起始日期
*/
@NotBlank
private String beginDate;
/**
* 查询结束日期
*/
@NotBlank
private String endDate;
}
/**
* 返回值
*/
@Setter
@Getter
public static class Result {
/**
* 符合条件的履约组织网点)Id
*/
private String groupId;
/**
* 原始请求参数
*/
private Request params;
/**
* 需要的服务时长,单位: 分钟
*/
private int takeTime;
/**
* 查询容量返回结果
*/
private List<Data> datas;
}
/**
* 改派到人查询结果
*/
@Setter
@Getter
public static class PersonalResult {
/**
* 查询的工程师工号
*/
private String engineerCode;
/**
* 查询工程师姓名
*/
private String engineerName;
/**
* 查询容量返回结果
*/
private List<Data> datas;
}
/**
* 查询容量返回结果
*/
@Setter
@Getter
public static class Data {
/**
* 日期 yyyy-MM-dd
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate date;
/**
* 容量列表
*/
private List<Segment> segments;
}
/**
* 容量
*/
@Setter
@Getter
public static class Segment {
/**
* 最大可用时长, 单位: 分钟
*/
private int maxDuration;
/**
* 容量名称 全天/上午/下午/晚上等
*/
private String name;
/**
* 起始时间 yyyy-MM-dd HH:mm:ss
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime beginTime;
/**
* 截止时间 yyyy-MM-dd HH:mm:ss
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime endTime;
/**
* 容量状态 0不可约;1可约;
*/
private int status;
/**
* 剩余容量
*/
private int remain;
}
/**
* 服务
*/
@Setter
@Getter
public static class Service {
/**
* 品牌
*/
@NotBlank
private String brand;
/**
* 产品类型
*/
@NotBlank
private String productType;
/**
* 需要的技能
*/
@NotBlank
private String serviceType;
}
}
package com.dituhui.pea.order.dto.param;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDate;
import java.util.List;
/**
* 技术员信息
*/
public class EngineerParamDTO {
/**
* Body 请求参数
*/
@Setter
@Getter
@Validated
public static class Request {
/**
* 网点/分站编码
*/
@NotBlank
private String groupId;
/**
* 同步工程师列表
*/
@NotNull
private List<Engineer> egineers;
}
/**
* 技术员信息
*/
public static class Engineer {
/**
* 工程师工号
*/
private String engineerCode;
/**
* 工程师姓名
*/
private String name;
/**
* 工程师联系电话
*/
private String phone;
private int kind;
/**
* 地址坐标信息
*/
private Location location;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate birth;
private String gender;
private List<String> skills;
private String grade;
private List<String> credentials;
private int vehicle;
private String status;
private String address;
private String vehicleNo;
private String memo;
}
}
package com.dituhui.pea.order.dto.param;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
/**
* 地址坐标信息
*/
@Setter
@Getter
public class Location {
/**
* 地点名称,例如:xx小区
*/
private String name;
/**
* 详细地址, xx路xx号等信息
*/
private String address;
/**
* 地址纬度
*/
@NotNull
private Double latitude;
/**
* 地址经度
*/
@NotNull
private Double longitude;
}
package com.dituhui.pea.order.dto.param;
import javax.validation.GroupSequence;
/**
* 参数校验分组, 定义分组
*/
public class ValidGroup {
/**
* 新增使用(配合spring的@Validated功能分组使用)
*/
public interface Insert {
}
/**
* 更新使用(配合spring的@Validated功能分组使用)
*/
public interface Update {
}
/**
* 删除使用(配合spring的@Validated功能分组使用)
*/
public interface Delete {
}
/**
* 属性必须有这两个分组的才验证(配合spring的@Validated功能分组使用)
*/
@GroupSequence({Insert.class, Update.class, Delete.class})
public interface All {
}
/**
* pea Api 组织架构同步事件
*/
public interface PeaTree {
}
/**
* pea Api 组织人员同步事件
*/
public interface PeaOrganization {
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!