diff --git a/src/com/engine/salary/entity/salaryitem/config/FormulaConfig.java b/src/com/engine/salary/entity/salaryitem/config/FormulaConfig.java index ba3f45f5e..9930fa059 100644 --- a/src/com/engine/salary/entity/salaryitem/config/FormulaConfig.java +++ b/src/com/engine/salary/entity/salaryitem/config/FormulaConfig.java @@ -13,6 +13,10 @@ import java.util.List; @NoArgsConstructor @AllArgsConstructor public class FormulaConfig { + /** + * 主键id + */ + private Long id; /** * 名称 diff --git a/src/com/engine/salary/entity/salaryitem/config/FormulaVarConfig.java b/src/com/engine/salary/entity/salaryitem/config/FormulaVarConfig.java index 0144a4055..32707b286 100644 --- a/src/com/engine/salary/entity/salaryitem/config/FormulaVarConfig.java +++ b/src/com/engine/salary/entity/salaryitem/config/FormulaVarConfig.java @@ -12,6 +12,11 @@ import lombok.experimental.Accessors; @AllArgsConstructor public class FormulaVarConfig { + /** + * 主键id + */ + private Long id; + /** * 名称 */ diff --git a/src/com/engine/salary/entity/salaryitem/dto/SalaryItemConfig.java b/src/com/engine/salary/entity/salaryitem/dto/SalaryItemConfig.java deleted file mode 100644 index 2219ac013..000000000 --- a/src/com/engine/salary/entity/salaryitem/dto/SalaryItemConfig.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.engine.salary.entity.salaryitem.dto; - -import com.engine.salary.enums.SalaryRoundingModeEnum; -import com.engine.salary.enums.SalarySystemTypeEnum; -import com.engine.salary.enums.SalaryValueTypeEnum; -import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.Accessors; - -import java.util.List; - - -@Data -@Accessors(chain = true) -@NoArgsConstructor -@AllArgsConstructor -public class SalaryItemConfig { - /** - * 主键id - */ - private Long id; - - /** - * 名称 - */ - private String name; - - /** - * 编号 - */ - private String code; - - /** - * 是否是系统项目 - * - * @see SalarySystemTypeEnum - */ - private Integer systemType; - - /** - * 系统薪资项目的id(是从哪个系统薪资项目复制过来的) - */ - private Long sysSalaryItemId; - - /** - * 默认使用。0:默认不适用、1:默认使用 - */ - private Integer useDefault; - - /** - * 薪资档案引用。0:薪资档案未引用、1:薪资档案引用 - */ - private Integer useInEmployeeSalary; - - /** - * 核算时隐藏 - */ - private Integer hideDefault; - - /** - * 进位规则 - * - * @see SalaryRoundingModeEnum - */ - private Integer roundingMode; - - /** - * 保留的小数位数 - */ - private Integer pattern; - - /** - * 取值方式 - * - * @see SalaryValueTypeEnum - */ - private Integer valueType; - - /** - * 字段类型 - * - * @see SalaryDataTypeEnum - */ - private String dataType; - - /** - * 公式 - */ - private Long formulaId; - - /** - * 备注 - */ - private String description; - - /** - * 是否可以编辑。0:不可编辑、1:可编辑 - */ - private Integer canEdit; - - /** - * 可见性 - */ - private Integer sharedType; - - /** - * 可见范围 - */ - private String taxAgentIds; - - /** - * 0不可删除,1可删除 - */ - private Integer canDelete; - - /** - * 排序 - */ - private Integer sortedIndex; - - /** - * 宽度 - */ - private Integer width; - - /** - * 默认值 - */ - private String defaultValue; - - - private Formula formula; - - @Data - static - class Formula { - - /** - * 名称 - */ - private String name; - /** - * 备注 - */ - private String description; - /** - * 模块 - */ - private String module; - /** - * 用途 - */ - private String useFor; - /** - * 引用类型 - */ - private String referenceType; - /** - * 返回类型 - */ - private String returnType; - /** - * 校验类型 - */ - private String validateType; - /** - * 扩展参数 - */ - private String extendParam; - /** - * 公式内容 - */ - private String formula; - - /** - * 公式实际运行脚本 - */ - private String formulaRunScript; - - private List vars; - - @Data - static - class formulaVar { - - /** - * 名称 - */ - private String name; - /** - * 公式id - */ - private Long formulaId; - /** - * 字段id - */ - private String fieldId; - /** - * 字段名称 - */ - private String fieldName; - /** - * 字段类型,number,string - */ - private String fieldType; - /** - * 来源 - */ - private String source; - /** - * 排序 - */ - private Integer orderIndex; - } - - - } - -} diff --git a/src/com/engine/salary/entity/salaryitem/param/SalaryItemImportParam.java b/src/com/engine/salary/entity/salaryitem/param/SalaryItemImportParam.java new file mode 100644 index 000000000..15e2476af --- /dev/null +++ b/src/com/engine/salary/entity/salaryitem/param/SalaryItemImportParam.java @@ -0,0 +1,26 @@ +package com.engine.salary.entity.salaryitem.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 导入参数 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryItemImportParam { + + /** + * 上传文件id + */ + String imageId; +} diff --git a/src/com/engine/salary/enums/SalaryOnOffEnum.java b/src/com/engine/salary/enums/SalaryOnOffEnum.java index 7afb5aab0..d2662bb30 100644 --- a/src/com/engine/salary/enums/SalaryOnOffEnum.java +++ b/src/com/engine/salary/enums/SalaryOnOffEnum.java @@ -3,12 +3,13 @@ package com.engine.salary.enums; /** - * @description: 是、否 - * @author: xiajun - * @modified By: xiajun - * @date: Created in 10/28/21 5:50 PM - * @version:v1.0 - */ + * 开关枚举 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ public enum SalaryOnOffEnum implements BaseEnum { ON(1, "是", 84967), @@ -40,4 +41,13 @@ public enum SalaryOnOffEnum implements BaseEnum { public Integer getLabelId() { return labelId; } + + public static SalaryOnOffEnum parseByValue(int value) { + for (SalaryOnOffEnum item : values()) { + if (item.getValue().equals(value)) { + return item; + } + } + return OFF; + } } diff --git a/src/com/engine/salary/enums/SalaryRoundingModeEnum.java b/src/com/engine/salary/enums/SalaryRoundingModeEnum.java index 288aa7b07..702b921e4 100644 --- a/src/com/engine/salary/enums/SalaryRoundingModeEnum.java +++ b/src/com/engine/salary/enums/SalaryRoundingModeEnum.java @@ -67,6 +67,6 @@ public enum SalaryRoundingModeEnum implements BaseEnum { return modeEnum; } } - return null; + return ROUNDING; } } diff --git a/src/com/engine/salary/enums/SalaryValueTypeEnum.java b/src/com/engine/salary/enums/SalaryValueTypeEnum.java index 7d82d47d1..77bf5e71f 100644 --- a/src/com/engine/salary/enums/SalaryValueTypeEnum.java +++ b/src/com/engine/salary/enums/SalaryValueTypeEnum.java @@ -51,7 +51,7 @@ public enum SalaryValueTypeEnum implements BaseEnum { return salaryValueTypeEnum; } } - return null; + return INPUT; } @@ -65,6 +65,6 @@ public enum SalaryValueTypeEnum implements BaseEnum { return enumAry[i].getDefaultLabel(); } } - return ""; + return INPUT.getDefaultLabel(); } } diff --git a/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.java b/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.java index fd85bbf52..ddb8054f3 100644 --- a/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.java +++ b/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.java @@ -1,6 +1,6 @@ package com.engine.salary.mapper.salaryitem; -import com.engine.salary.entity.salaryitem.dto.SalaryItemConfig; +import com.engine.salary.entity.salaryitem.config.SalaryItemConfig; import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import org.apache.ibatis.annotations.Param; diff --git a/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml b/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml index 6a8733468..966955eb4 100644 --- a/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml +++ b/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml @@ -604,6 +604,7 @@ + @@ -615,6 +616,7 @@ + @@ -628,7 +630,8 @@ - item.name as item_name + 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 @@ -652,6 +655,7 @@ + , formula.id as formula_id , formula.name as formula_name , formula.description as formula_description , formula.module as formula_module @@ -665,6 +669,7 @@ + , var.id as var_id , var.name as var_name , var.formula_id as var_formula_id , var.field_id as var_field_id @@ -684,6 +689,15 @@ 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 + and system_type = 0 + + + AND id IN + + #{id} + + diff --git a/src/com/engine/salary/service/SalaryItemService.java b/src/com/engine/salary/service/SalaryItemService.java index c5b2a35ae..cf15b101d 100644 --- a/src/com/engine/salary/service/SalaryItemService.java +++ b/src/com/engine/salary/service/SalaryItemService.java @@ -1,6 +1,6 @@ package com.engine.salary.service; -import com.engine.salary.entity.salaryitem.dto.SalaryItemConfig; +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; diff --git a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java index ce1a641dc..7ca53abcc 100644 --- a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java @@ -11,7 +11,7 @@ import com.engine.salary.config.SalaryElogConfig; 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.dto.SalaryItemConfig; +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; diff --git a/src/com/engine/salary/web/SalaryItemController.java b/src/com/engine/salary/web/SalaryItemController.java index aea4c47f5..755c52360 100644 --- a/src/com/engine/salary/web/SalaryItemController.java +++ b/src/com/engine/salary/web/SalaryItemController.java @@ -2,7 +2,7 @@ package com.engine.salary.web; import com.engine.common.util.ServiceUtil; import com.engine.salary.component.WeaFormOption; -import com.engine.salary.entity.salaryitem.dto.SalaryItemConfig; +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; @@ -15,6 +15,7 @@ import com.engine.salary.wrapper.SalaryItemWrapper; import com.engine.salary.wrapper.SysSalaryItemWrapper; import io.swagger.v3.oas.annotations.parameters.RequestBody; import org.apache.commons.collections4.CollectionUtils; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; @@ -23,6 +24,11 @@ import javax.servlet.http.HttpServletResponse; import javax.ws.rs.*; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.StreamingOutput; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.time.LocalDate; import java.util.Collection; import java.util.List; import java.util.Map; @@ -184,10 +190,35 @@ public class SalaryItemController { @POST @Path("/export") + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Response export(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryItemExportParam param) { + try { + User user = HrmUserVarify.getUser(request, response); + XSSFWorkbook workbook = getSalaryItemWrapper(user).export(param); + String time = LocalDate.now().toString(); + String fileName = "薪资项目" + time; + try { + fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + StreamingOutput output = outputStream -> { + workbook.write(outputStream); + outputStream.flush(); + }; + response.setContentType("application/octet-stream"); + return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); + } catch (Exception e) { + throw e; + } + } + + @POST + @Path("/import") @Produces(MediaType.APPLICATION_JSON) - public String updateSalaryItem(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryItemExportParam param) { + public String importSalaryItem(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryItemImportParam importParam) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult>(user).run(getSalaryItemWrapper(user)::export, param); + return new ResponseResult>(user).run(getSalaryItemWrapper(user)::importSalaryItem, importParam); } /**********************************自定义薪资项目 end*********************************/ diff --git a/src/com/engine/salary/wrapper/SalaryItemWrapper.java b/src/com/engine/salary/wrapper/SalaryItemWrapper.java index 5660c58de..6a77fbc89 100644 --- a/src/com/engine/salary/wrapper/SalaryItemWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryItemWrapper.java @@ -2,19 +2,17 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; 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.hrmelog.entity.dto.LoggerContext; +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.dto.SalaryItemConfig; +import com.engine.salary.entity.salaryitem.config.SalaryItemConfig; import com.engine.salary.entity.salaryitem.dto.SalaryItemFormDTO; import com.engine.salary.entity.salaryitem.dto.SalaryItemListDTO; -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.entity.salaryitem.po.SysSalaryItemPO; import com.engine.salary.entity.salarysob.po.SalarySobItemPO; @@ -28,14 +26,19 @@ import com.engine.salary.sys.service.SalarySysConfService; import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; 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.page.PageInfo; import com.engine.salary.util.valid.RuntimeTypeEnum; import com.engine.salary.util.valid.ValidUtil; 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.*; /** @@ -292,6 +295,7 @@ public class SalaryItemWrapper extends Service { /** * 获取薪资项目在哪些账套中使用 + * * @param salaryItemId */ public List> getSalarySobBySalaryItem(Long salaryItemId) { @@ -300,17 +304,45 @@ public class SalaryItemWrapper extends Service { /** * 将薪资项目管理中的信息同步至账套 + * * @param syncSalaryItemParam */ public void syncSalaryItemToSalarySobItem(SyncSalaryItemParam syncSalaryItemParam) { getSalaryItemService(user).syncSalaryItemToSalarySobItem(syncSalaryItemParam); } - public List export(SalaryItemExportParam param) { + public XSSFWorkbook export(SalaryItemExportParam param) { - return getSalaryItemService(user).getConfig(param); + String[] titles = {"名称", "默认使用", "核算时隐藏", "进位规则", "保留的小数位数", "取值方式", "字段类型", "公式", "备注", "排序", "宽度", "默认值"}; + List configs = getSalaryItemService(user).getConfig(param); + List> rows = new ArrayList<>(); + rows.add(Arrays.asList(titles)); + configs.forEach(e -> { + List row = new ArrayList<>(); + row.add(e.getName()); + row.add(SalaryOnOffEnum.parseByValue(e.getUseDefault()).getDefaultLabel()); + row.add(e.getHideDefault()); + 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(e.getDescription()); + row.add(e.getSortedIndex()); + row.add(e.getWidth()); + row.add(e.getDefaultValue()); + rows.add(row); + }); + + return ExcelUtil.genWorkbookV2(rows, "薪资项目"); + } + + public void importSalaryItem(SalaryItemImportParam param) { + InputStream fileInputStream = null; + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId())); + List addUpDeductions = ExcelParseHelper.parse2Map(fileInputStream, AddUpDeductionDTO.class, 0, 1, 14, "addUpDeductionTemplate.xlsx"); } }