字典管理;任务数据统计;个人绩点统计
This commit is contained in:
parent
de7e7d72e7
commit
dd0948e875
@ -5,7 +5,6 @@ import com.cpop.api.tencent.wxWork.core.config.WxWorkApiConfig;
|
||||
import com.cpop.api.tencent.wxWork.webHook.WebHookSendTextRequest;
|
||||
import okhttp3.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.io.IOException;
|
||||
@ -29,9 +28,8 @@ public class WebHookSendHandler {
|
||||
* @param key 机器人键
|
||||
* @param phoneList 通知人手机号
|
||||
* @param content 内容
|
||||
* @return java.lang.String
|
||||
*/
|
||||
public String webHookSendText(String key, List<String> phoneList, String content, Boolean isAll) throws IOException {
|
||||
public void webHookSendText(String key, List<String> phoneList, String content, Boolean isAll) throws IOException {
|
||||
if (isAll) {
|
||||
phoneList.add("@all");
|
||||
}
|
||||
@ -40,19 +38,17 @@ public class WebHookSendHandler {
|
||||
text.setContent(content);
|
||||
text.setMentionedMobileList(phoneList);
|
||||
request.setText(text);
|
||||
Response response = sendPost(config.getWebhook() + key, JSONObject.toJSONString(request));
|
||||
return response.toString();
|
||||
sendPost(config.getWebhook() + key, JSONObject.toJSONString(request));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param url 地址
|
||||
* @param jsonBody 请求体
|
||||
* @descriptions 发送post请求
|
||||
* @author DB
|
||||
* @date 2023/09/15 17:28
|
||||
* @param url 地址
|
||||
* @param jsonBody 请求体
|
||||
* @return okhttp3.Response
|
||||
*/
|
||||
private Response sendPost(String url,String jsonBody) throws IOException {
|
||||
private void sendPost(String url, String jsonBody) throws IOException {
|
||||
OkHttpClient client = new OkHttpClient().newBuilder().build();
|
||||
MediaType mediaType = MediaType.parse("application/json");
|
||||
RequestBody body = RequestBody.create(mediaType, jsonBody);
|
||||
@ -61,6 +57,6 @@ public class WebHookSendHandler {
|
||||
.method("POST", body)
|
||||
.addHeader("Content-Type", "application/json")
|
||||
.build();
|
||||
return client.newCall(request).execute();
|
||||
client.newCall(request).execute();
|
||||
}
|
||||
}
|
||||
|
||||
@ -31,7 +31,7 @@ public class CpopApiTests {
|
||||
List<String> list = new ArrayList<>();
|
||||
list.add("17728500831");
|
||||
try {
|
||||
System.out.println(webHookSendHandler.webHookSendText("586442ba-6eeb-4a3c-937d-75faa4d9dbb9", list, "测试数据,不用管", false));
|
||||
webHookSendHandler.webHookSendText("586442ba-6eeb-4a3c-937d-75faa4d9dbb9", list, "测试数据,不用管", false);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
@ -0,0 +1,41 @@
|
||||
package com.cpop.oam.business.bo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* @author DB
|
||||
* @version 1.0.0
|
||||
* @since 2023-12-05 17:53
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value = "TaskArchivingPagBo")
|
||||
public class TaskArchivingPagBo {
|
||||
|
||||
/**
|
||||
* 主体
|
||||
*/
|
||||
@ApiModelProperty("主体")
|
||||
private String subject;
|
||||
|
||||
/**
|
||||
* 任务内容
|
||||
*/
|
||||
@ApiModelProperty("任务内容")
|
||||
private String taskContent;
|
||||
|
||||
/**
|
||||
* 是否已归档
|
||||
*/
|
||||
@NotNull(message = "不能为空")
|
||||
@ApiModelProperty(value = "任务内容",required = true)
|
||||
Boolean isFinish;
|
||||
}
|
||||
@ -0,0 +1,26 @@
|
||||
package com.cpop.oam.business.bo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* @author DB
|
||||
* @version 1.0.0
|
||||
* @since 2023-12-05 15:09
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value = "任务日报对象", description = "任务日报对象")
|
||||
public class TaskDailyPaperBo {
|
||||
|
||||
/**
|
||||
* 日期
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate date;
|
||||
}
|
||||
@ -17,10 +17,8 @@ import java.io.Serializable;
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value = "Task进度对象", description = "Task进度对象")
|
||||
public class TaskItemBo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
@ApiModel(value = "Task项对象", description = "Task项对象")
|
||||
public class TaskItemBo {
|
||||
|
||||
/**
|
||||
* 主键
|
||||
@ -35,4 +33,10 @@ public class TaskItemBo implements Serializable {
|
||||
@NotNull(message = "任务项不能为空")
|
||||
@ApiModelProperty(value = "任务项(0:待开发;1:待测试:2:待部署;3:已归档)",required = true)
|
||||
private Integer taskItem;
|
||||
|
||||
/**
|
||||
* 测试转部署文件路径
|
||||
*/
|
||||
@ApiModelProperty(value = "测试转部署文件路径")
|
||||
private String testToFinishUrl;
|
||||
}
|
||||
|
||||
@ -23,8 +23,8 @@ public class TaskMonthStatisticsBo implements Serializable {
|
||||
/**
|
||||
* 主要负责员工id
|
||||
*/
|
||||
@ApiModelProperty("主要负责员工id")
|
||||
private String responsibleStaffId;
|
||||
@ApiModelProperty("技术员工id")
|
||||
private String technologyStaffId;
|
||||
|
||||
/**
|
||||
* 任务月份
|
||||
|
||||
@ -0,0 +1,36 @@
|
||||
package com.cpop.oam.business.bo;
|
||||
|
||||
import com.cpop.core.annontation.StringArrayConvert;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* @author DB
|
||||
* @version 1.0.0
|
||||
* @since 2023-12-04 16:41
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value = "Task进度对象", description = "Task进度对象")
|
||||
public class TaskProgressBo {
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@NotBlank(message = "主键不能为空")
|
||||
@ApiModelProperty(value = "主键",required = true)
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 任务进度(0:开发文档;1:原型涉及;2:UI涉及;3:前端开发;4:后端开发)
|
||||
*/
|
||||
@NotNull(message = "任务进度不能为空")
|
||||
@ApiModelProperty(value = "任务进度(0:开发文档;1:原型涉及;2:UI涉及;3:前端开发;4:后端开发)",required = true)
|
||||
@StringArrayConvert
|
||||
private String taskProgress;
|
||||
}
|
||||
@ -48,7 +48,7 @@ public class TaskTechnologyController {
|
||||
* @author DB
|
||||
* @since 2023-11-30 19:41:32
|
||||
*/
|
||||
@PreAuthorize("@aps.hasPermission('oamTask:taskTechnology:list')")
|
||||
//@PreAuthorize("@aps.hasPermission('oamTask:taskTechnology:list')")
|
||||
@ApiOperation("技术模块-今日事务-获取个人工单列表")
|
||||
@GetMapping("/getPersonWorkOrder")
|
||||
public R<List<TaskWorkOrderPersonVo>> getPersonWorkOrder() {
|
||||
@ -63,7 +63,7 @@ public class TaskTechnologyController {
|
||||
* @author DB
|
||||
* @since 2023-11-29 11:25:28
|
||||
*/
|
||||
@PreAuthorize("@aps.hasPermission('oamTask:workOrder:record')")
|
||||
//@PreAuthorize("@aps.hasPermission('oamTask:workOrder:record')")
|
||||
@ApiOperation("技术模块-今日事务-工单记录列表")
|
||||
@GetMapping("/getWorkOrderRecordList/{workOrderId}")
|
||||
public R<List<TaskWorkOrderRecordListVo>> getWorkOrderRecordList(@PathVariable @ApiParam("工单id")
|
||||
@ -79,7 +79,7 @@ public class TaskTechnologyController {
|
||||
* @author DB
|
||||
* @since 2023-11-29 11:33:35
|
||||
*/
|
||||
@PreAuthorize("@aps.hasPermission('oamTask:workOrder:record')")
|
||||
//@PreAuthorize("@aps.hasPermission('oamTask:workOrder:record')")
|
||||
@ApiOperation("技术模块-今日事务-新增工单记录")
|
||||
@PostMapping("/insertWorkOrderRecord")
|
||||
public R<Void> insertWorkOrderRecord(@RequestBody @Validated
|
||||
@ -98,14 +98,11 @@ public class TaskTechnologyController {
|
||||
* @author DB
|
||||
* @since 2023-11-30 21:11:47
|
||||
*/
|
||||
@PreAuthorize("@aps.hasPermission('oamTask:taskArchiving:list')")
|
||||
//@PreAuthorize("@aps.hasPermission('oamTask:taskArchiving:list')")
|
||||
@ApiOperation("技术模块-任务归档-获取任务归档分页")
|
||||
@GetMapping("/getTaskArchivingPage")
|
||||
public R<Page<TaskArchivingPagVo>> getTaskArchivingPage(@ApiParam(value = "主体")
|
||||
String subject, @ApiParam(value = "任务内容")
|
||||
String taskContent, @RequestParam("isFinish") @ApiParam(value = "是否已归档", required = true)
|
||||
Boolean isFinish) {
|
||||
Page<TaskArchivingPagVo> page = taskService.getTaskArchivingPage(subject, taskContent, isFinish);
|
||||
public R<Page<TaskArchivingPagVo>> getTaskArchivingPage(TaskArchivingPagBo bo) {
|
||||
Page<TaskArchivingPagVo> page = taskService.getTaskArchivingPage(bo);
|
||||
return R.ok(page);
|
||||
}
|
||||
|
||||
@ -116,7 +113,7 @@ public class TaskTechnologyController {
|
||||
* @author DB
|
||||
* @since 2023-11-30 21:49:05
|
||||
*/
|
||||
@PreAuthorize("@aps.hasPermission('oamTask:taskArchiving:update')")
|
||||
//@PreAuthorize("@aps.hasPermission('oamTask:taskArchiving:update')")
|
||||
@ApiOperation("技术模块-任务归档-设置任务归档")
|
||||
@PutMapping("/setTaskArchiving/{taskId}")
|
||||
public R<Void> setTaskArchiving(@PathVariable @ApiParam("任务id")
|
||||
@ -134,7 +131,7 @@ public class TaskTechnologyController {
|
||||
* @author DB
|
||||
* @since 2023-11-30 22:21:58
|
||||
*/
|
||||
@PreAuthorize("@aps.hasPermission('oamTask:task:list')")
|
||||
//@PreAuthorize("@aps.hasPermission('oamTask:task:list')")
|
||||
@ApiOperation("技术模块-任务领取-获取领取任务分页")
|
||||
@GetMapping("/getToBeClaimedPage")
|
||||
public R<Page<TaskToBeClaimedPageVo>> getToBeClaimedPage(@ApiParam(value = "主体")
|
||||
@ -152,7 +149,7 @@ public class TaskTechnologyController {
|
||||
* @author DB
|
||||
* @since 2023-12-01 09:45:08
|
||||
*/
|
||||
@PreAuthorize("@aps.hasPermission('oamTask:iterateTask:insert')")
|
||||
//@PreAuthorize("@aps.hasPermission('oamTask:iterateTask:insert')")
|
||||
@ApiOperation("技术模块-任务领取-新增迭代任务")
|
||||
@PostMapping("/insertIterationTask")
|
||||
public R<Void> insertIterationTask(@RequestBody @Validated
|
||||
@ -168,7 +165,7 @@ public class TaskTechnologyController {
|
||||
* @author DB
|
||||
* @since 2023-12-01 10:15:28
|
||||
*/
|
||||
@PreAuthorize("@aps.hasPermission('oamTask:iterateTask:update')")
|
||||
//@PreAuthorize("@aps.hasPermission('oamTask:iterateTask:update')")
|
||||
@ApiOperation("技术模块-任务领取-技术人员领取任务")
|
||||
@PutMapping("/claimTask/{id}")
|
||||
public R<Void> claimTask(@PathVariable @ApiParam("任务id")
|
||||
@ -184,7 +181,7 @@ public class TaskTechnologyController {
|
||||
* @author DB
|
||||
* @since 2023-12-01 10:35:31
|
||||
*/
|
||||
@PreAuthorize("@aps.hasPermission('oamTask:taskAudit:update')")
|
||||
//@PreAuthorize("@aps.hasPermission('oamTask:taskAudit:update')")
|
||||
@ApiOperation("技术模块-任务领取-任务审核")
|
||||
@PutMapping("/setTaskAuditComments")
|
||||
public R<Void> setTaskAuditComments(@RequestBody @Validated
|
||||
@ -200,7 +197,7 @@ public class TaskTechnologyController {
|
||||
* @author DB
|
||||
* @since 2023/12/04
|
||||
*/
|
||||
@PreAuthorize("@aps.hasPermission('oamTask:task:list')")
|
||||
//@PreAuthorize("@aps.hasPermission('oamTask:task:list')")
|
||||
@ApiOperation("技术模块-今日事务-个人任务分页列表")
|
||||
@GetMapping("/getPersonTaskPage")
|
||||
public R<Page<PersonTaskPageVo>> getPersonTaskPage() {
|
||||
@ -301,15 +298,28 @@ public class TaskTechnologyController {
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 技术模块-今日事务-更新任务进度
|
||||
* @author DB
|
||||
* @since 2023/12/04
|
||||
* @param bo 请求参数
|
||||
* @return R<Void>
|
||||
*/
|
||||
@ApiOperation("技术模块-今日事务-更新任务进度")
|
||||
@PutMapping("/updateTaskProgress")
|
||||
public R<Void> updateTaskProgress(@RequestBody @Validated
|
||||
TaskProgressBo bo) {
|
||||
taskService.updateTaskProgress(bo);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* "技术模块-今日事务-转交任务
|
||||
* @author DB
|
||||
* @since 2023/12/04
|
||||
* @param bo 请求参数
|
||||
* @Description: 修改任务进度
|
||||
* @return: R<Void>
|
||||
* @Author: DB
|
||||
* @Date: 2023/5/29 14:58
|
||||
**/
|
||||
* @return R<Void>
|
||||
*/
|
||||
@ApiOperation("技术模块-今日事务-转交任务")
|
||||
@PutMapping("/updateTaskItem")
|
||||
public R<Void> updateTaskItem(@RequestBody @Validated
|
||||
@ -319,32 +329,42 @@ public class TaskTechnologyController {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param id 主键
|
||||
* @Description: 完成任务
|
||||
* @return: R<Void>
|
||||
* @Author: DB
|
||||
* @Date: 2023/5/31 16:24
|
||||
**/
|
||||
@PreAuthorize("@aps.hasPermission('oamTask:task:update')")
|
||||
@ApiOperation("完成任务")
|
||||
@PutMapping("/finishTask/{id}")
|
||||
public R<Void> finishTask(@PathVariable
|
||||
String id) {
|
||||
taskService.finishTask(id);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 技术模块-数据统计-获取月度任务统计列表
|
||||
* @author DB
|
||||
* @since 2023/12/04
|
||||
* @param bo 请求参数
|
||||
* @Description: 获取月度任务统计列表
|
||||
* @return: R<List < TaskListVo>>
|
||||
* @Author: DB
|
||||
* @Date: 2023/5/15 16:42
|
||||
**/
|
||||
@ApiOperation("获取月度任务统计列表")
|
||||
* @return R<TaskMonthStatisticsVo>
|
||||
*/
|
||||
@ApiOperation("技术模块-数据统计-获取月度任务统计列表")
|
||||
@GetMapping("/getTaskMonthStatistics")
|
||||
public R<TaskMonthStatisticsVo> getTaskMonthStatistics(TaskMonthStatisticsBo bo) {
|
||||
return R.ok(taskService.getTaskMonthStatistics(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 技术模块-数据统计-获取任务日报
|
||||
* @author DB
|
||||
* @since 2023/12/05
|
||||
* @return R<TaskMonthStatisticsVo>
|
||||
*/
|
||||
@ApiOperation("技术模块-数据统计-获取任务日报")
|
||||
@GetMapping("/getTaskDailyPaper")
|
||||
public R<String> getTaskDailyPaper(TaskDailyPaperBo bo) {
|
||||
String dailyPaper = taskService.getTaskDailyPaper(bo);
|
||||
return R.ok(dailyPaper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 技术模块-今日事务-个人绩点
|
||||
* @author DB
|
||||
* @since 2023/12/05
|
||||
* @return R<TaskIndividualGpaVo>
|
||||
*/
|
||||
@ApiOperation("技术模块-今日事务-个人绩点")
|
||||
@GetMapping("/getIndividualGpa")
|
||||
public R<TaskIndividualGpaVo> getIndividualGpa() {
|
||||
TaskIndividualGpaVo vo = taskService.getIndividualGpa();
|
||||
return R.ok(vo);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -45,7 +45,7 @@ public class Task extends BaseEntity implements Serializable {
|
||||
private String responsibleStaffId;
|
||||
|
||||
/**
|
||||
* 任务状态(-1:失败;0:待审核;1:待接受;2:进行中;3:已完成;4:逾期;5:暂停;6:逾期完成;7:接收超时;8:待部署;9:待归档;10:审核不通过)
|
||||
* 任务状态(-1:失败;0:待审核;1:待接受;2:进行中;3:待测试;4:逾期;5:暂停;6:逾期完成;7:接收超时;8:待部署;9:已归档;10:审核不通过)
|
||||
*/
|
||||
private Integer taskStatus;
|
||||
|
||||
@ -54,6 +54,11 @@ public class Task extends BaseEntity implements Serializable {
|
||||
*/
|
||||
private Integer taskItem;
|
||||
|
||||
/**
|
||||
* 任务进度(0:开发文档;1:原型涉及;2:UI涉及;3:前端开发;4:后端开发)
|
||||
*/
|
||||
private String taskProgress;
|
||||
|
||||
/**
|
||||
* 任务内容
|
||||
*/
|
||||
@ -113,7 +118,7 @@ public class Task extends BaseEntity implements Serializable {
|
||||
/**
|
||||
* 转部署时间
|
||||
*/
|
||||
private LocalDateTime toFinishTime;
|
||||
private LocalDateTime toDeployTime;
|
||||
|
||||
/**
|
||||
* 是否删除(0否1是)
|
||||
|
||||
@ -46,4 +46,9 @@ public class TaskStaffGroup extends BaseEntity implements Serializable {
|
||||
*/
|
||||
private Integer gradePoint;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
|
||||
@ -1,13 +1,10 @@
|
||||
package com.cpop.oam.business.service;
|
||||
|
||||
import com.cpop.oam.business.vo.TaskArchivingPagVo;
|
||||
import com.cpop.oam.business.vo.TaskToBeClaimedPageVo;
|
||||
import com.cpop.oam.business.vo.*;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.service.IService;
|
||||
import com.cpop.oam.business.bo.*;
|
||||
import com.cpop.oam.business.entity.Task;
|
||||
import com.cpop.oam.business.vo.PersonTaskPageVo;
|
||||
import com.cpop.oam.business.vo.TaskMonthStatisticsVo;
|
||||
|
||||
/**
|
||||
* OAM-任务表 服务层。
|
||||
@ -20,11 +17,10 @@ public interface TaskService extends IService<Task> {
|
||||
/**
|
||||
* 技术模块-任务归档-获取任务归档分页
|
||||
* @author DB
|
||||
* @param subject 主体
|
||||
* @param taskContent 任务内容
|
||||
* @param bo 请求
|
||||
* @since 2023-11-30 21:11:47
|
||||
*/
|
||||
Page<TaskArchivingPagVo> getTaskArchivingPage(String subject, String taskContent, Boolean isFinish);
|
||||
Page<TaskArchivingPagVo> getTaskArchivingPage(TaskArchivingPagBo bo);
|
||||
|
||||
/**
|
||||
* 技术模块-任务归档-设置任务归档
|
||||
@ -77,12 +73,11 @@ public interface TaskService extends IService<Task> {
|
||||
Page<PersonTaskPageVo> getPersonTaskPage();
|
||||
|
||||
/**
|
||||
* @Description: 修改任务进度
|
||||
* 技术模块-今日事务-转交任务
|
||||
* @author DB
|
||||
* @since 2023/12/04
|
||||
* @param bo 请求参数
|
||||
* @return: R<Void>
|
||||
* @Author: DB
|
||||
* @Date: 2023/5/29 14:58
|
||||
**/
|
||||
*/
|
||||
void updateTaskItem(TaskItemBo bo);
|
||||
|
||||
/**
|
||||
@ -94,21 +89,36 @@ public interface TaskService extends IService<Task> {
|
||||
void updateTaskResponsibleStaff(TransferTaskBo bo);
|
||||
|
||||
/**
|
||||
* @Description: 完成任务
|
||||
* @param id 主键
|
||||
* @return: R<Void>
|
||||
* @Author: DB
|
||||
* @Date: 2023/5/31 16:24
|
||||
**/
|
||||
void finishTask(String id);
|
||||
|
||||
/**
|
||||
* @Description: 获取月度任务统计列表
|
||||
* 技术模块-数据统计-获取月度任务统计列表
|
||||
* @author DB
|
||||
* @since 2023/12/04
|
||||
* @param bo 请求参数
|
||||
* @return: R<List<TaskListVo>>
|
||||
* @Author: DB
|
||||
* @Date: 2023/5/15 16:42
|
||||
**/
|
||||
* @return R<TaskMonthStatisticsVo>
|
||||
*/
|
||||
TaskMonthStatisticsVo getTaskMonthStatistics(TaskMonthStatisticsBo bo);
|
||||
|
||||
/**
|
||||
* 技术模块-今日事务-更新任务进度
|
||||
* @author DB
|
||||
* @since 2023/12/04
|
||||
* @param bo 请求参数
|
||||
*/
|
||||
void updateTaskProgress(TaskProgressBo bo);
|
||||
|
||||
/**
|
||||
* 技术模块-数据统计-获取任务日报
|
||||
* @author DB
|
||||
* @since 2023/12/05
|
||||
* @param bo 请求参数
|
||||
* @return String
|
||||
*/
|
||||
String getTaskDailyPaper(TaskDailyPaperBo bo);
|
||||
|
||||
/**
|
||||
* 技术模块-今日事务-个人绩点
|
||||
* @author DB
|
||||
* @since 2023/12/05
|
||||
* @return TaskIndividualGpaVo
|
||||
*/
|
||||
TaskIndividualGpaVo getIndividualGpa();
|
||||
}
|
||||
|
||||
@ -1,9 +1,8 @@
|
||||
package com.cpop.oam.business.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cpop.oam.business.vo.TaskArchivingPagVo;
|
||||
import com.cpop.oam.business.vo.TaskToBeClaimedPageVo;
|
||||
import com.cpop.system.framework.ws.server.WebSocketServer;
|
||||
import com.cpop.oam.business.service.*;
|
||||
import com.cpop.oam.business.vo.*;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
@ -12,10 +11,7 @@ import com.cpop.common.constant.Constants;
|
||||
import com.cpop.common.utils.DateUtils;
|
||||
import com.cpop.common.utils.StringUtils;
|
||||
import com.cpop.common.utils.bean.BeanUtils;
|
||||
import com.cpop.core.base.entity.LoginUser;
|
||||
import com.cpop.core.base.entity.PageDomain;
|
||||
import com.cpop.core.base.entity.loginInfo.OamStaffLoginInfo;
|
||||
import com.cpop.core.base.enums.UserType;
|
||||
import com.cpop.core.base.exception.ServiceException;
|
||||
import com.cpop.core.base.table.SysConfig;
|
||||
import com.cpop.core.service.CoreService;
|
||||
@ -28,11 +24,6 @@ import com.cpop.oam.business.entity.Staff;
|
||||
import com.cpop.oam.business.entity.Task;
|
||||
import com.cpop.oam.business.entity.TaskStaffGroup;
|
||||
import com.cpop.oam.business.mapper.TaskMapper;
|
||||
import com.cpop.oam.business.service.StaffService;
|
||||
import com.cpop.oam.business.service.TaskService;
|
||||
import com.cpop.oam.business.service.TaskStaffGroupService;
|
||||
import com.cpop.oam.business.vo.PersonTaskPageVo;
|
||||
import com.cpop.oam.business.vo.TaskMonthStatisticsVo;
|
||||
import com.cpop.oam.framework.constant.WebHookKeyConstant;
|
||||
import com.cpop.oam.framework.enums.OamConfigEnum;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -45,13 +36,15 @@ import java.time.format.DateTimeFormatter;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.time.temporal.TemporalAdjusters;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.cpop.oam.business.entity.table.DutyTableDef.DUTY;
|
||||
import static com.cpop.oam.business.entity.table.StaffTableDef.STAFF;
|
||||
import static com.cpop.oam.business.entity.table.TaskDemandTableDef.TASK_DEMAND;
|
||||
import static com.cpop.oam.business.entity.table.TaskStaffGroupTableDef.TASK_STAFF_GROUP;
|
||||
import static com.cpop.oam.business.entity.table.TaskTableDef.TASK;
|
||||
import static com.mybatisflex.core.query.QueryMethods.groupConcat;
|
||||
import static com.mybatisflex.core.query.QueryMethods.*;
|
||||
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@ -66,14 +59,12 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
||||
|
||||
/**
|
||||
* 技术模块-任务归档-获取任务归档分页
|
||||
*
|
||||
* @param subject 品主体牌名
|
||||
* @param taskContent 任务内容
|
||||
* @author DB
|
||||
* @param bo 请求
|
||||
* @since 2023-11-30 21:11:47
|
||||
*/
|
||||
@Override
|
||||
public Page<TaskArchivingPagVo> getTaskArchivingPage(String subject, String taskContent, Boolean isFinish) {
|
||||
public Page<TaskArchivingPagVo> getTaskArchivingPage(TaskArchivingPagBo bo) {
|
||||
// 获取当前员工
|
||||
JSONObject loginUserInfo = SecurityUtils.getInstance().getLoginUserInfo();
|
||||
PageDomain pageDomain = SqlUtils.getInstance().getPageDomain();
|
||||
@ -86,15 +77,14 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
||||
TASK.TASK_RECEIPT_TIME,
|
||||
TASK.TEST_TO_FINISH_URL,
|
||||
TASK.TO_TEST_TIME,
|
||||
TASK.TO_FINISH_TIME,
|
||||
TASK.SUBJECT)
|
||||
.select(TASK_STAFF_GROUP.GRADE_POINT)
|
||||
.from(TASK)
|
||||
.leftJoin(TASK_STAFF_GROUP)
|
||||
.on(TASK_STAFF_GROUP.TASK_ID.eq(TASK.ID))
|
||||
.where(TASK_STAFF_GROUP.STAFF_ID.eq(loginUserInfo.getString("id")))
|
||||
.and(TASK.TASK_STATUS.eq(isFinish ? 8 : 9).and(TASK.TASK_CONTENT.like(taskContent)))
|
||||
.and(TASK.SUBJECT.like(subject)),
|
||||
.and(TASK.TASK_STATUS.eq(bo.getIsFinish() ? 8 : 9).and(TASK.TASK_CONTENT.like(bo.getTaskContent())))
|
||||
.and(TASK.SUBJECT.like(bo.getSubject())),
|
||||
TaskArchivingPagVo.class,
|
||||
// 负责人
|
||||
item -> item.field(TaskArchivingPagVo::getResponsibleStaffName)
|
||||
@ -124,7 +114,8 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
||||
public void setTaskArchiving(String taskId) {
|
||||
this.updateChain()
|
||||
.set(TASK.TASK_STATUS, 9)
|
||||
.set(TASK.TO_FINISH_TIME, LocalDateTime.now())
|
||||
.set(TASK.TASK_ITEM, 3)
|
||||
.set(TASK.COMPLETION_DATE, LocalDate.now())
|
||||
.where(TASK.ID.eq(taskId))
|
||||
.update();
|
||||
}
|
||||
@ -347,7 +338,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
||||
return this.mapper.paginateAs(pageDomain.getPageNum(),
|
||||
pageDomain.getPageSize(),
|
||||
QueryWrapper.create()
|
||||
.select(TASK.ID, TASK.TASK_STATUS, TASK.TASK_CONTENT, TASK.TASK_ITEM, TASK.TASK_RATING, TASK.TASK_RECEIPT_TIME, TASK.EXPECTED_COMPLETION_DATE)
|
||||
.select(TASK.ID, TASK.TASK_STATUS, TASK.TASK_CONTENT, TASK.TASK_ITEM, TASK.TASK_RATING, TASK.TASK_RECEIPT_TIME, TASK.EXPECTED_COMPLETION_DATE, TASK.TASK_PROGRESS, TASK.SUBJECT)
|
||||
.select(STAFF.NAME.as(PersonTaskPageVo::getResponsibleStaffName))
|
||||
//个人绩点
|
||||
.select(TASK_STAFF_GROUP.GRADE_POINT)
|
||||
@ -367,16 +358,76 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
||||
}
|
||||
|
||||
/**
|
||||
* "技术模块-今日事务-转交任务
|
||||
*
|
||||
* @param bo 请求参数
|
||||
* @Description: 修改任务进度
|
||||
* @return: R<Void>
|
||||
* @Author: DB
|
||||
* @Date: 2023/5/29 14:58
|
||||
**/
|
||||
* @author DB
|
||||
* @since 2023/12/04
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateTaskItem(TaskItemBo bo) {
|
||||
isTaskResponsibleStaff(bo.getId());
|
||||
this.updateChain().set(TASK.TASK_ITEM, bo.getTaskItem()).where(TASK.ID.eq(bo.getId())).update();
|
||||
//查询任务进度
|
||||
Task task = this.getById(bo.getId());
|
||||
if (bo.getTaskItem() == 0) {
|
||||
if (task.getTaskProgress() == null || task.getTaskProgress().split(",").length < 5) {
|
||||
throw new ServiceException("当前任务的进度尚未完全完成,不允许转交");
|
||||
}
|
||||
LocalDate now = LocalDate.now();
|
||||
LocalDate expectedCompletionDate = task.getExpectedCompletionDate();
|
||||
long day = expectedCompletionDate.until(now, ChronoUnit.DAYS);
|
||||
// 逾期完成
|
||||
if (day > 0) {
|
||||
task.setTaskStatus(6);
|
||||
//扣除绩点
|
||||
deductGradePoint(day, bo.getId());
|
||||
} else {
|
||||
task.setTaskStatus(3);
|
||||
}
|
||||
task.setToTestTime(LocalDateTime.now());
|
||||
}
|
||||
if (bo.getTaskItem() == 1) {
|
||||
if (StringUtils.isBlank(bo.getTestToFinishUrl())) {
|
||||
throw new ServiceException("当前任务未提交测试部署相关文件,不允许转交");
|
||||
}
|
||||
task.setToDeployTime(LocalDateTime.now())
|
||||
.setTaskStatus(8);
|
||||
}
|
||||
this.updateById(task);
|
||||
}
|
||||
|
||||
/**
|
||||
* 逾期扣除绩点
|
||||
*
|
||||
* @param day 逾期日期
|
||||
* @param taskId 任务id
|
||||
* @author DB
|
||||
* @since 2023/12/04
|
||||
*/
|
||||
private void deductGradePoint(Long day, String taskId) {
|
||||
//获取所有参与员工的绩点列表
|
||||
TaskStaffGroupService taskStaffGroupService = SpringUtils.getBean(TaskStaffGroupService.class);
|
||||
List<TaskStaffGroup> taskStaffGroups = taskStaffGroupService.queryChain().where(TASK_STAFF_GROUP.TASK_ID.eq(taskId)).list();
|
||||
//逾期完成3天内只计算有效绩点的80%
|
||||
if (day < 3) {
|
||||
//3天以上50%
|
||||
taskStaffGroups.forEach(item -> {
|
||||
//向下取整
|
||||
Integer oldGradePoint = item.getGradePoint();
|
||||
double deductGradePoint = Math.floor(item.getGradePoint() * 0.8);
|
||||
item.setGradePoint(oldGradePoint - (int) deductGradePoint).setRemark("任务完成超时扣除绩点:" + deductGradePoint);
|
||||
});
|
||||
} else {
|
||||
//3天以上50%
|
||||
taskStaffGroups.forEach(item -> {
|
||||
//向下取整
|
||||
Integer oldGradePoint = item.getGradePoint();
|
||||
double deductGradePoint = Math.floor(item.getGradePoint() * 0.5);
|
||||
item.setGradePoint(oldGradePoint - (int) deductGradePoint).setRemark("任务完成超时扣除绩点:" + deductGradePoint);
|
||||
});
|
||||
}
|
||||
taskStaffGroupService.updateBatch(taskStaffGroups);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -431,74 +482,25 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
||||
private void isTaskResponsibleStaff(String taskId) {
|
||||
// 获取任务
|
||||
Task task = this.getById(taskId);
|
||||
// 当前操作员工是否是主要负责人,不是抛出异常
|
||||
LoginUser loginUser = SecurityUtils.getInstance().getLoginUser();
|
||||
// 读取员工信息
|
||||
RedisService redisService = SpringUtils.getBean(RedisService.class);
|
||||
JSONObject cacheObject = redisService.getCacheObject(UserType.OAM_USER.getKey() + loginUser.getUsername());
|
||||
OamStaffLoginInfo loginInfo = cacheObject.getJSONObject("user").toJavaObject(OamStaffLoginInfo.class);
|
||||
if (!StringUtils.equals(task.getResponsibleStaffId(), loginInfo.getId())) {
|
||||
JSONObject loginUserInfo = SecurityUtils.getInstance().getLoginUserInfo();
|
||||
if (!StringUtils.equals(task.getResponsibleStaffId(), loginUserInfo.getString("id"))) {
|
||||
throw new ServiceException("当前操作员工不是当前任务主要负责人,不允许操作当前任务!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param id 主键
|
||||
* @Description: 完成任务
|
||||
* @return: R<Void>
|
||||
* @Author: DB
|
||||
* @Date: 2023/5/31 16:24
|
||||
**/
|
||||
@Override
|
||||
public void finishTask(String id) {
|
||||
// 查询任务相关信息
|
||||
Task task = this.getById(id);
|
||||
if (task == null) {
|
||||
throw new ServiceException("获取任务失败,请联系相关人员!");
|
||||
}
|
||||
if (task.getTaskItem() != 3) {
|
||||
throw new ServiceException("当前任务没有归档,请归档后再进行完成操作!");
|
||||
}
|
||||
// 判断完成任务日期
|
||||
LocalDate now = LocalDate.now();
|
||||
LocalDate expectedCompletionDate = task.getExpectedCompletionDate();
|
||||
long day = now.until(expectedCompletionDate, ChronoUnit.DAYS);
|
||||
// 逾期完成
|
||||
if (day < 0) {
|
||||
task.setTaskStatus(6);
|
||||
} else {
|
||||
task.setTaskStatus(3);
|
||||
}
|
||||
task.setCompletionDate(now);
|
||||
this.updateById(task);
|
||||
}
|
||||
|
||||
/**
|
||||
* 技术模块-数据统计-获取月度任务统计列表
|
||||
*
|
||||
* @param bo 请求参数
|
||||
* @Description: 获取月度任务统计列表
|
||||
* @return: R<List < TaskListVo>>
|
||||
* @Author: DB
|
||||
* @Date: 2023/5/15 16:42
|
||||
**/
|
||||
* @return R<TaskMonthStatisticsVo>
|
||||
* @author DB
|
||||
* @since 2023/12/04
|
||||
*/
|
||||
@Override
|
||||
public TaskMonthStatisticsVo getTaskMonthStatistics(TaskMonthStatisticsBo bo) {
|
||||
// 员工组绩点信息
|
||||
List<TaskStaffGroup> taskStaffGroups = null;
|
||||
// 读取员工信息
|
||||
JSONObject loginUserInfo = SecurityUtils.getInstance().getLoginUserInfo();
|
||||
QueryWrapper queryWrapper = QueryWrapper.create();
|
||||
if (!Constants.SUPER_ADMIN.equals(loginUserInfo.getString("userName"))) {
|
||||
// 查询个人涉及到的任务
|
||||
TaskStaffGroupService taskStaffGroupService = SpringUtils.getBean(TaskStaffGroupService.class);
|
||||
taskStaffGroups = taskStaffGroupService
|
||||
.list(QueryWrapper.create().where(TASK_STAFF_GROUP.STAFF_ID.eq(loginUserInfo.getString("id"))));
|
||||
if (!taskStaffGroups.isEmpty()) {
|
||||
queryWrapper.and(
|
||||
TASK.ID.in(taskStaffGroups.stream().map(TaskStaffGroup::getTaskId).collect(Collectors.toSet())));
|
||||
}
|
||||
if (taskStaffGroups.isEmpty()) {
|
||||
return new TaskMonthStatisticsVo();
|
||||
}
|
||||
if(StringUtils.isNotBlank(bo.getTechnologyStaffId())){
|
||||
queryWrapper.and(TASK_STAFF_GROUP.STAFF_ID.eq(bo.getTechnologyStaffId()));
|
||||
}
|
||||
LocalDate firstDay;
|
||||
if (StringUtils.isNotBlank(bo.getTaskMoth())) {
|
||||
@ -512,12 +514,19 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
||||
LocalDate now = LocalDate.now();
|
||||
firstDay = now.with(TemporalAdjusters.firstDayOfMonth());
|
||||
}
|
||||
List<Task> taskList = this.list(queryWrapper.select(TASK.ALL_COLUMNS)
|
||||
//查询当月所有任务
|
||||
List<Task> taskList = this.list(queryWrapper.select(distinct(TASK.TASK_STATUS, TASK.ID, TASK.TASK_RECEIPT_TIME, TASK.TASK_CONTENT, TASK.EXPECTED_COMPLETION_DATE))
|
||||
.leftJoin(TASK_STAFF_GROUP).on(TASK_STAFF_GROUP.TASK_ID.eq(TASK.ID))
|
||||
.and(TASK.EXPECTED_COMPLETION_DATE.ge(firstDay))
|
||||
.and(TASK.TASK_TYPE.in(0, 1))
|
||||
.and(TASK.TASK_STATUS.in(2, 3, 4, 6, 8, 9))
|
||||
.groupBy(TASK.ID)
|
||||
.orderBy(TASK.EXPECTED_COMPLETION_DATE.asc()));
|
||||
if (taskList.isEmpty()) {
|
||||
return new TaskMonthStatisticsVo();
|
||||
}
|
||||
List<TaskStaffGroup> taskStaffGroups = SpringUtils.getBean(TaskStaffGroupService.class).queryChain()
|
||||
.where(TASK_STAFF_GROUP.TASK_ID.in(taskList.stream().map(Task::getId).collect(Collectors.toSet()))).list();
|
||||
return buildMonthTaskStatistics(taskList, bo, taskStaffGroups);
|
||||
}
|
||||
|
||||
@ -528,36 +537,24 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
||||
* @Author: DB
|
||||
* @Date: 2023/5/15 17:54
|
||||
**/
|
||||
private TaskMonthStatisticsVo buildMonthTaskStatistics(List<Task> taskList, TaskMonthStatisticsBo bo,
|
||||
List<TaskStaffGroup> taskStaffGroups) {
|
||||
private TaskMonthStatisticsVo buildMonthTaskStatistics(List<Task> taskList, TaskMonthStatisticsBo bo, List<TaskStaffGroup> taskStaffGroups) {
|
||||
TaskMonthStatisticsVo statisticsVo = new TaskMonthStatisticsVo();
|
||||
List<TaskMonthStatisticsVo.DataStatisticsVo> vos = new ArrayList<>();
|
||||
statisticsVo.setVos(vos);
|
||||
// 统计数据
|
||||
// 进行中运营人员
|
||||
statisticsVo.setInProgress(taskList.stream().filter(s -> 2 == s.getTaskStatus()).count());
|
||||
// 已完成
|
||||
Set<String> finishTaskSet =
|
||||
taskList.stream().filter(s -> 3 == s.getTaskStatus()).map(Task::getId).collect(Collectors.toSet());
|
||||
statisticsVo.setVos(vos);
|
||||
// 进行中(进行中)
|
||||
statisticsVo.setInProgress(taskList.stream().filter(s -> s.getTaskStatus() == 2).count());
|
||||
// 已完成(待部署或已归档)
|
||||
Set<String> finishTaskSet = taskList.stream().filter(s -> s.getTaskStatus() == 8 || s.getTaskStatus() == 9).map(Task::getId).collect(Collectors.toSet());
|
||||
statisticsVo.setHaveCompleted(Long.parseLong(String.valueOf(finishTaskSet.size())));
|
||||
// 已逾期
|
||||
statisticsVo.setOverdue(taskList.stream().filter(s -> 4 == s.getTaskStatus()).count());
|
||||
// 暂停
|
||||
statisticsVo.setPause(taskList.stream().filter(s -> 5 == s.getTaskStatus()).count());
|
||||
// 逾期完成
|
||||
statisticsVo.setOverdueCompletion(taskList.stream().filter(s -> 6 == s.getTaskStatus()).count());
|
||||
// 逾期完成
|
||||
Set<String> overdueCompletionSet =
|
||||
taskList.stream().filter(s -> 6 == s.getTaskStatus()).map(Task::getId).collect(Collectors.toSet());
|
||||
// 已逾期(正常逾期与接收逾期)
|
||||
statisticsVo.setOverdue(taskList.stream().filter(s -> s.getTaskStatus() == 4 || s.getTaskStatus() == 7).count());
|
||||
// 测试中(正常测试与逾期完成)
|
||||
statisticsVo.setInTest(taskList.stream().filter(s -> s.getTaskStatus() == 3 || s.getTaskStatus() == 6).count());
|
||||
if (null != taskStaffGroups) {
|
||||
// 统计绩点(计算已完成的和逾期完成)
|
||||
Long finishGpa = statisticalGPA(taskStaffGroups.stream()
|
||||
.filter(s -> finishTaskSet.contains(s.getTaskId()))
|
||||
.collect(Collectors.toList()));
|
||||
Long overdueCompletionGpa = statisticalGPA(taskStaffGroups.stream()
|
||||
.filter(s -> overdueCompletionSet.contains(s.getTaskId()))
|
||||
.collect(Collectors.toList()));
|
||||
statisticsVo.setGpaOfTheMonth(finishGpa + overdueCompletionGpa);
|
||||
// 已完成(待部署或已归档)
|
||||
Long finishGpa = statisticalGpa(taskStaffGroups.stream().filter(s -> finishTaskSet.contains(s.getTaskId())).collect(Collectors.toList()));
|
||||
statisticsVo.setGpaOfTheMonth(finishGpa);
|
||||
}
|
||||
List<Date> allTheDateOfMonth;
|
||||
// 有传入月份
|
||||
@ -575,7 +572,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
||||
taskList.forEach(task -> {
|
||||
// 接受时间
|
||||
LocalDate date = task.getTaskReceiptTime().toLocalDate();
|
||||
if (localDate.compareTo(date) >= 0 && localDate.compareTo(task.getExpectedCompletionDate()) <= 0) {
|
||||
if (!localDate.isBefore(date) && !localDate.isAfter(task.getExpectedCompletionDate())) {
|
||||
taskContents.add(task.getTaskContent());
|
||||
}
|
||||
});
|
||||
@ -593,7 +590,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
||||
* @Author: DB
|
||||
* @Date: 2023/5/29 18:24
|
||||
**/
|
||||
private Long statisticalGPA(List<TaskStaffGroup> taskStaffGroups) {
|
||||
private Long statisticalGpa(List<TaskStaffGroup> taskStaffGroups) {
|
||||
// 获取任务
|
||||
if (null != taskStaffGroups) {
|
||||
return taskStaffGroups.stream().mapToLong(TaskStaffGroup::getGradePoint).sum();
|
||||
@ -601,4 +598,122 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
||||
return 0L;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 技术模块-今日事务-更新任务进度
|
||||
*
|
||||
* @param bo 请求参数
|
||||
* @author DB
|
||||
* @since 2023/12/04
|
||||
*/
|
||||
@Override
|
||||
public void updateTaskProgress(TaskProgressBo bo) {
|
||||
this.updateChain().set(TASK.TASK_PROGRESS, bo.getTaskProgress()).where(TASK.ID.eq(bo.getId())).update();
|
||||
}
|
||||
|
||||
/**
|
||||
* 技术模块-数据统计-获取任务日报
|
||||
* @author DB
|
||||
* @since 2023/12/05
|
||||
* @param bo 请求参数
|
||||
* @return String
|
||||
*/
|
||||
@Override
|
||||
public String getTaskDailyPaper(TaskDailyPaperBo bo) {
|
||||
//获取当前日期的任务
|
||||
List<Task> taskList = this.list(QueryWrapper.create().select(distinct(TASK.TASK_STATUS, TASK.ID, TASK.TASK_RECEIPT_TIME, TASK.TASK_CONTENT, TASK.EXPECTED_COMPLETION_DATE))
|
||||
.leftJoin(TASK_STAFF_GROUP).on(TASK_STAFF_GROUP.TASK_ID.eq(TASK.ID))
|
||||
.and(dateFormat(TASK.TASK_RECEIPT_TIME, "%Y-%m-%d").le(bo.getDate()))
|
||||
.and(TASK.EXPECTED_COMPLETION_DATE.ge(bo.getDate()))
|
||||
.and(TASK.TASK_TYPE.in(0, 1))
|
||||
.and(TASK.TASK_STATUS.in(2, 3, 4, 6, 8, 9))
|
||||
.groupBy(TASK.ID)
|
||||
.orderBy(TASK.EXPECTED_COMPLETION_DATE.asc()));
|
||||
if (taskList.isEmpty()){
|
||||
return "";
|
||||
}
|
||||
//获取任务所属成员
|
||||
Map<String, List<TaskStaffGroup>> taskStaffGroupMap = SpringUtils.getBean(TaskStaffGroupService.class).queryChain()
|
||||
.where(TASK_STAFF_GROUP.TASK_ID.in(taskList.stream().map(Task::getId).collect(Collectors.toSet())))
|
||||
.list()
|
||||
.stream().collect(Collectors.groupingBy(TaskStaffGroup::getTaskId));
|
||||
return createDailyPaper(taskList, taskStaffGroupMap);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建日报
|
||||
* @author DB
|
||||
* @since 2023/12/05
|
||||
* @param taskList 任务列表
|
||||
* @param taskStaffGroupMap 任务员工组map
|
||||
* @return String
|
||||
*/
|
||||
private String createDailyPaper(List<Task> taskList, Map<String, List<TaskStaffGroup>> taskStaffGroupMap) {
|
||||
//所有技术员工信息
|
||||
Map<String, Staff> staffMap = SpringUtils.getBean(StaffService.class).queryChain().where(STAFF.STAFF_TYPE.eq(0)).list()
|
||||
.stream().collect(Collectors.toMap(Staff::getId, item -> item));
|
||||
StringBuilder dailyPaper = new StringBuilder();
|
||||
dailyPaper.append("开发:\n");
|
||||
AtomicReference<Integer> start = new AtomicReference<>(1);
|
||||
DateTimeFormatter yyyyMMddHHmmss = DateTimeFormatter.ofPattern("yyyy-MM-dd HH-mm-ss");
|
||||
DateTimeFormatter yyyyMMdd = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||
taskList.forEach(item -> {
|
||||
//负责员工信息
|
||||
String staffGroupInfo = taskStaffGroupMap.get(item.getId()).stream().map(inner -> staffMap.get(inner.getStaffId()).getName()).collect(Collectors.joining(","));
|
||||
//首行
|
||||
dailyPaper.append(start.get()).append(":").append(item.getTaskContent()).append("\n")
|
||||
//负责人
|
||||
.append("负责人:").append(staffMap.get(item.getResponsibleStaffId()).getName()).append("(").append(staffGroupInfo).append(")").append("\n")
|
||||
//进度
|
||||
.append("目前进度:").append(item.getTaskProgress() == null ? 0 : item.getTaskProgress().split(",").length * 20).append("%\n")
|
||||
//开始时间
|
||||
.append("开始时间:").append(item.getTaskReceiptTime().format(yyyyMMddHHmmss)).append("\n")
|
||||
//预计完成日期
|
||||
.append("预计完成日期:").append(item.getExpectedCompletionDate().format(yyyyMMdd)).append("\n");
|
||||
start.getAndSet(start.get() + 1);
|
||||
});
|
||||
return dailyPaper.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 技术模块-今日事务-个人绩点
|
||||
* @author DB
|
||||
* @since 2023/12/05
|
||||
* @return TaskIndividualGpaVo
|
||||
*/
|
||||
@Override
|
||||
public TaskIndividualGpaVo getIndividualGpa() {
|
||||
//获取当前用户信息
|
||||
JSONObject loginUserInfo = SecurityUtils.getInstance().getLoginUserInfo();
|
||||
LocalDate now = LocalDate.now();
|
||||
// 获取目标月的第一天
|
||||
LocalDate firstDay = now.with(TemporalAdjusters.firstDayOfMonth());
|
||||
// 获取目标月的最后一天
|
||||
LocalDate lastDay = now.with(TemporalAdjusters.lastDayOfMonth());
|
||||
List<TaskIndividualGpaVo.IndividualGpa> individualGpas = this.listAs(QueryWrapper.create()
|
||||
.select(TASK.ID, TASK.TASK_CONTENT,TASK.TASK_STATUS)
|
||||
.select(TASK_STAFF_GROUP.GRADE_POINT, TASK_STAFF_GROUP.REMARK)
|
||||
.leftJoin(TASK_STAFF_GROUP).on(TASK_STAFF_GROUP.TASK_ID.eq(TASK.ID))
|
||||
.where(TASK.TASK_STATUS.in(2, 3, 4, 5, 6, 7, 8, 9))
|
||||
.and(TASK_STAFF_GROUP.STAFF_ID.eq(loginUserInfo.getString("id")))
|
||||
//获取当月绩点
|
||||
.and(TASK.COMPLETION_DATE.between(firstDay, lastDay))
|
||||
, TaskIndividualGpaVo.IndividualGpa.class);
|
||||
TaskIndividualGpaVo vo = new TaskIndividualGpaVo();
|
||||
if (individualGpas.isEmpty()) {
|
||||
return vo;
|
||||
}
|
||||
//绩点详情
|
||||
vo.setGpa(individualGpas);
|
||||
//获取当天值班信息
|
||||
WorkOrderDutyVo workOrderDuty = SpringUtils.getBean(TaskWorkOrderService.class).getWorkOrderDutyStaff();
|
||||
vo.setDutyVo(workOrderDuty);
|
||||
//已完成
|
||||
vo.setHaveFinished(individualGpas.stream().filter(item -> item.getTaskStatus() == 8 || item.getTaskStatus() == 9)
|
||||
.mapToInt(TaskIndividualGpaVo.IndividualGpa::getGradePoint).sum());
|
||||
//待完成
|
||||
vo.setToBeCompleted(individualGpas.stream().filter(item -> item.getTaskStatus() != 8 && item.getTaskStatus() != 9)
|
||||
.mapToInt(TaskIndividualGpaVo.IndividualGpa::getGradePoint).sum());
|
||||
return vo;
|
||||
}
|
||||
}
|
||||
|
||||
@ -41,7 +41,6 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import java.io.IOException;
|
||||
import java.sql.Date;
|
||||
import java.text.ParseException;
|
||||
import java.time.Duration;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
@ -567,15 +566,8 @@ public class TaskWorkOrderServiceImpl extends ServiceImpl<TaskWorkOrderMapper, T
|
||||
// 设置工单完成
|
||||
TaskService taskService = SpringUtils.getBean(TaskService.class);
|
||||
Task task = taskService.getOne(QueryWrapper.create().where(TASK.ID.eq(taskWorkOrder.getTaskId())));
|
||||
// 超时设置逾期
|
||||
if (Duration.between(finishTime, task.getTaskReceiptTime()).toMillis() >= 4800000
|
||||
|| Duration.between(finishTime, taskWorkOrder.getPauseExpireTime()).toMillis() >= 4800000) {
|
||||
// 工单正常与暂停期间完成
|
||||
task.setTaskStatus(3);
|
||||
} else {
|
||||
task.setTaskStatus(6);
|
||||
}
|
||||
task.setTaskItem(3);
|
||||
//直接设置完成
|
||||
task.setTaskItem(3).setTaskStatus(9);
|
||||
task.setCompletionDate(LocalDate.now());
|
||||
taskService.updateById(task);
|
||||
// 更新工单
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.cpop.oam.business.vo;
|
||||
|
||||
import com.cpop.core.annontation.StringArrayConvert;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
@ -9,6 +10,7 @@ import lombok.experimental.Accessors;
|
||||
import java.io.Serializable;
|
||||
import java.sql.Timestamp;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* Description:
|
||||
@ -47,6 +49,19 @@ public class PersonTaskPageVo implements Serializable {
|
||||
@ApiModelProperty("任务项(0:待开发;1:待测试:2:待部署;3:已归档)")
|
||||
private Integer taskItem;
|
||||
|
||||
/**
|
||||
* 任务项(0:待开发;1:待测试:2:待部署;3:已归档)
|
||||
*/
|
||||
@StringArrayConvert
|
||||
@ApiModelProperty("任务进度(0:开发文档;1:原型涉及;2:UI涉及;3:前端开发;4:后端开发)")
|
||||
private String taskProgress;
|
||||
|
||||
/**
|
||||
* 主体
|
||||
*/
|
||||
@ApiModelProperty("主体")
|
||||
private String subject;
|
||||
|
||||
/**
|
||||
* 任务内容
|
||||
*/
|
||||
@ -77,5 +92,5 @@ public class PersonTaskPageVo implements Serializable {
|
||||
*/
|
||||
@ApiModelProperty("任务接收时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Timestamp taskReceiptTime;
|
||||
private LocalDateTime taskReceiptTime;
|
||||
}
|
||||
|
||||
@ -8,7 +8,7 @@ import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.sql.Timestamp;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -65,7 +65,7 @@ public class RolePageVo implements Serializable {
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
|
||||
@ApiModelProperty("更新时间")
|
||||
private Timestamp updateTime;
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 角色所属菜单id集合
|
||||
|
||||
@ -0,0 +1,88 @@
|
||||
package com.cpop.oam.business.vo;
|
||||
|
||||
import com.cpop.oam.business.entity.TaskStaffGroup;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author DB
|
||||
* @version 1.0.0
|
||||
* @since 2023-12-05 17:34
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value = "个人绩点对象", description = "个人绩点对象")
|
||||
public class TaskIndividualGpaVo {
|
||||
|
||||
/**
|
||||
* 值班信息
|
||||
*/
|
||||
@ApiModelProperty(value = "值班信息")
|
||||
private WorkOrderDutyVo dutyVo;
|
||||
|
||||
/**
|
||||
* 已完成
|
||||
*/
|
||||
@ApiModelProperty(value = "已完成")
|
||||
private Integer haveFinished;
|
||||
|
||||
/**
|
||||
* 待完成
|
||||
*/
|
||||
@ApiModelProperty(value = "待完成")
|
||||
private Integer toBeCompleted;
|
||||
|
||||
/**
|
||||
* 个人绩点
|
||||
*/
|
||||
@ApiModelProperty(value = "个人绩点")
|
||||
private List<IndividualGpa> gpa;
|
||||
|
||||
/**
|
||||
* 个人绩点
|
||||
*
|
||||
* @author DB
|
||||
* @since 2023/12/05
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class IndividualGpa {
|
||||
|
||||
/**
|
||||
* 任务状态
|
||||
*/
|
||||
@ApiModelProperty(value = "任务状态")
|
||||
private Integer taskStatus;
|
||||
|
||||
/**
|
||||
* 任务id
|
||||
*/
|
||||
@ApiModelProperty(value = "任务")
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 任务内容
|
||||
*/
|
||||
@ApiModelProperty(value = "任务内容")
|
||||
private String taskContent;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 绩点
|
||||
*/
|
||||
@ApiModelProperty(value = "绩点")
|
||||
private Integer gradePoint;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -35,24 +35,18 @@ public class TaskMonthStatisticsVo implements Serializable {
|
||||
@ApiModelProperty(value = "已完成")
|
||||
private Long haveCompleted = 0L;
|
||||
|
||||
/**
|
||||
* 测试中
|
||||
*/
|
||||
@ApiModelProperty(value = "测试中")
|
||||
private Long inTest = 0L;
|
||||
|
||||
/**
|
||||
* 已逾期
|
||||
*/
|
||||
@ApiModelProperty(value = "已逾期")
|
||||
private Long overdue = 0L;
|
||||
|
||||
/**
|
||||
* 暂停
|
||||
*/
|
||||
@ApiModelProperty(value = "暂停")
|
||||
private Long pause = 0L;
|
||||
|
||||
/**
|
||||
* 逾期完成
|
||||
*/
|
||||
@ApiModelProperty(value = "逾期完成")
|
||||
private Long overdueCompletion = 0L;
|
||||
|
||||
/**
|
||||
* 当月绩点
|
||||
*/
|
||||
|
||||
@ -6,7 +6,8 @@ import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import com.cpop.core.annontation.StringArrayConvert;
|
||||
|
||||
/**
|
||||
@ -74,5 +75,5 @@ public class TaskWorkOrderRecordListVo {
|
||||
*/
|
||||
@ApiModelProperty("创建时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Timestamp createTime;
|
||||
private LocalDateTime createTime;
|
||||
}
|
||||
|
||||
@ -39,12 +39,12 @@ public class WorkOrderAcceptOverTimeTask implements Job {
|
||||
TaskStaffGroupService taskStaffGroupService = SpringUtils.getBean(TaskStaffGroupService.class);
|
||||
taskStaffGroupService.updateChain()
|
||||
.set(TASK_STAFF_GROUP.GRADE_POINT, -5)
|
||||
.set(TASK_STAFF_GROUP.REMARK, "工单接收超时扣除5绩点 ")
|
||||
.where(TASK_STAFF_GROUP.TASK_ID.eq(task.getId())
|
||||
.and(TASK_STAFF_GROUP.STAFF_ID.eq(task.getResponsibleStaffId())));
|
||||
// 更新任务为接收超时
|
||||
taskService.updateChain()
|
||||
.set(TASK.TASK_STATUS, 7)
|
||||
.set(TASK.REMARK, "工单接收超时扣除5绩点 ")
|
||||
.where(TASK.ID.eq(task.getId()))
|
||||
.update();
|
||||
}
|
||||
|
||||
@ -34,13 +34,13 @@ public class WorkOrderOvertimeTask implements Job {
|
||||
// 扣除5点绩点
|
||||
TaskStaffGroupService taskStaffGroupService = SpringUtils.getBean(TaskStaffGroupService.class);
|
||||
taskStaffGroupService.updateChain()
|
||||
.setRaw(TASK_STAFF_GROUP.GRADE_POINT, "grade_point - 5")
|
||||
.where(TASK_STAFF_GROUP.TASK_ID.eq(workOrderId));
|
||||
.setRaw(TASK_STAFF_GROUP.GRADE_POINT, "grade_point - 5")
|
||||
.set(TASK_STAFF_GROUP.REMARK, "remark + '工单完结超时扣除5绩点'")
|
||||
.where(TASK_STAFF_GROUP.TASK_ID.eq(workOrderId));
|
||||
// 更新任务为逾期
|
||||
taskService.updateChain()
|
||||
.set(TASK.TASK_STATUS, 4)
|
||||
.set(TASK.REMARK, "remark + '工单完结超时扣除5绩点'")
|
||||
.where(TASK.ID.eq(taskWorkOrder.getTaskId()))
|
||||
.update();
|
||||
.set(TASK.TASK_STATUS, 4)
|
||||
.where(TASK.ID.eq(taskWorkOrder.getTaskId()))
|
||||
.update();
|
||||
}
|
||||
}
|
||||
|
||||
@ -27,4 +27,10 @@ public class DictDataPageBo {
|
||||
*/
|
||||
@ApiModelProperty("字典类型")
|
||||
private String dictType;
|
||||
|
||||
/**
|
||||
* 字典状态
|
||||
*/
|
||||
@ApiModelProperty("字典状态")
|
||||
private Boolean status;
|
||||
}
|
||||
|
||||
@ -91,7 +91,10 @@ public class DictTypeController {
|
||||
if (!dictTypeService.checkDictTypeUnique(bo)) {
|
||||
throw new ServiceException("新增字典'" + bo.getDictName() + "'失败,字典类型已存在");
|
||||
}
|
||||
dictTypeService.save(BeanUtils.mapToClass(bo, DictType.class));
|
||||
LoginUser loginUser = SecurityUtils.getInstance().getLoginUser();
|
||||
DictType dictType = BeanUtils.mapToClass(bo, DictType.class);
|
||||
dictType.setUserType(loginUser.getUserType().toString());
|
||||
dictTypeService.save(dictType);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
@ -20,9 +20,11 @@ import com.cpop.system.business.entity.DictData;
|
||||
import com.cpop.system.business.mapper.DictDataMapper;
|
||||
import com.cpop.system.business.service.DictDataService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.cpop.system.business.entity.table.DictDataTableDef.DICT_DATA;
|
||||
|
||||
@ -49,10 +51,11 @@ public class DictDataServiceImpl extends ServiceImpl<DictDataMapper, DictData> i
|
||||
PageDomain pageDomain = SqlUtils.getInstance().getPageDomain();
|
||||
return this.pageAs(Page.of(pageDomain.getPageNum(), pageDomain.getPageSize()),
|
||||
QueryWrapper.create()
|
||||
.select(DICT_DATA.ID, DICT_DATA.DICT_LABEL, DICT_DATA.DICT_VALUE, DICT_DATA.DICT_TYPE, DICT_DATA.UPDATE_TIME)
|
||||
.select(DICT_DATA.ID, DICT_DATA.DICT_LABEL, DICT_DATA.DICT_VALUE, DICT_DATA.DICT_TYPE, DICT_DATA.UPDATE_TIME,DICT_DATA.STATUS,DICT_DATA.DICT_SORT)
|
||||
.where(DICT_DATA.USER_TYPE.eq(loginUser.getUserType().toString()))
|
||||
.and(DICT_DATA.DICT_TYPE.eq(bo.getDictType()))
|
||||
.and(DICT_DATA.DICT_LABEL.like(bo.getDictLabel()))
|
||||
.and(DICT_DATA.STATUS.eq(bo.getStatus()))
|
||||
.orderBy(DICT_DATA.DICT_SORT.asc()),
|
||||
DictDataPageVo.class);
|
||||
}
|
||||
@ -112,6 +115,10 @@ public class DictDataServiceImpl extends ServiceImpl<DictDataMapper, DictData> i
|
||||
boolean save = this.save(dictData);
|
||||
if (save) {
|
||||
List<DictData> dictDatas = getDictDataByDictType(dictData.getDictType());
|
||||
//判断新增的数据是否在缓存中
|
||||
if (!dictDatas.stream().map(DictData::getId).collect(Collectors.toSet()).contains(dictData.getId())) {
|
||||
dictDatas.add(dictData);
|
||||
}
|
||||
DictUtils.setDictCache(dictData.getDictType(), dictDatas);
|
||||
}
|
||||
}
|
||||
@ -128,7 +135,10 @@ public class DictDataServiceImpl extends ServiceImpl<DictDataMapper, DictData> i
|
||||
boolean save = this.updateById(dictData);
|
||||
if (save) {
|
||||
List<DictData> dictDatas = getDictDataByDictType(dictData.getDictType());
|
||||
DictUtils.setDictCache(dictData.getDictType(), dictDatas);
|
||||
//判断新增的数据是否在缓存中
|
||||
List<DictData> filterList = dictDatas.stream().filter(item -> !StringUtils.equals(item.getId(), dictData.getId())).collect(Collectors.toList());
|
||||
filterList.add(getById(dictData.getId()));
|
||||
DictUtils.setDictCache(dictData.getDictType(), filterList);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -52,7 +52,7 @@ public class DictTypeServiceImpl extends ServiceImpl<DictTypeMapper, DictType> i
|
||||
//获取当前登陆用户类型
|
||||
LoginUser loginUser = SecurityUtils.getInstance().getLoginUser();
|
||||
return this.pageAs(Page.of(pageDomain.getPageNum(), pageDomain.getPageSize()),
|
||||
QueryWrapper.create().select(DICT_TYPE.ID, DICT_TYPE.DICT_NAME, DICT_TYPE.DICT_TYPE_, DICT_TYPE.UPDATE_TIME)
|
||||
QueryWrapper.create().select(DICT_TYPE.ID,DICT_TYPE.STATUS, DICT_TYPE.DICT_NAME, DICT_TYPE.DICT_TYPE_, DICT_TYPE.UPDATE_TIME)
|
||||
.where(DICT_TYPE.USER_TYPE.eq(loginUser.getUserType().toString()))
|
||||
.and(DICT_TYPE.DICT_NAME.like(dictName)),
|
||||
DictTypePageVo.class);
|
||||
|
||||
@ -43,6 +43,18 @@ public class DictDataPageVo {
|
||||
@ApiModelProperty(value = "字典类型")
|
||||
private String dictType;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
@ApiModelProperty(value = "状态")
|
||||
private Boolean status;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
@ApiModelProperty(value = "排序")
|
||||
private Integer dictSort;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
|
||||
@ -4,7 +4,8 @@ import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.joda.time.LocalDateTime;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 字典类型分页
|
||||
@ -34,6 +35,12 @@ public class DictTypePageVo {
|
||||
@ApiModelProperty(value = "字典类型")
|
||||
private String dictType;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
@ApiModelProperty(value = "状态")
|
||||
private Boolean status;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
|
||||
@ -9,6 +9,7 @@ import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.sql.Timestamp;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -65,7 +66,7 @@ public class RolePageVo implements Serializable {
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
|
||||
@ApiModelProperty("更新时间")
|
||||
private Timestamp updateTime;
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 角色所属菜单id集合
|
||||
|
||||
@ -1,9 +1,13 @@
|
||||
package com.cpop.system.framework.utils;
|
||||
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.cpop.common.constant.Constants;
|
||||
import com.cpop.common.utils.StringUtils;
|
||||
import com.cpop.core.base.entity.LoginUser;
|
||||
import com.cpop.core.base.enums.UserType;
|
||||
import com.cpop.core.service.RedisService;
|
||||
import com.cpop.core.utils.SecurityUtils;
|
||||
import com.cpop.core.utils.SpringUtils;
|
||||
import com.cpop.system.business.entity.DictData;
|
||||
import org.springframework.data.redis.cache.RedisCache;
|
||||
@ -39,7 +43,7 @@ public class DictUtils {
|
||||
public static List<DictData> getDictCache(String key) {
|
||||
JSONArray arrayCache = SpringUtils.getBean(RedisService.class).getCacheObject(getCacheKey(key));
|
||||
if (StringUtils.isNotNull(arrayCache)) {
|
||||
return arrayCache.toList(DictData.class);
|
||||
return arrayCache.toJavaList(DictData.class);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -154,6 +158,11 @@ public class DictUtils {
|
||||
* @return 缓存键key
|
||||
*/
|
||||
public static String getCacheKey(String configKey) {
|
||||
return Constants.SYS_DICT_KEY + configKey;
|
||||
LoginUser loginUser = SecurityUtils.getInstance().getLoginUser();
|
||||
if (loginUser == null) {
|
||||
return Constants.SYS_DICT_KEY + UserType.OAM_USER + ":" + configKey;
|
||||
} else {
|
||||
return Constants.SYS_DICT_KEY + loginUser.getUserType() + ":" + configKey;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user