feat:一级口门车辆对接

koumen
dearLin 2026-04-16 11:36:11 +08:00
parent 9eb2cf2d87
commit a12523db72
15 changed files with 145 additions and 24 deletions

View File

@ -1,4 +1,4 @@
<!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0 Env/production (2026/4/15 16:42:26) App/primeport"><meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1"/><meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><title>--</title><script>(function () {
<!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0 Env/production (2026/4/16 09:20:25) App/primeport"><meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1"/><meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><title>--</title><script>(function () {
const APP_ENV = {
antd: {
'ant-prefix': 'micro-temp',
@ -20,4 +20,4 @@
redirect: '',
FRAMEWORK: APP_ENV.antd
};
})();</script><script defer="defer" src="/primeport/static/js/75.7bab4be25660eb2345d0.js"></script><script defer="defer" src="/primeport/static/js/745.8d0d26608a179feacd7b.js"></script><script defer="defer" src="/primeport/static/js/main.f302d2acf4623fb167f6.js"></script><link href="/primeport/static/css/main.ef1f3389c7ea99a7bdd0.css" rel="stylesheet"></head><body><noscript>此网页需要开启JavaScript功能。</noscript><div id="root" style="width: 100%; height: 100%; position: relative;overflow-y: auto;"></div><script type="text/javascript">/* @cqsjjb/script 输出当前应用基本信息、构建时间 */console.log("%c@cqsjjb/scripts@2.0.0 Env/production (2026/4/15 16:42:26) App/primeport Version/master Java/<branch-name>", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body></html>
})();</script><script defer="defer" src="/primeport/static/js/75.7bab4be25660eb2345d0.js"></script><script defer="defer" src="/primeport/static/js/745.8d0d26608a179feacd7b.js"></script><script defer="defer" src="/primeport/static/js/main.6b36fa10e30de16acc02.js"></script><link href="/primeport/static/css/main.ef1f3389c7ea99a7bdd0.css" rel="stylesheet"></head><body><noscript>此网页需要开启JavaScript功能。</noscript><div id="root" style="width: 100%; height: 100%; position: relative;overflow-y: auto;"></div><script type="text/javascript">/* @cqsjjb/script 输出当前应用基本信息、构建时间 */console.log("%c@cqsjjb/scripts@2.0.0 Env/production (2026/4/16 09:20:25) App/primeport Version/master Java/<branch-name>", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body></html>

View File

@ -43,6 +43,7 @@ public class VehicleAuditUpdateExe {
}
}
@Transactional(rollbackFor = Exception.class)
public void audit(VehicleAuditUpdateCmd cmd) {
if (!(cmd.getAuditStatus().equals(2) || cmd.getAuditStatus().equals(3))) {
throw new BizException("审批状态必须是通过或不通过");
@ -60,19 +61,19 @@ public class VehicleAuditUpdateExe {
vehicleApplyE.setStatusFlag(2);
vehicleApplyGateway.update(vehicleApplyE);
vehicleAuditGateway.update(vehicleAuditE);
TodoListCompleteEvent todoListCompleteEvent = new TodoListCompleteEvent();
todoListCompleteEvent.setForeignSubsidiaryKey(vehicleAuditE.getId());
todoListEventPusherUtil.sendMessageCompleteEvent(todoListCompleteEvent);
// 审批通过 进行数据对接。
if (cmd.getAuditStatus().equals(2)) {
VehicleApplyE vehicleApplyE1 = vehicleApplyGateway.getById(cmd.getVehicleApplyId());
if (vehicleApplyE1.getVehicleBelongType().equals(VehicleBelongTypeEnum.TEMP_VEHICLES.getCode()) || vehicleApplyE1.getVehicleBelongType().equals(VehicleBelongTypeEnum.XGF_VEHICLES.getCode())) {
if (vehicleApplyE1.getVehicleBelongType().equals(VehicleBelongTypeEnum.TEMP_VEHICLES.getCode()) ||
vehicleApplyE1.getVehicleBelongType().equals(VehicleBelongTypeEnum.XGF_VEHICLES.getCode())) {
carDockUtil.execute(vehicleApplyE1.getLicenceNo());
} else {
carDockUtil.executeInternalVehicle(vehicleApplyE1);
}
}
TodoListCompleteEvent todoListCompleteEvent = new TodoListCompleteEvent();
todoListCompleteEvent.setForeignSubsidiaryKey(vehicleAuditE.getId());
todoListEventPusherUtil.sendMessageCompleteEvent(todoListCompleteEvent);
}
}

View File

@ -6,6 +6,7 @@ import com.zcloud.primeport.domain.gateway.VehicleBlackGateway;
import com.zcloud.primeport.domain.model.VehicleApplyE;
import com.zcloud.primeport.domain.model.VehicleBlackE;
import com.zcloud.primeport.dto.VehicleBlackAddCmd;
import com.zcloud.primeport.plan.mjDevice.CarDockUtil;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
@ -23,6 +24,7 @@ import org.springframework.transaction.annotation.Transactional;
public class VehicleBlackAddExe {
private final VehicleBlackGateway vehicleBlackGateway;
private final VehicleApplyGateway vehicleApplyGateway;
private final CarDockUtil carDockUtil;
@Transactional(rollbackFor = Exception.class)
public boolean execute(VehicleBlackAddCmd cmd) {
@ -35,6 +37,7 @@ public class VehicleBlackAddExe {
vehicleApplyE.setBlockedFlag(1);
vehicleApplyE.setLicenceNo(cmd.getLicenceNo());
vehicleApplyGateway.updateBlackFlag(vehicleApplyE);
carDockUtil.executeBlackSave(examTypeE);
} catch (Exception e) {
throw new RuntimeException(e);
}

View File

@ -5,6 +5,7 @@ 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 lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@ -22,6 +23,7 @@ public class VehicleBlackRemoveExe {
private final VehicleBlackGateway vehicleBlackGateway;
private final VehicleApplyGateway vehicleApplyGateway;
private final VehicleViolationsGateway vehicleViolationsGateway;
private final CarDockUtil carDockUtil;
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long id) {
@ -30,6 +32,7 @@ public class VehicleBlackRemoveExe {
// 把这个车牌的违规记录变成已处理.
vehicleViolationsGateway.updateVehicleViolationsStatusByLicenceNo(infoById.getLicenceNo(), 1);
vehicleApplyGateway.updateEvehicleBlockedByLicenceNo(infoById.getLicenceNo(),2);
carDockUtil.executeBlackRemove(infoById);
if (!res) {
throw new BizException("删除失败");
}

View File

@ -36,5 +36,6 @@ public class VehicleBlackAddCmd extends Command {
private String vehicleTypeName;
@ApiModelProperty(value = "备注", name = "remarks", required = true)
private String remarks;
private String blockReason;
}

View File

@ -35,5 +35,6 @@ public class VehicleBlackCO extends ClientObject {
//备注
@ApiModelProperty(value = "备注", name = "remarks")
private String remarks;
private String blockReason;
}

View File

@ -26,6 +26,10 @@ public class VehicleDockLogCO extends ClientObject {
//车牌号
@ApiModelProperty(value = "车牌号")
private String licenceNo;
private String licenceType;
private String licenceTypeName;
private String vehicleType;
private String vehicleTypeName;
//申请人名称
@ApiModelProperty(value = "申请人名称")
private String applyName;

View File

@ -24,5 +24,6 @@ public class VehicleBlackE extends BaseE {
private String vehicleTypeName;
private String licenceType;
private String licenceTypeName;
private String blockReason;
}

View File

@ -19,6 +19,10 @@ public class VehicleDockLogE extends BaseE {
private String vehicleBelongType;
//车牌号
private String licenceNo;
private String licenceType;
private String licenceTypeName;
private String vehicleType;
private String vehicleTypeName;
//申请人名称
private String applyName;
//申请时间

View File

@ -34,7 +34,7 @@ public class VehicleBlackDO extends BaseDO {
@ApiModelProperty(value = "车辆所属类型 1-股份员工车辆2-股份单位车辆3-分公司员工车辆4-分公司单位车辆 5-相关方车辆, 6:临时车辆7检查部门车辆")
@TableField(exist = false)
private String vehicleBelongType;
private String blockReason;
@ApiModelProperty(value = "车辆所属企业ID")
@TableField(exist = false)
private Long vehicleCorpId;

View File

@ -21,12 +21,17 @@ public class VehicleDockLogDO extends BaseDO {
//1一级口门2二级口门
@ApiModelProperty(value = "1一级口门2二级口门")
private String level;
private String admissionBlackout;
//车辆所属类型 1-股份员工车辆2-股份单位车辆3-分公司员工车辆4-分公司单位车辆 5-相关方车辆, 6:临时车辆7检查部门车辆8驻港单位员工车辆9驻港单位公车
@ApiModelProperty(value = "车辆所属类型 1-股份员工车辆2-股份单位车辆3-分公司员工车辆4-分公司单位车辆 5-相关方车辆, 6:临时车辆7检查部门车辆8驻港单位员工车辆9驻港单位公车")
private String vehicleBelongType;
//车牌号
@ApiModelProperty(value = "车牌号")
private String licenceNo;
private String licenceType;
private String licenceTypeName;
private String vehicleType;
private String vehicleTypeName;
//申请人名称
@ApiModelProperty(value = "申请人名称")
private String applyName;

View File

@ -2,10 +2,13 @@ package com.zcloud.primeport.plan.mjDevice;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.gbscommon.utils.DateUtil;
import com.zcloud.primeport.domain.model.VehicleApplyE;
import com.zcloud.primeport.domain.model.VehicleBlackE;
import com.zcloud.primeport.persistence.repository.VehicleApplyRepository;
import com.zcloud.primeport.plan.mjDevice.dto.CarEnum;
import com.zcloud.primeport.plan.mjDevice.dto.OneLevelCarBlackDto;
import com.zcloud.primeport.plan.mjDevice.dto.OneLevelCarRemoveDto;
import com.zcloud.primeport.plan.mjDevice.dto.OneLevelCarSaveDto;
import org.springframework.stereotype.Component;
@ -27,6 +30,7 @@ public class CarDockUtil {
dataList.forEach(item -> {
item.setTruckCardColor(CarEnum.getMenuKeyByPath(item.getTruckCardColor()));
item.setTruckTypCod(CarEnum.getMenuKeyByPath(item.getTruckTypCod()));
item.setTruckTeamNam(" ");
// 1-东港区 2-西港区
item.setPortId("0");
if ("QHD_GQ_DGQ".equals(item.getAuthAreasCode())) {
@ -39,7 +43,7 @@ public class CarDockUtil {
});
}
// 一级口门内部车
// 一级口门内部车 拉黑原因 block_reason
public void executeInternalVehicle(VehicleApplyE applyE) {
OneLevelCarSaveDto o = new OneLevelCarSaveDto();
o.setTruckNo(applyE.getLicenceNo());
@ -73,6 +77,24 @@ public class CarDockUtil {
oneLevelCarUtil.internalVehicleSave(o);
}
public void executeBlackSave(VehicleBlackE examTypeE) {
OneLevelCarBlackDto oneLevelCarBlackDto = new OneLevelCarBlackDto();
oneLevelCarBlackDto.setTruckNo(examTypeE.getLicenceNo());
oneLevelCarBlackDto.setTruckTypCod(CarEnum.getMenuKeyByPath(examTypeE.getVehicleType()));
oneLevelCarBlackDto.setTruckCardColor(CarEnum.getMenuKeyByPath(examTypeE.getLicenceNo()));
oneLevelCarBlackDto.setRecTim(DateUtil.date2Str(new Date()));
oneLevelCarBlackDto.setRecNam(AuthContext.getCurrentUser().getName());
oneLevelCarUtil.blackVehicleSave(oneLevelCarBlackDto);
}
public void executeBlackRemove(VehicleBlackE examTypeE) {
OneLevelCarBlackDto oneLevelCarBlackDto = new OneLevelCarBlackDto();
oneLevelCarBlackDto.setTruckNo(examTypeE.getLicenceNo());
oneLevelCarBlackDto.setTruckTypCod(CarEnum.getMenuKeyByPath(examTypeE.getVehicleType()));
oneLevelCarBlackDto.setTruckCardColor(CarEnum.getMenuKeyByPath(examTypeE.getLicenceNo()));
oneLevelCarBlackDto.setRecTim(DateUtil.date2Str(new Date()));
oneLevelCarBlackDto.setRecNam(AuthContext.getCurrentUser().getName());
oneLevelCarUtil.blackVehicleRemove(oneLevelCarBlackDto);
}
public static void main(String[] args) {
String x = "{\"area\": [{\"value\": \"秦皇岛港区-全部\", \"bianma\": \"QHD_GQ_DXGQ\"}]}";

View File

@ -2,15 +2,13 @@ package com.zcloud.primeport.plan.mjDevice;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONObject;
import com.zcloud.primeport.persistence.dataobject.VehicleDockLogDO;
import com.zcloud.primeport.persistence.repository.VehicleDockLogRepository;
import com.zcloud.primeport.plan.mjDevice.dto.OneLevelCarBlackDto;
import com.zcloud.primeport.plan.mjDevice.dto.OneLevelCarRemoveDto;
import com.zcloud.primeport.plan.mjDevice.dto.OneLevelCarSaveDto;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
@ -25,6 +23,9 @@ public class OneLevelCarUtil {
@Value("${oneLevelCar.prefix}")
private String prefix;
@Resource
private VehicleDockLogRepository vehicleDockLogRepository;
/**
*
*
@ -34,6 +35,19 @@ public class OneLevelCarUtil {
if (dockFlag.equals(1)) {
String body = HttpRequest.post(prefix + "HD_QHD_IGATE_1.0/webresources/login/CTruck/qaSaveInternal").body(new JSONObject(oneLevelCarSaveDto).toString()).execute().body();
JSONObject resJson = new JSONObject(body);
VehicleDockLogDO vehicleDockLogDO = new VehicleDockLogDO();
vehicleDockLogDO.setLevel("1");
vehicleDockLogDO.setAdmissionBlackout("admission");
vehicleDockLogDO.setLicenceNo(oneLevelCarSaveDto.getTruckNo());
vehicleDockLogDO.setPortArea(oneLevelCarSaveDto.getPortId());
vehicleDockLogDO.setValidDte(oneLevelCarSaveDto.getValidDte());
vehicleDockLogDO.setTruckAppTypCod(oneLevelCarSaveDto.getTruckAppTypCod());
vehicleDockLogDO.setTruckCardColor(oneLevelCarSaveDto.getTruckCardColor());
vehicleDockLogDO.setTruckTypCod(oneLevelCarSaveDto.getTruckTypCod());
vehicleDockLogDO.setDockFlag("2");
vehicleDockLogDO.setDockStatus(resJson.getStr("code"));
vehicleDockLogDO.setReasonsRefusal(resJson.getStr("msg"));
vehicleDockLogRepository.save(vehicleDockLogDO);
}
}
@ -43,9 +57,17 @@ public class OneLevelCarUtil {
*/
public void internalVehicleRemove(OneLevelCarRemoveDto carRemoveDto) {
if (dockFlag.equals(1)) {
String body = HttpRequest.post(prefix + "HD_QHD_IGATE_1.0/HD_QHD_IGATE_1.0/webresources/login/CTruck/qaDeleteInternal").body(new JSONObject(carRemoveDto).toString()).execute().body();
String body = HttpRequest.post(prefix + "HD_QHD_IGATE_1.0/webresources/login/CTruck/qaDeleteInternal").body(new JSONObject(carRemoveDto).toString()).execute().body();
JSONObject resJson = new JSONObject(body);
VehicleDockLogDO vehicleDockLogDO = new VehicleDockLogDO();
vehicleDockLogDO.setLevel("1");
vehicleDockLogDO.setAdmissionBlackout("admission");
vehicleDockLogDO.setLicenceNo(carRemoveDto.getTruckNo());
vehicleDockLogDO.setTruckCardColor(carRemoveDto.getTruckCardColor());
vehicleDockLogDO.setDockFlag("2");
vehicleDockLogDO.setDockStatus(resJson.getStr("code"));
vehicleDockLogDO.setReasonsRefusal(resJson.getStr("msg"));
vehicleDockLogRepository.save(vehicleDockLogDO);
}
}
@ -72,9 +94,19 @@ public class OneLevelCarUtil {
oneLevelCarSaveDto.setIsNeedCheck("0");
String body = HttpRequest.post(prefix + "HD_QHD_IGATE_1.0/webresources/login/CTruck/qaSaveTemp").body(new JSONObject(oneLevelCarSaveDto).toString()).execute().body();
JSONObject resJson = new JSONObject(body);
if ("1".equals(resJson.get("code",String.class))) {
}
VehicleDockLogDO vehicleDockLogDO = new VehicleDockLogDO();
vehicleDockLogDO.setLevel("1");
vehicleDockLogDO.setAdmissionBlackout("admission");
vehicleDockLogDO.setLicenceNo(oneLevelCarSaveDto.getTruckNo());
vehicleDockLogDO.setPortArea(oneLevelCarSaveDto.getPortId());
vehicleDockLogDO.setValidDte(oneLevelCarSaveDto.getValidDte());
vehicleDockLogDO.setTruckAppTypCod(oneLevelCarSaveDto.getTruckAppTypCod());
vehicleDockLogDO.setTruckCardColor(oneLevelCarSaveDto.getTruckCardColor());
vehicleDockLogDO.setTruckTypCod(oneLevelCarSaveDto.getTruckTypCod());
vehicleDockLogDO.setDockFlag("2");
vehicleDockLogDO.setDockStatus(resJson.getStr("code"));
vehicleDockLogDO.setReasonsRefusal(resJson.getStr("msg"));
vehicleDockLogRepository.save(vehicleDockLogDO);
}
}
@ -83,8 +115,21 @@ public class OneLevelCarUtil {
*
*
*/
public void blackVehicleSave() {
// restTemplateOneLevelCarDock.exchange();
public void blackVehicleSave(OneLevelCarBlackDto oneLevelCarBlackDto) {
if (dockFlag.equals(1)) {
String body = HttpRequest.post(prefix + "HD_QHD_IGATE_1.0/webresources/login/CTruck/qaSaveBlack").body(new JSONObject(oneLevelCarBlackDto).toString()).execute().body();
JSONObject resJson = new JSONObject(body);
VehicleDockLogDO vehicleDockLogDO = new VehicleDockLogDO();
vehicleDockLogDO.setLevel("1");
vehicleDockLogDO.setAdmissionBlackout("admission");
vehicleDockLogDO.setLicenceNo(oneLevelCarBlackDto.getTruckNo());
vehicleDockLogDO.setTruckCardColor(oneLevelCarBlackDto.getTruckCardColor());
vehicleDockLogDO.setTruckTypCod(oneLevelCarBlackDto.getTruckTypCod());
vehicleDockLogDO.setDockFlag("2");
vehicleDockLogDO.setDockStatus(resJson.getStr("code"));
vehicleDockLogDO.setReasonsRefusal(resJson.getStr("msg"));
vehicleDockLogRepository.save(vehicleDockLogDO);
}
}
/**
@ -92,7 +137,20 @@ public class OneLevelCarUtil {
*
*
*/
public void blackVehicleRemove() {
// restTemplateOneLevelCarDock.exchange();
public void blackVehicleRemove(OneLevelCarBlackDto oneLevelCarBlackDto) {
if (dockFlag.equals(1)) {
String body = HttpRequest.post(prefix + "HD_QHD_IGATE_1.0/webresources/login/CTruck/qaDeleteBlack").body(new JSONObject(oneLevelCarBlackDto).toString()).execute().body();
JSONObject resJson = new JSONObject(body);
VehicleDockLogDO vehicleDockLogDO = new VehicleDockLogDO();
vehicleDockLogDO.setLevel("1");
vehicleDockLogDO.setAdmissionBlackout("admission");
vehicleDockLogDO.setLicenceNo(oneLevelCarBlackDto.getTruckNo());
vehicleDockLogDO.setTruckCardColor(oneLevelCarBlackDto.getTruckCardColor());
vehicleDockLogDO.setTruckTypCod(oneLevelCarBlackDto.getTruckTypCod());
vehicleDockLogDO.setDockFlag("2");
vehicleDockLogDO.setDockStatus(resJson.getStr("code"));
vehicleDockLogDO.setReasonsRefusal(resJson.getStr("msg"));
vehicleDockLogRepository.save(vehicleDockLogDO);
}
}
}

View File

@ -0,0 +1,18 @@
package com.zcloud.primeport.plan.mjDevice.dto;
import lombok.Data;
@Data
public class OneLevelCarBlackDto {
// 车牌号
private String truckNo;
// 车牌颜色 代码0蓝牌1黄牌2白牌3黑牌4新能源5其他
private String truckCardColor;
// 车辆类型WXP危险品黄牌QH 轻型货车XK 小型客车ZK 中型客车DK 大型客车
// BG 重型半挂牵引TZ 特种作业车ZX 重型自卸货车JSXH 集疏港小型货车MV 7座以下轿车
// IW 7座以上轿车CR 面包车, CC 皮卡Z7 水泥罐车WXP_BLUE 危险品(蓝牌)
private String truckTypCod;
//
private String recNam;
private String recTim;
}

View File

@ -178,7 +178,7 @@
vehicle_apply
WHERE
delete_enum = 'FALSE'
AND audit_flag = 2 AND visit_start_time &lt;= now() AND visit_end_time &gt;= now()
AND audit_flag = 2 AND visit_start_time &lt;= DATE_FORMAT(now(),'%Y-%m-%d') AND visit_end_time &gt;= DATE_FORMAT(now(),'%Y-%m-%d')
AND vehicle_belong_type IN ( 5, 6 )
<if test="licenceNo != null and licenceNo != ''">
AND licence_no = #{licenceNo}