package com.haisen.laop.dto; import jakarta.validation.constraints.*; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; /** * 发布任务请求 DTO,对应原型图"发布任务"页面的全部表单字段。 * *
多选字段规约:前端以数组提交,Service 层负责转为分号拼接的 {@code String} 存入 DB; * 禁止前端直接拼字符串提交,避免格式校验遗漏。
* * @author duhao */ @Data public class TaskPublishDTO implements Serializable { private static final long serialVersionUID = 1L; /** * 任务名称,列表/详情页标题。 */ @NotBlank(message = "任务名称不能为空") @Size(max = 100, message = "任务名称长度不能超过100个字符") private String name; /** * 任务类型编码:1植保 2吊运 3航拍 4巡检 5清洗 6表演 7测绘。 */ @NotNull(message = "任务类型不能为空") private Integer type; /** * 省份,任务所在地 LBS 筛选维度。 */ @Size(max = 20, message = "省份长度不能超过20个字符") private String province; /** * 城市,任务所在地 LBS 筛选维度。 */ @Size(max = 20, message = "城市长度不能超过20个字符") private String city; /** * 区县。 */ @Size(max = 20, message = "区县长度不能超过20个字符") private String district; /** * 详细地址,飞手导航用;必填(地图选点必带)。 */ @NotBlank(message = "详细地址不能为空") @Size(max = 200, message = "详细地址长度不能超过200个字符") private String address; /** * 纬度坐标,地图选点时自动填入;String 避免浮点精度问题;必填。 */ @NotBlank(message = "纬度不能为空") @Size(max = 20, message = "纬度长度不能超过20个字符") private String latitude; /** * 经度坐标,地图选点时自动填入;String 避免浮点精度问题;必填。 */ @NotBlank(message = "经度不能为空") @Size(max = 20, message = "经度长度不能超过20个字符") private String longitude; /** * 作业场景图 file_id 列表,至少 1 张、最多 5 张。Service 层转为分号拼接字符串。 */ @NotNull(message = "场景图不能为空") @Size(min = 1, max = 5, message = "场景图至少上传1张,最多5张") private List