Commit 2d5b3747 by 朱海

[chg]去掉直接显示头脚连线

1 parent 34bbb1b2
......@@ -122,7 +122,7 @@ public class ReidController {
, @RequestParam(required = false) Integer status, @RequestParam Integer type
, @RequestParam(defaultValue = "1") Integer countGTE, @RequestParam(defaultValue = "10000") Integer countLTE) {
SubTaskMapper mapper = (SubTaskMapper) subTaskService.getMapper();
List<SubTask> pics = mapper.getOtherPeople(packId, status, personUnid, type == 0 ? ">" : "<", type == 0 ? "" : "desc", countGTE, countLTE);
List<SubTask> pics = mapper.getOtherPeople(packId, status, personUnid, type == 0 ? "<" : ">", type == 0 ? "desc" : "asc", countGTE, countLTE);
if (pics.size() == 0) {
return JsonMessageUtil.getSuccessJsonMsg("没有数据了");
}
......@@ -223,6 +223,13 @@ public class ReidController {
return JsonMessageUtil.getSuccessJsonMsg("success");
}
@RequestMapping("/setFlag")
public Object setPackFlag(@RequestParam String personUnid, @RequestParam Long packId, @RequestParam(required = false) String flag) {
reidService.setPersonFlag(personUnid, packId, flag);
return JsonMessageUtil.getSuccessJsonMsg("success");
}
/**
* 根据图片查找相似的人
*
......
......@@ -75,7 +75,7 @@ public interface SubTaskMapper extends BaseMapper {
"<if test = 'startTime != null &amp;&amp; endTime != null'> and annotate_time between #{startTime} and #{endTime}</if>" +
"group by person_unid " +
" having count(*) between #{countGTE} and #{countLTE} " +
" order by min(create_time), person_unid " +
" order by max(annotate_time) desc nulls last, person_unid desc " +
"<if test='offset != null'> offset #{offset} limit #{limit}</if>" +
"</script>")
List<String> getPersonUnids(Long packId, Integer status, Long offset, Long limit, Long annotatorId, Integer countGTE, Integer countLTE, Date startTime, Date endTime);
......@@ -102,7 +102,7 @@ public interface SubTaskMapper extends BaseMapper {
" <if test = 'status == null'> and status != -1</if> " +
" and person_unid ${type} #{personUnid} group by person_unid " +
" having count(*) between #{countGTE} and #{countLTE} " +
" order by person_unid ${sort} limit 1) order by id" +
" order by max(annotate_time) ${sort}, person_unid ${sort} limit 1) order by id" +
"</script>")
List<SubTask> getOtherPeople(Long packId, Integer status, String personUnid, String type, String sort, Integer countGTE, Integer countLTE);
}
\ No newline at end of file
......@@ -20,6 +20,7 @@
<result column="subTask_person_unid" property="personUnid" />
<result column="subTask_direction" property="direction" />
<result column="subTask_gate_id" property="gateId" />
<result column="subTask_person_flag" property="personFlag"/>
</resultMap>
<resultMap id="BaseResultMap" type="com.viontech.label.platform.model.SubTask" extends="BaseResultMapRoot" >
<result column="pic_id" property="pic.id" />
......@@ -123,7 +124,7 @@
"subTask".annotate_time as subTask_annotate_time, "subTask".label_result as subTask_label_result,
"subTask".in_status as subTask_in_status, "subTask".out_status as subTask_out_status,
"subTask"."status" as "subTask_status", "subTask".person_unid as subTask_person_unid,
"subTask".direction as subTask_direction, "subTask".gate_id as subTask_gate_id
"subTask".direction as subTask_direction, "subTask".gate_id as subTask_gate_id, "subTask".person_flag as subTask_person_flag
</sql>
<sql id="Base_Column_List" >
<if test="!(_parameter.getClass().getSimpleName() == 'SubTaskExample')" >
......@@ -262,6 +263,9 @@
<if test="gateId != null" >
gate_id,
</if>
<if test="personFlag != null">
person_flag,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="unid != null" >
......@@ -315,6 +319,9 @@
<if test="gateId != null" >
#{gateId,jdbcType=BIGINT},
</if>
<if test="personFlag != null" >
#{personFlag,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="com.viontech.label.platform.model.SubTaskExample" resultType="java.lang.Integer" >
......@@ -381,6 +388,9 @@
<if test="record.gateId != null" >
gate_id = #{record.gateId,jdbcType=BIGINT},
</if>
<if test="record.personFlag != null" >
person_flag = #{record.personFlag,jdbcType=VARCHAR},
</if>
</set>
<if test="_parameter != null" >
<include refid="Update_By_Example_Where_Clause" />
......@@ -405,7 +415,8 @@
"status" = #{record.status,jdbcType=INTEGER},
person_unid = #{record.personUnid,jdbcType=VARCHAR},
direction = #{record.direction,jdbcType=INTEGER},
gate_id = #{record.gateId,jdbcType=BIGINT}
gate_id = #{record.gateId,jdbcType=BIGINT},
person_flag = #{record.personFlag,jdbcType=VARCHAR}
<if test="_parameter != null" >
<include refid="Update_By_Example_Where_Clause" />
</if>
......@@ -464,6 +475,9 @@
<if test="gateId != null" >
gate_id = #{gateId,jdbcType=BIGINT},
</if>
<if test="personFlag != null" >"
person_flag = #{personFlag,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
......@@ -485,7 +499,8 @@
"status" = #{status,jdbcType=INTEGER},
person_unid = #{personUnid,jdbcType=VARCHAR},
direction = #{direction,jdbcType=INTEGER},
gate_id = #{gateId,jdbcType=BIGINT}
gate_id = #{gateId,jdbcType=BIGINT},
person_flag = #{record.personFlag,jdbcType=VARCHAR}
where id = #{id,jdbcType=BIGINT}
</update>
</mapper>
\ No newline at end of file
......@@ -2,6 +2,7 @@ package com.viontech.label.platform.model;
import com.viontech.label.platform.base.BaseModel;
import java.util.Date;
import java.util.Map;
public class SubTask extends BaseModel {
private Long id;
......@@ -44,6 +45,10 @@ public class SubTask extends BaseModel {
private Task task;
private Map<String, Integer> bodyPoint;
private String personFlag;
public Long getId() {
return id;
}
......@@ -203,4 +208,20 @@ public class SubTask extends BaseModel {
public void setTask(Task task) {
this.task = task;
}
public Map<String, Integer> getBodyPoint() {
return bodyPoint;
}
public void setBodyPoint(Map<String, Integer> bodyPoint) {
this.bodyPoint = bodyPoint;
}
public String getPersonFlag() {
return personFlag;
}
public void setPersonFlag(String personFlag) {
this.personFlag = personFlag;
}
}
\ No newline at end of file
package com.viontech.label.platform.service.impl;
import com.viontech.keliu.model.Feature;
import com.viontech.keliu.util.JsonMessageUtil;
import com.viontech.label.platform.base.BaseExample;
import com.viontech.label.platform.base.BaseMapper;
import com.viontech.label.platform.base.BaseServiceImpl;
import com.viontech.label.platform.mapper.SubTaskMapper;
import com.viontech.label.platform.model.SubTask;
import com.viontech.label.platform.model.SubTaskExample;
import com.viontech.label.platform.service.adapter.SubTaskService;
import com.viontech.label.platform.utils.StorageUtils;
import org.redisson.mapreduce.SubTasksExecutor;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class SubTaskServiceImpl extends BaseServiceImpl<SubTask> implements SubTaskService {
@Resource
private SubTaskMapper subTaskMapper;
@Resource
private StorageUtils storageUtils;
@Override
public BaseMapper<SubTask> getMapper() {
return subTaskMapper;
......@@ -54,4 +63,58 @@ public class SubTaskServiceImpl extends BaseServiceImpl<SubTask> implements SubT
return selectByExample(subTaskExample);
}
@Override
public List<SubTask> selectByExample(BaseExample example) {
List<SubTask> subTasks = super.selectByExample(example);
/*for (SubTask subTask : subTasks) {
Map<String, Integer> bodyPoint = getBodyPoint(subTask.getPicId());
subTask.setBodyPoint(bodyPoint);
}*/
return subTasks;
}
public Map<String, Integer> getBodyPoint(Long picId) {
try {
Feature feature = storageUtils.getFeatureByPic(picId);
if (null == feature) {
return null;
}
double cx = feature.getFace_roi().get(0).getX();
double cy = feature.getFace_roi().get(0).getY();
double foot_x = feature.getFace_roi().get(0).getW();
double foot_y = feature.getFace_roi().get(0).getH();
Integer img_type = feature.getBody_roi().get(0).getX();
Integer quadrant = feature.getBody_roi().get(0).getY();
double lefttop_x = feature.getBody_roi().get(0).getW();
double lefttop_y = feature.getBody_roi().get(0).getH();
Integer head_x_inSmall = new Double(Math.abs(cx - lefttop_x)).intValue();
Integer head_y_inSmall = new Double(Math.abs(cy - lefttop_y)).intValue();
Integer foot_x_inSmall = new Double(Math.abs(foot_x - lefttop_x)).intValue();
Integer foot_y_inSmall = new Double(Math.abs(foot_y - lefttop_y)).intValue();
if (quadrant == 1 || quadrant == 3) {
int temp;
temp = head_x_inSmall;
head_x_inSmall = head_y_inSmall;
head_y_inSmall = temp;
temp = foot_x_inSmall;
foot_x_inSmall = foot_y_inSmall;
foot_y_inSmall = temp;
}
Map<String, Integer> resultMap = new HashMap<>(4);
resultMap.put("head_x_inSmall", head_x_inSmall);
resultMap.put("head_y_inSmall", head_y_inSmall);
resultMap.put("foot_x_inSmall", foot_x_inSmall);
resultMap.put("foot_y_inSmall", foot_y_inSmall);
return resultMap;
} catch (Exception e) {
logger.error("获取坐标失败:{}", e.getMessage());
return null;
}
}
}
\ No newline at end of file
......@@ -38,6 +38,7 @@ import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
import org.apache.commons.compress.parallel.InputStreamSupplier;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.redisson.api.RMap;
import org.redisson.api.RSet;
import org.redisson.api.RedissonClient;
......@@ -45,6 +46,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StopWatch;
import org.springframework.web.multipart.MultipartFile;
......@@ -438,6 +440,8 @@ public class ReidService {
subTaskExample.createCriteria().andPersonUnidEqualTo(personUnid).andPackIdEqualTo(packId);
SubTask subTask = new SubTask();
subTask.setStatus(SubTaskStatus.TODO.val);
subTask.setAnnotatorId(StpUtil.getLoginIdAsLong());
subTask.setAnnotateTime(new Date());
subTaskService.updateByExampleSelective(subTask, subTaskExample);
}
......@@ -495,6 +499,8 @@ public class ReidService {
subTaskExample.createCriteria().andPersonUnidEqualTo(personUnid).andPackIdEqualTo(packId);
SubTask subTask = new SubTask();
subTask.setStatus(SubTaskStatus.LOW_QUALITY.val);
subTask.setAnnotatorId(StpUtil.getLoginIdAsLong());
subTask.setAnnotateTime(new Date());
subTaskService.updateByExampleSelective(subTask, subTaskExample);
String reidPoolName = Constants.getReidPoolName(packId);
......@@ -518,6 +524,7 @@ public class ReidService {
if (subTasks.size() == 0) {
return;
}
List<SubTask> unAnnotatorList = subTasks.stream().filter(t -> t.getAnnotatorId() == null).collect(Collectors.toList());
Set<Integer> status = subTasks.stream().map(SubTask::getStatus).collect(Collectors.toSet());
SubTask subTask = new SubTask();
subTask.setStatus(SubTaskStatus.FINISH_LABELING.val);
......@@ -531,10 +538,14 @@ public class ReidService {
} else if (status.contains(SubTaskStatus.recycled.val)) {
return;
}
subTask.setAnnotatorId(StpUtil.getLoginIdAsLong());
subTask.setAnnotateTime(new Date());
subTaskService.updateByExampleSelective(subTask, subTaskExample);
//更新标注人为空的信息
if (!CollectionUtils.isEmpty(unAnnotatorList)) {
subTask.setAnnotatorId(StpUtil.getLoginIdAsLong());
subTask.setAnnotateTime(new Date());
subTaskExample.createCriteria().andAnnotatorIdIsNull();
subTaskService.updateByExampleSelective(subTask, subTaskExample);
}
//删除缓存
RMap<String, User> labelingSet = redissonClient.getMap("labeling:" + packId);
......@@ -546,6 +557,31 @@ public class ReidService {
}
/**
* 设置标识
* @param personUnid
* @param packId
* @param personFlag
*/
public void setPersonFlag(String personUnid, Long packId, String personFlag) {
if (personFlag == null) {
return;
}
User currentUser = userService.getCurrentUser();
if (currentUser.isInspector()) {
return;
}
SubTaskExample subTaskExample = new SubTaskExample();
subTaskExample.createCriteria().andPersonUnidEqualTo(personUnid).andPackIdEqualTo(packId);
SubTask subTask = new SubTask();
subTask.setPersonFlag(personFlag);
subTaskService.updateByExampleSelective(subTask, subTaskExample);
}
/**
* 根据所选择的图片获取相似的人
*/
public Map<String, Map<String, List<SubTask>>> getSimilarPerson(Long[] subTaskIdArr, Long packId, Long size, Integer timeInterval, String currentPerson, Integer recursion,Integer score) {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!