feat(bi): 报警记录和人员定位接口支持分页功能
parent
8d74a7b96b
commit
0a705c28ed
|
|
@ -109,7 +109,9 @@ class PositionPersonLocalLookupService {
|
||||||
Map<String, String> result = new LinkedHashMap<>();
|
Map<String, String> result = new LinkedHashMap<>();
|
||||||
for (List<String> batch : batches(idCardNos)) {
|
for (List<String> batch : batches(idCardNos)) {
|
||||||
for (TerminalBindingSnapshotDO binding : personnelMatchRepository.listTerminalBindingsByIdCardNos(batch)) {
|
for (TerminalBindingSnapshotDO binding : personnelMatchRepository.listTerminalBindingsByIdCardNos(batch)) {
|
||||||
String idCardNo = normalize(binding.getIdCardNo());
|
String bindingIdCardNo = normalize(binding.getBindingIdCardNo());
|
||||||
|
String idCardNo = StringUtils.hasText(bindingIdCardNo)
|
||||||
|
? bindingIdCardNo : normalize(binding.getTerminalIdCardNo());
|
||||||
String terminalNo = normalize(binding.getTerminalNo());
|
String terminalNo = normalize(binding.getTerminalNo());
|
||||||
if (StringUtils.hasText(idCardNo) && StringUtils.hasText(terminalNo)) {
|
if (StringUtils.hasText(idCardNo) && StringUtils.hasText(terminalNo)) {
|
||||||
result.putIfAbsent(idCardNo, terminalNo);
|
result.putIfAbsent(idCardNo, terminalNo);
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import lombok.Data;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class TerminalBindingSnapshotDO {
|
public class TerminalBindingSnapshotDO {
|
||||||
private String idCardNo;
|
private String bindingIdCardNo;
|
||||||
|
private String terminalIdCardNo;
|
||||||
private String terminalNo;
|
private String terminalNo;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
@ -63,6 +64,9 @@ public class PersonnelMatchRepositoryImpl implements PersonnelMatchRepository {
|
||||||
return personnelMatchMapper.listPeopleByTerminalNos(values);
|
return personnelMatchMapper.listPeopleByTerminalNos(values);
|
||||||
}
|
}
|
||||||
@Override public List<TerminalBindingSnapshotDO> listTerminalBindingsByIdCardNos(List<String> values) {
|
@Override public List<TerminalBindingSnapshotDO> listTerminalBindingsByIdCardNos(List<String> values) {
|
||||||
|
if (values == null || values.isEmpty()) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
return personnelMatchMapper.listTerminalBindingsByIdCardNos(values);
|
return personnelMatchMapper.listTerminalBindingsByIdCardNos(values);
|
||||||
}
|
}
|
||||||
@Override public List<TerminalLocationSnapshotDO> listTerminals(List<String> values) {
|
@Override public List<TerminalLocationSnapshotDO> listTerminals(List<String> values) {
|
||||||
|
|
|
||||||
|
|
@ -123,7 +123,8 @@
|
||||||
ORDER BY t.terminal_no, u.id DESC
|
ORDER BY t.terminal_no, u.id DESC
|
||||||
</select>
|
</select>
|
||||||
<select id="listTerminalBindingsByIdCardNos" resultType="com.zcloud.personnel.positioning.persistence.dataobject.TerminalBindingSnapshotDO">
|
<select id="listTerminalBindingsByIdCardNos" resultType="com.zcloud.personnel.positioning.persistence.dataobject.TerminalBindingSnapshotDO">
|
||||||
SELECT COALESCE(NULLIF(TRIM(tb.id_card_no), ''), NULLIF(TRIM(t.bind_id_card_no), '')) AS id_card_no,
|
SELECT tb.id_card_no AS binding_id_card_no,
|
||||||
|
t.bind_id_card_no AS terminal_id_card_no,
|
||||||
t.terminal_no
|
t.terminal_no
|
||||||
FROM terminal t
|
FROM terminal t
|
||||||
LEFT JOIN terminal_bind tb ON tb.id = (
|
LEFT JOIN terminal_bind tb ON tb.id = (
|
||||||
|
|
@ -132,9 +133,27 @@
|
||||||
AND (tb2.delete_enum IS NULL OR tb2.delete_enum = 'FALSE')
|
AND (tb2.delete_enum IS NULL OR tb2.delete_enum = 'FALSE')
|
||||||
ORDER BY tb2.bind_time DESC, tb2.id DESC LIMIT 1)
|
ORDER BY tb2.bind_time DESC, tb2.id DESC LIMIT 1)
|
||||||
WHERE (t.delete_enum IS NULL OR t.delete_enum = 'FALSE')
|
WHERE (t.delete_enum IS NULL OR t.delete_enum = 'FALSE')
|
||||||
AND COALESCE(NULLIF(TRIM(tb.id_card_no), ''), NULLIF(TRIM(t.bind_id_card_no), '')) IN
|
<choose>
|
||||||
<foreach collection="values" item="value" open="(" separator="," close=")">#{value}</foreach>
|
<when test="values != null and values.size() > 0">
|
||||||
ORDER BY id_card_no, t.update_time DESC, t.id DESC
|
AND (
|
||||||
|
tb.id_card_no IN
|
||||||
|
<foreach collection="values" item="value" open="(" separator="," close=")">
|
||||||
|
#{value}
|
||||||
|
</foreach>
|
||||||
|
OR (
|
||||||
|
(tb.id_card_no IS NULL OR tb.id_card_no = '')
|
||||||
|
AND t.bind_id_card_no IN
|
||||||
|
<foreach collection="values" item="value" open="(" separator="," close=")">
|
||||||
|
#{value}
|
||||||
|
</foreach>
|
||||||
|
)
|
||||||
|
)
|
||||||
|
</when>
|
||||||
|
<otherwise>
|
||||||
|
AND 1 = 0
|
||||||
|
</otherwise>
|
||||||
|
</choose>
|
||||||
|
ORDER BY binding_id_card_no, terminal_id_card_no, t.update_time DESC, t.id DESC
|
||||||
</select>
|
</select>
|
||||||
<select id="listTerminals" resultType="com.zcloud.personnel.positioning.persistence.dataobject.TerminalLocationSnapshotDO">
|
<select id="listTerminals" resultType="com.zcloud.personnel.positioning.persistence.dataobject.TerminalLocationSnapshotDO">
|
||||||
SELECT terminal_no, device_type, device_status, last_location_time, last_location_name
|
SELECT terminal_no, device_type, device_status, last_location_time, last_location_name
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue