Просмотр исходного кода

增加年度计划、季度计划、周计划评价接口;
接口全部增加/rest/planning前缀;
用户更新接口增加phone字段;
季度分计划设置默认department;

Feick 4 лет назад
Родитель
Сommit
29931e369a
24 измененных файлов с 221 добавлено и 69 удалено
  1. 3 2
      src/main/kotlin/com/yaoxiang/planning/action/AnnualAction.kt
  2. 1 1
      src/main/kotlin/com/yaoxiang/planning/action/DepartmentAction.kt
  3. 1 1
      src/main/kotlin/com/yaoxiang/planning/action/OpenAction.kt
  4. 16 6
      src/main/kotlin/com/yaoxiang/planning/action/PlanningItemAction.kt
  5. 20 5
      src/main/kotlin/com/yaoxiang/planning/action/QuarterlyAction.kt
  6. 1 1
      src/main/kotlin/com/yaoxiang/planning/action/TestAction.kt
  7. 7 6
      src/main/kotlin/com/yaoxiang/planning/action/UserAction.kt
  8. 19 4
      src/main/kotlin/com/yaoxiang/planning/action/WeeklyAction.kt
  9. 5 1
      src/main/kotlin/com/yaoxiang/planning/config/WebMvcConfig.kt
  10. 2 0
      src/main/kotlin/com/yaoxiang/planning/domain/BaseLongEntity.kt
  11. 8 4
      src/main/kotlin/com/yaoxiang/planning/domain/PlanningItem.kt
  12. 4 0
      src/main/kotlin/com/yaoxiang/planning/domain/QuarterlyPlan.kt
  13. 0 14
      src/main/kotlin/com/yaoxiang/planning/model/Constants.kt
  14. 9 0
      src/main/kotlin/com/yaoxiang/planning/model/PlanningStatus.kt
  15. 8 0
      src/main/kotlin/com/yaoxiang/planning/model/PlanningType.kt
  16. 2 2
      src/main/kotlin/com/yaoxiang/planning/service/AnnualPlanService.kt
  17. 10 0
      src/main/kotlin/com/yaoxiang/planning/service/DepartmentService.kt
  18. 48 4
      src/main/kotlin/com/yaoxiang/planning/service/PlanningItemService.kt
  19. 6 6
      src/main/kotlin/com/yaoxiang/planning/service/PlanningService.kt
  20. 31 7
      src/main/kotlin/com/yaoxiang/planning/service/QuarterlyPlanService.kt
  21. 2 1
      src/main/kotlin/com/yaoxiang/planning/service/UserService.kt
  22. 13 2
      src/main/kotlin/com/yaoxiang/planning/service/WeeklyPlanService.kt
  23. 4 1
      src/main/resources/application.properties
  24. 1 1
      src/main/resources/templates/login.html

+ 3 - 2
src/main/kotlin/com/yaoxiang/planning/action/AnnualAction.kt

@@ -14,7 +14,7 @@ import java.util.*
 
 @Api(tags = ["年度计划"])
 @RestController
-@RequestMapping("annual")
+@RequestMapping("/rest/planning/annual")
 class AnnualAction {
 
     @Autowired
@@ -37,7 +37,8 @@ class AnnualAction {
         ApiImplicitParam(name = "id", value = "年度计划id", paramType = "query"),
         ApiImplicitParam(name = "name", value = "名称", paramType = "query"),
         ApiImplicitParam(name = "content", value = "计划内容", paramType = "query"),
-        ApiImplicitParam(name = "year", value = "年份", paramType = "query")
+        ApiImplicitParam(name = "year", value = "年份", paramType = "query"),
+        ApiImplicitParam(name = "status", value = "状态  0准备 1执行 2暂搁 3完成 4中止", paramType = "query"),
     )
     @PostMapping("update")
     fun update(id: Long, name: String, content: String, year: Int, status: Int): Reply<Any> {

+ 1 - 1
src/main/kotlin/com/yaoxiang/planning/action/DepartmentAction.kt

@@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.*
 
 @Api(tags = ["部门"])
 @RestController
-@RequestMapping("department")
+@RequestMapping("/rest/planning/department")
 class DepartmentAction {
 
     @Autowired

+ 1 - 1
src/main/kotlin/com/yaoxiang/planning/action/OpenAction.kt

@@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.RestController
 
 @Api(tags = ["开放接口"])
 @RestController
-@RequestMapping("open")
+@RequestMapping("/rest/planning/open")
 class OpenAction {
 
     @Autowired

+ 16 - 6
src/main/kotlin/com/yaoxiang/planning/action/PlanningItemAction.kt

@@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.*
 
 @Api(tags = ["分计划"])
 @RestController
-@RequestMapping("planningItem")
+@RequestMapping("/rest/planning/planningItem")
 class PlanningItemAction {
 
     @Autowired
@@ -34,16 +34,26 @@ class PlanningItemAction {
 
     @ApiOperation("更新子计划项")
     @PostMapping("update")
-    fun update(id: Long, name: String, content: String, status: Int,
-        @RequestParam(required = false) remark: String?): Reply<Any> {
-        val result = planningItemService.update(id, name, content, status, remark)
+    @ApiImplicitParams(
+        ApiImplicitParam(name = "name", value = "名称", paramType = "query"),
+        ApiImplicitParam(name = "content", value = "内容", paramType = "query"),
+        ApiImplicitParam(name = "status", value = "状态  0准备 1执行 2暂搁 3完成 4中止", paramType = "query"),
+        ApiImplicitParam(name = "remark", value = "备注", paramType = "query"),
+        ApiImplicitParam(name = "departmentId", value = "部门Id", paramType = "query")
+    )
+    fun update(
+        id: Long, name: String, content: String, status: Int,
+        @RequestParam(required = false) remark: String?,
+        @RequestParam(required = false) departmentId: Long?
+    ): Reply<Any> {
+        val result = planningItemService.update(id, name, content, status, remark, departmentId)
         return Reply(result)
     }
 
-    @ApiOperation("更新子计划状态")
+    @ApiOperation("评价子计划")
     @PostMapping("evaluate")
     fun evaluate(id: Long, evaluation: String): Reply<Any> {
-        val result = planningItemService.evaluate(id,evaluation)
+        val result = planningItemService.evaluate(id, evaluation)
         return Reply(result)
     }
 

+ 20 - 5
src/main/kotlin/com/yaoxiang/planning/action/QuarterlyAction.kt

@@ -14,7 +14,7 @@ import java.util.*
 
 @Api(tags = ["季度计划"])
 @RestController
-@RequestMapping("quarterly")
+@RequestMapping("/rest/planning/quarterly")
 class QuarterlyAction {
 
     @Autowired
@@ -39,6 +39,14 @@ class QuarterlyAction {
 
     @ApiOperation("更新季度计划")
     @PostMapping("update")
+    @ApiImplicitParams(
+        ApiImplicitParam(name = "name", value = "名称", paramType = "query"),
+        ApiImplicitParam(name = "content", value = "计划内容", paramType = "query"),
+        ApiImplicitParam(name = "year", value = "年份", paramType = "query"),
+        ApiImplicitParam(name = "quarter", value = "季度", paramType = "query"),
+        ApiImplicitParam(name = "statue",value = "状态 0准备 1执行 2暂搁 3完成 4中止",paramType = "query"),
+        ApiImplicitParam(name = "departmentId", value = "部门Id", paramType = "query")
+    )
     fun update(
         id: Long, name: String, content: String, year: Int, quarter: Int, status: Int,
         @RequestParam(required = false) departmentId: Long?
@@ -57,12 +65,19 @@ class QuarterlyAction {
     @ApiOperation("获取季度计划")
     @ApiImplicitParam(name = "year", value = "year", paramType = "query")
     @GetMapping("list")
-    fun list(@RequestParam(required = false) year: Int? = null,
-             @RequestParam(required = false) departmentId: Long?): Reply<List<QuarterlyPlan>> {
+    fun list(
+        @RequestParam(required = false) year: Int? = null,
+        @RequestParam(required = false) departmentId: Long?
+    ): Reply<List<QuarterlyPlan>> {
         val y: Int = year ?: DateUtils.year(Date())
-        val result = quarterlyPlanService.list(y,departmentId)
+        val result = quarterlyPlanService.list(y, departmentId)
         return Reply.ok(result)
     }
 
-
+    @ApiOperation("评价")
+    @PostMapping("evaluate")
+    fun evaluate(id: Long, evaluation: String): Reply<Any> {
+        val result = quarterlyPlanService.evaluate(id, evaluation)
+        return Reply(result)
+    }
 }

+ 1 - 1
src/main/kotlin/com/yaoxiang/planning/action/TestAction.kt

@@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.RestController
 
 @Api(tags = ["Test"])
 @RestController
-@RequestMapping("test")
+@RequestMapping("/rest/planning/test")
 class TestAction {
 
     @ApiOperation("hello")

+ 7 - 6
src/main/kotlin/com/yaoxiang/planning/action/UserAction.kt

@@ -2,7 +2,6 @@ package com.yaoxiang.planning.action
 
 import com.yaoxiang.planning.domain.UserInfo
 import com.yaoxiang.planning.model.Reply
-import com.yaoxiang.planning.service.DepartmentService
 import com.yaoxiang.planning.service.UserService
 import io.swagger.annotations.Api
 import io.swagger.annotations.ApiImplicitParam
@@ -13,7 +12,7 @@ import org.springframework.web.bind.annotation.*
 
 @Api(tags = ["用户"])
 @RestController
-@RequestMapping("user")
+@RequestMapping("/rest/planning/user")
 class UserAction {
 
     @Autowired
@@ -40,16 +39,18 @@ class UserAction {
     @ApiImplicitParams(
         ApiImplicitParam(name = "name", value = "昵称", paramType = "query"),
         ApiImplicitParam(name = "age", value = "职责", paramType = "query"),
-        ApiImplicitParam(name = "gender", value = "备注", paramType = "query"),
-        ApiImplicitParam(name = "email", value = "上级部门Id", paramType = "query")
+        ApiImplicitParam(name = "gender", value = "性别", paramType = "query"),
+        ApiImplicitParam(name = "email", value = "上级部门Id", paramType = "query"),
+        ApiImplicitParam(name = "phone", value = "手机号码", paramType = "query")
     )
     @PostMapping("updateInfo")
     fun updateInfo(
         id: Long, name: String, @RequestParam(required = false) age: Int?,
         @RequestParam(required = false) gender: Int?,
-        @RequestParam(required = false) email: String?
+        @RequestParam(required = false) email: String?,
+        @RequestParam(required = false) phone: String
     ): Reply<Any> {
-        val result = userService.updateInfo(id, name, age, gender, email)
+        val result = userService.updateInfo(id, name, age, gender, email, phone)
         return if (result) Reply.ok() else Reply.fail("更新失败")
     }
 

+ 19 - 4
src/main/kotlin/com/yaoxiang/planning/action/WeeklyAction.kt

@@ -14,7 +14,7 @@ import java.util.*
 
 @Api(tags = ["周计划"])
 @RestController
-@RequestMapping("weekly")
+@RequestMapping("/rest/planning/weekly")
 class WeeklyAction {
 
     @Autowired
@@ -40,6 +40,12 @@ class WeeklyAction {
     }
 
     @ApiOperation("更新周计划")
+    @ApiImplicitParams(
+        ApiImplicitParam(name = "name", value = "名称", paramType = "query"),
+        ApiImplicitParam(name = "content", value = "计划内容", paramType = "query"),
+        ApiImplicitParam(name = "startTime", value = "计划时间", paramType = "query"),
+        ApiImplicitParam(name = "status", value = "状态 0准备 1执行 2暂搁 3完成 4中止", paramType = "query")
+    )
     @PostMapping("update")
     fun update(id: Long, name: String, content: String, startTime: Long, status: Int): Reply<Any> {
         val year = DateUtils.year(Date(startTime))
@@ -56,13 +62,22 @@ class WeeklyAction {
 
     @GetMapping("listCurrentMonth")
     @ApiOperation("获取个人当月的计划列表")
-    fun listCurrentMonth(@RequestParam(required = false) startTime: Long?,
-                         @RequestParam(required = false) userId: Long?): Reply<Map<String, List<WeeklyPlan>>> {
+    fun listCurrentMonth(
+        @RequestParam(required = false) startTime: Long?,
+        @RequestParam(required = false) userId: Long?
+    ): Reply<Map<String, List<WeeklyPlan>>> {
         val start = startTime ?: System.currentTimeMillis()
-        val result = weeklyPlanService.mapCurrentMonth(start,userId)
+        val result = weeklyPlanService.mapCurrentMonth(start, userId)
         return Reply.ok(result)
     }
 
+    @ApiOperation("评价")
+    @PostMapping("evaluate")
+    fun evaluate(id: Long, evaluation: String): Reply<Any> {
+        val result = weeklyPlanService.evaluate(id, evaluation)
+        return Reply(result)
+    }
+
 //    @ApiOperation("获取所有人的周计划列表")
 //    @GetMapping("listAllOfCurrentWeek")
 //    fun listAllOfCurrentWeek(@RequestParam(required = false) startTime: Long?): Reply<Map<String, List<WeeklyPlan>>> {

+ 5 - 1
src/main/kotlin/com/yaoxiang/planning/config/WebMvcConfig.kt

@@ -1,5 +1,6 @@
 package com.yaoxiang.planning.config
 
+import org.springframework.beans.factory.annotation.Value
 import org.springframework.context.annotation.Bean
 import org.springframework.context.annotation.Configuration
 import org.springframework.web.servlet.config.annotation.ViewControllerRegistry
@@ -9,11 +10,14 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer
 //@EnableWebMvc
 class WebMvcConfig {
 
+    @Value("\${web.loginPage:/login}")
+    private val loginPage: String? = null
+
     @Bean
     fun webMvcConfigurer(): WebMvcConfigurer {
         return object : WebMvcConfigurer {
             override fun addViewControllers(registry: ViewControllerRegistry) {
-                registry.addViewController("/login").setViewName("login")
+                registry.addViewController(loginPage!!).setViewName("login")
 
             }
         }

+ 2 - 0
src/main/kotlin/com/yaoxiang/planning/domain/BaseLongEntity.kt

@@ -19,10 +19,12 @@ open class BaseLongEntity : Serializable {
     open var id: Long? = null
 
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty("创建时间")
     @CreationTimestamp
     open var createTime: Date? = null
 
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty("更新时间")
     @UpdateTimestamp
     open var updateTime: Date? = null
 }

+ 8 - 4
src/main/kotlin/com/yaoxiang/planning/domain/PlanningItem.kt

@@ -17,8 +17,8 @@ class PlanningItem() : BaseLongEntity() {
     @Column(columnDefinition = "mediumtext COMMENT '分计划内容'")
     var content: String? = null
 
-    @ApiModelProperty("分计划状态")
-    @Column(columnDefinition = "int(11) COMMENT '分计划状态'")
+    @ApiModelProperty("分计划状态  0准备 1执行 2暂搁 3完成 4中止")
+    @Column(columnDefinition = "int(11) COMMENT '分计划状态  0准备 1执行 2暂搁 3完成 4中止'")
     var status: Int? = null
 
     @ApiModelProperty("备注")
@@ -33,12 +33,16 @@ class PlanningItem() : BaseLongEntity() {
     @Column(columnDefinition = "int(20) COMMENT '分计划所属部门Id'")
     var departmentId: Long? = null
 
+    @ApiModelProperty("分计划所属部门名称")
+    @Column(columnDefinition = "varchar(255) COMMENT '分计划所属部门名称'")
+    var departmentName: String? = null
+
 //    @ApiModelProperty("分计划序号")
 //    @Column(columnDefinition = "int(11) COMMENT '分计序号'")
 //    var indexes: Int? = null
 
-    @ApiModelProperty("分计划类型")
-    @Column(columnDefinition = "int(20) COMMENT '分计划类型'")
+    @ApiModelProperty("分计划类型 0年度计划 1季度计划 2周计划")
+    @Column(columnDefinition = "int(20) COMMENT '分计划类型 0年度计划 1季度计划 2周计划'")
     var type: Int? = null
 
     @ApiModelProperty("计划Id")

+ 4 - 0
src/main/kotlin/com/yaoxiang/planning/domain/QuarterlyPlan.kt

@@ -29,4 +29,8 @@ class QuarterlyPlan() : Planning() {
     @Column(columnDefinition = "int(20) COMMENT '部门Id'")
     var departmentId: Long? = null
 
+    @ApiModelProperty("部门名称")
+    @Column(columnDefinition = "varchar(255) COMMENT '部门名称'")
+    var departmentName:String ?= null
+
 }

+ 0 - 14
src/main/kotlin/com/yaoxiang/planning/model/Constants.kt

@@ -2,18 +2,4 @@ package com.yaoxiang.planning.model
 
 class Constants {
 
-}
-
-enum class PlanStatus(val status: String) {
-    READY("准备"),
-    EXECUTE("执行"),
-    PAUSE("暂搁"),
-    FINISHED("完成"),
-    CANCEL("中止")
-}
-
-enum class PlanType(val type: String) {
-    ANNUAL("年度计划"),
-    QUARTERLY("季度计划"),
-    WEEKLY("周计划")
 }

+ 9 - 0
src/main/kotlin/com/yaoxiang/planning/model/PlanningStatus.kt

@@ -0,0 +1,9 @@
+package com.yaoxiang.planning.model
+
+enum class PlanningStatus(val status: String) {
+    READY("准备"),
+    EXECUTE("执行"),
+    PAUSE("暂搁"),
+    FINISHED("完成"),
+    CANCEL("中止")
+}

+ 8 - 0
src/main/kotlin/com/yaoxiang/planning/model/PlanningType.kt

@@ -0,0 +1,8 @@
+package com.yaoxiang.planning.model
+
+enum class PlanningType(val type: String) {
+
+    ANNUAL("年度计划"),
+    QUARTERLY("季度计划"),
+    WEEKLY("周计划")
+}

+ 2 - 2
src/main/kotlin/com/yaoxiang/planning/service/AnnualPlanService.kt

@@ -1,7 +1,7 @@
 package com.yaoxiang.planning.service
 
 import com.yaoxiang.planning.domain.AnnualPlan
-import com.yaoxiang.planning.model.PlanType
+import com.yaoxiang.planning.model.PlanningType
 import com.yaoxiang.planning.repository.AnnualPlanRepo
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.stereotype.Service
@@ -26,7 +26,7 @@ class AnnualPlanService {
             return false
         }
         val planning = AnnualPlan()
-        planning.type = PlanType.ANNUAL.ordinal
+        planning.type = PlanningType.ANNUAL.ordinal
         planningService.add(name, content, year, planning)
         return true
     }

+ 10 - 0
src/main/kotlin/com/yaoxiang/planning/service/DepartmentService.kt

@@ -150,4 +150,14 @@ class DepartmentService {
         return Optional.ofNullable(root)
     }
 
+    fun getName(id: Long?): String? {
+        if (id != null) {
+            val optional = get(id)
+            if (optional.isPresent) {
+                return optional.get().name
+            }
+        }
+        return null
+    }
+
 }

+ 48 - 4
src/main/kotlin/com/yaoxiang/planning/service/PlanningItemService.kt

@@ -1,23 +1,46 @@
 package com.yaoxiang.planning.service
 
 import com.yaoxiang.planning.domain.PlanningItem
-import com.yaoxiang.planning.model.PlanStatus
+import com.yaoxiang.planning.model.PlanningStatus
+import com.yaoxiang.planning.model.PlanningType
+import com.yaoxiang.planning.repository.AnnualPlanRepo
 import com.yaoxiang.planning.repository.PlanningItemRepo
+import com.yaoxiang.planning.repository.QuarterlyPlanRepo
+import mu.KotlinLogging
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.stereotype.Service
 import java.util.*
 
+private val logger = KotlinLogging.logger { }
+
 @Service
 class PlanningItemService {
 
     @Autowired
     private lateinit var planningItemRepo: PlanningItemRepo
 
+    @Autowired
+    private lateinit var departmentService: DepartmentService
+
+    @Autowired
+    private lateinit var quarterlyPlanRepo: QuarterlyPlanRepo
+
+    @Autowired
+    private lateinit var annualPlanRepo: AnnualPlanRepo
+
     fun addItem(planningItem: PlanningItem): Boolean {
         if (planningItem.type == null || planningItem.planningId == null) {
+            logger.error { "add item fail,type=${planningItem.type},planningId=${planningItem.type}" }
             return false
         }
-        planningItem.status = PlanStatus.READY.ordinal
+        if (!checkAndSetDefault(planningItem)) {
+            logger.error { "check planning fail,planningId=${planningItem.planningId},type=${planningItem.type}" }
+            return false
+        }
+        if (planningItem.departmentId != null) {
+            planningItem.departmentName = departmentService.getName(planningItem.departmentId)
+        }
+        planningItem.status = PlanningStatus.READY.ordinal
         planningItemRepo.save(planningItem)
         return true
     }
@@ -65,20 +88,42 @@ class PlanningItemService {
         return planningItemRepo.findById(id)
     }
 
-    fun update(id: Long, name: String, content: String, status: Int, remark: String?): Boolean {
+    fun update(id: Long, name: String, content: String, status: Int, remark: String?, departmentId: Long?): Boolean {
         val optional = get(id)
         if (optional.isPresent) {
             val item = optional.get()
             item.name = name
             item.content = content
             item.status = status
+            item.departmentId = departmentId
             item.remark = remark
+            if (departmentId != null) {
+                item.departmentName = departmentService.getName(departmentId)
+            }
             planningItemRepo.save(item)
             return true
         }
         return false
     }
 
+    private fun checkAndSetDefault(item: PlanningItem): Boolean {
+        when (item.type!!) {
+            PlanningType.ANNUAL.ordinal -> {
+                val optional = annualPlanRepo.findById(item.planningId!!)
+                return optional.isPresent
+            }
+            PlanningType.QUARTERLY.ordinal -> {
+                val optional = quarterlyPlanRepo.findById(item.planningId!!)
+                if (optional.isPresent && item.departmentId == null) {
+                    //设置默认的部门Id
+                    item.departmentId = optional.get().departmentId
+                }
+                return optional.isPresent
+            }
+        }
+        return false
+    }
+
     fun evaluate(id: Long, evaluation: String): Boolean {
         val optional = get(id)
         if (optional.isPresent) {
@@ -90,5 +135,4 @@ class PlanningItemService {
         return false
     }
 
-
 }

+ 6 - 6
src/main/kotlin/com/yaoxiang/planning/service/PlanningService.kt

@@ -4,8 +4,8 @@ import com.yaoxiang.planning.domain.AnnualPlan
 import com.yaoxiang.planning.domain.Planning
 import com.yaoxiang.planning.domain.QuarterlyPlan
 import com.yaoxiang.planning.domain.WeeklyPlan
-import com.yaoxiang.planning.model.PlanStatus
-import com.yaoxiang.planning.model.PlanType
+import com.yaoxiang.planning.model.PlanningStatus
+import com.yaoxiang.planning.model.PlanningType
 import com.yaoxiang.planning.repository.AnnualPlanRepo
 import com.yaoxiang.planning.repository.QuarterlyPlanRepo
 import com.yaoxiang.planning.repository.WeeklyPlanRepo
@@ -28,15 +28,15 @@ class PlanningService {
         planning.name = name
         planning.content = content
         planning.year = year
-        planning.status = PlanStatus.READY.ordinal
+        planning.status = PlanningStatus.READY.ordinal
         when (planning.type) {
-            PlanType.ANNUAL.ordinal -> {
+            PlanningType.ANNUAL.ordinal -> {
                 annualPlanRepo.save(planning as AnnualPlan)
             }
-            PlanType.QUARTERLY.ordinal -> {
+            PlanningType.QUARTERLY.ordinal -> {
                 quarterlyPlanRepo.save(planning as QuarterlyPlan)
             }
-            PlanType.WEEKLY.ordinal -> {
+            PlanningType.WEEKLY.ordinal -> {
                 weeklyPlanRepo.save(planning as WeeklyPlan)
             }
         }

+ 31 - 7
src/main/kotlin/com/yaoxiang/planning/service/QuarterlyPlanService.kt

@@ -1,7 +1,7 @@
 package com.yaoxiang.planning.service
 
 import com.yaoxiang.planning.domain.QuarterlyPlan
-import com.yaoxiang.planning.model.PlanType
+import com.yaoxiang.planning.model.PlanningType
 import com.yaoxiang.planning.repository.QuarterlyPlanRepo
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.stereotype.Service
@@ -16,22 +16,34 @@ class QuarterlyPlanService {
     @Autowired
     private lateinit var planningService: PlanningService
 
+    @Autowired
+    private lateinit var departmentService: DepartmentService
+
 
-    fun add(name: String, content: String, year: Int, quarter: Int,departmentId:Long?): Boolean {
+    fun add(name: String, content: String, year: Int, quarter: Int, departmentId: Long?): Boolean {
         if (exists(year, quarter)) {
             return false
         }
         val planning = QuarterlyPlan()
         planning.quarter = quarter
-        planning.type = PlanType.QUARTERLY.ordinal
+        planning.type = PlanningType.QUARTERLY.ordinal
         planning.startTime = Date()
         planning.endTime = Date()
         planning.departmentId = departmentId
+        planning.departmentName = departmentService.getName(departmentId)
         planningService.add(name, content, year, planning)
         return true
     }
 
-    fun update(id: Long, name: String, content: String, year: Int, quarter: Int, status: Int,departmentId: Long?): Boolean {
+    fun update(
+        id: Long,
+        name: String,
+        content: String,
+        year: Int,
+        quarter: Int,
+        status: Int,
+        departmentId: Long?
+    ): Boolean {
         val optional = get(id)
         if (!optional.isPresent) {
             return false
@@ -43,6 +55,7 @@ class QuarterlyPlanService {
         planning.quarter = quarter
         planning.status = status
         planning.departmentId = departmentId
+        planning.departmentName = departmentService.getName(departmentId)
         quarterlyPlanRepo.save(planning)
         return true
     }
@@ -69,11 +82,22 @@ class QuarterlyPlanService {
         return true
     }
 
-    fun list(year: Int,departmentId: Long?): List<QuarterlyPlan> {
-        if(departmentId == null){
+    fun list(year: Int, departmentId: Long?): List<QuarterlyPlan> {
+        if (departmentId == null) {
             return quarterlyPlanRepo.findByYear(year)
         }
-        return quarterlyPlanRepo.findByYearAndDepartmentId(year,departmentId!!)
+        return quarterlyPlanRepo.findByYearAndDepartmentId(year, departmentId)
+    }
+
+    fun evaluate(id: Long, evaluation: String): Boolean {
+        val optional = get(id)
+        if (optional.isPresent) {
+            val plan = optional.get()
+            plan.evaluation = evaluation
+            quarterlyPlanRepo.save(plan)
+            return true
+        }
+        return false
     }
 
 

+ 2 - 1
src/main/kotlin/com/yaoxiang/planning/service/UserService.kt

@@ -100,7 +100,7 @@ class UserService {
     }
 
     @Transactional
-    fun updateInfo(id: Long, name: String, age: Int?, gender: Int?, email: String?): Boolean {
+    fun updateInfo(id: Long, name: String, age: Int?, gender: Int?, email: String?, phone: String?): Boolean {
         val optional = get(id)
         if (!optional.isPresent) {
             return false
@@ -110,6 +110,7 @@ class UserService {
         user.age = age
         user.gender = gender
         user.email = email
+        user.phone = phone
         val result = update(user)
         logger.info { "更新用户信息,user=${user}" }
         return result

+ 13 - 2
src/main/kotlin/com/yaoxiang/planning/service/WeeklyPlanService.kt

@@ -1,7 +1,7 @@
 package com.yaoxiang.planning.service
 
 import com.yaoxiang.planning.domain.WeeklyPlan
-import com.yaoxiang.planning.model.PlanType
+import com.yaoxiang.planning.model.PlanningType
 import com.yaoxiang.planning.repository.WeeklyPlanRepo
 import com.yaoxiang.planning.utils.DateUtil
 import mu.KotlinLogging
@@ -29,7 +29,7 @@ class WeeklyPlanService {
         val planning = WeeklyPlan()
         planning.userId = userId ?: userService.currentUserId()
         planning.startTime = Date(startTime)
-        planning.type = PlanType.WEEKLY.ordinal
+        planning.type = PlanningType.WEEKLY.ordinal
         planningService.add(name, content, year, planning)
         return true
     }
@@ -106,4 +106,15 @@ class WeeklyPlanService {
         return weeklyPlanRepo.findAllByUserIdAndStartTimeBetween(id!!, first, last)
     }
 
+    fun evaluate(id: Long, evaluation: String): Boolean {
+        val optional = get(id)
+        if (optional.isPresent) {
+            val plan = optional.get()
+            plan.evaluation = evaluation
+            weeklyPlanRepo.save(plan)
+            return true
+        }
+        return false
+    }
+
 }

+ 4 - 1
src/main/resources/application.properties

@@ -22,4 +22,7 @@ spring.datasource.testOnReturn=false
 #سÏó
 planning.department_name=\u723b\u8c61
 planning.secret=YaoXiang@1234
-planning.default_password=Admin123
+planning.default_password=Admin123
+
+web.loginPage=/rest/planning/login
+web.logoutUrl=/rest/planning/logout

+ 1 - 1
src/main/resources/templates/login.html

@@ -6,7 +6,7 @@
 </head>
 <body>
 <h2>Login</h2>
-<form action="/login" method="post">
+<form action="/rest/planning/login" method="post">
     <input type="text" name="username" value=""/><br/>
     <input type="password" name="password" value=""/><br/>
     <input type="text" name="loginFrom" value="student"><br/>