自定义按钮

This commit is contained in:
钱涛 2022-04-18 17:28:34 +08:00
parent cc8f5d54f1
commit 91da4ab831
8 changed files with 145 additions and 132 deletions

View File

@ -1,5 +1,6 @@
package com.engine.salary.entity.salaryacct.bo;
import com.cloudstore.eccom.pc.table.WeaTableOperate;
import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctEmployeeCountDTO;
@ -21,12 +22,13 @@ import java.util.*;
import java.util.stream.Collectors;
/**
* @description: 薪资核算
* @author: xiajun
* @modified By: xiajun
* @date: Created in 12/1/21 2:10 PM
* @version:v1.0
*/
* 薪资核算
* <p>Copyright: Copyright (c) 2022</p>
* <p>Company: 泛微软件</p>
*
* @author qiantao
* @version 1.0
**/
public class SalaryAcctRecordBO {
/**
@ -52,6 +54,17 @@ public class SalaryAcctRecordBO {
.map(salaryAcctRecordPO -> {
SalarySobPO salarySobPO = salarySobMap.get(salaryAcctRecordPO.getSalarySobId());
SalaryAcctRecordStatusEnum salaryAcctRecordStatusEnum = SalaryAcctRecordStatusEnum.parseByValue(salaryAcctRecordPO.getStatus());
// 只有未归档时可以"核算""删除""归档"
// 归档后申报后可以"查看""重新核算"
List<WeaTableOperate> btnList = new ArrayList<>();
if (SalaryAcctRecordStatusEnum.NOT_ARCHIVED == salaryAcctRecordStatusEnum) {
btnList.add(new WeaTableOperate("核算", null, "0"));
btnList.add(new WeaTableOperate("删除", null, "0"));
btnList.add(new WeaTableOperate("归档", null, "0"));
} else {
btnList.add(new WeaTableOperate("查看", null, "0"));
btnList.add(new WeaTableOperate("重新核算", null, "0"));
}
return SalaryAcctRecordListDTO.builder()
.id(salaryAcctRecordPO.getId())
.salarySobName(Optional.ofNullable(salarySobPO).map(SalarySobPO::getName).orElse(StringUtils.EMPTY))
@ -66,6 +79,7 @@ public class SalaryAcctRecordBO {
.accountantName(usernameMap.getOrDefault(salaryAcctRecordPO.getCreator(), StringUtils.EMPTY))
.updateTime(SalaryDateUtil.getFormatLocalDateTime(salaryAcctRecordPO.getUpdateTime()))
.description(salaryAcctRecordPO.getDescription())
.operate(btnList)
.build();
}).collect(Collectors.toList());
}
@ -81,7 +95,7 @@ public class SalaryAcctRecordBO {
*/
public static SalaryAcctRecordPO convert2PO(SalaryAcctRecordSaveParam saveParam,
SalarySobCycleDTO salarySobCycle,
int acctTimes,Long employeeId) {
int acctTimes, Long employeeId) {
Date now = new Date();
return new SalaryAcctRecordPO()
// .setId(IdGenerator.generate())

View File

@ -21,10 +21,10 @@ import java.util.Collection;
@AllArgsConstructor
public class SalaryAcctImportFieldDTO {
//公式项")
//公式项
private Collection<ImportFieldDTO> formulaItems;
//输入项")
//输入项
private Collection<ImportFieldDTO> inputItems;
@Data
@ -33,10 +33,10 @@ public class SalaryAcctImportFieldDTO {
@AllArgsConstructor
public static class ImportFieldDTO {
//薪资项目id")
//薪资项目id
private Long salaryItemId;
//薪资项目名称")
//薪资项目名称
private String salaryItemName;
}
}

View File

@ -1,11 +1,14 @@
package com.engine.salary.entity.salaryacct.dto;
import com.cloudstore.eccom.pc.table.WeaTableOperate;
import com.engine.salary.annotation.TableTitle;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 薪资核算列表
* <p>Copyright: Copyright (c) 2022</p>
@ -63,4 +66,6 @@ public class SalaryAcctRecordListDTO {
@TableTitle(title = "备注", dataIndex = "description", key = "description")
private String description;
@TableTitle(title = "操作", dataIndex = "description", key = "description")
private List<WeaTableOperate> operate;
}

View File

@ -68,13 +68,13 @@ public interface SalaryAcctExcelService {
*/
XSSFWorkbook exportComparisonResult(SalaryComparisonResultQueryParam queryParam);
// /**
// * 薪资核算线下对比结果导入模板导出
// *
// * @param exportParam
// * @return
// */
// XSSFWorkbook exportComparisonResultTemplate(SalaryComparisonResultExportParam exportParam);
/**
* 薪资核算线下对比结果导入模板导出
*
* @param exportParam
* @return
*/
XSSFWorkbook exportComparisonResultTemplate(SalaryComparisonResultExportParam exportParam);
//
// /**
// * 薪资核算结果校验异常导出

View File

@ -10,14 +10,13 @@ import com.engine.salary.entity.salaryacct.bo.SalaryAcctResultBO;
import com.engine.salary.entity.salaryacct.dto.SalaryAccEmployeeListDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctImportFieldDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryComparisonResultListDTO;
import com.engine.salary.entity.salaryacct.param.SalaryAcctEmployeeQueryParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctImportTemplateParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam;
import com.engine.salary.entity.salaryacct.param.SalaryComparisonResultQueryParam;
import com.engine.salary.entity.salaryacct.param.*;
import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO;
import com.engine.salary.entity.salarysob.dto.SalarySobItemDTO;
import com.engine.salary.entity.salarysob.dto.SalarySobItemGroupDTO;
import com.engine.salary.entity.salarysob.po.SalarySobEmpFieldPO;
import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
import com.engine.salary.entity.taxrate.TaxAgent;
@ -27,6 +26,7 @@ import com.engine.salary.service.*;
import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.excel.ExcelUtil;
import com.engine.salary.util.valid.ValidUtil;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
@ -375,37 +375,40 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
return ExcelUtil.genWorkbookV2(rows, sheetName);
}
//
//
// @Override
// public XSSFWorkbook exportComparisonResultTemplate(SalaryComparisonResultExportParam exportParam) {
// // 查询薪资核算记录
// SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(exportParam.getSalaryAcctRecordId());
// if (Objects.isNull(salaryAcctRecordPO)) {
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除"));
// }
// // 模板表头(默认必带"个税扣缴义务人""姓名")
// List<Object> headerList = Lists.newArrayList(SalaryI18nUtil.getI18nLabel(85429, "姓名"), SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"));
// // 查询薪资账套下的薪资项目
// SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateBySalarySobId(salaryAcctRecordPO.getSalarySobId());
// // 薪资项目分类下的新资项目
// for (SalarySobItemGroupDTO itemGroup : salarySobItemAggregateDTO.getItemGroups()) {
// for (SalarySobItemDTO item : itemGroup.getItems()) {
// headerList.add(item.getName());
// }
// }
// // 没有分类的薪资项目
// for (SalarySobItemDTO item : salarySobItemAggregateDTO.getItems()) {
// headerList.add(item.getName());
// }
// List<List<Object>> rows = new ArrayList<>();
// rows.add(headerList);
// String sheetName = "线下对比结果导入模板";
//
// return ExcelUtil.genWorkbookV2(rows, sheetName);
// }
//
//
@Override
public XSSFWorkbook exportComparisonResultTemplate(SalaryComparisonResultExportParam exportParam) {
ValidUtil.doValidator(exportParam);
// 查询薪资核算记录
SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(exportParam.getSalaryAcctRecordId());
if (Objects.isNull(salaryAcctRecordPO)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除"));
}
// 模板表头(默认必带"个税扣缴义务人""姓名")
List<Object> headerList = Lists.newArrayList(SalaryI18nUtil.getI18nLabel(85429, "姓名"), SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"));
// 查询薪资账套下的薪资项目
SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateBySalarySobId(salaryAcctRecordPO.getSalarySobId());
// 薪资项目分类下的新资项目
for (SalarySobItemGroupDTO itemGroup : salarySobItemAggregateDTO.getItemGroups()) {
for (SalarySobItemDTO item : itemGroup.getItems()) {
headerList.add(item.getName());
}
}
// 没有分类的薪资项目
for (SalarySobItemDTO item : salarySobItemAggregateDTO.getItems()) {
headerList.add(item.getName());
}
List<List<Object>> rows = new ArrayList<>();
rows.add(headerList);
String sheetName = "线下对比结果导入模板";
return ExcelUtil.genWorkbookV2(rows, sheetName);
}
//
// @BatchImportHandler("importSalaryAcctResult")
// @Transactional(rollbackFor = Exception.class)

View File

@ -1,10 +1,7 @@
package com.engine.salary.web;
import com.engine.common.util.ServiceUtil;
import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAccEmployeeListDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctRecordFormDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultDetailDTO;
import com.engine.salary.entity.salaryacct.dto.*;
import com.engine.salary.entity.salaryacct.param.*;
import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO;
import com.engine.salary.enums.salarysob.SalaryEmployeeStatusEnum;
@ -72,8 +69,7 @@ public class SalaryAcctController {
private SalaryAcctExcelService getSalaryAcctExcelService(User user) {
return (SalaryAcctExcelService) ServiceUtil.getService(SalaryAcctExcelServiceImpl.class, user);
}
// private SalaryBatchService salaryBatchService;
//
// /**********************************薪资核算记录相关 start*********************************/
//薪资核算列表
@ -93,7 +89,7 @@ public class SalaryAcctController {
@Produces(MediaType.APPLICATION_JSON)
public String getForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<Long, SalaryAcctRecordFormDTO>().run(getSalaryAcctRecordWrapper(user)::getForm, id);
return new ResponseResult<Long, Map<String,Object>>().run(getSalaryAcctRecordWrapper(user)::getForm, id);
}
//获取薪资核算的薪资周期考勤周期等
@ -324,14 +320,6 @@ public class SalaryAcctController {
}
// @GetMapping("/acctresult/getSearchCondition")
// @ApiOperation(("获取薪资核算结果高级搜索"))
// @WeaPermission
// public WeaResult<WeaSearchCondition> getSalaryAcctResultSearchCondition() {
// WeaSearchCondition searchCondition = salaryAcctResultWrapper.getSearchCondition(TenantContext.getCurrentTenantKey());
// return WeaResult.success(searchCondition);
// }
//薪资核算结果详情
@GET
@Path("/acctresult/detail")
@ -374,7 +362,7 @@ public class SalaryAcctController {
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response exportSalaryAcctResult(@Context HttpServletRequest request, @Context HttpServletResponse response) {
SalaryAcctResultQueryParam param = new SalaryAcctResultQueryParam();
setSalaryAcctResultQueryParam(request,param);
setSalaryAcctResultQueryParam(request, param);
User user = HrmUserVarify.getUser(request, response);
XSSFWorkbook workbook = getSalaryAcctExcelWrapper(user).exportSalaryAcctResult(param);
String time = LocalDate.now().toString();
@ -393,14 +381,14 @@ public class SalaryAcctController {
}
// @GetMapping("/acctresult/importField")
// @ApiOperation("导入核算结果前生成导入模板时可选的薪资项目")
// @WeaPermission
// public WeaResult<SalaryAcctImportFieldDTO> getImportField(@RequestParam(value = "salaryAcctRecordId") Long salaryAcctRecordId) {
// SalaryAcctImportFieldDTO importField = getSalaryAcctExcelService(user).getImportField(salaryAcctRecordId, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey());
// return WeaResult.success(importField);
// }
//
//导入核算结果前生成导入模板时可选的薪资项目
@GET
@Path("/acctresult/importField")
@Produces(MediaType.APPLICATION_JSON)
public String accounting(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "salaryAcctRecordId") Long salaryAcctRecordId) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<Long, SalaryAcctImportFieldDTO>().run(getSalaryAcctExcelService(user)::getImportField, salaryAcctRecordId);
}
//导出导入模板
@GET
@ -408,7 +396,7 @@ public class SalaryAcctController {
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response exportImportTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response) {
SalaryAcctImportTemplateParam param = new SalaryAcctImportTemplateParam();
setSalaryAcctResultQueryParam(request,param);
setSalaryAcctResultQueryParam(request, param);
String importType = request.getParameter("importType");
if (StringUtils.isNotBlank(importType)) {
@ -524,17 +512,6 @@ public class SalaryAcctController {
}
// @GetMapping("/comparisonresult/importParams")
// @ApiOperation("获取导入核算结果的导入参数")
// @WeaPermission
// public WeaResult<ExcelImportParam> getComparisonResultImportParams() {
// return WeaResult.success(salaryBatchService.buildImportParam("importExcelAcctResult",
// "importExcelAcctResult",
// "线下核算结果",
// null,
// null));
// }
//导出线上线下对比结果
@GET
@Path("/comparisonresult/export")
@ -544,11 +521,11 @@ public class SalaryAcctController {
setSalaryAcctResultQueryParam(request, param);
String onlyDiffEmployee = request.getParameter("onlyDiffEmployee");
if(StringUtils.isNotBlank(onlyDiffEmployee)){
if (StringUtils.isNotBlank(onlyDiffEmployee)) {
param.setOnlyDiffEmployee(Boolean.parseBoolean(onlyDiffEmployee));
}
String onlyDiffSalaryItem = request.getParameter("onlyDiffSalaryItem");
if(StringUtils.isNotBlank(onlyDiffSalaryItem)){
if (StringUtils.isNotBlank(onlyDiffSalaryItem)) {
param.setOnlyDiffSalaryItem(Boolean.parseBoolean(onlyDiffSalaryItem));
}
@ -607,25 +584,33 @@ public class SalaryAcctController {
}
// @PostMapping("/comparisonresult/export")
// @ApiOperation("导出线上线下对比结果")
// @WeaPermission
// public WeaResult<Map<String, Object>> exportComparisonResult(@RequestBody @Validated SalaryComparisonResultQueryParam queryParam) {
// SimpleEmployee simpleEmployee = UserContext.getCurrentUser();
// String tenantKey = TenantContext.getCurrentTenantKey();
// String eteamsId = TenantRpcContext.getEteamsId();
// Map<String, Object> map = salaryAcctExcelWrapper.exportComparisonResult(queryParam, simpleEmployee, tenantKey, eteamsId);
// return WeaResult.success(map);
// }
//
// @PostMapping("/comparisonresult/importtemplate/export")
// @ApiOperation("线下对比结果导入模板导出")
// @WeaPermission
// public WeaResult<Map<String, Object>> exportComparisonResultTemplate(@RequestBody @Validated SalaryComparisonResultExportParam exportParam) {
// String tenantKey = TenantContext.getCurrentTenantKey();
// Map<String, Object> map = salaryAcctExcelWrapper.exportComparisonResultTemplate(exportParam, tenantKey);
// return WeaResult.success(map);
// }
//线下对比结果导入模板导出
@GET
@Path("/comparisonresult/importtemplate/export")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response exportComparisonResultTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response) {
SalaryComparisonResultExportParam param = new SalaryComparisonResultExportParam();
String salaryAcctRecordId = request.getParameter("salaryAcctRecordId");
if(StringUtils.isNotBlank(salaryAcctRecordId)){
param.setSalaryAcctRecordId(Long.parseLong(salaryAcctRecordId));
}
User user = HrmUserVarify.getUser(request, response);
XSSFWorkbook workbook = getSalaryAcctExcelWrapper(user).exportComparisonResultTemplate(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();
}
/**********************************线下对比 end*********************************/
}

View File

@ -2,10 +2,7 @@ package com.engine.salary.wrapper;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.entity.salaryacct.param.SalaryAcctEmployeeQueryParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctImportTemplateParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam;
import com.engine.salary.entity.salaryacct.param.SalaryComparisonResultQueryParam;
import com.engine.salary.entity.salaryacct.param.*;
import com.engine.salary.service.SalaryAcctExcelService;
import com.engine.salary.service.impl.SalaryAcctExcelServiceImpl;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
@ -77,13 +74,12 @@ public class SalaryAcctExcelWrapper extends Service {
* 薪资核算线下对比结果导入模板导出
*
* @param exportParam
* @param tenantKey
* @return
*/
// public Map<String, Object> exportComparisonResultTemplate(SalaryComparisonResultExportParam exportParam, String tenantKey) {
// return getSalaryAcctExcelService(user).exportComparisonResultTemplate(exportParam, tenantKey);
// }
//
public XSSFWorkbook exportComparisonResultTemplate(SalaryComparisonResultExportParam exportParam) {
return getSalaryAcctExcelService(user).exportComparisonResultTemplate(exportParam);
}
// /**
// * 薪资核算结果校验异常导出
// *

View File

@ -28,10 +28,7 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.math.NumberUtils;
import weaver.hrm.User;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -47,9 +44,11 @@ public class SalaryAcctRecordWrapper extends Service {
private SalaryAcctRecordService getSalaryAcctRecordService(User user) {
return (SalaryAcctRecordService) ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user);
}
private SalarySobService getSalarySobService(User user) {
return (SalarySobService) ServiceUtil.getService(SalarySobServiceImpl.class, user);
}
private SalaryAcctEmployeeService getSalaryAcctEmployeeService(User user) {
return (SalaryAcctEmployeeService) ServiceUtil.getService(SalaryAcctEmployeeServiceImpl.class, user);
}
@ -101,14 +100,22 @@ public class SalaryAcctRecordWrapper extends Service {
/**
* 薪资核算记录详情
*
* @param id 薪资核算记录id
* @param id 薪资核算记录id
* @return
*/
public SalaryAcctRecordFormDTO getForm(Long id) {
public Map<String,Object> getForm(Long id) {
SalaryAcctRecordFormDTO formDTO = new SalaryAcctRecordFormDTO();
// 查询所有启用的薪资账套
List<SalarySobPO> salarySobPOS = getSalarySobService(user).listByDisable(NumberUtils.INTEGER_ZERO);
// 薪资核算详情表单中"薪资账套"的下拉选择项
List<Map<String, Object>> salarySobs = salarySobPOS.stream()
.map(salarySobPO -> {
Map<String,Object> map = new HashMap<>();
map.put("id",salarySobPO.getId());
map.put("name",salarySobPO.getName());
return map;
})
.collect(Collectors.toList());
if (Objects.nonNull(id)) {
// 查询薪资核算
@ -129,13 +136,16 @@ public class SalaryAcctRecordWrapper extends Service {
.setDescription(salaryAcctRecordPO.getDescription());
}
// 转换成前端所需的数据格式
return formDTO;
Map<String,Object> result = new HashMap<>();
result.put("formDTO",formDTO);
result.put("salarySobs",salarySobs);
return result;
}
/**
* 薪资核算记录所用的薪资账套薪资周期考勤周期
*
* @param id 薪资核算记录的id
* @param id 薪资核算记录的id
* @return
*/
public SalarySobCycleDTO getSalarySobCycleById(Long id) {
@ -145,7 +155,7 @@ public class SalaryAcctRecordWrapper extends Service {
/**
* 保存
*
* @param saveParam 保存参数
* @param saveParam 保存参数
* @return
*/
public Long save(SalaryAcctRecordSaveParam saveParam) {
@ -155,7 +165,7 @@ public class SalaryAcctRecordWrapper extends Service {
/**
* 删除
*
* @param ids 薪资核算记录的id
* @param ids 薪资核算记录的id
*/
public void delete(Collection<Long> ids) {
getSalaryAcctRecordService(user).deleteByIds(ids);
@ -164,7 +174,7 @@ public class SalaryAcctRecordWrapper extends Service {
/**
* 归档
*
* @param id 薪资核算记录的id
* @param id 薪资核算记录的id
*/
public void file(Long id) {
getSalaryAcctRecordService(user).file(id);
@ -173,7 +183,7 @@ public class SalaryAcctRecordWrapper extends Service {
/**
* 重新归档
*
* @param id 薪资核算记录的id
* @param id 薪资核算记录的id
*/
public void reCalculate(Long id) {
getSalaryAcctRecordService(user).reCalculate(id);
@ -182,7 +192,7 @@ public class SalaryAcctRecordWrapper extends Service {
/**
* 判断是否存在合并计税
*
* @param id 主键id
* @param id 主键id
* @return
*/
public Integer hasConsolidatedTax(Long id) {