diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/WorkController.java b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/WorkController.java
index b777129..ea7733c 100644
--- a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/WorkController.java
+++ b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/WorkController.java
@@ -1,7 +1,21 @@
package com.cfive.pinnacle.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.cfive.pinnacle.entity.User;
+import com.cfive.pinnacle.entity.UserWork;
+import com.cfive.pinnacle.entity.Work;
+import com.cfive.pinnacle.entity.common.ResponseCode;
+import com.cfive.pinnacle.entity.common.ResponseResult;
+import com.cfive.pinnacle.service.IWorkService;
+import com.cfive.pinnacle.service.impl.UserWorkServiceImpl;
+import com.cfive.pinnacle.service.impl.WorkServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.util.List;
/**
*
@@ -11,8 +25,45 @@ import org.springframework.web.bind.annotation.RestController;
* @author FatttSnake
* @since 2023-04-30
*/
+
@RestController
+@CrossOrigin
@RequestMapping("/work")
public class WorkController {
+ @Autowired
+ private WorkServiceImpl workService;
+ @Autowired
+ private UserWorkServiceImpl userWorkService;
+ @GetMapping
+ public ResponseResult getAll() {
+ return ResponseResult.build(ResponseCode.DATABASE_SELECT_OK, "success", workService.getAll());
+ }
+
+ @GetMapping("/todo/{userId}")
+ public ResponseResult getTodo(@PathVariable Long userId) {
+ return ResponseResult.build(ResponseCode.DATABASE_SELECT_OK, "success", workService.getTodo(userId));
+ }
+
+ @GetMapping("/complete/{userId}")
+ public ResponseResult getComplete(@PathVariable Long userId) {
+ return ResponseResult.build(ResponseCode.DATABASE_SELECT_OK, "success", workService.getComplete(userId));
+ }
+
+ @PostMapping
+ public ResponseResult addWork(@RequestBody Work work) {
+ System.out.println(work);
+ return ResponseResult.build(ResponseCode.DATABASE_SAVE_OK, "success", workService.addWork(work));
+ }
+
+ @DeleteMapping("/{id}")
+ public ResponseResult deleteById(@PathVariable long id) {
+ System.out.println(id);
+ return ResponseResult.build(ResponseCode.DATABASE_DELETE_OK, "success", workService.deleteByWorkId(id));
+ }
+
+ @PutMapping("/setComplete")
+ public ResponseResult updateWork(@RequestBody UserWork userWork) {
+ return ResponseResult.build(ResponseCode.DATABASE_DELETE_OK, "success", userWorkService.updateById(userWork));
+ }
}
diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/entity/UserWork.java b/Pinnacle/src/main/java/com/cfive/pinnacle/entity/UserWork.java
index 78a8457..450df0b 100644
--- a/Pinnacle/src/main/java/com/cfive/pinnacle/entity/UserWork.java
+++ b/Pinnacle/src/main/java/com/cfive/pinnacle/entity/UserWork.java
@@ -9,6 +9,8 @@ import com.baomidou.mybatisplus.annotation.Version;
import java.io.Serial;
import java.io.Serializable;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -35,12 +37,14 @@ public class UserWork implements Serializable {
* 用户
*/
@TableField("user_id")
+ @JsonSerialize(using = ToStringSerializer.class)
private Long userId;
/**
* 工作事项
*/
@TableField("work_id")
+ @JsonSerialize(using = ToStringSerializer.class)
private Long workId;
/**
diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/entity/Work.java b/Pinnacle/src/main/java/com/cfive/pinnacle/entity/Work.java
index f18ae7c..487c313 100644
--- a/Pinnacle/src/main/java/com/cfive/pinnacle/entity/Work.java
+++ b/Pinnacle/src/main/java/com/cfive/pinnacle/entity/Work.java
@@ -9,7 +9,11 @@ import com.baomidou.mybatisplus.annotation.Version;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -30,6 +34,7 @@ public class Work implements Serializable {
private static final long serialVersionUID = 1L;
@TableId("id")
+ @JsonSerialize(using = ToStringSerializer.class)
private Long id;
/**
@@ -44,6 +49,9 @@ public class Work implements Serializable {
@TableField("publisher_id")
private Long publisherId;
+ @TableField(exist = false)
+ private String publisherName;
+
/**
* 创建时间
*/
@@ -81,4 +89,10 @@ public class Work implements Serializable {
@TableField("version")
@Version
private Integer version;
+ @TableField(exist = false)
+ private List userWorkList;
+ @TableField(exist = false)
+ private List worker;
+ @TableField(exist = false)
+ private double progress;
}
diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/WorkMapper.java b/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/WorkMapper.java
index 5fa6b8e..6f32f21 100644
--- a/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/WorkMapper.java
+++ b/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/WorkMapper.java
@@ -4,6 +4,8 @@ import com.cfive.pinnacle.entity.Work;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
+import java.util.List;
+
/**
*
* 工作事项 Mapper 接口
@@ -14,5 +16,10 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface WorkMapper extends BaseMapper {
+ List getAll();
+
+ List getTodo(Long userId);
+
+ List getComplete(Long userId);
}
diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/IWorkService.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/IWorkService.java
index f55a2a5..136d17a 100644
--- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/IWorkService.java
+++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/IWorkService.java
@@ -3,6 +3,8 @@ package com.cfive.pinnacle.service;
import com.cfive.pinnacle.entity.Work;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 工作事项 服务类
@@ -12,5 +14,13 @@ import com.baomidou.mybatisplus.extension.service.IService;
* @since 2023-04-30
*/
public interface IWorkService extends IService {
+ List getAll();
+ List getTodo(Long userId);
+ List getComplete(Long userId);
+ double getProgress(Long workId);
+
+ String getUserName(Long userId);
+ boolean addWork(Work work);
+ boolean deleteByWorkId(Long wid);
}
diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/UserWorkServiceImpl.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/UserWorkServiceImpl.java
index 63d3fa9..52d78a2 100644
--- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/UserWorkServiceImpl.java
+++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/UserWorkServiceImpl.java
@@ -17,4 +17,5 @@ import org.springframework.stereotype.Service;
@Service
public class UserWorkServiceImpl extends ServiceImpl implements IUserWorkService {
+
}
diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/WorkServiceImpl.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/WorkServiceImpl.java
index e6cef54..a7ad604 100644
--- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/WorkServiceImpl.java
+++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/WorkServiceImpl.java
@@ -1,11 +1,19 @@
package com.cfive.pinnacle.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.cfive.pinnacle.entity.User;
+import com.cfive.pinnacle.entity.UserWork;
import com.cfive.pinnacle.entity.Work;
+import com.cfive.pinnacle.mapper.UserMapper;
+import com.cfive.pinnacle.mapper.UserWorkMapper;
import com.cfive.pinnacle.mapper.WorkMapper;
import com.cfive.pinnacle.service.IWorkService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.util.List;
+
/**
*
* 工作事项 服务实现类
@@ -16,5 +24,74 @@ import org.springframework.stereotype.Service;
*/
@Service
public class WorkServiceImpl extends ServiceImpl implements IWorkService {
+ @Autowired
+ private WorkMapper workMapper;
+ @Autowired
+ private UserWorkMapper userWorkMapper;
+ @Autowired
+ private UserMapper userMapper;
+ @Override
+ public List getAll() {
+ List workList = workMapper.getAll();
+ for (Work work:
+ workList) {
+ work.setProgress(getProgress(work.getId()));
+ work.setPublisherName(getUserName(work.getPublisherId()));
+ }
+ return workList;
+ }
+
+ @Override
+ public List getTodo(Long userId) {
+ return workMapper.getTodo(userId);
+ }
+
+ @Override
+ public List getComplete(Long userId) {
+ return workMapper.getComplete(userId);
+ }
+
+ @Override
+ public double getProgress(Long workId) {
+ double workNum = userWorkMapper.selectCount(new QueryWrapper().eq("work_id",workId));
+ double completeNum = userWorkMapper.selectCount(new QueryWrapper().eq("work_id",workId).eq("status",1));
+ double progress = 0;
+ progress = (completeNum / workNum) * 100;
+ return progress;
+ }
+
+ @Override
+ public String getUserName(Long userId) {
+ return userMapper.selectById(userId).getUsername();
+ }
+
+ @Override
+ public boolean addWork(Work work) {
+ boolean flag = false;
+ if (workMapper.insert(work) > 0) {
+ flag = true;
+ }
+ long workId = work.getId();
+ for (User user :
+ work.getWorker()) {
+ UserWork userWork = new UserWork();
+ userWork.setWorkId(workId);
+ userWork.setUserId(user.getId());
+ if (userWorkMapper.insert(userWork) <= 0) {
+ flag = false;
+ }
+ }
+ return flag;
+ }
+
+ @Override
+ public boolean deleteByWorkId(Long workId) {
+ boolean flag = false;
+ if (userWorkMapper.delete(new QueryWrapper().eq("work_id", workId)) > 0 && workMapper.deleteById(workId) > 0) {
+ flag = true;
+ }
+ return flag;
+ }
+
}
diff --git a/Pinnacle/src/main/resources/mapper/WorkMapper.xml b/Pinnacle/src/main/resources/mapper/WorkMapper.xml
index 780a08f..1bef4b7 100644
--- a/Pinnacle/src/main/resources/mapper/WorkMapper.xml
+++ b/Pinnacle/src/main/resources/mapper/WorkMapper.xml
@@ -1,5 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ delete
+ from t_task
+ where id = #{id};
+
+
+ delete
+ from t_task
+
+
+ #{id}
+
+
+
+
+ update t_task
+
+
+ publisher_id = #{publisher_id}
+
+
+ task_status=#{taskStatus}
+
+
+ where id = #{id};
+
+
diff --git a/ui/src/assets/css/work/work.css b/ui/src/assets/css/work/work.css
index bd5431e..c3b0bbd 100644
--- a/ui/src/assets/css/work/work.css
+++ b/ui/src/assets/css/work/work.css
@@ -4,7 +4,7 @@
.main {
display: flex;
height: 100vh;
- width: 98vw;
+ width: 100vw;
min-width: 600px;
min-height: 600px;
text-align: center;
diff --git a/ui/src/components/Detail.vue b/ui/src/components/Detail.vue
index d96e164..8c2907a 100644
--- a/ui/src/components/Detail.vue
+++ b/ui/src/components/Detail.vue
@@ -7,14 +7,14 @@
:data="taskData"
border
>
- {{ taskData.publisher_id }}
+ {{ taskData.publisherId }}
{{ taskData.createTime }}
- {{ taskData.deadLine }}
+ {{ taskData.deadline }}
{{}}
- {{ taskData.taskContent }}
+ {{ taskData.content }}
@@ -23,12 +23,12 @@ export default {
data() {
return {
taskData: {
- publisher_id: '1',
+ publisherId: '1',
createTime: '1',
- deadLine: '1',
- taskStatus: false,
+ deadline: '1',
+ status: false,
worker: '',
- taskContent: '213'
+ content: '213'
}
}
}
diff --git a/ui/src/components/EditWork.vue b/ui/src/components/EditWork.vue
index 2107bd1..9293718 100644
--- a/ui/src/components/EditWork.vue
+++ b/ui/src/components/EditWork.vue
@@ -6,30 +6,29 @@
multiple
filterable
:reserve-keyword="false"
- value-key="userID"
+ value-key="username"
placeholder="选择相对应的工作人员"
>
-
+
-
-
+
+
创建
@@ -45,16 +44,16 @@ export default {
data() {
return {
form: {
- publisher_id: '',
+ publisherId: '',
createTime: '',
- deadLine: '',
- taskContent: '',
+ deadline: '',
+ content: '',
worker: []
},
workers: [
{
- userID: '',
- userName: ''
+ userId: '',
+ username: ''
}
],
rules: {
@@ -64,14 +63,14 @@ export default {
message: '请选择相应的工作人员'
}
],
- deadLine: [
+ deadline: [
{
type: 'date',
required: true,
message: '请输入终止日期'
}
],
- taskContent: [
+ content: [
{
required: true,
message: '请输入工作内容'
@@ -83,10 +82,10 @@ export default {
methods: {
getFormData() {
axios
- .get('http://localhost:8080/user')
+ .get('http://localhost:8621/user')
.then((response) => {
- console.log(response.data)
- this.workers = response.data
+ console.log(response.data.data)
+ this.workers = response.data.data
console.log(this.workers)
})
.catch((reportError) => {
@@ -96,7 +95,7 @@ export default {
addWork(form) {
console.log(form)
axios
- .post('http://localhost:8080/work', form)
+ .post('http://localhost:8621/work', form)
.then((response) => {
console.log(response.data)
})
@@ -108,9 +107,9 @@ export default {
//表单校验
this.$refs.ruleForm.validate((value) => {
if (value) {
- form.createTime = new Date().getTime().toString()
- console.log(form)
- form.publisher_id = String(1)
+ console.log(form.deadline)
+ form.createTime = new Date()
+ form.publisherId = String(1)
this.addWork(form)
this.$emit('setDialogVisible', false)
console.log('submit!')
diff --git a/ui/src/pages/work/AllTask.vue b/ui/src/pages/work/AllTask.vue
index 211c14e..a8af168 100644
--- a/ui/src/pages/work/AllTask.vue
+++ b/ui/src/pages/work/AllTask.vue
@@ -2,28 +2,30 @@
-
-
-
+
+
-
- {{ item.userName }},
+
+ {{ item.username }},
-
+
- {{ formatDate(scope.row.deadLine) }}
+ {{ formatDate(scope.row.deadline) }}
-
-
-
-
+
+
+
-
+
编辑删除
-
-
- 完成
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +86,9 @@ export default {
}
},
methods: {
- formatDate(deadLine) {
- console.log(new Date(deadLine).toLocaleString())
- return new Date(deadLine).toLocaleString()
+ formatDate(deadline) {
+ console.log(new Date(deadline).toLocaleString())
+ return new Date(deadline).toLocaleString()
},
handleClick() {
console.log('click')
@@ -107,10 +109,10 @@ export default {
},
getTableData() {
axios
- .get('http://localhost:8080/work')
+ .get('http://localhost:8621/work')
.then((response) => {
- console.log(response.data)
- this.tableData = response.data
+ console.log(response.data.data)
+ this.tableData = response.data.data
console.log(this.tableData)
})
.catch((reportError) => {
@@ -119,9 +121,9 @@ export default {
},
deleteTableData(row) {
axios
- .delete('http://localhost:8080/work/' + row.id)
+ .delete('http://localhost:8621/work/' + row.id)
.then((response) => {
- console.log(response.data)
+ console.log(response.data.data)
})
.catch((reportError) => {
console.log(reportError)
diff --git a/ui/src/pages/work/Complete.vue b/ui/src/pages/work/Complete.vue
index 0a588d1..8f54ac4 100644
--- a/ui/src/pages/work/Complete.vue
+++ b/ui/src/pages/work/Complete.vue
@@ -3,8 +3,8 @@
-
-
+
+
@@ -12,9 +12,9 @@
-
+
- {{ formatDate(scope.row.deadLine) }}
+ {{ formatDate(scope.row.deadline) }}
@@ -52,9 +52,9 @@ export default {
}
},
methods: {
- formatDate(deadLine) {
- console.log(new Date(deadLine).toLocaleString())
- return new Date(deadLine).toLocaleString()
+ formatDate(deadline) {
+ console.log(new Date(deadline).toLocaleString())
+ return new Date(deadline).toLocaleString()
},
todoConfirmEvent(row) {
console.log(row)
@@ -80,7 +80,7 @@ export default {
setTaskTodo(row) {
var workDo = new Object()
workDo.id = row.id
- workDo.taskStatus = false
+ workDo.status = false
axios
.put('http://localhost:8080/work', workDo)
.then((response) => {
diff --git a/ui/src/pages/work/Todo.vue b/ui/src/pages/work/Todo.vue
index b0a8177..0c9d563 100644
--- a/ui/src/pages/work/Todo.vue
+++ b/ui/src/pages/work/Todo.vue
@@ -3,8 +3,8 @@
-
-
+
+
@@ -12,9 +12,9 @@
-
+
- {{ formatDate(scope.row.deadLine) }}
+ {{ formatDate(scope.row.deadline) }}
@@ -51,9 +51,9 @@ export default {
}
},
methods: {
- formatDate(deadLine) {
- console.log(new Date(deadLine).toLocaleString())
- return new Date(deadLine).toLocaleString()
+ formatDate(deadline) {
+ console.log(new Date(deadline).toLocaleString())
+ return new Date(deadline).toLocaleString()
},
completeConfirmEvent(row) {
console.log(row)
@@ -79,7 +79,7 @@ export default {
setTaskComplete(row) {
var workDo = new Object()
workDo.id = row.id
- workDo.taskStatus = true
+ workDo.status = true
axios
.put('http://localhost:8080/work', workDo)
.then((response) => {