From b0af874214a59232bd79bd25d31edf1bf8219e64 Mon Sep 17 00:00:00 2001 From: 谢茂盛 <A807732> Date: Tue, 7 Nov 2023 18:28:15 +0800 Subject: [PATCH] fix: 订单操作日志/审批日志 --- src/main/java/com/order/erp/controller/OrderAuditLogController.java | 4 ++-- src/main/java/com/order/erp/controller/OrderOptLogController.java | 30 ++++++++++++++++++++++++++++-- src/main/java/com/order/erp/domain/vo/order/OrderAuditLogResultVO.java | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/order/erp/domain/vo/order/OrderOptLogQueryVO.java | 12 ------------ src/main/java/com/order/erp/domain/vo/order/OrderOptLogResultVO.java | 44 ++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/order/erp/service/order/OrderAuditLogService.java | 8 ++++++++ src/main/java/com/order/erp/service/order/OrderOptLogService.java | 7 +++++++ src/main/java/com/order/erp/service/order/impl/OrderAuditLogServiceImpl.java | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- src/main/java/com/order/erp/service/order/impl/OrderOptLogServiceImpl.java | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 9 files changed, 299 insertions(+), 20 deletions(-) create mode 100644 src/main/java/com/order/erp/domain/vo/order/OrderAuditLogResultVO.java create mode 100644 src/main/java/com/order/erp/domain/vo/order/OrderOptLogResultVO.java diff --git a/src/main/java/com/order/erp/controller/OrderAuditLogController.java b/src/main/java/com/order/erp/controller/OrderAuditLogController.java index a3fe73d..65d0ec7 100644 --- a/src/main/java/com/order/erp/controller/OrderAuditLogController.java +++ b/src/main/java/com/order/erp/controller/OrderAuditLogController.java @@ -36,11 +36,11 @@ public class OrderAuditLogController { * @param orderAuditLogQueryVO 查询条件 * @return 查询结果 */ - @PostMapping("/list") + @PostMapping("/list_by_page") @ApiOperation("分页查询") @AnonymousAccess public ServerResult list(@RequestBody @Validated OrderAuditLogQueryVO orderAuditLogQueryVO) { - return orderAuditLogService.list(orderAuditLogQueryVO); + return orderAuditLogService.listByPage(orderAuditLogQueryVO); } /** diff --git a/src/main/java/com/order/erp/controller/OrderOptLogController.java b/src/main/java/com/order/erp/controller/OrderOptLogController.java index d419603..8829a38 100644 --- a/src/main/java/com/order/erp/controller/OrderOptLogController.java +++ b/src/main/java/com/order/erp/controller/OrderOptLogController.java @@ -1,19 +1,45 @@ package com.order.erp.controller; +import com.order.erp.common.annotation.AnonymousAccess; +import com.order.erp.common.constant.ServerResult; +import com.order.erp.domain.vo.order.OrderOptLogQueryVO; +import com.order.erp.service.order.OrderOptLogService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; + /** * 用户订单操作日志表(OrderOptLog)表控制层 * * @author makejava * @since 2023-09-08 15:26:46 */ -@Api(tags = "(忽略)") +@Api(tags = "订单操作日志") @RestController -@RequestMapping("/gwms/xxx") +@RequestMapping("/order/erp/opt/log") public class OrderOptLogController { + @Resource + private OrderOptLogService orderOptLogService; + + /** + * 分页查询 + * + * @param queryVO 查询条件 + * @return 查询结果 + */ + @PostMapping("/list_by_page") + @ApiOperation("分页查询") + @AnonymousAccess + public ServerResult listByPage(@RequestBody @Validated OrderOptLogQueryVO queryVO) { + return orderOptLogService.listByPage(queryVO); + } + } diff --git a/src/main/java/com/order/erp/domain/vo/order/OrderAuditLogResultVO.java b/src/main/java/com/order/erp/domain/vo/order/OrderAuditLogResultVO.java new file mode 100644 index 0000000..a2f7c0a --- /dev/null +++ b/src/main/java/com/order/erp/domain/vo/order/OrderAuditLogResultVO.java @@ -0,0 +1,62 @@ +package com.order.erp.domain.vo.order; + +import lombok.*; +import lombok.experimental.SuperBuilder; + +import java.io.Serializable; + +/** + * 订单操作信息表实体类 + * + * @author makejava + * @since 2023-09-08 15:26:43 + */ +@Data +@AllArgsConstructor +@ToString +@NoArgsConstructor +@EqualsAndHashCode(callSuper = false) +@SuperBuilder +public class OrderAuditLogResultVO implements Serializable { + private Long id; + + /** + * 订单id + */ + private Long orderId; + /** + * 申请id + */ + private Long applyId; + + /** + * 申请备注信息 + */ + private String applyRemark; + + /** + * 操作类型 + */ + private String optType; + + /** + * 申请用户id + */ + private Long applyUserId; + + /** + * 申请用户名称 + */ + private String applyUserName; + + /** + * 审核人 + */ + private String auditUserName; + + /** + * 操作字段 json字符串 + */ + private String fields; + +} diff --git a/src/main/java/com/order/erp/domain/vo/order/OrderOptLogQueryVO.java b/src/main/java/com/order/erp/domain/vo/order/OrderOptLogQueryVO.java index c7d06f0..136d1a3 100644 --- a/src/main/java/com/order/erp/domain/vo/order/OrderOptLogQueryVO.java +++ b/src/main/java/com/order/erp/domain/vo/order/OrderOptLogQueryVO.java @@ -30,18 +30,6 @@ public class OrderOptLogQueryVO extends BasePageVO implements Serializable { * 订单id */ private Long orderId; - /** - * 用户id - */ - private Long userId; - /** - * 操作类型 - */ - private String optType; - /** - * 操作字段 json字符串 - */ - private String fields; } diff --git a/src/main/java/com/order/erp/domain/vo/order/OrderOptLogResultVO.java b/src/main/java/com/order/erp/domain/vo/order/OrderOptLogResultVO.java new file mode 100644 index 0000000..7459d07 --- /dev/null +++ b/src/main/java/com/order/erp/domain/vo/order/OrderOptLogResultVO.java @@ -0,0 +1,44 @@ +package com.order.erp.domain.vo.order; + +import lombok.*; +import lombok.experimental.SuperBuilder; + +import java.io.Serializable; + +/** + * 订单操作信息表实体类 + * + * @author makejava + * @since 2023-09-08 15:26:43 + */ +@Data +@AllArgsConstructor +@ToString +@NoArgsConstructor +@EqualsAndHashCode(callSuper = false) +@SuperBuilder +public class OrderOptLogResultVO implements Serializable { + private Long id; + /** + * 订单id + */ + private Long orderId; + /** + * 用户id + */ + private Long userId; + + /** + * 用户名称 + */ + private String userName; + /** + * 操作类型 + */ + private String optType; + /** + * 操作字段 json字符串 + */ + private String fields; + +} diff --git a/src/main/java/com/order/erp/service/order/OrderAuditLogService.java b/src/main/java/com/order/erp/service/order/OrderAuditLogService.java index f8a9b12..16ffa70 100644 --- a/src/main/java/com/order/erp/service/order/OrderAuditLogService.java +++ b/src/main/java/com/order/erp/service/order/OrderAuditLogService.java @@ -32,6 +32,14 @@ public interface OrderAuditLogService extends IService<OrderAuditLogDO> { */ ServerResult list(OrderAuditLogQueryVO orderAuditLogQueryVO); + + /** + * + * @param queryVO + * @return + */ + ServerResult listByPage(OrderAuditLogQueryVO queryVO); + /** * 新增数据 * diff --git a/src/main/java/com/order/erp/service/order/OrderOptLogService.java b/src/main/java/com/order/erp/service/order/OrderOptLogService.java index 4c45112..82259da 100644 --- a/src/main/java/com/order/erp/service/order/OrderOptLogService.java +++ b/src/main/java/com/order/erp/service/order/OrderOptLogService.java @@ -33,6 +33,13 @@ public interface OrderOptLogService extends IService<OrderOptLogDO> { ServerResult list(OrderOptLogQueryVO orderOptLogQueryVO); /** + * + * @param orderOptLogQueryVO + * @return + */ + ServerResult listByPage(OrderOptLogQueryVO orderOptLogQueryVO); + + /** * 新增数据 * * @param orderOptLogVO 数据VO diff --git a/src/main/java/com/order/erp/service/order/impl/OrderAuditLogServiceImpl.java b/src/main/java/com/order/erp/service/order/impl/OrderAuditLogServiceImpl.java index 8cb9fc0..a29f41f 100644 --- a/src/main/java/com/order/erp/service/order/impl/OrderAuditLogServiceImpl.java +++ b/src/main/java/com/order/erp/service/order/impl/OrderAuditLogServiceImpl.java @@ -2,20 +2,33 @@ package com.order.erp.service.order.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.order.erp.common.constant.Constant; import com.order.erp.common.constant.ServerResult; +import com.order.erp.domain.dto.BaseDO; +import com.order.erp.domain.dto.admin.AdminUserDO; import com.order.erp.domain.dto.order.OrderAuditLogDO; +import com.order.erp.domain.dto.order.OrderFieldLockApplyDO; import com.order.erp.domain.vo.order.OrderAuditLogQueryVO; +import com.order.erp.domain.vo.order.OrderAuditLogResultVO; import com.order.erp.domain.vo.order.OrderAuditLogVO; import com.order.erp.mapper.order.OrderAuditLogMapper; +import com.order.erp.service.admin.AdminUserService; import com.order.erp.service.order.OrderAuditLogService; +import com.order.erp.service.order.OrderFieldLockApplyService; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; -import java.util.List; -import java.util.Objects; +import javax.annotation.Resource; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; /** * 用户订单审批日志表(OrderAuditLog)表服务实现类 @@ -28,6 +41,12 @@ import java.util.Objects; public class OrderAuditLogServiceImpl extends ServiceImpl<OrderAuditLogMapper, OrderAuditLogDO> implements OrderAuditLogService { + @Resource + private AdminUserService userService; + + @Resource + private OrderFieldLockApplyService applyService; + /** * 通过ID查询单条数据 * <p> @@ -59,6 +78,70 @@ public class OrderAuditLogServiceImpl extends ServiceImpl<OrderAuditLogMapper, O return ServerResult.success(); } + @Override + public ServerResult listByPage(OrderAuditLogQueryVO queryVO) { + LambdaQueryWrapper<OrderAuditLogDO> queryWrapper = buildQueryByParam(queryVO); + Page page = new Page<>(queryVO.getPageNo(), queryVO.getPageSize()); + IPage<OrderAuditLogDO> iPage = page(page, queryWrapper); + + Page<OrderAuditLogResultVO> webVOPage = new Page<>(); + List<OrderAuditLogDO> auditLogDOS = iPage.getRecords(); + if (CollectionUtils.isNotEmpty(auditLogDOS)) { + Set<Long> applyIds = auditLogDOS.stream().map(OrderAuditLogDO::getApplyId).collect(Collectors.toSet()); + Map<Long, AdminUserDO> userDOMap = new HashMap<>(); + Map<Long, OrderFieldLockApplyDO> applyDOMap = new HashMap<>(); + Set<Long> userIds = new HashSet<>(); + if (CollectionUtils.isNotEmpty(applyIds)) { + List<OrderFieldLockApplyDO> applyDOS = applyService.listByIds(applyIds); + if (CollectionUtils.isNotEmpty(applyDOS)) { + userIds.addAll(applyDOS.stream().map(OrderFieldLockApplyDO::getApplyUserId).collect(Collectors.toSet())); + userIds.addAll(applyDOS.stream().map(OrderFieldLockApplyDO::getAuditUserId).collect(Collectors.toSet())); + applyDOMap = applyDOS.stream().collect(Collectors.toMap(OrderFieldLockApplyDO::getId, Function.identity())); + } + } + if (CollectionUtils.isNotEmpty(userIds)) { + List<AdminUserDO> userDOS = userService.listByIds(userIds); + if (CollectionUtils.isNotEmpty(userDOS)) { + userDOMap = userDOS.stream().collect(Collectors.toMap(AdminUserDO::getId, Function.identity())); + } + } + Map<Long, AdminUserDO> finalUserDOMap = userDOMap; + Map<Long, OrderFieldLockApplyDO> finalApplyDOMap = applyDOMap; + List<OrderAuditLogResultVO> resultVOList = auditLogDOS.stream().map(x -> { + OrderAuditLogResultVO resultVO = new OrderAuditLogResultVO(); + BeanUtils.copyProperties(x, resultVO); + if (finalApplyDOMap.containsKey(x.getApplyId())) { + OrderFieldLockApplyDO applyDO = finalApplyDOMap.get(x.getApplyId()); + if (finalUserDOMap.containsKey(applyDO.getApplyUserId())) { + resultVO.setApplyUserName(finalUserDOMap.get(applyDO.getApplyUserId()).getUserName()); + } + if (finalUserDOMap.containsKey(applyDO.getAuditUserId())) { + resultVO.setAuditUserName(finalUserDOMap.get(applyDO.getAuditUserId()).getUserName()); + } + resultVO.setApplyRemark(applyDO.getRemark()); + resultVO.setFields(applyDO.getFields()); + } + return resultVO; + }).collect(Collectors.toList()); + + webVOPage.setRecords(resultVOList); + } + BeanUtils.copyProperties(page, webVOPage, "records"); + return ServerResult.success(webVOPage); + } + + /** + * @param queryVO + * @return + */ + private LambdaQueryWrapper<OrderAuditLogDO> buildQueryByParam(OrderAuditLogQueryVO queryVO) { + return new LambdaQueryWrapper<OrderAuditLogDO>() + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) + .eq(Objects.nonNull(queryVO.getOrderId()), OrderAuditLogDO::getOrderId, queryVO.getOrderId()) + .orderByDesc(OrderAuditLogDO::getId) + ; + } + /** * 新增数据 * @@ -123,6 +206,7 @@ public class OrderAuditLogServiceImpl extends ServiceImpl<OrderAuditLogMapper, O /** * 逻辑删除,通过订单id删除 用户订单审批日志表(OrderAuditLog)实体类 + * * @param orderId * @return */ diff --git a/src/main/java/com/order/erp/service/order/impl/OrderOptLogServiceImpl.java b/src/main/java/com/order/erp/service/order/impl/OrderOptLogServiceImpl.java index 1ce91f3..83f3612 100644 --- a/src/main/java/com/order/erp/service/order/impl/OrderOptLogServiceImpl.java +++ b/src/main/java/com/order/erp/service/order/impl/OrderOptLogServiceImpl.java @@ -2,20 +2,31 @@ package com.order.erp.service.order.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.order.erp.common.constant.Constant; import com.order.erp.common.constant.ServerResult; +import com.order.erp.domain.dto.BaseDO; +import com.order.erp.domain.dto.admin.AdminUserDO; import com.order.erp.domain.dto.order.OrderOptLogDO; import com.order.erp.domain.vo.order.OrderOptLogQueryVO; +import com.order.erp.domain.vo.order.OrderOptLogResultVO; import com.order.erp.domain.vo.order.OrderOptLogVO; import com.order.erp.mapper.order.OrderOptLogMapper; +import com.order.erp.service.admin.AdminUserService; import com.order.erp.service.order.OrderOptLogService; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; -import java.util.List; -import java.util.Objects; +import javax.annotation.Resource; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; /** * 用户订单操作日志表(OrderOptLog)表服务实现类 @@ -28,6 +39,9 @@ import java.util.Objects; public class OrderOptLogServiceImpl extends ServiceImpl<OrderOptLogMapper, OrderOptLogDO> implements OrderOptLogService { + @Resource + private AdminUserService userService; + /** * 通过ID查询单条数据 * <p> @@ -59,6 +73,51 @@ public class OrderOptLogServiceImpl extends ServiceImpl<OrderOptLogMapper, Order return ServerResult.success(); } + @Override + public ServerResult listByPage(OrderOptLogQueryVO queryVO) { + LambdaQueryWrapper<OrderOptLogDO> queryWrapper = buildQueryByParam(queryVO); + Page page = new Page<>(queryVO.getPageNo(), queryVO.getPageSize()); + IPage<OrderOptLogDO> iPage = page(page, queryWrapper); + + Page<OrderOptLogResultVO> webVOPage = new Page<>(); + List<OrderOptLogDO> orderOptLogDOS = iPage.getRecords(); + if (CollectionUtils.isNotEmpty(orderOptLogDOS)) { + Set<Long> userIds = orderOptLogDOS.stream().map(OrderOptLogDO::getUserId).collect(Collectors.toSet()); + Map<Long, AdminUserDO> userDOMap = new HashMap<>(); + if (CollectionUtils.isNotEmpty(userIds)) { + List<AdminUserDO> userDOS = userService.listByIds(userIds); + if (CollectionUtils.isNotEmpty(userDOS)) { + userDOMap = userDOS.stream().collect(Collectors.toMap(AdminUserDO::getId, Function.identity())); + } + } + Map<Long, AdminUserDO> finalUserDOMap = userDOMap; + List<OrderOptLogResultVO> resultVOList = orderOptLogDOS.stream().map(x -> { + OrderOptLogResultVO resultVO = new OrderOptLogResultVO(); + BeanUtils.copyProperties(x, resultVO); + if (finalUserDOMap.containsKey(x.getUserId())) { + resultVO.setUserName(finalUserDOMap.get(x.getUserId()).getUserName()); + } + return resultVO; + }).collect(Collectors.toList()); + + webVOPage.setRecords(resultVOList); + } + BeanUtils.copyProperties(page, webVOPage, "records"); + return ServerResult.success(webVOPage); + } + + /** + * @param queryVO + * @return + */ + private LambdaQueryWrapper<OrderOptLogDO> buildQueryByParam(OrderOptLogQueryVO queryVO) { + return new LambdaQueryWrapper<OrderOptLogDO>() + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) + .eq(Objects.nonNull(queryVO.getOrderId()), OrderOptLogDO::getOrderId, queryVO.getOrderId()) + .orderByDesc(OrderOptLogDO::getId) + ; + } + /** * 新增数据 * @@ -123,6 +182,7 @@ public class OrderOptLogServiceImpl extends ServiceImpl<OrderOptLogMapper, Order /** * 通过订单id逻辑删除 + * * @param orderId * @return */ -- libgit2 0.23.3