feat:个人车辆申请

koumen
dearLin 2026-03-16 14:51:02 +08:00
parent c1c9b19302
commit 539797753c
12 changed files with 181 additions and 52 deletions

View File

@ -8,9 +8,7 @@ import com.alibaba.cola.dto.SingleResponse;
import com.jjb.saas.framework.auth.model.SSOUser;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.primeport.api.VehicleApplyServiceI;
import com.zcloud.primeport.dto.VehicleApplyAddCmd;
import com.zcloud.primeport.dto.VehicleApplyPageQry;
import com.zcloud.primeport.dto.VehicleApplyUpdateCmd;
import com.zcloud.primeport.dto.*;
import com.zcloud.primeport.dto.clientobject.VehicleApplyCO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
@ -43,7 +41,18 @@ public class VehicleApplyController {
public SingleResponse<VehicleApplyCO> add(@Validated @RequestBody VehicleApplyAddCmd cmd) {
return vehicleApplyService.add(cmd);
}
@ApiOperation("新增-检查部门车辆录入")
@PostMapping("/inspectCarSave")
public Response inspectCarSave(@Validated @RequestBody VehicleApplyInspectAddCmd cmd) {
vehicleApplyService.inspectCarSave(cmd);
return Response.buildSuccess();
}
@ApiOperation("检查部门车辆修改")
@PutMapping("/inspectCarEdit")
public Response inspectCarEdit(@Validated @RequestBody VehicleApplyInspectUpdateCmd cmd) {
vehicleApplyService.inspectCarEdit(cmd);
return Response.buildSuccess();
}
@ApiOperation("新增-临时访客")
@PostMapping("/saveTemporaryVisitors")
public SingleResponse<VehicleApplyCO> saveTemporaryVisitors(@Validated @RequestBody VehicleApplyAddCmd cmd) {

View File

@ -34,6 +34,7 @@ public class VehicleApplyAddExe {
private final VehicleAuditGateway vehicleAuditGateway;
private final VehicleMessageGateway vehicleMessageGateway;
private final TodoListEventPusherUtil todoListEventPusherUtil;
@Transactional(rollbackFor = Exception.class)
public boolean execute(VehicleApplyAddCmd cmd) {
VehicleApplyE examTypeE = new VehicleApplyE();
@ -41,48 +42,24 @@ public class VehicleApplyAddExe {
examTypeE.setStatusFlag(2);
examTypeE.setBlockedFlag(2);
examTypeE.setAuditFlag(AuditEnum.WAITING.getCode());
SSOUser user = AuthContext.getCurrentUser();
if (user != null) {
examTypeE.setVehicleCorpId(user.getTenantId());
examTypeE.setVehicleCorpName(user.getTenantName());
examTypeE.setVehicleDepartmentId(user.getOrgId());
examTypeE.setVehicleDepartmentName(user.getOrgName());
examTypeE.setEmployeeVehicleUserId(user.getUserId());
examTypeE.setEmployeeVehicleUserName(user.getName());
}
// 检查部门无需审批
if (examTypeE.getVehicleType().equals(VehicleBelongTypeEnum.CHECK_VEHICLES)) {
examTypeE.setAuditFlag(AuditEnum.NO_APPROVAL_REQUIRED.getCode());
vehicleApplyGateway.add(examTypeE);
VehicleMessageE build = VehicleMessageE.builder().vehicleApplyId(examTypeE.getId())
.licenceType(examTypeE.getLicenceType()).licenceTypeName(examTypeE.getLicenceTypeName())
.licenceNo(examTypeE.getLicenceNo())
.vehicleType(examTypeE.getVehicleType()).vehicleTypeName(examTypeE.getVehicleTypeName())
.vehicleBelongType(examTypeE.getVehicleBelongType()).gateLevelAuthArea(examTypeE.getGateLevelAuthArea())
.visitStartTime(examTypeE.getVisitStartTime()).visitEndTime(examTypeE.getVisitEndTime()).syncStatus(2).build();
// 进行与门禁系统的对接
vehicleMessageGateway.add(build);
}else {
vehicleApplyGateway.add(examTypeE);
VehicleAuditE build =
VehicleAuditE.builder()
.vehicleApplyId(examTypeE.getId())
.batchState(1)
.batchType(1)
.auditUserId(examTypeE.getAuditUserId())
.auditUserName(examTypeE.getAuditUserName())
.auditDeptId(examTypeE.getAuditDeptId())
.auditDeptName(examTypeE.getAuditDeptName())
.auditCorpId(examTypeE.getAuditCorpId())
.auditCorpName(examTypeE.getAuditCorpName())
.auditStatus(AuditEnum.WAITING.getCode())
.changeAfter(JSON.toJSONString(examTypeE))
.build();
// 添加审批信息
vehicleAuditGateway.add(build);
// 发送待审核消息
todoListEventPusherUtil.sendMessageAddEvent(build.getSendEventObj());
// 股份、分公司个人车辆
if (cmd.getVehicleBelongType().equals(VehicleBelongTypeEnum.JGD_PRI_VEHICLES.getCode()) || cmd.getVehicleBelongType().equals(VehicleBelongTypeEnum.FGS_PRI_VEHICLES.getCode())) {
SSOUser user = AuthContext.getCurrentUser();
if (user != null) {
examTypeE.setVehicleCorpId(user.getTenantId());
examTypeE.setVehicleCorpName(user.getTenantName());
examTypeE.setVehicleDepartmentId(user.getOrgId());
examTypeE.setVehicleDepartmentName(user.getOrgName());
examTypeE.setEmployeeVehicleUserId(user.getUserId());
examTypeE.setEmployeeVehicleUserName(user.getName());
}
}
vehicleApplyGateway.add(examTypeE);
VehicleAuditE build = VehicleAuditE.builder().vehicleApplyId(examTypeE.getId()).batchState(1).batchType(1).auditUserId(examTypeE.getAuditUserId()).auditUserName(examTypeE.getAuditUserName()).auditDeptId(examTypeE.getAuditDeptId()).auditDeptName(examTypeE.getAuditDeptName()).auditCorpId(examTypeE.getAuditCorpId()).auditCorpName(examTypeE.getAuditCorpName()).auditStatus(AuditEnum.WAITING.getCode()).changeAfter(JSON.toJSONString(examTypeE)).build();
// 添加审批信息
vehicleAuditGateway.add(build);
// 发送待审核消息
todoListEventPusherUtil.sendMessageAddEvent(build.getSendEventObj());
return true;
}

View File

@ -8,6 +8,7 @@ import com.zcloud.primeport.domain.gateway.VehicleApplyGateway;
import com.zcloud.primeport.domain.gateway.VehicleAuditGateway;
import com.zcloud.primeport.domain.model.VehicleApplyE;
import com.zcloud.primeport.domain.model.VehicleAuditE;
import com.zcloud.primeport.dto.VehicleApplyInspectUpdateCmd;
import com.zcloud.primeport.dto.VehicleApplyUpdateCmd;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
@ -45,5 +46,16 @@ public class VehicleApplyUpdateExe {
throw new BizException("修改失败");
}
}
public void inspectCarEdit(VehicleApplyInspectUpdateCmd cmd) {
VehicleApplyE vehicleApplyE = new VehicleApplyE();
vehicleApplyE.setId(cmd.getId());
vehicleApplyE.setVehicleType(cmd.getVehicleType());
vehicleApplyE.setVehicleTypeName(cmd.getVehicleTypeName());
vehicleApplyE.setLicenceNo(cmd.getLicenceNo());
vehicleApplyE.setLicenceTypeName(cmd.getLicenceTypeName());
vehicleApplyE.setLicenceType(cmd.getLicenceType());
vehicleApplyGateway.update(vehicleApplyE);
}
}

View File

@ -8,15 +8,18 @@ import com.zcloud.primeport.command.VehicleApplyAddExe;
import com.zcloud.primeport.command.VehicleApplyRemoveExe;
import com.zcloud.primeport.command.VehicleApplyUpdateExe;
import com.zcloud.primeport.command.query.VehicleApplyQueryExe;
import com.zcloud.primeport.dto.VehicleApplyAddCmd;
import com.zcloud.primeport.dto.VehicleApplyPageQry;
import com.zcloud.primeport.dto.VehicleApplyUpdateCmd;
import com.zcloud.primeport.domain.enums.AuditEnum;
import com.zcloud.primeport.dto.*;
import com.zcloud.primeport.dto.clientobject.VehicleApplyCO;
import com.zcloud.primeport.persistence.dataobject.VehicleApplyDO;
import com.zcloud.primeport.persistence.repository.VehicleApplyRepository;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* web-app
*
@ -75,5 +78,27 @@ public class VehicleApplyServiceImpl implements VehicleApplyServiceI {
}
return vehicleApplyRepository.count(queryWrapper) == 0;
}
@Override
public void inspectCarSave(VehicleApplyInspectAddCmd cmd) {
List<VehicleApplyInspectAddCmd.InspectCar> inspectCarList = cmd.getInspectCarList();
ArrayList<VehicleApplyDO> objects = new ArrayList<>();
inspectCarList.forEach(item -> {
VehicleApplyDO vehicleApplyDO = new VehicleApplyDO();
vehicleApplyDO.setAuditFlag(AuditEnum.NO_APPROVAL_REQUIRED.getCode());
vehicleApplyDO.setStatusFlag(2);
vehicleApplyDO.setMkmjPermission(1);
vehicleApplyDO.setRemarks(cmd.getRemarks());
vehicleApplyDO.setVehicleBelongType(cmd.getVehicleBelongType());
BeanUtils.copyProperties(item, vehicleApplyDO);
objects.add(vehicleApplyDO);
});
vehicleApplyRepository.saveBatch(objects);
}
@Override
public void inspectCarEdit(VehicleApplyInspectUpdateCmd cmd) {
vehicleApplyUpdateExe.inspectCarEdit(cmd);
}
}

View File

@ -2,9 +2,7 @@ package com.zcloud.primeport.api;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.primeport.dto.VehicleApplyAddCmd;
import com.zcloud.primeport.dto.VehicleApplyPageQry;
import com.zcloud.primeport.dto.VehicleApplyUpdateCmd;
import com.zcloud.primeport.dto.*;
import com.zcloud.primeport.dto.clientobject.VehicleApplyCO;
/**
@ -27,5 +25,9 @@ public interface VehicleApplyServiceI {
VehicleApplyCO getInfoById(Long id);
Boolean checkLicenceNo(String licenceNo, Long id);
void inspectCarSave(VehicleApplyInspectAddCmd cmd);
void inspectCarEdit(VehicleApplyInspectUpdateCmd cmd);
}

View File

@ -73,8 +73,24 @@ public class VehicleApplyAddCmd extends Command {
private String lsUserPhone;
@ApiModelProperty(value = "临时申请驾驶人身份证", name = "lsUserIdcard")
private String lsUserIdcard;
@ApiModelProperty(value = "来访事由", name = "remarks")
private String remarks;
//车辆所属企业ID
@ApiModelProperty(value = "车辆所属企业ID", name = "vehicleCorpId")
private Long vehicleCorpId;
@ApiModelProperty(value = "车辆所属企业名称", name = "vehicleCorpName")
//车辆所属企业名称
private String vehicleCorpName;
@ApiModelProperty(value = "车辆所属部门id", name = "vehicleDepartmentId")
//车辆所属部门id
private Long vehicleDepartmentId;
@ApiModelProperty(value = "车辆所属部门名称", name = "vehicleDepartmentName")
//车辆所属部门名称
private String vehicleDepartmentName;
// 审批
@ApiModelProperty(value = "审核企业", name = "auditCorpId", required = true)
private Long auditCorpId;

View File

@ -0,0 +1,51 @@
package com.zcloud.primeport.dto;
import com.alibaba.cola.dto.Command;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* web-client
*
* @Author makejava
* @Date 2026-03-05 11:33:23
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class VehicleApplyInspectAddCmd extends Command {
@ApiModelProperty(value = "名称", name = "remarks")
@NotEmpty(message = "名称")
private String remarks;
@ApiModelProperty(value = "车辆所属类型 1-股份员工车辆2-股份单位车辆3-分公司员工车辆4-分公司单位车辆 5-相关方车辆, 6:临时车辆7检查部门车辆", name = "vehicleBelongType", required = true)
@NotEmpty(message = "车辆所属类型 1-股份员工车辆2-股份单位车辆3-分公司员工车辆4-分公司单位车辆 5-相关方车辆, 6:临时车辆7检查部门车辆不能为空")
private String vehicleBelongType;
@ApiModelProperty(value = "车辆信息", name = "inspectCarList")
private List<InspectCar> inspectCarList;
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class InspectCar {
@ApiModelProperty(value = "车牌类型数据字典", name = "licenceType", required = true)
private String licenceType;
@ApiModelProperty(value = "车牌类型名称0-白牌 1- 蓝牌 2-黄牌 3-绿牌 4-黑牌", name = "licenceTypeName", required = true)
private String licenceTypeName;
@ApiModelProperty(value = "车辆类型", name = "vehicleType", required = true)
private String vehicleType;
@ApiModelProperty(value = "车辆类型-名字", name = "vehicleTypeName", required = true)
private String vehicleTypeName;
@ApiModelProperty(value = "车牌号", name = "licenceNo", required = true)
private String licenceNo;
}
}

View File

@ -0,0 +1,29 @@
package com.zcloud.primeport.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class VehicleApplyInspectUpdateCmd {
@ApiModelProperty(value = "id", name = "id")
private Long id;
@ApiModelProperty(value = "名称", name = "remarks")
private String remarks;
@ApiModelProperty(value = "车牌类型数据字典", name = "licenceType")
private String licenceType;
@ApiModelProperty(value = "车牌类型名称0-白牌 1- 蓝牌 2-黄牌 3-绿牌 4-黑牌", name = "licenceTypeName")
private String licenceTypeName;
@ApiModelProperty(value = "车辆类型", name = "vehicleType")
private String vehicleType;
@ApiModelProperty(value = "车辆类型-名字", name = "vehicleTypeName")
private String vehicleTypeName;
@ApiModelProperty(value = "车牌号", name = "licenceNo")
private String licenceNo;
}

View File

@ -44,5 +44,8 @@ public class VehicleApplyPageQry extends PageQuery {
private Long employeeVehicleUserId;
@ApiModelProperty(value = "车辆所属类型 1-股份员工车辆2-股份单位车辆3-分公司员工车辆4-分公司单位车辆 5-相关方车辆, 6:临时车辆7检查部门车辆", name = "vehicleBelongType")
private Integer vehicleBelongType;
@ApiModelProperty(value = "名称", name = "remarks")
private String remarks;
}

View File

@ -96,6 +96,8 @@ public class VehicleApplyCO extends ClientObject {
//项目名称
@ApiModelProperty(value = "项目名称")
private String projectName;
@ApiModelProperty(value = "名称")
private String remarks;
//1被拉黑2未拉黑
@ApiModelProperty(value = "1被拉黑2未拉黑")
private Integer blockedFlag;

View File

@ -24,7 +24,7 @@ public class VehicleAuditDO extends BaseDO {
//车辆申请id
@ApiModelProperty(value = "车辆申请id")
private String vehicleApplyId;
private Long vehicleApplyId;
//审批批次(1.普通车辆.2危险化学品车辆)
@ApiModelProperty(value = "审批批次(1.普通车辆.2危险化学品车辆)")
private Integer batchType;

View File

@ -46,6 +46,9 @@
AND a.audit_status = 1
WHERE
f.delete_enum = 'FALSE'
<if test="parmas.remarks != null and parmas.remarks != ''">
AND f.remarks like CONCAT('%', #{parmas.remarks}, '%')
</if>
<if test="parmas.licenceNo != null and parmas.licenceNo != ''">
AND f.licence_no like CONCAT('%', #{parmas.licenceNo}, '%')
</if>