diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultTemplateSaveParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultTemplateSaveParam.java new file mode 100644 index 000000000..1c64c065a --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultTemplateSaveParam.java @@ -0,0 +1,44 @@ +package com.engine.salary.entity.salaryacct.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @ClassName SalaryAcctResultTemplatePO + * @author Harryxzy + * @date 2024/3/26 15:08 + * @description 薪资核算导出模板 + */ +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Data +public class SalaryAcctResultTemplateSaveParam{ + /** + * 主键id + */ + private Long id; + + /** + * 薪资账套id + */ + @DataCheck(require = true, message= "薪资账套id不能为空") + private Long salarySobId; + + /** + * 薪资项目id + */ + private List salaryItemIds; + + /** + * 模板名称 + */ + @DataCheck(require = true, message= "模板名称不能为空") + private String templateName; + +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctResultTemplatePO.java b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctResultTemplatePO.java new file mode 100644 index 000000000..a8d493a01 --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctResultTemplatePO.java @@ -0,0 +1,54 @@ +package com.engine.salary.entity.salaryacct.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +/** + * @ClassName SalaryAcctResultTemplatePO + * @author Harryxzy + * @date 2024/3/26 15:08 + * @description 薪资核算导出模板 + */ +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Data +public class SalaryAcctResultTemplatePO { + /** + * 主键id + */ + private Long id; + + /** + * 模板名称 + */ + private String templateName; + + /** + * 薪资账套id + */ + private Long salarySobId; + + /** + * 薪资项目id + */ + private String salaryItemIds; + + private Long creator; + + private Date updateTime; + + private Date createTime; + + private Integer deleteType; + + private String tenantKey; + + //主键id集合 + private Collection ids; +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultTemplateMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultTemplateMapper.xml new file mode 100644 index 000000000..0dbac08e3 --- /dev/null +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultTemplateMapper.xml @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + t.create_time + , t.creator + , t.delete_type + , t.id + , t.salary_item_ids + , t.salary_sob_id + , t.template_name + , t.tenant_key + , t.update_time + + + + + + + + + + + + + + + INSERT INTO hrsa_salary_acct_result_template + + + + create_time, + + + creator, + + + delete_type, + + + id, + + + salary_item_ids, + + + salary_sob_id, + + + template_name, + + + tenant_key, + + + update_time, + + + + + #{createTime}, + + + #{creator}, + + + #{deleteType}, + + + #{id}, + + + #{salaryItemIds}, + + + #{salarySobId}, + + + #{templateName}, + + + #{tenantKey}, + + + #{updateTime}, + + + + + + + UPDATE hrsa_salary_acct_result_template + + create_time=#{createTime}, + creator=#{creator}, + delete_type=#{deleteType}, + salary_item_ids=#{salaryItemIds}, + salary_sob_id=#{salarySobId}, + template_name=#{templateName}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_salary_acct_result_template + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + salary_item_ids=#{salaryItemIds}, + + + salary_sob_id=#{salarySobId}, + + + template_name=#{templateName}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_salary_acct_result_template + SET delete_type=1 + WHERE id = #{id} AND delete_type = 0 + + + + \ No newline at end of file diff --git a/src/com/engine/salary/service/SalaryAcctExcelService.java b/src/com/engine/salary/service/SalaryAcctExcelService.java index 25dbc0d18..e846fb480 100644 --- a/src/com/engine/salary/service/SalaryAcctExcelService.java +++ b/src/com/engine/salary/service/SalaryAcctExcelService.java @@ -4,6 +4,7 @@ import com.engine.salary.component.WeaTableColumnGroup; import com.engine.salary.entity.salaryacct.dto.SalaryAcctImportFieldDTO; import com.engine.salary.entity.salaryacct.param.*; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; +import com.engine.salary.entity.salaryacct.po.SalaryAcctResultTemplatePO; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.util.List; @@ -120,6 +121,30 @@ public interface SalaryAcctExcelService { void cacheExportField(List salaryItems); + /** + * 保存导出模板 + * @param saveParam + */ + void saveExportTemplate(SalaryAcctResultTemplateSaveParam saveParam); + + /** + * 删除导出模板 + * @param templateId + */ + void deleteExportTemplate(Long templateId); + + /** + * 获取导出模板详细信息 + * @param templateId + */ + Map getExportTemplateForm(Long templateId); + + /** + * 根据账套id获取导出模板列表 + * @param salarySobId + */ + List exportTemplateList(Long salarySobId); + // // /** // * 薪资核算结果校验异常导出 diff --git a/src/com/engine/salary/service/SalaryAcctResultTemplateService.java b/src/com/engine/salary/service/SalaryAcctResultTemplateService.java new file mode 100644 index 000000000..506b21a6c --- /dev/null +++ b/src/com/engine/salary/service/SalaryAcctResultTemplateService.java @@ -0,0 +1,70 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.salaryacct.po.SalaryAcctResultTemplatePO; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName SalaryAcctResultTemplateService + * @date 2024/03/26 15:28 + * @description + */ +public interface SalaryAcctResultTemplateService { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + SalaryAcctResultTemplatePO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param salaryAcctResultTemplate 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(SalaryAcctResultTemplatePO salaryAcctResultTemplate); + + /** + * 修改,修改所有字段 + * + * @param salaryAcctResultTemplate 修改的记录 + * @return 返回影响行数 + */ + int update(SalaryAcctResultTemplatePO salaryAcctResultTemplate); + + /** + * 修改,忽略null字段 + * + * @param salaryAcctResultTemplate 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(SalaryAcctResultTemplatePO salaryAcctResultTemplate); + + /** + * 删除记录 + * + * @param id 待删除的记录 + * @return 返回影响行数 + */ + int deleteById(Long id); + + /** + * 根据账套id获取 + * @param salarySobId + * @return + */ + List listBySalarySobId(Long salarySobId); +} diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index ec0529b81..15d32a9bc 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -4,11 +4,11 @@ import com.api.formmode.mybatis.util.SqlProxyHandle; import com.cloudstore.dev.api.util.Util_DataCache; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.component.WeaTableColumnGroup; import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.constant.SalaryItemConstant; -import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.report.po.SalaryAcctResultReportPO; import com.engine.salary.entity.salaryacct.bo.SalaryAcctEmployeeBO; @@ -150,6 +150,10 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc return ServiceUtil.getService(SalarySobItemWrapper.class, user); } + private SalaryAcctResultTemplateService getSalaryAcctResultTemplateService(User user) { + return ServiceUtil.getService(SalaryAcctResultTemplateServiceImpl.class, user); + } + @Override public XSSFWorkbook exportSalaryAcctEmployee(SalaryAcctEmployeeQueryParam queryParam) { ValidUtil.doValidator(queryParam); @@ -1432,6 +1436,66 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc } + /** + * 保存导出模板 + * @param saveParam + */ + @Override + public void saveExportTemplate(SalaryAcctResultTemplateSaveParam saveParam) { + ValidUtil.doValidator(saveParam); + List templateBySobId = getSalaryAcctResultTemplateService(user).listBySalarySobId(saveParam.getSalarySobId()); + if (saveParam.getId() != null) { + Optional saveNameOptional = templateBySobId.stream().filter(po -> po.getTemplateName().equals(saveParam.getTemplateName()) && !po.getId().equals(saveParam.getId())).findFirst(); + if (saveNameOptional.isPresent()) { + throw new SalaryRunTimeException("该账套中已经存在同名模板,请重新设置后保存"); + } + // 更新 + SalaryAcctResultTemplatePO salaryAcctResultTemplatePO = getSalaryAcctResultTemplateService(user).getById(saveParam.getId()); + if (salaryAcctResultTemplatePO == null) { + throw new SalaryRunTimeException("模板不存在,或已被删除"); + } + salaryAcctResultTemplatePO.setSalaryItemIds(StringUtils.join(saveParam.getSalaryItemIds(), ",")); + salaryAcctResultTemplatePO.setTemplateName(saveParam.getTemplateName()); + getSalaryAcctResultTemplateService(user).update(salaryAcctResultTemplatePO); + } else { + Optional saveNameOptional = templateBySobId.stream().filter(po -> po.getTemplateName().equals(saveParam.getTemplateName())).findFirst(); + if (saveNameOptional.isPresent()) { + throw new SalaryRunTimeException("该账套中已经存在同名模板,请重新设置后保存"); + } + // 新建 + getSalaryAcctResultTemplateService(user).insertIgnoreNull(SalaryAcctResultTemplatePO.builder() + .id(IdGenerator.generate()) + .salarySobId(saveParam.getSalarySobId()) + .salaryItemIds(StringUtils.join(saveParam.getSalaryItemIds(), ",")) + .templateName(saveParam.getTemplateName()) + .creator(Long.valueOf(user.getUID())) + .createTime(new Date()) + .deleteType(0) + .build()); + } + + } + + @Override + public void deleteExportTemplate(Long templateId) { + getSalaryAcctResultTemplateService(user).deleteById(templateId); + } + + @Override + public Map getExportTemplateForm(Long templateId) { + SalaryAcctResultTemplatePO salaryAcctResultTemplatePO = getSalaryAcctResultTemplateService(user).getById(templateId); + if (salaryAcctResultTemplatePO == null) { + throw new SalaryRunTimeException("模板不存在或已被删除"); + } + Map resultMap = new HashMap<>(); + resultMap.put("checkItems", StringUtils.split(salaryAcctResultTemplatePO.getSalaryItemIds(), ",")); + return resultMap; + } + + @Override + public List exportTemplateList(Long salarySobId) { + return getSalaryAcctResultTemplateService(user).listBySalarySobId(salarySobId); + } // @Override // public Map exportCheckResult( // SalaryCheckResultExportParam exportParam, diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultTemplateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultTemplateServiceImpl.java new file mode 100644 index 000000000..1a3db286e --- /dev/null +++ b/src/com/engine/salary/service/impl/SalaryAcctResultTemplateServiceImpl.java @@ -0,0 +1,63 @@ +package com.engine.salary.service.impl; + +import com.engine.core.impl.Service; +import com.engine.salary.entity.salaryacct.po.SalaryAcctResultTemplatePO; +import com.engine.salary.mapper.salaryacct.SalaryAcctResultTemplateMapper; +import com.engine.salary.service.SalaryAcctResultTemplateService; +import com.engine.salary.util.db.MapperProxyFactory; + +import java.util.Collections; +import java.util.List; + +/** + * @author Harryxzy + * @ClassName SalaryAcctResultTemplateServiceImpl + * @date 2024/03/26 15:30 + * @description + */ +public class SalaryAcctResultTemplateServiceImpl extends Service implements SalaryAcctResultTemplateService { + + private SalaryAcctResultTemplateMapper getSalaryAcctResultTemplateMapper() { + return MapperProxyFactory.getProxy(SalaryAcctResultTemplateMapper.class); + } + @Override + public List listAll() { + return getSalaryAcctResultTemplateMapper().listAll(); + } + + @Override + public SalaryAcctResultTemplatePO getById(Long id) { + return getSalaryAcctResultTemplateMapper().getById(id); + } + + @Override + public int insertIgnoreNull(SalaryAcctResultTemplatePO salaryAcctResultTemplate) { + return getSalaryAcctResultTemplateMapper().insertIgnoreNull(salaryAcctResultTemplate); + } + + @Override + public int update(SalaryAcctResultTemplatePO salaryAcctResultTemplate) { + return getSalaryAcctResultTemplateMapper().update(salaryAcctResultTemplate); + } + + @Override + public int updateIgnoreNull(SalaryAcctResultTemplatePO salaryAcctResultTemplate) { + return getSalaryAcctResultTemplateMapper().updateIgnoreNull(salaryAcctResultTemplate); + } + + @Override + public int deleteById(Long id) { + if (id == null) { + return 0; + } + return getSalaryAcctResultTemplateMapper().deleteById(id); + } + + @Override + public List listBySalarySobId(Long salarySobId) { + if (salarySobId == null) { + return Collections.emptyList(); + } + return getSalaryAcctResultTemplateMapper().listSome(SalaryAcctResultTemplatePO.builder().salarySobId(salarySobId).build()); + } +} diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index 4a8088761..1f3054c3f 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -3,6 +3,7 @@ package com.engine.salary.web; import com.engine.common.util.ServiceUtil; import com.engine.salary.entity.salaryacct.dto.*; import com.engine.salary.entity.salaryacct.param.*; +import com.engine.salary.entity.salaryacct.po.SalaryAcctResultTemplatePO; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; import com.engine.salary.enums.salarysob.SalaryEmployeeStatusEnum; import com.engine.salary.service.SalaryAcctExcelService; @@ -565,6 +566,43 @@ public class SalaryAcctController { return new ResponseResult, String>(user).run(getSalaryAcctExcelService(user)::cacheExportField, param.getSalaryItems()); } + // 保存导出模板 + @POST + @Path("/acctresult/saveExportTemplate") + @Produces(MediaType.APPLICATION_JSON) + public String saveExportTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultTemplateSaveParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryAcctExcelService(user)::saveExportTemplate, param); + } + + // 删除导出模板 + @POST + @Path("/acctresult/deleteExportTemplate") + @Produces(MediaType.APPLICATION_JSON) + public String deleteExportTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultTemplateSaveParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryAcctExcelService(user)::deleteExportTemplate, param.getId()); + } + + // 获取导出模板详细信息 + @POST + @Path("/acctresult/getExportTemplateForm") + @Produces(MediaType.APPLICATION_JSON) + public String getExportTemplateForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultTemplateSaveParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalaryAcctExcelService(user)::getExportTemplateForm, param.getId()); + } + + // 获取导出模列表 + @POST + @Path("/acctresult/exportTemplateList") + @Produces(MediaType.APPLICATION_JSON) + public String exportTemplateList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultTemplateSaveParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalaryAcctExcelService(user)::exportTemplateList, param.getSalarySobId()); + } + + //导出导入模板 @GET @Path("/acctresult/importtemplate/export")