文档服务地址:http://47.92.0.57:3000/ 周报索引地址:http://47.92.0.57:3000/s/NruNXRYmV

Commit 4dfd7181 by 李景熙

修改已完成任务列表显示逻辑

parent a437ef77
......@@ -56,6 +56,16 @@ def set_grade(user_id, slice_id, score):
return Result(1, "grade success", {})
# 查找Relation中与用户id 任务id相关的分片列表
def find_slice_by_task(taskid, user_id):
try:
slice_list = Relation.select(Relation.slice_id).where(Relation.user_id == user_id, Relation.flag == 1)
except:
return False
else:
return slice_list
# 查找Relation中与用户id相关的分片列表,用于我的任务的列表显示
def find_slice_by_executor(user_id):
try:
......@@ -126,6 +136,15 @@ def get_completed_num(sliceId):
return num
def get_total_num2(userId, sliceId):
try:
num = Relation.select().where(Relation.user_id == userId, Relation.slice_id == sliceId).count()
except:
return 0
else:
return num
# 获取某用户,某分片的标注进度
def get_flag_count(userId, sliceId):
try:
......@@ -170,7 +189,7 @@ def get_state(user_id, data_id):
# 获取某文件的标注者信息
def get_executors(data_id):
try:
find = Relation.select(Relation.user_id, Relation.relation_id).where(Relation.data_id == data_id, Relation.flag == 1, Relation.flag2 == 0)
find = Relation.select(Relation.user_id, Relation.relation_id).where(Relation.data_id == data_id)
index = 0
list = []
while index < len(find):
......
......@@ -5,6 +5,10 @@ from dao.model import mysql
class Result:
code: int
message: []
data: {}
def __init__(self, code, message, data):
self.code = code
self.message = message
......@@ -99,6 +103,7 @@ def find_slice_by_check(task_id):
'totalNum': total_num
}
)
# print(find[index].slice_id,find[index].document_number,completed_num,total_num)
index += 1
except:
return Result(0, "find failed", {})
......@@ -176,6 +181,45 @@ def find_slice_by_task_user(task_id, user_id):
return Result(1, "find success", list)
def find_slice_by_judge(task_id, user_id):
try:
slice_list = Relation.find_slice_by_executor(user_id)
find = Slice.select(Slice.slice_id, Slice.document_number, Slice.type, Slice.model_id,
Slice.illustration).where(
Slice.task_id == task_id, Slice.slice_id << slice_list
)
index = 0
list = []
while index < len(find):
total_num = Relation.get_flag_count(user_id, find[index].slice_id)
completed_num = Relation.get_total_num2(user_id, find[index].slice_id)
if find[index].type == '0':
t = "文本"
template = find[index].model_id
elif find[index].type == '1':
t = "图片"
template = find[index].illustration
else:
t = "图层"
template = find[index].illustration
list.append(
{
'id': find[index].slice_id,
'fileNum': find[index].document_number,
'type': t,
'template': template,
'completedNum': completed_num,
'totalNum': total_num
}
)
# print(find[index].slice_id,find[index].document_number,completed_num,total_num)
index += 1
except:
return Result(0, "find failed", {})
else:
return Result(1, "find success", list)
# 添加文件
def add_file(slice_id):
try:
......
from peewee import *
import datetime
import math
import json
from dao import User, Relation, Slice
from dao.model import mysql
class Result:
code: int
message: []
data: {}
pages: int
def __init__(self, code, message, data, pages):
self.code = code
self.message = message
......@@ -37,28 +43,41 @@ def create_task(publish_id, task_name):
return Result(1, "create success", task.task_id, 0)
# 判断该用户是否完成该任务
def judge_completed(taskid, user_id):
ret = Slice.find_slice_by_judge(taskid, user_id)
list = ret.data
for item in list:
completedNum = item['completed_num']
totalNum = item['total_num']
if completedNum != totalNum:
return 0
return 1
# 根据任务名称查找任务(任务大厅搜索功能)
def find_task_by_name(task_name, start, num):
try:
find = Task.select(Task.task_id, Task.task_name, Task.publish_id, Task.publish_time).where(Task.task_name.contains(task_name))
find = Task.select(Task.task_id, Task.task_name, Task.publish_id, Task.publish_time).where(
Task.task_name.contains(task_name))
index = 0
list = []
while index+start < len(find) and index < num:
user = User.get_username(find[index+start].publish_id)
while index < len(find) and index < num:
user = User.get_username(find[index + start].publish_id)
list.append(
{
'id': find[index+start].task_id,
'id': find[index + start].task_id,
'creator': user,
'creator_id': find[index + start].publish_id,
'name': find[index+start].task_name,
'date': find[index+start].publish_time.strftime("%Y-%m-%d %H:%M:%S")
'name': find[index + start].task_name,
'date': find[index + start].publish_time.strftime("%Y-%m-%d %H:%M:%S")
}
)
index += 1
except:
return Result(0, "find failed", {}, 0)
else:
return Result(1, "find success", list, math.ceil(len(find)/num))
return Result(1, "find success", list, math.ceil(len(find) / num))
# 查找所有任务(用于任务大厅界面)
......@@ -67,22 +86,22 @@ def find_task(start, num):
find = Task.select(Task.task_id, Task.task_name, Task.publish_id, Task.publish_time)
index = 0
list = []
while index+start < len(find) and index < num:
while index < len(find) and index < num:
user = User.get_username(find[index + start].publish_id)
list.append(
{
'id': find[index+start].task_id,
'id': find[index + start].task_id,
'creator': user,
'creator_id': find[index + start].publish_id,
'name': find[index+start].task_name,
'date': find[index+start].publish_time.strftime("%Y-%m-%d %H:%M:%S")
'name': find[index + start].task_name,
'date': find[index + start].publish_time.strftime("%Y-%m-%d %H:%M:%S")
}
)
index += 1
except:
return Result(0, "find failed", {}, 0)
else:
return Result(1, "find success", list, math.ceil(len(find)/num))
return Result(1, "find success", list, math.ceil(len(find) / num))
# 查找与该发布者相关的任务(用于我的发布界面)
......@@ -92,7 +111,7 @@ def find_task_by_creator(creator, start, num):
Task.publish_id == creator, Task.task_state == 0 and 1)
index = 0
list = []
while index+start < len(find) and index < num:
while index < len(find) and index < num:
user = User.get_username(find[index + start].publish_id)
if find[index + start].task_state == '0':
state = "已发布"
......@@ -100,11 +119,11 @@ def find_task_by_creator(creator, start, num):
state = "被选中"
list.append(
{
'id': find[index+start].task_id,
'id': find[index + start].task_id,
'creator': user,
'creator_id': find[index + start].publish_id,
'name': find[index+start].task_name,
'date': find[index+start].publish_time.strftime("%Y-%m-%d %H:%M:%S"),
'name': find[index + start].task_name,
'date': find[index + start].publish_time.strftime("%Y-%m-%d %H:%M:%S"),
'state': state
}
)
......@@ -112,7 +131,7 @@ def find_task_by_creator(creator, start, num):
except:
return Result(0, "find failed", {}, 0)
else:
return Result(1, "find success", list, math.ceil(len(find)/num))
return Result(1, "find success", list, math.ceil(len(find) / num))
# 寻找发布者发布的需要审核的任务
......@@ -122,22 +141,22 @@ def find_task_check(creator, start, num):
Task.publish_id == creator, Task.task_state == 2)
index = 0
list = []
while index+start < len(find) and index < num:
while index < len(find) and index < num:
user = User.get_username(find[index + start].publish_id)
list.append(
{
'id': find[index+start].task_id,
'id': find[index + start].task_id,
'creator': user,
'creator_id': find[index + start].publish_id,
'name': find[index+start].task_name,
'date': find[index+start].publish_time.strftime("%Y-%m-%d %H:%M:%S")
'name': find[index + start].task_name,
'date': find[index + start].publish_time.strftime("%Y-%m-%d %H:%M:%S")
}
)
index += 1
except:
return Result(0, "find failed", {}, 0)
else:
return Result(1, "find success", list, math.ceil(len(find)/num))
return Result(1, "find success", list, math.ceil(len(find) / num))
# 寻找已完成任务(根据所给用户id去Relation表中查询已完成的任务)
......@@ -149,29 +168,22 @@ def find_task_completed(executor, start, num):
Task.task_id << task_list)
index = 0
list = []
while index+start < len(find) and index < num:
while index < len(find) and index < num:
user = User.get_username(find[index + start].publish_id)
if judge_completed(find[index + start].task_id, executor) == 1:
list.append(
{
'id': find[index+start].task_id,
'creator': user,
'creator_id': find[index + start].publish_id,
'name': find[index+start].task_name,
'date': find[index+start].publish_time.strftime("%Y-%m-%d %H:%M:%S")
}
)
list.append(
{
'id': find[index + start].task_id,
'creator': user,
'creator_id': find[index + start].publish_id,
'name': find[index + start].task_name,
'date': find[index + start].publish_time.strftime("%Y-%m-%d %H:%M:%S")
}
)
index += 1
except:
return Result(0, "find failed", {}, 0)
else:
return Result(1, "find success", list, math.ceil(len(find)/num))
#判断任务是否已完成(查找任务下的所有分片,对每个分片都判断已完成文件的数量,然后与分片下文件总数对比,如果相等,则视为分片完成,
# 如果所有分片都完成则任务视为完成,返回1,否则返回0)
def judge_completed(taskid, user_id):
return Result(1, "find success", list, math.ceil(len(find) / num))
# 寻找标注者选择的任务(从Relation表中找到用户id标注的分片,再利用分片表获取任务列表)
......@@ -183,22 +195,22 @@ def find_task_my_task(executor, start, num):
Task.task_id << task_list)
index = 0
list = []
while index+start < len(find) and index < num:
while index < len(find) and index < num:
user = User.get_username(find[index + start].publish_id)
list.append(
{
'id': find[index+start].task_id,
'id': find[index + start].task_id,
'creator': user,
'creator_id': find[index + start].publish_id,
'name': find[index+start].task_name,
'date': find[index+start].publish_time.strftime("%Y-%m-%d %H:%M:%S")
'name': find[index + start].task_name,
'date': find[index + start].publish_time.strftime("%Y-%m-%d %H:%M:%S")
}
)
index += 1
except:
return Result(0, "find failed", {}, 0)
else:
return Result(1, "find success", list, math.ceil(len(find)/num))
return Result(1, "find success", list, math.ceil(len(find) / num))
# 删除任务
......@@ -250,9 +262,8 @@ def set_state(task_id, state):
except:
return False
else:
if int(t.task_state) < int(state):
t.task_state = state
t.save()
t.task_state = state
t.save()
return True
......@@ -260,5 +271,3 @@ if __name__ == '__main__':
# print(find_task_my_task(1,1,1))
Task.drop_table()
Task.create_table()
# find = Task.select(Task.task_id, Task.task_name, Task.publish_id, Task.publish_time)
# print(find[0+20])
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment