Commit c909ea4f by xmh

<fix> 修复结果排序改为分数降序

<feature> 添加分配图包到任务的接口
<fix> 调整阿里云数据库地址
1 parent 67b0423e
......@@ -17,7 +17,7 @@
<dependency>
<groupId>com.viontech.keliu</groupId>
<artifactId>keliu-util</artifactId>
<version>6.0.10-SNAPSHOT</version>
<version>6.0.10</version>
</dependency>
</dependencies>
......
......@@ -3,6 +3,7 @@ package com.viontech.label.platform.controller.web;
import com.viontech.keliu.util.JsonMessageUtil;
import com.viontech.label.platform.base.BaseExample;
import com.viontech.label.platform.controller.base.PackBaseController;
import com.viontech.label.platform.model.Pack;
import com.viontech.label.platform.model.PackExample;
import com.viontech.label.platform.model.User;
import com.viontech.label.platform.model.entity.PackInfo;
......@@ -11,9 +12,11 @@ import com.viontech.label.platform.vo.PackVo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
@Controller
......@@ -45,4 +48,24 @@ public class PackController extends PackBaseController {
return JsonMessageUtil.getSuccessJsonMsg(info);
}
@GetMapping("/assignTo")
@ResponseBody
public JsonMessageUtil.JsonMessage assignTo(@RequestParam Long[] packIds, @RequestParam(required = false) Long taskId) {
PackExample packExample = new PackExample();
packExample.createCriteria().andIdIn(Arrays.asList(packIds));
if (taskId == null) {
// todo 取消分配
List<Pack> packs = packService.selectByExample(packExample);
for (Pack pack : packs) {
pack.setTaskId(null);
packService.updateByPrimaryKey(pack);
}
} else {
Pack pack = new Pack();
pack.setTaskId(taskId);
packService.updateByExampleSelective(pack, packExample);
}
return JsonMessageUtil.getSuccessJsonMsg();
}
}
\ No newline at end of file
......@@ -483,7 +483,7 @@ public class ReidService {
final Set<String> matchFilter = currentPerson == null ? Collections.emptySet() : getMatchFilter(currentPerson, packId);
Map<String, List<SubTask>> collect = subTasks.stream().sorted(
(o1, o2) -> {
(o2, o1) -> {
String o1P = o1.getPersonUnid();
String o2P = o2.getPersonUnid();
Float o1s = personScoreMap.get(o1P);
......
......@@ -3,9 +3,9 @@ server.port=12100
#spring.datasource.url=jdbc:postgresql://36.112.68.214:5432/vion_label
#spring.datasource.username=postgres
#spring.datasource.password=vion
spring.datasource.url=jdbc:postgresql://pgm-2ze197c18ro6p1r1fo.pg.rds.aliyuncs.com:3433/vion-label
spring.datasource.url=jdbc:postgresql://pgm-2ze3cjpyjgjw0bl5uo.pg.rds.aliyuncs.com:1921/vion-label
spring.datasource.username=vion
spring.datasource.password=cdmqYwBq9uAdvLJb
spring.datasource.password=jkou72j32m4K5d8k
# redis
spring.redis.host=47.94.47.137
spring.redis.port=6379
......@@ -16,5 +16,5 @@ logging.level.com.viontech.label.platform.mapper=error
debug=false
# vion
#vion.match-url=http://36.112.68.214:12000/alg
#vion.match-url=http://101.201.36.180:12001/alg
vion.match-url=http://127.0.0.1:12000/alg
\ No newline at end of file
vion.match-url=http://101.201.36.180:12001/alg
#vion.match-url=http://127.0.0.1:12000/alg
\ No newline at end of file
package com.viontech.label.platform;
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.viontech.keliu.model.*;
import com.viontech.keliu.util.DateUtil;
import com.viontech.keliu.websocket.AlgApiClient;
import com.viontech.label.core.constant.Constants;
import com.viontech.label.core.constant.SubTaskStatus;
import com.viontech.label.platform.model.Pic;
import com.viontech.label.platform.model.PicExample;
import com.viontech.label.platform.model.SubTask;
import com.viontech.label.platform.model.SubTaskExample;
import com.viontech.label.platform.service.adapter.PicService;
......@@ -45,8 +44,8 @@ class LabelApplicationTests {
@Test
void contextLoads() throws Exception {
Long[] picIdArr = new Long[]{2911L,2924L,3085L};
Long packId = 1L;
Long[] subTaskIds = new Long[]{634L};
Long packId = 2L;
long size = 10L;
Integer timeInterval = 60;
......@@ -56,8 +55,8 @@ class LabelApplicationTests {
Date countTimeGTE = null;
Date countTimeLTE = null;
for (Long picId : picIdArr) {
SubTask subTask = subTaskService.selectByPrimaryKey(picId);
for (Long subtaskId : subTaskIds) {
SubTask subTask = subTaskService.selectByPrimaryKey(subtaskId);
PicVo pic = storageUtils.getPic(subTask.getPicId());
if (pic == null) {
continue;
......@@ -71,7 +70,7 @@ class LabelApplicationTests {
countTimeLTE = countTimeLTE == null ? max : max.compareTo(countTimeLTE) > 0 ? max : countTimeLTE;
countTimeGTE = countTimeGTE == null ? min : min.compareTo(countTimeGTE) < 0 ? min : countTimeGTE;
}
BodyFeature feature = getBodyFeature(pic.getId());
BodyFeature feature = getBodyFeature(subtaskId);
if (feature == null) {
continue;
}
......@@ -88,41 +87,72 @@ class LabelApplicationTests {
Person person = new Person().setBodyFeatures(bodyFeatures).setCounttimeGTE(countTimeGTE).setCounttimeLTE(countTimeLTE);
try {
HashMap<String, Object> options = new HashMap<>(2);
options.put("size", size + picIdArr.length);
options.put("size", size + 1);
options.put("agg", true);
CompletableFuture<AlgResult> future = matchClient.matchPerson(2, person, reidPoolName, Collections.emptyList(), options);
AlgResult result = future.get();
List<String> personUnidList = new ArrayList<>();
Map<String, Float> personScoreMap = new HashMap<>();
List<Person> matchBodies = result.getMatchBodies();
List<String> personUnidList = matchBodies.stream().filter(x -> x.getScore() > 60F).map(Person::getPersonId).filter(x -> !personUnidSet.contains(x)).collect(Collectors.toList());
for (Person match : matchBodies) {
String personId = match.getPersonId();
if (match.getScore() < 60F || personUnidSet.contains(personId)) {
continue;
}
personScoreMap.put(personId, match.getScore());
personUnidList.add(personId);
}
if (personUnidList.size() == 0) {
System.out.println("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
System.out.println("0000000000000000");
return;
}
SubTaskExample subTaskExample = new SubTaskExample();
subTaskExample.createCriteria().andPersonUnidIn(personUnidList);
subTaskExample.createCriteria().andPersonUnidIn(personUnidList).andPackIdEqualTo(packId);
List<SubTask> subTasks = subTaskService.selectByExample(subTaskExample);
Map<String, List<SubTask>> collect = subTasks.stream().sorted(
(o2,o1 ) -> {
String o1P = o1.getPersonUnid();
String o2P = o2.getPersonUnid();
Float o1s = personScoreMap.get(o1P);
Float o2s = personScoreMap.get(o2P);
if (o2s == null) {
return 1;
} else if (o1s != null) {
return o1s > o2s ? 1 : o1s.equals(o2s) ? 0 : -1;
} else {
return -1;
}
}
).collect(Collectors.groupingBy(SubTask::getPersonUnid, LinkedHashMap::new, Collectors.toList()));
List<SubTask> subtasks = subTaskService.selectByExample(subTaskExample);
HashMap<String, Map<String, List<SubTask>>> ret = new HashMap<>();
Map<String, List<SubTask>> hideMap = new LinkedHashMap<>();
Map<String, List<SubTask>> displayMap = new LinkedHashMap<>();
ret.put("hide", hideMap);
ret.put("display", displayMap);
Map<String, List<SubTask>> collect = subtasks.stream().collect(Collectors.groupingBy(SubTask::getPersonUnid, Collectors.toList()));
for (Map.Entry<String, List<SubTask>> entry : collect.entrySet()) {
SubTask pic = entry.getValue().get(0);
if (pic.getStatus() == SubTaskStatus.FINISH_LABELING.val && entry.getValue().size() > 3) {
entry.setValue(entry.getValue().subList(0, 3));
}
displayMap.put(entry.getKey(), entry.getValue());
}
System.out.println(collect);
System.out.println(JSON.toJSONString(ret));
} catch (Exception e) {
e.printStackTrace();
}
}
private BodyFeature getBodyFeature(Long picId) throws IOException {
byte[] bytes = FileUtils.readFileToByteArray(new File("C:\\Users\\vion\\Desktop\\" + picId + ".feature"));
private BodyFeature getBodyFeature(Long subTaskId) throws IOException {
byte[] bytes = FileUtils.readFileToByteArray(new File("C:\\Users\\vion\\Desktop\\" + subTaskId + ".feature"));
Feature featureByPic = objectMapper.readValue(bytes, Feature.class);
Pic pic = picService.selectByPrimaryKey(picId);
List<Data> datas = featureByPic.getDatas();
if (datas == null || datas.size() == 0) {
return null;
......@@ -132,7 +162,7 @@ class LabelApplicationTests {
return null;
}
Double[] featureData = data.getData();
return new BodyFeature().setFeature(featureData).setBid(featureByPic.getFilename()).setCounttime(pic.getCreateTime());
return new BodyFeature().setFeature(featureData).setBid(featureByPic.getFilename());
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!