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/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..b4de36a65 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,16 +83,19 @@ 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) { + // 校验参数 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 d4b5d38bd..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; @@ -44,16 +44,16 @@ public class SalarySqlProxyHandle implements InvocationHandler { 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); + } +}