diff --git a/src/com/engine/salary/entity/salaryformula/ExpressFormula.java b/src/com/engine/salary/entity/salaryformula/ExpressFormula.java
index 11f336bc3..be99b1006 100644
--- a/src/com/engine/salary/entity/salaryformula/ExpressFormula.java
+++ b/src/com/engine/salary/entity/salaryformula/ExpressFormula.java
@@ -54,6 +54,11 @@ public class ExpressFormula {
*/
private String formulaRunScript;
+ /**
+ * sql返回的列值
+ */
+ private String sqlReturnKey;
+
/**
* 创建人
*/
diff --git a/src/com/engine/salary/entity/salaryformula/param/SalaryFormulaSaveParam.java b/src/com/engine/salary/entity/salaryformula/param/SalaryFormulaSaveParam.java
index d6763e7d4..41a7cdfeb 100644
--- a/src/com/engine/salary/entity/salaryformula/param/SalaryFormulaSaveParam.java
+++ b/src/com/engine/salary/entity/salaryformula/param/SalaryFormulaSaveParam.java
@@ -40,6 +40,7 @@ public class SalaryFormulaSaveParam {
private String useFor;
/**
* 引用类型
+ * @see com.engine.salary.enums.salaryformula.ReferenceTypeEnum
*/
private String referenceType;
/**
diff --git a/src/com/engine/salary/enums/salaryformula/ReferenceTypeEnum.java b/src/com/engine/salary/enums/salaryformula/ReferenceTypeEnum.java
new file mode 100644
index 000000000..ec4775aeb
--- /dev/null
+++ b/src/com/engine/salary/enums/salaryformula/ReferenceTypeEnum.java
@@ -0,0 +1,31 @@
+package com.engine.salary.enums.salaryformula;
+
+import java.util.Arrays;
+import java.util.Objects;
+
+public enum ReferenceTypeEnum {
+ FORMULA("formula", "公式"),
+ SQL("sql", "SQL");
+
+ private String value;
+
+ private String label;
+
+ ReferenceTypeEnum(String value, String label) {
+ this.value = value;
+ this.label = label;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+
+ public static ReferenceTypeEnum parseByValue(String value) {
+ return Arrays.stream(ReferenceTypeEnum.values()).filter(typeEnum -> Objects.equals(typeEnum.getValue(), value)).findFirst().orElse(null);
+ }
+}
diff --git a/src/com/engine/salary/enums/salaryformula/ReturnTypeEnum.java b/src/com/engine/salary/enums/salaryformula/ReturnTypeEnum.java
new file mode 100644
index 000000000..19eb4835b
--- /dev/null
+++ b/src/com/engine/salary/enums/salaryformula/ReturnTypeEnum.java
@@ -0,0 +1,31 @@
+package com.engine.salary.enums.salaryformula;
+
+import java.util.Arrays;
+import java.util.Objects;
+
+public enum ReturnTypeEnum {
+ NUMBER("number", "数值"),
+ STRING("string", "字符");
+
+ private String value;
+
+ private String label;
+
+ ReturnTypeEnum(String value, String label) {
+ this.value = value;
+ this.label = label;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+
+ public static ReturnTypeEnum parseByValue(String value) {
+ return Arrays.stream(ReturnTypeEnum.values()).filter(typeEnum -> Objects.equals(typeEnum.getValue(), value)).findFirst().orElse(null);
+ }
+}
diff --git a/src/com/engine/salary/enums/salaryformula/ValidateTypeEnum.java b/src/com/engine/salary/enums/salaryformula/ValidateTypeEnum.java
new file mode 100644
index 000000000..4112b9ce5
--- /dev/null
+++ b/src/com/engine/salary/enums/salaryformula/ValidateTypeEnum.java
@@ -0,0 +1,31 @@
+package com.engine.salary.enums.salaryformula;
+
+import java.util.Arrays;
+import java.util.Objects;
+
+public enum ValidateTypeEnum {
+ NUMBER("number", "数值"),
+ STRING("string", "字符");
+
+ private String value;
+
+ private String label;
+
+ ValidateTypeEnum(String value, String label) {
+ this.value = value;
+ this.label = label;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+
+ public static ValidateTypeEnum parseByValue(String value) {
+ return Arrays.stream(ValidateTypeEnum.values()).filter(typeEnum -> Objects.equals(typeEnum.getValue(), value)).findFirst().orElse(null);
+ }
+}
diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobEmpFieldMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobEmpFieldMapper.xml
index 5f3f4c824..207d8ec61 100644
--- a/src/com/engine/salary/mapper/salarysob/SalarySobEmpFieldMapper.xml
+++ b/src/com/engine/salary/mapper/salarysob/SalarySobEmpFieldMapper.xml
@@ -231,7 +231,7 @@
INSERT INTO
- hrsa_salary_sob_emp_field(salary_sob_id, field_code, sorted_index, creator, create_time, update_time,
+ hrsa_salary_sob_emp_field(salary_sob_id, field_code, sorted_index,can_delete, creator, create_time, update_time,
delete_type, tenant_key)
VALUES
@@ -239,6 +239,7 @@
#{item.salarySobId},
#{item.fieldCode},
#{item.sortedIndex},
+ #{item.canDelete},
#{item.creator},
#{item.createTime},
#{item.updateTime},
@@ -249,7 +250,7 @@
INSERT INTO
- hrsa_salary_sob_emp_field( salary_sob_id, field_code, sorted_index, creator, create_time, update_time,
+ hrsa_salary_sob_emp_field( salary_sob_id, field_code, sorted_index,can_delete, creator, create_time, update_time,
delete_type, tenant_key)
@@ -257,6 +258,7 @@
#{item.salarySobId},
#{item.fieldCode},
#{item.sortedIndex},
+ #{item.canDelete},
#{item.creator},
#{item.createTime},
#{item.updateTime},
@@ -268,13 +270,14 @@
INSERT INTO
- hrsa_salary_sob_emp_field(salary_sob_id, field_code, sorted_index, creator, create_time, update_time,
+ hrsa_salary_sob_emp_field(salary_sob_id, field_code, sorted_index,can_delete, creator, create_time, update_time,
delete_type, tenant_key)
VALUES
(
#{item.salarySobId},
#{item.fieldCode},
#{item.sortedIndex},
+ #{item.canDelete},
#{item.creator},
#{item.createTime},
#{item.updateTime},
diff --git a/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java b/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java
index a078d2641..786b149c6 100644
--- a/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java
+++ b/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java
@@ -4,11 +4,13 @@ import com.engine.core.impl.Service;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.salaryformula.ExpressFormula;
import com.engine.salary.entity.salaryformula.po.FormulaVar;
+import com.engine.salary.enums.salaryformula.ReferenceTypeEnum;
import com.engine.salary.formlua.entity.parameter.DataType;
import com.engine.salary.service.FormulaRunService;
import com.ql.util.express.DefaultContext;
import com.ql.util.express.ExpressRunner;
import lombok.extern.slf4j.Slf4j;
+import org.jetbrains.annotations.Nullable;
import java.math.BigDecimal;
import java.util.List;
@@ -17,13 +19,23 @@ import java.util.List;
public class FormulaRunServiceImpl extends Service implements FormulaRunService {
private static ExpressRunner runner;
+
static {
- runner = new ExpressRunner(true,false);
+ runner = new ExpressRunner(true, false);
}
@Override
public Object run(ExpressFormula expressFormula, List formulaVars, DataCollectionEmployee simpleEmployee) {
+ if (ReferenceTypeEnum.parseByValue(expressFormula.getReferenceType()) == ReferenceTypeEnum.FORMULA) {
+ return runFormula(expressFormula, formulaVars);
+ }
+
+ return null;
+ }
+
+ @Nullable
+ private Object runFormula(ExpressFormula expressFormula, List formulaVars) {
DefaultContext context = new DefaultContext();
formulaVars.forEach(v -> {
if (DataType.NUMBER.equals(v.getFieldType())) {
diff --git a/src/com/engine/salary/service/impl/RemoteExcelServiceImpl.java b/src/com/engine/salary/service/impl/RemoteExcelServiceImpl.java
index 0f97641d0..feb85ce22 100644
--- a/src/com/engine/salary/service/impl/RemoteExcelServiceImpl.java
+++ b/src/com/engine/salary/service/impl/RemoteExcelServiceImpl.java
@@ -40,7 +40,10 @@ public class RemoteExcelServiceImpl extends Service implements RemoteExcelServic
private static final Logger log = LoggerFactory.getLogger(RemoteExcelServiceImpl.class);
-// private SIAccountService siAccountService;
+ private SIAccountService getSIAccountService(User user) {
+ return (SIAccountService) ServiceUtil.getService(SIAccountServiceImpl.class, user);
+ }
+
private AttendQuoteFieldMapper getAttendQuoteFieldMapper() {
return MapperProxyFactory.getProxy(AttendQuoteFieldMapper.class);
@@ -277,19 +280,17 @@ public class RemoteExcelServiceImpl extends Service implements RemoteExcelServic
}
private List welfare2FormulaVar(SalaryFormulaReferenceEnum referenceEnum) {
- Map welfareColumns = null;//siAccountService.welfareColumns();
+ Map welfareColumns = getSIAccountService(user).welfareColumns();
if (MapUtils.isEmpty(welfareColumns)) {
return null;
}
List formulaVars = Lists.newArrayListWithExpectedSize(welfareColumns.size());
welfareColumns.forEach((k, v) -> {
FormulaVar formulaVar = new FormulaVar();
-// formulaVar.setFieldId(referenceEnum.getValue() + SalaryFormulaFieldConstant.FIELD_ID_SEPARATOR + v);
-// formulaVar.setModule(SalaryFormulaFieldConstant.MODULE);
-// formulaVar.setTitle(k);
-// formulaVar.setFormId("" + referenceEnum.getValue());
-// formulaVar.setDataType(DataType.NUMBER);
-// formulaVar.setProperKey(DataType.NUMBER);
+ formulaVar.setFieldId(referenceEnum.getValue() + SalaryFormulaFieldConstant.FIELD_ID_SEPARATOR + v);
+ formulaVar.setName(k);
+ formulaVar.setSource("" + referenceEnum.getValue());
+ formulaVar.setFieldType(DataType.NUMBER);
formulaVars.add(formulaVar);
});
return formulaVars;
diff --git a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java
index 0fbdce00d..644fb4ab7 100644
--- a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java
+++ b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java
@@ -79,8 +79,9 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc
return (OtherDeductionService) ServiceUtil.getService(OtherDeductionServiceImpl.class, user);
}
-// private SIAccountService siAccountService;
-
+ private SIAccountService getSIAccountService(User user) {
+ return (SIAccountService) ServiceUtil.getService(SIAccountServiceImpl.class, user);
+ }
private AttendQuoteDataService getAttendQuoteDataService(User user) {
return (AttendQuoteDataService) ServiceUtil.getService(AttendQuoteDataServiceImpl.class, user);
@@ -124,8 +125,8 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc
List addUpDeductionPOS = getAddUpDeductionService(user).getAddUpDeductionList(salarySobCycleDTO.getTaxCycle(), employeeIds);
// 5、查询其他免税扣除
List otherDeductionPOS = getOtherDeductionService(user).getOtherDeductionList(salarySobCycleDTO.getTaxCycle(), employeeIds);
- //todo 6、查询社保福利
- List