excel导入工具

This commit is contained in:
钱涛 2024-08-12 15:16:06 +08:00
parent b83d45efa0
commit ecb0f6f7bc
6 changed files with 82 additions and 177 deletions

View File

@ -81,7 +81,7 @@ public class SalaryItemExcelConfig {
@ExcelHead(title="sql返回字段",dataIndex = "sqlReturnKey")
@ExcelProperty(index = 8)
private String sqlReturnKey;
private String extendParam;
/**
* 排序

View File

@ -1,6 +1,7 @@
package com.engine.salary.enums.salaryitem;
import com.engine.salary.enums.BaseEnum;
import com.engine.salary.enums.SalaryValueTypeEnum;
import java.util.Arrays;
import java.util.Objects;
@ -66,4 +67,13 @@ public enum SalaryDataTypeEnum implements BaseEnum<String> {
}
return "";
}
public static SalaryDataTypeEnum parseByDefaultLabel(String defaultLabel) {
for (SalaryDataTypeEnum typeEnum : SalaryDataTypeEnum.values()) {
if (Objects.equals(typeEnum.getDefaultLabel(), defaultLabel)) {
return typeEnum;
}
}
return STRING;
}
}

View File

@ -1,6 +1,6 @@
package com.engine.salary.mapper.salaryitem;
import com.engine.salary.entity.salaryitem.config.SalaryItemConfig;
import com.engine.salary.entity.salaryitem.config.SalaryItemExcelConfig;
import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import org.apache.ibatis.annotations.Param;
@ -70,9 +70,7 @@ public interface SalaryItemMapper {
SalaryItemPO getByName(String name);
List<SalaryItemConfig> getConfig(@Param("ids") Collection<Long> ids);
List<SalaryItemConfig> getAllConfig(@Param("ids") Collection<Long> ids);
List<SalaryItemExcelConfig> getConfig(@Param("ids") Collection<Long> ids);

View File

@ -31,7 +31,10 @@
<!-- 表字段 -->
<sql id="baseColumns">
t.id,
t
.
id
,
t.name,
t.code,
t.system_type,
@ -589,138 +592,49 @@
WHERE name = #{name} AND delete_type = 0
</select>
<resultMap id="configResultMap" type="com.engine.salary.entity.salaryitem.config.SalaryItemConfig">
<result column="item_id" property="id"/>
<result column="item_name" property="name"/>
<result column="item_code" property="code"/>
<result column="item_system_type" property="systemType"/>
<result column="item_sys_salary_item_id" property="sysSalaryItemId"/>
<result column="item_use_default" property="useDefault"/>
<result column="item_use_in_employee_salary" property="useInEmployeeSalary"/>
<result column="item_rounding_mode" property="roundingMode"/>
<result column="item_pattern" property="pattern"/>
<result column="item_value_type" property="valueType"/>
<result column="item_formula_id" property="formulaId"/>
<result column="item_description" property="description"/>
<result column="item_can_edit" property="canEdit"/>
<result column="item_data_type" property="dataType"/>
<result column="item_shared_type" property="sharedType"/>
<result column="item_tax_agent_ids" property="taxAgentIds"/>
<result column="item_sorted_index" property="sortedIndex"/>
<result column="item_hide_default" property="hideDefault"/>
<result column="item_width" property="width"/>
<result column="item_default_value" property="defaultValue"/>
<association property="formulaConfig" javaType="com.engine.salary.entity.salaryitem.config.FormulaConfig">
<result column="formula_id" property="id"/>
<result column="formula_name" property="name"/>
<result column="formula_description" property="description"/>
<result column="formula_module" property="module"/>
<result column="formula_use_for" property="useFor"/>
<result column="formula_reference_type" property="referenceType"/>
<result column="formula_return_type" property="returnType"/>
<result column="formula_validate_type" property="validateType"/>
<result column="formula_extend_param" property="extendParam"/>
<result column="formula_formula" property="formula"/>
<result column="formula_formulaRunScript" property="formulaRunScript"/>
<collection property="varConfigs" ofType="com.engine.salary.entity.salaryitem.config.FormulaVarConfig">
<result column="var_id" property="id"/>
<result column="var_name" property="name"/>
<result column="var_formula_id" property="formulaId"/>
<result column="var_field_id" property="fieldId"/>
<result column="var_field_name" property="fieldName"/>
<result column="var_field_type" property="fieldType"/>
<result column="var_source" property="source"/>
<result column="var_order_index" property="orderIndex"/>
</collection>
</association>
<resultMap id="configResultMap" type="com.engine.salary.entity.salaryitem.config.SalaryItemExcelConfig">
<result column="name" property="name"/>
<result column="use_default" property="useDefault"/>
<result column="hide_default" property="hideDefault"/>
<result column="data_type" property="dataType"/>
<result column="rounding_mode" property="roundingMode"/>
<result column="pattern" property="pattern"/>
<result column="value_type" property="valueType"/>
<result column="formula" property="formula"/>
<result column="extend_param" property="extendParam"/>
<result column="sorted_index" property="sortedIndex"/>
<result column="width" property="width"/>
<result column="default_value" property="defaultValue"/>
<result column="description" property="description"/>
</resultMap>
<sql id="itemColumns">
item.id as item_id
,item.name as item_name
, item.code as item_code
, item.system_type as item_system_type
, item.sys_salary_item_id as item_sys_salary_item_id
, item.use_default as item_use_default
, item.use_in_employee_salary as item_use_in_employee_salary
, item.rounding_mode as item_rounding_mode
, item.pattern as item_pattern
, item.value_type as item_value_type
, item.formula_id as item_formula_id
, item.description as item_description
, item.can_edit as item_can_edit
, item.can_delete as item_can_delete
, item.data_type as item_data_type
, item.shared_type as item_shared_type
, item.tax_agent_ids as item_tax_agent_ids
, item.sorted_index as item_sorted_index
, item.hide_default as item_hide_default
, item.width as item_width
, item.default_value as item_default_value
, f.formula_id
, f.formula_name
, f.formula_description
, f.formula_module
, f.formula_use_for
, f.formula_reference_type
, f.formula_return_type
, f.formula_validate_type
, f.formula_extend_param
, f.formula_formula
, f.formula_formulaRunScript
, f.var_id
, f.var_name
, f.var_formula_id
, f.var_field_id
, f.var_field_name
, f.var_field_type
, f.var_source
, f.var_order_index
item.name as name
, item.use_default as use_default
, item.hide_default as hide_default
, item.data_type as data_type
, item.rounding_mode as rounding_mode
, item.pattern as pattern
, item.value_type as value_type
, f.formula as formula
, f.extend_param as extend_param
, item.sorted_index as sorted_index
, item.width as width
, item.default_value as default_value
, item.description as description
</sql>
<sql id="formulaColumns">
formula.id as formula_id
, formula.name as formula_name
, formula.description as formula_description
, formula.module as formula_module
, formula.use_for as formula_use_for
, formula.reference_type as formula_reference_type
, formula.return_type as formula_return_type
, formula.validate_type as formula_validate_type
, formula.extend_param as formula_extend_param
, formula.formula as formula_formula
, formula.formulaRunScript as formula_formulaRunScript
</sql>
<sql id="varColumns">
, var.id as var_id
, var.name as var_name
, var.formula_id as var_formula_id
, var.field_id as var_field_id
, var.field_name as var_field_name
, var.field_type as var_field_type
, var.source as var_source
, var.order_index as var_order_index
</sql>
<select id="getConfig" resultMap="configResultMap">
select
<include refid="itemColumns"/>
from hrsa_salary_item item
left join
(
select
<include refid="formulaColumns"/>
<include refid="varColumns"/>
from hrsa_formula formula
left join hrsa_formula_var var on var.formula_id = formula.id
where formula.delete_type=0 and var.delete_type=0
) f
on item.formula_id = f.formula_id
where item.delete_type=0 and item.use_in_employee_salary = 0
and system_type = 0
left join hrsa_formula f on item.formula_id = f.id
where item.delete_type=0
and item.use_in_employee_salary = 0
and item.system_type = 0
<if test="ids != null and ids.size()>0">
AND item.id IN
<foreach collection="ids" open="(" item="id" separator="," close=")">
@ -730,30 +644,5 @@
</select>
<select id="getAllConfig" resultMap="configResultMap">
select
<include refid="itemColumns"/>
from hrsa_salary_item item
left join
(
select
<include refid="formulaColumns"/>
<include refid="varColumns"/>
from hrsa_formula formula
left join hrsa_formula_var var on var.formula_id = formula.id
where formula.delete_type=0 and var.delete_type=0
) f
on item.formula_id = f.formula_id
where item.delete_type=0 and item.use_in_employee_salary = 0
<if test="ids != null and ids.size()>0">
AND item.id IN
<foreach collection="ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
</select>
</mapper>

View File

@ -1,7 +1,7 @@
package com.engine.salary.service;
import com.engine.salary.entity.salaryitem.config.SalaryItemAllConfig;
import com.engine.salary.entity.salaryitem.config.SalaryItemConfig;
import com.engine.salary.entity.salaryitem.config.SalaryItemExcelConfig;
import com.engine.salary.entity.salaryitem.param.*;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.enums.SalarySystemTypeEnum;
@ -155,9 +155,8 @@ public interface SalaryItemService {
SalaryItemAllConfig getConfig();
void parseConfig(SalaryItemAllConfig salaryItemConfig);
List<SalaryItemConfig> getConfig(SalaryItemExportParam param);
List<SalaryItemExcelConfig> getConfig(SalaryItemExportParam param);
List<SalaryItemConfig> getAllConfig(SalaryItemExportParam param);
Map<String, Object> preview(SalaryItemImportParam param);

View File

@ -15,7 +15,6 @@ import com.engine.salary.entity.salaryformula.po.FormulaPO;
import com.engine.salary.entity.salaryformula.po.FormulaVar;
import com.engine.salary.entity.salaryitem.bo.SalaryItemBO;
import com.engine.salary.entity.salaryitem.config.SalaryItemAllConfig;
import com.engine.salary.entity.salaryitem.config.SalaryItemConfig;
import com.engine.salary.entity.salaryitem.config.SalaryItemExcelConfig;
import com.engine.salary.entity.salaryitem.param.*;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
@ -538,14 +537,10 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService
@Override
public List<SalaryItemConfig> getConfig(SalaryItemExportParam param) {
public List<SalaryItemExcelConfig> getConfig(SalaryItemExportParam param) {
return getSalaryItemMapper().getConfig(param.getIds());
}
@Override
public List<SalaryItemConfig> getAllConfig(SalaryItemExportParam param) {
return getSalaryItemMapper().getAllConfig(param.getIds());
}
@Override
public Map<String, Object> preview(SalaryItemImportParam param) {
@ -585,7 +580,7 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService
SalaryItemExcelConfig config = configs.get(i);
String name = config.getName();
SalaryValueTypeEnum salaryValueTypeEnum = SalaryValueTypeEnum.parseByDefaultLabel(config.getValueType());
SalaryDataTypeEnum salaryDataTypeEnum = SalaryDataTypeEnum.parseByValue(config.getDataType());
SalaryDataTypeEnum salaryDataTypeEnum = SalaryDataTypeEnum.parseByDefaultLabel(config.getDataType());
SalaryItemPO itemPO = getByName(name);
if (itemPO == null) {
@ -656,7 +651,7 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService
if (salaryValueTypeEnum == SalaryValueTypeEnum.FORMULA || salaryValueTypeEnum == SalaryValueTypeEnum.SQL) {
Long id = itemPO.getId();
String formula = config.getFormula();
String sqlReturnKey = config.getSqlReturnKey();
String sqlReturnKey = config.getExtendParam();
Map<String, String> map = new HashMap<>();
map.put("rowIndex", rowIndex);
map.put("formula", formula);
@ -711,21 +706,28 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService
List<String> dataIndexList = Lists.newArrayList();
ExcelUtil.parseHeader(SalaryItemExcelConfig.class, titles, dataIndexList);
List<SalaryItemConfig> configs = getConfig(param);
List<SalaryItemExcelConfig> configs = getConfig(param);
List<List<Object>> rows = new ArrayList<>();
rows.add(titles);
configs.forEach(e -> {
List<Object> row = new ArrayList<>();
row.add(e.getName());
row.add(e.getUseDefault() == null ? "" : SalaryOnOffEnum.parseByValue(e.getUseDefault()).getDefaultLabel());
row.add(e.getHideDefault() == null ? "" : SalaryOnOffEnum.parseByValue(e.getHideDefault()).getDefaultLabel());
row.add(e.getUseDefault() == null ? "" : SalaryOnOffEnum.parseByValue(Integer.parseInt(e.getUseDefault())).getDefaultLabel());
row.add(e.getHideDefault() == null ? "" : SalaryOnOffEnum.parseByValue(Integer.parseInt(e.getHideDefault())).getDefaultLabel());
row.add(SalaryDataTypeEnum.parseByValue(Util.null2String(e.getDataType())).getDefaultLabel());
row.add(e.getRoundingMode() == null ? "四舍五入" : SalaryRoundingModeEnum.parseByValue(e.getRoundingMode()).getDefaultLabel());
row.add(e.getRoundingMode() == null ? "四舍五入" : SalaryRoundingModeEnum.parseByValue(Integer.parseInt(e.getRoundingMode())).getDefaultLabel());
row.add(e.getPattern() == null ? "2" : e.getPattern());
row.add(e.getValueType() == null ? "输入" : SalaryValueTypeEnum.parseByValue(e.getValueType()).getDefaultLabel());
row.add(e.getFormulaConfig() == null ? "" : e.getFormulaConfig().getFormula());
row.add(e.getFormulaConfig() == null ? "" : JsonUtil.parseMap(Util.null2String(e.getFormulaConfig().getExtendParam()), String.class).getOrDefault("sqlReturnKey", ""));
row.add(e.getValueType() == null ? "输入" : SalaryValueTypeEnum.parseByValue(Integer.parseInt(e.getValueType())).getDefaultLabel());
row.add(e.getFormula() == null ? "" : e.getFormula());
String sqlReturnKey = "";
if(e.getExtendParam() != null){
sqlReturnKey = JsonUtil.parseMap(Util.null2String(e.getExtendParam()), String.class).getOrDefault("sqlReturnKey", "");
if("null".equals(sqlReturnKey)){
sqlReturnKey = "";
}
}
row.add(sqlReturnKey);
row.add(e.getSortedIndex() == null ? "" : e.getSortedIndex());
row.add(e.getWidth() == null ? "" : e.getWidth());
row.add(e.getDefaultValue() == null ? "" : e.getDefaultValue());
@ -746,18 +748,25 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService
List<List<Object>> rows = new ArrayList<>();
rows.add(titles);
if (param.isHasData()) {
List<SalaryItemConfig> configs = getConfig(SalaryItemExportParam.builder().build());
List<SalaryItemExcelConfig> configs = getConfig(SalaryItemExportParam.builder().build());
configs.forEach(e -> {
List<Object> row = new ArrayList<>();
row.add(e.getName());
row.add(e.getUseDefault() == null ? "" : SalaryOnOffEnum.parseByValue(e.getUseDefault()).getDefaultLabel());
row.add(e.getHideDefault() == null ? "" : SalaryOnOffEnum.parseByValue(e.getHideDefault()).getDefaultLabel());
row.add(e.getUseDefault() == null ? "" : SalaryOnOffEnum.parseByValue(Integer.parseInt(e.getUseDefault())).getDefaultLabel());
row.add(e.getHideDefault() == null ? "" : SalaryOnOffEnum.parseByValue(Integer.parseInt(e.getHideDefault())).getDefaultLabel());
row.add(SalaryDataTypeEnum.parseByValue(Util.null2String(e.getDataType())).getDefaultLabel());
row.add(e.getRoundingMode() == null ? "四舍五入" : SalaryRoundingModeEnum.parseByValue(e.getRoundingMode()).getDefaultLabel());
row.add(e.getRoundingMode() == null ? "四舍五入" : SalaryRoundingModeEnum.parseByValue(Integer.parseInt(e.getRoundingMode())).getDefaultLabel());
row.add(e.getPattern() == null ? "2" : e.getPattern());
row.add(e.getValueType() == null ? "输入" : SalaryValueTypeEnum.parseByValue(e.getValueType()).getDefaultLabel());
row.add(e.getFormulaConfig() == null ? "" : e.getFormulaConfig().getFormula());
row.add(e.getFormulaConfig() == null ? "" : JsonUtil.parseMap(Util.null2String(e.getFormulaConfig().getExtendParam()), String.class).getOrDefault("sqlReturnKey", ""));
row.add(e.getValueType() == null ? "输入" : SalaryValueTypeEnum.parseByValue(Integer.parseInt(e.getValueType())).getDefaultLabel());
row.add(e.getFormula() == null ? "" : e.getFormula());
String sqlReturnKey = "";
if(e.getExtendParam() != null){
sqlReturnKey = JsonUtil.parseMap(Util.null2String(e.getExtendParam()), String.class).getOrDefault("sqlReturnKey", "");
if("null".equals(sqlReturnKey)){
sqlReturnKey = "";
}
}
row.add(sqlReturnKey);
row.add(e.getSortedIndex() == null ? "" : e.getSortedIndex());
row.add(e.getWidth() == null ? "" : e.getWidth());
row.add(e.getDefaultValue() == null ? "" : e.getDefaultValue());