feat:接入海康二级口门进出记录

koumen
dearLin 2026-04-30 16:47:35 +08:00
parent 145235c9de
commit 75419ffd05
8 changed files with 252 additions and 9 deletions

View File

@ -6,8 +6,10 @@ import com.jjb.saas.framework.datascope.annotation.DataScope;
import com.jjb.saas.framework.datascope.annotation.DataScopes;
import com.zcloud.primeport.persistence.dataobject.ClosedAreaCarApplyDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zcloud.primeport.plan.mjDevice.dto.TwoLevelCar;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;
@ -24,5 +26,9 @@ import org.apache.ibatis.annotations.Param;
public interface ClosedAreaCarApplyMapper extends BaseMapper<ClosedAreaCarApplyDO> {
IPage<ClosedAreaCarApplyDO> listPage(Page<Map<String, Object>> page, @Param("params") Map<String, Object> params, String menuPerms);
List<TwoLevelCar> getFgsCarToDay(String licenceNo);
List<TwoLevelCar> dockTmpCarLevelTwo(String licenceNo);
}

View File

@ -3,7 +3,9 @@ package com.zcloud.primeport.persistence.repository;
import com.zcloud.primeport.persistence.dataobject.ClosedAreaCarApplyDO;
import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.repository.repo.BaseRepository;
import com.zcloud.primeport.plan.mjDevice.dto.TwoLevelCar;
import java.util.List;
import java.util.Map;
/**
@ -14,5 +16,9 @@ import java.util.Map;
*/
public interface ClosedAreaCarApplyRepository extends BaseRepository<ClosedAreaCarApplyDO> {
PageResponse<ClosedAreaCarApplyDO> listPage(Map<String, Object> params);
List<TwoLevelCar> getFgsCarToDay(String licenceNo);
List<TwoLevelCar> dockTmpCarLevelTwo(String licenceNo);
}

View File

@ -9,9 +9,12 @@ import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.repository.common.PageHelper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import com.zcloud.primeport.plan.mjDevice.dto.TwoLevelCar;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
import java.util.Map;
/**
@ -37,5 +40,15 @@ public class ClosedAreaCarApplyRepositoryImpl extends BaseRepositoryImpl<ClosedA
IPage<ClosedAreaCarApplyDO> result = closedAreaCarApplyMapper.listPage(page, params, menuPerms);
return PageHelper.pageToResponse(result, result.getRecords());
}
@Override
public List<TwoLevelCar> getFgsCarToDay(String licenceNo) {
return closedAreaCarApplyMapper.getFgsCarToDay(licenceNo);
}
@Override
public List<TwoLevelCar> dockTmpCarLevelTwo(String licenceNo) {
return closedAreaCarApplyMapper.dockTmpCarLevelTwo(licenceNo);
}
}

View File

@ -31,7 +31,7 @@ public class OnePersonUtil {
// private Integer dockFlag;
// @Value("${oneLevelPerson.prefix}")
// private String prefix;
private static Integer dockFlag = 1;
private static Integer dockFlag = 0;
private static String prefix = "https://skqhdg.porthebei.com:9008/yjkmRy/";
private static String username = "shuangkong";
private static String password = "qinan@202604";

View File

@ -0,0 +1,120 @@
package com.zcloud.primeport.plan.mjDevice;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.zcloud.gbscommon.dahuaDevice.DaHuaDeviceCommon;
import com.zcloud.gbscommon.dahuaDevice.DhuaConfig;
import com.zcloud.gbscommon.hkDevice.HKDeviceUtil;
import com.zcloud.gbscommon.utils.DateUtil;
import com.zcloud.gbscommon.utils.Tools;
import com.zcloud.gbscommon.zclouduser.facade.ZcloudUserFacade;
import com.zcloud.gbscommon.zclouduser.request.ZcloudUserImgQry;
import com.zcloud.gbscommon.zclouduser.response.ZcloudUserImgBase64Co;
import com.zcloud.primeport.persistence.dataobject.ClosedAreaCarApplyDO;
import com.zcloud.primeport.persistence.dataobject.ClosedAreaPersonApplyDO;
import com.zcloud.primeport.persistence.repository.ClosedAreaCarApplyRepository;
import com.zcloud.primeport.persistence.repository.ClosedAreaPersonApplyRepository;
import com.zcloud.primeport.plan.mjDevice.dto.CarEnum;
import com.zcloud.primeport.plan.mjDevice.dto.OneLevelCarSaveDto;
import com.zcloud.primeport.plan.mjDevice.dto.TwoLevelCar;
import com.zcloud.primeport.plan.mjDevice.dto.TwoLevelUser;
import jodd.util.Base64;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
*
*
*/
@Component
public class TwoCarUtil {
@Resource
private ClosedAreaCarApplyRepository closedAreaCarApplyRepository;
private static Integer dockFlag = 0;
private static String prefix;
public static void main(String[] args) throws Exception {
}
/**
* id
*
*
*/
public void levelTwoCarCompanyByApplyId(Long applyId) {
if (!dockFlag.equals(1)) return;
ClosedAreaCarApplyDO byId = closedAreaCarApplyRepository.getById(applyId);
if (byId.getCarBelongType().equals(4)) {
dockTmpCarLevelTwo(byId.getLicenceNo());
}else {
dockFgsCarLevelTwo(byId.getLicenceNo());
}
OneLevelCarSaveDto oneLevelCarSaveDto = new OneLevelCarSaveDto();
oneLevelCarSaveDto.setTruckNo(byId.getLicenceNo());
oneLevelCarSaveDto.setTruckCardColor(byId.getLicenceType());
oneLevelCarSaveDto.setTruckTypCod(CarEnum.getMenuKeyByPath(byId.getVehicleType()));
// todo 待确定到底是东港还是西港
oneLevelCarSaveDto.setPortId("0");
oneLevelCarSaveDto.setDriverNam(byId.getDrivingUserName());
oneLevelCarSaveDto.setLinkTel(byId.getUserPhone());
oneLevelCarSaveDto.setValidDte(DateUtil.date2Str(new Date(),"yyyy-MM-dd"));
oneLevelCarSaveDto.setRecTim(DateUtil.date2Str(new Date()));
oneLevelCarSaveDto.setYqlCheckFlag("1");
oneLevelCarSaveDto.setIsNeedCheck("0");
tmpVehicleSave(oneLevelCarSaveDto);
}
// 对接一级口门车辆
public void tmpVehicleSave(OneLevelCarSaveDto oneLevelCarSaveDto) {
if (dockFlag.equals(1)) {
oneLevelCarSaveDto.setIsNeedCheck("0");
String body = HttpRequest.post(prefix + "HD_QHD_IGATE_1.0/webresources/login/CTruck/qaSaveTemp").body(new JSONObject(oneLevelCarSaveDto).toString()).execute().body();
}
}
/**
*
*/
public void dockFgsCarLevelTwo(String licence_no) {
if (!dockFlag.equals(1)) return;
List<TwoLevelCar> carList = closedAreaCarApplyRepository.getFgsCarToDay(licence_no);
for (TwoLevelCar twoLevelCar : carList) {
// todo 车牌号转一下类型
HKDeviceUtil.saveOrUpdCar(twoLevelCar.getLicenceNo(), 0);
HKDeviceUtil.vehicleTopUp(twoLevelCar.getLicenceNo(), 0, twoLevelCar.getHkIndexCode(), twoLevelCar.getKhParkSysCode(), DateUtil.date2Str(new Date(), "yyyy-MM-dd"), DateUtil.date2Str(new Date(), "yyyy-MM-dd"));
}
}
/**
* 访
*/
public void dockTmpCarLevelTwo(String licence_no) {
if (!dockFlag.equals(1)) return;
List<TwoLevelCar> carList = closedAreaCarApplyRepository.dockTmpCarLevelTwo(licence_no);
for (TwoLevelCar twoLevelCar : carList) {
// todo 车牌号转一下类型
HKDeviceUtil.saveOrUpdCar(twoLevelCar.getLicenceNo(), 0);
HKDeviceUtil.vehicleTopUp(twoLevelCar.getLicenceNo(), 0, twoLevelCar.getHkIndexCode(), twoLevelCar.getKhParkSysCode(), DateUtil.date2Str(new Date(), "yyyy-MM-dd"), DateUtil.date2Str(new Date(), "yyyy-MM-dd"));
}
}
private static <T> List<List<T>> partition(List<T> list, int size) {
List<List<T>> partitions = new ArrayList<>();
for (int i = 0; i < list.size(); i += size) {
partitions.add(list.subList(i, Math.min(i + size, list.size())));
}
return partitions;
}
}

View File

@ -44,7 +44,7 @@ public class TwoPersonUtil {
// private Integer dockFlag;
// @Value("${oneLevelPerson.prefix}")
// private String prefix;
private static Integer dockFlag = 1;
private static Integer dockFlag = 0;
private static String prefix = "https://skqhdg.porthebei.com:9008/yjkmRy/";
private static String username = "shuangkong";
private static String password = "qinan@202604";
@ -74,11 +74,14 @@ public class TwoPersonUtil {
/*
*
* */
public void scheduledPeopleCompany() {
public void scheduledPeopleCompany() throws Exception {
if (!dockFlag.equals(1)) return;
List<TwoLevelUser> userList = closedAreaPersonApplyRepository.getDockAuthTmpInfoById(null);
userList.addAll(closedAreaPersonApplyRepository.getDockAuthInfoById(null));
dockUserReal(userList);
for (TwoLevelUser item : userList) {
dockOneLevelPerson(item.getUserCard(), item.getUserFaceImages(), item.getUserUid(), item.getUserName());
}
}
public static void main(String[] args) throws Exception {
@ -112,7 +115,8 @@ public class TwoPersonUtil {
userInfo.set("personType", 0);
daHuaDeviceCommon.saveUser(userInfo);
} else {
// 一级门禁的长期人 一般都有权限,临时、相关方的不一定有。
// 一级门禁的长期人 一般都有已经有权限了,
// 临时、相关方的不一定有。 他们每日刷新权限所以不影响
userByUserCard.getStr("validStartTime");
userByUserCard.getStr("validEndTime");
// true=在范围内false=不在范围内
@ -122,11 +126,6 @@ public class TwoPersonUtil {
onePersonUtil.expirationDateRefreshedUserCard(userCard,DateUtil.date2Str(new Date(), "yyyy-MM-dd") + "00:00:00",DateUtil.date2Str(new Date(), "yyyy-MM-dd") + "23:59:59");
}
}
if (userByUserCard.isEmpty()) System.out.println(userByUserCard);
if (userByUserCard.isEmpty()) System.out.println(userByUserCard);
// 如果这个人存在 哪么 看一下今天有没有时间
// 这个人不存在 新增这个人
}
protected void dockUserReal(List<TwoLevelUser> userList) {

View File

@ -0,0 +1,11 @@
package com.zcloud.primeport.plan.mjDevice.dto;
import lombok.Data;
@Data
public class TwoLevelCar {
private String licenceNo;
private String licenceType;
private String hkIndexCode;
private String khParkSysCode;
}

View File

@ -43,6 +43,94 @@
</if>
order by c.id desc
</select>
<select id="getFgsCarToDay" resultType="com.zcloud.primeport.plan.mjDevice.dto.TwoLevelCar">
SELECT
caca.licence_no,
GROUP_CONCAT( caca.licence_type ) licence_type,
GROUP_CONCAT( areatmp.hk_index_code ) hk_index_code,
GROUP_CONCAT( areatmp.kh_park_sys_code ) kh_park_sys_code
FROM
closed_area_car_apply caca
LEFT JOIN (
SELECT
m.closed_area_id,
GROUP_CONCAT( tmp.hk_index_code ) hk_index_code,
GROUP_CONCAT( tmp.kh_park_sys_code ) kh_park_sys_code
FROM
mkmj m
LEFT JOIN (
SELECT
mg.mkmj_id,
GROUP_CONCAT( DISTINCT mg.hk_index_code ) hk_index_code,
mg.kh_park_sys_code
FROM
mkmj_gate mg
WHERE
mg.gate_type = 'HGKM_MKMJ_GATE_TYPE_CAR'
AND mg.gate_status = 2
AND mg.delete_enum = 'FALSE'
GROUP BY
mg.mkmj_id,
mg.kh_park_sys_code
) tmp ON m.id = tmp.mkmj_id
WHERE
m.delete_enum = 'FALSE'
AND m.mkmj_status = 2
AND m.mkmj_level = 2
AND m.mkmj_type = 'HGKM_MKMJ_CKM'
GROUP BY
m.closed_area_id
) areatmp ON caca.closed_area_id = areatmp.closed_area_id
WHERE
caca.delete_enum = 'FALSE'
AND caca.car_belong_type IN ( 1, 2, 3, 5 )
AND caca.visit_end_time &gt;= DATE_FORMAT( now(), '%Y-%m-%d' )
AND caca.visit_start_time &lt;= DATE_FORMAT( now(), '%Y-%m-%d' )
and caca.audit_flag = 2
<if test="licenceNo != null and licenceNo != ''">
AND c.licence_no = #{licenceNo}
</if>
GROUP BY
caca.licence_no,
areatmp.kh_park_sys_code
</select>
<select id="dockTmpCarLevelTwo" resultType="com.zcloud.primeport.plan.mjDevice.dto.TwoLevelCar">
SELECT
caca.licence_no,
GROUP_CONCAT( caca.licence_type ) licence_type,
caca.level_two_mkmj_id,
tmp.hk_index_code,
tmp.kh_park_sys_code
FROM
closed_area_car_apply caca
LEFT JOIN (
SELECT
mg.mkmj_id,
GROUP_CONCAT( DISTINCT mg.hk_index_code ) hk_index_code,
mg.kh_park_sys_code
FROM
mkmj_gate mg
WHERE
mg.gate_type = 'HGKM_MKMJ_GATE_TYPE_CAR'
AND mg.gate_status = 2
AND mg.delete_enum = 'FALSE'
GROUP BY
mg.mkmj_id,
mg.kh_park_sys_code
) tmp ON caca.level_two_mkmj_id = tmp.mkmj_id
WHERE
caca.delete_enum = 'FALSE'
AND caca.car_belong_type = 4
AND caca.visit_end_time &gt;= DATE_FORMAT( now(), '%Y-%m-%d' )
AND caca.visit_start_time &lt;= DATE_FORMAT( now(), '%Y-%m-%d' )
and caca.audit_flag = 2
<if test="licenceNo != null and licenceNo != ''">
AND c.licence_no = #{licenceNo}
</if>
GROUP BY
caca.licence_no,
caca.level_two_mkmj_id
</select>
</mapper>