Commit 2f8b1844 authored by hanbing's avatar hanbing

[add] 快速特勤,添加特勤

parent e7e45a4a
package net.wanji.web.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.wanji.web.vo.RouteElementVO;
import javax.validation.constraints.Pattern;
import java.util.List;
/**
* @author Kent HAN
* @date 2022/11/8 11:01
*/
@Data
@ApiModel(value = "AddSpecialServiceBO", description = "快速特勤-添加特勤输入参数")
public class AddSpecialServiceBO {
@ApiModelProperty(value = "特勤名称")
@Pattern(regexp = "^[\\u4E00-\\u9FA5\\w\\-]{0,16}$", message = "只能包含中文、英文、数字、下划线和中横线,0~16个字符")
String name;
@ApiModelProperty(value = "起点坐标,格式:112.968523,28.179455")
String startLocation;
@ApiModelProperty(value = "终点坐标,格式:112.968523,28.179455")
String endLocation;
@ApiModelProperty(value = "特勤路线")
List<RouteElementVO> route;
@ApiModelProperty(value = "关联车辆")
@Pattern(regexp = "^[\\u4E00-\\u9FA5\\w\\-]{0,16}$", message = "编号只能包含中文、英文、数字、下划线和中横线,0~16个字符")
String plateNum;
}
...@@ -7,9 +7,9 @@ import io.swagger.annotations.ApiResponses; ...@@ -7,9 +7,9 @@ import io.swagger.annotations.ApiResponses;
import net.wanji.common.annotation.aspect.AspectLog; import net.wanji.common.annotation.aspect.AspectLog;
import net.wanji.common.enums.BaseEnum; import net.wanji.common.enums.BaseEnum;
import net.wanji.common.framework.rest.JsonViewObject; import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.web.bo.AddSpecialServiceBO;
import net.wanji.web.bo.IsValidPointBO; import net.wanji.web.bo.IsValidPointBO;
import net.wanji.web.bo.SpecialServiceRouteBO; import net.wanji.web.bo.SpecialServiceRouteBO;
import net.wanji.web.common.exception.CrossRelationException;
import net.wanji.web.service.SpecialServiceService; import net.wanji.web.service.SpecialServiceService;
import net.wanji.web.vo.RouteElementVO; import net.wanji.web.vo.RouteElementVO;
import net.wanji.web.vo.specialService.*; import net.wanji.web.vo.specialService.*;
...@@ -19,6 +19,7 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -19,6 +19,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MediaType;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
...@@ -61,8 +62,8 @@ public class SpecialServiceController { ...@@ -61,8 +62,8 @@ public class SpecialServiceController {
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON) produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/addSpecialService", @PostMapping(value = "/addSpecialService",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON) produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
public JsonViewObject addSpecialService(@RequestBody AddSpecialServiceInVO addSpecialServiceInVO) { public JsonViewObject addSpecialService(@RequestBody @Valid AddSpecialServiceBO addSpecialServiceBO) {
specialServiceService.addSpecialService(addSpecialServiceInVO); specialServiceService.addSpecialService(addSpecialServiceBO);
JsonViewObject jsonViewObject = JsonViewObject.newInstance(); JsonViewObject jsonViewObject = JsonViewObject.newInstance();
return jsonViewObject.success(); return jsonViewObject.success();
...@@ -109,37 +110,6 @@ public class SpecialServiceController { ...@@ -109,37 +110,6 @@ public class SpecialServiceController {
return jsonViewObject.success(); return jsonViewObject.success();
} }
@AspectLog(description = "添加路口", operationType = BaseEnum.OperationTypeEnum.INSERT)
@ApiOperation(value = "添加路口", notes = "添加路口", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/addCross",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
public JsonViewObject addCross(@RequestBody AddCrossInVO addCrossInVO) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
try {
specialServiceService.addCross(addCrossInVO);
return jsonViewObject.success();
} catch (CrossRelationException e) {
return jsonViewObject.fail("路段关系不正确");
}
}
@AspectLog(description = "路口列表", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "路口列表", notes = "路口列表", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/crossList",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = CrossListOutVO.class),
})
public JsonViewObject crossList(@RequestBody CrossListInVO crossListInVO) {
Integer specialServiceId = crossListInVO.getSpecialServiceId();
List<CrossListOutVO> crossListOutVOList = specialServiceService.crossList(specialServiceId);
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
return jsonViewObject.success(crossListOutVOList);
}
@AspectLog(description = "更新路口", operationType = BaseEnum.OperationTypeEnum.UPDATE) @AspectLog(description = "更新路口", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "更新路口", notes = "更新路口", response = JsonViewObject.class, @ApiOperation(value = "更新路口", notes = "更新路口", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON) produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
...@@ -164,29 +134,6 @@ public class SpecialServiceController { ...@@ -164,29 +134,6 @@ public class SpecialServiceController {
return jsonViewObject.success(); return jsonViewObject.success();
} }
@AspectLog(description = "一键特勤", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "一键特勤", notes = "一键特勤", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/enableSpecialService",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
public JsonViewObject enableSpecialService(@RequestBody EnableDisableSpecialServiceInVO enableDisableSpecialServiceInVO) {
specialServiceService.enableSpecialService(enableDisableSpecialServiceInVO);
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
return jsonViewObject.success();
}
@AspectLog(description = "一键取消特勤", operationType = BaseEnum.OperationTypeEnum.DELETE)
@ApiOperation(value = "一键取消特勤", notes = "一键取消特勤", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/disableSpecialService",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
public JsonViewObject disableSpecialService(@RequestBody EnableDisableSpecialServiceInVO enableDisableSpecialServiceInVO) {
specialServiceService.disableSpecialService(enableDisableSpecialServiceInVO);
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
return jsonViewObject.success();
}
@AspectLog(description = "路口进口列表", operationType = BaseEnum.OperationTypeEnum.QUERY) @AspectLog(description = "路口进口列表", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "路口进口列表", notes = "路口进口列表", response = JsonViewObject.class, @ApiOperation(value = "路口进口列表", notes = "路口进口列表", response = JsonViewObject.class,
......
package net.wanji.web.mapper; package net.wanji.web.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import net.wanji.web.po.SpecialServiceCrossPO; import net.wanji.web.po.SpecialServiceCrossPO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -12,7 +11,6 @@ import java.util.List; ...@@ -12,7 +11,6 @@ import java.util.List;
* @date 2022/11/8 14:48 * @date 2022/11/8 14:48
*/ */
@Repository @Repository
@DS("webService")
public interface SpecialServiceCrossMapper { public interface SpecialServiceCrossMapper {
void insertOne(SpecialServiceCrossPO specialServiceCrossPO); void insertOne(SpecialServiceCrossPO specialServiceCrossPO);
......
package net.wanji.web.mapper; package net.wanji.web.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import net.wanji.web.po.SpecialServicePO; import net.wanji.web.po.SpecialServicePO;
import net.wanji.web.vo.specialService.UpdateSpecialServiceInVO; import net.wanji.web.vo.specialService.UpdateSpecialServiceInVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -13,7 +12,6 @@ import java.util.List; ...@@ -13,7 +12,6 @@ import java.util.List;
* @date 2022/11/8 11:14 * @date 2022/11/8 11:14
*/ */
@Repository @Repository
@DS("webService")
public interface SpecialServiceMapper { public interface SpecialServiceMapper {
void insertOne(SpecialServicePO specialServicePO); void insertOne(SpecialServicePO specialServicePO);
......
...@@ -19,21 +19,23 @@ public class SpecialServiceCrossPO { ...@@ -19,21 +19,23 @@ public class SpecialServiceCrossPO {
/** 特勤ID */ /** 特勤ID */
@ApiModelProperty(name = "特勤ID",notes = "") @ApiModelProperty(name = "特勤ID",notes = "")
private Integer specialServiceId ; private Integer specialServiceId ;
@ApiModelProperty(name = "分组名称",notes = "")
private String groupName = "未分组路口";
/** 路口编号 */ /** 路口编号 */
@ApiModelProperty(name = "路口编号",notes = "") @ApiModelProperty(name = "路口ID",notes = "")
private String crossId ; private String crossId ;
/** 进口方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北 */ /** 进口方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北 */
@ApiModelProperty(name = "进口方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北",notes = "") @ApiModelProperty(name = "驶入方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北",notes = "")
private Integer dir = 1 ; private Integer inDir ;
/** 转向:l左转;s直行;r右转;u掉头 */ @ApiModelProperty(name = "驶出方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北",notes = "")
@ApiModelProperty(name = "转向:l左转;s直行;r右转;u掉头",notes = "") private Integer outDir ;
private String turn ; @ApiModelProperty(name = "路口顺序号",notes = "")
/** 顺序号 */
@ApiModelProperty(name = "顺序号",notes = "")
private Integer sort ; private Integer sort ;
/** 执行状态:1成功;0失败 */ @ApiModelProperty(name = "锁定状态:1锁定;0解锁",notes = "")
@ApiModelProperty(name = "执行状态:1成功;0失败",notes = "") private Integer status ;
private Integer status = 0 ; @ApiModelProperty(name = "自动解锁:1是;0否",notes = "")
private Integer autoUnlock ;
/** 创建时间 */ /** 创建时间 */
@ApiModelProperty(name = "创建时间",notes = "") @ApiModelProperty(name = "创建时间",notes = "")
private Date gmtCreate ; private Date gmtCreate ;
......
...@@ -12,29 +12,27 @@ import java.util.Date; ...@@ -12,29 +12,27 @@ import java.util.Date;
*/ */
@Data @Data
public class SpecialServicePO { public class SpecialServicePO {
/** 特勤ID */
@Id @Id
@ApiModelProperty(name = "特勤ID",notes = "") @ApiModelProperty(name = "特勤ID",notes = "")
private Integer id ; private Integer id ;
/** 特勤名称 */
@ApiModelProperty(name = "特勤名称",notes = "") @ApiModelProperty(name = "特勤名称",notes = "")
private String name ; private String name ;
/** 控制类型:1手动;2自动 */ @ApiModelProperty(name = "关联车辆车牌号",notes = "")
private String plateNum ;
@ApiModelProperty(name = "控制类型:1手动;2自动",notes = "") @ApiModelProperty(name = "控制类型:1手动;2自动",notes = "")
private Integer controlModel = 1; private Integer controlModel = 1;
/** 特勤线路长度 */
@ApiModelProperty(name = "特勤线路长度",notes = "") @ApiModelProperty(name = "特勤线路长度",notes = "")
private Double length = 0.0 ; private Double length = 0.0 ;
/** 是否被删除:1是;0否 */
@ApiModelProperty(name = "是否被删除:1是;0否",notes = "")
private Integer isDel = 0 ;
/** 特勤状态:1执行;0未执行 */
@ApiModelProperty(name = "特勤状态:1执行;0未执行",notes = "") @ApiModelProperty(name = "特勤状态:1执行;0未执行",notes = "")
private Integer status = 0 ; private Integer status = 0 ;
/** 创建时间 */ @ApiModelProperty(value = "起点坐标,格式:112.968523,28.179455")
String startLocation;
@ApiModelProperty(value = "终点坐标,格式:112.968523,28.179455")
String endLocation;
@ApiModelProperty(name = "是否被删除:1是;0否",notes = "")
private Integer isDel = 0 ;
@ApiModelProperty(name = "创建时间",notes = "") @ApiModelProperty(name = "创建时间",notes = "")
private Date gmtCreate ; private Date gmtCreate ;
/** 修改时间 */
@ApiModelProperty(name = "修改时间",notes = "") @ApiModelProperty(name = "修改时间",notes = "")
private Date gmtModified ; private Date gmtModified ;
} }
package net.wanji.web.service; package net.wanji.web.service;
import net.wanji.web.bo.AddSpecialServiceBO;
import net.wanji.web.bo.IsValidPointBO; import net.wanji.web.bo.IsValidPointBO;
import net.wanji.web.bo.SpecialServiceRouteBO; import net.wanji.web.bo.SpecialServiceRouteBO;
import net.wanji.web.vo.RouteElementVO; import net.wanji.web.vo.RouteElementVO;
...@@ -13,7 +14,7 @@ import java.util.Set; ...@@ -13,7 +14,7 @@ import java.util.Set;
* @date 2022/11/8 11:06 * @date 2022/11/8 11:06
*/ */
public interface SpecialServiceService { public interface SpecialServiceService {
void addSpecialService(AddSpecialServiceInVO addSpecialServiceInVO); void addSpecialService(AddSpecialServiceBO addSpecialServiceBO);
List<ListSpecialServicesOutVO> listSpecialServices(String adCode); List<ListSpecialServicesOutVO> listSpecialServices(String adCode);
...@@ -21,18 +22,10 @@ public interface SpecialServiceService { ...@@ -21,18 +22,10 @@ public interface SpecialServiceService {
void deleteSpecialService(Integer id); void deleteSpecialService(Integer id);
void addCross(AddCrossInVO addCrossInVO);
List<CrossListOutVO> crossList(Integer specialServiceId);
void updateCross(UpdateCrossInVO updateCrossInVO); void updateCross(UpdateCrossInVO updateCrossInVO);
void deleteCross(DeleteCrossInVO deleteCrossInVO); void deleteCross(DeleteCrossInVO deleteCrossInVO);
void enableSpecialService(EnableDisableSpecialServiceInVO enableDisableSpecialServiceInVO);
void disableSpecialService(EnableDisableSpecialServiceInVO enableDisableSpecialServiceInVO);
Set<String> crossInList(String crossId); Set<String> crossInList(String crossId);
List<List<RouteElementVO>> specialServiceRoute(SpecialServiceRouteBO specialServiceRouteBO); List<List<RouteElementVO>> specialServiceRoute(SpecialServiceRouteBO specialServiceRouteBO);
......
package net.wanji.web.vo; package net.wanji.web.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -8,6 +9,7 @@ import lombok.Data; ...@@ -8,6 +9,7 @@ import lombok.Data;
* @date 2023/5/16 14:27 * @date 2023/5/16 14:27
*/ */
@Data @Data
@ApiModel(value = "RouteElementVO", description = "特勤路线列表元素")
public class RouteElementVO { public class RouteElementVO {
@ApiModelProperty(value = "起点坐标") @ApiModelProperty(value = "起点坐标")
private String startLonLat; private String startLonLat;
......
package net.wanji.web.vo.specialService;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Kent HAN
* @date 2022/11/8 11:01
*/
@Data
@ApiModel(value = "AddSpecialServiceInVO", description = "快速特勤-添加特勤输入参数")
public class AddSpecialServiceInVO {
@ApiModelProperty(value = "城市代码,示例值:110000")
String adCode;
@ApiModelProperty(value = "特勤名称")
String name;
}
...@@ -4,20 +4,26 @@ ...@@ -4,20 +4,26 @@
<!-- 通用查询映射结果 --> <!-- 通用查询映射结果 -->
<resultMap type="net.wanji.web.po.SpecialServiceCrossPO" id="BaseResultMap"> <resultMap type="net.wanji.web.po.SpecialServiceCrossPO" id="BaseResultMap">
<result property="id" column="id"/> <result property="id" column="id" />
<result property="specialServiceId" column="special_service_id"/> <result property="specialServiceId" column="special_service_id" />
<result property="crossId" column="cross_id"/> <result property="groupName" column="group_name" />
<result property="dir" column="dir"/> <result property="crossId" column="cross_id" />
<result property="turn" column="turn"/> <result property="inDir" column="in_dir" />
<result property="sort" column="sort"/> <result property="outDir" column="out_dir" />
<result property="status" column="status"/> <result property="sort" column="sort" />
<result property="gmtCreate" column="gmt_create"/> <result property="status" column="status" />
<result property="gmtModified" column="gmt_modified"/> <result property="autoUnlock" column="auto_unlock" />
<result property="gmtCreate" column="gmt_create" />
<result property="gmtModified" column="gmt_modified" />
</resultMap> </resultMap>
<insert id="insertOne"> <sql id="Base_Column_List">
insert into t_special_service_cross(special_service_id,cross_id,dir,sort,status) id,special_service_id,group_name,cross_id,in_dir,out_dir,sort,status,auto_unlock,gmt_create,gmt_modified
values (#{specialServiceId},#{crossId},#{dir},#{sort},#{status}) </sql>
<insert id="insertOne" keyProperty="id" useGeneratedKeys="true">
insert into t_special_service_cross(special_service_id,cross_id,in_dir,out_dir,sort,status,auto_unlock)
values (#{specialServiceId},#{crossId},#{inDir},#{outDir},#{sort},#{status},#{autoUnlock})
</insert> </insert>
<update id="updateTurn"> <update id="updateTurn">
......
...@@ -4,19 +4,26 @@ ...@@ -4,19 +4,26 @@
<!-- 通用查询映射结果 --> <!-- 通用查询映射结果 -->
<resultMap type="net.wanji.web.po.SpecialServicePO" id="BaseResultMap"> <resultMap type="net.wanji.web.po.SpecialServicePO" id="BaseResultMap">
<result property="id" column="id"/> <result property="id" column="id" />
<result property="name" column="name"/> <result property="name" column="name"/>
<result property="plateNum" column="plate_num"/>
<result property="controlModel" column="control_model"/> <result property="controlModel" column="control_model"/>
<result property="length" column="length"/> <result property="length" column="length"/>
<result property="isDel" column="is_del"/>
<result property="status" column="status"/> <result property="status" column="status"/>
<result property="startLocation" column="start_location"/>
<result property="endLocation" column="end_location"/>
<result property="isDel" column="is_del"/>
<result property="gmtCreate" column="gmt_create"/> <result property="gmtCreate" column="gmt_create"/>
<result property="gmtModified" column="gmt_modified"/> <result property="gmtModified" column="gmt_modified"/>
</resultMap> </resultMap>
<insert id="insertOne"> <sql id="Base_Column_List">
insert into t_special_service_info(name,control_model,length,is_del,status) id,name,plate_num,control_model,length,status,start_location,end_location,is_del,gmt_create,gmt_modified
values (#{name},#{controlModel},#{length},#{isDel},#{status}) </sql>
<insert id="insertOne" keyProperty="id" useGeneratedKeys="true">
insert into t_special_service_info(name,plate_num,control_model,length,status,start_location,end_location,is_del)
values (#{name},#{plateNum},#{controlModel},#{length},#{status},#{startLocation},#{endLocation},#{isDel})
</insert> </insert>
<insert id="insertLength"> <insert id="insertLength">
......
...@@ -28,7 +28,7 @@ public interface BaseCrossInfoMapper extends BaseMapper<TBaseCrossInfo> { ...@@ -28,7 +28,7 @@ public interface BaseCrossInfoMapper extends BaseMapper<TBaseCrossInfo> {
BaseCrossInfoPO selectById(String crossId); BaseCrossInfoPO selectById(String crossId);
List<BaseCrossInfoPO> selectByName(String name); BaseCrossInfoPO selectByName(String name);
List<BaseCrossInfoPO> selectAll(); List<BaseCrossInfoPO> selectAll();
......
...@@ -266,4 +266,10 @@ ...@@ -266,4 +266,10 @@
</if> </if>
</where> </where>
</select> </select>
<select id="selectByName" resultType="net.wanji.databus.po.BaseCrossInfoPO">
select <include refid="baseColumn"/>
from t_base_cross_info
where name = #{name}
</select>
</mapper> </mapper>
\ No newline at end of file
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