Procházet zdrojové kódy

删除看板时删除关联的看板实例

sunyj před 8 roky
rodič
revize
6c8ece9426

+ 8 - 8
kanban-common/src/main/java/com/uas/kanban/base/BaseService.java

@@ -113,19 +113,19 @@ public abstract class BaseService<T extends BaseEntity> {
 	/**
 	 * 分页获取所有数据
 	 * 
-	 * @param p
+	 * @param page
 	 *            页码
-	 * @param s
+	 * @param size
 	 *            页面大小
 	 * @return 获取的数据
 	 */
-	public PageResult<T> get(Integer p, Integer s) {
-		if (p == null) {
-			p = PageResult.PAGE_INDEX;
+	public PageResult<T> get(Integer page, Integer size) {
+		if (page == null) {
+			page = PageResult.PAGE_INDEX;
 		}
-		if (s == null) {
-			s = PageResult.PAGE_SIZE;
+		if (size == null) {
+			size = PageResult.PAGE_SIZE;
 		}
-		return baseDao.findPage(p, s);
+		return baseDao.findPage(page, size);
 	}
 }

+ 10 - 0
kanban-console/src/main/java/com/uas/kanban/service/KanbanInstanceService.java

@@ -1,5 +1,6 @@
 package com.uas.kanban.service;
 
+import java.util.List;
 import java.util.Map;
 
 import com.uas.kanban.annotation.NotEmpty;
@@ -24,6 +25,15 @@ public interface KanbanInstanceService {
 	 */
 	Map<String, Object> parseData(@NotEmpty("code") String code, String templateCode);
 
+	/**
+	 * 根据看板 code 删除看板实例
+	 * 
+	 * @param kanbanCodes
+	 *            看板 code
+	 * @return 删除的数据条数
+	 */
+	int deleteByKanbanCodes(@NotEmpty("kanbanCodes") List<String> kanbanCodes);
+
 	/**
 	 * 根据看板 code 获取看板实例
 	 * 

+ 6 - 0
kanban-console/src/main/java/com/uas/kanban/service/impl/KanbanInstanceServiceImpl.java

@@ -377,6 +377,12 @@ public class KanbanInstanceServiceImpl extends BaseService<KanbanInstance> imple
 		return result;
 	}
 
+	@Override
+	public int deleteByKanbanCodes(@NotEmpty("kanbanCodes") List<String> kanbanCodes) {
+		Query<KanbanInstance> query = kanbanInstanceDao.createQuery().field("kanbanCode").in(kanbanCodes);
+		return kanbanInstanceDao.delete(query);
+	}
+
 	@Override
 	public KanbanInstance getByKanbanCode(@NotEmpty("kanbanCode") String kanbanCode) throws IllegalStateException {
 		Query<KanbanInstance> query = kanbanInstanceDao.createQuery().field("kanbanCode").equal(kanbanCode);

+ 33 - 1
kanban-console/src/main/java/com/uas/kanban/service/impl/KanbanServiceImpl.java

@@ -1,5 +1,7 @@
 package com.uas.kanban.service.impl;
 
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -7,13 +9,15 @@ import org.springframework.stereotype.Service;
 
 import com.uas.kanban.annotation.NotEmpty;
 import com.uas.kanban.base.BaseService;
+import com.uas.kanban.base.PageResult;
 import com.uas.kanban.dao.KanbanDao;
 import com.uas.kanban.dao.TemplateDao;
 import com.uas.kanban.exception.OperationException;
 import com.uas.kanban.model.Kanban;
 import com.uas.kanban.model.Kanban.Display;
-import com.uas.kanban.support.SystemSession;
 import com.uas.kanban.model.Template;
+import com.uas.kanban.service.KanbanInstanceService;
+import com.uas.kanban.support.SystemSession;
 import com.uas.kanban.util.CollectionUtils;
 
 /**
@@ -31,6 +35,9 @@ public class KanbanServiceImpl extends BaseService<Kanban> {
 	@Autowired
 	private TemplateDao templateDao;
 
+	@Autowired
+	private KanbanInstanceService kanbanInstanceService;
+
 	@Override
 	public Kanban save(@NotEmpty("json") String json) {
 		Kanban kanban = kanbanDao.parse(json);
@@ -58,6 +65,31 @@ public class KanbanServiceImpl extends BaseService<Kanban> {
 		return update(json);
 	}
 
+	@Override
+	public int deleteOne(@NotEmpty("code") String code) {
+		// 先删除有关联的看板实例
+		kanbanInstanceService.deleteByKanbanCodes(Arrays.asList(code));
+		return super.deleteOne(code);
+	}
+
+	@Override
+	public int deleteAll() {
+		// 先删除有关联的看板实例
+		int page = PageResult.PAGE_INDEX;
+		int size = 1000;
+		PageResult<Kanban> pageResult = super.get(page, size);
+		while (page <= pageResult.getTotalPage()) {
+			List<Kanban> content = pageResult.getContent();
+			List<String> kanbanCodes = new ArrayList<>();
+			for (Kanban kanban : content) {
+				kanbanCodes.add(kanban.getCode());
+			}
+			kanbanInstanceService.deleteByKanbanCodes(kanbanCodes);
+			page++;
+		}
+		return super.deleteAll();
+	}
+
 	/**
 	 * 检查模版是否存在
 	 *