From 8d9ff236f7e3e25b9d990efd9bf812c4ec828db2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 6 Apr 2022 11:02:02 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=A1=A3=E6=A1=88=E7=B1=BB=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SalaryArchiveItemServiceImpl.java | 4 +- .../SalaryArchiveTaxAgentServiceImpl.java | 9 ++- .../salary/util/db/SalarySqlProxyHandle.java | 18 ++--- .../engine/salary/util/db/SqlProxyHandle.java | 72 +++++++++++++++++++ 4 files changed, 90 insertions(+), 13 deletions(-) create mode 100644 src/com/engine/salary/util/db/SqlProxyHandle.java diff --git a/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java index e51396451..00dea1ed5 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java @@ -232,12 +232,14 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi public String deleteSalaryItem(Long salaryArchiveItemId) { SalaryArchiveItemPO salaryArchiveItem = salaryArchiveItemMapper.getById(salaryArchiveItemId); if (salaryArchiveItem == null) { - return StringUtils.EMPTY; + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98299, "参数错误,薪资项目不存在或已被删除")); } if (salaryArchiveItem.getEffectiveTime().after(new Date())) { salaryArchiveItem.setDeleteType(1); // 删除未生效数据 salaryArchiveItemMapper.updateById(salaryArchiveItem); + }else{ + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98299, "该薪资项目已生效不可删除")); } return StringUtils.EMPTY; } diff --git a/src/com/engine/salary/service/impl/SalaryArchiveTaxAgentServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveTaxAgentServiceImpl.java index b030da590..f99f2d1ca 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveTaxAgentServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveTaxAgentServiceImpl.java @@ -17,7 +17,7 @@ import com.engine.salary.mapper.archive.SalaryArchiveMapper; import com.engine.salary.mapper.archive.SalaryArchiveTaxAgentMapper; import com.engine.salary.service.SalaryArchiveTaxAgentService; import com.engine.salary.util.SalaryI18nUtil; -import com.engine.salary.util.db.SalarySqlProxyHandle; +import com.engine.salary.util.db.SqlProxyHandle; import com.engine.salary.util.excel.ExcelUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.PageUtil; @@ -41,8 +41,8 @@ import java.util.*; **/ public class SalaryArchiveTaxAgentServiceImpl extends Service implements SalaryArchiveTaxAgentService { private static final Logger log = LoggerFactory.getLogger(SalaryArchiveTaxAgentServiceImpl.class); - private SalaryArchiveMapper salaryArchiveMapper = SalarySqlProxyHandle.getProxy(SalaryArchiveMapper.class); - private SalaryArchiveTaxAgentMapper salaryArchiveTaxAgentMapper = SalarySqlProxyHandle.getProxy(SalaryArchiveTaxAgentMapper.class); + private SalaryArchiveMapper salaryArchiveMapper = SqlProxyHandle.getProxy(SalaryArchiveMapper.class); + private SalaryArchiveTaxAgentMapper salaryArchiveTaxAgentMapper = SqlProxyHandle.getProxy(SalaryArchiveTaxAgentMapper.class); private TaxAgentBiz taxAgentService = new TaxAgentBiz(); // private SalaryBatchService salaryBatchService; @@ -83,12 +83,15 @@ public class SalaryArchiveTaxAgentServiceImpl extends Service implements SalaryA */ @Override public SalaryArchiveTaxAgentPO getEffectiveTaxAgent(Long salaryArchiveId) { + SalaryArchiveTaxAgentMapper salaryArchiveTaxAgentMapper = SqlProxyHandle.getProxy(SalaryArchiveTaxAgentMapper.class); List effectiveTaxAgentList = salaryArchiveTaxAgentMapper.getEffectiveTaxAgentList(SalaryArchiveTaxAgentQueryParam.builder().salaryArchiveId(salaryArchiveId).effectiveTime(new Date()).build()); return CollectionUtils.isNotEmpty(effectiveTaxAgentList) ? effectiveTaxAgentList.get(0) : null; } @Override public String saveTaxAgent(SalaryArchiveTaxAgentSaveParam saveParam) { + SalaryArchiveMapper salaryArchiveMapper = SqlProxyHandle.getProxy(SalaryArchiveMapper.class); + // 校验参数 SalaryArchiveTaxAgentSaveParam.checkParam(saveParam); diff --git a/src/com/engine/salary/util/db/SalarySqlProxyHandle.java b/src/com/engine/salary/util/db/SalarySqlProxyHandle.java index d4b5d38bd..98a044c1e 100644 --- a/src/com/engine/salary/util/db/SalarySqlProxyHandle.java +++ b/src/com/engine/salary/util/db/SalarySqlProxyHandle.java @@ -36,24 +36,24 @@ public class SalarySqlProxyHandle implements InvocationHandler { this.session = MyBatisFactory.sqlSessionFactory.openSession(); } try { - Object target = session.getMapper(clazz); - Object invoke = method.invoke(target, args); - if (!enableTransactions) { - session.commit(); - } - return invoke; + Object target = this.session.getMapper(clazz); + return method.invoke(target, args); +// if (!enableTransactions) { +// this.session.commit(); +// } +// return invoke; } finally { if (!enableTransactions) { - session.close(); + this.session.close(); } } } - public T getProxy() { + public Object getProxy() { ClassLoader loader = Thread.currentThread().getContextClassLoader(); Class[] interfaces = new Class[1]; interfaces[0] = this.clazz; - return (T) Proxy.newProxyInstance(loader, interfaces, this); + return Proxy.newProxyInstance(loader, interfaces, this); } diff --git a/src/com/engine/salary/util/db/SqlProxyHandle.java b/src/com/engine/salary/util/db/SqlProxyHandle.java new file mode 100644 index 000000000..c985f2ef9 --- /dev/null +++ b/src/com/engine/salary/util/db/SqlProxyHandle.java @@ -0,0 +1,72 @@ +/** + * + */ +package com.engine.salary.util.db; + +import org.apache.ibatis.session.SqlSession; +import weaver.conn.mybatis.MyBatisFactory; + +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; + +/** + * @author zhangjian + * @date 2017-8-25 下午5:41:17 + */ +public class SqlProxyHandle implements InvocationHandler{ + private Class clazz; + private boolean isAutoCommit = true; + private SqlSession session; + public SqlProxyHandle(Class clazz) { + this.clazz = clazz; + } + @Override + public Object invoke(Object proxy, Method method, Object[] args) throws Exception { + if(isAutoCommit) { + this.session = MyBatisFactory.sqlSessionFactory.openSession(); + } +// System.out.println(MyBatisFactory.getSql(this.clazz, method.getName(), args[0])); + try{ + Object target = session.getMapper(clazz); + return method.invoke(target, args); + } finally { + if(isAutoCommit) { + session.commit(); + session.close(); + } + } + } + public Object getProxy() { + if(!isAutoCommit) + this.session = MyBatisFactory.sqlSessionFactory.openSession(); + ClassLoader loader = Thread.currentThread().getContextClassLoader(); + Class[] interfaces = new Class[1]; + interfaces[0] = this.clazz; + return Proxy.newProxyInstance(loader, interfaces, this); + } + public Object getProxy(boolean isAutoCommit) { + this.isAutoCommit = isAutoCommit; + return this.getProxy(); + } + public void commit(){ + if(this.session != null) { + this.session.commit(); + this.session.close(); + } + } + public void rollback(){ + if(this.session != null) { + this.session.rollback(); + this.session.close(); + } + } + public static T getProxy(Class clazz) { + SqlProxyHandle handle = new SqlProxyHandle(clazz); + return (T) handle.getProxy(); + } + public static T getProxy(Class clazz, boolean isAutoSubmit) { + SqlProxyHandle handle = new SqlProxyHandle(clazz); + return (T) handle.getProxy(isAutoSubmit); + } +} From 75f64648d6a51e4b06015036284599e10de98f2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 6 Apr 2022 13:21:30 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=A1=A3=E6=A1=88=E7=B1=BB=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SalarySobBiz.java | 4 ++-- .../impl/SalaryArchiveTaxAgentServiceImpl.java | 2 +- .../salary/util/db/SalarySqlProxyHandle.java | 16 ++++++++-------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/com/engine/salary/biz/SalarySobBiz.java b/src/com/engine/salary/biz/SalarySobBiz.java index 23b19ca28..bc9dfec8c 100644 --- a/src/com/engine/salary/biz/SalarySobBiz.java +++ b/src/com/engine/salary/biz/SalarySobBiz.java @@ -2,7 +2,7 @@ package com.engine.salary.biz; import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.mapper.salarysob.SalarySobMapper; -import com.engine.salary.util.db.SalarySqlProxyHandle; +import com.engine.salary.util.db.SqlProxyHandle; import org.apache.ibatis.session.SqlSession; import weaver.conn.mybatis.MyBatisFactory; @@ -11,7 +11,7 @@ import java.util.List; public class SalarySobBiz { public SalarySobPO getById(Long id) { - SalarySobMapper mapper = SalarySqlProxyHandle.getProxy(SalarySobMapper.class); + SalarySobMapper mapper = SqlProxyHandle.getProxy(SalarySobMapper.class); return mapper.getById(id); } diff --git a/src/com/engine/salary/service/impl/SalaryArchiveTaxAgentServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveTaxAgentServiceImpl.java index f99f2d1ca..b4de36a65 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveTaxAgentServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveTaxAgentServiceImpl.java @@ -90,12 +90,12 @@ public class SalaryArchiveTaxAgentServiceImpl extends Service implements SalaryA @Override public String saveTaxAgent(SalaryArchiveTaxAgentSaveParam saveParam) { - SalaryArchiveMapper salaryArchiveMapper = SqlProxyHandle.getProxy(SalaryArchiveMapper.class); // 校验参数 SalaryArchiveTaxAgentSaveParam.checkParam(saveParam); // 薪资档案 + SalaryArchiveMapper salaryArchiveMapper = SqlProxyHandle.getProxy(SalaryArchiveMapper.class); SalaryArchivePO salaryArchive = salaryArchiveMapper.getById(saveParam.getSalaryArchiveId()); // 获取当前已生效 SalaryArchiveTaxAgentPO effectiveTaxAgent = getEffectiveTaxAgent(saveParam.getSalaryArchiveId()); diff --git a/src/com/engine/salary/util/db/SalarySqlProxyHandle.java b/src/com/engine/salary/util/db/SalarySqlProxyHandle.java index 98a044c1e..55c1a51b7 100644 --- a/src/com/engine/salary/util/db/SalarySqlProxyHandle.java +++ b/src/com/engine/salary/util/db/SalarySqlProxyHandle.java @@ -7,7 +7,7 @@ import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; -public class SalarySqlProxyHandle implements InvocationHandler { +public class SalarySqlProxyHandle implements InvocationHandler { private Class clazz; private boolean enableTransactions = false; private SqlSession session; @@ -36,12 +36,12 @@ public class SalarySqlProxyHandle implements InvocationHandler { this.session = MyBatisFactory.sqlSessionFactory.openSession(); } try { - Object target = this.session.getMapper(clazz); - return method.invoke(target, args); -// if (!enableTransactions) { -// this.session.commit(); -// } -// return invoke; + Object target = session.getMapper(clazz); + Object invoke = method.invoke(target, args); + if (!enableTransactions) { + session.commit(); + } + return invoke; } finally { if (!enableTransactions) { this.session.close(); @@ -53,7 +53,7 @@ public class SalarySqlProxyHandle implements InvocationHandler { ClassLoader loader = Thread.currentThread().getContextClassLoader(); Class[] interfaces = new Class[1]; interfaces[0] = this.clazz; - return Proxy.newProxyInstance(loader, interfaces, this); + return Proxy.newProxyInstance(loader, interfaces, this); }