导入薪资项目
This commit is contained in:
parent
bd6e30b63b
commit
48120f8e24
|
|
@ -0,0 +1,114 @@
|
|||
package com.engine.salary.entity.salaryitem.config;
|
||||
|
||||
import com.engine.salary.enums.SalaryRoundingModeEnum;
|
||||
import com.engine.salary.enums.SalaryValueTypeEnum;
|
||||
import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum;
|
||||
import com.engine.salary.util.excel.ExcelHead;
|
||||
import com.engine.salary.util.excel.ExcelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class SalaryItemExcelConfig {
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
@ExcelHead(title="名称",dataIndex = "name")
|
||||
@ExcelProperty(index = 0)
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 默认使用。0:默认不适用、1:默认使用
|
||||
*/
|
||||
@ExcelHead(title="是否默认使用",dataIndex = "useDefault")
|
||||
@ExcelProperty(index = 1)
|
||||
private String useDefault;
|
||||
|
||||
/**
|
||||
* 核算是否隐藏
|
||||
*/
|
||||
@ExcelHead(title="核算是否隐藏",dataIndex = "hideDefault")
|
||||
@ExcelProperty(index = 2)
|
||||
private String hideDefault;
|
||||
|
||||
/**
|
||||
* 进位规则
|
||||
*
|
||||
* @see SalaryRoundingModeEnum
|
||||
*/
|
||||
@ExcelHead(title="进位规则",dataIndex = "roundingMode")
|
||||
@ExcelProperty(index = 3)
|
||||
private String roundingMode;
|
||||
|
||||
/**
|
||||
* 保留的小数位数
|
||||
*/
|
||||
@ExcelHead(title="保留的小数位数",dataIndex = "pattern")
|
||||
@ExcelProperty(index = 4)
|
||||
private String pattern;
|
||||
|
||||
/**
|
||||
* 取值方式
|
||||
*
|
||||
* @see SalaryValueTypeEnum
|
||||
*/
|
||||
@ExcelHead(title="取值方式",dataIndex = "valueType")
|
||||
@ExcelProperty(index = 5)
|
||||
private String valueType;
|
||||
|
||||
/**
|
||||
* 字段类型
|
||||
*
|
||||
* @see SalaryDataTypeEnum
|
||||
*/
|
||||
@ExcelHead(title="字段类型",dataIndex = "dataType")
|
||||
@ExcelProperty(index = 6)
|
||||
private String dataType;
|
||||
|
||||
/**
|
||||
* 公式
|
||||
*/
|
||||
@ExcelHead(title="公式",dataIndex = "formula")
|
||||
@ExcelProperty(index = 7)
|
||||
private String formula;
|
||||
|
||||
@ExcelHead(title="sql返回字段",dataIndex = "sqlReturnKey")
|
||||
@ExcelProperty(index = 8)
|
||||
private String sqlReturnKey;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
@ExcelHead(title="排序",dataIndex = "sortedIndex")
|
||||
@ExcelProperty(index = 9)
|
||||
private String sortedIndex;
|
||||
|
||||
/**
|
||||
* 宽度
|
||||
*/
|
||||
@ExcelHead(title="宽度",dataIndex = "width")
|
||||
@ExcelProperty(index = 10)
|
||||
private String width;
|
||||
|
||||
/**
|
||||
* 默认值
|
||||
*/
|
||||
@ExcelHead(title="默认值",dataIndex = "defaultValue")
|
||||
@ExcelProperty(index = 11)
|
||||
private String defaultValue;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelHead(title="备注",dataIndex = "description")
|
||||
@ExcelProperty(index = 12)
|
||||
private String description;
|
||||
|
||||
}
|
||||
|
|
@ -50,4 +50,13 @@ public enum SalaryOnOffEnum implements BaseEnum<Integer> {
|
|||
}
|
||||
return OFF;
|
||||
}
|
||||
|
||||
public static SalaryOnOffEnum parseByDefaultLabel(String defaultLabel) {
|
||||
for (SalaryOnOffEnum item : values()) {
|
||||
if (item.getDefaultLabel().equals(defaultLabel)) {
|
||||
return item;
|
||||
}
|
||||
}
|
||||
return OFF;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,4 +69,13 @@ public enum SalaryRoundingModeEnum implements BaseEnum<Integer> {
|
|||
}
|
||||
return ROUNDING;
|
||||
}
|
||||
|
||||
public static SalaryRoundingModeEnum parseByDefaultLabel(String defaultLabel) {
|
||||
for (SalaryRoundingModeEnum modeEnum : SalaryRoundingModeEnum.values()) {
|
||||
if (Objects.equals(modeEnum.getDefaultLabel(), defaultLabel)) {
|
||||
return modeEnum;
|
||||
}
|
||||
}
|
||||
return ROUNDING;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,6 +54,15 @@ public enum SalaryValueTypeEnum implements BaseEnum<Integer> {
|
|||
return INPUT;
|
||||
}
|
||||
|
||||
public static SalaryValueTypeEnum parseByDefaultLabel(String defaultLabel) {
|
||||
for (SalaryValueTypeEnum salaryValueTypeEnum : SalaryValueTypeEnum.values()) {
|
||||
if (Objects.equals(salaryValueTypeEnum.getDefaultLabel(), defaultLabel)) {
|
||||
return salaryValueTypeEnum;
|
||||
}
|
||||
}
|
||||
return INPUT;
|
||||
}
|
||||
|
||||
|
||||
public static String getDefaultLabelByValue(Integer value) {
|
||||
if (value == null) {
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ public enum SalaryDataTypeEnum implements BaseEnum<String> {
|
|||
return salaryDataTypeEnum;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
return STRING;
|
||||
}
|
||||
|
||||
public static String getDefaultLabelByValue(String value) {
|
||||
|
|
|
|||
|
|
@ -68,8 +68,10 @@ public interface SalaryItemMapper {
|
|||
|
||||
void batchUpdateSortedIndex(@Param("collection")List<SalaryItemPO> salaryItemPOS);
|
||||
|
||||
SalaryItemPO getByName(String name);
|
||||
|
||||
List<SalaryItemConfig> getConfig(@Param("ids") Collection<Long> ids);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -582,6 +582,13 @@
|
|||
</if>
|
||||
</sql>
|
||||
|
||||
<select id="getByName" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
<include refid="baseColumns"/>
|
||||
FROM hrsa_salary_item t
|
||||
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"/>
|
||||
|
|
@ -651,11 +658,30 @@
|
|||
, 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
|
||||
</sql>
|
||||
|
||||
|
||||
<sql id="formulaColumns">
|
||||
, formula.id as formula_id
|
||||
formula.id as formula_id
|
||||
, formula.name as formula_name
|
||||
, formula.description as formula_description
|
||||
, formula.module as formula_module
|
||||
|
|
@ -682,16 +708,19 @@
|
|||
<select id="getConfig" resultMap="configResultMap">
|
||||
select
|
||||
<include refid="itemColumns"/>
|
||||
<include refid="formulaColumns"/>
|
||||
<include refid="varColumns"/>
|
||||
|
||||
from hrsa_salary_item item
|
||||
left join hrsa_formula formula on item.formula_id = formula.id
|
||||
left join hrsa_formula_var var on var.formula_id = formula.id
|
||||
where item.delete_type=0 and formula.delete_type=0 and var.delete_type=0
|
||||
and item.use_in_employee_salary = 0
|
||||
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.id
|
||||
where item.delete_type=0 and item.use_in_employee_salary = 0
|
||||
and system_type = 0
|
||||
|
||||
<if test="ids != null and ids.size()>0">
|
||||
AND id IN
|
||||
<foreach collection="ids" open="(" item="id" separator="," close=")">
|
||||
|
|
|
|||
|
|
@ -1,13 +1,11 @@
|
|||
package com.engine.salary.service;
|
||||
|
||||
import com.engine.salary.entity.salaryitem.config.SalaryItemConfig;
|
||||
import com.engine.salary.entity.salaryitem.param.SalaryItemExportParam;
|
||||
import com.engine.salary.entity.salaryitem.param.SalaryItemSaveParam;
|
||||
import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam;
|
||||
import com.engine.salary.entity.salaryitem.param.SyncSalaryItemParam;
|
||||
import com.engine.salary.entity.salaryitem.param.*;
|
||||
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
|
||||
import com.engine.salary.enums.SalarySystemTypeEnum;
|
||||
import com.engine.salary.service.impl.SalaryItemServiceImpl;
|
||||
import com.engine.salary.util.excel.ImportExcelResponse;
|
||||
import com.engine.salary.util.page.PageInfo;
|
||||
|
||||
import java.util.Collection;
|
||||
|
|
@ -63,6 +61,8 @@ public interface SalaryItemService {
|
|||
* @return
|
||||
*/
|
||||
List<SalaryItemPO> listByName(String name);
|
||||
SalaryItemPO getByName(String name);
|
||||
|
||||
|
||||
/**
|
||||
* 根据(自定义薪资项目/系统薪资项目)查询薪资项目
|
||||
|
|
@ -151,4 +151,6 @@ public interface SalaryItemService {
|
|||
void syncSalaryItemToSalarySobItem(SyncSalaryItemParam syncSalaryItemParam);
|
||||
|
||||
List<SalaryItemConfig> getConfig(SalaryItemExportParam param);
|
||||
|
||||
ImportExcelResponse importSalaryItem(SalaryItemImportParam param);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.engine.salary.service.impl;
|
||||
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.api.formmode.mybatis.util.SqlProxyHandle;
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
|
|
@ -8,29 +9,33 @@ import com.engine.hrmelog.entity.dto.LoggerContext;
|
|||
import com.engine.salary.biz.SalaryItemBiz;
|
||||
import com.engine.salary.biz.SysSalaryItemBiz;
|
||||
import com.engine.salary.config.SalaryElogConfig;
|
||||
import com.engine.salary.constant.SalaryDefaultTenantConstant;
|
||||
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.salaryitem.bo.SalaryItemBO;
|
||||
import com.engine.salary.entity.salaryitem.config.SalaryItemConfig;
|
||||
import com.engine.salary.entity.salaryitem.param.SalaryItemExportParam;
|
||||
import com.engine.salary.entity.salaryitem.param.SalaryItemSaveParam;
|
||||
import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam;
|
||||
import com.engine.salary.entity.salaryitem.param.SyncSalaryItemParam;
|
||||
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.entity.salaryitem.po.SysSalaryItemPO;
|
||||
import com.engine.salary.entity.salarysob.po.SalarySobBackItemPO;
|
||||
import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
|
||||
import com.engine.salary.entity.salarysob.po.SalarySobPO;
|
||||
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
|
||||
import com.engine.salary.enums.OperateTypeEnum;
|
||||
import com.engine.salary.enums.SalarySystemTypeEnum;
|
||||
import com.engine.salary.enums.SalaryValueTypeEnum;
|
||||
import com.engine.salary.enums.*;
|
||||
import com.engine.salary.enums.salaryformula.ReferenceTypeEnum;
|
||||
import com.engine.salary.enums.salaryformula.ReturnTypeEnum;
|
||||
import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum;
|
||||
import com.engine.salary.enums.sicategory.SharedTypeEnum;
|
||||
import com.engine.salary.exception.SalaryRunTimeException;
|
||||
import com.engine.salary.mapper.salaryitem.SalaryItemMapper;
|
||||
import com.engine.salary.service.*;
|
||||
import com.engine.salary.util.SalaryEntityUtil;
|
||||
import com.engine.salary.util.SalaryI18nUtil;
|
||||
import com.engine.salary.util.db.IdGenerator;
|
||||
import com.engine.salary.util.excel.ExcelParseHelper;
|
||||
import com.engine.salary.util.excel.ImportExcelResponse;
|
||||
import com.engine.salary.util.page.PageInfo;
|
||||
import com.engine.salary.util.page.SalaryPageUtil;
|
||||
import com.engine.salary.util.valid.ValidUtil;
|
||||
|
|
@ -41,11 +46,15 @@ import lombok.NoArgsConstructor;
|
|||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import weaver.file.ImageFileManager;
|
||||
import weaver.hrm.User;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.engine.salary.util.excel.ExcelSupport.EXCEL_TYPE_XLSX;
|
||||
|
||||
/**
|
||||
* 薪资项目
|
||||
* <p>Copyright: Copyright (c) 2022</p>
|
||||
|
|
@ -120,6 +129,12 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService
|
|||
return salaryItemBiz.listSome(SalaryItemPO.builder().name(name).build());
|
||||
}
|
||||
|
||||
@Override
|
||||
public SalaryItemPO getByName(String name) {
|
||||
return getSalaryItemMapper().getByName(name);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<SalaryItemPO> listBySystemType(SalarySystemTypeEnum systemType) {
|
||||
return salaryItemBiz.listSome(SalaryItemPO.builder().systemType(systemType.getValue()).build());
|
||||
|
|
@ -512,13 +527,121 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public List<SalaryItemConfig> getConfig(SalaryItemExportParam param) {
|
||||
return getSalaryItemMapper().getConfig(param.getIds());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImportExcelResponse importSalaryItem(SalaryItemImportParam param) {
|
||||
|
||||
Date now = new Date();
|
||||
InputStream fileInputStream = null;
|
||||
fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId()));
|
||||
List<SalaryItemExcelConfig> configs = ExcelParseHelper.parse2Map(fileInputStream, SalaryItemExcelConfig.class, 0, 1, 13, EXCEL_TYPE_XLSX);
|
||||
|
||||
// 错误excel内容
|
||||
ImportExcelResponse response = ImportExcelResponse.builder().totalCount(configs.size()).successCount(configs.size()).errorCount(0).errorData(new ArrayList<>()).build();
|
||||
|
||||
List<SalaryItemPO> adds = new ArrayList<>();
|
||||
List<SalaryItemPO> updates = new ArrayList<>();
|
||||
Map<Long, String> formulaItems = new HashMap<>();
|
||||
for (int i = 0; i < configs.size(); i++) {
|
||||
String rowIndex = String.format("第%s行", i + 2);
|
||||
SalaryItemExcelConfig config = configs.get(i);
|
||||
String name = config.getName();
|
||||
SalaryValueTypeEnum salaryValueTypeEnum = SalaryValueTypeEnum.parseByDefaultLabel(config.getValueType());
|
||||
SalaryItemPO itemPO = getByName(name);
|
||||
if (itemPO == null) {
|
||||
itemPO = SalaryItemPO.builder()
|
||||
.id(IdGenerator.generate())
|
||||
.code(IdGenerator.getUUID())
|
||||
.name(config.getName())
|
||||
.systemType(SalarySystemTypeEnum.CUSTOM.getValue())
|
||||
.sysSalaryItemId(org.apache.commons.lang3.math.NumberUtils.LONG_ZERO)
|
||||
.useDefault(SalaryOnOffEnum.parseByDefaultLabel(config.getUseDefault()).getValue())
|
||||
.useInEmployeeSalary(SalaryOnOffEnum.OFF.getValue())
|
||||
.hideDefault(SalaryOnOffEnum.parseByDefaultLabel(config.getHideDefault()).getValue())
|
||||
.roundingMode(SalaryRoundingModeEnum.parseByDefaultLabel(config.getRoundingMode()).getValue())
|
||||
.pattern(NumberUtil.isNumber(config.getPattern()) ? Integer.parseInt(config.getPattern()) : 2)
|
||||
.valueType(salaryValueTypeEnum.getValue())
|
||||
.dataType(config.getDataType())
|
||||
//后补
|
||||
.formulaId(0L)
|
||||
.description(config.getDescription())
|
||||
.canEdit(org.apache.commons.lang3.math.NumberUtils.INTEGER_ONE)
|
||||
.creator((long) user.getUID())
|
||||
.deleteType(0)
|
||||
.createTime(now)
|
||||
.updateTime(now)
|
||||
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
||||
.sharedType(0)
|
||||
.taxAgentIds("")
|
||||
.sortedIndex(NumberUtil.isNumber(config.getSortedIndex()) ? Integer.parseInt(config.getSortedIndex()) : null)
|
||||
.width(NumberUtil.isNumber(config.getWidth()) ? Integer.parseInt(config.getWidth()) : null)
|
||||
.defaultValue(config.getDefaultValue())
|
||||
.build();
|
||||
adds.add(itemPO);
|
||||
} else {
|
||||
itemPO.setUseDefault(SalaryOnOffEnum.parseByDefaultLabel(config.getUseDefault()).getValue());
|
||||
itemPO.setHideDefault(SalaryOnOffEnum.parseByDefaultLabel(config.getHideDefault()).getValue());
|
||||
itemPO.setRoundingMode(SalaryRoundingModeEnum.parseByDefaultLabel(config.getRoundingMode()).getValue());
|
||||
itemPO.setPattern(NumberUtil.isNumber(config.getPattern()) ? Integer.parseInt(config.getPattern()) : 2);
|
||||
itemPO.setValueType(salaryValueTypeEnum.getValue());
|
||||
itemPO.setDataType(config.getDataType());
|
||||
//后补
|
||||
itemPO.setFormulaId(0L);
|
||||
itemPO.setDescription(config.getDescription());
|
||||
itemPO.setUpdateTime(now);
|
||||
itemPO.setSortedIndex(NumberUtil.isNumber(config.getSortedIndex()) ? Integer.parseInt(config.getSortedIndex()) : null);
|
||||
itemPO.setWidth(NumberUtil.isNumber(config.getWidth()) ? Integer.parseInt(config.getWidth()) : null);
|
||||
itemPO.setDefaultValue(config.getDefaultValue());
|
||||
updates.add(itemPO);
|
||||
}
|
||||
|
||||
//解析公式
|
||||
if (salaryValueTypeEnum == SalaryValueTypeEnum.FORMULA || salaryValueTypeEnum == SalaryValueTypeEnum.SQL) {
|
||||
Long id = itemPO.getId();
|
||||
String formula = config.getFormula();
|
||||
String sqlReturnKey = config.getSqlReturnKey();
|
||||
formulaItems.put(id, formula);
|
||||
}
|
||||
}
|
||||
|
||||
adds.forEach(getSalaryItemMapper()::insertIgnoreNull);
|
||||
updates.forEach(getSalaryItemMapper()::updateIgnoreNull);
|
||||
|
||||
for (Long id : formulaItems.keySet()) {
|
||||
SalaryItemPO itemPO = getById(id);
|
||||
String formula = formulaItems.get(id);
|
||||
SalaryValueTypeEnum salaryValueTypeEnum = SalaryValueTypeEnum.parseByValue(itemPO.getValueType());
|
||||
SalaryDataTypeEnum salaryDataTypeEnum = SalaryDataTypeEnum.parseByValue(itemPO.getDataType());
|
||||
SalaryFormulaSaveParam saveParam = SalaryFormulaSaveParam.builder()
|
||||
.name(itemPO.getName())
|
||||
.module("salary")
|
||||
.useFor("salaryitem")
|
||||
.referenceType(salaryValueTypeEnum == SalaryValueTypeEnum.FORMULA ? ReferenceTypeEnum.FORMULA.getValue() : ReferenceTypeEnum.SQL.getValue())
|
||||
.returnType(salaryDataTypeEnum == SalaryDataTypeEnum.STRING ? ReturnTypeEnum.STRING.getValue() : ReturnTypeEnum.NUMBER.getValue())
|
||||
.validateType(salaryDataTypeEnum == SalaryDataTypeEnum.STRING ? ReturnTypeEnum.STRING.getValue() : ReturnTypeEnum.NUMBER.getValue())
|
||||
.extendParam("{\"isCustomFunction\":\"0\",\"sqlReturnKey\":\"a\",\"openDecrypt\":\"0\",\"datasource\":{\"datasourceId\":\"\"}}")
|
||||
.formula(formula)
|
||||
.build();
|
||||
|
||||
try {
|
||||
FormulaPO formulaPO = getSalaryFormulaService(user).save(saveParam);
|
||||
itemPO.setFormulaId(formulaPO.getId());
|
||||
|
||||
} catch (Exception e) {
|
||||
ImportExcelResponse.Error error = ImportExcelResponse.Error.builder().message(String.format("“%s”的公式设置有误:%s", itemPO.getName() , e.getMessage())).build();
|
||||
response.setSuccessCount(response.getSuccessCount() - 1);
|
||||
response.setErrorCount(response.getErrorCount() + 1);
|
||||
response.getErrorData().add(error);
|
||||
}
|
||||
}
|
||||
|
||||
return response;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.engine.salary.util.db;
|
||||
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
public class IdGenerator {
|
||||
|
|
@ -43,4 +44,8 @@ public class IdGenerator {
|
|||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
public static String getUUID() {
|
||||
return UUID.randomUUID().toString().replaceAll("-", "");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,9 +15,9 @@ import java.lang.annotation.*;
|
|||
@Documented
|
||||
public @interface ExcelHead {
|
||||
|
||||
String title() default "";
|
||||
String title() ;
|
||||
|
||||
String dataIndex() default "";
|
||||
String dataIndex() ;
|
||||
|
||||
DataTypeEnum dataType() default DataTypeEnum.string;
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
package com.engine.salary.util.excel;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class ImportExcelResponse {
|
||||
private Integer totalCount;
|
||||
private Integer successCount;
|
||||
private Integer errorCount;
|
||||
private List<Error> errorData;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class Error {
|
||||
String message;
|
||||
}
|
||||
}
|
||||
|
|
@ -2,7 +2,6 @@ package com.engine.salary.web;
|
|||
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.salary.component.WeaFormOption;
|
||||
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportHandleParam;
|
||||
import com.engine.salary.entity.salaryitem.dto.SalaryItemFormDTO;
|
||||
import com.engine.salary.entity.salaryitem.dto.SalaryItemListDTO;
|
||||
import com.engine.salary.entity.salaryitem.dto.SysSalaryItemListDTO;
|
||||
|
|
@ -10,6 +9,7 @@ import com.engine.salary.entity.salaryitem.param.*;
|
|||
import com.engine.salary.exception.SalaryRunTimeException;
|
||||
import com.engine.salary.util.ResponseResult;
|
||||
import com.engine.salary.util.SalaryI18nUtil;
|
||||
import com.engine.salary.util.excel.ImportExcelResponse;
|
||||
import com.engine.salary.util.page.PageInfo;
|
||||
import com.engine.salary.wrapper.SalaryItemWrapper;
|
||||
import com.engine.salary.wrapper.SysSalaryItemWrapper;
|
||||
|
|
@ -218,7 +218,7 @@ public class SalaryItemController {
|
|||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String importSalaryItem(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryItemImportParam importParam) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<SalaryItemImportParam, Map<String, Object>>(user).run(getSalaryItemWrapper(user)::importSalaryItem, importParam);
|
||||
return new ResponseResult<SalaryItemImportParam, ImportExcelResponse>(user).run(getSalaryItemWrapper(user)::importSalaryItem, importParam);
|
||||
}
|
||||
|
||||
/**********************************自定义薪资项目 end*********************************/
|
||||
|
|
|
|||
|
|
@ -5,11 +5,11 @@ import com.engine.core.impl.Service;
|
|||
import com.engine.hrmelog.entity.dto.LoggerContext;
|
||||
import com.engine.salary.component.WeaFormOption;
|
||||
import com.engine.salary.config.SalaryElogConfig;
|
||||
import com.engine.salary.entity.datacollection.dto.AddUpDeductionDTO;
|
||||
import com.engine.salary.entity.salaryformula.ExpressFormula;
|
||||
import com.engine.salary.entity.salaryitem.bo.SalaryItemBO;
|
||||
import com.engine.salary.entity.salaryitem.bo.SysSalaryItemBO;
|
||||
import com.engine.salary.entity.salaryitem.config.SalaryItemConfig;
|
||||
import com.engine.salary.entity.salaryitem.config.SalaryItemExcelConfig;
|
||||
import com.engine.salary.entity.salaryitem.dto.SalaryItemFormDTO;
|
||||
import com.engine.salary.entity.salaryitem.dto.SalaryItemListDTO;
|
||||
import com.engine.salary.entity.salaryitem.param.*;
|
||||
|
|
@ -24,21 +24,22 @@ import com.engine.salary.service.impl.*;
|
|||
import com.engine.salary.sys.enums.TaxDeclarationFunctionEnum;
|
||||
import com.engine.salary.sys.service.SalarySysConfService;
|
||||
import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl;
|
||||
import com.engine.salary.util.JsonUtil;
|
||||
import com.engine.salary.util.SalaryEntityUtil;
|
||||
import com.engine.salary.util.SalaryI18nUtil;
|
||||
import com.engine.salary.util.excel.ExcelParseHelper;
|
||||
import com.engine.salary.util.excel.ExcelUtil;
|
||||
import com.engine.salary.util.excel.ImportExcelResponse;
|
||||
import com.engine.salary.util.page.PageInfo;
|
||||
import com.engine.salary.util.valid.RuntimeTypeEnum;
|
||||
import com.engine.salary.util.valid.ValidUtil;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.weaver.general.Util;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang.math.NumberUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import weaver.file.ImageFileManager;
|
||||
import weaver.hrm.User;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
|
|
@ -312,23 +313,25 @@ public class SalaryItemWrapper extends Service {
|
|||
}
|
||||
|
||||
public XSSFWorkbook export(SalaryItemExportParam param) {
|
||||
List<Object> titles = Lists.newArrayList();
|
||||
List<String> dataIndexList = Lists.newArrayList();
|
||||
ExcelUtil.parseHeader(SalaryItemExcelConfig.class, titles, dataIndexList);
|
||||
|
||||
String[] titles = {"名称", "默认使用", "核算时隐藏", "进位规则", "保留的小数位数", "取值方式", "字段类型", "公式", "备注", "排序", "宽度", "默认值"};
|
||||
List<SalaryItemConfig> configs = getSalaryItemService(user).getConfig(param);
|
||||
|
||||
List<List<Object>> rows = new ArrayList<>();
|
||||
rows.add(Arrays.asList(titles));
|
||||
rows.add(titles);
|
||||
configs.forEach(e -> {
|
||||
List<Object> row = new ArrayList<>();
|
||||
|
||||
row.add(e.getName());
|
||||
row.add(SalaryOnOffEnum.parseByValue(e.getUseDefault()).getDefaultLabel());
|
||||
row.add(e.getHideDefault());
|
||||
row.add(SalaryOnOffEnum.parseByValue(e.getHideDefault()).getDefaultLabel());
|
||||
row.add(SalaryRoundingModeEnum.parseByValue(e.getRoundingMode()).getDefaultLabel());
|
||||
row.add(e.getPattern());
|
||||
row.add(SalaryValueTypeEnum.parseByValue(e.getValueType()).getDefaultLabel());
|
||||
row.add(e.getDataType());
|
||||
row.add("e.getFormula()");
|
||||
row.add(SalaryDataTypeEnum.parseByValue(e.getDataType()).getDefaultLabel());
|
||||
row.add(e.getFormula() == null ? "" : e.getFormula().getFormula());
|
||||
row.add(e.getFormula() == null ? "" : JsonUtil.parseMap(Util.null2String(e.getFormula().getExtendParam()), String.class).getOrDefault("sqlReturnKey", ""));
|
||||
row.add(e.getDescription());
|
||||
row.add(e.getSortedIndex());
|
||||
row.add(e.getWidth());
|
||||
|
|
@ -339,10 +342,7 @@ public class SalaryItemWrapper extends Service {
|
|||
return ExcelUtil.genWorkbookV2(rows, "薪资项目");
|
||||
}
|
||||
|
||||
public void importSalaryItem(SalaryItemImportParam param) {
|
||||
InputStream fileInputStream = null;
|
||||
fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId()));
|
||||
List<AddUpDeductionDTO> addUpDeductions = ExcelParseHelper.parse2Map(fileInputStream, AddUpDeductionDTO.class, 0, 1, 14, "addUpDeductionTemplate.xlsx");
|
||||
|
||||
public ImportExcelResponse importSalaryItem(SalaryItemImportParam param) {
|
||||
return getSalaryItemService(user).importSalaryItem(param);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue