From 225cefd1a56d64731ae24a6d8657118ec6ab5887 Mon Sep 17 00:00:00 2001 From: hongawen <83944980@qq.com> Date: Fri, 21 Oct 2022 11:24:58 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/njcn/common/utils/NjcnBeanUtil.java | 85 +++++++++++++++++++ .../harmonic/mapper/ExcelRptTempMapper.java | 3 +- .../mapper/mapping/ExcelRptTempMapper.xml | 5 +- .../service/impl/CustomReportServiceImpl.java | 6 +- 4 files changed, 96 insertions(+), 3 deletions(-) create mode 100644 pqs-common/common-core/src/main/java/com/njcn/common/utils/NjcnBeanUtil.java diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/utils/NjcnBeanUtil.java b/pqs-common/common-core/src/main/java/com/njcn/common/utils/NjcnBeanUtil.java new file mode 100644 index 000000000..cd7907525 --- /dev/null +++ b/pqs-common/common-core/src/main/java/com/njcn/common/utils/NjcnBeanUtil.java @@ -0,0 +1,85 @@ +package com.njcn.common.utils; + +import java.lang.reflect.Field; +import java.util.*; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2022/10/21 9:32【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public class NjcnBeanUtil { + + + /** + * beancopy + * 大小写可以忽略 + * 下划线 _ 被忽略 + * + * @param source + * @param target + * @param + * @return + */ + public static T copyPropertiesIgnoreCase(Object source, Object target) { + Map sourceMap = CacheFieldMap.getFieldMap (source.getClass ( )); + CacheFieldMap.getFieldMap (target.getClass ( )).values ( ).forEach ((it) -> { + Field field = sourceMap.get (it.getName ( ).toLowerCase ( ).replace ("_", "")); + if (field != null) { + it.setAccessible (true); + field.setAccessible (true); + try { + //忽略null和空字符串 +// if(field.get(source)!=null&& StringUtils.isBlank(field.get(source).toString())) + it.set (target, field.get (source)); + } catch (IllegalAccessException e) { + e.printStackTrace ( ); + } + } + }); + System.out.println (target.toString ( )); + return (T) target; + } + + private static class CacheFieldMap { + private static Map> cacheMap = new HashMap<> ( ); + + private static Map getFieldMap(Class clazz) { + Map result = cacheMap.get (clazz.getName ( )); + if (result == null) { + synchronized (CacheFieldMap.class) { + if (result == null) { + Map fieldMap = new HashMap<> ( ); + for (Field field : getAllFields (clazz)) { + fieldMap.put (field.getName ( ).toLowerCase ( ).replace ("_", ""), field); + } + cacheMap.put (clazz.getName ( ), fieldMap); + result = cacheMap.get (clazz.getName ( )); + } + } + } + return result; + } + } + + /** + * 获取本类及其父类的字段属性 + * + * @param clazz 当前类对象 + * @return 字段数组 + */ + public static Field[] getAllFields(Class clazz) { + List fieldList = new ArrayList<> ( ); + while (clazz != null) { + fieldList.addAll (new ArrayList<> (Arrays.asList (clazz.getDeclaredFields ( )))); + clazz = clazz.getSuperclass ( ); + } + Field[] fields = new Field[fieldList.size ( )]; + return fieldList.toArray (fields); + } + + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/ExcelRptTempMapper.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/ExcelRptTempMapper.java index aac1cde08..c7061c1d0 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/ExcelRptTempMapper.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/ExcelRptTempMapper.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.harmonic.pojo.param.ReportSearchParam; import com.njcn.harmonic.pojo.po.ExcelRptTemp; import com.njcn.harmonic.pojo.vo.ReportTemplateVO; +import com.njcn.user.pojo.dto.DeptDTO; import com.njcn.web.pojo.param.BaseParam; import org.apache.ibatis.annotations.Param; @@ -22,5 +23,5 @@ public interface ExcelRptTempMapper extends BaseMapper { List getReportTemplateList(@Param("reportSearchParam")ReportSearchParam reportSearchParam); - List getReportTemplateByDept(@Param("deptId")String deptId); + List getReportTemplateByDept(@Param("list") List list); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/ExcelRptTempMapper.xml b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/ExcelRptTempMapper.xml index 6078f749a..33325049b 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/ExcelRptTempMapper.xml +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/ExcelRptTempMapper.xml @@ -46,6 +46,9 @@ LEFT JOIN sys_dept_temp b ON a.Id = b.temp_id WHERE a.state = 1 - and b.dept_id = #{deptId} + and b.dept_id in + + #{item.id} + diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/CustomReportServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/CustomReportServiceImpl.java index e45745f6d..10e442ead 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/CustomReportServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/CustomReportServiceImpl.java @@ -31,6 +31,8 @@ import com.njcn.influxdb.param.InfluxDBTableConstant; import com.njcn.influxdb.utils.InfluxDbUtils; import com.njcn.system.api.DicDataFeignClient; import com.njcn.user.api.DeptFeignClient; +import com.njcn.user.pojo.dto.DeptDTO; +import com.njcn.web.utils.WebUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; @@ -150,7 +152,9 @@ public class CustomReportServiceImpl implements CustomReportService { @Override public List getTemplateByDept(String id) { - return excelRptTempMapper.getReportTemplateByDept(id); + //获取子孙部门,去重 + List depts = deptFeignClient.getDeptDescendantIndexes(id, WebUtil.filterDeptType()).getData().stream().distinct().collect(Collectors.toList()); + return excelRptTempMapper.getReportTemplateByDept(depts); } @Override