diff --git a/backend/src/main/java/com/designhub/mapper/TaskItemMapper.java b/backend/src/main/java/com/designhub/mapper/TaskItemMapper.java index 8aabdd8..d94ed5c 100644 --- a/backend/src/main/java/com/designhub/mapper/TaskItemMapper.java +++ b/backend/src/main/java/com/designhub/mapper/TaskItemMapper.java @@ -59,7 +59,17 @@ public interface TaskItemMapper extends BaseMapper { " OR t.task_no LIKE CONCAT('%', #{keyword}, '%') " + " OR ti.item_no LIKE CONCAT('%', #{keyword}, '%') " + " OR t.spu_info LIKE CONCAT('%', #{keyword}, '%') " + - " OR u.real_name LIKE CONCAT('%', #{keyword}, '%'))" + + " OR COALESCE(t.remark, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(t.description, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(t.product_barcodes, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR u.real_name LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(pp.real_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(ppd.dept_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(dc.real_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(b.brand_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(c.category_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(p.platform_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(dt.type_name, '') LIKE CONCAT('%', #{keyword}, '%'))" + " " + "ORDER BY ti.create_time DESC" + "") @@ -108,7 +118,17 @@ public interface TaskItemMapper extends BaseMapper { " OR t.task_no LIKE CONCAT('%', #{keyword}, '%') " + " OR ti.item_no LIKE CONCAT('%', #{keyword}, '%') " + " OR t.spu_info LIKE CONCAT('%', #{keyword}, '%') " + - " OR u.real_name LIKE CONCAT('%', #{keyword}, '%'))" + + " OR COALESCE(t.remark, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(t.description, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(t.product_barcodes, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR u.real_name LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(pp.real_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(ppd.dept_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(dc.real_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(b.brand_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(c.category_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(p.platform_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(dt.type_name, '') LIKE CONCAT('%', #{keyword}, '%'))" + " " + " " + " AND ti.task_type_id IN " + @@ -164,9 +184,21 @@ public interface TaskItemMapper extends BaseMapper { " AND ti.receiver_dept_id = #{deptId} " + " " + " AND (t.title LIKE CONCAT('%', #{keyword}, '%') " + + " OR t.task_no LIKE CONCAT('%', #{keyword}, '%') " + + " OR ti.item_no LIKE CONCAT('%', #{keyword}, '%') " + " OR t.spu_info LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(t.remark, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(t.description, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(t.product_barcodes, '') LIKE CONCAT('%', #{keyword}, '%') " + " OR u.real_name LIKE CONCAT('%', #{keyword}, '%') " + - " OR ti.item_no LIKE CONCAT('%', #{keyword}, '%'))" + + " OR COALESCE(pp.real_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(ppd.dept_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(dc.real_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(r.real_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(b.brand_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(c.category_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(p.platform_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(dt.type_name, '') LIKE CONCAT('%', #{keyword}, '%'))" + " " + "ORDER BY ti.update_time DESC" + "") @@ -217,9 +249,21 @@ public interface TaskItemMapper extends BaseMapper { " AND ti.receiver_dept_id = #{deptId} " + " " + " AND (t.title LIKE CONCAT('%', #{keyword}, '%') " + + " OR t.task_no LIKE CONCAT('%', #{keyword}, '%') " + + " OR ti.item_no LIKE CONCAT('%', #{keyword}, '%') " + " OR t.spu_info LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(t.remark, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(t.description, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(t.product_barcodes, '') LIKE CONCAT('%', #{keyword}, '%') " + " OR u.real_name LIKE CONCAT('%', #{keyword}, '%') " + - " OR ti.item_no LIKE CONCAT('%', #{keyword}, '%'))" + + " OR COALESCE(pp.real_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(ppd.dept_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(dc.real_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(r.real_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(b.brand_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(c.category_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(p.platform_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(dt.type_name, '') LIKE CONCAT('%', #{keyword}, '%'))" + " " + "ORDER BY ti.complete_time DESC" + "") @@ -269,9 +313,21 @@ public interface TaskItemMapper extends BaseMapper { " " + " " + " AND (t.title LIKE CONCAT('%', #{keyword}, '%') " + + " OR t.task_no LIKE CONCAT('%', #{keyword}, '%') " + + " OR ti.item_no LIKE CONCAT('%', #{keyword}, '%') " + " OR t.spu_info LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(t.remark, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(t.description, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(t.product_barcodes, '') LIKE CONCAT('%', #{keyword}, '%') " + " OR u.real_name LIKE CONCAT('%', #{keyword}, '%') " + - " OR ti.item_no LIKE CONCAT('%', #{keyword}, '%'))" + + " OR COALESCE(pp.real_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(ppd.dept_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(dc.real_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(r.real_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(b.brand_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(c.category_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(p.platform_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(dt.type_name, '') LIKE CONCAT('%', #{keyword}, '%'))" + " " + "ORDER BY ti.update_time DESC" + "") @@ -320,9 +376,21 @@ public interface TaskItemMapper extends BaseMapper { " " + " " + " AND (t.title LIKE CONCAT('%', #{keyword}, '%') " + + " OR t.task_no LIKE CONCAT('%', #{keyword}, '%') " + + " OR ti.item_no LIKE CONCAT('%', #{keyword}, '%') " + " OR t.spu_info LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(t.remark, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(t.description, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(t.product_barcodes, '') LIKE CONCAT('%', #{keyword}, '%') " + " OR u.real_name LIKE CONCAT('%', #{keyword}, '%') " + - " OR ti.item_no LIKE CONCAT('%', #{keyword}, '%'))" + + " OR COALESCE(pp.real_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(ppd.dept_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(dc.real_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(r.real_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(b.brand_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(c.category_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(p.platform_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(dt.type_name, '') LIKE CONCAT('%', #{keyword}, '%'))" + " " + "ORDER BY ti.complete_time DESC" + "") diff --git a/backend/src/main/java/com/designhub/mapper/TaskMapper.java b/backend/src/main/java/com/designhub/mapper/TaskMapper.java index 223103d..dc7b92b 100644 --- a/backend/src/main/java/com/designhub/mapper/TaskMapper.java +++ b/backend/src/main/java/com/designhub/mapper/TaskMapper.java @@ -30,7 +30,10 @@ public interface TaskMapper extends BaseMapper { " p.platform_name AS platform_name, " + " approver.real_name AS current_approver_name, " + " primary_user.real_name AS primary_publisher_name, " + - " primary_dept.dept_name AS primary_publisher_dept_name " + + " primary_dept.dept_name AS primary_publisher_dept_name, " + + " detail_completer.real_name AS detail_completer_name, " + + " receiver.real_name AS receiver_name, " + + " dt.type_name AS task_type_name " + "FROM task t " + "LEFT JOIN sys_user u ON t.publisher_id = u.id " + "LEFT JOIN sys_dept d ON t.publisher_dept_id = d.id " + @@ -40,6 +43,9 @@ public interface TaskMapper extends BaseMapper { "LEFT JOIN sys_user approver ON t.current_approver_id = approver.id " + "LEFT JOIN sys_user primary_user ON t.primary_publisher_id = primary_user.id " + "LEFT JOIN sys_dept primary_dept ON t.primary_publisher_dept_id = primary_dept.id " + + "LEFT JOIN sys_user detail_completer ON t.detail_completer_id = detail_completer.id " + + "LEFT JOIN sys_user receiver ON t.receiver_id = receiver.id " + + "LEFT JOIN task_type dt ON t.task_type_id = dt.id " + "WHERE t.status = 'pending' AND t.approval_status = 'approved' AND t.deleted = 0 AND (t.is_pipeline = 0 OR t.is_pipeline IS NULL)" + " AND t.task_type_id = #{taskTypeId}" + " AND t.demand_type_id = #{demandTypeId}" + @@ -54,7 +60,18 @@ public interface TaskMapper extends BaseMapper { " OR t.task_no LIKE CONCAT('%', #{keyword}, '%') " + " OR t.spu_info LIKE CONCAT('%', #{keyword}, '%') " + " OR t.remark LIKE CONCAT('%', #{keyword}, '%') " + - " OR u.real_name LIKE CONCAT('%', #{keyword}, '%'))" + + " OR COALESCE(t.description, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(t.product_barcodes, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR u.real_name LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(d.dept_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(b.brand_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(c.category_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(p.platform_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(dt.type_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(primary_user.real_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(primary_dept.dept_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(detail_completer.real_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(receiver.real_name, '') LIKE CONCAT('%', #{keyword}, '%'))" + "" + " AND u.real_name LIKE CONCAT('%', #{publisherName}, '%')" + " AND DATE(t.create_time) = CURDATE()" + @@ -93,7 +110,10 @@ public interface TaskMapper extends BaseMapper { " p.platform_name AS platform_name, " + " approver.real_name AS current_approver_name, " + " primary_user.real_name AS primary_publisher_name, " + - " primary_dept.dept_name AS primary_publisher_dept_name " + + " primary_dept.dept_name AS primary_publisher_dept_name, " + + " detail_completer.real_name AS detail_completer_name, " + + " receiver.real_name AS receiver_name, " + + " dt.type_name AS task_type_name " + "FROM task t " + "LEFT JOIN sys_user u ON t.publisher_id = u.id " + "LEFT JOIN sys_dept d ON t.publisher_dept_id = d.id " + @@ -103,6 +123,9 @@ public interface TaskMapper extends BaseMapper { "LEFT JOIN sys_user approver ON t.current_approver_id = approver.id " + "LEFT JOIN sys_user primary_user ON t.primary_publisher_id = primary_user.id " + "LEFT JOIN sys_dept primary_dept ON t.primary_publisher_dept_id = primary_dept.id " + + "LEFT JOIN sys_user detail_completer ON t.detail_completer_id = detail_completer.id " + + "LEFT JOIN sys_user receiver ON t.receiver_id = receiver.id " + + "LEFT JOIN task_type dt ON t.task_type_id = dt.id " + "WHERE t.status = 'pending' AND t.approval_status = 'approved' AND t.deleted = 0 AND (t.is_pipeline = 0 OR t.is_pipeline IS NULL)" + "" + " AND t.task_type_id IN " + @@ -123,7 +146,18 @@ public interface TaskMapper extends BaseMapper { " OR t.task_no LIKE CONCAT('%', #{keyword}, '%') " + " OR t.spu_info LIKE CONCAT('%', #{keyword}, '%') " + " OR t.remark LIKE CONCAT('%', #{keyword}, '%') " + - " OR u.real_name LIKE CONCAT('%', #{keyword}, '%'))" + + " OR COALESCE(t.description, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(t.product_barcodes, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR u.real_name LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(d.dept_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(b.brand_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(c.category_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(p.platform_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(dt.type_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(primary_user.real_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(primary_dept.dept_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(detail_completer.real_name, '') LIKE CONCAT('%', #{keyword}, '%') " + + " OR COALESCE(receiver.real_name, '') LIKE CONCAT('%', #{keyword}, '%'))" + "" + " AND u.real_name LIKE CONCAT('%', #{publisherName}, '%')" + " AND DATE(t.create_time) = CURDATE()" + diff --git a/backend/src/main/java/com/designhub/service/TaskService.java b/backend/src/main/java/com/designhub/service/TaskService.java index e45621e..346d2b6 100644 --- a/backend/src/main/java/com/designhub/service/TaskService.java +++ b/backend/src/main/java/com/designhub/service/TaskService.java @@ -1082,12 +1082,40 @@ public class TaskService { log.info("接单部门用户查看自己接单的已完成任务: userId={}", userId); } - // 4. 关键词搜索 + // 4. 关键词搜索(支持搜索任务卡片的所有信息) if (org.springframework.util.StringUtils.hasText(keyword)) { wrapper.and(w -> w .like(Task::getTitle, keyword) .or() .like(Task::getTaskNo, keyword) + .or() + .like(Task::getSpuInfo, keyword) + .or() + .like(Task::getRemark, keyword) + .or() + .apply("EXISTS (SELECT 1 FROM sys_user u WHERE u.id = t.publisher_id AND u.real_name LIKE CONCAT('%', {0}, '%'))", keyword) + .or() + .apply("EXISTS (SELECT 1 FROM sys_dept d WHERE d.id = t.publisher_dept_id AND d.dept_name LIKE CONCAT('%', {0}, '%'))", keyword) + .or() + .apply("EXISTS (SELECT 1 FROM brand b WHERE b.id = t.brand_id AND b.brand_name LIKE CONCAT('%', {0}, '%'))", keyword) + .or() + .apply("EXISTS (SELECT 1 FROM category c WHERE c.id = t.category_id AND c.category_name LIKE CONCAT('%', {0}, '%'))", keyword) + .or() + .apply("EXISTS (SELECT 1 FROM platform p WHERE p.id = t.platform_id AND p.platform_name LIKE CONCAT('%', {0}, '%'))", keyword) + .or() + .apply("EXISTS (SELECT 1 FROM task_type dt WHERE dt.id = t.task_type_id AND dt.type_name LIKE CONCAT('%', {0}, '%'))", keyword) + .or() + .apply("EXISTS (SELECT 1 FROM sys_user pp WHERE pp.id = t.primary_publisher_id AND pp.real_name LIKE CONCAT('%', {0}, '%'))", keyword) + .or() + .apply("EXISTS (SELECT 1 FROM sys_dept pd WHERE pd.id = t.primary_publisher_dept_id AND pd.dept_name LIKE CONCAT('%', {0}, '%'))", keyword) + .or() + .apply("EXISTS (SELECT 1 FROM sys_user dc WHERE dc.id = t.detail_completer_id AND dc.real_name LIKE CONCAT('%', {0}, '%'))", keyword) + .or() + .apply("EXISTS (SELECT 1 FROM sys_user r WHERE r.id = t.receiver_id AND r.real_name LIKE CONCAT('%', {0}, '%'))", keyword) + .or() + .apply("COALESCE(t.description, '') LIKE CONCAT('%', {0}, '%')", keyword) + .or() + .apply("COALESCE(t.product_barcodes, '') LIKE CONCAT('%', {0}, '%')", keyword) ); }