临时车辆审批修改,临时车辆创建不bug修改

dev
zhangxiongfeng 2026-08-06 16:16:21 +08:00
parent 0fd50054d1
commit cf3d293fad
8 changed files with 105 additions and 20 deletions

View File

@ -34,12 +34,36 @@ public class DaHuaVehicleSyncExe {
}
log.info("同步大华车辆: vehicleApplyId={}, licenceNo={}, vehicleBelongType={}",
vehicleApplyId, vehicle.getLicenceNo(), vehicle.getVehicleBelongType());
if (isRelatedPartyVehicle(vehicle)) {
log.info("识别为相关方车辆, 走addCar接口");
syncAddedVehicle(vehicle);
return;
}
String idcard = vehicle.getLsUserIdcard();
String decodedIdcard = null;
if (idcard != null && !idcard.isEmpty()) {
try {
decodedIdcard = Base64.decodeToString(idcard);
} catch (Exception e) {
log.warn("身份证base64解码失败: {}", e.getMessage());
decodedIdcard = idcard;
}
}
if (decodedIdcard != null && !decodedIdcard.isEmpty()) {
log.info("车辆有身份证号, userDahuaId={}", vehicle.getUserDahuaId());
if (vehicle.getUserDahuaId() != null) {
log.info("userDahuaId有值, 走addCar接口, ownerId={}", vehicle.getUserDahuaId());
syncAddedVehicleWithOwnerId(vehicle);
} else {
log.info("userDahuaId没值, 走saveTempVehicle接口");
syncTempVehicle(vehicle);
}
} else {
log.info("识别为非相关方车辆(vehicleBelongType={}), 走saveTempVehicle接口", vehicle.getVehicleBelongType());
syncTempVehicle(vehicle);
log.info("车辆无身份证号, 走addCar接口");
syncAddedVehicle(vehicle);
}
}
@ -49,7 +73,9 @@ public class DaHuaVehicleSyncExe {
}
List<String> carNumList = new ArrayList<>();
for (VehicleApplyE vehicle : vehicles) {
if (isRelatedPartyVehicle(vehicle)) {
if (vehicle != null && vehicle.getLicenceNo() != null) {
log.info("同步删除大华车辆: licenceNo={}, vehicleBelongType={}",
vehicle.getLicenceNo(), vehicle.getVehicleBelongType());
carNumList.add(vehicle.getLicenceNo());
}
}
@ -62,11 +88,26 @@ public class DaHuaVehicleSyncExe {
checkResult(daHuaGateway.addCar(buildCarCmd(vehicle)), "新增大华车辆失败");
}
private void syncAddedVehicleWithOwnerId(VehicleApplyE vehicle) {
DaHuaCarAddCmd cmd = buildCarCmd(vehicle);
cmd.setOwnerId(vehicle.getUserDahuaId());
checkResult(daHuaGateway.addCar(cmd), "新增大华车辆失败");
}
private void syncTempVehicle(VehicleApplyE vehicle) {
log.info("同步临时车辆到大华平台: licenceNo={}, vehicleApplyId={}", vehicle.getLicenceNo(), vehicle.getId());
Map<String, Object> result = daHuaGateway.saveTempVehicle(buildTempVehicleCmd(vehicle));
DaHuaTempVehicleSaveCmd cmd = buildTempVehicleCmd(vehicle);
Long personId = cmd.getId();
Map<String, Object> result = daHuaGateway.saveTempVehicle(cmd);
checkResult(result, "同步临时车辆到大华失败");
log.info("临时车辆同步成功: licenceNo={}", vehicle.getLicenceNo());
log.info("临时车辆同步成功: licenceNo={}, personId={}", vehicle.getLicenceNo(), personId);
if (personId != null) {
VehicleApplyE updateVehicle = new VehicleApplyE();
updateVehicle.setId(vehicle.getId());
updateVehicle.setUserDahuaId(personId);
vehicleApplyGateway.update(updateVehicle);
log.info("保存大华人员ID成功: vehicleApplyId={}, userDahuaId={}", vehicle.getId(), personId);
}
}
private DaHuaCarAddCmd buildCarCmd(VehicleApplyE vehicle) {
@ -81,6 +122,8 @@ public class DaHuaVehicleSyncExe {
private DaHuaTempVehicleSaveCmd buildTempVehicleCmd(VehicleApplyE vehicle) {
DaHuaTempVehicleSaveCmd cmd = new DaHuaTempVehicleSaveCmd();
Long personId = daHuaGateway.generatePersonId();
cmd.setId(personId);
cmd.setName(vehicle.getEmployeeVehicleUserName());
String idcard = vehicle.getLsUserIdcard();
if (idcard != null && !idcard.isEmpty()) {

View File

@ -1,6 +1,7 @@
package com.zcloud.primeport.command;
import com.alibaba.cola.exception.BizException;
import com.zcloud.primeport.domain.gateway.DaHuaGateway;
import com.zcloud.primeport.domain.gateway.VehicleApplyGateway;
import com.zcloud.primeport.domain.gateway.VehicleBlackGateway;
import com.zcloud.primeport.domain.model.VehicleApplyE;
@ -8,10 +9,13 @@ import com.zcloud.primeport.domain.model.VehicleBlackE;
import com.zcloud.primeport.dto.VehicleBlackAddCmd;
import com.zcloud.primeport.plan.mjDevice.CarDockUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collections;
/**
* web-app
@ -21,10 +25,12 @@ import org.springframework.transaction.annotation.Transactional;
*/
@Component
@AllArgsConstructor
@Slf4j
public class VehicleBlackAddExe {
private final VehicleBlackGateway vehicleBlackGateway;
private final VehicleApplyGateway vehicleApplyGateway;
private final CarDockUtil carDockUtil;
private final DaHuaGateway daHuaGateway;
@Transactional(rollbackFor = Exception.class)
public boolean execute(VehicleBlackAddCmd cmd) {
@ -38,7 +44,10 @@ public class VehicleBlackAddExe {
vehicleApplyE.setLicenceNo(cmd.getLicenceNo());
vehicleApplyGateway.updateBlackFlag(vehicleApplyE);
carDockUtil.executeBlackSave(examTypeE);
daHuaGateway.deleteCar(Collections.singletonList(cmd.getLicenceNo()));
log.info("拉黑车辆同步大华删除: licenceNo={}", cmd.getLicenceNo());
} catch (Exception e) {
log.error("拉黑车辆同步大华失败: licenceNo={}", cmd.getLicenceNo(), e);
throw new RuntimeException(e);
}
if (!res) {
@ -46,5 +55,4 @@ public class VehicleBlackAddExe {
}
return true;
}
}
}

View File

@ -1,12 +1,16 @@
package com.zcloud.primeport.command;
import com.alibaba.cola.exception.BizException;
import com.zcloud.gbscommon.dahua.cmd.DaHuaCarAddCmd;
import com.zcloud.primeport.domain.gateway.DaHuaGateway;
import com.zcloud.primeport.domain.gateway.VehicleApplyGateway;
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.plan.mjDevice.CarDockUtil;
import com.zcloud.primeport.plan.mjDevice.dto.CarEnum;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@ -19,20 +23,32 @@ import org.springframework.transaction.annotation.Transactional;
*/
@Component
@AllArgsConstructor
@Slf4j
public class VehicleBlackRemoveExe {
private final VehicleBlackGateway vehicleBlackGateway;
private final VehicleApplyGateway vehicleApplyGateway;
private final VehicleViolationsGateway vehicleViolationsGateway;
private final CarDockUtil carDockUtil;
private final DaHuaGateway daHuaGateway;
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long id) {
VehicleBlackE infoById = vehicleBlackGateway.getInfoById(id);
boolean res = vehicleBlackGateway.deletedVehicleBlackById(id);
// 把这个车牌的违规记录变成已处理.
vehicleViolationsGateway.updateVehicleViolationsStatusByLicenceNo(infoById.getLicenceNo(), 1);
vehicleApplyGateway.updateEvehicleBlockedByLicenceNo(infoById.getLicenceNo(),2);
carDockUtil.executeBlackRemove(infoById);
try {
DaHuaCarAddCmd dahuaCmd = new DaHuaCarAddCmd();
dahuaCmd.setCarNum(infoById.getLicenceNo());
dahuaCmd.setCarNumColor(CarEnum.getMenuKeyByPath(infoById.getLicenceType()));
dahuaCmd.setDepartmentId(1L);
dahuaCmd.setService("evo-thirdParty");
daHuaGateway.addCar(dahuaCmd);
log.info("解除拉黑同步大华添加车辆: licenceNo={}", infoById.getLicenceNo());
} catch (Exception e) {
log.error("解除拉黑同步大华失败: licenceNo={}", infoById.getLicenceNo(), e);
}
if (!res) {
throw new BizException("删除失败");
}
@ -47,5 +63,4 @@ public class VehicleBlackRemoveExe {
}
return true;
}
}
}

View File

@ -11,7 +11,9 @@ import com.zcloud.primeport.command.VehicleApplyRemoveExe;
import com.zcloud.primeport.command.VehicleApplyUpdateExe;
import com.zcloud.primeport.command.query.VehicleApplyQueryExe;
import com.zcloud.primeport.domain.enums.AuditEnum;
import com.zcloud.primeport.domain.gateway.DaHuaGateway;
import com.zcloud.primeport.domain.model.VehicleApplyE;
import com.zcloud.gbscommon.dahua.cmd.DaHuaCarAddCmd;
import com.zcloud.primeport.dto.*;
import com.zcloud.primeport.dto.clientobject.AppCountCO;
import com.zcloud.primeport.dto.clientobject.FgsVehicleCountCo;
@ -21,7 +23,9 @@ import com.zcloud.primeport.persistence.dataobject.VehicleApplyDO;
import com.zcloud.primeport.persistence.dataobject.VehicleBlackDO;
import com.zcloud.primeport.persistence.repository.VehicleApplyRepository;
import com.zcloud.primeport.persistence.repository.VehicleBlackRepository;
import com.zcloud.primeport.plan.mjDevice.dto.CarEnum;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@ -38,6 +42,7 @@ import java.util.Map;
*/
@Service
@AllArgsConstructor
@Slf4j
public class VehicleApplyServiceImpl implements VehicleApplyServiceI {
private final VehicleApplyAddExe vehicleApplyAddExe;
private final VehicleApplyUpdateExe vehicleApplyUpdateExe;
@ -45,6 +50,7 @@ public class VehicleApplyServiceImpl implements VehicleApplyServiceI {
private final VehicleApplyQueryExe vehicleApplyQueryExe;
private final VehicleApplyRepository vehicleApplyRepository;
private final VehicleBlackRepository blackRepository;
private final DaHuaGateway daHuaGateway;
@Override
public PageResponse<VehicleApplyCO> listPage(VehicleApplyPageQry qry) {
@ -116,11 +122,25 @@ public class VehicleApplyServiceImpl implements VehicleApplyServiceI {
vehicleApplyDO.setExpiredExpiration("2");
vehicleApplyDO.setRemarks(cmd.getCheckDepartmentName());
vehicleApplyDO.setVehicleBelongType(cmd.getVehicleBelongType());
// vehicleApplyDO.setApplyTime(DateUtil.date2Str(new Date()));
BeanUtils.copyProperties(item, vehicleApplyDO);
objects.add(vehicleApplyDO);
});
vehicleApplyRepository.saveBatch(objects);
for (VehicleApplyInspectAddCmd.InspectCar item : inspectCarList) {
try {
DaHuaCarAddCmd dahuaCmd = new DaHuaCarAddCmd();
dahuaCmd.setCarNum(item.getLicenceNo());
dahuaCmd.setCarNumColor(CarEnum.getMenuKeyByPath(item.getLicenceType()));
dahuaCmd.setDepartmentId(1L);
dahuaCmd.setDepartmentName(cmd.getCheckDepartmentName());
dahuaCmd.setService("evo-thirdParty");
Map<String, Object> result = daHuaGateway.addCar(dahuaCmd);
log.info("检查部门车辆同步大华: licenceNo={}, result={}", item.getLicenceNo(), result);
} catch (Exception e) {
log.error("检查部门车辆同步大华失败: licenceNo={}", item.getLicenceNo(), e);
}
}
}
@Override
@ -170,5 +190,4 @@ public class VehicleApplyServiceImpl implements VehicleApplyServiceI {
public MultiResponse<AppCountCO> getAppCount() {
return vehicleApplyQueryExe.getAppCount();
}
}
}

View File

@ -84,5 +84,5 @@ public class VehicleApplyE extends BaseE {
private String auditDeptName;
private Long auditUserId;
private String auditUserName;
}
private Long userDahuaId;
}

View File

@ -1011,7 +1011,6 @@ public class DaHuaGatewayImpl implements DaHuaGateway {
}
if (cmd.getId() == null) {
Long personId = generatePersonId();
System.out.println("大华临时车辆全量保存自动生成人员ID: " + personId);
cmd.setId(personId);
}
if (cmd.getService() == null || cmd.getService().trim().isEmpty()) {
@ -1032,7 +1031,6 @@ public class DaHuaGatewayImpl implements DaHuaGateway {
GeneralResponse response = daHuaPersonApi.saveTempVehicleAudit(body);
String responseJson = JSONUtil.toJsonStr(response);
log.info("大华临时车辆全量保存返回结果: {}", responseJson);
System.out.println("大华临时车辆全量保存返回结果: " + responseJson);
if (response == null) {
log.error("大华临时车辆全量保存失败: response为null");
resultMap.put("passed", false);

View File

@ -146,4 +146,6 @@ public class VehicleApplyDO extends BaseDO {
private String belongType;
@TableField(exist = false)
private int waitAuditCount;
@ApiModelProperty(value = "大华人员ID")
private Long userDahuaId;
}

View File

@ -81,7 +81,7 @@ public class CarDockUtil {
OneLevelCarBlackDto oneLevelCarBlackDto = new OneLevelCarBlackDto();
oneLevelCarBlackDto.setTruckNo(examTypeE.getLicenceNo());
oneLevelCarBlackDto.setTruckTypCod(CarEnum.getMenuKeyByPath(examTypeE.getVehicleType()));
oneLevelCarBlackDto.setTruckCardColor(CarEnum.getMenuKeyByPath(examTypeE.getLicenceNo()));
oneLevelCarBlackDto.setTruckCardColor(CarEnum.getMenuKeyByPath(examTypeE.getLicenceType()));
oneLevelCarBlackDto.setRecTim(DateUtil.date2Str(new Date()));
oneLevelCarBlackDto.setRecNam(AuthContext.getCurrentUser().getName());
oneLevelCarUtil.blackVehicleSave(oneLevelCarBlackDto);
@ -90,7 +90,7 @@ public class CarDockUtil {
OneLevelCarBlackDto oneLevelCarBlackDto = new OneLevelCarBlackDto();
oneLevelCarBlackDto.setTruckNo(examTypeE.getLicenceNo());
oneLevelCarBlackDto.setTruckTypCod(CarEnum.getMenuKeyByPath(examTypeE.getVehicleType()));
oneLevelCarBlackDto.setTruckCardColor(CarEnum.getMenuKeyByPath(examTypeE.getLicenceNo()));
oneLevelCarBlackDto.setTruckCardColor(CarEnum.getMenuKeyByPath(examTypeE.getLicenceType()));
oneLevelCarBlackDto.setRecTim(DateUtil.date2Str(new Date()));
oneLevelCarBlackDto.setRecNam(AuthContext.getCurrentUser().getName());
oneLevelCarUtil.blackVehicleRemove(oneLevelCarBlackDto);
@ -104,4 +104,4 @@ public class CarDockUtil {
}
}
}
}