diff --git a/test-test/src/main/java/com/test/test/controller/TestProjectController.java b/test-test/src/main/java/com/test/test/controller/TestProjectController.java new file mode 100644 index 0000000..c9b32ba --- /dev/null +++ b/test-test/src/main/java/com/test/test/controller/TestProjectController.java @@ -0,0 +1,59 @@ +package com.test.test.controller; + +import com.test.common.annotation.Log; +import com.test.common.core.controller.BaseController; +import com.test.common.core.domain.AjaxResult; +import com.test.common.core.page.TableDataInfo; +import com.test.common.enums.BusinessType; +import com.test.test.domain.TestProject; +import com.test.test.domain.qo.IDQO; +import com.test.test.domain.qo.TestProjectListQO; +import com.test.test.service.ITestProjectService; +import jakarta.annotation.Resource; +import java.util.List; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Slf4j +@RestController +@RequestMapping("/test/project") +public class TestProjectController extends BaseController { + + @Resource + private ITestProjectService testProjectService; + + /** + * 查询需求列表 + * @param qo + * @return + */ + @GetMapping("/projectList") + public TableDataInfo projectList(@Validated TestProjectListQO qo) { + startPage(); + List list = testProjectService.selectTestProjectList(qo); + return getDataTable(list); + } + + /** + * 新增需求 + */ + @Log(title = "需求", businessType = BusinessType.INSERT) + @PostMapping("/addProject") + public AjaxResult addProject(@RequestBody TestProject testProject) { + return toAjax(testProjectService.insertTestProject(testProject)); + } + + /** + * 删除需求 + */ + @Log(title = "需求", businessType = BusinessType.DELETE) + @PostMapping("/delProject") + public AjaxResult delProject(@RequestBody IDQO qo) { + return toAjax(testProjectService.deleteTestProjectById(qo.getId())); + } +} diff --git a/test-test/src/main/java/com/test/test/domain/TestProject.java b/test-test/src/main/java/com/test/test/domain/TestProject.java new file mode 100644 index 0000000..b2cb9b2 --- /dev/null +++ b/test-test/src/main/java/com/test/test/domain/TestProject.java @@ -0,0 +1,68 @@ +package com.test.test.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.test.common.annotation.Excel; +import com.test.common.core.domain.BaseEntity; +import java.util.Date; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Getter +@Setter +@ToString +public class TestProject extends BaseEntity { + + private static final long serialVersionUID = -8420426086386159695L; + + /** 主键 */ + private Long id; + + /** 需求编码 */ + @Excel(name = "需求编码") + private String serialNumber; + + /** 需求名称 */ + @Excel(name = "需求名称") + private String name; + + /** 需求概要 */ + @Excel(name = "需求概要") + private String outline; + + /** 需求描述 */ + @Excel(name = "需求描述") + private String detail; + + /** 优先级(p0,p1,p2,p3,p4) */ + @Excel(name = "优先级(p0,p1,p2,p3,p4)") + private String priority; + + /** 预计完成时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "预计完成时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date estimatedTime; + + /** 需求来源(0,产品经理,1,客户) */ + @Excel(name = "需求来源(0,产品经理,1,客户)") + private String source; + + /** 需求类型(0,优化,1,新功能) */ + @Excel(name = "需求类型(0,优化,1,新功能)") + private String type; + + /** 状态(0,未开始,1,进行中,2,已完成,3,已终止) */ + @Excel(name = "状态(0,未开始,1,进行中,2,已完成,3,已终止)") + private String status; + + /** 负责人 */ + @Excel(name = "负责人") + private String manager; + + /** 版本 */ + @Excel(name = "版本") + private String version; + + /** 0,正常,1,删除 */ + private String delFlag; +} diff --git a/test-test/src/main/java/com/test/test/domain/qo/TestProjectListQO.java b/test-test/src/main/java/com/test/test/domain/qo/TestProjectListQO.java new file mode 100644 index 0000000..80fcf14 --- /dev/null +++ b/test-test/src/main/java/com/test/test/domain/qo/TestProjectListQO.java @@ -0,0 +1,51 @@ +package com.test.test.domain.qo; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * 查询需求列表请求参数qo + * + * @author pfl + */ +@Data +public class TestProjectListQO implements Serializable { + + private static final long serialVersionUID = 4632218018365273102L; + + /** + * 需求编码 + */ + private String serialNumber; + + /** + * 需求概要 + */ + private String outline; + + /** + * 开始创建时间 + */ + private Date startCreateTime; + + /** + * 结束创建时间 + */ + private Date endCreateTime; + + /** + * 负责人 + */ + private String manager; + + /** + * 优先级(p0,p1,p2,p3,p4) + */ + private String priority; + + /** + * 状态(0,未开始,1,进行中,2,已完成,3,已终止) + */ + private String status; +} diff --git a/test-test/src/main/java/com/test/test/mapper/TestProjectMapper.java b/test-test/src/main/java/com/test/test/mapper/TestProjectMapper.java new file mode 100644 index 0000000..94486a4 --- /dev/null +++ b/test-test/src/main/java/com/test/test/mapper/TestProjectMapper.java @@ -0,0 +1,30 @@ +package com.test.test.mapper; + +import com.test.test.domain.TestProject; +import com.test.test.domain.qo.TestProjectListQO; +import java.util.List; + +public interface TestProjectMapper { + + /** + * 查询需求列表 + * @param qo + * @return + */ + List selectTestProjectList(TestProjectListQO qo); + + /** + * 新增需求 + * @param testProject + * @return + */ + int insertTestProject(TestProject testProject); + + /** + * 删除需求 + * @param id + * @return + */ + int deleteTestProjectById(Long id); +} + diff --git a/test-test/src/main/java/com/test/test/service/ITestProjectService.java b/test-test/src/main/java/com/test/test/service/ITestProjectService.java new file mode 100644 index 0000000..702e7f9 --- /dev/null +++ b/test-test/src/main/java/com/test/test/service/ITestProjectService.java @@ -0,0 +1,34 @@ +package com.test.test.service; + +import com.test.test.domain.TestProject; +import com.test.test.domain.qo.TestProjectListQO; +import java.util.List; + +/** + * 需求Service接口 + * + * @author pfl + */ +public interface ITestProjectService { + + /** + * 查询需求列表 + * @param qo + * @return + */ + List selectTestProjectList(TestProjectListQO qo); + + /** + * 新增需求 + * @param testProject + * @return + */ + public int insertTestProject(TestProject testProject); + + /** + * 删除需求 + * @param id + * @return + */ + public int deleteTestProjectById(Long id); +} diff --git a/test-test/src/main/java/com/test/test/service/impl/TestProjectServiceImpl.java b/test-test/src/main/java/com/test/test/service/impl/TestProjectServiceImpl.java new file mode 100644 index 0000000..f6bdcab --- /dev/null +++ b/test-test/src/main/java/com/test/test/service/impl/TestProjectServiceImpl.java @@ -0,0 +1,56 @@ +package com.test.test.service.impl; + +import com.test.common.utils.DateUtils; +import com.test.test.domain.TestProject; +import com.test.test.domain.qo.TestProjectListQO; +import com.test.test.mapper.TestProjectMapper; +import com.test.test.service.ITestProjectService; +import jakarta.annotation.Resource; +import java.util.List; +import org.springframework.stereotype.Service; + +@Service +public class TestProjectServiceImpl implements ITestProjectService { + // 0正常,1删除 + private static final String DEL_FLAG = "0"; + + // 状态: 0未开始,1进行中,2已完成,3已终止 + private static final String STATUS = "0"; + + @Resource + private TestProjectMapper testProjectMapper; + + /** + * 查询需求列表 + * @param qo + * @return TestProject + */ + @Override + public List selectTestProjectList(TestProjectListQO qo) { + return testProjectMapper.selectTestProjectList(qo); + } + + /** + * 新增需求 + * @param testProject + * @return + */ + @Override + public int insertTestProject(TestProject testProject) { + testProject.setStatus(STATUS); + testProject.setCreateTime(DateUtils.getNowDate()); + testProject.setDelFlag(DEL_FLAG); + return testProjectMapper.insertTestProject(testProject); + } + + /** + * 删除需求 + * @param id + * @return + */ + @Override + public int deleteTestProjectById(Long id) { + return testProjectMapper.deleteTestProjectById(id); + } + +} diff --git a/test-test/src/main/resources/mapper/test/TestProjectMapper.xml b/test-test/src/main/resources/mapper/test/TestProjectMapper.xml new file mode 100644 index 0000000..be70d3c --- /dev/null +++ b/test-test/src/main/resources/mapper/test/TestProjectMapper.xml @@ -0,0 +1,94 @@ + + + + + + INSERT INTO test_project ( + + id, + serial_number, + name, + outline, + detail, + priority, + estimated_time, + source, + type, + status, + manager, + create_time, + update_time, + version, + del_flag, + + ) VALUES ( + + #{id}, + #{serialNumber}, + #{name}, + #{outline}, + #{detail}, + #{priority}, + #{estimatedTime}, + #{source}, + #{type}, + #{status}, + #{manager}, + #{createTime}, + #{updateTime}, + #{version}, + #{delFlag}, + + ) + + + + DELETE + FROM test_project + WHERE id = #{id} + + + + \ No newline at end of file diff --git a/test-ui/src/api/test/project.js b/test-ui/src/api/test/project.js new file mode 100644 index 0000000..5c44f33 --- /dev/null +++ b/test-ui/src/api/test/project.js @@ -0,0 +1,41 @@ +import request from '@/utils/request' + +const api = { + managerList: 'system/user/list', + projectList: 'test/project/projectList', + addProject: 'test/project/addProject', + delProject: 'test/project/delProject' +} + +export function managerList(data) { + return request({ + url: api.managerList, + method: 'get', + data + }) +} + +export function getProjectList(data) { + return request({ + url: api.projectList, + method: 'get', + params: data + }) +} + +export function addProject(data) { + return request({ + url: api.addProject, + method: 'post', + data + }) +} + +export function delProject(id) { + return request({ + url: api.delProject, + method: 'post', + data: {id} + }) +} + diff --git a/test-ui/src/components/FormItem/option/SimpleOptions.vue b/test-ui/src/components/FormItem/option/SimpleOptions.vue new file mode 100644 index 0000000..ea9c351 --- /dev/null +++ b/test-ui/src/components/FormItem/option/SimpleOptions.vue @@ -0,0 +1,33 @@ + + + diff --git a/test-ui/src/views/test/project/index.vue b/test-ui/src/views/test/project/index.vue new file mode 100644 index 0000000..015b55b --- /dev/null +++ b/test-ui/src/views/test/project/index.vue @@ -0,0 +1,419 @@ + + + + +