From c4831a1612121fc82ca55f45dfcf8ebe2b437adb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 3 Aug 2022 10:08:43 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=A4=96=E9=83=A8?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../formlua/entity/parameter/DataType.java | 7 +-- .../service/impl/FormulaRunServiceImpl.java | 54 +++++++++++++++---- .../impl/SalaryEmployeeServiceImpl.java | 8 +-- .../salary/web/SalaryFormulaController.java | 10 ++++ .../salary/wrapper/SalaryFormulaWrapper.java | 14 +++-- 5 files changed, 70 insertions(+), 23 deletions(-) diff --git a/src/com/engine/salary/formlua/entity/parameter/DataType.java b/src/com/engine/salary/formlua/entity/parameter/DataType.java index 13b86dc5f..275e7d8f3 100644 --- a/src/com/engine/salary/formlua/entity/parameter/DataType.java +++ b/src/com/engine/salary/formlua/entity/parameter/DataType.java @@ -6,12 +6,7 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.List; -/** - * @className: - * @Description: - * @Author:罗威 - * @date: - */ + public class DataType implements Serializable { public final static String STRING="string"; public final static String NUMBER="number"; diff --git a/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java b/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java index 4bf0beb28..e3f635b15 100644 --- a/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java +++ b/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java @@ -16,6 +16,8 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import weaver.conn.RecordSet; +import weaver.conn.RecordSetDataSource; +import weaver.general.BaseBean; import java.math.BigDecimal; import java.util.List; @@ -27,6 +29,10 @@ public class FormulaRunServiceImpl extends Service implements FormulaRunService private static final ObjectMapper objectMapper = new ObjectMapper(); + private final BaseBean baseBean = new BaseBean(); + + private final Boolean isLog = "true".equals(baseBean.getPropValue("hrmSalary", "log")); + @Override public Object run(ExpressFormula expressFormula, List formulaVars, DataCollectionEmployee simpleEmployee) throws Exception { @@ -42,37 +48,65 @@ public class FormulaRunServiceImpl extends Service implements FormulaRunService } private String runSQL(ExpressFormula expressFormula, List formulaVars) { - log.info("SQL ExpressFormula {}, formulaVars {}", expressFormula, formulaVars); - RecordSet rs = new RecordSet(); - String formulaRunScript = expressFormula.getFormulaRunScript(); + if (isLog) { + log.info("SQL ExpressFormula {}, formulaVars {}", expressFormula, formulaVars); + } + + //解析配置,获取返回值、数据源 String extendParam = expressFormula.getExtendParam(); String sqlReturnKey = ""; + String datasourceId = ""; try { JsonNode jsonNode = objectMapper.readTree(extendParam); + //返回值配置 JsonNode sqlReturnKeyNode = jsonNode.get("sqlReturnKey"); if (sqlReturnKeyNode != null) { sqlReturnKey = sqlReturnKeyNode.asText(); } + //数据源配置 + JsonNode datasourceNode = jsonNode.get("datasource"); + if (datasourceNode != null) { + JsonNode datasourceIdNode = datasourceNode.get("datasourceId"); + if (datasourceIdNode != null) { + datasourceId = datasourceIdNode.asText(); + } + } } catch (JsonProcessingException e) { log.error("express execute fail, sql extendParam parse fail", e); } - String sql = formulaRunScript; + //解析sql + String sql = expressFormula.getFormulaRunScript(); for (FormulaVar formulaVar : formulaVars) { sql = sql.replaceAll(formulaVar.getFieldId(), "'" + formulaVar.getContent() + "'"); } - log.info("sql run {}", sql); - if (rs.execute(sql)) { - if (rs.next()) { - return rs.getString(sqlReturnKey); + if (isLog) { + log.info("sql run {}", sql); + } + + //外部数据源 + if (StringUtils.isNotBlank(datasourceId)) { + RecordSetDataSource rs = new RecordSetDataSource(datasourceId); + if (rs.executeSql(sql)) { + if (rs.next()) { + return rs.getString(sqlReturnKey); + } + } + } else { + RecordSet rs = new RecordSet(); + if (rs.execute(sql)) { + if (rs.next()) { + return rs.getString(sqlReturnKey); + } } } return StringUtils.EMPTY; } private Object runFormula(ExpressFormula expressFormula, List formulaVars) throws Exception { - log.info("FORMULA ExpressFormula {}, formulaVars {}", expressFormula, formulaVars); - + if (isLog) { + log.info("FORMULA ExpressFormula {}, formulaVars {}", expressFormula, formulaVars); + } DefaultContext context = new DefaultContext(); formulaVars.forEach(v -> { if (DataType.NUMBER.equals(v.getFieldType()) && NumberUtils.isCreatable(v.getContent())) { diff --git a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java index 987bfbabd..1f723d8f5 100644 --- a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java @@ -35,7 +35,7 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee private EmployBiz employBiz = new EmployBiz(); private SalarySobRangeService getSalarySobRangeService(User user) { - return (SalarySobRangeService) ServiceUtil.getService(SalarySobRangeServiceImpl.class, user); + return ServiceUtil.getService(SalarySobRangeServiceImpl.class, user); } private EmployMapper getEmployMapper() { @@ -95,10 +95,10 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee @Override public List getEmployeeByIds(List simpleEmployeeIds) { - if(CollectionUtils.isEmpty(simpleEmployeeIds)){ - return new ArrayList<>(); + if (CollectionUtils.isEmpty(simpleEmployeeIds)) { + return new ArrayList<>(); } - return getEmployMapper().getEmployeeByIds(simpleEmployeeIds); + return getEmployMapper().getEmployeeByIds(simpleEmployeeIds); } } diff --git a/src/com/engine/salary/web/SalaryFormulaController.java b/src/com/engine/salary/web/SalaryFormulaController.java index 8ede83805..74edd95c7 100644 --- a/src/com/engine/salary/web/SalaryFormulaController.java +++ b/src/com/engine/salary/web/SalaryFormulaController.java @@ -17,6 +17,7 @@ import javax.servlet.http.HttpServletResponse; import javax.ws.rs.*; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -62,5 +63,14 @@ public class SalaryFormulaController { return new ResponseResult(user).run(getSalaryFormulaWrapper(user)::save, param); } + //数据源列表 + @POST + @Path("/datasource/list") + @Produces(MediaType.APPLICATION_JSON) + public String datasource(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryFormulaWrapper(user)::datasourceList); + } + } diff --git a/src/com/engine/salary/wrapper/SalaryFormulaWrapper.java b/src/com/engine/salary/wrapper/SalaryFormulaWrapper.java index 442233985..c50dd6df9 100644 --- a/src/com/engine/salary/wrapper/SalaryFormulaWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryFormulaWrapper.java @@ -3,12 +3,12 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.salaryformula.ExpressFormula; -import com.engine.salary.entity.salaryformula.param.SalaryFormulaSaveParam; -import com.engine.salary.entity.salaryformula.po.FormulaPO; -import com.engine.salary.entity.salaryformula.po.FormulaVar; import com.engine.salary.entity.salaryformula.bo.SalaryFormulaBO; import com.engine.salary.entity.salaryformula.dto.ExpressFormulaDTO; import com.engine.salary.entity.salaryformula.param.SalaryFormulaFieldQueryParam; +import com.engine.salary.entity.salaryformula.param.SalaryFormulaSaveParam; +import com.engine.salary.entity.salaryformula.po.FormulaPO; +import com.engine.salary.entity.salaryformula.po.FormulaVar; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.service.RemoteExcelService; import com.engine.salary.service.SalaryFormulaService; @@ -16,7 +16,9 @@ import com.engine.salary.service.impl.RemoteExcelServiceImpl; import com.engine.salary.service.impl.SalaryFormulaServiceImpl; import org.apache.commons.collections4.CollectionUtils; import weaver.hrm.User; +import weaver.servicefiles.DataSourceXML; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; @@ -72,4 +74,10 @@ public class SalaryFormulaWrapper extends Service { public FormulaPO save(SalaryFormulaSaveParam salaryFormulaSaveParam) { return getSalaryFormulaService(user).save(salaryFormulaSaveParam); } + + public ArrayList datasourceList() { + DataSourceXML dataSourceXML = new DataSourceXML(); + ArrayList pointArrayList = dataSourceXML.getPointArrayList(); + return pointArrayList; + } } From 99c0806b7333ade24eb56f92ae570b6f9668b0cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 3 Aug 2022 10:47:26 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=A4=96=E9=83=A8?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/web/SalaryFormulaController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/web/SalaryFormulaController.java b/src/com/engine/salary/web/SalaryFormulaController.java index 74edd95c7..449877334 100644 --- a/src/com/engine/salary/web/SalaryFormulaController.java +++ b/src/com/engine/salary/web/SalaryFormulaController.java @@ -64,7 +64,7 @@ public class SalaryFormulaController { } //数据源列表 - @POST + @GET @Path("/datasource/list") @Produces(MediaType.APPLICATION_JSON) public String datasource(@Context HttpServletRequest request, @Context HttpServletResponse response) { From 7c5d7bba35be4cfa120b11bde600746689b314b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 3 Aug 2022 11:08:23 +0800 Subject: [PATCH 3/7] =?UTF-8?q?fix=E6=89=B9=E9=87=8F=E5=8F=91=E6=94=BE?= =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SalarySendInfoBiz.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/biz/SalarySendInfoBiz.java b/src/com/engine/salary/biz/SalarySendInfoBiz.java index 2b036c1db..bf6c9fd5b 100644 --- a/src/com/engine/salary/biz/SalarySendInfoBiz.java +++ b/src/com/engine/salary/biz/SalarySendInfoBiz.java @@ -8,6 +8,8 @@ import com.engine.salary.entity.salaryBill.param.SalarySendDetailQueryParam; import com.engine.salary.entity.salaryBill.param.SalarySendInfoQueryParam; import com.engine.salary.entity.salaryBill.po.SalarySendInfoPO; import com.engine.salary.mapper.salarybill.SalarySendInfoMapper; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.session.SqlSession; import weaver.conn.mybatis.MyBatisFactory; @@ -31,6 +33,7 @@ public class SalarySendInfoBiz { /** * 工资单发放 + * * @param po * @param salarySendId * @param statusList @@ -50,6 +53,7 @@ public class SalarySendInfoBiz { /** * 根据现有字段查询 + * * @param params * @return */ @@ -76,6 +80,7 @@ public class SalarySendInfoBiz { /** * 工资单发放详情列表 + * * @param param * @return */ @@ -106,10 +111,14 @@ public class SalarySendInfoBiz { } public void batchInsert(List salarySendInfos) { + if (CollectionUtils.isEmpty(salarySendInfos)) { + return; + } SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); try { SalarySendInfoMapper mapper = sqlSession.getMapper(SalarySendInfoMapper.class); - mapper.batchInsert(salarySendInfos); + List> partition = Lists.partition(salarySendInfos, 100); + partition.forEach(mapper::batchInsert); sqlSession.commit(); } finally { sqlSession.close(); From 591c59228f1438bb6c1602976df3028e6c397c73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 3 Aug 2022 11:42:49 +0800 Subject: [PATCH 4/7] =?UTF-8?q?fix=E5=B7=A5=E8=B5=84=E5=8D=95=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E7=BC=BA=E5=B0=91=E5=B7=A5=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/mapper/salarybill/SalarySendInfoMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml index da13d21e0..f1f55fd13 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml @@ -136,7 +136,7 @@ t2.name AS tax_agent, d.departmentname AS department, e.mobile, - e.workcode, + e.workcode as jobNum, t1.send_status, t1.employee_id, t1.salary_month, From 184bbe1e0b1e45d85ac91e668ea70832949a2a20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 3 Aug 2022 11:44:30 +0800 Subject: [PATCH 5/7] =?UTF-8?q?fix=E5=B7=A5=E8=B5=84=E5=8D=95=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E7=BC=BA=E5=B0=91=E5=B7=A5=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salarybill/SalarySendInfoMapper.xml | 30 ++++--------------- 1 file changed, 6 insertions(+), 24 deletions(-) diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml index f1f55fd13..75fe40736 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml @@ -322,18 +322,9 @@ ORDER BY t1.id DESC