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