浏览代码

fix pom

tags/B.1.2.2.6_20230901_base^2
yk 2 年前
父节点
当前提交
ea36895cf4
共有 7 个文件被更改,包括 278 次插入12 次删除
  1. +37
    -0
      xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/utils/sql/EsClient.java
  2. +30
    -0
      xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/utils/time/LocalDateTimeSerializer.java
  3. +30
    -0
      xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/utils/time/LocalDatetimeDeserializer.java
  4. +19
    -0
      xueyi-modules/xueyi-system/pom.xml
  5. +18
    -7
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/meeting/controller/api/DmMeetingInnerApiController.java
  6. +143
    -5
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/pass/controller/api/DmRecognizedRecordsApiController.java
  7. +1
    -0
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/pass/service/IDmRecognizedRecordsService.java

+ 37
- 0
xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/utils/sql/EsClient.java 查看文件

@@ -0,0 +1,37 @@
package com.xueyi.common.core.utils.sql;

import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.json.jackson.JacksonJsonpMapper;
import co.elastic.clients.transport.ElasticsearchTransport;
import co.elastic.clients.transport.rest_client.RestClientTransport;
import lombok.Data;
import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
* @author yk
* @description
* @date 2023-08-29 15:55
*/
@Data
@Configuration
public class EsClient {
@Value("${spring.elasticsearch.rest.uris}")
public String esUri;


@Bean
public ElasticsearchClient getEsClient() {
RestClient restClient = RestClient.builder(
new HttpHost(esUri)).build();

ElasticsearchTransport transport = new RestClientTransport(
restClient, new JacksonJsonpMapper());
ElasticsearchClient client = new ElasticsearchClient(transport);
return client;
}

}

+ 30
- 0
xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/utils/time/LocalDateTimeSerializer.java 查看文件

@@ -0,0 +1,30 @@
package com.xueyi.common.core.utils.time;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.xueyi.common.core.utils.DateUtil;

import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeParseException;

/**
* @author yk
* @description
* @date 2023-08-26 16:19
*/
public class LocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {

@Override
public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider provider)
throws IOException {
try {
String s = value.format(DateUtil.DEFAULT_DATETIME_PATTERN);
gen.writeString(s);
} catch (DateTimeParseException e) {
System.err.println(e);
gen.writeString("");
}
}
}

+ 30
- 0
xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/utils/time/LocalDatetimeDeserializer.java 查看文件

@@ -0,0 +1,30 @@
package com.xueyi.common.core.utils.time;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.xueyi.common.core.utils.DateUtil;

import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeParseException;

/**
* @author yk
* @description
* @date 2023-08-26 16:05
*/
public class LocalDatetimeDeserializer extends JsonDeserializer<LocalDateTime> {

@Override
public LocalDateTime deserialize(JsonParser p, DeserializationContext ctx)
throws IOException {
String str = p.getText();
try {
return LocalDateTime.parse(str, DateUtil.DEFAULT_DATETIME_PATTERN);
} catch (DateTimeParseException e) {
System.err.println(e);
return null;
}
}
}

+ 19
- 0
xueyi-modules/xueyi-system/pom.xml 查看文件

@@ -113,6 +113,25 @@
<artifactId>xueyi-api-nlt</artifactId>
</dependency>

<dependency>
<groupId>jakarta.json</groupId>
<artifactId>jakarta.json-api</artifactId>
<version>2.0.1</version>
</dependency>

<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.13.0</version>
</dependency>

<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>8.3.3</version>
</dependency>



</dependencies>



+ 18
- 7
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/meeting/controller/api/DmMeetingInnerApiController.java 查看文件

@@ -366,7 +366,8 @@ public class DmMeetingInnerApiController extends BaseApiController {
**/
List freeTimePart (Long roomId, List<DmMeetingOrdersPo> objects, String currentTime) {
List<JSONObject> freeTimeList = new ArrayList<>();

log.info("freeTimePart:{}","freeTimePart");
log.info("currentTime:{}",currentTime);
if (null == objects || objects.size() ==0) {
JSONObject json = new JSONObject();
json.put("startTime", currentTime);
@@ -383,12 +384,22 @@ public class DmMeetingInnerApiController extends BaseApiController {
json.put("endTime", DateUtils.formatDate(current.getStartTime(), "HH:mm"));
json.put("roomId", roomId);
freeTimeList.add(json);
} else {
if (DateUtils.formatDate(current.getEndTime(), "HH:mm").compareTo(currentTime) > 0 ) {
JSONObject json = new JSONObject();
json.put("startTime", DateUtils.formatDate(current.getEndTime(), "HH:mm"));
json.put("endTime", 0);
json.put("roomId", roomId);
freeTimeList.add(json);
} else {
JSONObject json = new JSONObject();
json.put("startTime", currentTime);
json.put("endTime", 0);
json.put("roomId", roomId);
freeTimeList.add(json);
}

}
JSONObject json = new JSONObject();
json.put("startTime", DateUtils.formatDate(current.getEndTime(), "HH:mm"));
json.put("endTime", 0);
json.put("roomId", roomId);
freeTimeList.add(json);
return freeTimeList;
}
// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
@@ -441,7 +452,7 @@ public class DmMeetingInnerApiController extends BaseApiController {

JSONObject getList(String currentStr, Map<Long, List<DmMeetingOrdersPo>> groupedByRoom, Map<Long, String> rooms, Map<Long, Integer> sorts, List<Long> ids){
Map<Long, List<JSONObject>> freeTime = new HashMap<>();
log.info("currentStr:{}", currentStr);
for(int i=0;i<ids.size();i++){
Long key = ids.get(i);
//groupedByRoom.get(key)可能为空


+ 143
- 5
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/pass/controller/api/DmRecognizedRecordsApiController.java 查看文件

@@ -1,9 +1,22 @@
package com.xueyi.system.pass.controller.api;

import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.elasticsearch._types.query_dsl.MatchQuery;
import co.elastic.clients.elasticsearch._types.query_dsl.Query;
import co.elastic.clients.elasticsearch.core.BulkRequest;
import co.elastic.clients.elasticsearch.core.BulkResponse;
import co.elastic.clients.elasticsearch.core.SearchResponse;
import co.elastic.clients.elasticsearch.core.SearchTemplateResponse;
import co.elastic.clients.elasticsearch.core.bulk.BulkResponseItem;
import co.elastic.clients.elasticsearch.core.search.Hit;
import co.elastic.clients.elasticsearch.core.search.TotalHits;
import co.elastic.clients.elasticsearch.core.search.TotalHitsRelation;
import co.elastic.clients.json.JsonData;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xueyi.common.core.constant.basic.SecurityConstants;
import com.xueyi.common.core.web.result.AjaxResult;
import com.xueyi.common.web.annotation.TenantIgnore;
import com.xueyi.system.api.device.domain.vo.DeviceTenantSourceMergeVo;
import com.xueyi.system.api.pass.domain.dto.DmRecognizedMultiRecordsDto;
import com.xueyi.system.api.pass.domain.dto.DmRecognizedRecordsDto;
@@ -18,11 +31,14 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;

/**
* 人员识别管理 业务处理
@@ -41,7 +57,7 @@ public class DmRecognizedRecordsApiController extends BaseApiController {

@ResponseBody
@PostMapping(value = "/upload-pass", produces = "application/json;charset=UTF-8")
public JSONObject upload(@RequestBody DmRecognizedRecordsDto recognizedRecordsDto){
public JSONObject upload(@RequestBody DmRecognizedRecordsDto recognizedRecordsDto) {
log.info("upload-pass devId={}", recognizedRecordsDto.getDevId());
DeviceTenantSourceMergeVo vo = super.getDeviceTenantSourceMergeVo(recognizedRecordsDto.getDevId());

@@ -51,11 +67,11 @@ public class DmRecognizedRecordsApiController extends BaseApiController {

@ResponseBody
@PostMapping(value = "/upload-multi-pass", produces = "application/json;charset=UTF-8")
public JSONObject uploads(@RequestBody DmRecognizedMultiRecordsDto recognizedMultiRecordsDto){
public JSONObject uploads(@RequestBody DmRecognizedMultiRecordsDto recognizedMultiRecordsDto) {
log.info("upload-multi-pass devId={}", recognizedMultiRecordsDto.getDevId());
DeviceTenantSourceMergeVo vo = super.getDeviceTenantSourceMergeVo(recognizedMultiRecordsDto.getDevId());
if (recognizedMultiRecordsDto.getRecords().size() > 0)
recognizedRecordsService.setRedisRecognizedCount(recognizedMultiRecordsDto.getRecords().size());
recognizedRecordsService.setRedisRecognizedCount(recognizedMultiRecordsDto.getRecords().size());

return recognizedRecordsFeign.uploadMultiPass(recognizedMultiRecordsDto, vo.getTenantId(), vo.getSourceSlave(), SecurityConstants.INNER);
}
@@ -66,10 +82,132 @@ public class DmRecognizedRecordsApiController extends BaseApiController {
// @Autowired
// private RecognizedRecordsRepository recordsRepository;

// @Autowired
// private RecognizedRecordsRepository recordsRepository;

@Autowired
private ElasticsearchClient esClient;

@GetMapping("/syncEs")
public AjaxResult sync() {
@TenantIgnore(tenantLine = true)
public AjaxResult sync(@RequestHeader(value = SecurityConstants.SOURCE_NAME, defaultValue = "salve") String sourceName, @RequestHeader(value = SecurityConstants.ENTERPRISE_ID, defaultValue = "-1") Long enterpriseId, @RequestHeader(value = SecurityConstants.FROM_SOURCE, defaultValue = SecurityConstants.INNER) String source) {
List<DmRecognizedRecordsPo> lists = recordsMapper.selectList(new QueryWrapper<>());
// lists.stream().map(f->recordsRepository.save((EsRecognizedRecordsPo) f));

BulkRequest.Builder br = new BulkRequest.Builder();

System.err.println(lists.get(0));
for (int j = 0; j < lists.size(); j++) {
int finalJ = j;
br.operations(op -> op
.index(idx -> {

return idx
.index("saas-recognized-records")
.id(lists.get(finalJ).getId().toString())
.document(lists.get(finalJ));
}
)
);
}

try {
BulkResponse result = esClient.bulk(br.build());
if (result.errors()) {
log.error("Bulk had errors");
for (BulkResponseItem item : result.items()) {
if (item.error() != null) {
log.error(item.error().reason());
}
}
}
} catch (IOException e) {
log.error("sync error:{}", e.getMessage());
throw new RuntimeException(e);
}

// lists.stream().forEach(f->recordsRepository.save((EsRecognizedRecordsPo) f));
return AjaxResult.success();
}




@GetMapping("/queryEs")
@TenantIgnore(tenantLine = true)
public AjaxResult queryEs(@RequestHeader(value = SecurityConstants.SOURCE_NAME, defaultValue = "salve") String sourceName, @RequestHeader(value = SecurityConstants.ENTERPRISE_ID, defaultValue = "-1") Long enterpriseId, @RequestHeader(value = SecurityConstants.FROM_SOURCE, defaultValue = SecurityConstants.INNER) String source, @RequestBody JSONObject params) {
DmRecognizedRecordsPo ee = new DmRecognizedRecordsPo();
System.err.println(ee.getClass().getName());
System.err.println(ee.getClass().getSimpleName());

SearchTemplateResponse<DmRecognizedRecordsPo> response = null;
SearchResponse<DmRecognizedRecordsPo> response2 = null;
Query byName = MatchQuery.of(m -> m
.field("userName")
.query(params.getString("userName"))
)._toQuery();

// Search by max price
Query byDeptId = MatchQuery.of(r -> r
.field("deptId")
.query(params.getString("deptId"))
// .gte(JsonData.of("1676567054881718273"))
)._toQuery();
try {
response2 = esClient.search(s -> s
.index("saas-recognized-records")
.query(q -> q
.bool(b -> b.must(byName).must(byDeptId))
).from(params.getInteger("from")).size(params.getInteger("size")),
DmRecognizedRecordsPo.class
);
} catch (IOException e) {
throw new RuntimeException(e);
}

TotalHits total = response2.hits().total();
boolean isExactResult = total.relation() == TotalHitsRelation.Eq;

if (isExactResult) {
log.info("There are " + total.value() + " results");
} else {
log.info("There are more than " + total.value() + " results");
}
List<DmRecognizedRecordsPo> products2 = response2.hits().hits().stream().map(f->f.source()).collect(
Collectors.toList()
);

List<Hit<DmRecognizedRecordsPo>> hits = response2.hits().hits();
for (Hit<DmRecognizedRecordsPo> hit: hits) {
DmRecognizedRecordsPo product = hit.source();
log.info("Found product " + product.getDevId() + ", score " + hit.score());
}
try {
response = esClient.searchTemplate(r -> r
.index("saas-recognized-records")
.id("records-search-template")
.params("query_string", JsonData.of(params.getString("userName")))
.params("from", JsonData.of(params.getInteger("from")))
.params("size", JsonData.of(params.getInteger("size")))
,
DmRecognizedRecordsPo.class
);
} catch (IOException e) {
throw new RuntimeException(e);
}

List<Hit<DmRecognizedRecordsPo>> hits2 = response.hits().hits();
List<DmRecognizedRecordsPo> products = response.hits().hits().stream().map(f->f.source()).collect(
Collectors.toList()
);


// lists.stream().forEach(f->recordsRepository.save((EsRecognizedRecordsPo) f));
JSONObject jsonObject = new JSONObject();
jsonObject.put("data", products);
jsonObject.put("data2", products2);

return AjaxResult.success(jsonObject);
}


}

+ 1
- 0
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/pass/service/IDmRecognizedRecordsService.java 查看文件

@@ -10,4 +10,5 @@ import com.xueyi.system.pass.domain.query.DmRecognizedRecordsQuery;
* @author xueyi
*/
public interface IDmRecognizedRecordsService extends IBaseService<DmRecognizedRecordsQuery, DmRecognizedRecordsDto> {

}

正在加载...
取消
保存