From fedb46141ca7d79948a3908e88e8701c89716ac8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=AA=E4=BA=91=E6=98=8A?= Date: Thu, 12 Nov 2020 13:36:36 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat(core):=E6=B6=88=E6=81=AF=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=9C=AA=E6=AD=A3=E5=B8=B8=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java | 2 +- .../i3plus/core/apiservice/serviceimpl/busi/SysMessageService.java | 2 +- .../core/apiservice/serviceimpl/busi/SysOrderNoRuleService.java | 2 +- .../main/java/cn/estsh/i3plus/core/apiservice/util/MailUtil.java | 6 ------ 4 files changed, 3 insertions(+), 9 deletions(-) diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java index 9124ec2..a7f5d88 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java @@ -164,7 +164,7 @@ public class MessageMailQueueReceiver { mailUtil.cleanAttachmentList(); } } - + sysMessageService.updateSysMessage(msg); //信息已处理 channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); } catch (Exception e) { diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysMessageService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysMessageService.java index 8fb7a0d..17e58d4 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysMessageService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysMessageService.java @@ -90,8 +90,8 @@ public class SysMessageService implements ISysMessageService { sysMessageRDao.update(sysMessage); // 更新附件信息 - sysFileAttachRDao.deleteByProperty("refId",sysMessage.getId()); if(sysMessage.getSysFileAttachList() != null){ + sysFileAttachRDao.deleteByProperty("refId",sysMessage.getId()); SysFile sysFile; for (SysFileAttach sysFileAttach : sysMessage.getSysFileAttachList()) { sysFile = sysFileRDao.getById(sysFileAttach.getFileId()); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysOrderNoRuleService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysOrderNoRuleService.java index 98d8195..2cdfbf7 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysOrderNoRuleService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysOrderNoRuleService.java @@ -1,7 +1,7 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; import cn.estsh.i3plus.core.api.iservice.busi.ISysOrderNoRuleService; -import cn.estsh.i3plus.core.apiservice.util.CloneTool; +import cn.estsh.i3plus.platform.common.tool.CloneTool; import cn.estsh.i3plus.core.apiservice.util.OrderNoMakeUtil; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.StringTool; diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/MailUtil.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/MailUtil.java index 82bf35d..54b8118 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/MailUtil.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/MailUtil.java @@ -2,14 +2,12 @@ package cn.estsh.i3plus.core.apiservice.util; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.StringTool; -import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.platform.common.util.FileContentTypeTool; import cn.estsh.i3plus.platform.common.util.PlatformConstWords; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; import cn.estsh.i3plus.pojo.platform.bean.MailConfig; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; -import cn.estsh.impp.framework.boot.util.ImppRedis; import cn.estsh.impp.framework.boot.util.RedisCacheTool; import com.sun.mail.smtp.SMTPAddressFailedException; import org.slf4j.Logger; @@ -19,7 +17,6 @@ import org.springframework.stereotype.Component; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; -import javax.annotation.Resource; import javax.mail.*; import javax.mail.internet.*; import javax.mail.util.ByteArrayDataSource; @@ -58,9 +55,6 @@ public class MailUtil { private boolean isAuthenticationSMTP = false; private final List attachmentList = new ArrayList<>(); - @Resource(name = CommonConstWords.IMPP_REDIS_RES) - private ImppRedis redisRes; - /** * 初始化服务器邮箱参数 * From 82993aea5928b767022446c5138ae0378261c97a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=AA=E4=BA=91=E6=98=8A?= Date: Thu, 12 Nov 2020 13:37:12 +0800 Subject: [PATCH 2/2] =?UTF-8?q?refactor(platform):Clone=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../i3plus/core/apiservice/util/CloneTool.java | 231 --------------------- 1 file changed, 231 deletions(-) delete mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/CloneTool.java diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/CloneTool.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/CloneTool.java deleted file mode 100644 index 825ce87..0000000 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/CloneTool.java +++ /dev/null @@ -1,231 +0,0 @@ -package cn.estsh.i3plus.core.apiservice.util; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.util.*; - -/** - * @Description : - * @Reference : - * @Author : yunhao - * @CreateDate : 2020-08-12 13:44 - * @Modify: - **/ -public class CloneTool { - - public static final Logger LOGGER = LoggerFactory.getLogger(CloneTool.class); - - /** - * 无需进行复制的特殊类型数组 - */ - static Class[] needlessCloneClasses = new Class[]{String.class,Boolean.class,Character.class,Byte.class,Short.class, - Integer.class,Long.class,Float.class,Double.class,Void.class,Object.class,Class.class - }; - /** - * 判断该类型对象是否无需复制 - * @param c 指定类型 - * @return 如果不需要复制则返回真,否则返回假 - */ - private static boolean isNeedlessClone(Class c){ - if(c.isPrimitive()){//基本类型 - return true; - } - for(Class tmp:needlessCloneClasses){//是否在无需复制类型数组里 - if(c.equals(tmp)){ - return true; - } - } - return false; - } - - /** - * 尝试创建新对象 - * @param value 原始对象 - * @return 新的对象 - * @throws IllegalAccessException - */ - private static Object createObject(Object value) throws IllegalAccessException{ - try { - return value.getClass().newInstance(); - } catch (InstantiationException e) { - return null; - } catch (IllegalAccessException e) { - throw e; - } - } - - /** - * 复制对象数据 - * @param value 原始对象 - * @param level 复制深度。小于0为无限深度,即将深入到最基本类型和Object类级别的数据复制; - * 大于0则按照其值复制到指定深度的数据,等于0则直接返回对象本身而不进行任何复制行为。 - * @return 返回复制后的对象 - * @throws IllegalAccessException - * @throws InstantiationException - */ - public static Object clone(Object value,int level) throws IllegalAccessException, InstantiationException { - if(value==null){ - return null; - } - if(level==0){ - return value; - } - Class c = value.getClass(); - if(isNeedlessClone(c)){ - return value; - } - level--; - if(value instanceof Collection){//复制新的集合 - Collection tmp = (Collection)c.newInstance(); - for(Object v:(Collection)value){ - tmp.add(clone(v,level));//深度复制 - } - value = tmp; - } - else if(c.isArray()){//复制新的Array - //首先判断是否为基本数据类型 - if(c.equals(int[].class)){ - int[] old = (int[])value; - value = (int[]) Arrays.copyOf(old, old.length); - } - else if(c.equals(short[].class)){ - short[] old = (short[])value; - value = (short[])Arrays.copyOf(old, old.length); - } - else if(c.equals(char[].class)){ - char[] old = (char[])value; - value = (char[])Arrays.copyOf(old, old.length); - } - else if(c.equals(float[].class)){ - float[] old = (float[])value; - value = (float[])Arrays.copyOf(old, old.length); - } - else if(c.equals(double[].class)){ - double[] old = (double[])value; - value = (double[])Arrays.copyOf(old, old.length); - } - else if(c.equals(long[].class)){ - long[] old = (long[])value; - value = (long[])Arrays.copyOf(old, old.length); - } - else if(c.equals(boolean[].class)){ - boolean[] old = (boolean[])value; - value = (boolean[])Arrays.copyOf(old, old.length); - } - else if(c.equals(byte[].class)){ - byte[] old = (byte[])value; - value = (byte[])Arrays.copyOf(old, old.length); - } - else { - Object[] old = (Object[])value; - Object[] tmp = (Object[])Arrays.copyOf(old, old.length, old.getClass()); - for(int i = 0;i fields = new HashSet(); - while(c!=null&&!c.equals(Object.class)){ - fields.addAll(Arrays.asList(c.getDeclaredFields())); - c = c.getSuperclass(); - } - for(Field field:fields){ - if(!Modifier.isFinal(field.getModifiers())){//仅复制非final字段 - field.setAccessible(true); - field.set(tmp, clone(field.get(value),level));//深度复制 - } - } - value = tmp; - } - return value; - } - - /** - * 浅表复制对象 - * @param value 原始对象 - * @return 复制后的对象,只复制一层 - * @throws IllegalAccessException - * @throws InstantiationException - */ - public static T clone(T value) throws IllegalAccessException, InstantiationException { - return (T) clone(value,1); - } - - /** - * 深度复制对象 - * @param value 原始对象 - * @return 复制后的对象 - * @throws IllegalAccessException - * @throws InstantiationException - */ - public static T deepClone(T value) throws IllegalAccessException, InstantiationException { - return (T) clone(value,-1); - } - - -//数据:100 深度:10 测试 -//======普通赋值====== -//数据:100 深度:10 -//普通赋值耗时:4~8 -//======克隆工具1====== -//数据:100 深度:10 -//克隆工具1耗时:1272~1987 -//======克隆工具2-1====== -//数据:100 深度:10 -//克隆工具2-1耗时:5~7 -//======克隆工具2-2====== -//数据:100 深度:10 -//克隆工具2-2耗时:15~19 -// -//数据:100 深度:20 测试 -//======普通赋值====== -//数据:100 深度:20 -//普通赋值耗时:6 -//======克隆工具1====== -//数据:100 深度:20 -//克隆工具1耗时:1772 -//======克隆工具2-1====== -//数据:100 深度:20 -//克隆工具2-1耗时:71 -//======克隆工具2-2====== -//数据:100 深度:20 -//克隆工具2-2耗时:216 -// 性能低 -// public static T clone(Object cloneObj) { -// ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); -// ObjectOutputStream out; -// try { -// out = new ObjectOutputStream(byteOut); -// out.writeObject(cloneObj); -// -// ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray()); -// -// ObjectInputStream in = new ObjectInputStream(byteIn); -// -// T retObj = (T) in.readObject(); -// -// return retObj; -// } catch (IOException | ClassNotFoundException e) { -// LOGGER.error("对象" + cloneObj.getClass().getName() + "克隆异常:", e); -// } -// return null; -// } - -}