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

koumen
dearLin 2026-04-29 18:05:46 +08:00
parent 84d835abc8
commit 0126a0587f
5 changed files with 98 additions and 6 deletions

View File

@ -31,5 +31,7 @@ public interface ClosedAreaPersonApplyMapper extends BaseMapper<ClosedAreaPerson
IPage<ClosedAreaPersonApplyDO> listPage(Page<Map<String, Object>> page, @Param("params") Map<String, Object> params, String menuPerms); IPage<ClosedAreaPersonApplyDO> listPage(Page<Map<String, Object>> page, @Param("params") Map<String, Object> params, String menuPerms);
List<TwoLevelUser> getDockAuthInfoById(Long applyId); List<TwoLevelUser> getDockAuthInfoById(Long applyId);
List<TwoLevelUser> getDockAuthTmpInfoById(Long applyId);
} }

View File

@ -22,5 +22,7 @@ public interface ClosedAreaPersonApplyRepository extends BaseRepository<ClosedAr
PageResponse<UserDto> getCorpUserList(Map<String, Object> params); PageResponse<UserDto> getCorpUserList(Map<String, Object> params);
List<TwoLevelUser> getDockAuthInfoById(Long applyId); List<TwoLevelUser> getDockAuthInfoById(Long applyId);
List<TwoLevelUser> getDockAuthTmpInfoById(Long applyId);
} }

View File

@ -59,5 +59,10 @@ public class ClosedAreaPersonApplyRepositoryImpl extends BaseRepositoryImpl<Clos
public List<TwoLevelUser> getDockAuthInfoById(Long applyId) { public List<TwoLevelUser> getDockAuthInfoById(Long applyId) {
return closedAreaPersonApplyMapper.getDockAuthInfoById(applyId); return closedAreaPersonApplyMapper.getDockAuthInfoById(applyId);
} }
@Override
public List<TwoLevelUser> getDockAuthTmpInfoById(Long applyId) {
return closedAreaPersonApplyMapper.getDockAuthTmpInfoById(applyId);
}
} }

View File

@ -7,12 +7,17 @@ import com.zcloud.gbscommon.dahuaDevice.DhuaConfig;
import com.zcloud.gbscommon.hkDevice.HKDeviceUtil; import com.zcloud.gbscommon.hkDevice.HKDeviceUtil;
import com.zcloud.gbscommon.utils.DateUtil; import com.zcloud.gbscommon.utils.DateUtil;
import com.zcloud.gbscommon.utils.Tools; 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.ClosedAreaPersonApplyDO;
import com.zcloud.primeport.persistence.dataobject.XgfApplyPersonDO; import com.zcloud.primeport.persistence.dataobject.XgfApplyPersonDO;
import com.zcloud.primeport.persistence.repository.ClosedAreaPersonApplyRepository; import com.zcloud.primeport.persistence.repository.ClosedAreaPersonApplyRepository;
import com.zcloud.primeport.persistence.repository.XgfApplyPersonRepository; import com.zcloud.primeport.persistence.repository.XgfApplyPersonRepository;
import com.zcloud.primeport.plan.mjDevice.dto.TwoLevelUser; import com.zcloud.primeport.plan.mjDevice.dto.TwoLevelUser;
import jodd.util.Base64; import jodd.util.Base64;
import lombok.Data; import lombok.Data;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -30,6 +35,9 @@ import java.util.stream.Collectors;
public class TwoPersonUtil { public class TwoPersonUtil {
@Resource @Resource
private ClosedAreaPersonApplyRepository closedAreaPersonApplyRepository; private ClosedAreaPersonApplyRepository closedAreaPersonApplyRepository;
@DubboReference
private ZcloudUserFacade zcloudUserFacade;
// @Value("${kmmj.dockflag}") // @Value("${kmmj.dockflag}")
// private Integer dockFlag; // private Integer dockFlag;
// @Value("${oneLevelPerson.prefix}") // @Value("${oneLevelPerson.prefix}")
@ -41,23 +49,69 @@ public class TwoPersonUtil {
private static String clientId = "mkmj_management"; private static String clientId = "mkmj_management";
private static String clientSecret = "5ef82f7c-9926-46a3-8d07-136fd054849c"; private static String clientSecret = "5ef82f7c-9926-46a3-8d07-136fd054849c";
/*
*
* */
public void levelTwoPeopleCompanyByApplyId(Long applyId) { public void levelTwoPeopleCompanyByApplyId(Long applyId) {
List<TwoLevelUser> u = new ArrayList<>(); if (!dockFlag.equals(1)) return;
List<TwoLevelUser> userList = closedAreaPersonApplyRepository.getDockAuthInfoById(applyId); List<TwoLevelUser> userList = new ArrayList<>();
ClosedAreaPersonApplyDO byId = closedAreaPersonApplyRepository.getById(applyId);
// 查询出来要对接的人
if (byId.getPersonBelongType().equals(4)) {
// 临时人员
userList = closedAreaPersonApplyRepository.getDockAuthTmpInfoById(applyId);
} else {
// 非临时人员
userList = closedAreaPersonApplyRepository.getDockAuthInfoById(applyId);
}
dockUserReal(userList);
}
/*
*
* */
public void scheduledPeopleCompany() {
if (!dockFlag.equals(1)) return;
List<TwoLevelUser> userList = closedAreaPersonApplyRepository.getDockAuthTmpInfoById(null);
userList.addAll(closedAreaPersonApplyRepository.getDockAuthInfoById(null));
dockUserReal(userList);
}
protected void dockOneLevelPerson(String userCard) throws Exception {
DaHuaDeviceCommon daHuaDeviceCommon = getDaHuaDeviceCommon();
JSONObject userByUserCard = daHuaDeviceCommon.getUserByUserCard(userCard);
// 如果这个人存在 哪么 看一下今天有没有时间
// 这个人不存在 新增这个人
}
protected void dockUserReal(List<TwoLevelUser> userList) {
userList.forEach(item -> { userList.forEach(item -> {
List<TwoLevelUser> u = new ArrayList<>();
List<String> faceUrl = new ArrayList<>();
ZcloudUserImgQry zcloudUserImgQry = new ZcloudUserImgQry();
item.setUserCard(Base64.decodeToString(item.getUserCard())); item.setUserCard(Base64.decodeToString(item.getUserCard()));
u.add(item); faceUrl.add(item.getUserFaceImages());
if (Tools.notEmpty(item.getEntourage())) { if (Tools.notEmpty(item.getEntourage())) {
List<TwoLevelUser> entourageList = getEntourageList(new JSONArray(item.getEntourage())); List<TwoLevelUser> entourageList = getEntourageList(faceUrl, new JSONArray(item.getEntourage()), item.getHkIndexCode());
if (!entourageList.isEmpty()) { if (!entourageList.isEmpty()) {
u.addAll(entourageList); u.addAll(entourageList);
} }
} }
zcloudUserImgQry.setUrlList(faceUrl);
List<ZcloudUserImgBase64Co> data = zcloudUserFacade.listBase64ByUrl(zcloudUserImgQry).getData();
Map<String, String> collect = data.stream().collect(Collectors.toMap(ZcloudUserImgBase64Co::getUserAvatarUrl, ZcloudUserImgBase64Co::getUserAvatarBase64, (existing, replacement) -> replacement));
u.add(item);
u.forEach(itemUser -> {
item.setUserFaceImagesBase64(collect.get(itemUser.getUserFaceImages()));
// 把人同步过去,如存在不做任何操作。
dockLongTermUserAuthLevelTwo(itemUser);
});
dockLongAuthTwo(u, Arrays.asList(item.getHkIndexCode().split(",")), DateUtil.date2Str(new Date(), "yyyy-MM-dd"));
}); });
} }
protected List<TwoLevelUser> getEntourageList(JSONArray entries) { protected List<TwoLevelUser> getEntourageList(List<String> faceUrl, JSONArray entries, String hkindecodes) {
if (entries.isEmpty()) return new ArrayList<>(); if (entries.isEmpty()) return new ArrayList<>();
ArrayList<TwoLevelUser> objects = new ArrayList<>(); ArrayList<TwoLevelUser> objects = new ArrayList<>();
for (int i = 0; i < entries.size(); i++) { for (int i = 0; i < entries.size(); i++) {
@ -81,7 +135,9 @@ public class TwoPersonUtil {
u.setUserCard(Base64.decodeToString(jsonObject.getStr("userCard"))); u.setUserCard(Base64.decodeToString(jsonObject.getStr("userCard")));
u.setUserFaceImages(jsonObject.getStr("userFaceUrl")); u.setUserFaceImages(jsonObject.getStr("userFaceUrl"));
u.setUserName(jsonObject.getStr("userName")); u.setUserName(jsonObject.getStr("userName"));
u.setHkIndexCode(hkindecodes);
objects.add(u); objects.add(u);
faceUrl.add(jsonObject.getStr("userFaceUrl"));
} }
return objects; return objects;
} }

View File

@ -137,5 +137,32 @@
GROUP BY GROUP BY
capa.id capa.id
</select> </select>
<select id="getDockAuthTmpInfoById" resultType="com.zcloud.primeport.plan.mjDevice.dto.TwoLevelUser">
SELECT
capa.id,
GROUP_CONCAT( DISTINCT mg.hk_index_code ) hk_index_code,
capa.visit_start_time,
capa.visit_end_time,
capa.user_face_url,
capa.user_phone,
capa.user_card
FROM
closed_area_person_apply capa
LEFT JOIN mkmj_gate mg ON capa.level_two_mkmj_id = mg.mkmj_id
AND mg.delete_enum = 'FALSE'
AND mg.gate_type = 'HGKM_MKMJ_GATE_TYPE_PERSON'
AND mg.gate_status = 2
WHERE
capa.delete_enum = 'FALSE'
AND capa.person_belong_type = 4
AND capa.audit_flag = 2
AND capa.visit_end_time &gt;= DATE_FORMAT( now(), '%Y-%m-%d' )
AND capa.visit_start_time &lt;= DATE_FORMAT( now(), '%Y-%m-%d' )
<if test="applyId != null">
and capa.id = #{applyId}
</if>
GROUP BY
capa.id
</select>
</mapper> </mapper>