From 7cac5d429cfd5b648bb6bab5183461d2ca05fa07 Mon Sep 17 00:00:00 2001
From: 李宇 <986321569@qq.com>
Date: 星期三, 26 五月 2021 10:03:51 +0800
Subject: [PATCH] 添加导出人员

---
 src/main/webapp/user_mng.xhtml                                         |    4 +
 src/main/java/com/nanometer/smartlab/service/SysUserService.java       |    4 ++
 src/main/java/com/nanometer/smartlab/controller/UserMngController.java |   11 +++++
 src/main/java/com/nanometer/smartlab/dao/SysUserDao.xml                |   45 ++++++++++++++++++++++
 src/main/java/com/nanometer/smartlab/service/SysUserServiceImpl.java   |   32 ++++++++++++++--
 src/main/java/com/nanometer/smartlab/dao/SysUserDao.java               |    3 +
 6 files changed, 93 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/nanometer/smartlab/controller/UserMngController.java b/src/main/java/com/nanometer/smartlab/controller/UserMngController.java
index 48c079b..0ba7a4d 100644
--- a/src/main/java/com/nanometer/smartlab/controller/UserMngController.java
+++ b/src/main/java/com/nanometer/smartlab/controller/UserMngController.java
@@ -571,6 +571,17 @@
         return dataModel;
     }
 
+    public void exportLab2Excel(){
+        try {
+            List<Map> list = sysUserService.getExportUserList(arp, name,departmentName,project,company);
+            sysUserService.exportUser2Excel(list);
+            FacesUtils.info("导出成功");
+        }catch (Exception e){
+            e.printStackTrace();
+            FacesUtils.warn("导出失败");
+        }
+    }
+
     public SysUser getSysUser() {
         return sysUser;
     }
diff --git a/src/main/java/com/nanometer/smartlab/dao/SysUserDao.java b/src/main/java/com/nanometer/smartlab/dao/SysUserDao.java
index 010a62b..c2502aa 100644
--- a/src/main/java/com/nanometer/smartlab/dao/SysUserDao.java
+++ b/src/main/java/com/nanometer/smartlab/dao/SysUserDao.java
@@ -57,4 +57,7 @@
     int getUserCountInProject(Map params);
 
     List<SysUser> getUserInProject(Map params);
+
+    List<Map> getExportUserList(@Param("arp") String arp,@Param("name") String name, @Param("departmentName") String departmentName,
+                                @Param("project") String project,@Param("company") String company);
 }
diff --git a/src/main/java/com/nanometer/smartlab/dao/SysUserDao.xml b/src/main/java/com/nanometer/smartlab/dao/SysUserDao.xml
index d4b7cac..196db18 100644
--- a/src/main/java/com/nanometer/smartlab/dao/SysUserDao.xml
+++ b/src/main/java/com/nanometer/smartlab/dao/SysUserDao.xml
@@ -121,7 +121,9 @@
 
   <select id="getSysUserByIdCard" parameterType="java.lang.String"  resultMap="SysUser" >
     select * from sys_user
-    where id_card = #{idCard} and valid_flag = 1
+    where id_card = #{idCard}
+    and valid_flag = 1
+    limit 1
   </select>
 
   <select id="getSysUserList" parameterType="java.util.Map" resultMap="SysUser">
@@ -334,6 +336,47 @@
             limit #{first}, #{pageSize}
         </if>
     </select>
+    <select id="getExportUserList" resultType="Map">
+        select
+        bm.meta_value AS departmentName,
+        bm1.meta_value AS companyName,
+        su.project,
+        su.arp,
+        su.name,
+        su.account,
+        su.id_card as idCard,
+        su.phone,
+        su.email,
+        su.memo,
+        br. NAME AS roleName,
+        CASE WHEN su.approver_flag=0 then '否' else '是' END AS approver,
+        CASE WHEN su.see_flag=2 then '一般人员' WHEN su.see_flag=3 then '安全员' WHEN su.see_flag=11 then '系统管理员'WHEN su.see_flag=0 then '实验室管理员' END AS seeName,
+        CASE WHEN su.waster=2 then '危废管理员' WHEN su.waster=1 then '危废处理人员' else '' END AS wasterName,
+        su.update_time as updateTime
+        from sys_user as su
+        left join base_role as br on su.role_id = br.id
+        left join base_meta bm on su.department = bm.id
+        left join base_meta bm1 on bm1.id = su.company
+        <where>
+            su.valid_flag = 1
+            <if test="arp != null and arp != ''">
+                and su.arp like #{arp}
+            </if>
+            <if test="name != null and name != ''">
+                and su.name like #{name}
+            </if>
+            <if test="departmentName != null and departmentName != ''">
+                and su.department like concat("%",#{departmentName},"%")
+            </if>
+            <if test="project != null and project != ''">
+                and su.project like concat("%",#{project},"%")
+            </if>
+            <if test="company != null and company != ''">
+                and bm1.meta_value like concat("%",#{company},"%")
+            </if>
+        </where>
+        order by su.arp ASC
+    </select>
     <update id="updateUserPointBySelective" parameterType="java.util.Map">
     update sys_user set point=#{point}
     <where>
diff --git a/src/main/java/com/nanometer/smartlab/service/SysUserService.java b/src/main/java/com/nanometer/smartlab/service/SysUserService.java
index 4d591aa..8915b4d 100644
--- a/src/main/java/com/nanometer/smartlab/service/SysUserService.java
+++ b/src/main/java/com/nanometer/smartlab/service/SysUserService.java
@@ -48,4 +48,8 @@
     List<LaboratoryVo.LaboratoryUser> getUserByProject(String project);
 
     List<SysUser> getUserByArp(String arp);
+
+    List<Map> getExportUserList(String arp, String name, String departmentName, String project, String company);
+
+    void exportUser2Excel(List<Map> list)throws Exception;
 }
diff --git a/src/main/java/com/nanometer/smartlab/service/SysUserServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/SysUserServiceImpl.java
index 1b81ddc..11afaf0 100644
--- a/src/main/java/com/nanometer/smartlab/service/SysUserServiceImpl.java
+++ b/src/main/java/com/nanometer/smartlab/service/SysUserServiceImpl.java
@@ -13,6 +13,7 @@
 import com.nanometer.smartlab.exception.AlarmException;
 import com.nanometer.smartlab.exception.BusinessException;
 import com.nanometer.smartlab.exception.ExceptionEnumCode;
+import com.nanometer.smartlab.util.ExcelUtils;
 import com.nanometer.smartlab.util.FacesUtils;
 import com.nanometer.smartlab.util.IDUtils;
 import com.nanometer.smartlab.util.MessageUtil;
@@ -26,10 +27,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * Created by johnny on 17/11/20.
@@ -396,5 +394,31 @@
         return sysUserDao.getUserByArp(arp);
     }
 
+    @Override
+    public List<Map> getExportUserList(String arp, String name, String departmentName, String project, String company) {
+        return sysUserDao.getExportUserList(arp, name, departmentName, project, company);
+    }
+
+    @Override
+    public void exportUser2Excel(List<Map> list)throws Exception {
+        Map<String, String> map = new LinkedHashMap<>();
+        map.put("companyName", "单位");
+        map.put("departmentName", "部门");
+        map.put("project", "课题组");
+        map.put("arp", "ARP");
+        map.put("name", "姓名");
+        map.put("account", "账号");
+        map.put("idCard", "ID卡号");
+        map.put("phone", "电话");
+        map.put("email", "邮箱");
+        map.put("memo", "备注");
+        map.put("roleName", "角色");
+        map.put("approver", "审批者");
+        map.put("seeName", "可见度");
+        map.put("wasterName", "危废人员");
+        map.put("updateTime", "更新时间");
+        ExcelUtils.export2Excel(list,"人员信息",map);
+    }
+
 
 }
diff --git a/src/main/webapp/user_mng.xhtml b/src/main/webapp/user_mng.xhtml
index 5e590ba..4764996 100644
--- a/src/main/webapp/user_mng.xhtml
+++ b/src/main/webapp/user_mng.xhtml
@@ -35,7 +35,7 @@
             </p:panelGrid>
         </p:panel>
         <p:panel styleClass="center-body">
-            <p:panelGrid columns="5" styleClass="btn">
+            <p:panelGrid columns="6" styleClass="btn">
                 <p:commandButton value="新建" styleClass="new-btn"
                                  process="@form"
                                  actionListener="#{userMngController.onNewBtnClick}"
@@ -60,6 +60,8 @@
                 <p:outputLabel rendered="#{userMngController.isAccess('导入')}">
                     <a href="resources/template/用户导入模板.xlsx" style="display: inline-block;"><img src="resources/images/xlsx.png" width="30px;" alt=""/></a>
                 </p:outputLabel>
+                <p:commandButton value="导出" styleClass="new-btn" ajax="false"  actionListener="#{userMngController.exportLab2Excel}"
+                />
                 <script>
                     function importUser(){
                         $("#userMngForm\\:importUserBtn_input").click();

--
Gitblit v1.9.2