Commit 05cef3a1 authored by hanbing's avatar hanbing

[add] 快速特勤,批量锁定/解锁

parent 7a870776
...@@ -7,6 +7,7 @@ import io.swagger.annotations.ApiResponses; ...@@ -7,6 +7,7 @@ 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.databus.vo.LockControlVO;
import net.wanji.web.bo.*; import net.wanji.web.bo.*;
import net.wanji.web.service.SpecialServiceService; import net.wanji.web.service.SpecialServiceService;
import net.wanji.web.vo.specialService.RouteElementVO; import net.wanji.web.vo.specialService.RouteElementVO;
...@@ -59,9 +60,7 @@ public class SpecialServiceController { ...@@ -59,9 +60,7 @@ public class SpecialServiceController {
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON) produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
public JsonViewObject addOrUpdateSpecialService(@RequestBody @Valid AddSpecialServiceBO addSpecialServiceBO) { public JsonViewObject addOrUpdateSpecialService(@RequestBody @Valid AddSpecialServiceBO addSpecialServiceBO) {
specialServiceService.addOrUpdateSpecialService(addSpecialServiceBO); specialServiceService.addOrUpdateSpecialService(addSpecialServiceBO);
JsonViewObject jsonViewObject = JsonViewObject.newInstance(); return JsonViewObject.newInstance().success();
return jsonViewObject.success();
} }
@AspectLog(description = "快速特勤列表", operationType = BaseEnum.OperationTypeEnum.QUERY) @AspectLog(description = "快速特勤列表", operationType = BaseEnum.OperationTypeEnum.QUERY)
...@@ -108,6 +107,16 @@ public class SpecialServiceController { ...@@ -108,6 +107,16 @@ public class SpecialServiceController {
return JsonViewObject.newInstance().success(); return JsonViewObject.newInstance().success();
} }
@AspectLog(description = "批量锁定/解锁", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "批量锁定/解锁", notes = "批量锁定/解锁", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/batchLock",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
public JsonViewObject batchLock(@RequestBody List<LockControlVO> lockControlVOList) {
specialServiceService.batchLock(lockControlVOList);
return JsonViewObject.newInstance().success();
}
@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)
......
...@@ -35,15 +35,15 @@ public interface SpecialServiceCrossMapper { ...@@ -35,15 +35,15 @@ public interface SpecialServiceCrossMapper {
void deleteCross(@Param("specialServiceId") Integer specialServiceId, void deleteCross(@Param("specialServiceId") Integer specialServiceId,
@Param("crossId") String crossId); @Param("crossId") String crossId);
void updateStatusSuccess(@Param("specialServiceId") Integer specialServiceId, void updateStatusSuccess(@Param("crossId") String crossId);
@Param("crossId") String crossId);
void updateStatusFail(@Param("specialServiceId") Integer specialServiceId, void updateStatusFail(@Param("crossId") String crossId);
@Param("crossId") String crossId);
void updateDir(@Param("specialServiceId") Integer specialServiceId, void updateDir(@Param("specialServiceId") Integer specialServiceId,
@Param("endCrossid")String endCrossid, @Param("endCrossid")String endCrossid,
@Param("endDirInt")Integer endDirInt); @Param("endDirInt")Integer endDirInt);
void deleteCrossBySpecialServiceId(@Param("id") Integer id); void deleteCrossBySpecialServiceId(@Param("id") Integer id);
Integer selectSpecialServiceIdByCrossId(String crossId);
} }
package net.wanji.web.service; package net.wanji.web.service;
import net.wanji.databus.vo.LockControlVO;
import net.wanji.web.bo.*; import net.wanji.web.bo.*;
import net.wanji.web.vo.specialService.RouteElementVO; import net.wanji.web.vo.specialService.RouteElementVO;
import net.wanji.web.vo.specialService.*; import net.wanji.web.vo.specialService.*;
...@@ -37,4 +38,6 @@ public interface SpecialServiceService { ...@@ -37,4 +38,6 @@ public interface SpecialServiceService {
List<String> getInDirList(CrossIdVO crossIdVO); List<String> getInDirList(CrossIdVO crossIdVO);
List<String> getOutDirList(CrossIdVO crossIdVO); List<String> getOutDirList(CrossIdVO crossIdVO);
void batchLock(List<LockControlVO> lockControlVOList);
} }
...@@ -14,6 +14,8 @@ import net.wanji.databus.dao.mapper.BaseCrossInfoMapper; ...@@ -14,6 +14,8 @@ import net.wanji.databus.dao.mapper.BaseCrossInfoMapper;
import net.wanji.databus.dao.mapper.CrossDirDataRealtimeMapper; import net.wanji.databus.dao.mapper.CrossDirDataRealtimeMapper;
import net.wanji.databus.dao.mapper.RidInfoMapper; import net.wanji.databus.dao.mapper.RidInfoMapper;
import net.wanji.databus.po.BaseCrossInfoPO; import net.wanji.databus.po.BaseCrossInfoPO;
import net.wanji.databus.vo.LockControlVO;
import net.wanji.feign.service.UtcFeignClients;
import net.wanji.web.bo.*; import net.wanji.web.bo.*;
import net.wanji.web.common.enums.CrossDirEnum; import net.wanji.web.common.enums.CrossDirEnum;
import net.wanji.web.mapper.*; import net.wanji.web.mapper.*;
...@@ -26,6 +28,7 @@ import net.wanji.web.vo.specialService.SpecialServiceDetailVO.CrossListElement; ...@@ -26,6 +28,7 @@ import net.wanji.web.vo.specialService.SpecialServiceDetailVO.CrossListElement;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.Geometry;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -59,6 +62,9 @@ public class SpecialServiceServiceImpl implements SpecialServiceService { ...@@ -59,6 +62,9 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
private GtsService gtsService; private GtsService gtsService;
@Autowired @Autowired
private CrossDirDataRealtimeMapper crossDirDataRealtimeMapper; private CrossDirDataRealtimeMapper crossDirDataRealtimeMapper;
@Qualifier("net.wanji.feign.service.UtcFeignClients")
@Autowired
private UtcFeignClients utcFeignClients;
@Override @Override
@Transactional @Transactional
...@@ -626,6 +632,37 @@ public class SpecialServiceServiceImpl implements SpecialServiceService { ...@@ -626,6 +632,37 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
return res; return res;
} }
@Override
@Transactional
public void batchLock(List<LockControlVO> lockControlVOList) {
// 获取关联特勤Id
LockControlVO vo = lockControlVOList.get(0);
String crossCode = vo.getCrossCode();
Integer specialServiceId = specialServiceCrossMapper.selectSpecialServiceIdByCrossId(crossCode);
for (LockControlVO lockControlVO : lockControlVOList) {
utcFeignClients.lockControl(lockControlVO);
Integer command = lockControlVO.getCommand();
String crossId = lockControlVO.getCrossCode();
if (1 == command) { // 锁定
specialServiceCrossMapper.updateStatusSuccess(crossId);
// 将关联特勤改为执行中
specialServiceMapper.updateStatusEnable(specialServiceId);
} else if (0 == command) { // 解锁
specialServiceCrossMapper.updateStatusFail(crossId);
}
}
// 如果特勤路口都是解锁,则更新特勤状态为未执行
List<SpecialServiceCrossPO> crossList = specialServiceCrossMapper.selectBySpecialServiceId(specialServiceId);
for (SpecialServiceCrossPO cross : crossList) {
Integer status = cross.getStatus();
if (1 == status) {
return;
}
}
specialServiceMapper.updateStatusDisable(specialServiceId);
}
private List<SpecialServiceDetailVO.CrossListElement> buildCrossList(Integer specialServiceId) { private List<SpecialServiceDetailVO.CrossListElement> buildCrossList(Integer specialServiceId) {
List<SpecialServiceDetailVO.CrossListElement> crossList = new ArrayList<>(); List<SpecialServiceDetailVO.CrossListElement> crossList = new ArrayList<>();
List<SpecialServiceCrossPO> specialServiceCrossList = List<SpecialServiceCrossPO> specialServiceCrossList =
......
...@@ -41,13 +41,13 @@ ...@@ -41,13 +41,13 @@
<update id="updateStatusSuccess"> <update id="updateStatusSuccess">
update t_special_service_cross update t_special_service_cross
set status = 1 set status = 1
where special_service_id = #{specialServiceId} and cross_id = #{crossId} where cross_id = #{crossId}
</update> </update>
<update id="updateStatusFail"> <update id="updateStatusFail">
update t_special_service_cross update t_special_service_cross
set status = 0 set status = 0
where special_service_id = #{specialServiceId} and cross_id = #{crossId} where cross_id = #{crossId}
</update> </update>
<update id="updateDir"> <update id="updateDir">
...@@ -91,4 +91,10 @@ ...@@ -91,4 +91,10 @@
where special_service_id = #{specialServiceId} and cross_id = #{startCrossid} where special_service_id = #{specialServiceId} and cross_id = #{startCrossid}
</select> </select>
<select id="selectSpecialServiceIdByCrossId" resultType="java.lang.Integer">
select distinct special_service_id
from t_special_service_cross
where cross_id = #{crossId}
</select>
</mapper> </mapper>
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