个税申报-在线对比显示列定制

This commit is contained in:
Harryxzy 2024-03-01 13:52:27 +08:00
parent 54823f2fbd
commit bcfcd1de9a
6 changed files with 120 additions and 57 deletions

View File

@ -90,7 +90,7 @@ public class TaxDeclarationValueList {
} }
EmployeeDeclarePO employeeDeclare = employeeDeclareMap.get(taxDeclarationValue.getEmployeeId()); EmployeeDeclarePO employeeDeclare = employeeDeclareMap.get(taxDeclarationValue.getEmployeeId());
if (employeeDeclare != null) { if (employeeDeclare != null) {
dataMap.put("jobNum", employeeDeclare.getJobNum()); dataMap.put(cnKey ? "工号" : "jobNum", employeeDeclare.getJobNum());
dataMap.put(cnKey ? "姓名" : "username", employeeDeclare.getEmployeeName()); dataMap.put(cnKey ? "姓名" : "username", employeeDeclare.getEmployeeName());
dataMap.put(cnKey ? "证件类型" : "cardType", SalaryI18nUtil.getI18nLabel(CardTypeEnum.RESIDENT_IDENTITY_CARDS.getLabelId(), CardTypeEnum.RESIDENT_IDENTITY_CARDS.getDefaultLabel())); dataMap.put(cnKey ? "证件类型" : "cardType", SalaryI18nUtil.getI18nLabel(CardTypeEnum.RESIDENT_IDENTITY_CARDS.getLabelId(), CardTypeEnum.RESIDENT_IDENTITY_CARDS.getDefaultLabel()));
dataMap.put(cnKey ? "证件号码" : "cardNum", employeeDeclare.getCardNum()); dataMap.put(cnKey ? "证件号码" : "cardNum", employeeDeclare.getCardNum());
@ -103,7 +103,7 @@ public class TaxDeclarationValueList {
dataMap.put(cnKey ? "证件号码" : "cardNum", simpleUserInfo == null ? "" : simpleUserInfo.getIdNo()); dataMap.put(cnKey ? "证件号码" : "cardNum", simpleUserInfo == null ? "" : simpleUserInfo.getIdNo());
} else { } else {
ExtEmpPO extEmployee = extEmployeeMap.get(taxDeclarationValue.getEmployeeId()); ExtEmpPO extEmployee = extEmployeeMap.get(taxDeclarationValue.getEmployeeId());
dataMap.put(cnKey ? "工号" : "jobNum", ""); dataMap.put(cnKey ? "工号" : "jobNum", extEmployee.getWorkcode());
dataMap.put(cnKey ? "姓名" : "username", extEmployee.getUsername()); dataMap.put(cnKey ? "姓名" : "username", extEmployee.getUsername());
dataMap.put(cnKey ? "证件类型" : "cardType", SalaryI18nUtil.getI18nLabel(CardTypeEnum.RESIDENT_IDENTITY_CARDS.getLabelId(), CardTypeEnum.RESIDENT_IDENTITY_CARDS.getDefaultLabel())); dataMap.put(cnKey ? "证件类型" : "cardType", SalaryI18nUtil.getI18nLabel(CardTypeEnum.RESIDENT_IDENTITY_CARDS.getLabelId(), CardTypeEnum.RESIDENT_IDENTITY_CARDS.getDefaultLabel()));
dataMap.put(cnKey ? "证件号码" : "cardNum", extEmployee.getIdNo()); dataMap.put(cnKey ? "证件号码" : "cardNum", extEmployee.getIdNo());

View File

@ -1,6 +1,8 @@
package com.engine.salary.entity.taxdeclaration.dto; package com.engine.salary.entity.taxdeclaration.dto;
import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.cloudstore.eccom.pc.table.WeaTableColumn;
import com.cloudstore.eccom.pc.table.WeaTableType;
import com.engine.salary.annotation.SalaryTable;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
@ -17,6 +19,7 @@ import java.util.Map;
**/ **/
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@SalaryTable(pageId = "34h8e2r7-9ee6-4d11-adn9-7t0ge54d6rj8", tableType = WeaTableType.CHECKBOX)
public class TaxDeclarationValueListDTO { public class TaxDeclarationValueListDTO {
/** /**

View File

@ -1,7 +1,6 @@
package com.engine.salary.service; package com.engine.salary.service;
import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationValueListDTO; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationValueListDTO;
import com.engine.salary.entity.taxdeclaration.dto.TaxReportColumnDTO;
import com.engine.salary.entity.taxdeclaration.param.ContrastQueryParam; import com.engine.salary.entity.taxdeclaration.param.ContrastQueryParam;
import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationValueListQueryParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationValueListQueryParam;
import com.engine.salary.entity.taxdeclaration.param.TaxDeclareRecordDetailSaveParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclareRecordDetailSaveParam;
@ -100,7 +99,7 @@ public interface TaxDeclarationValueService {
* 在线对比表头列表 * 在线对比表头列表
* @param param * @param param
*/ */
Map<String, List<TaxReportColumnDTO>> contrastHeaderList(ContrastQueryParam param); // Map<String, Object> contrastHeaderList(ContrastQueryParam param);
/** /**
* 缓存在线对比表头列表 * 缓存在线对比表头列表

View File

@ -5,16 +5,17 @@ import com.cloudstore.dev.api.util.Util_DataCache;
import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.cloudstore.eccom.pc.table.WeaTableColumn;
import com.engine.common.util.ServiceUtil; import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service; import com.engine.core.impl.Service;
import com.engine.salary.component.SalaryWeaTable;
import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.salary.constant.SalaryItemConstant; import com.engine.salary.constant.SalaryItemConstant;
import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.encrypt.EncryptUtil;
import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO;
import com.engine.salary.entity.extemp.po.ExtEmpPO; import com.engine.salary.entity.extemp.po.ExtEmpPO;
import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveListDTO;
import com.engine.salary.entity.taxdeclaration.bo.TaxDeclarationValueList; import com.engine.salary.entity.taxdeclaration.bo.TaxDeclarationValueList;
import com.engine.salary.entity.taxdeclaration.dto.ContrastListDTO; import com.engine.salary.entity.taxdeclaration.dto.ContrastListDTO;
import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationValueListDTO; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationValueListDTO;
import com.engine.salary.entity.taxdeclaration.dto.TaxReportColumnDTO;
import com.engine.salary.entity.taxdeclaration.param.ContrastQueryParam; import com.engine.salary.entity.taxdeclaration.param.ContrastQueryParam;
import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationValueListQueryParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationValueListQueryParam;
import com.engine.salary.entity.taxdeclaration.param.TaxDeclareRecordDetailSaveParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclareRecordDetailSaveParam;
@ -36,6 +37,7 @@ import com.engine.salary.service.*;
import com.engine.salary.util.JsonUtil; import com.engine.salary.util.JsonUtil;
import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.SalaryEnumUtil; import com.engine.salary.util.SalaryEnumUtil;
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.db.IdGenerator; import com.engine.salary.util.db.IdGenerator;
import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.excel.ExcelUtilPlus; import com.engine.salary.util.excel.ExcelUtilPlus;
@ -43,6 +45,7 @@ import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.page.SalaryPageUtil; import com.engine.salary.util.page.SalaryPageUtil;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.wbi.core.entity.WeaResultMsg;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -391,7 +394,7 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar
for (Map<String, Object> local : localList) { for (Map<String, Object> local : localList) {
AtomicBoolean hasDiff = new AtomicBoolean(false); AtomicBoolean hasDiff = new AtomicBoolean(false);
Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
result.put("工号", local.get("jobNum")); result.put("工号", local.get("工号"));
result.put("姓名", local.get("姓名")); result.put("姓名", local.get("姓名"));
result.put("证件类型", local.get("证件类型")); result.put("证件类型", local.get("证件类型"));
result.put("证件号码", local.get("证件号码")); result.put("证件号码", local.get("证件号码"));
@ -430,50 +433,102 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar
oneResultList.add(result); oneResultList.add(result);
} }
} }
resultList.put("columns", param.isOnlyShowDiffItem() ? onlyShowColumns : columns); List<String> headerList = new ArrayList<>();
headerList.add("工号");
headerList.add("姓名");
headerList.add("证件类型");
headerList.add("证件号码");
headerList.addAll((param.isOnlyShowDiffItem() ? onlyShowColumns : columns).stream().collect(Collectors.toList()));
resultList.put("columns", headerList);
resultList.put("pageInfo", SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), oneResultList)); resultList.put("pageInfo", SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), oneResultList));
// 显示定制列
List<WeaTableColumn> weaColumns = new ArrayList<>();
weaColumns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "工号"), "工号"));
weaColumns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "姓名"), "姓名"));
weaColumns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "证件类型"), "证件类型"));
weaColumns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "证件号码"), "证件号码"));
for (TaxReportColumnPO columnPO : taxReportColumns) {
weaColumns.add(new WeaTableColumn("100px", columnPO.getReportColumnName(), columnPO.getReportColumnName()));
}
SalaryWeaTable<SalaryArchiveListDTO> table = new SalaryWeaTable<SalaryArchiveListDTO>(user, TaxDeclarationValueListDTO.class);
table.setColumns(weaColumns);
WeaResultMsg result = new WeaResultMsg(false);
result.putAll(table.makeDataResult());
result.success();
resultList.put("dataKey", result.getResultMap());
return resultList; return resultList;
} }
@Override // @Override
public Map<String, List<TaxReportColumnDTO>> contrastHeaderList(ContrastQueryParam param) { // public Map<String, Object> contrastHeaderList(ContrastQueryParam param) {
Map<String, List<TaxReportColumnDTO>> resultMap = new HashMap<>(); // TaxDeclarationPO taxDeclaration = getTaxDeclarationService(user).getById(param.getTaxDeclarationId());
TaxDeclarationPO taxDeclaration = getTaxDeclarationService(user).getById(param.getTaxDeclarationId()); // if (taxDeclaration == null) {
if (taxDeclaration == null) { // throw new SalaryRunTimeException("无申报表");
throw new SalaryRunTimeException("无申报表"); // }
} // // 查询个税申报表表头
// 查询个税申报表表头 // IncomeCategoryEnum incomeCategoryEnum = SalaryEnumUtil.enumMatchByValue(taxDeclaration.getIncomeCategory(), IncomeCategoryEnum.class);
IncomeCategoryEnum incomeCategoryEnum = SalaryEnumUtil.enumMatchByValue(taxDeclaration.getIncomeCategory(), IncomeCategoryEnum.class); // List<TaxReportColumnPO> taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum);
List<TaxReportColumnPO> taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum); //
List<TaxReportColumnDTO> defaultDtoList = new ArrayList<>(); // SalaryWeaTable<SalaryArchiveListDTO> table = new SalaryWeaTable<SalaryArchiveListDTO>(user, TaxDeclarationValueListDTO.class);
taxReportColumns.stream().forEach(po -> {defaultDtoList.add(TaxReportColumnDTO.builder().id(po.getId()).reportColumnName(po.getReportColumnName()).reportColumnDataIndex(po.getReportColumnDataIndex()).build());}); //
resultMap.put("defaultList",defaultDtoList); //
// 获取缓存中保存的设置 // List<WeaTableColumn> columns = new ArrayList<>();
String cacheKey = user.getUID() + SalaryItemConstant.TAX_DECLARE_CONTRAST_FIELD_SIGN; // columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "工号"), "工号"));
String cacheValue = (String) Util_DataCache.getObjVal(cacheKey); // columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "姓名"), "姓名"));
List<String> selectedItems = JsonUtil.parseList(cacheValue, String.class) == null ? new ArrayList<>() : JsonUtil.parseList(cacheValue, String.class); // columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "证件类型"), "证件类型"));
if (CollectionUtils.isEmpty(selectedItems)) { // columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "证件号码"), "证件号码"));
// 默认全选 // for (TaxReportColumnPO columnPO : taxReportColumns) {
resultMap.put("selectedList", defaultDtoList); // columns.add(new WeaTableColumn("100px", columnPO.getReportColumnName(), columnPO.getReportColumnName()));
resultMap.put("unSelectedList", Collections.emptyList()); // }
} else { // table.setColumns(columns);
Map<String, TaxReportColumnDTO> columnMap = SalaryEntityUtil.convert2Map(defaultDtoList, TaxReportColumnDTO::getReportColumnDataIndex); // WeaResultMsg result = new WeaResultMsg(false);
List<TaxReportColumnDTO> selectedColumn = new ArrayList<>(); // result.putAll(table.makeDataResult());
selectedItems.stream().forEach(index -> { // result.success();
TaxReportColumnDTO taxReportColumnDTO = columnMap.get(index); //
if (taxReportColumnDTO != null) { //
// 已选择的项目 // Map<String, Object> datas = new HashMap<>();
selectedColumn.add(taxReportColumnDTO); // datas.put("dataKey", result.getResultMap());
} // return datas;
}); // //
// 过滤出未选择的项目 // //
List<TaxReportColumnDTO> unSelectedList = defaultDtoList.stream().filter(po -> !selectedItems.contains(po.getReportColumnDataIndex())).collect(Collectors.toList()); // //
resultMap.put("selectedList", selectedColumn); // //
resultMap.put("unSelectedList", unSelectedList); // //
} // //
// //
return resultMap; // // List<TaxReportColumnDTO> defaultDtoList = new ArrayList<>();
} // // taxReportColumns.stream().forEach(po -> {defaultDtoList.add(TaxReportColumnDTO.builder().id(po.getId()).reportColumnName(po.getReportColumnName()).reportColumnDataIndex(po.getReportColumnDataIndex()).build());});
// // resultMap.put("defaultList",defaultDtoList);
// // // 获取缓存中保存的设置
// // String cacheKey = user.getUID() + SalaryItemConstant.TAX_DECLARE_CONTRAST_FIELD_SIGN;
// // String cacheValue = (String) Util_DataCache.getObjVal(cacheKey);
// // List<String> selectedItems = JsonUtil.parseList(cacheValue, String.class) == null ? new ArrayList<>() : JsonUtil.parseList(cacheValue, String.class);
// // if (CollectionUtils.isEmpty(selectedItems)) {
// // // 默认全选
// // resultMap.put("selectedList", defaultDtoList);
// // resultMap.put("unSelectedList", Collections.emptyList());
// // } else {
// // Map<String, TaxReportColumnDTO> columnMap = SalaryEntityUtil.convert2Map(defaultDtoList, TaxReportColumnDTO::getReportColumnDataIndex);
// // List<TaxReportColumnDTO> selectedColumn = new ArrayList<>();
// // selectedItems.stream().forEach(index -> {
// // TaxReportColumnDTO taxReportColumnDTO = columnMap.get(index);
// // if (taxReportColumnDTO != null) {
// // // 已选择的项目
// // selectedColumn.add(taxReportColumnDTO);
// // }
// // });
// // // 过滤出未选择的项目
// // List<TaxReportColumnDTO> unSelectedList = defaultDtoList.stream().filter(po -> !selectedItems.contains(po.getReportColumnDataIndex())).collect(Collectors.toList());
// // resultMap.put("selectedList", selectedColumn);
// // resultMap.put("unSelectedList", unSelectedList);
// // }
//
// return resultMap;
// }
@Override @Override
public void cacheContrastHeader(List<String> columnIndex) { public void cacheContrastHeader(List<String> columnIndex) {
@ -487,7 +542,7 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar
param.setCurrent(1); param.setCurrent(1);
// 获取线下对比结果 // 获取线下对比结果
Map<String, Object> contrastMap = contrast(param); Map<String, Object> contrastMap = contrast(param);
List<String> header = (List<String>)contrastMap.get("columns"); List<String> header = ((List<String>) contrastMap.get("columns"));
PageInfo<Map<String, Object>> pageInfo = (PageInfo<Map<String, Object>>)contrastMap.get("pageInfo"); PageInfo<Map<String, Object>> pageInfo = (PageInfo<Map<String, Object>>)contrastMap.get("pageInfo");
List<Map<String, Object>> list = pageInfo.getList(); List<Map<String, Object>> list = pageInfo.getList();
@ -497,6 +552,12 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar
empInfoColumns.add(new WeaTableColumn("100px", "证件类型", "cardType")); empInfoColumns.add(new WeaTableColumn("100px", "证件类型", "cardType"));
empInfoColumns.add(new WeaTableColumn("100px", "证件号码", "cardNum")); empInfoColumns.add(new WeaTableColumn("100px", "证件号码", "cardNum"));
List<String> empInfoList = empInfoColumns.stream().map(WeaTableColumn::getText).collect(Collectors.toList());
header = header.stream().filter(h -> !empInfoList.contains(h)).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(param.getColumns())) {
header = header.stream().filter(h -> param.getColumns().contains(h)).collect(Collectors.toList());
}
return ExcelUtilPlus.genWorkbook4TaxDeclareContrast(empInfoColumns, header, list, "在线对比结果"); return ExcelUtilPlus.genWorkbook4TaxDeclareContrast(empInfoColumns, header, list, "在线对比结果");
} }

View File

@ -304,13 +304,13 @@ public class TaxDeclarationController {
* @param param * @param param
* @return * @return
*/ */
@POST // @POST
@Path("/contrastHeaderList") // @Path("/contrastHeaderList")
@Produces(MediaType.APPLICATION_JSON) // @Produces(MediaType.APPLICATION_JSON)
public String contrastHeaderList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody ContrastQueryParam param) { // public String contrastHeaderList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody ContrastQueryParam param) {
User user = HrmUserVarify.getUser(request, response); // User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<ContrastQueryParam, Map<String, List<TaxReportColumnDTO>>>(user).run(getTaxDeclareRecordWrapper(user)::contrastHeaderList, param); // return new ResponseResult<ContrastQueryParam, Map<String, Object>>(user).run(getTaxDeclareRecordWrapper(user)::contrastHeaderList, param);
} // }
/** /**

View File

@ -652,9 +652,9 @@ public class TaxDeclareRecordWrapper extends Service {
* 在线对比表头列表 * 在线对比表头列表
* @param param * @param param
*/ */
public Map<String, List<TaxReportColumnDTO>> contrastHeaderList(ContrastQueryParam param) { // public Map<String, Object> contrastHeaderList(ContrastQueryParam param) {
return getTaxDeclarationValueService(user).contrastHeaderList(param); // return getTaxDeclarationValueService(user).contrastHeaderList(param);
} // }
/** /**
* 在线对比表头列表 * 在线对比表头列表