From 7336d925a37ae4f02e8cad10948db662178e9c5e Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期二, 27 五月 2025 11:33:46 +0800
Subject: [PATCH] 完善用户导出功能

---
 pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserCtrl.java |  213 +++++++++++++++++++++++++++++++----------------------
 1 files changed, 124 insertions(+), 89 deletions(-)

diff --git a/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserCtrl.java b/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserCtrl.java
index 2c16460..420464f 100644
--- a/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserCtrl.java
+++ b/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserCtrl.java
@@ -1,23 +1,32 @@
 package com.dy.pmsBase.user;
 
+import com.alibaba.excel.converters.Converter;
 import com.dy.common.aop.SsoAop;
 import com.dy.common.aop.SsoPowerAop;
 import com.dy.common.util.MD5;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.common.webUtil.QueryResultVo;
+import com.dy.pmsGlobal.aop.Log;
+import com.dy.pmsGlobal.pojoBa.BaRole;
 import com.dy.pmsGlobal.pojoBa.BaUser;
 import com.dy.pmsGlobal.util.Constant;
+import com.dy.pmsGlobal.util.ExportExcelUtil;
+import com.dy.pmsGlobal.util.QrCodeConstant;
+import com.dy.pmsGlobal.util.QrCodeUtil;
+import com.google.zxing.WriterException;
 import com.mysql.cj.util.StringUtils;
+import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.MediaType;
-import org.springframework.validation.BindingResult;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.io.IOException;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 
@@ -29,6 +38,9 @@
 @RequestMapping(path = "user")
 @SuppressWarnings("unchecked")//java鐗堟湰瓒婇珮锛屽娉涘瀷绾︽潫瓒婁弗锛屾墍浠ラ厤缃甋uppressWarnings("unchecked")
 public class UserCtrl {
+
+    private static final String fileName = "淇℃伅" ;
+    private static final String sheetName = "鐢ㄦ埛淇℃伅" ;
 
     @Autowired
     private UserSv sv;
@@ -59,15 +71,11 @@
      */
     @PostMapping(path = "some", consumes = MediaType.APPLICATION_JSON_VALUE)
     //@SsoAop() //鍙湁鐧诲綍楠岃瘉锛屾病鏈夋潈闄愰獙璇�
-    @SsoPowerAop(power = "10100010") //鐧诲綍涓庢潈闄愬悓鏃堕獙璇�
+    @SsoPowerAop(power = "10100000") //鐧诲綍涓庢潈闄愬悓鏃堕獙璇�
+    @Log("鏌ヨ鐢ㄦ埛")
     public BaseResponse<QueryResultVo<List<BaUser>>> some(@RequestBody QueryVo vo) {
-        try {
-            QueryResultVo<List<BaUser>> res = this.sv.selectSome(vo);
-            return BaseResponseUtils.buildSuccess(res);
-        } catch (Exception e) {
-            log.error("鏌ヨ鐢ㄦ埛寮傚父", e);
-            return BaseResponseUtils.buildException(e.getMessage());
-        }
+        QueryResultVo<List<BaUser>> res = this.sv.selectSome(vo);
+        return BaseResponseUtils.buildSuccess(res);
     }
 
     /**
@@ -77,49 +85,38 @@
     //@GetMapping(path = "one", consumes = MediaType.TEXT_PLAIN_VALUE)//鎸囧墠绔悜鍚庝紶鐨勫弬鏁扮被鍨�
     @GetMapping(path = "one")
     //@SsoAop() //鍙湁鐧诲綍楠岃瘉锛屾病鏈夋潈闄愰獙璇�
-    @SsoPowerAop(power = "10100010") //鐧诲綍涓庢潈闄愬悓鏃堕獙璇�
+    @SsoPowerAop(power = "10100000") //鐧诲綍涓庢潈闄愬悓鏃堕獙璇�
+    @Log("鏌ヨ鍗曚釜鐢ㄦ埛")
     public BaseResponse<BaUser> one(String id) {
-        try {
-            return BaseResponseUtils.buildSuccess(this.sv.selectById(Long.parseLong(id)));
-        } catch (Exception e) {
-            log.error("鏌ヨ涓�涓敤鎴锋暟鎹紓甯�", e);
-            return BaseResponseUtils.buildException(e.getMessage());
-        }
+        return BaseResponseUtils.buildSuccess(this.sv.selectById(Long.parseLong(id)));
     }
 
     /**
      * 淇濆瓨鐢ㄦ埛淇℃伅
      * @param po
-     * @param bindingResult
      * @return
      */
     @PostMapping(path = "save", consumes = MediaType.APPLICATION_JSON_VALUE)
     //@SsoAop() //鍙湁鐧诲綍楠岃瘉锛屾病鏈夋潈闄愰獙璇�
-    @SsoPowerAop(power = "10100011") //鐧诲綍涓庢潈闄愬悓鏃堕獙璇�
-    public BaseResponse<Boolean> save(@RequestBody @Valid BaUser po, BindingResult bindingResult) {
-        if (bindingResult != null && bindingResult.hasErrors()) {
-            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
-        }
+    @SsoPowerAop(power = "10100001") //鐧诲綍涓庢潈闄愬悓鏃堕獙璇�
+    @Log("淇濆瓨鐢ㄦ埛淇℃伅")
+    public BaseResponse<Boolean> save(@RequestBody @Valid BaUser po) throws Exception{
         po.id = null;
         Long id;
-        try {
-            po.supperAdmin = Constant.no.byteValue() ;
-            po.disabled = false ;//榛樿涓嶇鐢�
-            po.deleted = false;//榛樿涓嶅垹闄�
-            if (!StringUtils.isNullOrEmpty(po.password)) {
+        po.supperAdmin = Constant.no.byteValue() ;
+//            po.disabled = false ;//榛樿涓嶇鐢�
+        po.deleted = false;//榛樿涓嶅垹闄�
+        po.supperAdmin = 0;//榛樿涓嶆槸绠$悊鍛�
+        if (!StringUtils.isNullOrEmpty(po.password)) {
                 /*
                 濡傛灉鍓嶇杩涜浜哹ase64鍔犲瘑
                 po.password = new String(Base64.getDecoder().decode(po.password)) ;
                 */
-                po.password = MD5.encrypt(po.password);//杩涜鍔犲瘑鐮�
-            } else {
-                po.password = MD5.encrypt(defaultPassword);
-            }
-            id = this.sv.save(po);
-        } catch (Exception e) {
-            log.error("淇濆瓨鐢ㄦ埛寮傚父", e);
-            return BaseResponseUtils.buildException(e.getMessage());
+            po.password = MD5.encrypt(po.password);//杩涜鍔犲瘑鐮�
+        } else {
+            po.password = MD5.encrypt(defaultPassword);
         }
+        id = this.sv.save(po);
         if (id <= 0) {
             return BaseResponseUtils.buildFail("鏁版嵁搴撳瓨鍌ㄥけ璐�");
         } else {
@@ -130,29 +127,54 @@
     /**
      * 鏇存柊鐢ㄦ埛淇℃伅
      * @param po
-     * @param bindingResult
      * @return
      */
     @PostMapping(path = "update", consumes = MediaType.APPLICATION_JSON_VALUE)
     //@SsoAop() //鍙湁鐧诲綍楠岃瘉锛屾病鏈夋潈闄愰獙璇�
-    @SsoPowerAop(power = "10100011") //鐧诲綍涓庢潈闄愬悓鏃堕獙璇�
-    public BaseResponse<Boolean> update(@RequestBody @Validated BaUser po, BindingResult bindingResult) {
-        if (bindingResult != null && bindingResult.hasErrors()) {
-            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+    @SsoPowerAop(power = "10100001") //鐧诲綍涓庢潈闄愬悓鏃堕獙璇�
+    @Log("鏇存柊鐢ㄦ埛淇℃伅")
+    public BaseResponse<Boolean> update(@RequestBody @Validated BaUser po) {
+        po.password = null;//璁剧疆涓簄ull锛屼笉鍋氭洿鏂�
+        po.supperAdmin = null;//璁剧疆涓簄ull锛屼笉鍋氭洿鏂�
+        po.deleted = null;//璁剧疆涓簄ull锛屼笉鍋氭洿鏂�
+        int count = this.sv.update(po);
+        if (count <= 0) {
+            return BaseResponseUtils.buildFail("鏁版嵁搴撳瓨鍌ㄥけ璐�");
+        } else {
+            return BaseResponseUtils.buildSuccess(true);
         }
-        if (po.id == null) {
-            return BaseResponseUtils.buildFail("鏃犳暟鎹疄浣揑D");
+    }
+
+    /**
+     * 绂佺敤鎴栧惎鐢ㄧ敤鎴蜂俊鎭�
+     * @param po
+     * @return
+     */
+    @PostMapping(path="disabled")
+    @SsoPowerAop(power = "10100001")
+    @Log("绂佺敤鎴栧惎鐢ㄧ敤鎴蜂俊鎭�")
+    public BaseResponse<BaRole> disabled(@RequestBody BaUser po){
+        int count = sv.disabled(po.id,po.disabled);
+        if (count <= 0) {
+            return BaseResponseUtils.buildFail("鏁版嵁搴撳瓨鍌ㄥけ璐�");
+        } else {
+            return BaseResponseUtils.buildSuccess(true);
         }
-        int count;
-        try {
-            po.password = null;//璁剧疆涓簄ull锛屼笉鍋氭洿鏂�
-            po.supperAdmin = null;//璁剧疆涓簄ull锛屼笉鍋氭洿鏂�
-            po.deleted = null;//璁剧疆涓簄ull锛屼笉鍋氭洿鏂�
-            count = this.sv.update(po);
-        } catch (Exception e) {
-            log.error("淇敼鐢ㄦ埛寮傚父", e);
-            return BaseResponseUtils.buildException(e.getMessage());
-        }
+    }
+
+    /**
+     * 鍒犻櫎鐢ㄦ埛淇℃伅
+     * @param id
+     * @return
+     */
+    @GetMapping(path = "delete")
+    @SsoPowerAop(power = "10100001") //鐧诲綍涓庢潈闄愬悓鏃堕獙璇�
+    @Log("鍒犻櫎鐢ㄦ埛")
+    public BaseResponse<Boolean> delete(Long id) {
+        BaUser po = new BaUser();
+        po.id = id;
+        po.deleted = true;
+        int count = this.sv.update(po);
         if (count <= 0) {
             return BaseResponseUtils.buildFail("鏁版嵁搴撳瓨鍌ㄥけ璐�");
         } else {
@@ -168,7 +190,9 @@
     //@GetMapping(path = "changePassword", consumes = MediaType.TEXT_PLAIN_VALUE)
     @GetMapping(path = "changePassword")
     @SsoAop()
-    public BaseResponse<Boolean> changePassword(String id, String oldPassword, String newPassword) throws Exception {
+    @Log("淇敼瀵嗙爜")
+    public BaseResponse<Boolean> changePassword(String id, String oldPassword, String newPassword) throws Exception{
+        int count;
         if (id == null) {
             return BaseResponseUtils.buildFail("id涓嶈兘涓虹┖");
         }
@@ -178,30 +202,25 @@
         if (StringUtils.isNullOrEmpty(newPassword)) {
             return BaseResponseUtils.buildFail("鏂板瘑鐮佷笉鑳戒负绌�");
         }
-        /*
-        濡傛灉鍓嶇杩涜浜哹ase64鍔犲瘑
-        oldPassword = new String(Base64.getDecoder().decode(oldPassword)) ;
-        newPassword = new String(Base64.getDecoder().decode(newPassword)) ;
-        */
+            /*
+            濡傛灉鍓嶇杩涜浜哹ase64鍔犲瘑
+            oldPassword = new String(Base64.getDecoder().decode(oldPassword)) ;
+            newPassword = new String(Base64.getDecoder().decode(newPassword)) ;
+            */
         oldPassword = MD5.encrypt(oldPassword);//杩涜鍔犲瘑鐮�
         newPassword = MD5.encrypt(newPassword);//杩涜鍔犲瘑鐮�
 
-        Long idLg = Long.parseLong(id);
-        int count;
-        try {
-            BaUser po = this.sv.selectById(idLg);
-            if (Objects.isNull(po)) {
-                return BaseResponseUtils.buildFail("鏈緱鍒扮敤鎴凤紝璇锋眰澶辫触");
+        Long idLg = Long.parseLong(id) ;
+
+        BaUser po = this.sv.selectById(idLg);
+        if (Objects.isNull(po)) {
+            return BaseResponseUtils.buildFail("鏈緱鍒扮敤鎴凤紝璇锋眰澶辫触");
+        } else {
+            if (!po.password.equalsIgnoreCase(oldPassword)) {
+                return BaseResponseUtils.buildFail("鏃у瘑鐮佷笉姝g‘锛岃姹傚け璐�");
             } else {
-                if (!po.password.equalsIgnoreCase(oldPassword)) {
-                    return BaseResponseUtils.buildFail("鏃у瘑鐮佷笉姝g‘锛岃姹傚け璐�");
-                } else {
-                    count = this.sv.changePassword(idLg, newPassword);
-                }
+                count = this.sv.changePassword(idLg, newPassword);
             }
-        } catch (Exception e) {
-            log.error("淇濆瓨鐢ㄦ埛寮傚父", e);
-            return BaseResponseUtils.buildException(e.getMessage());
         }
         if (count <= 0) {
             return BaseResponseUtils.buildFail("鏁版嵁搴撳瓨鍌ㄥけ璐�");
@@ -218,30 +237,46 @@
      */
     @PostMapping(path = "resetPassword", consumes = MediaType.APPLICATION_JSON_VALUE)
     //@SsoAop() //鍙湁鐧诲綍楠岃瘉锛屾病鏈夋潈闄愰獙璇�
-    @SsoPowerAop(power = "10100011") //鐧诲綍涓庢潈闄愬悓鏃堕獙璇�
-    public BaseResponse<Boolean> resetPassword(@RequestBody @Validated ResetPasswordVo vo, BindingResult bindingResult) throws Exception {
-        if (bindingResult != null && bindingResult.hasErrors()) {
-            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
-        }
+    @SsoPowerAop(power = "10100001") //鐧诲綍涓庢潈闄愬悓鏃堕獙璇�
+    @Log("閲嶇疆瀵嗙爜")
+    public BaseResponse<Boolean> resetPassword(@RequestBody @Validated ResetPasswordVo vo) throws Exception {
+        int count;
         String password = MD5.encrypt(vo.password);//杩涜鍔犲瘑鐮�
         Long idLg = Long.parseLong(vo.id);
-        int count;
-        try {
-            BaUser po = this.sv.selectById(idLg);
-            if (Objects.isNull(po)) {
-                return BaseResponseUtils.buildFail("鏈緱鍒扮敤鎴凤紝璇锋眰澶辫触");
-            } else {
-                count = this.sv.changePassword(idLg, password);
-            }
-        } catch (Exception e) {
-            log.error("淇濆瓨鐢ㄦ埛寮傚父", e);
-            return BaseResponseUtils.buildException(e.getMessage());
+        BaUser po = this.sv.selectById(idLg);
+        if (Objects.isNull(po)) {
+            return BaseResponseUtils.buildFail("鏈緱鍒扮敤鎴凤紝璇锋眰澶辫触");
+        } else {
+            count = this.sv.changePassword(idLg, password);
         }
         if (count <= 0) {
             return BaseResponseUtils.buildFail("鏁版嵁搴撳瓨鍌ㄥけ璐�");
         } else {
-            return BaseResponseUtils.buildSuccess("淇敼瀵嗙爜鎴愬姛");
+            return BaseResponseUtils.buildSuccess("閲嶇疆瀵嗙爜鎴愬姛");
         }
     }
 
+    @PostMapping(path="export")
+    @SsoPowerAop(power = "10100001")
+    @Log("瀵煎嚭鐢ㄦ埛淇℃伅")
+    public void export(HttpServletResponse response) {
+        List<Converter> list = new ArrayList<>();
+        List<BaUser> users = sv.selectAll();
+        if (users != null) {
+            for (BaUser user : users) {
+                ExcelVo vo = new ExcelVo();
+                vo.name = user.name;
+                try {
+                    vo.qrCode = QrCodeUtil.genQrCode(QrCodeConstant.TypeStation + user.id);
+                } catch (IOException e) {
+                    e.printStackTrace();
+                } catch (WriterException e) {
+                    e.printStackTrace();
+                }
+                list.add(vo);
+            }
+        }
+        ExportExcelUtil.downloadExcel(response, fileName, sheetName, list);
+    }
+
 }

--
Gitblit v1.8.0