1.口门门禁-违规记录

koumen
guoyuepeng 2025-11-22 09:21:42 +08:00
parent b050ca0bd6
commit e5c0e4f9ba
18 changed files with 234 additions and 24 deletions

View File

@ -6,6 +6,10 @@ application:
version:
gateway: primeport
cn-name: 一级口门管理
server:
port: 801
debug: true
spring:
application:
name: ${application.name}${application.version}
@ -20,7 +24,7 @@ spring:
file-extension: yml
shared-configs:
- config-common.yml
- config-port.yml
# - config-port.yml
- config-mq.yml
- config-log.yml
- config-sdk-server.yml
@ -36,3 +40,4 @@ spring:
discovery:
server-addr: ${spring.cloud.nacos.config.server-addr}
namespace: ${spring.cloud.nacos.config.namespace}

View File

@ -1,3 +1,3 @@
server:
port: 80
debug: true
port: 801
debug: true

View File

@ -10,6 +10,7 @@ import com.zcloud.primeport.dto.VehicleViolationsAddCmd;
import com.zcloud.primeport.dto.VehicleViolationsPageQry;
import com.zcloud.primeport.dto.VehicleViolationsUpdateCmd;
import com.zcloud.primeport.dto.clientobject.VehicleViolationsCO;
import com.zcloud.primeport.dto.clientobject.VehicleViolationsListCO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
@ -24,7 +25,7 @@ import java.util.ArrayList;
* @Author guoyuepeng
* @Date 2025-11-21 16:34:29
*/
@Api(tags = "")
@Api(tags = "车辆违规记录")
@RequestMapping("/${application.gateway}/vehicleViolations")
@RestController
@AllArgsConstructor
@ -43,13 +44,6 @@ public class VehicleViolationsController {
public PageResponse<VehicleViolationsCO> page(@RequestBody VehicleViolationsPageQry qry) {
return vehicleViolationsService.listPage(qry);
}
@ApiOperation("所有数据")
@GetMapping("/listAll")
public MultiResponse<VehicleViolationsCO> listAll() {
return MultiResponse.of(new ArrayList<VehicleViolationsCO>());
}
@ApiOperation("详情")
@GetMapping("/{id}")
public SingleResponse<VehicleViolationsCO> getInfoById(@PathVariable("id") Long id) {
@ -63,18 +57,17 @@ public class VehicleViolationsController {
return SingleResponse.buildSuccess();
}
@ApiOperation("删除多个")
@DeleteMapping("/ids")
public Response removeBatch(@RequestParam Long[] ids) {
vehicleViolationsService.removeBatch(ids);
return SingleResponse.buildSuccess();
}
@ApiOperation("修改")
@PutMapping("/edit")
public SingleResponse edit(@Validated @RequestBody VehicleViolationsUpdateCmd vehicleViolationsUpdateCmd) {
vehicleViolationsService.edit(vehicleViolationsUpdateCmd);
return SingleResponse.buildSuccess();
}
@ApiOperation("分页-和违规次数")
@PostMapping("/pageAncCount")
public PageResponse<VehicleViolationsListCO> pageAncCount(@RequestBody VehicleViolationsPageQry qry) {
return vehicleViolationsService.listAndCountPage(qry);
}
}

View File

@ -1,6 +1,8 @@
package com.zcloud.primeport.command;
import com.alibaba.cola.exception.BizException;
import com.zcloud.primeport.domain.gateway.VehicleBlackGateway;
import com.zcloud.primeport.domain.gateway.VehicleViolationsGateway;
import com.zcloud.primeport.domain.model.VehicleBlackE;
import com.zcloud.primeport.domain.model.VehicleViolationsE;
import com.zcloud.primeport.dto.VehicleViolationsAddCmd;
import lombok.AllArgsConstructor;
@ -19,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional;
@AllArgsConstructor
public class VehicleViolationsAddExe {
private final VehicleViolationsGateway vehicleViolationsGateway;
private final VehicleBlackGateway vehicleBlackGateway;
@Transactional(rollbackFor = Exception.class)
public boolean execute(VehicleViolationsAddCmd cmd) {
@ -27,6 +30,12 @@ public class VehicleViolationsAddExe {
boolean res = false;
try {
res = vehicleViolationsGateway.add(vehicleViolationsE);
Long count = vehicleViolationsGateway.getCountByVehicleId(vehicleViolationsE.getVehicleId());
if (count >= 5){ //如果超过5次违规则加入黑名单
VehicleBlackE vehicleBlackE = new VehicleBlackE();
vehicleBlackE.setVehicleId(vehicleViolationsE.getVehicleId());
res = vehicleBlackGateway.add(vehicleBlackE);
}
} catch (Exception e) {
throw new RuntimeException(e);
}

View File

@ -1,6 +1,8 @@
package com.zcloud.primeport.command.convertor;
import com.zcloud.primeport.dto.clientobject.VehicleViolationsCO;
import com.zcloud.primeport.dto.clientobject.VehicleViolationsListCO;
import com.zcloud.primeport.persistence.dataobject.VehicleCountFromViolationsDO;
import com.zcloud.primeport.persistence.dataobject.VehicleViolationsDO;
import org.mapstruct.Mapper;
@ -22,5 +24,9 @@ public interface VehicleViolationsCoConvertor {
List<VehicleViolationsCO> converDOsToCOs(List<VehicleViolationsDO> vehicleViolationsDOs);
VehicleViolationsCO converDOToCO(VehicleViolationsDO vehicleViolationsDO);
List<VehicleViolationsListCO> converFromViolationsDOsToCOs(List<VehicleCountFromViolationsDO> vehicleViolationsDOs);
}

View File

@ -5,7 +5,10 @@ import com.alibaba.cola.dto.PageResponse;
import com.zcloud.primeport.command.convertor.VehicleViolationsCoConvertor;
import com.zcloud.primeport.dto.VehicleViolationsPageQry;
import com.zcloud.primeport.dto.clientobject.VehicleViolationsCO;
import com.zcloud.primeport.dto.clientobject.VehicleViolationsListCO;
import com.zcloud.primeport.persistence.dataobject.VehicleCountFromViolationsDO;
import com.zcloud.primeport.persistence.dataobject.VehicleViolationsDO;
import com.zcloud.primeport.persistence.repository.VehicleMessageRepository;
import com.zcloud.primeport.persistence.repository.VehicleViolationsRepository;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
@ -25,7 +28,7 @@ import java.util.Map;
public class VehicleViolationsQueryExe {
private final VehicleViolationsRepository vehicleViolationsRepository;
private final VehicleViolationsCoConvertor vehicleViolationsCoConvertor;
private final VehicleMessageRepository vehicleMessageRepository;
/**
* id
*
@ -48,5 +51,13 @@ public class VehicleViolationsQueryExe {
List<VehicleViolationsCO> examCenterCOS = vehicleViolationsCoConvertor.converDOsToCOs(pageResponse.getData());
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
public PageResponse<VehicleViolationsListCO> executeFromViolations(VehicleViolationsPageQry vehicleViolationsPageQry) {
Map<String, Object> params = PageQueryHelper.toHashMap(vehicleViolationsPageQry);
PageResponse<VehicleCountFromViolationsDO> pageResponse = vehicleMessageRepository.listPageFromViolations(params);
List<VehicleViolationsListCO> examCenterCOS = vehicleViolationsCoConvertor.converFromViolationsDOsToCOs(pageResponse.getData());
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
}

View File

@ -11,6 +11,7 @@ import com.zcloud.primeport.dto.VehicleViolationsAddCmd;
import com.zcloud.primeport.dto.VehicleViolationsPageQry;
import com.zcloud.primeport.dto.VehicleViolationsUpdateCmd;
import com.zcloud.primeport.dto.clientobject.VehicleViolationsCO;
import com.zcloud.primeport.dto.clientobject.VehicleViolationsListCO;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
@ -60,5 +61,10 @@ public class VehicleViolationsServiceImpl implements VehicleViolationsServiceI {
public void removeBatch(Long[] ids) {
vehicleViolationsRemoveExe.execute(ids);
}
@Override
public PageResponse<VehicleViolationsListCO> listAndCountPage(VehicleViolationsPageQry qry) {
return vehicleViolationsQueryExe.executeFromViolations(qry);
}
}

View File

@ -6,6 +6,7 @@ import com.zcloud.primeport.dto.VehicleViolationsAddCmd;
import com.zcloud.primeport.dto.VehicleViolationsPageQry;
import com.zcloud.primeport.dto.VehicleViolationsUpdateCmd;
import com.zcloud.primeport.dto.clientobject.VehicleViolationsCO;
import com.zcloud.primeport.dto.clientobject.VehicleViolationsListCO;
/**
* web-client
@ -25,5 +26,9 @@ public interface VehicleViolationsServiceI {
void remove(Long id);
void removeBatch(Long[] ids);
PageResponse<VehicleViolationsListCO> listAndCountPage(VehicleViolationsPageQry qry);
}

View File

@ -24,7 +24,7 @@ import java.util.Date;
@AllArgsConstructor
public class VehicleViolationsAddCmd extends Command {
@ApiModelProperty(value = "车辆信息表t_vehicle_message的主键id", name = "vehicleId", required = true)
@NotNull(message = "车辆信息t_vehicle_message主键id不能为空")
@NotNull(message = "车辆信息主键")
private Long vehicleId;
@ApiModelProperty(value = "违规类型0-未按规定车道行驶1-违规停车)", name = "violationType", required = true)

View File

@ -0,0 +1,41 @@
package com.zcloud.primeport.dto.clientobject;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.jjb.saas.framework.repository.basedo.BaseDO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* web-infrastructure
*
* @Author guoyuepeng
* @Date 2025-11-15 11:41:21
*/
@Data
public class VehicleCountFromViolationsCO extends BaseDO {
@ApiModelProperty(value = "id")
@TableId(type = IdType.ASSIGN_ID)
private Long id;
//业务id
@ApiModelProperty(value = "业务id")
private String vehicleMessageId;
//车牌类型 0-白牌 1- 蓝牌 2-黄牌 3-绿牌 4-黑牌
@ApiModelProperty(value = "车牌类型 0-白牌 1- 蓝牌 2-黄牌 3-绿牌 4-黑牌")
private Integer licenceType;
//车牌号
@ApiModelProperty(value = "车牌号")
private String licenceNo;
//车辆类型
@ApiModelProperty(value = "车辆类型")
private String vehicleType;
@ApiModelProperty(value = "车辆类型-名字")
private String vehicleTypeName;
@ApiModelProperty(value = "车辆所属类型 0-员工车辆 1- 单位车辆 2-相关方车辆3货运车辆,4:临时车辆")
private Integer vehicleBelongType;
@ApiModelProperty(value = "违规数量")
private String violationsCount;
}

View File

@ -0,0 +1,43 @@
package com.zcloud.primeport.dto.clientobject;
import com.alibaba.cola.dto.ClientObject;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.sql.Date;
/**
* web-client
*
* @Author guoyuepeng
* @Date 2025-11-21 16:34:28
*/
@Data
public class VehicleViolationsListCO extends ClientObject {
@ApiModelProperty(value = "id")
@TableId(type = IdType.ASSIGN_ID)
private Long id;
//业务id
@ApiModelProperty(value = "业务id")
private String vehicleMessageId;
//车牌类型 0-白牌 1- 蓝牌 2-黄牌 3-绿牌 4-黑牌
@ApiModelProperty(value = "车牌类型 0-白牌 1- 蓝牌 2-黄牌 3-绿牌 4-黑牌")
private Integer licenceType;
//车牌号
@ApiModelProperty(value = "车牌号")
private String licenceNo;
//车辆类型
@ApiModelProperty(value = "车辆类型")
private String vehicleType;
@ApiModelProperty(value = "车辆类型-名字")
private String vehicleTypeName;
@ApiModelProperty(value = "车辆所属类型 0-员工车辆 1- 单位车辆 2-相关方车辆3货运车辆,4:临时车辆")
private Integer vehicleBelongType;
@ApiModelProperty(value = "违规数量")
private String violationsCount;
}

View File

@ -27,5 +27,12 @@ public interface VehicleViolationsGateway {
Boolean deletedVehicleViolationsById(Long id);
Boolean deletedVehicleViolationsByIds(Long[] id);
/**
*
* @param vehicleId
* @return
*/
Long getCountByVehicleId(Long vehicleId);
}

View File

@ -1,6 +1,5 @@
package com.zcloud.primeport.gatewayimpl;
import com.zcloud.gbscommon.utils.Tools;
import com.zcloud.primeport.domain.gateway.VehicleViolationsGateway;
import com.zcloud.primeport.domain.model.VehicleViolationsE;
import com.zcloud.primeport.persistence.dataobject.VehicleViolationsDO;
@ -40,12 +39,25 @@ public class VehicleViolationsGatewayImpl implements VehicleViolationsGateway {
@Override
public Boolean deletedVehicleViolationsById(Long id) {
return vehicleViolationsRepository.removeById(id);
VehicleViolationsDO d = new VehicleViolationsDO();
d.setId(id);
d.setDeleteEnum("TRUE");
boolean b = vehicleViolationsRepository.updateById(d);
return b;
}
@Override
public Boolean deletedVehicleViolationsByIds(Long[] ids) {
return vehicleViolationsRepository.removeByIds(Arrays.asList(ids));
}
@Override
public Long getCountByVehicleId(Long vehicleId) {
long count = vehicleViolationsRepository.count(
vehicleViolationsRepository.lambdaQuery()
.eq(VehicleViolationsDO::getVehicleId, vehicleId)
);
return count;
}
}

View File

@ -0,0 +1,41 @@
package com.zcloud.primeport.persistence.dataobject;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.jjb.saas.framework.repository.basedo.BaseDO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* web-infrastructure
*
* @Author guoyuepeng
* @Date 2025-11-15 11:41:21
*/
@Data
public class VehicleCountFromViolationsDO extends BaseDO {
@ApiModelProperty(value = "id")
@TableId(type = IdType.ASSIGN_ID)
private Long id;
//业务id
@ApiModelProperty(value = "业务id")
private String vehicleMessageId;
//车牌类型 0-白牌 1- 蓝牌 2-黄牌 3-绿牌 4-黑牌
@ApiModelProperty(value = "车牌类型 0-白牌 1- 蓝牌 2-黄牌 3-绿牌 4-黑牌")
private Integer licenceType;
//车牌号
@ApiModelProperty(value = "车牌号")
private String licenceNo;
//车辆类型
@ApiModelProperty(value = "车辆类型")
private String vehicleType;
@ApiModelProperty(value = "车辆类型-名字")
private String vehicleTypeName;
@ApiModelProperty(value = "车辆所属类型 0-员工车辆 1- 单位车辆 2-相关方车辆3货运车辆,4:临时车辆")
private Integer vehicleBelongType;
@ApiModelProperty(value = "违规数量")
private String violationsCount;
}

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zcloud.primeport.persistence.dataobject.VehicleCountByCorpDO;
import com.zcloud.primeport.persistence.dataobject.VehicleCountFromViolationsDO;
import com.zcloud.primeport.persistence.dataobject.VehicleMessageDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -19,5 +20,8 @@ import java.util.Map;
public interface VehicleMessageMapper extends BaseMapper<VehicleMessageDO> {
IPage<VehicleCountByCorpDO> listCountFromCorp(Page<Map<String, Object>> page, @Param("params") Map<String, Object> parmas);
IPage<VehicleCountFromViolationsDO> listFroViolations(Page<Map<String, Object>> page, @Param("params") Map<String, Object> parmas);
}

View File

@ -4,6 +4,7 @@ import com.alibaba.cola.dto.PageResponse;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.repository.repo.BaseRepository;
import com.zcloud.primeport.persistence.dataobject.VehicleCountByCorpDO;
import com.zcloud.primeport.persistence.dataobject.VehicleCountFromViolationsDO;
import com.zcloud.primeport.persistence.dataobject.VehicleMessageDO;
import java.util.List;
@ -25,4 +26,6 @@ public interface VehicleMessageRepository extends BaseRepository<VehicleMessageD
List<VehicleMessageDO> listAll(Long [] ids);
VehicleMessageDO getByLicenceNo(String licenceNo);
PageResponse<VehicleCountFromViolationsDO> listPageFromViolations(Map<String,Object> parmas);
}

View File

@ -9,14 +9,13 @@ import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.gbscommon.utils.Query;
import com.zcloud.primeport.persistence.dataobject.VehicleCountByCorpDO;
import com.zcloud.primeport.persistence.dataobject.VehicleCountFromViolationsDO;
import com.zcloud.primeport.persistence.dataobject.VehicleMessageDO;
import com.zcloud.primeport.persistence.mapper.VehicleMessageMapper;
import com.zcloud.primeport.persistence.repository.VehicleMessageRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@ -60,5 +59,16 @@ public class VehicleMessageRepositoryImpl extends BaseRepositoryImpl<VehicleMess
return vehicleMessageMapper.selectOne(queryWrapper);
}
/**
*
* @param parmas
* @return
*/
@Override
public PageResponse<VehicleCountFromViolationsDO> listPageFromViolations(Map<String,Object> parmas) {
Page<Map<String,Object>> page = new Page<>(Integer.parseInt(parmas.get("pageIndex").toString()),Integer.parseInt(parmas.get("pageSize").toString()));
IPage<VehicleCountFromViolationsDO> iPage = vehicleMessageMapper.listFroViolations(page, parmas);
return PageHelper.pageToResponse(iPage, iPage.getRecords());
}
}

View File

@ -15,5 +15,19 @@
1=1
GROUP BY f.id
</select>
<select id="listFroViolations" resultType="com.zcloud.primeport.persistence.dataobject.VehicleCountFromViolationsDO">
SELECT
f.*
count(m.id) as violationsCount
FROM
vehicle_message f
LEFT JOIN vehicle_violations m on m.vehicle_id = f.id
WHERE
1=1
GROUP BY f.id
</select>
</mapper>