美文网首页
需要研究的

需要研究的

作者: 盗生一 | 来源:发表于2020-12-08 11:37 被阅读0次
    package com.gxhj.safecommunity.perception.utils;
    
    import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
    import com.gxhj.commontools.utils.CollectionUtils;
    import com.gxhj.commontools.utils.StringUtils;
    import com.gxhj.core.annotation.FieldAttachFile;
    import com.gxhj.core.base.service.ICommonService;
    import com.gxhj.safecommunity.perception.constant.PerceptionConst;
    import com.gxhj.safecommunity.person.entity.PersonInfo;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import javax.validation.ConstraintViolation;
    import javax.validation.ConstraintViolationException;
    import java.lang.reflect.Field;
    import java.util.*;
    import java.util.stream.Collectors;
    
    public class PerceptionUtil {
    
        private static final Logger log = LoggerFactory.getLogger(PerceptionUtil.class);
    
        /**
         * 获取异常信息中的提示
         *
         * @param ex 异常信息
         * @auth ZJP
         */
        public static String getExceptionMessage(Exception ex) {
            String message = "";
            //  验证未通过,则显示错误信息
            if (ex instanceof ConstraintViolationException) {
                List<String> msgList = ((ConstraintViolationException) ex).getConstraintViolations()
                        .stream()
                        .map(ConstraintViolation::getMessage)
                        .collect(Collectors.toList());
                message = StringUtils.appendStrList(msgList, ";");
            } else {
                message = ex.getMessage();
            }
            return message;
        }
    
        /**
         * 给对象中所有照片字段的值拼接Base64
         *
         * @param <T> 数据
         * @auth ZJP
         */
        public static <T> void photoFieldAppendBase64(T t) {
            // 获取当前对象及父类对象中所有字段
    //         Field[] fields = t.getClass().getDeclaredFields();
            List<Field> fields = new ArrayList<>(Arrays.asList(t.getClass().getDeclaredFields()));
            if(t.getClass().getSuperclass() != null) {
                fields.addAll(new ArrayList<>(Arrays.asList(t.getClass().getSuperclass().getDeclaredFields())));
            }
    
            for (Field field : fields) {
                if (field.getAnnotation(FieldAttachFile.class) == null)
                    continue;
    
                // private字段时,需要设置为true,才可以访问和设置对象
                field.setAccessible(true);
                try {
                    Object value = field.get(t);
                    // 当图片值不为空,并且长度大于60时,则认为是base64的值,并拼接base64的标识
                    if (StringUtils.isNotEmpty(value) && value.toString().length() > 60) {
                        field.set(t, PerceptionConst.Base64Start + value.toString());
                    }
                } catch (Exception e) {
                    log.error("该数据字段值获取/赋值失败,字段:" + field.getName() + ", 数据:" + t.toString());
                }
    
                field.setAccessible(false);
            }
        }
    
        /**
         * 查询info对象,并转换成map
         *
         * @param service 查询的service
         * @param idsKey  ids的查询字段
         * @param ids     查询条件,如:id的集合
         * @param key     map的key对应字段
         * @param value   map的value对应字段
         * @auth ZJP
         */
        public static <T, V extends T> Map<?, ?> getInfoMapByids(ICommonService<V, T> service, SFunction<T, ?> idsKey, List<String> ids, SFunction<T, ?> key, SFunction<T, ?> value) {
            if (CollectionUtils.isEmpty(ids))
                return new HashMap<>();
            return service.lambdaQuery().in(idsKey, ids).isNotNull(value).list().stream().collect(Collectors.toMap(key, value));
    
        }
    
        /**
         * 将list中的info对象,转换成List单个字段,并去重
         *
         * @param list   info对象list
         * @param idsKey 转换的数据字段
         * @auth ZJP
         */
        public static <T> List<?> listInfoFormatList(List<T> list, SFunction<T, ?> idsKey) {
            return list.stream().map(idsKey).distinct().collect(Collectors.toList());
        }
    
        /**
         * 创建人员信息
         *
         * @param idcard        身份证号
         * @param name          姓名
         * @param contactNumber 联系电话
         * @param licensePlate  车牌号
         * @auth ZJP
         */
        public static PersonInfo createPersonInfo(String idcard, String name, String contactNumber, String licensePlate) {
            PersonInfo personInfo = new PersonInfo();
            personInfo.setName(name);
            personInfo.setIdcard(idcard);
            personInfo.setContactNumber(contactNumber);
            personInfo.setLicensePlates(licensePlate);
            return personInfo;
        }
    
    }
    
    

    相关文章

      网友评论

          本文标题:需要研究的

          本文链接:https://www.haomeiwen.com/subject/lgufgktx.html