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