临时车辆审批修改,临时车辆创建不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,13 +34,37 @@ public class DaHuaVehicleSyncExe {
} }
log.info("同步大华车辆: vehicleApplyId={}, licenceNo={}, vehicleBelongType={}", log.info("同步大华车辆: vehicleApplyId={}, licenceNo={}, vehicleBelongType={}",
vehicleApplyId, vehicle.getLicenceNo(), vehicle.getVehicleBelongType()); vehicleApplyId, vehicle.getLicenceNo(), vehicle.getVehicleBelongType());
if (isRelatedPartyVehicle(vehicle)) { if (isRelatedPartyVehicle(vehicle)) {
log.info("识别为相关方车辆, 走addCar接口"); log.info("识别为相关方车辆, 走addCar接口");
syncAddedVehicle(vehicle); 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 { } else {
log.info("识别为非相关方车辆(vehicleBelongType={}), 走saveTempVehicle接口", vehicle.getVehicleBelongType()); log.info("userDahuaId没值, 走saveTempVehicle接口");
syncTempVehicle(vehicle); syncTempVehicle(vehicle);
} }
} else {
log.info("车辆无身份证号, 走addCar接口");
syncAddedVehicle(vehicle);
}
} }
public void syncDeletedVehicles(List<VehicleApplyE> vehicles) { public void syncDeletedVehicles(List<VehicleApplyE> vehicles) {
@ -49,7 +73,9 @@ public class DaHuaVehicleSyncExe {
} }
List<String> carNumList = new ArrayList<>(); List<String> carNumList = new ArrayList<>();
for (VehicleApplyE vehicle : vehicles) { 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()); carNumList.add(vehicle.getLicenceNo());
} }
} }
@ -62,11 +88,26 @@ public class DaHuaVehicleSyncExe {
checkResult(daHuaGateway.addCar(buildCarCmd(vehicle)), "新增大华车辆失败"); 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) { private void syncTempVehicle(VehicleApplyE vehicle) {
log.info("同步临时车辆到大华平台: licenceNo={}, vehicleApplyId={}", vehicle.getLicenceNo(), vehicle.getId()); 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, "同步临时车辆到大华失败"); 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) { private DaHuaCarAddCmd buildCarCmd(VehicleApplyE vehicle) {
@ -81,6 +122,8 @@ public class DaHuaVehicleSyncExe {
private DaHuaTempVehicleSaveCmd buildTempVehicleCmd(VehicleApplyE vehicle) { private DaHuaTempVehicleSaveCmd buildTempVehicleCmd(VehicleApplyE vehicle) {
DaHuaTempVehicleSaveCmd cmd = new DaHuaTempVehicleSaveCmd(); DaHuaTempVehicleSaveCmd cmd = new DaHuaTempVehicleSaveCmd();
Long personId = daHuaGateway.generatePersonId();
cmd.setId(personId);
cmd.setName(vehicle.getEmployeeVehicleUserName()); cmd.setName(vehicle.getEmployeeVehicleUserName());
String idcard = vehicle.getLsUserIdcard(); String idcard = vehicle.getLsUserIdcard();
if (idcard != null && !idcard.isEmpty()) { if (idcard != null && !idcard.isEmpty()) {

View File

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

View File

@ -1,12 +1,16 @@
package com.zcloud.primeport.command; package com.zcloud.primeport.command;
import com.alibaba.cola.exception.BizException; 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.VehicleApplyGateway;
import com.zcloud.primeport.domain.gateway.VehicleBlackGateway; import com.zcloud.primeport.domain.gateway.VehicleBlackGateway;
import com.zcloud.primeport.domain.gateway.VehicleViolationsGateway; import com.zcloud.primeport.domain.gateway.VehicleViolationsGateway;
import com.zcloud.primeport.domain.model.VehicleBlackE; import com.zcloud.primeport.domain.model.VehicleBlackE;
import com.zcloud.primeport.plan.mjDevice.CarDockUtil; import com.zcloud.primeport.plan.mjDevice.CarDockUtil;
import com.zcloud.primeport.plan.mjDevice.dto.CarEnum;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -19,20 +23,32 @@ import org.springframework.transaction.annotation.Transactional;
*/ */
@Component @Component
@AllArgsConstructor @AllArgsConstructor
@Slf4j
public class VehicleBlackRemoveExe { public class VehicleBlackRemoveExe {
private final VehicleBlackGateway vehicleBlackGateway; private final VehicleBlackGateway vehicleBlackGateway;
private final VehicleApplyGateway vehicleApplyGateway; private final VehicleApplyGateway vehicleApplyGateway;
private final VehicleViolationsGateway vehicleViolationsGateway; private final VehicleViolationsGateway vehicleViolationsGateway;
private final CarDockUtil carDockUtil; private final CarDockUtil carDockUtil;
private final DaHuaGateway daHuaGateway;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean execute(Long id) { public boolean execute(Long id) {
VehicleBlackE infoById = vehicleBlackGateway.getInfoById(id); VehicleBlackE infoById = vehicleBlackGateway.getInfoById(id);
boolean res = vehicleBlackGateway.deletedVehicleBlackById(id); boolean res = vehicleBlackGateway.deletedVehicleBlackById(id);
// 把这个车牌的违规记录变成已处理.
vehicleViolationsGateway.updateVehicleViolationsStatusByLicenceNo(infoById.getLicenceNo(), 1); vehicleViolationsGateway.updateVehicleViolationsStatusByLicenceNo(infoById.getLicenceNo(), 1);
vehicleApplyGateway.updateEvehicleBlockedByLicenceNo(infoById.getLicenceNo(),2); vehicleApplyGateway.updateEvehicleBlockedByLicenceNo(infoById.getLicenceNo(),2);
carDockUtil.executeBlackRemove(infoById); 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) { if (!res) {
throw new BizException("删除失败"); throw new BizException("删除失败");
} }
@ -48,4 +64,3 @@ public class VehicleBlackRemoveExe {
return true; 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.VehicleApplyUpdateExe;
import com.zcloud.primeport.command.query.VehicleApplyQueryExe; import com.zcloud.primeport.command.query.VehicleApplyQueryExe;
import com.zcloud.primeport.domain.enums.AuditEnum; import com.zcloud.primeport.domain.enums.AuditEnum;
import com.zcloud.primeport.domain.gateway.DaHuaGateway;
import com.zcloud.primeport.domain.model.VehicleApplyE; import com.zcloud.primeport.domain.model.VehicleApplyE;
import com.zcloud.gbscommon.dahua.cmd.DaHuaCarAddCmd;
import com.zcloud.primeport.dto.*; import com.zcloud.primeport.dto.*;
import com.zcloud.primeport.dto.clientobject.AppCountCO; import com.zcloud.primeport.dto.clientobject.AppCountCO;
import com.zcloud.primeport.dto.clientobject.FgsVehicleCountCo; 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.dataobject.VehicleBlackDO;
import com.zcloud.primeport.persistence.repository.VehicleApplyRepository; import com.zcloud.primeport.persistence.repository.VehicleApplyRepository;
import com.zcloud.primeport.persistence.repository.VehicleBlackRepository; import com.zcloud.primeport.persistence.repository.VehicleBlackRepository;
import com.zcloud.primeport.plan.mjDevice.dto.CarEnum;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -38,6 +42,7 @@ import java.util.Map;
*/ */
@Service @Service
@AllArgsConstructor @AllArgsConstructor
@Slf4j
public class VehicleApplyServiceImpl implements VehicleApplyServiceI { public class VehicleApplyServiceImpl implements VehicleApplyServiceI {
private final VehicleApplyAddExe vehicleApplyAddExe; private final VehicleApplyAddExe vehicleApplyAddExe;
private final VehicleApplyUpdateExe vehicleApplyUpdateExe; private final VehicleApplyUpdateExe vehicleApplyUpdateExe;
@ -45,6 +50,7 @@ public class VehicleApplyServiceImpl implements VehicleApplyServiceI {
private final VehicleApplyQueryExe vehicleApplyQueryExe; private final VehicleApplyQueryExe vehicleApplyQueryExe;
private final VehicleApplyRepository vehicleApplyRepository; private final VehicleApplyRepository vehicleApplyRepository;
private final VehicleBlackRepository blackRepository; private final VehicleBlackRepository blackRepository;
private final DaHuaGateway daHuaGateway;
@Override @Override
public PageResponse<VehicleApplyCO> listPage(VehicleApplyPageQry qry) { public PageResponse<VehicleApplyCO> listPage(VehicleApplyPageQry qry) {
@ -116,11 +122,25 @@ public class VehicleApplyServiceImpl implements VehicleApplyServiceI {
vehicleApplyDO.setExpiredExpiration("2"); vehicleApplyDO.setExpiredExpiration("2");
vehicleApplyDO.setRemarks(cmd.getCheckDepartmentName()); vehicleApplyDO.setRemarks(cmd.getCheckDepartmentName());
vehicleApplyDO.setVehicleBelongType(cmd.getVehicleBelongType()); vehicleApplyDO.setVehicleBelongType(cmd.getVehicleBelongType());
// vehicleApplyDO.setApplyTime(DateUtil.date2Str(new Date()));
BeanUtils.copyProperties(item, vehicleApplyDO); BeanUtils.copyProperties(item, vehicleApplyDO);
objects.add(vehicleApplyDO); objects.add(vehicleApplyDO);
}); });
vehicleApplyRepository.saveBatch(objects); 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 @Override
@ -171,4 +191,3 @@ public class VehicleApplyServiceImpl implements VehicleApplyServiceI {
return vehicleApplyQueryExe.getAppCount(); return vehicleApplyQueryExe.getAppCount();
} }
} }

View File

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

View File

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

View File

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

View File

@ -81,7 +81,7 @@ public class CarDockUtil {
OneLevelCarBlackDto oneLevelCarBlackDto = new OneLevelCarBlackDto(); OneLevelCarBlackDto oneLevelCarBlackDto = new OneLevelCarBlackDto();
oneLevelCarBlackDto.setTruckNo(examTypeE.getLicenceNo()); oneLevelCarBlackDto.setTruckNo(examTypeE.getLicenceNo());
oneLevelCarBlackDto.setTruckTypCod(CarEnum.getMenuKeyByPath(examTypeE.getVehicleType())); 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.setRecTim(DateUtil.date2Str(new Date()));
oneLevelCarBlackDto.setRecNam(AuthContext.getCurrentUser().getName()); oneLevelCarBlackDto.setRecNam(AuthContext.getCurrentUser().getName());
oneLevelCarUtil.blackVehicleSave(oneLevelCarBlackDto); oneLevelCarUtil.blackVehicleSave(oneLevelCarBlackDto);
@ -90,7 +90,7 @@ public class CarDockUtil {
OneLevelCarBlackDto oneLevelCarBlackDto = new OneLevelCarBlackDto(); OneLevelCarBlackDto oneLevelCarBlackDto = new OneLevelCarBlackDto();
oneLevelCarBlackDto.setTruckNo(examTypeE.getLicenceNo()); oneLevelCarBlackDto.setTruckNo(examTypeE.getLicenceNo());
oneLevelCarBlackDto.setTruckTypCod(CarEnum.getMenuKeyByPath(examTypeE.getVehicleType())); 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.setRecTim(DateUtil.date2Str(new Date()));
oneLevelCarBlackDto.setRecNam(AuthContext.getCurrentUser().getName()); oneLevelCarBlackDto.setRecNam(AuthContext.getCurrentUser().getName());
oneLevelCarUtil.blackVehicleRemove(oneLevelCarBlackDto); oneLevelCarUtil.blackVehicleRemove(oneLevelCarBlackDto);