From db04d4d6c0e7037145e4aef7202fde8492a583c8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B5=B5=E5=95=B8=E9=9D=9E?= <13281114856@qq.com>
Date: Tue, 14 Feb 2023 11:56:38 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A0=B9=E6=8D=AE=E4=B8=9A?=
 =?UTF-8?q?=E5=8A=A1=E6=9F=A5=E8=AF=A2=E9=83=A8=E9=97=A8=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../mortals/xhx/module/dept/dao/DeptDao.java  |  9 +++++
 .../module/dept/dao/ibatis/DeptDaoImpl.java   | 18 ++++++++--
 .../xhx/module/dept/model/vo/DeptVo.java      | 23 ++++++++++++
 .../xhx/module/dept/service/DeptService.java  | 27 ++++++++------
 .../dept/service/impl/DeptServiceImpl.java    | 27 ++++++++++----
 .../xhx/module/dept/web/DeptController.java   | 27 ++++++++++++++
 .../sqlmap/module/dept/DeptMapperExt.xml      | 36 +++++++++++++++++++
 .../framework/filter/AccessLogFilter.java     | 23 ++++++------
 .../filter/GatewayResponseFilter.java         |  7 ----
 9 files changed, 159 insertions(+), 38 deletions(-)
 create mode 100644 base-manager/src/main/resources/sqlmap/module/dept/DeptMapperExt.xml

diff --git a/base-manager/src/main/java/com/mortals/xhx/module/dept/dao/DeptDao.java b/base-manager/src/main/java/com/mortals/xhx/module/dept/dao/DeptDao.java
index 7b07f4f6..9464609a 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/dept/dao/DeptDao.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/dept/dao/DeptDao.java
@@ -1,7 +1,13 @@
 package com.mortals.xhx.module.dept.dao;
 
 import com.mortals.framework.dao.ICRUDDao;
+import com.mortals.framework.model.PageInfo;
+import com.mortals.framework.model.Result;
 import com.mortals.xhx.module.dept.model.DeptEntity;
+import com.mortals.xhx.module.dept.model.DeptQuery;
+import com.mortals.xhx.module.dept.model.vo.DeptVo;
+import com.mortals.xhx.module.matter.model.MatterEntity;
+
 import java.util.List;
 /**
 * 閮ㄩ棬Dao
@@ -12,5 +18,8 @@ import java.util.List;
 */
 public interface  DeptDao extends ICRUDDao<DeptEntity,Long>{
 
+    String GET_DEPT_LIST_BY_BUSINESS = "getDeptListByBusiness";
+
+    List<DeptVo> getDeptListByBusiness(DeptQuery deptQuery);
 
 }
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/dept/dao/ibatis/DeptDaoImpl.java b/base-manager/src/main/java/com/mortals/xhx/module/dept/dao/ibatis/DeptDaoImpl.java
index b3522722..36f9b4e8 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/dept/dao/ibatis/DeptDaoImpl.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/dept/dao/ibatis/DeptDaoImpl.java
@@ -1,6 +1,11 @@
 package com.mortals.xhx.module.dept.dao.ibatis;
 
 
+import com.mortals.framework.model.ParamDto;
+import com.mortals.framework.model.Result;
+import com.mortals.xhx.module.dept.model.DeptQuery;
+import com.mortals.xhx.module.dept.model.vo.DeptVo;
+import com.mortals.xhx.module.matter.model.MatterEntity;
 import org.springframework.stereotype.Repository;
 import com.mortals.xhx.module.dept.dao.DeptDao;
 import com.mortals.xhx.module.dept.model.DeptEntity;
@@ -15,7 +20,14 @@ import java.util.List;
 */
 @Repository("deptDao")
 public class DeptDaoImpl extends BaseCRUDDaoMybatis<DeptEntity,Long> implements DeptDao {
-
-
-
+    /**
+     * @param deptQuery
+     * @return
+     */
+    @Override
+    public List<DeptVo> getDeptListByBusiness(DeptQuery deptQuery) {
+        ParamDto paramDto = this.getQueryParam(deptQuery);
+        List list = this.getSqlSession().selectList(this.getSqlId(GET_DEPT_LIST_BY_BUSINESS), paramDto);
+        return list;
+    }
 }
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/dept/model/vo/DeptVo.java b/base-manager/src/main/java/com/mortals/xhx/module/dept/model/vo/DeptVo.java
index 451a151b..12ad64ca 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/dept/model/vo/DeptVo.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/dept/model/vo/DeptVo.java
@@ -1,4 +1,5 @@
 package com.mortals.xhx.module.dept.model.vo;
+import com.mortals.framework.annotation.Excel;
 import com.mortals.framework.model.BaseEntityLong;
 import com.mortals.xhx.module.dept.model.DeptEntity;
 import lombok.Data;
@@ -13,5 +14,27 @@ import java.util.List;
 */
 @Data
 public class DeptVo extends BaseEntityLong {
+    /**
+     * 閮ㄩ棬鍚嶇О
+     */
+    private String name;
+
+    /**
+     * 閮ㄩ棬缂栧彿
+     */
+    private String deptNumber;
+
+    /**
+     * 绔欑偣涓氬姟ID
+     */
+    private Long siteBusinessId;
+    /**
+     * 涓氬姟鍚嶇О
+     */
+    private String businessName;
+
+
+    /** 绔欑偣涓氬姟ID鍒楄〃 */
+    private List <Long> siteBusinessIdList;
 
 }
\ No newline at end of file
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/dept/service/DeptService.java b/base-manager/src/main/java/com/mortals/xhx/module/dept/service/DeptService.java
index 243d9f39..297bd0f4 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/dept/service/DeptService.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/dept/service/DeptService.java
@@ -1,4 +1,5 @@
 package com.mortals.xhx.module.dept.service;
+
 import com.mortals.framework.common.Rest;
 import com.mortals.framework.model.Context;
 import com.mortals.framework.service.ICRUDCacheService;
@@ -6,37 +7,43 @@ import com.mortals.framework.service.ICRUDService;
 import com.mortals.xhx.module.business.model.BusinessEntity;
 import com.mortals.xhx.module.dept.model.DeptEntity;
 import com.mortals.xhx.module.dept.model.DeptQuery;
+import com.mortals.xhx.module.dept.model.vo.DeptVo;
 import com.mortals.xhx.module.site.model.SiteEntity;
 
 import java.util.List;
+import java.util.Map;
 
 /**
-* DeptService
-*
-* 閮ㄩ棬 service鎺ュ彛
-*
-* @author zxfei
-* @date 2022-01-12
-*/
-public interface DeptService extends ICRUDCacheService<DeptEntity,Long> {
+ * DeptService
+ * <p>
+ * 閮ㄩ棬 service鎺ュ彛
+ *
+ * @author zxfei
+ * @date 2022-01-12
+ */
+public interface DeptService extends ICRUDCacheService<DeptEntity, Long> {
 
 
     /**
      * 鍚屾鏀垮姟缃戦儴闂ㄦ暟鎹�
+     *
      * @param context
      */
-    void syncDept(String areaCode,Context context);
+    void syncDept(String areaCode, Context context);
 
     /**
      * 鍚屾鏀垮姟缃戦儴闂ㄦ暟鎹�
+     *
      * @param context
      */
     Rest<String> syncDeptBySiteId(SiteEntity siteEntity, Context context);
 
 
-
     Rest<List<BusinessEntity>> getBusinessByDept(DeptQuery deptQuery, Context context);
 
 
     void deleteGovBySiteId(Long siteId, Context context);
+
+
+    Rest<Map<Long,List<DeptVo>>> getDeptListByBusiness(DeptQuery deptQuery, Context context);
 }
\ No newline at end of file
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/dept/service/impl/DeptServiceImpl.java b/base-manager/src/main/java/com/mortals/xhx/module/dept/service/impl/DeptServiceImpl.java
index 0ff4f701..dd00a6a8 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/dept/service/impl/DeptServiceImpl.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/dept/service/impl/DeptServiceImpl.java
@@ -15,6 +15,7 @@ import com.mortals.xhx.module.business.service.BusinessService;
 import com.mortals.xhx.module.dept.dao.DeptDao;
 import com.mortals.xhx.module.dept.model.DeptEntity;
 import com.mortals.xhx.module.dept.model.DeptQuery;
+import com.mortals.xhx.module.dept.model.vo.DeptVo;
 import com.mortals.xhx.module.dept.service.DeptService;
 import com.mortals.xhx.module.matters.model.MattersDeptEntity;
 import com.mortals.xhx.module.matters.model.MattersDeptQuery;
@@ -63,7 +64,6 @@ public class DeptServiceImpl extends AbstractCRUDCacheServiceImpl<DeptDao, DeptE
     private WindowBusinessService windowBusinessService;
 
 
-
     @Override
     protected String getExtKey(DeptEntity data) {
         return data.getDeptNumber();
@@ -137,7 +137,7 @@ public class DeptServiceImpl extends AbstractCRUDCacheServiceImpl<DeptDao, DeptE
         //鏌ヨ绐楀彛涓氬姟
         WindowBusinessQuery windowBusinessQuery = new WindowBusinessQuery();
         List<Long> windowList = windowEntities.stream().map(WindowEntity::getId).collect(Collectors.toList());
-        if(ObjectUtils.isEmpty(windowList)){
+        if (ObjectUtils.isEmpty(windowList)) {
             return Rest.ok("绐楀彛鏌ヨ缁撴灉涓虹┖", Collections.EMPTY_LIST);
         }
         windowBusinessQuery.setWindowIdList(windowList);
@@ -145,14 +145,14 @@ public class DeptServiceImpl extends AbstractCRUDCacheServiceImpl<DeptDao, DeptE
 
         SiteBusinessQuery siteBusinessQuery = new SiteBusinessQuery();
         List<Long> siteBusinessList = windowBusinessEntities.stream().map(WindowBusinessEntity::getSiteBusinessId).collect(Collectors.toList());
-        if(ObjectUtils.isEmpty(siteBusinessList)){
+        if (ObjectUtils.isEmpty(siteBusinessList)) {
             return Rest.ok("绔欑偣涓氬姟鏌ヨ缁撴灉涓虹┖", Collections.EMPTY_LIST);
         }
         siteBusinessQuery.setBusinessIdList(siteBusinessList);
         List<SiteBusinessEntity> siteBusinessEntities = siteBusinessService.find(siteBusinessQuery);
         BusinessQuery businessQuery = new BusinessQuery();
         List<Long> businessList = siteBusinessEntities.stream().map(SiteBusinessEntity::getBusinessId).collect(Collectors.toList());
-        if(ObjectUtils.isEmpty(businessList)){
+        if (ObjectUtils.isEmpty(businessList)) {
             return Rest.ok("涓氬姟鏌ヨ缁撴灉涓虹┖", Collections.EMPTY_LIST);
         }
         businessQuery.setIdList(businessList);
@@ -168,6 +168,21 @@ public class DeptServiceImpl extends AbstractCRUDCacheServiceImpl<DeptDao, DeptE
         this.dao.delete(condition);
     }
 
+    /**
+     * @param deptQuery
+     * @param context
+     * @return
+     */
+    @Override
+    public Rest<Map<Long, List<DeptVo>>> getDeptListByBusiness(DeptQuery deptQuery, Context context) {
+
+        List<DeptVo> deptListByBusiness = this.dao.getDeptListByBusiness(deptQuery);
+
+        Map<Long, List<DeptVo>> collect = deptListByBusiness.parallelStream().collect(Collectors.groupingBy(x -> x.getSiteBusinessId()));
+
+        return Rest.ok(collect);
+    }
+
 
     /**
      * @param entity
@@ -177,10 +192,10 @@ public class DeptServiceImpl extends AbstractCRUDCacheServiceImpl<DeptDao, DeptE
     @Override
     protected void updateAfter(DeptEntity entity, Context context) throws AppException {
         List<WindowEntity> windowEntityList = windowService.find(new WindowQuery().deptId(entity.getId()));
-        windowEntityList.forEach(item->{
+        windowEntityList.forEach(item -> {
             item.setDeptName(entity.getName());
         });
-        windowService.update(windowEntityList,context);
+        windowService.update(windowEntityList, context);
         super.updateAfter(entity, context);
     }
 }
\ No newline at end of file
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/dept/web/DeptController.java b/base-manager/src/main/java/com/mortals/xhx/module/dept/web/DeptController.java
index 63d24c3a..eb01cf93 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/dept/web/DeptController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/dept/web/DeptController.java
@@ -12,6 +12,7 @@ import com.mortals.xhx.base.system.param.service.ParamService;
 import com.mortals.xhx.module.business.model.BusinessEntity;
 import com.mortals.xhx.module.dept.model.DeptEntity;
 import com.mortals.xhx.module.dept.model.DeptQuery;
+import com.mortals.xhx.module.dept.model.vo.DeptVo;
 import com.mortals.xhx.module.dept.service.DeptService;
 import com.mortals.xhx.module.site.model.SiteEntity;
 import com.mortals.xhx.module.site.model.SiteQuery;
@@ -123,4 +124,30 @@ public class DeptController extends BaseCRUDJsonBodyMappingController<DeptServic
     }
 
 
+    /**
+     * 鏍规嵁閮ㄩ棬鏌ヨ涓氬姟
+     */
+    @PostMapping(value = "getDeptListByBusiness")
+    @UnAuth
+    public String getDeptListByBusiness(@RequestBody DeptQuery deptQuery) {
+        JSONObject jsonObject = new JSONObject();
+        String busiDesc = "鏍规嵁涓氬姟鏌ヨ閮ㄩ棬鍒楄〃" + this.getModuleDesc();
+        try {
+            if (ObjectUtils.isEmpty(deptQuery.getSiteBusinessIdList())) {
+                throw new AppException("涓氬姟id涓嶈兘涓虹┖锛�");
+            }
+            Rest<Map<Long, List<DeptVo>>> rest = this.service.getDeptListByBusiness(deptQuery, getContext());
+            recordSysLog(request, busiDesc + " 銆愭垚鍔熴€�");
+            jsonObject.put(KEY_RESULT_DATA, rest.getData());
+            jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
+            jsonObject.put(KEY_RESULT_MSG, busiDesc + "鎴愬姛锛�");
+        } catch (Exception e) {
+            log.error("鑾峰彇寮傚父", e);
+            jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
+            jsonObject.put(KEY_RESULT_MSG, super.convertException(e));
+        }
+        return jsonObject.toJSONString();
+    }
+
+
 }
\ No newline at end of file
diff --git a/base-manager/src/main/resources/sqlmap/module/dept/DeptMapperExt.xml b/base-manager/src/main/resources/sqlmap/module/dept/DeptMapperExt.xml
new file mode 100644
index 00000000..5dd26ed1
--- /dev/null
+++ b/base-manager/src/main/resources/sqlmap/module/dept/DeptMapperExt.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "mybatis-3-mapper.dtd">
+<mapper namespace="com.mortals.xhx.module.dept.dao.ibatis.DeptDaoImpl">
+
+    <!-- 瀛楁鍜屽睘鎬ф槧灏� -->
+    <resultMap type="com.mortals.xhx.module.dept.model.vo.DeptVo" id="DeptVo-Map">
+        <id property="id" column="id"/>
+        <result property="name" column="name"/>
+        <result property="deptNumber" column="deptNumber"/>
+        <result property="siteBusinessId" column="siteBusinessId"/>
+        <result property="businessName" column="businessName"/>
+    </resultMap>
+
+    <!-- 鏍规嵁涓氬姟ids鑾峰彇閮ㄩ棬鍒楄〃 -->
+    <select id="getDeptListByBusiness" parameterType="paramDto" resultMap="DeptVo-Map">
+        SELECT
+        d.id,d.`name`,d.deptNumber,wb.siteBusinessId,wb.businessName
+        FROM
+        mortals_sys_dept d
+        LEFT JOIN mortals_sys_window w ON d.id = w.deptId
+        LEFT JOIN mortals_sys_window_business wb ON w.id = wb.windowId
+        <trim suffixOverrides="where" suffix="">
+            where 1=1 and
+            <trim prefixOverrides="and" prefix="">
+                <if test="conditionParamRef.containsKey('siteBusinessIdList')">
+                    ${_conditionType_} siteBusinessId in
+                    <foreach collection="conditionParamRef.siteBusinessIdList" open="(" close=")" index="index"
+                             item="item" separator=",">
+                        #{item}
+                    </foreach>
+                </if>
+            </trim>
+        </trim>
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/smart-gateway/src/main/java/com/mortals/xhx/base/framework/filter/AccessLogFilter.java b/smart-gateway/src/main/java/com/mortals/xhx/base/framework/filter/AccessLogFilter.java
index 4110e1c3..0dd5aaf2 100644
--- a/smart-gateway/src/main/java/com/mortals/xhx/base/framework/filter/AccessLogFilter.java
+++ b/smart-gateway/src/main/java/com/mortals/xhx/base/framework/filter/AccessLogFilter.java
@@ -3,6 +3,8 @@ package com.mortals.xhx.base.framework.filter;
 import cn.hutool.core.net.NetUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+import com.mortals.framework.common.Rest;
 import com.mortals.framework.model.AccessLogPdu;
 import com.mortals.framework.util.StringUtils;
 import com.mortals.xhx.common.utils.IpUtils;
@@ -53,9 +55,6 @@ import java.util.Map;
 @Slf4j
 @Component
 public class AccessLogFilter implements GlobalFilter, Ordered {
-//    @Autowired
-//    private AccessLogService accessLogService;
-
     @Value("${spring.application.name:gateway}")
     private String appName;
     @Autowired
@@ -174,7 +173,6 @@ public class AccessLogFilter implements GlobalFilter, Ordered {
                     ServerHttpRequest decoratedRequest = requestDecorate(exchange, headers, outputMessage);
                     // 璁板綍鍝嶅簲鏃ュ織
                     ServerHttpResponseDecorator decoratedResponse = recordResponseLog(exchange, accessLogPdu);
-
                     // 璁板綍鏅€氱殑
                     return chain.filter(exchange.mutate().request(decoratedRequest).response(decoratedResponse).build())
                             .then(Mono.fromRunnable(() -> {
@@ -250,23 +248,24 @@ public class AccessLogFilter implements GlobalFilter, Ordered {
                     // 鑾峰彇鍝嶅簲绫诲瀷锛屽鏋滄槸 json 灏辨墦鍗�
                     String originalResponseContentType = exchange.getAttribute(ServerWebExchangeUtils.ORIGINAL_RESPONSE_CONTENT_TYPE_ATTR);
                     if (ObjectUtil.equal(this.getStatusCode(), HttpStatus.OK)
-                            && StringUtils.isNotBlank(originalResponseContentType)
-                            && originalResponseContentType.contains("application/json")) {
-
-                        Flux<? extends DataBuffer> fluxBody = Flux.from(body);
+                            && StringUtils.isNotBlank(originalResponseContentType)) {
+                        accessLogPdu.setRequestData(JSON.toJSONString(Rest.ok()));
+                     /*   Flux<? extends DataBuffer> fluxBody = Flux.from(body);
                         return super.writeWith(fluxBody.buffer().map(dataBuffers -> {
                             // 鍚堝苟澶氫釜娴侀泦鍚堬紝瑙e喅杩斿洖浣撳垎娈典紶杈�
                             DataBufferFactory dataBufferFactory = new DefaultDataBufferFactory();
                             DataBuffer join = dataBufferFactory.join(dataBuffers);
                             byte[] content = new byte[join.readableByteCount()];
                             join.read(content);
-
                             // 閲婃斁鎺夊唴瀛�
                             DataBufferUtils.release(join);
-                            String responseResult = new String(content, StandardCharsets.UTF_8);
-                            accessLogPdu.setResponseData(StrUtil.maxLength(responseResult,3000));
+                            accessLogPdu.setRequestData(JSON.toJSONString(Rest.ok()));
+                            //String responseResult = new String(content, StandardCharsets.UTF_8);
+                            //accessLogPdu.setResponseData(StrUtil.maxLength(responseResult,3000));
                             return bufferFactory.wrap(content);
-                        }));
+                        }));*/
+                    }else {
+                        accessLogPdu.setRequestData(JSON.toJSONString(Rest.fail()));
                     }
                 }
                 // if body is not a flux. never got there.
diff --git a/smart-gateway/src/main/java/com/mortals/xhx/base/framework/filter/GatewayResponseFilter.java b/smart-gateway/src/main/java/com/mortals/xhx/base/framework/filter/GatewayResponseFilter.java
index 688d38ec..b80edd73 100644
--- a/smart-gateway/src/main/java/com/mortals/xhx/base/framework/filter/GatewayResponseFilter.java
+++ b/smart-gateway/src/main/java/com/mortals/xhx/base/framework/filter/GatewayResponseFilter.java
@@ -63,13 +63,6 @@ public class GatewayResponseFilter implements GlobalFilter, Ordered {
                             join.read(content);
                             DataBufferUtils.release(join);
                             String responseData = new String(content, Charsets.UTF_8);
-
-
-                           // List<String> strings = exchange.getResponse().getHeaders()..get(TRACE_ID);
-
-
-//                                responseData = beforeBodyWriteInternal(responseData, exchange.getRequest());
-                            // responseData = "\"" + beforeBodyWriteInternal(responseData, exchange.getRequest()) + "\"";
                             byte[] uppedContent = new String(responseData.getBytes(), Charset.forName("UTF-8")).getBytes();
 //                            originalResponse.getHeaders().setContentLength(uppedContent.length);
 //                            // 璁剧疆鍔犲瘑澶存爣璇�
-- 
2.24.3