From 71a2636493d2472a3cd76a9d7d7e9a557618bab3 Mon Sep 17 00:00:00 2001
From: 935090232@qq.com <ak473600000>
Date: Sun, 06 Mar 2022 22:42:12 +0800
Subject: [PATCH] fead:新增单据操作记录

---
 zq-erp/src/main/java/com/matrix/system/common/service/OperationLogService.java          |    5 
 zq-erp/src/main/java/com/matrix/system/common/actions/AdminAction.java                  |   10 
 zq-erp/src/main/java/com/matrix/system/common/dao/OperationLogDao.java                  |    6 
 zq-erp/src/main/java/com/matrix/core/enums/EnumApiShowAble.java                         |    2 
 zq-erp/src/main/resources/mybatis/mapper/common/OperstionLogDao.xml                     |   68 +++++
 zq-erp/src/main/java/com/matrix/system/common/bean/reqVO/OperationLogReqVo.java         |   77 +++++
 zq-erp/src/main/java/com/matrix/system/common/actions/CommonDataAction.java             |   21 +
 zq-erp/src/main/java/com/matrix/system/common/bean/respVO/OperationLogRespVo.java       |   66 +++++
 zq-erp/src/main/java/com/matrix/system/common/bean/reqVO/EnumCodeReqVo.java             |   15 +
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java        |    3 
 zq-erp/src/main/java/com/matrix/system/enums/OperationButtonEnum.java                   |   10 
 zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/operation-list.html |  333 +++++++++++++++++++++++++
 zq-erp/src/main/java/com/matrix/system/common/service/impl/OperationLogServiceImpl.java |   18 +
 zq-erp/src/main/java/com/matrix/system/enums/OperationFunctionEnum.java                 |   15 +
 zq-erp/src/main/java/com/matrix/system/hiveErp/action/OperationLogController.java       |  106 ++++++++
 15 files changed, 750 insertions(+), 5 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/core/enums/EnumApiShowAble.java b/zq-erp/src/main/java/com/matrix/core/enums/EnumApiShowAble.java
index dc74981..6dd12c5 100644
--- a/zq-erp/src/main/java/com/matrix/core/enums/EnumApiShowAble.java
+++ b/zq-erp/src/main/java/com/matrix/core/enums/EnumApiShowAble.java
@@ -21,4 +21,6 @@
     List<EnumsShowVo> getEnumsShowVos();
 
 
+
+
 }
diff --git a/zq-erp/src/main/java/com/matrix/system/common/actions/AdminAction.java b/zq-erp/src/main/java/com/matrix/system/common/actions/AdminAction.java
index c745258..064d634 100644
--- a/zq-erp/src/main/java/com/matrix/system/common/actions/AdminAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/common/actions/AdminAction.java
@@ -477,6 +477,16 @@
 
 
     /**
+     * 查询所有员工
+     */
+    @RequestMapping(value = "/allUser")
+    public @ResponseBody
+    AjaxResult allUser() {
+        return new AjaxResult(AjaxResult.STATUS_SUCCESS, sysUsersService.findByRoleName(false, null));
+    }
+
+
+    /**
      * 根据角色名称查询店铺的员工
      */
     @RequestMapping(value = "/getShopStaffByRoleName")
diff --git a/zq-erp/src/main/java/com/matrix/system/common/actions/CommonDataAction.java b/zq-erp/src/main/java/com/matrix/system/common/actions/CommonDataAction.java
index bacb2b6..d71dc7b 100644
--- a/zq-erp/src/main/java/com/matrix/system/common/actions/CommonDataAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/common/actions/CommonDataAction.java
@@ -1,11 +1,19 @@
 package com.matrix.system.common.actions;
 
 import com.matrix.core.enums.EnumsManager;
+import com.matrix.core.enums.EnumsShowVo;
 import com.matrix.core.pojo.AjaxResult;
+import com.matrix.system.common.bean.reqVO.EnumCodeReqVo;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author 姜友瑶
@@ -20,10 +28,21 @@
     @Autowired
     private EnumsManager enumsManager;
 
-    @RequestMapping("/getEnums/{enumCode}")
+    @RequestMapping("/getEnum/{enumCode}")
     public AjaxResult getEnums(@PathVariable String enumCode) throws ClassNotFoundException {
         return AjaxResult.buildSuccessInstance(enumsManager.getShowEnum(enumCode));
     }
 
+    @RequestMapping("/getEnums")
+    public AjaxResult getEnums(@RequestBody @Validated EnumCodeReqVo reqVo) throws ClassNotFoundException {
+
+        Map<String,List<EnumsShowVo>> enumsMap=new HashMap<>();
+        for (String enumCode : reqVo.getEnumCodes()) {
+            List<EnumsShowVo> showEnum = enumsManager.getShowEnum(enumCode);
+            enumsMap.put(enumCode,showEnum);
+        }
+        return AjaxResult.buildSuccessInstance(enumsMap);
+    }
+
 
 }
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/common/bean/reqVO/EnumCodeReqVo.java b/zq-erp/src/main/java/com/matrix/system/common/bean/reqVO/EnumCodeReqVo.java
new file mode 100644
index 0000000..4442013
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/common/bean/reqVO/EnumCodeReqVo.java
@@ -0,0 +1,15 @@
+package com.matrix.system.common.bean.reqVO;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+@Data
+public class EnumCodeReqVo {
+    /**
+     * 枚举编码
+     */
+    @NotEmpty
+    List<String> enumCodes;
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/common/bean/reqVO/OperationLogReqVo.java b/zq-erp/src/main/java/com/matrix/system/common/bean/reqVO/OperationLogReqVo.java
new file mode 100644
index 0000000..b67df9f
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/common/bean/reqVO/OperationLogReqVo.java
@@ -0,0 +1,77 @@
+package com.matrix.system.common.bean.reqVO;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class OperationLogReqVo {
+
+    /**
+     *公司id
+     */
+    private Long  companyId;
+
+    /**
+     *门店id
+     */
+    private Long  shopId;
+
+    /**
+     *操作用户id
+     */
+    private Long  opeUserId;
+
+    /**
+     * 会员id
+     */
+    private String  vipQueryKey;
+
+    /**
+     * 操作功能
+     */
+    private Integer  opeFunction;
+
+    /**
+     * 单据按钮
+     */
+    private Integer  opeBut;
+
+    /**
+     * 单据号
+     */
+    private String  billNo;
+
+    /**
+     * 操作人ip
+     */
+    private String  ip;
+
+    /**
+     * 操作备注
+     */
+    private String  note;
+
+    /**
+     * 操作时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd hh:mm", timezone="GMT+8")
+    private Date startTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd hh:mm", timezone="GMT+8")
+    private Date endTime;
+
+    private Integer pageNum = 0;
+
+    private Integer pageSize = 20;
+
+    private String order = "desc";
+
+    /**
+     * 排序-根据哪些字段排序 默认'create_time
+     */
+    private String sort = "create_time";
+
+
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/common/bean/respVO/OperationLogRespVo.java b/zq-erp/src/main/java/com/matrix/system/common/bean/respVO/OperationLogRespVo.java
new file mode 100644
index 0000000..0a0001f
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/common/bean/respVO/OperationLogRespVo.java
@@ -0,0 +1,66 @@
+package com.matrix.system.common.bean.respVO;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class OperationLogRespVo {
+
+
+    /**
+     * 主键
+     */
+    private Long  id;
+
+    /**
+     *门店名称
+     */
+    private String  shopName;
+
+    /**
+     *操作用户
+     */
+    private String  opeUser;
+
+
+    /**
+     * 会员
+     */
+    private String  vipName;
+
+    /**
+     * 操作功能
+     */
+    private Integer  opeFunction;
+    private String  opeFunctionLabel;
+
+    /**
+     * 单据按钮
+     */
+    private Integer  opeBut;
+    private String  opeButLabel;
+
+    /**
+     * 单据号
+     */
+    private String  billNo;
+
+    /**
+     * 操作人ip
+     */
+    private String  ip;
+
+    /**
+     * 操作备注
+     */
+    private String  note;
+
+    /**
+     * 操作时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone="GMT+8")
+    private Date createTime;
+
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/common/dao/OperationLogDao.java b/zq-erp/src/main/java/com/matrix/system/common/dao/OperationLogDao.java
index c02981a..1250633 100644
--- a/zq-erp/src/main/java/com/matrix/system/common/dao/OperationLogDao.java
+++ b/zq-erp/src/main/java/com/matrix/system/common/dao/OperationLogDao.java
@@ -1,7 +1,11 @@
 package com.matrix.system.common.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.matrix.system.common.bean.OperationLog;
+import com.matrix.system.common.bean.reqVO.OperationLogReqVo;
+import com.matrix.system.common.bean.respVO.OperationLogRespVo;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * @description 单据操作记录
@@ -11,5 +15,5 @@
 public interface OperationLogDao extends BaseMapper<OperationLog> {
 
 
-	
+    Page<OperationLogRespVo> selectPageList(Page<OperationLogReqVo> page,@Param("param")  OperationLogReqVo operationLogReqVo);
 }
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/common/service/OperationLogService.java b/zq-erp/src/main/java/com/matrix/system/common/service/OperationLogService.java
index 1b84f3e..c2b62a1 100644
--- a/zq-erp/src/main/java/com/matrix/system/common/service/OperationLogService.java
+++ b/zq-erp/src/main/java/com/matrix/system/common/service/OperationLogService.java
@@ -1,7 +1,10 @@
 package com.matrix.system.common.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.matrix.system.common.bean.OperationLog;
+import com.matrix.system.common.bean.reqVO.OperationLogReqVo;
+import com.matrix.system.common.bean.respVO.OperationLogRespVo;
 import com.matrix.system.enums.OperationButtonEnum;
 import com.matrix.system.enums.OperationFunctionEnum;
 
@@ -19,4 +22,6 @@
                        Long billId, String billNo, Long vipId);
 
     void saveOperation(Long companyId, Long shopId, Long suId, OperationFunctionEnum operationFunctionEnum, OperationButtonEnum operationButtonEnum,String note);
+
+    Page<OperationLogRespVo> selectPage(Page<OperationLogReqVo> page, OperationLogReqVo operationLogReqVo);
 }
diff --git a/zq-erp/src/main/java/com/matrix/system/common/service/impl/OperationLogServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/common/service/impl/OperationLogServiceImpl.java
index 198aff8..f50ef56 100644
--- a/zq-erp/src/main/java/com/matrix/system/common/service/impl/OperationLogServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/common/service/impl/OperationLogServiceImpl.java
@@ -1,12 +1,16 @@
 package com.matrix.system.common.service.impl;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.matrix.core.tools.WebUtil;
 import com.matrix.system.common.bean.OperationLog;
+import com.matrix.system.common.bean.reqVO.OperationLogReqVo;
+import com.matrix.system.common.bean.respVO.OperationLogRespVo;
 import com.matrix.system.common.dao.OperationLogDao;
 import com.matrix.system.common.service.OperationLogService;
 import com.matrix.system.enums.OperationButtonEnum;
 import com.matrix.system.enums.OperationFunctionEnum;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 /**
@@ -14,6 +18,9 @@
  */
 @Service
 public class OperationLogServiceImpl extends ServiceImpl<OperationLogDao, OperationLog> implements OperationLogService {
+
+    @Autowired
+    OperationLogDao operationLogDao;
 
     @Override
     public void saveOperation(Long companyId, Long shopId, Long userId, OperationFunctionEnum operationFunctionEnum, OperationButtonEnum operationButtonEnum,
@@ -63,5 +70,16 @@
 
     }
 
+    @Override
+    public Page<OperationLogRespVo> selectPage(Page<OperationLogReqVo> page, OperationLogReqVo operationLogReqVo) {
+
+        Page<OperationLogRespVo> voPage=operationLogDao.selectPageList(page, operationLogReqVo);
+        voPage.getRecords().stream().forEach(e->{
+            e.setOpeFunctionLabel(OperationFunctionEnum.getByValue(e.getOpeFunction()));
+            e.setOpeButLabel(OperationButtonEnum.getByValue(e.getOpeBut()));
+        });
+
+        return voPage;
+    }
 
 }
diff --git a/zq-erp/src/main/java/com/matrix/system/enums/OperationButtonEnum.java b/zq-erp/src/main/java/com/matrix/system/enums/OperationButtonEnum.java
index f3a338e..5c774a5 100644
--- a/zq-erp/src/main/java/com/matrix/system/enums/OperationButtonEnum.java
+++ b/zq-erp/src/main/java/com/matrix/system/enums/OperationButtonEnum.java
@@ -3,6 +3,7 @@
 import com.google.common.collect.Lists;
 import com.matrix.core.enums.EnumApiShowAble;
 import com.matrix.core.enums.EnumsShowVo;
+import com.matrix.core.exception.GlobleException;
 
 import java.util.List;
 import java.util.stream.Collectors;
@@ -41,6 +42,15 @@
         this.displayName = displayName;
     }
 
+    public static String getByValue(Integer value) {
+        for (int i = 0; i < values().length; i++) {
+            if (value.equals(values()[i].getValue())) {
+                return values()[i].displayName;
+            }
+        }
+        throw new GlobleException("无效枚举值");
+    }
+
     @Override
     public String getEnumCode() {
         return "operationButton";
diff --git a/zq-erp/src/main/java/com/matrix/system/enums/OperationFunctionEnum.java b/zq-erp/src/main/java/com/matrix/system/enums/OperationFunctionEnum.java
index fdd2483..a8e24c1 100644
--- a/zq-erp/src/main/java/com/matrix/system/enums/OperationFunctionEnum.java
+++ b/zq-erp/src/main/java/com/matrix/system/enums/OperationFunctionEnum.java
@@ -3,20 +3,21 @@
 import com.google.common.collect.Lists;
 import com.matrix.core.enums.EnumApiShowAble;
 import com.matrix.core.enums.EnumsShowVo;
+import com.matrix.core.exception.GlobleException;
 
 import java.util.List;
 import java.util.stream.Collectors;
 
 /**
  * 操作功能枚举
+ *
  * @author jyy
  */
 public enum OperationFunctionEnum implements EnumApiShowAble {
 
     ORDER(1, "订单"),
     SERVICE_ORDER(2, "服务单"),
-    VIP_PROJECT(3, "会员套餐卡项"),
-    VIP_CARD(4, "会员卡");
+    ;
 
     private Integer value;
 
@@ -42,6 +43,16 @@
         ).collect(Collectors.toList());
     }
 
+    public static String getByValue(Integer value) {
+        for (int i = 0; i < values().length; i++) {
+            if (value.equals(values()[i].getValue())) {
+                return values()[i].displayName;
+            }
+        }
+        throw new GlobleException("无效枚举值");
+    }
+
+
     public Integer getValue() {
         return value;
     }
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
index 6b98538..8660274 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
@@ -1045,7 +1045,7 @@
      * @date 2016年9月19日
      */
     public void addMoneyCardUse(SysOrder sourceOrder) {
-
+        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
         List<SysOrderItem> orderItemList = sourceOrder.getItems();
         for (SysOrderItem sysOrderItem : orderItemList) {
             // 如果购买的是充值卡
@@ -1084,6 +1084,7 @@
                     moneyCardUse.setFailTime(invalidTime);
 
                     moneyCardUseDao.insert(moneyCardUse);
+
                 }
             }
         }
diff --git a/zq-erp/src/main/java/com/matrix/system/hiveErp/action/OperationLogController.java b/zq-erp/src/main/java/com/matrix/system/hiveErp/action/OperationLogController.java
new file mode 100644
index 0000000..c9b9303
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hiveErp/action/OperationLogController.java
@@ -0,0 +1,106 @@
+package com.matrix.system.hiveErp.action;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.matrix.core.pojo.AjaxResult;
+import com.matrix.core.tools.DateUtil;
+import com.matrix.core.tools.excl.ExcelSheetPO;
+import com.matrix.core.tools.excl.ExcelUtil;
+import com.matrix.core.tools.excl.ExcelVersion;
+import com.matrix.system.common.bean.reqVO.OperationLogReqVo;
+import com.matrix.system.common.bean.respVO.OperationLogRespVo;
+import com.matrix.system.common.service.OperationLogService;
+import com.matrix.system.common.tools.ResponseHeadUtil;
+import com.matrix.system.hive.action.util.QueryUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.ui.ModelMap;
+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.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.List;
+
+@RestController
+@RequestMapping(value = "admin/operation")
+public class OperationLogController {
+
+
+    @Autowired
+    private OperationLogService operationLogService;
+
+    /**
+     * 查询单据操作记录
+     *
+     * @param operationLogReqVo
+     * @return
+     */
+    @PostMapping(value = "/getOperation")
+    public
+    AjaxResult getOperation(@RequestBody OperationLogReqVo operationLogReqVo) {
+        QueryUtil.setQueryLimitCom(operationLogReqVo);
+        Page<OperationLogReqVo> page = new Page<>(operationLogReqVo.getPageNum(),operationLogReqVo.getPageSize());
+
+        Page<OperationLogRespVo> pageResult = operationLogService.selectPage(page,operationLogReqVo);
+
+        return AjaxResult.buildSuccessInstance(pageResult.getRecords(),pageResult.getTotal());
+    }
+
+    /**
+     * 导出操作记录
+     */
+    @RequestMapping(value = "/exportExcel")
+    public void exportExcel(ModelMap model, HttpServletRequest request, HttpServletResponse response,OperationLogReqVo operationLogReqVo) throws Exception {
+
+        doExportExcel(response, operationLogReqVo);
+    }
+
+
+    private void doExportExcel(HttpServletResponse response, OperationLogReqVo operationLogReqVo) throws IOException {
+
+
+
+        List<ExcelSheetPO> res = new ArrayList<>();
+        ExcelSheetPO orderSheet = new ExcelSheetPO();
+        String title = "系统操作记录";
+        orderSheet.setSheetName(title);
+        orderSheet.setTitle(title);
+        String[] header = {"门店","操作用户", "操作时间", "操作功能","操作按钮", "单据号","操作会员","备注","IP地址"};
+        orderSheet.setHeaders(header);
+
+        QueryUtil.setQueryLimitCom(operationLogReqVo);
+        Page<OperationLogReqVo> page = new Page<>(operationLogReqVo.getPageNum(),operationLogReqVo.getPageSize());
+
+        Page<OperationLogRespVo> pageResult = operationLogService.selectPage(page,operationLogReqVo);
+
+        List<List<Object>> list = new ArrayList<>();
+        if (pageResult.getRecords().size() > 0) {
+            for (OperationLogRespVo item : pageResult.getRecords()) {
+                List<Object> temp = new ArrayList<>();
+                temp.add(item.getShopName());
+                temp.add(item.getOpeUser());
+                temp.add(DateUtil.dateToString(item.getCreateTime(), DateUtil.DATE_FORMAT_MM));
+                temp.add(item.getOpeFunctionLabel());
+                temp.add(item.getOpeButLabel());
+                temp.add(item.getBillNo());
+                temp.add(item.getVipName());
+                temp.add(item.getNote());
+                temp.add(item.getIp());
+                list.add(temp);
+            }
+        }
+        orderSheet.setDataList(list);
+        res.add(orderSheet);
+        response = ResponseHeadUtil.setExcelHead(response);
+        response.setHeader("Content-Disposition",
+                "attachment;filename=" + URLEncoder.encode(title + DateUtil.getTimeMark() + ".xlsx".trim(), "UTF-8"));
+        OutputStream os = response.getOutputStream();
+        ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, res, os, true);
+    }
+
+}
diff --git a/zq-erp/src/main/resources/mybatis/mapper/common/OperstionLogDao.xml b/zq-erp/src/main/resources/mybatis/mapper/common/OperstionLogDao.xml
new file mode 100644
index 0000000..3fe7b82
--- /dev/null
+++ b/zq-erp/src/main/resources/mybatis/mapper/common/OperstionLogDao.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.matrix.system.common.dao.OperationLogDao">
+
+
+    <select id="selectPageList" resultType="com.matrix.system.common.bean.respVO.OperationLogRespVo">
+
+        SELECT
+        a.id,
+        a.ope_function,
+        a.ope_but,
+        d.shop_short_name as shop_name,
+        b.su_name AS opeUser,
+        c.vip_name,
+        a.bill_no,
+        a.ip,
+        a.note,
+        a.create_time
+        FROM
+        sys_operation_log a
+        LEFT JOIN sys_users b ON a.ope_user_id = b.su_id
+        LEFT JOIN sys_vip_info c ON a.vip_id = c.id
+        LEFT JOIN sys_shop_info d ON a.shop_id = d.id
+        <where>
+            a.company_id=#{param.companyId}
+            <if test="param.shopId != null and param.shopId != 0  ">
+                and  a.shop_id=#{param.shopId}
+            </if>
+            <if test="param.opeUserId != null">
+                and  a.ope_user_id=#{param.opeUserId}
+            </if>
+
+            <if test="param.vipQueryKey != null and param.vipQueryKey != ''  ">
+                and c.VIP_NAME like concat('%',#{param.vipQueryKey},'%')
+                or (c.VIP_NO like concat('%',#{param.vipQueryKey},'%')
+                or c.PHONE like concat('%',#{param.vipQueryKey},'%')
+                )
+            </if>
+            <if test="param.opeFunction != null">
+                and a.ope_function=#{param.opeFunction}
+            </if>
+
+            <if test="param.opeBut != null">
+                and a.ope_but=#{param.opeBut}
+            </if>
+            <if test="param.billNo != null  and param.billNo != ''">
+                and a.bill_no like concat('%',#{param.billNo},'%')
+            </if>
+            <if test="param.ip != null  and param.ip != ''">
+                and a.ip like concat('%',#{param.ip},'%')
+            </if>
+            <if test="param.note != null and param.note != ''">
+                and a.note like concat('%',#{param.note},'%')
+            </if>
+            <if test="param.startTime != null  ">
+                and a.create_time  <![CDATA[>=]]> #{param.startTime}
+            </if>
+            <if test="param.endTime != null">
+                and a.create_time <![CDATA[<=]]> #{param.endTime}
+            </if>
+            order by ${param.sort} ${param.order}
+        </where>
+
+
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/operation-list.html b/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/operation-list.html
new file mode 100644
index 0000000..e0fd0a3
--- /dev/null
+++ b/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/operation-list.html
@@ -0,0 +1,333 @@
+<!DOCTYPE HTML>
+<html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml">
+<head>
+    <meta charset="utf-8">
+    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
+    <meta name="renderer" content="webkit|ie-comp|ie-stand">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport"
+          content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
+    <meta http-equiv="Cache-Control" content="no-siteapp"/>
+    <LINK rel="Bookmark" href="../images/favicon.ico">
+    <!-- 本框架基本脚本和样式 -->
+    <script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script>
+    <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}">
+    <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/>
+    <title></title>
+    <style>
+        .panel-body{
+            overflow: hidden;
+        }
+        .buttonPanel{
+            background: #ffffff;
+            padding: 10px 10px ;
+            margin: 0px 0px 10px 0px;
+        }
+        .rowPanel{
+            background: #ffffff;
+            padding: 0px 10px ;
+            padding-top: 10px;
+            margin: 0px 0px 10px 0px;
+        }
+        .paginationStyle{
+            background: #ffffff;
+            padding: 10px 10px;
+            margin: 0px 0px 10px 0px;
+            text-align: right;
+        }
+    </style>
+</head>
+<body>
+<div class="panel-body" id="app">
+
+    <el-row class="buttonPanel">
+        <el-button @click="exportExcel" type="primary" >导出</el-button>
+    </el-row>
+
+    <el-row class="rowPanel"  >
+        <el-form ref="form" :model="form" inline >
+
+            <el-form-item label="操作人" prop="flowType">
+                <el-select v-model="form.opeUserId" placeholder="">
+                    <el-option
+                            v-for="item in userList"
+                            :key="item.suId"
+                            :label="item.suName"
+                            :value="item.suId">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="操作功能" prop="flowType">
+                <el-select v-model="form.opeFunction" placeholder="">
+                    <el-option
+                            v-for="item in functionList"
+                            :key="item.value"
+                            :label="item.displayName"
+                            :value="item.value">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="操作按钮" prop="flowType">
+                <el-select v-model="form.opeBut" placeholder="">
+                    <el-option
+                            v-for="item in btnList"
+                            :key="item.value"
+                            :label="item.displayName"
+                            :value="item.value">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="会员" prop="vipQueryKey">
+                <el-input v-model="form.vipQueryKey" placeholder="请输入会员姓名/编号/手机"></el-input>
+            </el-form-item>
+            <el-form-item label="门店" prop="shopId">
+                <el-select v-model="form.shopId" placeholder="请选择">
+                    <el-option
+                            v-for="item in shopList"
+                            :key="item.shopShortName"
+                            :label="item.shopShortName"
+                            :value="item.id">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+
+            <el-form-item label="订单号" prop="billNo">
+                <el-input v-model="form.billNo"></el-input>
+            </el-form-item>
+            <el-form-item label="IP" prop="ip">
+                <el-input v-model="form.ip"></el-input>
+            </el-form-item>
+
+            <el-form-item label="备注" prop="note">
+                <el-input v-model="form.note"></el-input>
+            </el-form-item>
+
+
+            <el-form-item label="时间" prop="datetimeArr">
+                <el-date-picker
+                        v-model="form.datetimeArr"
+                        type="daterange"
+                        range-separator="至" format="yyyy-MM-dd HH:mm"
+                        start-placeholder="开始日期"
+                        end-placeholder="结束日期">
+                </el-date-picker>
+            </el-form-item>
+
+
+
+
+
+            <el-button type="primary" @click="search" >搜索</el-button>
+            <el-button @click="resetForm('form')">重置</el-button>
+        </el-form>
+    </el-row>
+
+    <el-row class="table-style"  >
+
+        <el-table id="proj" :data="table.rows"  :height="height" stripe @sort-change="sortChange">
+            <el-table-column
+                    prop="shopName"
+                    label="门店"
+                    width="180">
+            </el-table-column>
+            <el-table-column
+                    prop="opeUser"
+                    label="操作用户"
+                    width="240">
+            </el-table-column>
+            <el-table-column
+                    prop="createTime"
+                    sortable="custom"
+                    label="操作时间"
+                    show-overflow-tooltip
+                    width="180">
+            </el-table-column>
+            <el-table-column
+                    prop="opeFunctionLabel"
+                    label="操作功能">
+            </el-table-column>
+            <el-table-column
+                    prop="opeButLabel"
+                    label="操作按钮">
+            </el-table-column>
+            <el-table-column
+                    prop="billNo"
+                    label="单据号">
+            </el-table-column>
+            <el-table-column
+                    prop="vipName"
+                    label="操作会员">
+            </el-table-column>
+            <el-table-column
+                    prop="note"
+                    label="备注">
+            </el-table-column>
+            <el-table-column
+                    prop="ip"
+                    label="IP地址">
+            </el-table-column>
+        </el-table>
+    </el-row>
+    <el-row class="paginationStyle"  >
+        <el-pagination background
+                       @size-change="changePageSize"
+                       @current-change="changeCurrentPage"
+                       :current-page="table.currentPage"
+                       :page-sizes="[10, 20, 30, 50]"
+                       :page-size="table.pageSize"
+                       layout="total, sizes, prev, pager, next, jumper"
+                       :total="table.total">
+        </el-pagination>
+    </el-row>
+
+</div>
+</body>
+<script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script>
+<script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script>
+<script type="text/javascript" th:src="@{/plugin/layer/layer.js}"></script>
+<script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script>
+<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script>
+<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script>
+<script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script>
+<script type="text/javascript" th:inline="javascript">
+
+    var vue = new Vue({
+        el: '#app',
+        data: {
+            table:{
+                rows:[],
+                total:0,
+                pageSize:10,
+                currentPage:1,
+            },
+            form:{
+                name:null,
+                datetimeArr:'',
+                payMethod:'',
+                flowType:'',
+                orderNo:'',
+                oprationMan:'',
+                queryKey:'',
+                shopId:'',
+            },
+            userList: [],
+            height:'calc(100vh - 240px)',
+            functionList:[],
+            btnList:[],
+            shopList:[{id:0,shopShortName:'全部'}],
+        },
+        created: function () {
+            let _this=this;
+            //用户列表
+            AjaxProxy.requst({
+                app: _this,
+                url: basePath + '/admin/allUser',
+                callback: function (data) {
+                    _this.userList = data.rows;
+                }
+            });
+            //获取枚举列表
+            AjaxProxy.requst({
+                app: _this,
+                url: basePath + '/common/data/getEnums',
+                data:{"enumCodes":["operationFunction","operationButton"]},
+                callback: function (data) {
+                    _this.btnList = data.data.operationButton;
+                    _this.functionList = data.data.operationFunction;
+                    _this.form.opeFunction=_this.functionList[0].value;
+                }
+            });
+
+            //加载门店
+            AjaxProxy.requst({
+                app:_this,
+                url:basePath+"/admin/shopInfo/findAll",
+                callback:function (data) {
+                    data.rows.forEach(shop=>{
+                        _this.shopList.push(shop);
+                    });
+                }
+
+            })
+
+            this.loadData();
+            window.addEventListener("keydown", this.keydown);
+        },
+        methods: {
+            changePageSize(val) {
+                this.table.pageSize = val;
+                this.loadData();
+            },
+            changeCurrentPage(val) {
+                this.table.currentPage = val;
+                this.loadData();
+            },
+            resetForm(formName) {
+                this.$refs[formName].resetFields();
+            },
+            sortChange:function (column){
+                if(column.order){
+                    if(column.order.indexOf("desc")){
+                        this.form.order="desc";
+                    }else{
+                        this.form.order="asc";
+                    }
+                    this.form.sort=column.prop;
+                    this.loadData();
+                }
+            },
+            loadData:function(){
+                let _this = this;
+                let data=_this.getRequestParam();
+                data.pageSize=_this.table.pageSize;
+                data.pageNum=_this.table.currentPagey56u;
+                AjaxProxy.requst({
+                    app: _this,
+                    data:data,
+                    url: basePath + '/admin/operation/getOperation',
+                    callback: function (data) {
+                        _this.table.rows = data.rows;
+                        _this.table.total=data.total;
+                    }
+                });
+            },
+            getRequestParam(){
+                let _this = this;
+                let data=   {
+                    shopId:_this.form.shopId,
+                    opeUserId:_this.form.opeUserId,
+                    vipQueryKey:_this.form.vipQueryKey,
+                    opeFunction:_this.form.opeFunction,
+                    opeBut:_this.form.opeBut,
+                    billNo:_this.form.billNo,
+                    ip:_this.form.ip,
+                    note:_this.form.note,
+                    startTime:_this.form.datetimeArr?moment(_this.form.datetimeArr[0]).format("YYYY-MM-DD HH:mm"):'',
+                    endTime:_this.form.datetimeArr?moment(_this.form.datetimeArr[1]).format("YYYY-MM-DD HH:mm"):'',
+                    order:_this.form.order,
+                }
+                console.log(data);
+                return data;
+            },
+            search:function(){
+                this.table.currentPage=1;
+                this.loadData();
+            },
+            keydown(evt){
+                if(evt.keyCode==13) {
+                    this.search();
+                }
+            },
+
+            //导出
+            exportExcel(){
+                window.location.href=basePath+"/admin/operation/exportExcel?"+MTools.jsonToUrlParam(this.getRequestParam());
+            }
+
+        }
+    });
+
+
+</script>
+</body>
+</html>
\ No newline at end of file

--
Gitblit v1.9.1