diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java index 9c5a7e6..6fcfac0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java @@ -6,10 +6,15 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.workbench.ApprovalMessageRequest; +import com.casic.missiles.dto.workbench.ApprovalMessageUpdateRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.model.workbench.WorkbenchApprovalMessage; import com.casic.missiles.service.workbench.IWorkbenchApprovalMessageService; +import com.casic.missiles.utils.PageUtil; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; @@ -36,8 +41,23 @@ @ApiOperation("审批提醒列表") @PostMapping("/listPage") @ResponseBody - public ReturnDTO> approvalMessageList(@RequestBody @Valid ApprovalMessageRequest approvalMessageRequest) { + public ReturnDTO> approvalMessageList(@RequestBody @Valid ApprovalMessageRequest approvalMessageRequest) throws Exception { + List list = approvalMessageService.list(approvalMessageRequest); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(approvalMessageService.listPage(page, approvalMessageRequest)); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), list); + return ReturnUtil.success(super.packForBT(pages)); + } + + /** + * 已读状态变更 + */ + @ApiOperation("已读状态变更") + @PostMapping("/updateStatus") + @ResponseBody + public ReturnDTO updateStatus(@RequestBody @Valid ApprovalMessageUpdateRequest updateRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return approvalMessageService.updateStatus(updateRequest); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java index 9c5a7e6..6fcfac0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java @@ -6,10 +6,15 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.workbench.ApprovalMessageRequest; +import com.casic.missiles.dto.workbench.ApprovalMessageUpdateRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.model.workbench.WorkbenchApprovalMessage; import com.casic.missiles.service.workbench.IWorkbenchApprovalMessageService; +import com.casic.missiles.utils.PageUtil; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; @@ -36,8 +41,23 @@ @ApiOperation("审批提醒列表") @PostMapping("/listPage") @ResponseBody - public ReturnDTO> approvalMessageList(@RequestBody @Valid ApprovalMessageRequest approvalMessageRequest) { + public ReturnDTO> approvalMessageList(@RequestBody @Valid ApprovalMessageRequest approvalMessageRequest) throws Exception { + List list = approvalMessageService.list(approvalMessageRequest); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(approvalMessageService.listPage(page, approvalMessageRequest)); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), list); + return ReturnUtil.success(super.packForBT(pages)); + } + + /** + * 已读状态变更 + */ + @ApiOperation("已读状态变更") + @PostMapping("/updateStatus") + @ResponseBody + public ReturnDTO updateStatus(@RequestBody @Valid ApprovalMessageUpdateRequest updateRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return approvalMessageService.updateStatus(updateRequest); } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/PageUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/PageUtil.java new file mode 100644 index 0000000..06d36c5 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/PageUtil.java @@ -0,0 +1,35 @@ +package com.casic.missiles.utils; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 分页工具 + * @Author: wangpeng + * @Date: 2023/4/21 16:28 + */ +public class PageUtil { + public static Page getPages(Integer currentPage, Integer pageSize, List list) { + Page page = new Page(); + int size = list.size(); + if(pageSize > size && 0 != size) { + pageSize = size; + } + // 求出最大页数,防止currentPage越界 + int maxPage = size % pageSize == 0 ? size / pageSize : size / pageSize + 1; + if(currentPage > maxPage) { + currentPage = maxPage; + } + // 当前页第一条数据的下标 + int curIdx = currentPage > 1 ? (currentPage - 1) * pageSize : 0; + List pageList = new ArrayList(); + // 将当前页的数据放进pageList + for(int i = 0; i < pageSize && curIdx + i < size; i++) { + pageList.add(list.get(curIdx + i)); + } + page.setCurrent(currentPage).setSize(pageSize).setTotal(list.size()).setRecords(pageList); + return page; + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java index 9c5a7e6..6fcfac0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java @@ -6,10 +6,15 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.workbench.ApprovalMessageRequest; +import com.casic.missiles.dto.workbench.ApprovalMessageUpdateRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.model.workbench.WorkbenchApprovalMessage; import com.casic.missiles.service.workbench.IWorkbenchApprovalMessageService; +import com.casic.missiles.utils.PageUtil; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; @@ -36,8 +41,23 @@ @ApiOperation("审批提醒列表") @PostMapping("/listPage") @ResponseBody - public ReturnDTO> approvalMessageList(@RequestBody @Valid ApprovalMessageRequest approvalMessageRequest) { + public ReturnDTO> approvalMessageList(@RequestBody @Valid ApprovalMessageRequest approvalMessageRequest) throws Exception { + List list = approvalMessageService.list(approvalMessageRequest); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(approvalMessageService.listPage(page, approvalMessageRequest)); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), list); + return ReturnUtil.success(super.packForBT(pages)); + } + + /** + * 已读状态变更 + */ + @ApiOperation("已读状态变更") + @PostMapping("/updateStatus") + @ResponseBody + public ReturnDTO updateStatus(@RequestBody @Valid ApprovalMessageUpdateRequest updateRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return approvalMessageService.updateStatus(updateRequest); } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/PageUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/PageUtil.java new file mode 100644 index 0000000..06d36c5 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/PageUtil.java @@ -0,0 +1,35 @@ +package com.casic.missiles.utils; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 分页工具 + * @Author: wangpeng + * @Date: 2023/4/21 16:28 + */ +public class PageUtil { + public static Page getPages(Integer currentPage, Integer pageSize, List list) { + Page page = new Page(); + int size = list.size(); + if(pageSize > size && 0 != size) { + pageSize = size; + } + // 求出最大页数,防止currentPage越界 + int maxPage = size % pageSize == 0 ? size / pageSize : size / pageSize + 1; + if(currentPage > maxPage) { + currentPage = maxPage; + } + // 当前页第一条数据的下标 + int curIdx = currentPage > 1 ? (currentPage - 1) * pageSize : 0; + List pageList = new ArrayList(); + // 将当前页的数据放进pageList + for(int i = 0; i < pageSize && curIdx + i < size; i++) { + pageList.add(list.get(curIdx + i)); + } + page.setCurrent(currentPage).setSize(pageSize).setTotal(list.size()).setRecords(pageList); + return page; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageRequest.java index 2ede5a2..90dd7bc 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageRequest.java @@ -14,11 +14,11 @@ @ApiModel @Data public class ApprovalMessageRequest { - @ApiModelProperty(value = "通知的用户id", dataType = "Long") - private Long noticeId; - - @ApiModelProperty(value = "通知的用户部门id", dataType = "Long") - private Long noticeDeptId; +// @ApiModelProperty(value = "通知的用户id", dataType = "Long") +// private Long noticeId; +// +// @ApiModelProperty(value = "通知的用户部门id", dataType = "Long") +// private Long noticeDeptId; @ApiModelProperty(value = "通知开始时间", dataType = "String") private String startTime; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java index 9c5a7e6..6fcfac0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java @@ -6,10 +6,15 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.workbench.ApprovalMessageRequest; +import com.casic.missiles.dto.workbench.ApprovalMessageUpdateRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.model.workbench.WorkbenchApprovalMessage; import com.casic.missiles.service.workbench.IWorkbenchApprovalMessageService; +import com.casic.missiles.utils.PageUtil; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; @@ -36,8 +41,23 @@ @ApiOperation("审批提醒列表") @PostMapping("/listPage") @ResponseBody - public ReturnDTO> approvalMessageList(@RequestBody @Valid ApprovalMessageRequest approvalMessageRequest) { + public ReturnDTO> approvalMessageList(@RequestBody @Valid ApprovalMessageRequest approvalMessageRequest) throws Exception { + List list = approvalMessageService.list(approvalMessageRequest); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(approvalMessageService.listPage(page, approvalMessageRequest)); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), list); + return ReturnUtil.success(super.packForBT(pages)); + } + + /** + * 已读状态变更 + */ + @ApiOperation("已读状态变更") + @PostMapping("/updateStatus") + @ResponseBody + public ReturnDTO updateStatus(@RequestBody @Valid ApprovalMessageUpdateRequest updateRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return approvalMessageService.updateStatus(updateRequest); } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/PageUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/PageUtil.java new file mode 100644 index 0000000..06d36c5 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/PageUtil.java @@ -0,0 +1,35 @@ +package com.casic.missiles.utils; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 分页工具 + * @Author: wangpeng + * @Date: 2023/4/21 16:28 + */ +public class PageUtil { + public static Page getPages(Integer currentPage, Integer pageSize, List list) { + Page page = new Page(); + int size = list.size(); + if(pageSize > size && 0 != size) { + pageSize = size; + } + // 求出最大页数,防止currentPage越界 + int maxPage = size % pageSize == 0 ? size / pageSize : size / pageSize + 1; + if(currentPage > maxPage) { + currentPage = maxPage; + } + // 当前页第一条数据的下标 + int curIdx = currentPage > 1 ? (currentPage - 1) * pageSize : 0; + List pageList = new ArrayList(); + // 将当前页的数据放进pageList + for(int i = 0; i < pageSize && curIdx + i < size; i++) { + pageList.add(list.get(curIdx + i)); + } + page.setCurrent(currentPage).setSize(pageSize).setTotal(list.size()).setRecords(pageList); + return page; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageRequest.java index 2ede5a2..90dd7bc 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageRequest.java @@ -14,11 +14,11 @@ @ApiModel @Data public class ApprovalMessageRequest { - @ApiModelProperty(value = "通知的用户id", dataType = "Long") - private Long noticeId; - - @ApiModelProperty(value = "通知的用户部门id", dataType = "Long") - private Long noticeDeptId; +// @ApiModelProperty(value = "通知的用户id", dataType = "Long") +// private Long noticeId; +// +// @ApiModelProperty(value = "通知的用户部门id", dataType = "Long") +// private Long noticeDeptId; @ApiModelProperty(value = "通知开始时间", dataType = "String") private String startTime; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageUpdateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageUpdateRequest.java new file mode 100644 index 0000000..ba1fba8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageUpdateRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.workbench; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 審批提醒消息请求实体 + * @Author: wangpeng + * @Date: 2023/4/21 16:43 + */ +@ApiModel +@Data +public class ApprovalMessageUpdateRequest { + @NotNull(message = "id不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @NotNull(message = "更新状态不能为空") + @ApiModelProperty(value = "状态(1已读0未读)", dataType = "Integer") + private Integer status; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java index 9c5a7e6..6fcfac0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java @@ -6,10 +6,15 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.workbench.ApprovalMessageRequest; +import com.casic.missiles.dto.workbench.ApprovalMessageUpdateRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.model.workbench.WorkbenchApprovalMessage; import com.casic.missiles.service.workbench.IWorkbenchApprovalMessageService; +import com.casic.missiles.utils.PageUtil; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; @@ -36,8 +41,23 @@ @ApiOperation("审批提醒列表") @PostMapping("/listPage") @ResponseBody - public ReturnDTO> approvalMessageList(@RequestBody @Valid ApprovalMessageRequest approvalMessageRequest) { + public ReturnDTO> approvalMessageList(@RequestBody @Valid ApprovalMessageRequest approvalMessageRequest) throws Exception { + List list = approvalMessageService.list(approvalMessageRequest); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(approvalMessageService.listPage(page, approvalMessageRequest)); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), list); + return ReturnUtil.success(super.packForBT(pages)); + } + + /** + * 已读状态变更 + */ + @ApiOperation("已读状态变更") + @PostMapping("/updateStatus") + @ResponseBody + public ReturnDTO updateStatus(@RequestBody @Valid ApprovalMessageUpdateRequest updateRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return approvalMessageService.updateStatus(updateRequest); } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/PageUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/PageUtil.java new file mode 100644 index 0000000..06d36c5 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/PageUtil.java @@ -0,0 +1,35 @@ +package com.casic.missiles.utils; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 分页工具 + * @Author: wangpeng + * @Date: 2023/4/21 16:28 + */ +public class PageUtil { + public static Page getPages(Integer currentPage, Integer pageSize, List list) { + Page page = new Page(); + int size = list.size(); + if(pageSize > size && 0 != size) { + pageSize = size; + } + // 求出最大页数,防止currentPage越界 + int maxPage = size % pageSize == 0 ? size / pageSize : size / pageSize + 1; + if(currentPage > maxPage) { + currentPage = maxPage; + } + // 当前页第一条数据的下标 + int curIdx = currentPage > 1 ? (currentPage - 1) * pageSize : 0; + List pageList = new ArrayList(); + // 将当前页的数据放进pageList + for(int i = 0; i < pageSize && curIdx + i < size; i++) { + pageList.add(list.get(curIdx + i)); + } + page.setCurrent(currentPage).setSize(pageSize).setTotal(list.size()).setRecords(pageList); + return page; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageRequest.java index 2ede5a2..90dd7bc 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageRequest.java @@ -14,11 +14,11 @@ @ApiModel @Data public class ApprovalMessageRequest { - @ApiModelProperty(value = "通知的用户id", dataType = "Long") - private Long noticeId; - - @ApiModelProperty(value = "通知的用户部门id", dataType = "Long") - private Long noticeDeptId; +// @ApiModelProperty(value = "通知的用户id", dataType = "Long") +// private Long noticeId; +// +// @ApiModelProperty(value = "通知的用户部门id", dataType = "Long") +// private Long noticeDeptId; @ApiModelProperty(value = "通知开始时间", dataType = "String") private String startTime; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageUpdateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageUpdateRequest.java new file mode 100644 index 0000000..ba1fba8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageUpdateRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.workbench; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 審批提醒消息请求实体 + * @Author: wangpeng + * @Date: 2023/4/21 16:43 + */ +@ApiModel +@Data +public class ApprovalMessageUpdateRequest { + @NotNull(message = "id不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @NotNull(message = "更新状态不能为空") + @ApiModelProperty(value = "状态(1已读0未读)", dataType = "Integer") + private Integer status; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/RemindMessageRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/RemindMessageRequest.java index b3d06f7..7175f4e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/RemindMessageRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/RemindMessageRequest.java @@ -1,5 +1,7 @@ package com.casic.missiles.dto.workbench; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -26,4 +28,11 @@ @ApiModelProperty(value = "消息提醒的业务类型(字典code)", dataType = "String") private String messageType; + + @DictCodeField(message = "来源模块不合法", cacheName = MeterDictCode.MESSAGE_SOURCE_MODULE) + @ApiModelProperty(value = "来源模块(字典code)", dataType = "String") + private String messageSourceModule; + + @ApiModelProperty(value = "已读1未读0", dataType = "Integer") + private Integer status; } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java index 9c5a7e6..6fcfac0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java @@ -6,10 +6,15 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.workbench.ApprovalMessageRequest; +import com.casic.missiles.dto.workbench.ApprovalMessageUpdateRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.model.workbench.WorkbenchApprovalMessage; import com.casic.missiles.service.workbench.IWorkbenchApprovalMessageService; +import com.casic.missiles.utils.PageUtil; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; @@ -36,8 +41,23 @@ @ApiOperation("审批提醒列表") @PostMapping("/listPage") @ResponseBody - public ReturnDTO> approvalMessageList(@RequestBody @Valid ApprovalMessageRequest approvalMessageRequest) { + public ReturnDTO> approvalMessageList(@RequestBody @Valid ApprovalMessageRequest approvalMessageRequest) throws Exception { + List list = approvalMessageService.list(approvalMessageRequest); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(approvalMessageService.listPage(page, approvalMessageRequest)); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), list); + return ReturnUtil.success(super.packForBT(pages)); + } + + /** + * 已读状态变更 + */ + @ApiOperation("已读状态变更") + @PostMapping("/updateStatus") + @ResponseBody + public ReturnDTO updateStatus(@RequestBody @Valid ApprovalMessageUpdateRequest updateRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return approvalMessageService.updateStatus(updateRequest); } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/PageUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/PageUtil.java new file mode 100644 index 0000000..06d36c5 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/PageUtil.java @@ -0,0 +1,35 @@ +package com.casic.missiles.utils; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 分页工具 + * @Author: wangpeng + * @Date: 2023/4/21 16:28 + */ +public class PageUtil { + public static Page getPages(Integer currentPage, Integer pageSize, List list) { + Page page = new Page(); + int size = list.size(); + if(pageSize > size && 0 != size) { + pageSize = size; + } + // 求出最大页数,防止currentPage越界 + int maxPage = size % pageSize == 0 ? size / pageSize : size / pageSize + 1; + if(currentPage > maxPage) { + currentPage = maxPage; + } + // 当前页第一条数据的下标 + int curIdx = currentPage > 1 ? (currentPage - 1) * pageSize : 0; + List pageList = new ArrayList(); + // 将当前页的数据放进pageList + for(int i = 0; i < pageSize && curIdx + i < size; i++) { + pageList.add(list.get(curIdx + i)); + } + page.setCurrent(currentPage).setSize(pageSize).setTotal(list.size()).setRecords(pageList); + return page; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageRequest.java index 2ede5a2..90dd7bc 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageRequest.java @@ -14,11 +14,11 @@ @ApiModel @Data public class ApprovalMessageRequest { - @ApiModelProperty(value = "通知的用户id", dataType = "Long") - private Long noticeId; - - @ApiModelProperty(value = "通知的用户部门id", dataType = "Long") - private Long noticeDeptId; +// @ApiModelProperty(value = "通知的用户id", dataType = "Long") +// private Long noticeId; +// +// @ApiModelProperty(value = "通知的用户部门id", dataType = "Long") +// private Long noticeDeptId; @ApiModelProperty(value = "通知开始时间", dataType = "String") private String startTime; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageUpdateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageUpdateRequest.java new file mode 100644 index 0000000..ba1fba8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageUpdateRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.workbench; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 審批提醒消息请求实体 + * @Author: wangpeng + * @Date: 2023/4/21 16:43 + */ +@ApiModel +@Data +public class ApprovalMessageUpdateRequest { + @NotNull(message = "id不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @NotNull(message = "更新状态不能为空") + @ApiModelProperty(value = "状态(1已读0未读)", dataType = "Integer") + private Integer status; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/RemindMessageRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/RemindMessageRequest.java index b3d06f7..7175f4e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/RemindMessageRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/RemindMessageRequest.java @@ -1,5 +1,7 @@ package com.casic.missiles.dto.workbench; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -26,4 +28,11 @@ @ApiModelProperty(value = "消息提醒的业务类型(字典code)", dataType = "String") private String messageType; + + @DictCodeField(message = "来源模块不合法", cacheName = MeterDictCode.MESSAGE_SOURCE_MODULE) + @ApiModelProperty(value = "来源模块(字典code)", dataType = "String") + private String messageSourceModule; + + @ApiModelProperty(value = "已读1未读0", dataType = "Integer") + private Integer status; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchApprovalMessageServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchApprovalMessageServiceImpl.java index f422426..adac7f0 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchApprovalMessageServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchApprovalMessageServiceImpl.java @@ -1,15 +1,23 @@ package com.casic.missiles.service.Impl.workbench; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; import com.casic.missiles.dto.workbench.ApprovalMessageRequest; +import com.casic.missiles.dto.workbench.ApprovalMessageUpdateRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.system.ApplyFromIdEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.workbench.WorkbenchApprovalMessageMapper; import com.casic.missiles.model.workbench.WorkbenchApprovalMessage; import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.workbench.IWorkbenchApprovalMessageService; +import com.casic.missiles.utils.DictCodeUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -37,19 +45,24 @@ @Autowired private WorkbenchApprovalMessageMapper approvalMessageMapper; + /** + * 所有业务待审批列表封装为消息 + * 计量管理:计量文件、培训计划、溯源供方 + * 测量设备:标准装置:更换、暂停、撤销、恢复、复查; + * 状态管理:闲置、封存、启封、报废、处置,维护:检修、保养,领用,借用这些都在状态管理里,对应枚举:EquipmentApplyTypeEnum + * 业务管理:分包方资格、项目申请、项目验收,现场检测 + */ @Override - public List listPage(Page page, ApprovalMessageRequest approvalMessageRequest) { - //所有业务待审批列表封装为消息 - //计量管理:计量文件、培训计划、溯源供方 - //测量设备:标准装置:更换、暂停、撤销、恢复、复查; - // 状态管理:闲置、封存、启封、报废、处置,维护:检修、保养,领用,借用这些都在状态管理里,对应枚举:EquipmentApplyTypeEnum - //业务管理:分包方资格、项目申请、项目验收,现场检测 - // TODO: 2023/4/21 多线程优化查询,分页 + public List list(ApprovalMessageRequest request) throws Exception { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); List resultList = new ArrayList<>(); - if(Objects.nonNull(approvalMessageRequest.getStatus()) && 1 == approvalMessageRequest.getStatus()){ + if(Objects.nonNull(request.getStatus()) && 1 == request.getStatus()){ for (ApplyFromIdEnum applyFromIdEnum : ApplyFromIdEnum.values()) { - if(StringUtils.isNotEmpty(approvalMessageRequest.getMessageSourceModule()) && - applyFromIdEnum.getSource().equals(approvalMessageRequest.getMessageSourceModule())){ + if(StringUtils.isNotEmpty(request.getMessageSourceModule()) && + applyFromIdEnum.getSource().equals(request.getMessageSourceModule())){ continue; } List toBeApprovedList = baseApprovalService.getToBeApprovedList(applyFromIdEnum.getCode()); @@ -70,20 +83,35 @@ } //通知消息 QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq(Objects.nonNull(approvalMessageRequest.getNoticeId()), "notice_id", approvalMessageRequest.getNoticeId()); - wrapper.eq(StringUtils.isNotBlank(approvalMessageRequest.getMessageSourceModule()), "message_source_module", approvalMessageRequest.getMessageSourceModule()); - wrapper.eq(Objects.nonNull(approvalMessageRequest.getStatus()), "status", approvalMessageRequest.getStatus()); - wrapper.apply(StringUtils.isNotBlank(approvalMessageRequest.getStartTime()), - "{0} <= DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%s')", approvalMessageRequest.getStartTime()); - wrapper.apply(StringUtils.isNotBlank(approvalMessageRequest.getEndTime()), - "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%s')", approvalMessageRequest.getEndTime()); + wrapper.eq("notice_id", user.getId()); + wrapper.eq(StringUtils.isNotBlank(request.getMessageSourceModule()), "message_source_module", request.getMessageSourceModule()); + wrapper.eq(Objects.nonNull(request.getStatus()), "status", request.getStatus()); + wrapper.apply(StringUtils.isNotBlank(request.getStartTime()), + "{0} <= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getStartTime().split(" ")[0]); + wrapper.apply(StringUtils.isNotBlank(request.getEndTime()), + "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getEndTime().split(" ")[0]); List list = approvalMessageMapper.selectList(wrapper); if(!CollectionUtils.isEmpty(list)){ resultList.addAll(list); } //按时间排序组装 List finalList = resultList.stream().sorted(Comparator.comparing(WorkbenchApprovalMessage::getCreateTime).reversed()).collect(Collectors.toList()); - + if(!CollectionUtils.isEmpty(finalList)) { + for (WorkbenchApprovalMessage approvalMessage : finalList) { + DictCodeUtils.convertDictCodeToName(approvalMessage); + } + } return finalList; } + + @Override + public ReturnDTO updateStatus(ApprovalMessageUpdateRequest updateRequest) { + WorkbenchApprovalMessage approvalMessage = new WorkbenchApprovalMessage(); + approvalMessage.setId(updateRequest.getId()); + approvalMessage.setStatus(updateRequest.getStatus()); + if(approvalMessageMapper.updateById(approvalMessage) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java index 9c5a7e6..6fcfac0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java @@ -6,10 +6,15 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.workbench.ApprovalMessageRequest; +import com.casic.missiles.dto.workbench.ApprovalMessageUpdateRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.model.workbench.WorkbenchApprovalMessage; import com.casic.missiles.service.workbench.IWorkbenchApprovalMessageService; +import com.casic.missiles.utils.PageUtil; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; @@ -36,8 +41,23 @@ @ApiOperation("审批提醒列表") @PostMapping("/listPage") @ResponseBody - public ReturnDTO> approvalMessageList(@RequestBody @Valid ApprovalMessageRequest approvalMessageRequest) { + public ReturnDTO> approvalMessageList(@RequestBody @Valid ApprovalMessageRequest approvalMessageRequest) throws Exception { + List list = approvalMessageService.list(approvalMessageRequest); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(approvalMessageService.listPage(page, approvalMessageRequest)); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), list); + return ReturnUtil.success(super.packForBT(pages)); + } + + /** + * 已读状态变更 + */ + @ApiOperation("已读状态变更") + @PostMapping("/updateStatus") + @ResponseBody + public ReturnDTO updateStatus(@RequestBody @Valid ApprovalMessageUpdateRequest updateRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return approvalMessageService.updateStatus(updateRequest); } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/PageUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/PageUtil.java new file mode 100644 index 0000000..06d36c5 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/PageUtil.java @@ -0,0 +1,35 @@ +package com.casic.missiles.utils; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 分页工具 + * @Author: wangpeng + * @Date: 2023/4/21 16:28 + */ +public class PageUtil { + public static Page getPages(Integer currentPage, Integer pageSize, List list) { + Page page = new Page(); + int size = list.size(); + if(pageSize > size && 0 != size) { + pageSize = size; + } + // 求出最大页数,防止currentPage越界 + int maxPage = size % pageSize == 0 ? size / pageSize : size / pageSize + 1; + if(currentPage > maxPage) { + currentPage = maxPage; + } + // 当前页第一条数据的下标 + int curIdx = currentPage > 1 ? (currentPage - 1) * pageSize : 0; + List pageList = new ArrayList(); + // 将当前页的数据放进pageList + for(int i = 0; i < pageSize && curIdx + i < size; i++) { + pageList.add(list.get(curIdx + i)); + } + page.setCurrent(currentPage).setSize(pageSize).setTotal(list.size()).setRecords(pageList); + return page; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageRequest.java index 2ede5a2..90dd7bc 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageRequest.java @@ -14,11 +14,11 @@ @ApiModel @Data public class ApprovalMessageRequest { - @ApiModelProperty(value = "通知的用户id", dataType = "Long") - private Long noticeId; - - @ApiModelProperty(value = "通知的用户部门id", dataType = "Long") - private Long noticeDeptId; +// @ApiModelProperty(value = "通知的用户id", dataType = "Long") +// private Long noticeId; +// +// @ApiModelProperty(value = "通知的用户部门id", dataType = "Long") +// private Long noticeDeptId; @ApiModelProperty(value = "通知开始时间", dataType = "String") private String startTime; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageUpdateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageUpdateRequest.java new file mode 100644 index 0000000..ba1fba8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageUpdateRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.workbench; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 審批提醒消息请求实体 + * @Author: wangpeng + * @Date: 2023/4/21 16:43 + */ +@ApiModel +@Data +public class ApprovalMessageUpdateRequest { + @NotNull(message = "id不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @NotNull(message = "更新状态不能为空") + @ApiModelProperty(value = "状态(1已读0未读)", dataType = "Integer") + private Integer status; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/RemindMessageRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/RemindMessageRequest.java index b3d06f7..7175f4e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/RemindMessageRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/RemindMessageRequest.java @@ -1,5 +1,7 @@ package com.casic.missiles.dto.workbench; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -26,4 +28,11 @@ @ApiModelProperty(value = "消息提醒的业务类型(字典code)", dataType = "String") private String messageType; + + @DictCodeField(message = "来源模块不合法", cacheName = MeterDictCode.MESSAGE_SOURCE_MODULE) + @ApiModelProperty(value = "来源模块(字典code)", dataType = "String") + private String messageSourceModule; + + @ApiModelProperty(value = "已读1未读0", dataType = "Integer") + private Integer status; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchApprovalMessageServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchApprovalMessageServiceImpl.java index f422426..adac7f0 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchApprovalMessageServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchApprovalMessageServiceImpl.java @@ -1,15 +1,23 @@ package com.casic.missiles.service.Impl.workbench; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; import com.casic.missiles.dto.workbench.ApprovalMessageRequest; +import com.casic.missiles.dto.workbench.ApprovalMessageUpdateRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.system.ApplyFromIdEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.workbench.WorkbenchApprovalMessageMapper; import com.casic.missiles.model.workbench.WorkbenchApprovalMessage; import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.workbench.IWorkbenchApprovalMessageService; +import com.casic.missiles.utils.DictCodeUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -37,19 +45,24 @@ @Autowired private WorkbenchApprovalMessageMapper approvalMessageMapper; + /** + * 所有业务待审批列表封装为消息 + * 计量管理:计量文件、培训计划、溯源供方 + * 测量设备:标准装置:更换、暂停、撤销、恢复、复查; + * 状态管理:闲置、封存、启封、报废、处置,维护:检修、保养,领用,借用这些都在状态管理里,对应枚举:EquipmentApplyTypeEnum + * 业务管理:分包方资格、项目申请、项目验收,现场检测 + */ @Override - public List listPage(Page page, ApprovalMessageRequest approvalMessageRequest) { - //所有业务待审批列表封装为消息 - //计量管理:计量文件、培训计划、溯源供方 - //测量设备:标准装置:更换、暂停、撤销、恢复、复查; - // 状态管理:闲置、封存、启封、报废、处置,维护:检修、保养,领用,借用这些都在状态管理里,对应枚举:EquipmentApplyTypeEnum - //业务管理:分包方资格、项目申请、项目验收,现场检测 - // TODO: 2023/4/21 多线程优化查询,分页 + public List list(ApprovalMessageRequest request) throws Exception { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); List resultList = new ArrayList<>(); - if(Objects.nonNull(approvalMessageRequest.getStatus()) && 1 == approvalMessageRequest.getStatus()){ + if(Objects.nonNull(request.getStatus()) && 1 == request.getStatus()){ for (ApplyFromIdEnum applyFromIdEnum : ApplyFromIdEnum.values()) { - if(StringUtils.isNotEmpty(approvalMessageRequest.getMessageSourceModule()) && - applyFromIdEnum.getSource().equals(approvalMessageRequest.getMessageSourceModule())){ + if(StringUtils.isNotEmpty(request.getMessageSourceModule()) && + applyFromIdEnum.getSource().equals(request.getMessageSourceModule())){ continue; } List toBeApprovedList = baseApprovalService.getToBeApprovedList(applyFromIdEnum.getCode()); @@ -70,20 +83,35 @@ } //通知消息 QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq(Objects.nonNull(approvalMessageRequest.getNoticeId()), "notice_id", approvalMessageRequest.getNoticeId()); - wrapper.eq(StringUtils.isNotBlank(approvalMessageRequest.getMessageSourceModule()), "message_source_module", approvalMessageRequest.getMessageSourceModule()); - wrapper.eq(Objects.nonNull(approvalMessageRequest.getStatus()), "status", approvalMessageRequest.getStatus()); - wrapper.apply(StringUtils.isNotBlank(approvalMessageRequest.getStartTime()), - "{0} <= DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%s')", approvalMessageRequest.getStartTime()); - wrapper.apply(StringUtils.isNotBlank(approvalMessageRequest.getEndTime()), - "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%s')", approvalMessageRequest.getEndTime()); + wrapper.eq("notice_id", user.getId()); + wrapper.eq(StringUtils.isNotBlank(request.getMessageSourceModule()), "message_source_module", request.getMessageSourceModule()); + wrapper.eq(Objects.nonNull(request.getStatus()), "status", request.getStatus()); + wrapper.apply(StringUtils.isNotBlank(request.getStartTime()), + "{0} <= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getStartTime().split(" ")[0]); + wrapper.apply(StringUtils.isNotBlank(request.getEndTime()), + "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getEndTime().split(" ")[0]); List list = approvalMessageMapper.selectList(wrapper); if(!CollectionUtils.isEmpty(list)){ resultList.addAll(list); } //按时间排序组装 List finalList = resultList.stream().sorted(Comparator.comparing(WorkbenchApprovalMessage::getCreateTime).reversed()).collect(Collectors.toList()); - + if(!CollectionUtils.isEmpty(finalList)) { + for (WorkbenchApprovalMessage approvalMessage : finalList) { + DictCodeUtils.convertDictCodeToName(approvalMessage); + } + } return finalList; } + + @Override + public ReturnDTO updateStatus(ApprovalMessageUpdateRequest updateRequest) { + WorkbenchApprovalMessage approvalMessage = new WorkbenchApprovalMessage(); + approvalMessage.setId(updateRequest.getId()); + approvalMessage.setStatus(updateRequest.getStatus()); + if(approvalMessageMapper.updateById(approvalMessage) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchRemindMessageServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchRemindMessageServiceImpl.java index 6f6d1b2..b7fafdb 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchRemindMessageServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchRemindMessageServiceImpl.java @@ -59,7 +59,8 @@ wrapper.eq(!Objects.isNull(request.getRemindId()), "remind_id", request.getRemindId()); wrapper.eq(!Objects.isNull(request.getRemindDeptId()), "remind_dept_id", request.getRemindDeptId()); wrapper.eq(StringUtils.isNotBlank(request.getMessageType()), "message_type", request.getMessageType()); - wrapper.eq("status", 0); + wrapper.eq(StringUtils.isNotBlank(request.getMessageSourceModule()), "message_source_module", request.getMessageSourceModule()); + wrapper.eq(Objects.isNull(request.getStatus()),"status", request.getStatus()); wrapper.apply(StringUtils.isNotBlank(request.getStartTime()), "{0} <= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getStartTime().split(" ")[0]); wrapper.apply(StringUtils.isNotBlank(request.getEndTime()), diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java index 9c5a7e6..6fcfac0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java @@ -6,10 +6,15 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.workbench.ApprovalMessageRequest; +import com.casic.missiles.dto.workbench.ApprovalMessageUpdateRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.model.workbench.WorkbenchApprovalMessage; import com.casic.missiles.service.workbench.IWorkbenchApprovalMessageService; +import com.casic.missiles.utils.PageUtil; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; @@ -36,8 +41,23 @@ @ApiOperation("审批提醒列表") @PostMapping("/listPage") @ResponseBody - public ReturnDTO> approvalMessageList(@RequestBody @Valid ApprovalMessageRequest approvalMessageRequest) { + public ReturnDTO> approvalMessageList(@RequestBody @Valid ApprovalMessageRequest approvalMessageRequest) throws Exception { + List list = approvalMessageService.list(approvalMessageRequest); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(approvalMessageService.listPage(page, approvalMessageRequest)); + Page pages = PageUtil.getPages((int) page.getCurrent(), (int) page.getSize(), list); + return ReturnUtil.success(super.packForBT(pages)); + } + + /** + * 已读状态变更 + */ + @ApiOperation("已读状态变更") + @PostMapping("/updateStatus") + @ResponseBody + public ReturnDTO updateStatus(@RequestBody @Valid ApprovalMessageUpdateRequest updateRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return approvalMessageService.updateStatus(updateRequest); } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/PageUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/PageUtil.java new file mode 100644 index 0000000..06d36c5 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/PageUtil.java @@ -0,0 +1,35 @@ +package com.casic.missiles.utils; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 分页工具 + * @Author: wangpeng + * @Date: 2023/4/21 16:28 + */ +public class PageUtil { + public static Page getPages(Integer currentPage, Integer pageSize, List list) { + Page page = new Page(); + int size = list.size(); + if(pageSize > size && 0 != size) { + pageSize = size; + } + // 求出最大页数,防止currentPage越界 + int maxPage = size % pageSize == 0 ? size / pageSize : size / pageSize + 1; + if(currentPage > maxPage) { + currentPage = maxPage; + } + // 当前页第一条数据的下标 + int curIdx = currentPage > 1 ? (currentPage - 1) * pageSize : 0; + List pageList = new ArrayList(); + // 将当前页的数据放进pageList + for(int i = 0; i < pageSize && curIdx + i < size; i++) { + pageList.add(list.get(curIdx + i)); + } + page.setCurrent(currentPage).setSize(pageSize).setTotal(list.size()).setRecords(pageList); + return page; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageRequest.java index 2ede5a2..90dd7bc 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageRequest.java @@ -14,11 +14,11 @@ @ApiModel @Data public class ApprovalMessageRequest { - @ApiModelProperty(value = "通知的用户id", dataType = "Long") - private Long noticeId; - - @ApiModelProperty(value = "通知的用户部门id", dataType = "Long") - private Long noticeDeptId; +// @ApiModelProperty(value = "通知的用户id", dataType = "Long") +// private Long noticeId; +// +// @ApiModelProperty(value = "通知的用户部门id", dataType = "Long") +// private Long noticeDeptId; @ApiModelProperty(value = "通知开始时间", dataType = "String") private String startTime; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageUpdateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageUpdateRequest.java new file mode 100644 index 0000000..ba1fba8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/ApprovalMessageUpdateRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.workbench; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 審批提醒消息请求实体 + * @Author: wangpeng + * @Date: 2023/4/21 16:43 + */ +@ApiModel +@Data +public class ApprovalMessageUpdateRequest { + @NotNull(message = "id不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @NotNull(message = "更新状态不能为空") + @ApiModelProperty(value = "状态(1已读0未读)", dataType = "Integer") + private Integer status; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/RemindMessageRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/RemindMessageRequest.java index b3d06f7..7175f4e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/RemindMessageRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/workbench/RemindMessageRequest.java @@ -1,5 +1,7 @@ package com.casic.missiles.dto.workbench; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -26,4 +28,11 @@ @ApiModelProperty(value = "消息提醒的业务类型(字典code)", dataType = "String") private String messageType; + + @DictCodeField(message = "来源模块不合法", cacheName = MeterDictCode.MESSAGE_SOURCE_MODULE) + @ApiModelProperty(value = "来源模块(字典code)", dataType = "String") + private String messageSourceModule; + + @ApiModelProperty(value = "已读1未读0", dataType = "Integer") + private Integer status; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchApprovalMessageServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchApprovalMessageServiceImpl.java index f422426..adac7f0 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchApprovalMessageServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchApprovalMessageServiceImpl.java @@ -1,15 +1,23 @@ package com.casic.missiles.service.Impl.workbench; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; import com.casic.missiles.dto.workbench.ApprovalMessageRequest; +import com.casic.missiles.dto.workbench.ApprovalMessageUpdateRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.system.ApplyFromIdEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.workbench.WorkbenchApprovalMessageMapper; import com.casic.missiles.model.workbench.WorkbenchApprovalMessage; import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.workbench.IWorkbenchApprovalMessageService; +import com.casic.missiles.utils.DictCodeUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -37,19 +45,24 @@ @Autowired private WorkbenchApprovalMessageMapper approvalMessageMapper; + /** + * 所有业务待审批列表封装为消息 + * 计量管理:计量文件、培训计划、溯源供方 + * 测量设备:标准装置:更换、暂停、撤销、恢复、复查; + * 状态管理:闲置、封存、启封、报废、处置,维护:检修、保养,领用,借用这些都在状态管理里,对应枚举:EquipmentApplyTypeEnum + * 业务管理:分包方资格、项目申请、项目验收,现场检测 + */ @Override - public List listPage(Page page, ApprovalMessageRequest approvalMessageRequest) { - //所有业务待审批列表封装为消息 - //计量管理:计量文件、培训计划、溯源供方 - //测量设备:标准装置:更换、暂停、撤销、恢复、复查; - // 状态管理:闲置、封存、启封、报废、处置,维护:检修、保养,领用,借用这些都在状态管理里,对应枚举:EquipmentApplyTypeEnum - //业务管理:分包方资格、项目申请、项目验收,现场检测 - // TODO: 2023/4/21 多线程优化查询,分页 + public List list(ApprovalMessageRequest request) throws Exception { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); List resultList = new ArrayList<>(); - if(Objects.nonNull(approvalMessageRequest.getStatus()) && 1 == approvalMessageRequest.getStatus()){ + if(Objects.nonNull(request.getStatus()) && 1 == request.getStatus()){ for (ApplyFromIdEnum applyFromIdEnum : ApplyFromIdEnum.values()) { - if(StringUtils.isNotEmpty(approvalMessageRequest.getMessageSourceModule()) && - applyFromIdEnum.getSource().equals(approvalMessageRequest.getMessageSourceModule())){ + if(StringUtils.isNotEmpty(request.getMessageSourceModule()) && + applyFromIdEnum.getSource().equals(request.getMessageSourceModule())){ continue; } List toBeApprovedList = baseApprovalService.getToBeApprovedList(applyFromIdEnum.getCode()); @@ -70,20 +83,35 @@ } //通知消息 QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq(Objects.nonNull(approvalMessageRequest.getNoticeId()), "notice_id", approvalMessageRequest.getNoticeId()); - wrapper.eq(StringUtils.isNotBlank(approvalMessageRequest.getMessageSourceModule()), "message_source_module", approvalMessageRequest.getMessageSourceModule()); - wrapper.eq(Objects.nonNull(approvalMessageRequest.getStatus()), "status", approvalMessageRequest.getStatus()); - wrapper.apply(StringUtils.isNotBlank(approvalMessageRequest.getStartTime()), - "{0} <= DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%s')", approvalMessageRequest.getStartTime()); - wrapper.apply(StringUtils.isNotBlank(approvalMessageRequest.getEndTime()), - "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%s')", approvalMessageRequest.getEndTime()); + wrapper.eq("notice_id", user.getId()); + wrapper.eq(StringUtils.isNotBlank(request.getMessageSourceModule()), "message_source_module", request.getMessageSourceModule()); + wrapper.eq(Objects.nonNull(request.getStatus()), "status", request.getStatus()); + wrapper.apply(StringUtils.isNotBlank(request.getStartTime()), + "{0} <= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getStartTime().split(" ")[0]); + wrapper.apply(StringUtils.isNotBlank(request.getEndTime()), + "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getEndTime().split(" ")[0]); List list = approvalMessageMapper.selectList(wrapper); if(!CollectionUtils.isEmpty(list)){ resultList.addAll(list); } //按时间排序组装 List finalList = resultList.stream().sorted(Comparator.comparing(WorkbenchApprovalMessage::getCreateTime).reversed()).collect(Collectors.toList()); - + if(!CollectionUtils.isEmpty(finalList)) { + for (WorkbenchApprovalMessage approvalMessage : finalList) { + DictCodeUtils.convertDictCodeToName(approvalMessage); + } + } return finalList; } + + @Override + public ReturnDTO updateStatus(ApprovalMessageUpdateRequest updateRequest) { + WorkbenchApprovalMessage approvalMessage = new WorkbenchApprovalMessage(); + approvalMessage.setId(updateRequest.getId()); + approvalMessage.setStatus(updateRequest.getStatus()); + if(approvalMessageMapper.updateById(approvalMessage) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchRemindMessageServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchRemindMessageServiceImpl.java index 6f6d1b2..b7fafdb 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchRemindMessageServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchRemindMessageServiceImpl.java @@ -59,7 +59,8 @@ wrapper.eq(!Objects.isNull(request.getRemindId()), "remind_id", request.getRemindId()); wrapper.eq(!Objects.isNull(request.getRemindDeptId()), "remind_dept_id", request.getRemindDeptId()); wrapper.eq(StringUtils.isNotBlank(request.getMessageType()), "message_type", request.getMessageType()); - wrapper.eq("status", 0); + wrapper.eq(StringUtils.isNotBlank(request.getMessageSourceModule()), "message_source_module", request.getMessageSourceModule()); + wrapper.eq(Objects.isNull(request.getStatus()),"status", request.getStatus()); wrapper.apply(StringUtils.isNotBlank(request.getStartTime()), "{0} <= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getStartTime().split(" ")[0]); wrapper.apply(StringUtils.isNotBlank(request.getEndTime()), diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/workbench/IWorkbenchApprovalMessageService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/workbench/IWorkbenchApprovalMessageService.java index aef9611..50ae13e 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/workbench/IWorkbenchApprovalMessageService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/workbench/IWorkbenchApprovalMessageService.java @@ -1,8 +1,9 @@ package com.casic.missiles.service.workbench; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.workbench.ApprovalMessageRequest; +import com.casic.missiles.dto.workbench.ApprovalMessageUpdateRequest; import com.casic.missiles.model.workbench.WorkbenchApprovalMessage; import java.util.List; @@ -17,5 +18,7 @@ */ public interface IWorkbenchApprovalMessageService extends IService { - List listPage(Page page, ApprovalMessageRequest approvalMessageRequest); + List list(ApprovalMessageRequest approvalMessageRequest) throws Exception; + + ReturnDTO updateStatus(ApprovalMessageUpdateRequest updateRequest); }