From 4eb931686eb56182f90b424cc3ff9d24c37d26cd Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 5 Dec 2023 14:57:34 +0800 Subject: [PATCH 01/92] =?UTF-8?q?=E9=B2=81=E6=8E=A7=E6=95=B0=E5=AD=97temp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/bo/SalaryAcctResultReportBO.java | 39 ++++ .../salaryacct/bo/SalaryAcctResultBO.java | 29 +++ .../param/SalaryAcctResultBatchEditParam.java | 40 +++++ .../SalaryAcctResultBatchUpdateParam.java | 37 ++++ .../service/SalaryAcctRecordService.java | 6 + .../service/SalaryAcctResultService.java | 17 +- .../impl/SalaryAcctRecordServiceImpl.java | 99 +++++++++++ .../impl/SalaryAcctResultServiceImpl.java | 168 ++++++++++++++++++ .../salary/web/SalaryAcctController.java | 27 +++ .../wrapper/SalaryAcctRecordWrapper.java | 8 + .../wrapper/SalaryAcctResultWrapper.java | 21 ++- 11 files changed, 483 insertions(+), 8 deletions(-) create mode 100644 src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchEditParam.java create mode 100644 src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchUpdateParam.java diff --git a/src/com/engine/salary/entity/report/bo/SalaryAcctResultReportBO.java b/src/com/engine/salary/entity/report/bo/SalaryAcctResultReportBO.java index 6a23857a5..485389860 100644 --- a/src/com/engine/salary/entity/report/bo/SalaryAcctResultReportBO.java +++ b/src/com/engine/salary/entity/report/bo/SalaryAcctResultReportBO.java @@ -8,6 +8,7 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultTempPO; import dm.jdbc.util.IdGenerator; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.math.NumberUtils; import java.util.*; @@ -62,6 +63,44 @@ public class SalaryAcctResultReportBO { .collect(Collectors.toList()); } + public static List lkszConvert2PO(List items, + SalaryAcctEmployeePO salaryAcctEmployee, + Long employeeId, Map emps) { + if (CollectionUtils.isEmpty(items) || ObjectUtils.isEmpty(salaryAcctEmployee)) { + return Collections.emptyList(); + } + Date now = new Date(); + return items.stream() + .map(e -> { + SalaryAcctResultReportPO po = SalaryAcctResultReportPO.builder() + .id(IdGenerator.generate()) + .salarySobId(salaryAcctEmployee.getSalarySobId()) + .salaryItemId(e.getSalaryItemId()) + .salaryAcctRecordId(salaryAcctEmployee.getSalaryAcctRecordId()) + .salaryAcctEmpId(salaryAcctEmployee.getId().toString()) + .employeeId(salaryAcctEmployee.getEmployeeId().toString()) + .taxAgentId(salaryAcctEmployee.getTaxAgentId()) + .resultValue(e.getResultValue()) + .creator(employeeId) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + + DataCollectionEmployee dataCollectionEmployee = emps.get(salaryAcctEmployee.getEmployeeId()); + if (dataCollectionEmployee != null) { + po.setDepartmentId(dataCollectionEmployee.getDepartmentId()); + po.setSubcompanyId(dataCollectionEmployee.getSubcompanyid()); + po.setCostcenterId(dataCollectionEmployee.getCostcenterId()); + po.setJobtitleId(dataCollectionEmployee.getJobtitleId()); + po.setLocationId(dataCollectionEmployee.getLocationId()); + } + return po; + }) + .collect(Collectors.toList()); + } + public static List convert2ReportPO(Collection temps, Map emps) { // Map longDataCollectionEmployeeMap = SalaryEntityUtil.convert2Map(emps, DataCollectionEmployee::getEmployeeId); diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java index 57b6e1927..29cae5d4a 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java @@ -27,6 +27,7 @@ import com.engine.salary.util.page.Column; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.springframework.beans.BeanUtils; @@ -577,6 +578,34 @@ public class SalaryAcctResultBO { .collect(Collectors.toList()); } + + public static List batchEditConvert2PO(Map salaryAcctResultOldPOMap, + List items, + SalaryAcctEmployeePO salaryAcctEmployee, + Long employeeId) { + if (CollectionUtils.isEmpty(items) || ObjectUtils.isEmpty(salaryAcctEmployee)) { + return Collections.emptyList(); + } + Date now = new Date(); + return items.stream() + .map(e -> SalaryAcctResultPO.builder() + .salarySobId(salaryAcctEmployee.getSalarySobId()) + .salaryItemId(e.getSalaryItemId()) + .salaryAcctRecordId(salaryAcctEmployee.getSalaryAcctRecordId()) + .salaryAcctEmpId(salaryAcctEmployee.getId()) + .employeeId(salaryAcctEmployee.getEmployeeId()) + .taxAgentId(salaryAcctEmployee.getTaxAgentId()) + .resultValue(StringUtils.trim(e.getResultValue())) + .originResultValue(salaryAcctResultOldPOMap.get(salaryAcctEmployee.getId() + "-" + e.getSalaryItemId())) + .creator(employeeId) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build()) + .collect(Collectors.toList()); + } + public static Map buildEmployeeFieldName() { Field[] declaredFields = SalaryFormulaEmployeeDTO.class.getDeclaredFields(); Map employeeFieldNameMap = Maps.newHashMapWithExpectedSize(declaredFields.length); diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchEditParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchEditParam.java new file mode 100644 index 000000000..21922043c --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchEditParam.java @@ -0,0 +1,40 @@ +package com.engine.salary.entity.salaryacct.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @ClassName SalaryAcctResultBatchUpdateParam + * @author Harryxzy + * @date 2023/12/4 13:48 + * @description 鲁控数字批量编辑参数 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class SalaryAcctResultBatchEditParam { + + private Long salaryAcctRecordId; + + private List resultValueList; + + + @Data + @Builder + @AllArgsConstructor + @NoArgsConstructor + public class resultValue { + + // 薪资核算人员id + private Long salaryAcctEmpId; + + // 薪资项目值 + private List items; + } + +} diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchUpdateParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchUpdateParam.java new file mode 100644 index 000000000..8eabde532 --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchUpdateParam.java @@ -0,0 +1,37 @@ +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 SalaryAcctResultBatchUpdateParam + * @author Harryxzy + * @date 2023/12/4 13:48 + * @description 鲁控数字批量更新参数 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class SalaryAcctResultBatchUpdateParam { + + //薪资核算记录的id + @DataCheck(require = true, message = "薪资核算记录ID不得为空") + private Long salaryAcctRecordId; + + //薪资项目的Id + @DataCheck(require = true, message = "薪资项目id不得为空") + private Long salaryItemId; + + // 薪资核算人员id + private List salaryAcctEmpIdList; + + //薪资项目值 + private String value; + +} diff --git a/src/com/engine/salary/service/SalaryAcctRecordService.java b/src/com/engine/salary/service/SalaryAcctRecordService.java index 1ba3419bf..319552b78 100644 --- a/src/com/engine/salary/service/SalaryAcctRecordService.java +++ b/src/com/engine/salary/service/SalaryAcctRecordService.java @@ -207,4 +207,10 @@ public interface SalaryAcctRecordService { List listSome(SalaryAcctRecordPO po); + + /** + * 鲁控数字-结账 + * @param salaryAcctRecordId + */ + void lkszJz(Long salaryAcctRecordId); } diff --git a/src/com/engine/salary/service/SalaryAcctResultService.java b/src/com/engine/salary/service/SalaryAcctResultService.java index 67320ed0d..871188360 100644 --- a/src/com/engine/salary/service/SalaryAcctResultService.java +++ b/src/com/engine/salary/service/SalaryAcctResultService.java @@ -4,10 +4,7 @@ import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultDetailDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultListColumnDTO; -import com.engine.salary.entity.salaryacct.param.SalaryAcctCalculateParam; -import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam; -import com.engine.salary.entity.salaryacct.param.SalaryAcctResultSaveParam; -import com.engine.salary.entity.salaryacct.param.SalaryAcctResultUpdateLockStatusParam; +import com.engine.salary.entity.salaryacct.param.*; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; import com.engine.salary.util.page.PageInfo; @@ -207,4 +204,16 @@ public interface SalaryAcctResultService { * @return */ Boolean checkAuth(Long salaryAcctRecordId); + + /** + * 鲁控数字薪资核算结果批量更新 + * @param param + */ + void lkszBatchUpdate(SalaryAcctResultBatchUpdateParam param); + + /** + * 鲁控数字薪资核算结果批量编辑 + * @param param + */ + void lkszBatchEdit(SalaryAcctResultBatchEditParam param); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java index 8038d08f7..1a189f762 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java @@ -4,6 +4,9 @@ import com.api.formmode.mybatis.util.SqlProxyHandle; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.common.LocalDateRange; +import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.report.po.SalaryAcctResultReportPO; import com.engine.salary.entity.salaryBill.po.SalarySendPO; import com.engine.salary.entity.salaryacct.bo.SalaryAcctRecordBO; import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordQueryParam; @@ -12,6 +15,7 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; +import com.engine.salary.entity.salarysob.po.SalarySobItemPO; import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; import com.engine.salary.enums.salarysob.IncomeCategoryEnum; @@ -31,11 +35,14 @@ import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.engine.salary.util.valid.ValidUtil; +import dm.jdbc.util.IdGenerator; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import weaver.hrm.User; +import java.time.YearMonth; import java.util.*; import java.util.stream.Collectors; @@ -77,6 +84,10 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); } + private SalarySobItemService getSalarySobItemService(User user) { + return ServiceUtil.getService(SalarySobItemServiceImpl.class, user); + } + // private SalaryCheckResultService salaryCheckResultService; // // private SalaryCheckResultDetailService salaryCheckResultDetailService; @@ -102,6 +113,10 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe return ServiceUtil.getService(SalaryStatisticsReportServiceImpl.class, user); } + private SalaryEmployeeService getSalaryEmployeeService(User user) { + return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); + } + @Override public SalaryAcctRecordPO getById(Long id) { @@ -810,4 +825,88 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe public List listSome(SalaryAcctRecordPO po) { return getSalaryAcctRecordMapper().listSome(po); } + + @Override + public void lkszJz(Long salaryAcctRecordId) { + SalaryAcctRecordPO salaryAcctRecordPO = getById(salaryAcctRecordId); + if (ObjectUtils.isEmpty(salaryAcctRecordPO)) { + throw new SalaryRunTimeException("薪资核算记录不存在或已被删除"); + } + YearMonth salaryMonth = SalaryDateUtil.toYearMonth(SalaryDateUtil.dateToLocalDate(salaryAcctRecordPO.getSalaryMonth()).plusMonths(1)); + // 创建下一个月的薪资核算记录 + Long newSalaryAcctRecordId = save(SalaryAcctRecordSaveParam.builder().salarySobId(salaryAcctRecordPO.getSalarySobId()).salaryMonth(salaryMonth).build()); + // 查询下个月的薪资核算人员 + List salaryAcctEmployeePOList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(newSalaryAcctRecordId); + List acctEmpIds = salaryAcctEmployeePOList.stream().map(SalaryAcctEmployeePO::getEmployeeId).collect(Collectors.toList()); + // 获取原来的薪资核算结果 + List salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + List salarySobItemIds = salarySobItemPOS.stream().map(SalarySobItemPO::getSalaryItemId).collect(Collectors.toList()); + List resultPOS = getSalaryAcctResultService(user).listBySalaryAcctRecordIdsAndSalaryItemIds(Collections.singletonList(salaryAcctRecordId), salarySobItemIds); + // 过滤掉新的核算记录中不存在的人 + resultPOS = resultPOS.stream().filter(result -> acctEmpIds.contains(result.getEmployeeId())).collect(Collectors.toList()); + Map> resultMap = SalaryEntityUtil.group2Map(resultPOS, SalaryAcctResultPO::getEmployeeId); + // 查询人员信息,供报表使用 + List dataCollectionEmployees = getSalaryEmployeeService(user).listAllForReport(); + Map emps = SalaryEntityUtil.convert2Map(dataCollectionEmployees, DataCollectionEmployee::getEmployeeId); + + // 需要保存的核算结果 + List needInsertResultList = new ArrayList<>(); + // 报表 + List needInsertResultReportList = new ArrayList<>(); + Date now = new Date(); + Long uid = Long.valueOf(user.getUID()); + salaryAcctEmployeePOList.stream().forEach(acctEmp -> { + List oldResultList = resultMap.get(acctEmp.getEmployeeId()); + oldResultList.stream().forEach(oldResult -> { + // 薪资核算结果 + needInsertResultList.add(SalaryAcctResultPO.builder() + .salarySobId(salaryAcctRecordPO.getSalarySobId()) + .salaryItemId(oldResult.getSalaryItemId()) + .salaryAcctRecordId(newSalaryAcctRecordId) + .salaryAcctEmpId(acctEmp.getId()) + .employeeId(acctEmp.getEmployeeId()) + .taxAgentId(acctEmp.getTaxAgentId()) + .resultValue(StringUtils.trim(oldResult.getResultValue())) + .originResultValue(oldResult.getOriginResultValue()) + .creator(uid) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build()); + + // 报表结果 + SalaryAcctResultReportPO po = SalaryAcctResultReportPO.builder() + .id(IdGenerator.generate()) + .salarySobId(salaryAcctRecordPO.getSalarySobId()) + .salaryItemId(oldResult.getSalaryItemId()) + .salaryAcctRecordId(newSalaryAcctRecordId) + .salaryAcctEmpId(acctEmp.getId().toString()) + .employeeId(acctEmp.getEmployeeId().toString()) + .taxAgentId(acctEmp.getTaxAgentId()) + .resultValue(StringUtils.trim(oldResult.getResultValue())) + .creator(uid) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + + DataCollectionEmployee dataCollectionEmployee = emps.get(acctEmp.getEmployeeId()); + if (dataCollectionEmployee != null) { + po.setDepartmentId(dataCollectionEmployee.getDepartmentId()); + po.setSubcompanyId(dataCollectionEmployee.getSubcompanyid()); + po.setCostcenterId(dataCollectionEmployee.getCostcenterId()); + po.setJobtitleId(dataCollectionEmployee.getJobtitleId()); + po.setLocationId(dataCollectionEmployee.getLocationId()); + } + needInsertResultReportList.add(po); + }); + }); + + // 入库 + getSalaryAcctResultService(user).batchSave(needInsertResultList); + getSalaryAcctReportService(user).batchSave(needInsertResultReportList); + + } } diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 039546c4d..734f2ade4 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -4,6 +4,7 @@ import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.cache.SalaryCacheKey; import com.engine.salary.common.LocalDateRange; +import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.datacollection.dto.AttendQuoteFieldListDTO; @@ -46,6 +47,7 @@ import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; +import com.engine.salary.util.valid.ValidUtil; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; @@ -55,6 +57,7 @@ import com.weaver.util.threadPool.entity.LocalRunnable; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.springframework.jdbc.datasource.DataSourceTransactionManager; @@ -1088,4 +1091,169 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe } return true; } + + @Override + public void lkszBatchUpdate(SalaryAcctResultBatchUpdateParam param) { + ValidUtil.doValidator(param); + + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); + if (ObjectUtils.isEmpty(salaryAcctRecordPO)) { + throw new SalaryRunTimeException("薪资核算记录不存在,或已被删除"); + } + List salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + // 薪资账套中包含的薪资项目 + List salarySobItemIds = salarySobItemPOS.stream().map(SalarySobItemPO::getSalaryItemId).collect(Collectors.toList()); + if (!salarySobItemIds.contains(param.getSalaryItemId())) { + throw new SalaryRunTimeException("该账套不包含该薪资项目或已被删除,请先检查账套"); + } + // 获取需要更新的核算人员信息 + List salaryAcctEmployeePOList = Collections.emptyList(); + if (CollectionUtils.isEmpty(param.getSalaryAcctEmpIdList())) { + // 没有选择核算人员,更新核算记录中所有人员 + salaryAcctEmployeePOList.addAll(getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordPO.getId())); + } else { + salaryAcctEmployeePOList.addAll(getSalaryAcctEmployeeService(user).listByIds(param.getSalaryAcctEmpIdList())); + } + + if (CollectionUtils.isNotEmpty(salaryAcctEmployeePOList)) { + List salaryAcctEmployeeIdList = SalaryEntityUtil.properties(salaryAcctEmployeePOList, SalaryAcctEmployeePO::getId, Collectors.toList()); + // 查询薪资核算结果 + List resultPOS = listByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmployeeIdList, Collections.singleton(param.getSalaryItemId())); + Map salaryAcctResultPOMap = SalaryEntityUtil.convert2Map(resultPOS, SalaryAcctResultPO::getSalaryAcctEmpId); + List needUpdateList = new ArrayList<>(); + List needInsertList = new ArrayList<>(); + Date now = new Date(); + salaryAcctEmployeePOList.forEach(salaryAcctEmployeePO -> { + if (salaryAcctResultPOMap.containsKey(salaryAcctEmployeePO.getId())) { + // 更新 + SalaryAcctResultPO po = salaryAcctResultPOMap.get(salaryAcctEmployeePO.getId()); + po.setResultValue(param.getValue()); + po.setUpdateTime(now); + needUpdateList.add(po); + } else { + // 新增 + needInsertList.add(SalaryAcctResultPO.builder() + .salarySobId(salaryAcctRecordPO.getSalarySobId()) + .salaryItemId(param.getSalaryItemId()) + .salaryAcctRecordId(param.getSalaryAcctRecordId()) + .salaryAcctEmpId(salaryAcctEmployeePO.getId()) + .employeeId(salaryAcctEmployeePO.getEmployeeId()) + .taxAgentId(salaryAcctEmployeePO.getTaxAgentId()) + .resultValue(StringUtils.trim(param.getValue())) + .originResultValue("") + .creator(Long.valueOf(user.getUID())) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build()); + } + }); + // 入库 + if (CollectionUtils.isNotEmpty(needUpdateList)) { + getSalaryAcctResultMapper().batchUpdate(needUpdateList); + } + + if (CollectionUtils.isNotEmpty(needInsertList)) { + getSalaryAcctResultMapper().batchInsert(needInsertList); + } + } + } + + @Override + public void lkszBatchEdit(SalaryAcctResultBatchEditParam param) { + List dataCollectionEmployees = getSalaryEmployeeService(user).listAllForReport(); + Map emps = SalaryEntityUtil.convert2Map(dataCollectionEmployees, DataCollectionEmployee::getEmployeeId); + + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); + if (ObjectUtils.isEmpty(salaryAcctRecordPO)) { + throw new SalaryRunTimeException("薪资核算结果不存在或已被删除"); + } + + List salaryAcctEmployeePOList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(param.getSalaryAcctRecordId()); + Map salaryAcctEmployeePOMap = SalaryEntityUtil.convert2Map(salaryAcctEmployeePOList, SalaryAcctEmployeePO::getId); + + // 需要更新数据的薪资核算人员id + List updateAcctEmpIds = param.getResultValueList().stream().map(SalaryAcctResultBatchEditParam.resultValue::getSalaryAcctEmpId).collect(Collectors.toList()); + // 查询原来的薪资核算结果 + List salaryAcctResultPOSOld = getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctEmpIds(updateAcctEmpIds).build()); + // 解密 + encryptUtil.decryptList(salaryAcctResultPOSOld, SalaryAcctResultPO.class); + // 保存参数转换成薪资核算结果po + List salaryAcctResultPOS = new ArrayList<>(); + // 获取薪资项目回算前的值 + Map salaryAcctResultOldPOMap = salaryAcctResultPOSOld.stream() + .collect(Collectors.groupingBy(p -> p.getSalaryAcctEmpId() + "-" + p.getSalaryItemId(), + Collectors.collectingAndThen(Collectors.maxBy(Comparator.comparing(SalaryAcctResultPO::getId)), + s -> s.map(SalaryAcctResultPO::getOriginResultValue).orElse("")))); + List salaryAcctResultReportPOS = new ArrayList<>(); + param.getResultValueList().forEach(resultValue -> { + SalaryAcctEmployeePO salaryAcctEmployeePO = salaryAcctEmployeePOMap.get(resultValue.getSalaryAcctEmpId()); + salaryAcctResultPOS.addAll(SalaryAcctResultBO.batchEditConvert2PO(salaryAcctResultOldPOMap, resultValue.getItems(), salaryAcctEmployeePO, (long) user.getUID())); + // 报表 + salaryAcctResultReportPOS.addAll(SalaryAcctResultReportBO.lkszConvert2PO(resultValue.getItems(), salaryAcctEmployeePO, (long) user.getUID(), emps)); + }); + + // 删除原来的薪资核算结果 + param.getResultValueList().stream().forEach(resultValue -> { + List saveItemIds = resultValue.getItems().stream().map(SalaryAcctResultSaveParam.SalaryAcctResultDetailItemParam::getSalaryItemId).collect(Collectors.toList()); + deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(resultValue.getSalaryAcctEmpId()), saveItemIds); + // 报表 + getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(resultValue.getSalaryAcctEmpId()), saveItemIds); + }); + + // 保存薪资核算结果 + if (CollectionUtils.isNotEmpty(salaryAcctResultPOS)) { + // 加密 + encryptUtil.encryptList(salaryAcctResultPOS, SalaryAcctResultPO.class); + List> partition = Lists.partition(salaryAcctResultPOS, 100); + partition.forEach(getSalaryAcctResultMapper()::batchInsert); + } + + //报表 + if (CollectionUtils.isNotEmpty(salaryAcctResultReportPOS)) { + getSalaryAcctReportService(user).batchSave(salaryAcctResultReportPOS); + } + } + + + public void temp(SalaryAcctResultSaveParam saveParam){ + List dataCollectionEmployees = getSalaryEmployeeService(user).listAllForReport(); + Map emps = SalaryEntityUtil.convert2Map(dataCollectionEmployees, DataCollectionEmployee::getEmployeeId); + + // 查询薪资核算人员 + SalaryAcctEmployeePO salaryAcctEmployeePO = getSalaryAcctEmployeeService(user).getById(saveParam.getSalaryAcctEmpId()); + if (Objects.isNull(salaryAcctEmployeePO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98831, "薪资核算人员不存在或已被删除")); + } + // 查询原来的薪资核算结果 + List salaryAcctResultPOSOld = getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctEmpId(saveParam.getSalaryAcctEmpId()).build()); + // 解密 + encryptUtil.decryptList(salaryAcctResultPOSOld, SalaryAcctResultPO.class); + // 保存参数转换成薪资核算结果po + List salaryAcctResultPOS = SalaryAcctResultBO.convert2PO(salaryAcctResultPOSOld, saveParam, salaryAcctEmployeePO, (long) user.getUID()); + SalarySysConfPO autoLock = getSalarySysConfService(user).getOneByCode(SalarySysConstant.EDIT_IMPORT_AUTO_LOCK); + + // 删除原来的薪资核算结果 + List saveItemIds = saveParam.getItems().stream().map(SalaryAcctResultSaveParam.SalaryAcctResultDetailItemParam::getSalaryItemId).collect(Collectors.toList()); + deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(saveParam.getSalaryAcctEmpId()), saveItemIds); + // 保存薪资核算结果 + if (CollectionUtils.isNotEmpty(salaryAcctResultPOS)) { + // 加密 + encryptUtil.encryptList(salaryAcctResultPOS, SalaryAcctResultPO.class); + List> partition = Lists.partition(salaryAcctResultPOS, 100); + partition.forEach(getSalaryAcctResultMapper()::batchInsert); + } + //报表 todo + getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(saveParam.getSalaryAcctEmpId()), saveItemIds); + List salaryAcctResultReportPOS = SalaryAcctResultReportBO.convert2PO(saveParam, salaryAcctEmployeePO, (long) user.getUID(), emps); + if (CollectionUtils.isNotEmpty(salaryAcctResultReportPOS)) { + getSalaryAcctReportService(user).batchSave(salaryAcctResultReportPOS); + } + + + // 存储薪资核算结果数据来源日志 + salaryAcctResultPOS = getSalaryAcctRecordService(user).listBySalaryAcctEmpId(saveParam.getSalaryAcctEmpId()); + saveSalaryAcctResultLog(salaryAcctResultPOSOld, salaryAcctResultPOS); + } } \ No newline at end of file diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index 078060a02..45de6654d 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -158,6 +158,15 @@ public class SalaryAcctController { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::backCalculate, param.getSalaryAcctRecordId()); } + + // 结账 + @GET + @Path("/lkszJz") + @Produces(MediaType.APPLICATION_JSON) + public String lkszJz(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::lkszJz, id); + } /* ********************************薪资核算记录相关 end*********************************/ @@ -448,6 +457,24 @@ public class SalaryAcctController { return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::updateLockStatusByParam, param); } + //鲁控数字批量更新 + @POST + @Path("/acctresult/lkszBatchUpdate") + @Produces(MediaType.APPLICATION_JSON) + public String lkszBatchUpdate(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultBatchUpdateParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::lkszBatchUpdate, param); + } + + //鲁控数字批量编辑 + @POST + @Path("/acctresult/lkszBatchEdit") + @Produces(MediaType.APPLICATION_JSON) + public String lkszBatchEdit(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultBatchEditParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::lkszBatchEdit, param); + } + //薪资核算 @POST @Path("/acctresult/accounting") diff --git a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java index 9c17eaf78..5cd43cecb 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java @@ -258,4 +258,12 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord public void backCalculate(Long salaryAcctRecordId){ getSalaryAcctRecordService(user).backCalculate(salaryAcctRecordId); } + + /** + * 鲁控数字-结账 + * @param salaryAcctRecordId + */ + public void lkszJz(Long salaryAcctRecordId) { + getSalaryAcctRecordService(user).lkszJz(salaryAcctRecordId); + } } diff --git a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java index 8c0e6404d..59bbd3093 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java @@ -9,10 +9,7 @@ import com.engine.salary.entity.progress.ProgressDTO; import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultDetailDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultListColumnDTO; -import com.engine.salary.entity.salaryacct.param.SalaryAcctCalculateParam; -import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam; -import com.engine.salary.entity.salaryacct.param.SalaryAcctResultSaveParam; -import com.engine.salary.entity.salaryacct.param.SalaryAcctResultUpdateLockStatusParam; +import com.engine.salary.entity.salaryacct.param.*; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.service.*; @@ -260,6 +257,22 @@ public class SalaryAcctResultWrapper extends Service { return getSalaryAcctResultService(user).checkAuth(salaryAcctRecordId); } + /** + * 鲁控数字薪资核算结果批量更新 + * @param param + */ + public void lkszBatchUpdate(SalaryAcctResultBatchUpdateParam param) { + getSalaryAcctResultService(user).lkszBatchUpdate(param); + } + + /** + * 鲁控数字薪资核算结果批量编辑 + * @param param + */ + public void lkszBatchEdit(SalaryAcctResultBatchEditParam param) { + getSalaryAcctResultService(user).lkszBatchEdit(param); + } + /** * 薪资核算-校验 From 451c9fb07bc45cc2e026c1fafde520251b598c68 Mon Sep 17 00:00:00 2001 From: sy Date: Wed, 6 Dec 2023 09:51:07 +0800 Subject: [PATCH 02/92] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E8=8E=B7=E5=8F=96=E9=80=BB=E8=BE=91=E6=94=B9?= =?UTF-8?q?=E9=80=A0=EF=BC=8C=E6=A0=B9=E6=8D=AE=E5=BA=94=E7=94=A8=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E4=B8=AD=E7=9A=84=E5=8C=BA=E5=88=86=E5=BC=80=E5=85=B3?= =?UTF-8?q?=EF=BC=8C=E5=88=A4=E5=AE=9A=E5=90=8E=E5=B0=86=E5=85=AC=E5=8F=B8?= =?UTF-8?q?=E7=9A=84=E7=A6=8F=E5=88=A9=E5=9F=BA=E6=95=B0=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=8D=95=E7=8B=AC=E5=8C=BA=E5=88=86=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 68 ++++++++++++++++--- .../po/InsuranceAccountDetailPO.java | 18 +++++ .../dto/InsuranceArchivesFundSchemeDTO.java | 2 + .../dto/InsuranceArchivesOtherSchemeDTO.java | 2 + .../dto/InsuranceArchivesSocialSchemeDTO.java | 3 + .../po/InsuranceArchivesFundSchemePO.java | 7 ++ .../po/InsuranceArchivesOtherSchemePO.java | 6 ++ .../po/InsuranceArchivesSocialSchemePO.java | 6 ++ .../sys/constant/SalarySysConstant.java | 5 ++ .../impl/SalarySysConfServiceImpl.java | 12 ++++ 10 files changed, 119 insertions(+), 10 deletions(-) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index 528849995..e0ebc3bef 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -14,7 +14,6 @@ import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.cloudstore.eccom.result.WeaResultMsg; import com.engine.common.util.ServiceUtil; import com.engine.salary.constant.SalaryDefaultTenantConstant; -import com.engine.salary.encrypt.AESEncryptUtil; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.siarchives.bo.InsuranceArchivesBO; @@ -37,6 +36,10 @@ import com.engine.salary.mapper.sischeme.InsuranceSchemeMapper; import com.engine.salary.mapper.taxagent.TaxAgentMapper; import com.engine.salary.service.SalaryEmployeeService; import com.engine.salary.service.impl.SalaryEmployeeServiceImpl; +import com.engine.salary.sys.entity.po.SalarySysConfPO; +import com.engine.salary.sys.enums.OpenEnum; +import com.engine.salary.sys.service.SalarySysConfService; +import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import com.engine.salary.util.SalaryAssert; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryFormItemUtil; @@ -65,6 +68,8 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; +import static com.engine.salary.sys.constant.SalarySysConstant.WEL_BASE_DIFF_BY_PER_AND_COM; + /** * @Author weaver_cl @@ -113,6 +118,10 @@ public class SIArchivesBiz { return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); } + private SalarySysConfService getSalarySysConfService(User user) { + return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); + } + /** * @param welfareType * @param employeeId @@ -266,15 +275,18 @@ public class SIArchivesBiz { */ public Map getPaymentForm(User user, WelfareTypeEnum welfareType, Long employeeId, long operateId, Long schemeId, Long paymentOrganization) { Map data = new HashMap<>(16); + //判断是否要区分个人和单位福利基数 + SalarySysConfPO welBaseDiff = getSalarySysConfService(user).getOneByCode(WEL_BASE_DIFF_BY_PER_AND_COM); + boolean welBaseDiffSign = welBaseDiff != null && welBaseDiff.getConfValue().equals(OpenEnum.OPEN.getValue()); switch (welfareType) { case SOCIAL_SECURITY: - data = buildSocialPaymentForm(user, employeeId, schemeId, operateId, welfareType.getValue(), paymentOrganization); + data = buildSocialPaymentForm(user, employeeId, schemeId, operateId, welfareType.getValue(), paymentOrganization, welBaseDiffSign); break; case ACCUMULATION_FUND: - data = buildFundPaymentForm(user, employeeId, schemeId, operateId, welfareType.getValue(), paymentOrganization); + data = buildFundPaymentForm(user, employeeId, schemeId, operateId, welfareType.getValue(), paymentOrganization, welBaseDiffSign); break; case OTHER: - data = buildOtherPaymentForm(user, employeeId, schemeId, operateId, welfareType.getValue(), paymentOrganization); + data = buildOtherPaymentForm(user, employeeId, schemeId, operateId, welfareType.getValue(), paymentOrganization, welBaseDiffSign); break; default: } @@ -289,12 +301,16 @@ public class SIArchivesBiz { * @param operateId * @return */ - public Map buildOtherPaymentForm(User user, Long employeeId, Long schemeId, long operateId, Integer welfareType, Long paymentOrganization) { + public Map buildOtherPaymentForm(User user, Long employeeId, Long schemeId, long operateId, Integer welfareType, Long paymentOrganization, boolean welBaseDiffSign) { Map dataMap = new HashMap<>(); InsuranceArchivesOtherSchemeDTO data = buildOtherForm(employeeId, operateId, paymentOrganization); if (data != null) { dataMap.put("data", JSONObject.parseObject(data.getOtherPaymentBaseString(), new TypeReference>() { })); + if (welBaseDiffSign) { + dataMap.put("comData", JSONObject.parseObject(data.getOtherPaymentComBaseString(), new TypeReference>() { + })); + } } List addGroups = new ArrayList<>(); List inputItems = buildPaymentBase(user, schemeId, welfareType); @@ -311,13 +327,17 @@ public class SIArchivesBiz { * @param operateId * @return */ - public Map buildFundPaymentForm(User user, Long employeeId, Long schemeId, long operateId, Integer welfareType, Long paymentOrganization) { + public Map buildFundPaymentForm(User user, Long employeeId, Long schemeId, long operateId, Integer welfareType, Long paymentOrganization, boolean welBaseDiffSign) { Map dataMap = new HashMap<>(); InsuranceArchivesFundSchemeDTO data = buildFundForm(employeeId, operateId, paymentOrganization); if (data != null) { dataMap.put("data", JSONObject.parseObject(data.getFundPaymentBaseString(), new TypeReference>() { })); + if (welBaseDiffSign) { + dataMap.put("comData", JSONObject.parseObject(data.getFundPaymentComBaseString(), new TypeReference>() { + })); + } } List addGroups = new ArrayList<>(); List inputItems = buildPaymentBase(user, schemeId, welfareType); @@ -334,18 +354,28 @@ public class SIArchivesBiz { * @param operateId * @return */ - public Map buildSocialPaymentForm(User user, Long employeeId, Long schemeId, long operateId, Integer welfareType, Long paymentOrganization) { + public Map buildSocialPaymentForm(User user, Long employeeId, Long schemeId, long operateId, Integer welfareType, Long paymentOrganization, boolean welBaseDiffSign) { Map dataMap = new HashMap<>(); InsuranceArchivesSocialSchemeDTO data = buildSocialForm(employeeId, operateId, paymentOrganization); if (data != null) { dataMap.put("data", JSONObject.parseObject(data.getSchemePaymentBaseString(), new TypeReference>() { })); + if (welBaseDiffSign) { + dataMap.put("comData", JSONObject.parseObject(data.getSchemePaymentComBaseString(), new TypeReference>() { + })); + } } List addGroups = new ArrayList<>(); List inputItems = buildPaymentBase(user, schemeId, welfareType); addGroups.add(new SearchConditionGroup("社保缴纳基数", true, inputItems)); dataMap.put("items", addGroups); + if (welBaseDiffSign) { + List addComGroups = new ArrayList<>(); + List inputComItems = buildPaymentComBase(user, schemeId, welfareType); + addComGroups.add(new SearchConditionGroup("社保缴纳基数", true, inputComItems)); + dataMap.put("comItems", addComGroups); + } return dataMap; } @@ -361,9 +391,27 @@ public class SIArchivesBiz { if (schemeId == null) { return new ArrayList<>(); } - List list = queryListByPrimaryIdIsPayment(schemeId, welfareType).stream().collect(Collectors.collectingAndThen( - Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(InsuranceSchemeDetailPO::getInsuranceId))), ArrayList::new) - ); + List list = queryListByPrimaryIdIsPayment(schemeId, welfareType).stream() + .filter(f -> f.getPaymentScope().equals(PaymentScopeEnum.SCOPE_PERSON.getValue())).collect(Collectors.toList()); + SICategoryBiz siCategoryBiz = new SICategoryBiz(); + list.forEach(insuranceSchemeDetail -> { + ICategoryPO iCategoryPO = siCategoryBiz.getByID(insuranceSchemeDetail.getInsuranceId()); + if (iCategoryPO != null) { +// inputItems.add(SalaryFormItemUtil.inputNumberItem(user, "precision:2", 2, 12, 2, iCategoryPO.getInsuranceName(), String.valueOf(insuranceSchemeDetail.getInsuranceId()))); + inputItems.add(SalaryFormItemUtil.inputNumberItemWithMaxAndMin(user, "precision:2", 2, 12, 2, iCategoryPO.getInsuranceName(), String.valueOf(insuranceSchemeDetail.getInsuranceId()) + , insuranceSchemeDetail.getUpperLimit(), insuranceSchemeDetail.getLowerLimit())); + } + }); + return inputItems; + } + + public List buildPaymentComBase(User user, Long schemeId, Integer welfareType) { + List inputItems = new ArrayList<>(); + if (schemeId == null) { + return new ArrayList<>(); + } + List list = queryListByPrimaryIdIsPayment(schemeId, welfareType).stream() + .filter(f -> f.getPaymentScope().equals(PaymentScopeEnum.SCOPE_COMPANY.getValue())).collect(Collectors.toList()); SICategoryBiz siCategoryBiz = new SICategoryBiz(); list.forEach(insuranceSchemeDetail -> { ICategoryPO iCategoryPO = siCategoryBiz.getByID(insuranceSchemeDetail.getInsuranceId()); diff --git a/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailPO.java b/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailPO.java index e8f7ce98f..9cd2ad7f0 100644 --- a/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailPO.java +++ b/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailPO.java @@ -106,6 +106,12 @@ public class InsuranceAccountDetailPO { @Encrypt private String socialPaymentBaseString; + /** + * 社保缴纳基数——单位 + */ + @Encrypt + private String socialPaymentComBaseString; + /** * 公积金方案ID */ @@ -117,6 +123,12 @@ public class InsuranceAccountDetailPO { @Encrypt private String fundPaymentBaseString; + /** + * 公积金缴纳基数——单位 + */ + @Encrypt + private String fundPaymentComBaseString; + /** * 其他福利方案id */ @@ -128,6 +140,12 @@ public class InsuranceAccountDetailPO { @Encrypt private String otherPaymentBaseString; + /** + * 其他福利缴纳基数——单位 + */ + @Encrypt + private String otherPaymentComBaseString; + /** * 社保个人缴费明细 */ diff --git a/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesFundSchemeDTO.java b/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesFundSchemeDTO.java index f85206c01..4fcfdbcd1 100644 --- a/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesFundSchemeDTO.java +++ b/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesFundSchemeDTO.java @@ -65,4 +65,6 @@ public class InsuranceArchivesFundSchemeDTO { //缴纳基数 private String fundPaymentBaseString; + + private String fundPaymentComBaseString; } diff --git a/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesOtherSchemeDTO.java b/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesOtherSchemeDTO.java index a3c55fee5..3fa89c1c2 100644 --- a/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesOtherSchemeDTO.java +++ b/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesOtherSchemeDTO.java @@ -56,5 +56,7 @@ public class InsuranceArchivesOtherSchemeDTO { private String otherPaymentBaseString; + private String otherPaymentComBaseString; + //private WeaForm otherPaymentBase; } diff --git a/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesSocialSchemeDTO.java b/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesSocialSchemeDTO.java index 1be1afbca..d4fc1dae8 100644 --- a/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesSocialSchemeDTO.java +++ b/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesSocialSchemeDTO.java @@ -59,4 +59,7 @@ public class InsuranceArchivesSocialSchemeDTO { //社保缴纳基数 private String schemePaymentBaseString; + //社保缴纳基数——单位 + private String schemePaymentComBaseString; + } diff --git a/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesFundSchemePO.java b/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesFundSchemePO.java index 7b333f4e6..fc171c94b 100644 --- a/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesFundSchemePO.java +++ b/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesFundSchemePO.java @@ -87,6 +87,13 @@ public class InsuranceArchivesFundSchemePO { @Encrypt private String fundPaymentBaseString; + /** + * 公积金缴纳基数——单位 + */ + @Encrypt + private String fundPaymentComBaseString; + + /** * 租户key */ diff --git a/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesOtherSchemePO.java b/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesOtherSchemePO.java index 76146719d..9ad9d9668 100644 --- a/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesOtherSchemePO.java +++ b/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesOtherSchemePO.java @@ -77,6 +77,12 @@ public class InsuranceArchivesOtherSchemePO { @Encrypt private String otherPaymentBaseString; + /** + * 其他福利缴纳基数——单位 + */ + @Encrypt + private String otherPaymentComBaseString; + /** * 租户key */ diff --git a/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesSocialSchemePO.java b/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesSocialSchemePO.java index e6f4ff038..645e5215b 100644 --- a/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesSocialSchemePO.java +++ b/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesSocialSchemePO.java @@ -83,6 +83,12 @@ public class InsuranceArchivesSocialSchemePO { @Encrypt private String socialPaymentBaseString; + /** + * 社保缴纳基数——单位 + */ + @Encrypt + private String socialPaymentComBaseString; + /** * 租户key */ diff --git a/src/com/engine/salary/sys/constant/SalarySysConstant.java b/src/com/engine/salary/sys/constant/SalarySysConstant.java index c5b6b08db..df5ea5ea2 100644 --- a/src/com/engine/salary/sys/constant/SalarySysConstant.java +++ b/src/com/engine/salary/sys/constant/SalarySysConstant.java @@ -105,4 +105,9 @@ public class SalarySysConstant { * 核算固定列头数 */ public static final String SALARY_ACCT_FIXED_COLUMNS = "salaryAcctFixedColumns"; + + /** + * 应用设置是否福利档案基数区分个人和单位 + */ + public static final String WEL_BASE_DIFF_BY_PER_AND_COM = "welBaseDiffByPerAndCom"; } diff --git a/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java b/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java index 57fb34878..74ead2a26 100644 --- a/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java +++ b/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java @@ -755,8 +755,10 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe insuranceArchivesSocialSchemePos.forEach(po -> { if (OpenEnum.OFF.getValue().equals(isOpenEncrypt)) { po.setSocialPaymentBaseString(AESEncryptUtil.closeEncryptSetting(po.getSocialPaymentBaseString(), sysConfPo)); + po.setSocialPaymentComBaseString(AESEncryptUtil.closeEncryptSetting(po.getSocialPaymentComBaseString(), sysConfPo)); } else { po.setSocialPaymentBaseString(AESEncryptUtil.encrypt(po.getSocialPaymentBaseString())); + po.setSocialPaymentComBaseString(AESEncryptUtil.encrypt(po.getSocialPaymentComBaseString())); } }); List> partition = Lists.partition(insuranceArchivesSocialSchemePos, 50); @@ -782,8 +784,10 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe insuranceArchivesFundSchemePos.forEach(po -> { if (OpenEnum.OFF.getValue().equals(isOpenEncrypt)) { po.setFundPaymentBaseString(AESEncryptUtil.closeEncryptSetting(po.getFundPaymentBaseString(), sysConfPo)); + po.setFundPaymentComBaseString(AESEncryptUtil.closeEncryptSetting(po.getFundPaymentComBaseString(), sysConfPo)); } else { po.setFundPaymentBaseString(AESEncryptUtil.encrypt(po.getFundPaymentBaseString())); + po.setFundPaymentComBaseString(AESEncryptUtil.encrypt(po.getFundPaymentComBaseString())); } }); List> partition = Lists.partition(insuranceArchivesFundSchemePos, 50); @@ -809,8 +813,10 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe insuranceArchivesOtherSchemePos.forEach(po -> { if (OpenEnum.OFF.getValue().equals(isOpenEncrypt)) { po.setOtherPaymentBaseString(AESEncryptUtil.closeEncryptSetting(po.getOtherPaymentBaseString(), sysConfPo)); + po.setOtherPaymentComBaseString(AESEncryptUtil.closeEncryptSetting(po.getOtherPaymentComBaseString(), sysConfPo)); } else { po.setOtherPaymentBaseString(AESEncryptUtil.encrypt(po.getOtherPaymentBaseString())); + po.setOtherPaymentComBaseString(AESEncryptUtil.encrypt(po.getOtherPaymentComBaseString())); } }); List> partition = Lists.partition(insuranceArchivesOtherSchemePos, 50); @@ -869,6 +875,9 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe po.setSocialPaymentBaseString(AESEncryptUtil.closeEncryptSetting(po.getSocialPaymentBaseString(), sysConfPo)); po.setFundPaymentBaseString(AESEncryptUtil.closeEncryptSetting(po.getFundPaymentBaseString(), sysConfPo)); po.setOtherPaymentBaseString(AESEncryptUtil.closeEncryptSetting(po.getOtherPaymentBaseString(), sysConfPo)); + po.setSocialPaymentComBaseString(AESEncryptUtil.closeEncryptSetting(po.getSocialPaymentComBaseString(), sysConfPo)); + po.setFundPaymentComBaseString(AESEncryptUtil.closeEncryptSetting(po.getFundPaymentComBaseString(), sysConfPo)); + po.setOtherPaymentComBaseString(AESEncryptUtil.closeEncryptSetting(po.getOtherPaymentComBaseString(), sysConfPo)); po.setSocialPerJson(AESEncryptUtil.closeEncryptSetting(po.getSocialPerJson(), sysConfPo)); po.setSocialPerSum(AESEncryptUtil.closeEncryptSetting(po.getSocialPerSum(), sysConfPo)); po.setFundPerJson(AESEncryptUtil.closeEncryptSetting(po.getFundPerJson(), sysConfPo)); @@ -887,6 +896,9 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe po.setSocialPaymentBaseString(AESEncryptUtil.encrypt(po.getSocialPaymentBaseString())); po.setFundPaymentBaseString(AESEncryptUtil.encrypt(po.getFundPaymentBaseString())); po.setOtherPaymentBaseString(AESEncryptUtil.encrypt(po.getOtherPaymentBaseString())); + po.setSocialPaymentComBaseString(AESEncryptUtil.encrypt(po.getSocialPaymentComBaseString())); + po.setFundPaymentComBaseString(AESEncryptUtil.encrypt(po.getFundPaymentComBaseString())); + po.setOtherPaymentComBaseString(AESEncryptUtil.encrypt(po.getOtherPaymentComBaseString())); po.setSocialPerJson(AESEncryptUtil.encrypt(po.getSocialPerJson())); po.setSocialPerSum(AESEncryptUtil.encrypt(po.getSocialPerSum())); po.setFundPerJson(AESEncryptUtil.encrypt(po.getFundPerJson())); From ec8cb6214ddb4b6f4a758b9f71c5750ab1bdabe8 Mon Sep 17 00:00:00 2001 From: sy Date: Wed, 6 Dec 2023 14:04:12 +0800 Subject: [PATCH 03/92] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E7=BC=96=E8=BE=91=E4=BF=9D=E5=AD=98=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E6=94=B9=E9=80=A0=EF=BC=8C=E9=80=82=E9=85=8D=E7=A6=8F?= =?UTF-8?q?=E5=88=A9=E6=A1=A3=E6=A1=88=E7=A6=8F=E5=88=A9=E5=9F=BA=E6=95=B0?= =?UTF-8?q?=E6=8B=86=E5=88=86=E4=B8=AA=E4=BA=BA=E5=92=8C=E5=85=AC=E5=8F=B8?= =?UTF-8?q?=E9=9C=80=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 163 ++++++++++++++++-- .../dto/InsuranceArchivesBaseHistoryDTO.java | 6 + .../param/InsuranceArchivesSaveParam.java | 2 + .../po/InsuranceArchivesBaseHistoryPO.java | 2 + .../mapper/siarchives/FundSchemeMapper.xml | 5 + .../mapper/siarchives/OtherSchemeMapper.xml | 9 +- .../mapper/siarchives/SocialSchemeMapper.xml | 5 + .../service/impl/SIArchivesServiceImpl.java | 2 +- .../service/impl/SISchemeServiceImpl.java | 6 +- 9 files changed, 175 insertions(+), 25 deletions(-) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index e0ebc3bef..a58021031 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -669,17 +669,20 @@ public class SIArchivesBiz { * @param param * @param employeeId */ - public void insert(InsuranceArchivesSaveParam param, long employeeId) { + public void insert(InsuranceArchivesSaveParam param, User user) { SalaryAssert.notNull(param.getWelfareType(), "福利类型为空"); + //判断是否要区分个人和单位福利基数 + SalarySysConfPO welBaseDiff = getSalarySysConfService(user).getOneByCode(WEL_BASE_DIFF_BY_PER_AND_COM); + boolean welBaseDiffSign = welBaseDiff != null && welBaseDiff.getConfValue().equals(OpenEnum.OPEN.getValue()); switch (param.getWelfareType()) { case SOCIAL_SECURITY: - socialSave(param, employeeId); + socialSave(param, user, welBaseDiffSign); break; case ACCUMULATION_FUND: - fundSave(param, employeeId); + fundSave(param, user, welBaseDiffSign); break; case OTHER: - otherSave(param, employeeId); + otherSave(param, user, welBaseDiffSign); break; default: throw new SalaryRunTimeException("福利类型不存在"); @@ -691,7 +694,8 @@ public class SIArchivesBiz { * @param paramReq * @param employeeId */ - public void otherSave(InsuranceArchivesSaveParam paramReq, long employeeId) { + public void otherSave(InsuranceArchivesSaveParam paramReq, User user, boolean welBaseDiffSign) { + long employeeId = user.getUID(); SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); try { OtherSchemeMapper otherSchemeMapper = sqlSession.getMapper(OtherSchemeMapper.class); @@ -714,6 +718,7 @@ public class SIArchivesBiz { InsuranceArchivesBaseHistoryDTO adjustInfo = InsuranceArchivesBaseHistoryDTO.builder() .adjustAfterSchemeId(param.getOtherSchemeId()) .adjustAfterBaseJson(paramReq.getPaymentForm()) + .adjustAfterComBaseJson(paramReq.getPaymentComForm()) .welfareType(paramReq.getWelfareType().getValue()) .employeeId(param.getEmployeeId()) .paymentOrganization(param.getPaymentOrganization()) @@ -725,6 +730,7 @@ public class SIArchivesBiz { encryptUtil.decrypt(oldOtherInfo, InsuranceArchivesOtherSchemePO.class); adjustInfo.setAdjustBeforeBaseJson(oldOtherInfo.getOtherPaymentBaseString()); adjustInfo.setAdjustBeforeSchemeId(oldOtherInfo.getOtherSchemeId()); + adjustInfo.setAdjustBeforeComBaseJson(oldOtherInfo.getOtherPaymentComBaseString()); //新数据 InsuranceArchivesOtherSchemePO updateOtherInfo = InsuranceArchivesOtherSchemePO.builder() @@ -744,9 +750,17 @@ public class SIArchivesBiz { .otherPaymentBaseString(paramReq.getPaymentForm()) .build(); //校验福利基数是否符合上下限要求, - if (!checkWelBaseLimit(updateOtherInfo.getOtherSchemeId(),updateOtherInfo.getOtherPaymentBaseString())) { + if (!checkWelBaseLimit(updateOtherInfo.getOtherSchemeId(),updateOtherInfo.getOtherPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue())) { throw new SalaryRunTimeException("其他福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"); } + //需要拆分个人和公司福利基数时 + if (welBaseDiffSign) { + updateOtherInfo.setOtherPaymentComBaseString(paramReq.getPaymentComForm()); + //校验福利基数是否符合上下限要求 + if (!checkWelBaseLimit(updateOtherInfo.getOtherSchemeId(),updateOtherInfo.getOtherPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue())) { + throw new SalaryRunTimeException("其他福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"); + } + } encryptUtil.encrypt(updateOtherInfo, InsuranceArchivesOtherSchemePO.class); otherSchemeMapper.updateById(updateOtherInfo); //更新base_info表状态 @@ -780,9 +794,17 @@ public class SIArchivesBiz { .otherPaymentBaseString(paramReq.getPaymentForm()) .build(); //校验福利基数是否符合上下限要求, - if (!checkWelBaseLimit(insertOtherInfo.getOtherSchemeId(),insertOtherInfo.getOtherPaymentBaseString())) { + if (!checkWelBaseLimit(insertOtherInfo.getOtherSchemeId(),insertOtherInfo.getOtherPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue())) { throw new SalaryRunTimeException("其他福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"); } + //需要拆分个人和公司福利基数时 + if (welBaseDiffSign) { + insertOtherInfo.setOtherPaymentComBaseString(paramReq.getPaymentComForm()); + //校验福利基数是否符合上下限要求 + if (!checkWelBaseLimit(insertOtherInfo.getOtherSchemeId(),insertOtherInfo.getOtherPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue())) { + throw new SalaryRunTimeException("其他福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"); + } + } encryptUtil.encrypt(insertOtherInfo, InsuranceArchivesOtherSchemePO.class); otherSchemeMapper.insert(insertOtherInfo); sqlSession.commit(); @@ -818,7 +840,8 @@ public class SIArchivesBiz { * @param paramReq * @param employeeId */ - public void fundSave(InsuranceArchivesSaveParam paramReq, long employeeId) { + public void fundSave(InsuranceArchivesSaveParam paramReq, User user, boolean welBaseDiffSign) { + long employeeId = user.getUID(); SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); try { FundSchemeMapper fundSchemeMapper = sqlSession.getMapper(FundSchemeMapper.class); @@ -840,6 +863,7 @@ public class SIArchivesBiz { InsuranceArchivesBaseHistoryDTO adjustInfo = InsuranceArchivesBaseHistoryDTO.builder() .adjustAfterSchemeId(param.getFundSchemeId()) .adjustAfterBaseJson(paramReq.getPaymentForm()) + .adjustAfterComBaseJson(paramReq.getPaymentComForm()) .welfareType(paramReq.getWelfareType().getValue()) .employeeId(param.getEmployeeId()) .paymentOrganization(param.getPaymentOrganization()) @@ -851,6 +875,7 @@ public class SIArchivesBiz { encryptUtil.decrypt(oldFundInfo, InsuranceArchivesFundSchemePO.class); adjustInfo.setAdjustBeforeBaseJson(oldFundInfo.getFundPaymentBaseString()); adjustInfo.setAdjustBeforeSchemeId(oldFundInfo.getFundSchemeId()); + adjustInfo.setAdjustBeforeComBaseJson(oldFundInfo.getFundPaymentComBaseString()); //新数据 InsuranceArchivesFundSchemePO updateFundInfo = InsuranceArchivesFundSchemePO.builder() .id(oldFundInfo.getId()) @@ -871,9 +896,17 @@ public class SIArchivesBiz { .employeeId(param.getEmployeeId()) .build(); //校验福利基数是否符合上下限要求, - if (!checkWelBaseLimit(updateFundInfo.getFundSchemeId(),updateFundInfo.getFundPaymentBaseString())) { + if (!checkWelBaseLimit(updateFundInfo.getFundSchemeId(),updateFundInfo.getFundPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue())) { throw new SalaryRunTimeException("公积金福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"); } + //需要拆分个人和公司福利基数时 + if (welBaseDiffSign) { + updateFundInfo.setFundPaymentComBaseString(paramReq.getPaymentComForm()); + //校验福利基数是否符合上下限要求 + if (!checkWelBaseLimit(updateFundInfo.getFundSchemeId(),updateFundInfo.getFundPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue())) { + throw new SalaryRunTimeException("公积金福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"); + } + } encryptUtil.encrypt(updateFundInfo, InsuranceArchivesFundSchemePO.class); fundSchemeMapper.updateById(updateFundInfo); //更新base_info表状态 @@ -909,9 +942,17 @@ public class SIArchivesBiz { .employeeId(param.getEmployeeId()) .build(); //校验福利基数是否符合上下限要求, - if (!checkWelBaseLimit(insertFundInfo.getFundSchemeId(),insertFundInfo.getFundPaymentBaseString())) { + if (!checkWelBaseLimit(insertFundInfo.getFundSchemeId(),insertFundInfo.getFundPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue())) { throw new SalaryRunTimeException("公积金福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"); } + //需要拆分个人和公司福利基数时 + if (welBaseDiffSign) { + insertFundInfo.setFundPaymentComBaseString(paramReq.getPaymentComForm()); + //校验福利基数是否符合上下限要求 + if (!checkWelBaseLimit(insertFundInfo.getFundSchemeId(),insertFundInfo.getFundPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue())) { + throw new SalaryRunTimeException("公积金福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"); + } + } encryptUtil.encrypt(insertFundInfo, InsuranceArchivesFundSchemePO.class); fundSchemeMapper.insert(insertFundInfo); sqlSession.commit(); @@ -949,8 +990,8 @@ public class SIArchivesBiz { * @param paramReq * @param employeeId */ - public void socialSave(InsuranceArchivesSaveParam paramReq, long employeeId) { - + public void socialSave(InsuranceArchivesSaveParam paramReq, User user, boolean welBaseDiffSign) { + long employeeId = user.getUID(); SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); try { SocialSchemeMapper socialSchemeMapper = sqlSession.getMapper(SocialSchemeMapper.class); @@ -977,6 +1018,7 @@ public class SIArchivesBiz { InsuranceArchivesBaseHistoryDTO adjustInfo = InsuranceArchivesBaseHistoryDTO.builder() .adjustAfterSchemeId(param.getSocialSchemeId()) .adjustAfterBaseJson(paramReq.getPaymentForm()) + .adjustAfterComBaseJson(paramReq.getPaymentComForm()) .welfareType(paramReq.getWelfareType().getValue()) .employeeId(param.getEmployeeId()) .paymentOrganization(param.getPaymentOrganization()) @@ -990,6 +1032,7 @@ public class SIArchivesBiz { encryptUtil.decrypt(oldSocialInfo, InsuranceArchivesSocialSchemePO.class); adjustInfo.setAdjustBeforeBaseJson(oldSocialInfo.getSocialPaymentBaseString()); adjustInfo.setAdjustBeforeSchemeId(oldSocialInfo.getSocialSchemeId()); + adjustInfo.setAdjustBeforeComBaseJson(oldSocialInfo.getSocialPaymentComBaseString()); //新数据 InsuranceArchivesSocialSchemePO updateSocialInfo = InsuranceArchivesSocialSchemePO.builder() @@ -1010,9 +1053,17 @@ public class SIArchivesBiz { .paymentOrganization(param.getPaymentOrganization()) .build(); //校验福利基数是否符合上下限要求 - if (!checkWelBaseLimit(updateSocialInfo.getSocialSchemeId(),updateSocialInfo.getSocialPaymentBaseString())) { + if (!checkWelBaseLimit(updateSocialInfo.getSocialSchemeId(),updateSocialInfo.getSocialPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue())) { throw new SalaryRunTimeException("社保福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"); } + //需要拆分个人和公司福利基数时 + if (welBaseDiffSign) { + updateSocialInfo.setSocialPaymentComBaseString(paramReq.getPaymentComForm()); + //校验福利基数是否符合上下限要求 + if (!checkWelBaseLimit(updateSocialInfo.getSocialSchemeId(),updateSocialInfo.getSocialPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue())) { + throw new SalaryRunTimeException("社保福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"); + } + } encryptUtil.encrypt(updateSocialInfo, InsuranceArchivesSocialSchemePO.class); socialSchemeMapper.updateById(updateSocialInfo); //更新base_info表状态 @@ -1048,9 +1099,17 @@ public class SIArchivesBiz { .paymentOrganization(param.getPaymentOrganization()) .build(); //校验福利基数是否符合上下限要求 - if (!checkWelBaseLimit(insertSocialInfo.getSocialSchemeId(),insertSocialInfo.getSocialPaymentBaseString())) { + if (!checkWelBaseLimit(insertSocialInfo.getSocialSchemeId(),insertSocialInfo.getSocialPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue())) { throw new SalaryRunTimeException("社保福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"); } + //需要拆分个人和公司福利基数时 + if (welBaseDiffSign) { + insertSocialInfo.setSocialPaymentComBaseString(paramReq.getPaymentComForm()); + //校验福利基数是否符合上下限要求 + if (!checkWelBaseLimit(insertSocialInfo.getSocialSchemeId(),insertSocialInfo.getSocialPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue())) { + throw new SalaryRunTimeException("社保福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"); + } + } encryptUtil.encrypt(insertSocialInfo, InsuranceArchivesSocialSchemePO.class); socialSchemeMapper.insert(insertSocialInfo); sqlSession.commit(); @@ -1088,14 +1147,11 @@ public class SIArchivesBiz { * @param paymentBaseString * @return */ - public Boolean checkWelBaseLimit(Long primaryId, String paymentBaseString) { + public Boolean checkWelBaseLimit(Long primaryId, String paymentBaseString, Integer paymentScope) { if (primaryId ==null || paymentBaseString == null) { return true; } - //设置缴纳对象和缴费状态 -// Integer paymentScope = 2; -// Integer isPayment = 1; Map paymentBaseJson = JSON.parseObject(paymentBaseString, new HashMap().getClass()); if (paymentBaseJson == null) { return true; @@ -1119,7 +1175,7 @@ public class SIArchivesBiz { return false; } List isPaymentList = insuranceSchemeDetailPOList.stream() - .filter(f -> f.getIsPayment().equals(IsPaymentEnum.YES.getValue()) && f.getPaymentScope().equals(PaymentScopeEnum.SCOPE_PERSON.getValue())).collect(Collectors.toList()); + .filter(f -> f.getIsPayment().equals(IsPaymentEnum.YES.getValue()) && f.getPaymentScope().equals(paymentScope)).collect(Collectors.toList()); if (isPaymentList.size() > 0) { InsuranceSchemeDetailPO insuranceSchemeDetailPO = isPaymentList.get(0); @@ -2035,6 +2091,11 @@ public class SIArchivesBiz { //生成基数调整记录(基数单元未变化则忽略) public List createAdjustInfo(InsuranceArchivesBaseHistoryDTO adjustInfo, Long creator) { Date now = new Date(); + //判断是否要区分个人和单位福利基数 + User user = new User(Math.toIntExact(creator)); + SalarySysConfPO welBaseDiff = getSalarySysConfService(user).getOneByCode(WEL_BASE_DIFF_BY_PER_AND_COM); + boolean welBaseDiffSign = welBaseDiff != null && welBaseDiff.getConfValue().equals(OpenEnum.OPEN.getValue()); + List toCreateAdjustHistoryList = new ArrayList<>(); //旧档案不存在基数信息,则直接遍历新的基数数据,生成调整记录;旧档案存在基数信息,则合并新旧基数数据,遍历合并后的技术数据中的key,生成调整记录。 if(StringUtils.isNotBlank(adjustInfo.getAdjustAfterBaseJson()) && StringUtils.isBlank(adjustInfo.getAdjustBeforeBaseJson())) { @@ -2053,6 +2114,7 @@ public class SIArchivesBiz { adjustItem.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()); adjustItem.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY); adjustItem.setId(IdGenerator.generate()); + adjustItem.setPaymentScope(welBaseDiffSign ? PaymentScopeEnum.SCOPE_PERSON.getValue().toString() : PaymentScopeEnum.SCOPE_PERSON.getValue().toString() + "," + PaymentScopeEnum.SCOPE_COMPANY.getValue().toString()); toCreateAdjustHistoryList.add(adjustItem); } } else if (StringUtils.isNotBlank(adjustInfo.getAdjustAfterBaseJson()) && StringUtils.isNotBlank(adjustInfo.getAdjustBeforeBaseJson())) { @@ -2087,12 +2149,75 @@ public class SIArchivesBiz { adjustItem.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()); adjustItem.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY); adjustItem.setId(IdGenerator.generate()); + adjustItem.setPaymentScope(welBaseDiffSign ? PaymentScopeEnum.SCOPE_PERSON.getValue().toString() : PaymentScopeEnum.SCOPE_PERSON.getValue().toString() + "," + PaymentScopeEnum.SCOPE_COMPANY.getValue().toString()); toCreateAdjustHistoryList.add(adjustItem); } } } + //如果系统应用设置拆分了个人和公司福利基数,则对adjustBeforeComBaseJson,adjustAfterComBaseJson也进行处理 + if (welBaseDiffSign) { + //旧档案不存在基数信息,则直接遍历新的基数数据,生成调整记录;旧档案存在基数信息,则合并新旧基数数据,遍历合并后的技术数据中的key,生成调整记录。 + if(StringUtils.isNotBlank(adjustInfo.getAdjustAfterComBaseJson()) && StringUtils.isBlank(adjustInfo.getAdjustBeforeComBaseJson())) { + Map adjustAfterComBaseMap = JSON.parseObject(adjustInfo.getAdjustAfterComBaseJson(), new TypeReference>() { + }); + for (String key : adjustAfterComBaseMap.keySet()) { + InsuranceArchivesBaseHistoryPO adjustItem = new InsuranceArchivesBaseHistoryPO(); + BeanUtils.copyProperties(adjustInfo, adjustItem); + adjustItem.setAdjustWelfareItemId(Long.valueOf(key)); + adjustItem.setAdjustAfterBaseValue((String) adjustAfterComBaseMap.get(key)); + adjustItem.setOperateTime(now); + adjustItem.setOperator(creator); + adjustItem.setCreator(creator); + adjustItem.setCreateTime(now); + adjustItem.setUpdateTime(now); + adjustItem.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()); + adjustItem.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY); + adjustItem.setId(IdGenerator.generate()); + adjustItem.setPaymentScope(PaymentScopeEnum.SCOPE_COMPANY.getValue().toString()); + toCreateAdjustHistoryList.add(adjustItem); + } + } else if (StringUtils.isNotBlank(adjustInfo.getAdjustAfterComBaseJson()) && StringUtils.isNotBlank(adjustInfo.getAdjustBeforeComBaseJson())) { + Map adjustAfterComBaseMap = JSON.parseObject(adjustInfo.getAdjustAfterComBaseJson(), new TypeReference>() { + }); + Map adjustBeforeComBaseMap = JSON.parseObject(adjustInfo.getAdjustBeforeComBaseJson(), new TypeReference>() { + }); + Map reDealMap = new HashMap<>(); + if (adjustAfterComBaseMap != null) { + reDealMap.putAll(adjustAfterComBaseMap); + } + if (adjustBeforeComBaseMap != null) { + reDealMap.putAll(adjustBeforeComBaseMap); + } + if (reDealMap.size() >0) { + for (String key : reDealMap.keySet()) { + String beforeValue = (String) adjustBeforeComBaseMap.get(key); + String afterValue = (String) adjustAfterComBaseMap.get(key); + if (SalaryEntityUtil.empty2Zero(beforeValue).compareTo(SalaryEntityUtil.empty2Zero(afterValue)) == 0) { + continue; + } + InsuranceArchivesBaseHistoryPO adjustItem = new InsuranceArchivesBaseHistoryPO(); + BeanUtils.copyProperties(adjustInfo, adjustItem); + adjustItem.setAdjustWelfareItemId(Long.valueOf(key)); + adjustItem.setAdjustBeforeBaseValue(beforeValue); + adjustItem.setAdjustAfterBaseValue(afterValue); + adjustItem.setOperateTime(now); + adjustItem.setOperator(creator); + adjustItem.setCreator(creator); + adjustItem.setCreateTime(now); + adjustItem.setUpdateTime(now); + adjustItem.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()); + adjustItem.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY); + adjustItem.setId(IdGenerator.generate()); + adjustItem.setPaymentScope( PaymentScopeEnum.SCOPE_COMPANY.getValue().toString()); + + toCreateAdjustHistoryList.add(adjustItem); + } + } + + } + } return toCreateAdjustHistoryList; } diff --git a/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesBaseHistoryDTO.java b/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesBaseHistoryDTO.java index 259cc3e54..a0c2d57e8 100644 --- a/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesBaseHistoryDTO.java +++ b/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesBaseHistoryDTO.java @@ -70,12 +70,18 @@ public class InsuranceArchivesBaseHistoryDTO { private String adjustAfterBaseJson; + private String adjustBeforeComBaseJson; + + private String adjustAfterComBaseJson; + @TableTitle(title = "对象", dataIndex = "employeeName", key = "employeeName") private String employeeName; @TableTitle(title = "个税扣缴义务人", dataIndex = "paymentOrganizationName", key = "paymentOrganizationName") private String paymentOrganizationName; @TableTitle(title = "福利项名称", dataIndex = "welfareItemName", key = "welfareItemName") private String welfareItemName; + @TableTitle(title = "缴费对象", dataIndex = "paymentScope", key = "paymentScope") + private String paymentScope; @TableTitle(title = "调整前方案", dataIndex = "adjustBeforeSchemeName", key = "adjustBeforeSchemeName") private String adjustBeforeSchemeName; @TableTitle(title = "调整前基数", dataIndex = "adjustBeforeBaseValue", key = "adjustBeforeBaseValue") diff --git a/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesSaveParam.java b/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesSaveParam.java index 7e4e46fb7..8d086b1ad 100644 --- a/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesSaveParam.java +++ b/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesSaveParam.java @@ -23,4 +23,6 @@ public class InsuranceArchivesSaveParam { private String baseForm; private String paymentForm; + + private String paymentComForm; } diff --git a/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseHistoryPO.java b/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseHistoryPO.java index 6939c2258..52d31f804 100644 --- a/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseHistoryPO.java +++ b/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseHistoryPO.java @@ -77,4 +77,6 @@ public class InsuranceArchivesBaseHistoryPO { private Date createTime; private Date updateTime; + + private String paymentScope; } diff --git a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml index fc91b8885..56731a58b 100644 --- a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml @@ -14,6 +14,7 @@ + @@ -35,6 +36,7 @@ , t.payment_organization , t.under_take , t.fund_payment_base_string + , t.fund_payment_com_base_string , t.create_time , t.update_time , t.creator @@ -311,6 +313,7 @@ welfare_type = #{welfareType}, fund_payment_base_string = #{fundPaymentBaseString}, + fund_payment_com_base_string = #{fundPaymentComBaseString}, fund_scheme_id = #{fundSchemeId}, fund_end_time = #{fundEndTime}, fund_start_time = #{fundStartTime}, @@ -353,6 +356,7 @@ fund_end_time, fund_start_time, fund_payment_base_string, + fund_payment_com_base_string, supplement_fund_account, create_time, creator, @@ -371,6 +375,7 @@ #{fundEndTime}, #{fundStartTime}, #{fundPaymentBaseString}, + #{fundPaymentComBaseString}, #{supplementFundAccount}, #{createTime}, #{creator}, diff --git a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml index d1a18db07..de0febe4f 100644 --- a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml @@ -12,6 +12,7 @@ + @@ -31,6 +32,7 @@ , t.payment_organization , t.under_take , t.other_payment_base_string + , t.other_payment_com_base_string , t.create_time , t.update_time , t.creator @@ -292,6 +294,7 @@ welfare_type = #{welfareType}, other_payment_base_string = #{otherPaymentBaseString}, + other_payment_com_base_string = #{otherPaymentComBaseString}, other_scheme_id = #{otherSchemeId}, other_end_time = #{otherEndTime}, other_start_time = #{otherStartTime}, @@ -340,7 +343,8 @@ non_payment, creator, payment_organization, - other_payment_base_string) + other_payment_base_string, + other_payment_com_base_string) VALUES ( #{otherSchemeId}, @@ -356,7 +360,8 @@ #{nonPayment}, #{creator}, #{paymentOrganization}, - #{otherPaymentBaseString} + #{otherPaymentBaseString}, + #{otherPaymentComBaseString} ) \ No newline at end of file diff --git a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml index 8472020a2..c27048d10 100644 --- a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml @@ -13,6 +13,7 @@ + @@ -33,6 +34,7 @@ , t.payment_organization , t.under_take , t.social_payment_base_string + , t.social_payment_com_base_string , t.create_time , t.update_time , t.creator @@ -955,6 +957,7 @@ welfare_type = #{welfareType}, social_payment_base_string = #{socialPaymentBaseString}, + social_payment_com_base_string = #{socialPaymentComBaseString}, social_scheme_id = #{socialSchemeId}, social_end_time = #{socialEndTime}, social_start_time = #{socialStartTime}, @@ -994,6 +997,7 @@ welfare_type, delete_type, social_payment_base_string, + social_payment_com_base_string, social_scheme_id, create_time, social_end_time, @@ -1011,6 +1015,7 @@ #{welfareType}, #{deleteType}, #{socialPaymentBaseString}, + #{socialPaymentComBaseString}, #{socialSchemeId}, #{createTime}, #{socialEndTime}, diff --git a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java index 59b4d8e48..11299554e 100644 --- a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java @@ -141,7 +141,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService @Override public String insert(InsuranceArchivesSaveParam param) { SIArchivesBiz siArchivesBiz = new SIArchivesBiz(); - siArchivesBiz.insert(param, (long) user.getUID()); + siArchivesBiz.insert(param, user); return null; } diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index 8746fdd48..d49f971e2 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -1102,11 +1102,11 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { insuranceArchivesAccountPO.setOther(insuranceArchivesOtherSchemePO); insuranceArchivesAccountPO.setBaseInfo(insuranceArchivesBaseInfoPO); //校验福利基数是否符合上下限要求, - Boolean socialCheckBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesSocialSchemePO.getSocialSchemeId(), insuranceArchivesSocialSchemePO.getSocialPaymentBaseString()); + Boolean socialCheckBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesSocialSchemePO.getSocialSchemeId(), insuranceArchivesSocialSchemePO.getSocialPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue()); - Boolean fundCheckBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesFundSchemePO.getFundSchemeId(), insuranceArchivesFundSchemePO.getFundPaymentBaseString()); + Boolean fundCheckBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesFundSchemePO.getFundSchemeId(), insuranceArchivesFundSchemePO.getFundPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue()); - Boolean otherCheckBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesOtherSchemePO.getOtherSchemeId(), insuranceArchivesOtherSchemePO.getOtherPaymentBaseString()); + Boolean otherCheckBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesOtherSchemePO.getOtherSchemeId(), insuranceArchivesOtherSchemePO.getOtherPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue()); if (socialCheckBase && fundCheckBase && otherCheckBase) { insuranceArchivesAccountPOS.add(insuranceArchivesAccountPO); From e093c6aa7e10a3941e242821fe6a71975e18abe5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 6 Dec 2023 15:19:07 +0800 Subject: [PATCH 04/92] =?UTF-8?q?=E7=94=B3=E6=8A=A5=E6=98=8E=E7=BB=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../response/QueryAccountBalanceResponse.java | 6 +- .../remote/tax/client/DeclareClient.java | 11 + .../remote/tax/client/EmployeeClient.java | 2 +- .../remote/tax/client/TaxBaseClient.java | 8 - .../GetDeclareTaxResultFeedbackResponse.java | 540 ++++++++++++++++++ .../salary/web/EmployeeDeclareController.java | 2 + .../wrapper/EmployeeDeclareWrapper.java | 1 - test/ApiReturnDes.java | 18 + test/ParseTaxApi.java | 49 +- 9 files changed, 618 insertions(+), 19 deletions(-) create mode 100644 src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java create mode 100644 test/ApiReturnDes.java diff --git a/src/com/engine/salary/entity/taxapiflow/response/QueryAccountBalanceResponse.java b/src/com/engine/salary/entity/taxapiflow/response/QueryAccountBalanceResponse.java index 4c5cb33e3..584244e09 100644 --- a/src/com/engine/salary/entity/taxapiflow/response/QueryAccountBalanceResponse.java +++ b/src/com/engine/salary/entity/taxapiflow/response/QueryAccountBalanceResponse.java @@ -22,15 +22,15 @@ public class QueryAccountBalanceResponse { public static class Body { /** * 已购买总流量 - **/ + */ private String total; /** * 已使用流量 - **/ + */ private String used; /** * 剩余流量 - **/ + */ private String surplus; /** * 使用明细 diff --git a/src/com/engine/salary/remote/tax/client/DeclareClient.java b/src/com/engine/salary/remote/tax/client/DeclareClient.java index 3f5722b24..bcd390856 100644 --- a/src/com/engine/salary/remote/tax/client/DeclareClient.java +++ b/src/com/engine/salary/remote/tax/client/DeclareClient.java @@ -7,6 +7,14 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; +/** + * 个税申报客户端 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ public class DeclareClient extends TaxBaseClient{ public DeclareClient(Long taxAgentId) { super(taxAgentId); @@ -24,6 +32,9 @@ public class DeclareClient extends TaxBaseClient{ params.put("requestId", requestId); Map header = SingnatureData.initHeader(Collections.emptyMap(), apiConfig.getAppKey(), apiConfig.getAppSecret()); String res = HttpUtil.getRequest(url, header, params); + + + return res; } diff --git a/src/com/engine/salary/remote/tax/client/EmployeeClient.java b/src/com/engine/salary/remote/tax/client/EmployeeClient.java index 8ea3f8177..90da29385 100644 --- a/src/com/engine/salary/remote/tax/client/EmployeeClient.java +++ b/src/com/engine/salary/remote/tax/client/EmployeeClient.java @@ -15,7 +15,7 @@ import java.util.HashMap; import java.util.Map; /** - * 人员信息登记报送服务 + * 人员信息登记报送客户端 *

Copyright: Copyright (c) 2023

*

Company: 泛微软件

* diff --git a/src/com/engine/salary/remote/tax/client/TaxBaseClient.java b/src/com/engine/salary/remote/tax/client/TaxBaseClient.java index 38ba9862a..1eae80e88 100644 --- a/src/com/engine/salary/remote/tax/client/TaxBaseClient.java +++ b/src/com/engine/salary/remote/tax/client/TaxBaseClient.java @@ -8,14 +8,6 @@ import com.engine.salary.util.Sm4Utils; import com.engine.salary.util.db.MapperProxyFactory; import lombok.extern.slf4j.Slf4j; -/** - * 人员信息登记报送服务 - *

Copyright: Copyright (c) 2023

- *

Company: 泛微软件

- * - * @author qiantao - * @version 1.0 - **/ @Slf4j public class TaxBaseClient { private TaxDeclareApiConfigMapper getTaxDeclareApiConfigMapper() { diff --git a/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java b/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java new file mode 100644 index 000000000..45e773ab0 --- /dev/null +++ b/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java @@ -0,0 +1,540 @@ +package com.engine.salary.remote.tax.response.employee; + +import java.math.BigDecimal; +import java.util.List; + +public class GetDeclareTaxResultFeedbackResponse { + /** + * 企业名称 必填:是 + */ + private String qymc; + /** + * 税号 必填:是 + */ + private String nsrsbh; + /** + * 地区编号 必填:是 6位行政区划代码,精确到市级,例如:440100,参考省市区编码 + */ + private String areaid; + /** + * 部门编号 必填:是 + */ + private String bmbh; + /** + * 部门名称 必填:否 + */ + private String bmmc; + /** + * 算税月份 必填:是 + */ + private String skssq; + /** + * 综合所得 必填:是 见综合所得计算结果 + */ + private zhsd zhsd; +// /** +// * 分类所得 必填:是 见分类所得计算结果 +// */ +// private 对象 flsd; +// /** +// * 非居民所得 必填:是 见非居民所得计算结果 +// */ +// private 对象 fjmsd; +// /** +// * 限售股所得 必填:是 见限售股所得计算结果 +// */ +// private 对象 xsgsd; +// /** +// * 人员申报失败列表 必填:是 参考人员代报结果对象 +// */ +// private 数组 rysbsblb; + + + public class zhsd { + /** + * 人员代代报失败列表 参考人员代报结果对象 + */ + private List rysbsblb; + /** + * 正常工资薪金算税结果对象 参考综合所得算税结果对象 + */ + private zcgzxj zcgzxj; +// /** +// * 全年一次性奖金收入算税结果对象 参考综合所得算税结果对象 +// */ +// private 对象 qnycxjjsslb; +// /** +// * 稿酬所得算税结果对象 参考综合所得算税结果对象 +// */ +// private 对象 gcsdlb; +// /** +// * 一般劳务报酬算税结果对象 参考综合所得算税结果对象 +// */ +// private 对象 lwbclb; +// /** +// * 解除劳动合同一次性补偿金列表 参考综合所得算税结果对象 +// */ +// private 对象 jcldhtycxbcjlb; +// /** +// * 保险营销员薪金算税结果对象 参考综合所得算税结果对象 +// */ +// private 对象 bxyxy; +// /** +// * 证券经纪人薪金算税结果对象 参考综合所得算税结果对象 +// */ +// private 对象 zqjjr; +// /** +// * 特许权算税结果对象 参考综合所得算税结果对象 +// */ +// private 对象 txq; +// /** +// * 个人股权激励结果对象 参考综合所得算税结果对象 +// */ +// private 对象 grgqjl; +// /** +// * 企业年金结果对象 参考综合所得算税结果对象 +// */ +// private 对象 qynj; +// /** +// * 内退一次性补偿金 参考综合所得算税结果对象 +// */ +// private 对象 ntycxbcjlb; +// /** +// * 其他连续劳务报酬 参考综合所得算税结果对象 +// */ +// private 对象 qtlxlwbc; +// /** +// * 其他非连续劳务报酬 参考综合所得算税结果对象 +// */ +// private 对象 qtflxlwbc; +// /** +// * 提前退休一次性补贴 参考综合所得算税结果对象 +// */ +// private 对象 tqtxycxbt; +// /** +// * 央企负责人绩效薪金延期兑现收入和任期奖励 参考综合所得算税结果对象 +// */ +// private 对象 yqfzrsrhjl; +// /** +// * 法律援助劳务报酬 参考综合所得算税结果对象 +// */ +// private 对象 flyzlwbclb; + + + /** + * 人员代报结果对象 + */ + public class rydbjgdx { + /** + * 姓名 + */ + private String xm; + /** + * 证件类型名称 + */ + private String zzlx; + /** + * 证件号码 + */ + private String zzhm; + /** + * 代报状态 1 待报送 2 代报中 3 代报失败 4 代报成功 + */ + private String sbzt; + /** + * 人员认证状态 + */ + private String rzzt; + /** + * 失败原因 + */ + private String sbyy; + /** + * 专项代报状态 + */ + private String clzt; + /** + * 专项代报结果原因 + */ + private String cljgms; + } + + + /** + * 综合所得算税结果对象 + */ + public class zcgzxj { + /** + * 综合算税成功列表 参考综合所得输出结果报文 + */ + private List sscglb; + /** + * 综合算税失败列表 参考综合所得输出结果报文 + */ + private List sssblb; + /** + * 综合算税失败原因列表 参考算税失败原因对象 + */ + private List sssbyylb; + /** + * 参与综合算税总人数 + */ + private int sszrs; + /** + * 综合算税失败总人数 + */ + private int sssbrs; + /** + * 年金上限 + */ + private BigDecimal njsx; + /** + * 住房公积金上限 + */ + private BigDecimal zfgjjsx; + /** + * 年平均工资 + */ + private BigDecimal npjgz; + /** + * 企业上月是否已申报 0:上月未申报 1:上月已申报 2:上上月未申报 + */ + private String qysysfysb; + /** + * 专项代报状态 + */ + private String clzt; + /** + * 专项代报结果原因 + */ + private String cljgms; + + + /** + * 综合所得输出结果报文 + */ + public class zhsdscjgbw { + /** + * 是否明细申报 必填:否 是或者否 + */ + private String sfmxsb; + /** + * 姓名 必填:null 如果是汇总申报返回空 + */ + private String xm; + /** + * 证件类型 必填:null 见证件类型字典 + */ + private String zzlx; + /** + * 证件号码 必填:null 如果是汇总申报返回空 + */ + private String zzhm; + /** + * 任职受雇日期 必填:是 格式YYYY-MM-DD + */ + private String rzsgrq; + /** + * 离职日期 必填:否 格式YYYY-MM-DD + */ + private String lzrq; + /** + * 当期收入额 必填:是 不填写默认为0 + */ + private BigDecimal sre; + /** + * 当期免税收入 必填:null + */ + private BigDecimal mssd; + /** + * 基本养老保险 必填:null + */ + private BigDecimal jbylaobxf; + /** + * 基本医疗保险 必填:null + */ + private BigDecimal jbylbxf; + /** + * 失业保险 必填:null + */ + private BigDecimal sybxf; + /** + * 住房公积金 必填:null + */ + private BigDecimal zfgjj; + /** + * 子女教育支出 必填:null + */ + private BigDecimal znjyzc; + /** + * 赡养老人支出 必填:null + */ + private BigDecimal sylrzc; + /** + * 住房贷款利息支出 必填:null + */ + private BigDecimal zfdklxzc; + /** + * 住房租金支出 必填:null + */ + private BigDecimal zfzjzc; + /** + * 继续教育支出 必填:null + */ + private BigDecimal jxjyzc; + /** + * 非学历继续教育支出 必填:null + */ + private BigDecimal fxljxjyzc; + /** + * 3岁以下婴幼儿照护支出 必填:null + */ + private BigDecimal yyezhzc; + /** + * 年金 必填:null + */ + private BigDecimal nj; + /** + * 商业健康保险 必填:null + */ + private BigDecimal syjkbx; + /** + * 税延养老保险 必填:null + */ + private BigDecimal syylbx; + /** + * 其他 必填:null 按法律规定可以在税前扣除的项目 + */ + private BigDecimal qt; + /** + * 准予扣除的捐赠额 必填:null + */ + private BigDecimal zykcjze; + /** + * 减免税额 必填:null + */ + private BigDecimal jmse; + /** + * 备注 必填:null + */ + private String bz; + /** + * 减除费用 必填:null 正常工资薪金的减除费用。 对应保险营销员、证券经纪人的费用 + */ + private BigDecimal jcfy; + /** + * 其他扣除合计 必填:null + */ + private BigDecimal qtckhj; + /** + * 应纳税所得额 必填:null 正常工资薪金返回Null + */ + private BigDecimal ynssde; + /** + * 应纳税额 必填:null 正常工资薪金返回Null + */ + private BigDecimal ynse; + /** + * 已缴税额 必填:null 正常工资薪金返回Null + */ + private BigDecimal ykjse; + /** + * 应扣缴税额 必填:null 正常工资薪金返回Null + */ + private BigDecimal yingkjse; + /** + * 税率 必填:null + */ + private BigDecimal sl; + /** + * 速算扣除数 必填:null + */ + private BigDecimal sskcs; + /** + * 所得项目名称 必填:是 正常工资薪金;全年一次性奖金收入;稿酬所得;劳务报酬 + */ + private String sdxm; + /** + * 应补退税额 必填:null 应补退税额=累计应扣缴税额-累计已缴税额 + */ + private BigDecimal ybtse; + /** + * 累计收入额 必填:null + */ + private BigDecimal ljsre; + /** + * 累计免税收入额 必填:null + */ + private BigDecimal ljmssd; + /** + * 累计专项扣除额 必填:null 三险一金合计 + */ + private BigDecimal ljzxkce; + /** + * 累计专项附加扣除额 必填:null 专项附加合计 + */ + private BigDecimal ljzxfjkce; + /** + * 累计其他扣除额 必填:null + */ + private BigDecimal ljqtkce; + /** + * 累计减免税额 必填:null + */ + private BigDecimal ljjmse; + /** + * 累计减除费用额 必填:null 正常工资薪金累计减除费用 对应保险营销员、证券经纪人累计费用 + */ + private BigDecimal ljjcfye; + /** + * 累计月减除费用 必填:null 保险营销员、证券经纪人,其他连续劳务报酬的减除费用 + */ + private BigDecimal ljyjcfy; + /** + * 允许扣除税费 必填:null 保险营销员、证券经纪人 + */ + private BigDecimal yxkcsf; + /** + * 展业成本 必填:null 保险营销员、证券经纪人 + */ + private BigDecimal zycb; + /** + * 月减除费用 必填:null 保险营销员、证券经纪人,其他连续劳务报酬的减除费用 + */ + private BigDecimal yjcfy; + /** + * 累计应纳税所得额 必填:null + */ + private BigDecimal ljynssde; + /** + * 累计应纳税额 必填:null + */ + private BigDecimal ljynse; + /** + * 累计应扣缴税额 必填:null 累计应扣缴税额 = 累计应纳税额 - 累计减免税额 + */ + private BigDecimal ljyingkjse; + /** + * 累计已缴税额 必填:null + */ + private BigDecimal ljykjse; + /** + * 累计子女教育支出 必填:null + */ + private BigDecimal ljznjyzc; + /** + * 累计继续教育支出 必填:null + */ + private BigDecimal ljjxjyzc; + /** + * 累计非学历继续教育支持 必填:null + */ + private BigDecimal ljfxljxjyzc; + /** + * 累计学历继续教育支持 必填:null + */ + private BigDecimal ljxljxjyzc; + /** + * 累计住房租金支出 必填:null + */ + private BigDecimal ljzfzjzc; + /** + * 累计房屋贷款支出 必填:null + */ + private BigDecimal ljzfdklxzc; + /** + * 累计赡养老人支出 必填:null + */ + private BigDecimal ljsylrzc; + /** + * 累计3岁以下婴幼儿照护支出 必填:null + */ + private BigDecimal ljyyezhzc; + /** + * 累计准予扣除的捐赠额 必填:null + */ + private BigDecimal ljzykcjze; + /** + * 累计个人养老金 必填:null + */ + private BigDecimal ljgrylj; + /** + * 累计个人养老金校验码 必填:null + */ + private String ljgryljjym; + /** + * 企业上月是否已申报 必填:null 仅在两个月算税场景时使用,当前月分为N月: + * 0表示N-1月(上月)未申报 + * 1表示N-1月(上月)已申报 + * 2表示N-2月(上上个月)未申报 + */ + private String qysysfysb; + /** + * 员工在税局累计已扣缴的税额 必填:null 当前月分为N,如果N-1(上月)已申报,则返回N-1月员工在税局累计已扣缴的税额; + * 如果N-1月未申报,则返回N-2月工在税局累计已扣缴的税额; + */ + private BigDecimal ygzsjljykjse; + + /** + * 本月已累计扣除税额 必填:null 针对一月多次算税的场景字段 + */ + private BigDecimal byyljkjse; + /** + * 本次应扣缴税额 必填:null 针对一月多次算税的场景字段,本次应扣缴税额=本月应扣缴税额-本月已累计税额 + */ + private BigDecimal bcykjse; + /** + * 分摊年度数 必填:null + */ + private Integer ftnds; + /** + * 年减除费用 必填:null 默认为60000 + */ + private BigDecimal njcfy; + + } + + /** + * 4.4.1.3.2算税失败原因对象 + */ + public class sssbyydx { + /** + * 人员ID + */ + private Integer ygid; + /** + * 人员名称 + */ + private String xm; + /** + * 证件类型 见证件类型字典 + */ + private String zzlx; + /** + * 证件号码 + */ + private String zzhm; + /** + * 错误码 + */ + private String cwm; + /** + * 错误信息 + */ + private String cwxx; + /** + * 所得税的code + */ + private String sdxmdm; + /** + * 所得税的名称 + */ + private String sdxmmc; + } + + } + + } + + +} diff --git a/src/com/engine/salary/web/EmployeeDeclareController.java b/src/com/engine/salary/web/EmployeeDeclareController.java index 420863bbb..bd8b5bbb3 100644 --- a/src/com/engine/salary/web/EmployeeDeclareController.java +++ b/src/com/engine/salary/web/EmployeeDeclareController.java @@ -11,6 +11,7 @@ import com.engine.salary.util.ResponseResult; import com.engine.salary.util.page.PageInfo; import com.engine.salary.wrapper.EmployeeDeclareWrapper; import io.swagger.v3.oas.annotations.parameters.RequestBody; +import lombok.extern.slf4j.Slf4j; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; @@ -30,6 +31,7 @@ import java.util.Map; * @author qiantao * @version 1.0 **/ +@Slf4j public class EmployeeDeclareController { private EmployeeDeclareWrapper getEmployeeDeclareWrapper(User user) { diff --git a/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java b/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java index 5a5b907f7..57442d505 100644 --- a/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java +++ b/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java @@ -547,7 +547,6 @@ public class EmployeeDeclareWrapper extends Service { GetCompanyEmployeeResponse companyEmployee = employeeClient.getCompanyEmployee(param); - return companyEmployee; } diff --git a/test/ApiReturnDes.java b/test/ApiReturnDes.java new file mode 100644 index 000000000..e27dc5cc4 --- /dev/null +++ b/test/ApiReturnDes.java @@ -0,0 +1,18 @@ +import com.engine.salary.util.excel.ExcelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ApiReturnDes { + @ExcelProperty(index = 0) + public String name; + @ExcelProperty(index = 1) + public String mean; + @ExcelProperty(index = 2) + public String type; + @ExcelProperty(index = 3) + public String des; +} diff --git a/test/ParseTaxApi.java b/test/ParseTaxApi.java index 957f424d3..3e4b45d9d 100644 --- a/test/ParseTaxApi.java +++ b/test/ParseTaxApi.java @@ -7,7 +7,9 @@ import java.util.List; public class ParseTaxApi { public static void main(String[] args) { - readExcel("H:\\code\\salary\\resource\\sql\\ApiDes.xlsx"); +// readExcel("H:\\code\\salary\\resource\\sql\\ApiDes.xlsx"); + + readExcel2("H:\\code\\salary\\resource\\sql\\ApiDes.xlsx"); } @@ -27,17 +29,17 @@ public class ParseTaxApi { apiDesList.forEach(des -> { String type = des.getType(); - if(StringUtils.isNotEmpty(type)){ - if(type.startsWith("String")){ - type= "String"; + if (StringUtils.isNotEmpty(type)) { + if (type.startsWith("String")) { + type = "String"; } } String a = "/** * " + des.getMean() - +" " + + " " + "必填:" + des.getRequired() - +" " + des.getDes() + + " " + (des.getDes() == null ? "" : des.getDes()) + " */" + " private " + type + " " + des.getName() + ";"; System.out.println(a); @@ -50,6 +52,41 @@ public class ParseTaxApi { } + public static void readExcel2(String path) { + try { + // 获取文件输入流 + InputStream inputStream = new FileInputStream(path); + + List apiDesList = ExcelParseHelper.parse2Map(inputStream, ApiReturnDes.class, 0, 1, 4, "ApiDes.xlsx"); + + /** + * 字段名称 字段含义 字段类型 必填 说明 + * qtzzlx 其他证件类型 String(64) 条件必填 见证件类型字典 + * + * private String qtzzlx; + */ + + apiDesList.forEach(des -> { + String type = des.getType(); + if (StringUtils.isNotEmpty(type)) { + if (type.startsWith("String")) { + type = "String"; + } + } + + String a = "/** * " + + des.getMean() + + " " + (des.getDes() == null ? "" : des.getDes()) + + " */" + " private " + type + " " + des.getName() + ";"; + System.out.println(a); + + }); + + + } catch (Exception e) { + e.printStackTrace(); + } + } } From 6dca2a43800b08f8d4101f40ac6a2ff095f5e817 Mon Sep 17 00:00:00 2001 From: sy Date: Wed, 6 Dec 2023 15:38:19 +0800 Subject: [PATCH 05/92] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E5=BC=80=E5=90=AF?= =?UTF-8?q?=E5=BC=80=E5=85=B3=E6=97=B6=EF=BC=8C=E6=A1=A3=E6=A1=88=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=B1=95=E7=A4=BA=EF=BC=8C=E5=8C=BA=E5=88=86=E4=B8=AA?= =?UTF-8?q?=E4=BA=BA=E5=92=8C=E5=85=AC=E5=8F=B8=E7=A6=8F=E5=88=A9=E5=9F=BA?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 282 +++++++++++++++--- .../salary/web/SIArchivesController.java | 2 + 2 files changed, 241 insertions(+), 43 deletions(-) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index a58021031..eb4980815 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -13,6 +13,7 @@ import com.cloudstore.eccom.pc.table.WeaTableCheckboxpopedom; import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.cloudstore.eccom.result.WeaResultMsg; import com.engine.common.util.ServiceUtil; +import com.engine.salary.common.SalaryContext; import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.DataCollectionEmployee; @@ -1383,6 +1384,7 @@ public class SIArchivesBiz { * @return */ public List buildWeaTableColumns(List insuranceArchivesEmployeePOS, long operateId) { + Map> titleMap = buildColumnTitle(insuranceArchivesEmployeePOS, operateId); List list = new ArrayList<>(); WeaTableColumn nameColumn = new WeaTableColumn("100px", "姓名", "employeeName"); @@ -1422,6 +1424,9 @@ public class SIArchivesBiz { * @return */ public Map> buildColumnTitle(List insuranceArchivesEmployeePOS, long operateId) { + + boolean welBaseDiffSign = isDiffWelBase(); + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); Map> result = new HashMap<>(); @@ -1437,16 +1442,17 @@ public class SIArchivesBiz { Set fundSet = new HashSet<>(); Set otherSet = new HashSet<>(); + Set socialComSet = new HashSet<>(); + Set fundComSet = new HashSet<>(); + Set otherComSet = new HashSet<>(); + insuranceArchivesEmployeePOS.forEach(item -> { List socialList = socialSchemeMapper.getSocialByEmployeeId(Collections.singletonList(item.getEmployeeId())); encryptUtil.decryptList(socialList, InsuranceArchivesSocialSchemePO.class); -// InsuranceArchivesSocialSchemePO socialItem = socialList.size() != 0 ? socialList.get(0) : null; List fundList = fundSchemeMapper.getFundByEmployeeId(Collections.singletonList(item.getEmployeeId())); encryptUtil.decryptList(fundList, InsuranceArchivesFundSchemePO.class); -// InsuranceArchivesFundSchemePO fundItem = fundList.size() != 0 ? fundList.get(0) : null; List otherList = otherSchemeMapper.getOtherByEmployeeId(Collections.singletonList(item.getEmployeeId())); encryptUtil.decryptList(otherList, InsuranceArchivesOtherSchemePO.class); -// InsuranceArchivesOtherSchemePO otherItem = otherList.size() != 0 ? otherList.get(0) : null; if (socialList.size() > 0) { for (InsuranceArchivesSocialSchemePO socialSchemePO : socialList) { @@ -1455,6 +1461,14 @@ public class SIArchivesBiz { if (socialJson != null) { socialJson.forEach((k, v) -> socialSet.add(k)); } + //如果需要区分个人和公司福利基数 + if (welBaseDiffSign) { + Map socialComJson = JSON.parseObject(socialSchemePO.getSocialPaymentComBaseString(), new TypeReference>() { + }); + if (socialComJson != null) { + socialComJson.forEach((k, v) -> socialComSet.add(k)); + } + } } } @@ -1465,6 +1479,14 @@ public class SIArchivesBiz { if (fundJson != null) { fundJson.forEach((k, v) -> fundSet.add(k)); } + //如果需要区分个人和公司福利基数 + if (welBaseDiffSign) { + Map fundComJson = JSON.parseObject(fundSchemePO.getFundPaymentComBaseString(), new TypeReference>() { + }); + if (fundComJson != null) { + fundComJson.forEach((k, v) -> fundComSet.add(k)); + } + } } } @@ -1475,11 +1497,20 @@ public class SIArchivesBiz { if (otherJson != null) { otherJson.forEach((k, v) -> otherSet.add(k)); } + //如果需要区分个人和公司福利基数 + if (welBaseDiffSign) { + Map otherComJson = JSON.parseObject(otherSchemePO.getOtherPaymentComBaseString(), new TypeReference>() { + }); + if (otherComJson != null) { + otherComJson.forEach((k, v) -> otherComSet.add(k)); + } + } } } }); Map socialMap = new HashMap<>(); + Map socialComMap = new HashMap<>(); Map socialCollect = new HashMap<>(); Map customSocial = iCategoryMapper.listByWelfareType(WelfareTypeEnum.SOCIAL_SECURITY.getValue(), null) .stream().collect(Collectors.toMap(ICategoryPO::getId, Function.identity())); @@ -1489,34 +1520,89 @@ public class SIArchivesBiz { socialCollect.putAll(customSocial); socialCollect.putAll(sysSocial); - socialSet.forEach(item -> { - if (socialCollect.containsKey(Long.valueOf(item))) { - socialMap.put(item, socialCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数"); - } - }); +// socialSet.forEach(item -> { +// if (socialCollect.containsKey(Long.valueOf(item))) { +// socialMap.put(item, socialCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数"); +// } +// }); + if (welBaseDiffSign) { + socialSet.forEach(item -> { + if (socialCollect.containsKey(Long.valueOf(item))) { + socialMap.put(item + "per", socialCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数" + "个人"); + } + }); + socialComSet.forEach(item -> { + if (socialCollect.containsKey(Long.valueOf(item))) { + socialComMap.put(item + "com", socialCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数" + "单位"); + } + }); + } else { + socialSet.forEach(item -> { + if (socialCollect.containsKey(Long.valueOf(item))) { + socialMap.put(item, socialCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数"); + } + }); + } Map fundMap = new HashMap<>(); + Map fundComMap = new HashMap<>(); Map fundCollect = new HashMap<>(); Map customFund = iCategoryMapper.listByWelfareType(WelfareTypeEnum.ACCUMULATION_FUND.getValue(), null).stream().collect(Collectors.toMap(ICategoryPO::getId, Function.identity())); Map sysFund = iCategoryMapper.listByWelfareType(WelfareTypeEnum.ACCUMULATION_FUND.getValue(), DataTypeEnum.SYSTEM.getValue()).stream().collect(Collectors.toMap(ICategoryPO::getId, Function.identity())); fundCollect.putAll(customFund); fundCollect.putAll(sysFund); - fundSet.forEach(item -> { - if (fundCollect.containsKey(Long.valueOf(item))) { - fundMap.put(item, fundCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数"); - } - }); +// fundSet.forEach(item -> { +// if (fundCollect.containsKey(Long.valueOf(item))) { +// fundMap.put(item, fundCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数"); +// } +// }); + if (welBaseDiffSign) { + fundSet.forEach(item -> { + if (fundCollect.containsKey(Long.valueOf(item))) { + fundMap.put(item + "per", fundCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数" + "个人"); + } + }); + fundComSet.forEach(item -> { + if (fundCollect.containsKey(Long.valueOf(item))) { + fundComMap.put(item + "com", fundCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数" + "单位"); + } + }); + } else { + fundSet.forEach(item -> { + if (fundCollect.containsKey(Long.valueOf(item))) { + fundMap.put(item, fundCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数"); + } + }); + } Map otherMap = new HashMap<>(); + Map otherComMap = new HashMap<>(); Map otherCollect = new HashMap<>(); Map customOther = iCategoryMapper.listByWelfareType(WelfareTypeEnum.OTHER.getValue(), null).stream().collect(Collectors.toMap(ICategoryPO::getId, Function.identity())); Map sysOther = iCategoryMapper.listByWelfareType(WelfareTypeEnum.OTHER.getValue(), DataTypeEnum.SYSTEM.getValue()).stream().collect(Collectors.toMap(ICategoryPO::getId, Function.identity())); otherCollect.putAll(customOther); otherCollect.putAll(sysOther); - otherSet.forEach(item -> { - if (otherCollect.containsKey(Long.valueOf(item))) { - otherMap.put(item, otherCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数"); - } - }); - +// otherSet.forEach(item -> { +// if (otherCollect.containsKey(Long.valueOf(item))) { +// otherMap.put(item, otherCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数"); +// } +// }); + if (welBaseDiffSign) { + otherSet.forEach(item -> { + if (otherCollect.containsKey(Long.valueOf(item))) { + otherMap.put(item + "per", otherCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数" + "个人"); + } + }); + otherComSet.forEach(item -> { + if (otherCollect.containsKey(Long.valueOf(item))) { + otherComMap.put(item + "com", otherCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数" + "单位"); + } + }); + } else { + otherSet.forEach(item -> { + if (otherCollect.containsKey(Long.valueOf(item))) { + otherMap.put(item, otherCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数"); + } + }); + } // map根据key排序 LinkedHashMap socialMapWithAscKey = socialMap.entrySet().stream() .sorted(Map.Entry.comparingByKey()) @@ -1530,6 +1616,23 @@ public class SIArchivesBiz { .sorted(Map.Entry.comparingByKey()) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new)); + if (welBaseDiffSign) { + LinkedHashMap socialComMapWithAscKey = socialComMap.entrySet().stream() + .sorted(Map.Entry.comparingByKey()) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, + LinkedHashMap::new)); + LinkedHashMap fundComMapWithAscKey = fundComMap.entrySet().stream() + .sorted(Map.Entry.comparingByKey()) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, + LinkedHashMap::new)); + LinkedHashMap otherComMapWithAscKey = otherComMap.entrySet().stream() + .sorted(Map.Entry.comparingByKey()) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, + LinkedHashMap::new)); + socialMapWithAscKey.putAll(socialComMapWithAscKey); + fundMapWithAscKey.putAll(fundComMapWithAscKey); + otherMapWithAscKey.putAll(otherComMapWithAscKey); + } result.put(WelfareTypeEnum.SOCIAL_SECURITY.getValue(), socialMapWithAscKey); result.put(WelfareTypeEnum.ACCUMULATION_FUND.getValue(), fundMapWithAscKey); @@ -1552,6 +1655,9 @@ public class SIArchivesBiz { * @return */ public List> buildTableData(List insuranceArchivesEmployeePOS, boolean export) { + + boolean welBaseDiffSign = isDiffWelBase(); + List taxAgentPOS = getTaxAgentMapper().listAll(); Map longTaxAgentPOMap = SalaryEntityUtil.convert2Map(taxAgentPOS, TaxAgentPO::getId); @@ -1599,16 +1705,39 @@ public class SIArchivesBiz { map.put("socialName", insuranceSchemeMapper.querySchemeName(socialItem.getSocialSchemeId())); Map socialJson = JSON.parseObject(socialItem.getSocialPaymentBaseString(), new TypeReference>() { }); - if (socialJson != null) { - //查询该福利方案下开启缴纳的福利项 - List insuranceIdList = payInsuranceIds(socialItem.getSocialSchemeId()); - socialJson.forEach((k, v) -> { - if (insuranceIdList.contains(Long.valueOf(k))) { - map.put(k, v); - } + if (welBaseDiffSign) { + if (socialJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = payInsuranceIds(socialItem.getSocialSchemeId(), PaymentScopeEnum.SCOPE_PERSON.getValue()); + socialJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + map.put(k + "per", v); + } + }); + } + Map socialComJson = JSON.parseObject(socialItem.getSocialPaymentComBaseString(), new TypeReference>() { }); -// map.putAll(socialJson); + if (socialComJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = payInsuranceIds(socialItem.getSocialSchemeId(),PaymentScopeEnum.SCOPE_COMPANY.getValue()); + socialComJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + map.put(k + "com", v); + } + }); + } + } else { + if (socialJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = payInsuranceIds(socialItem.getSocialSchemeId()); + socialJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + map.put(k, v); + } + }); + } } + map.put("socialAccount", socialItem.getSocialAccount()); map.put("socialStartTime", socialItem.getSocialStartTime()); map.put("socialEndTime", socialItem.getSocialEndTime()); @@ -1618,16 +1747,39 @@ public class SIArchivesBiz { map.put("fundAccount", fundItem.getFundAccount()); Map fundJson = JSON.parseObject(fundItem.getFundPaymentBaseString(), new TypeReference>() { }); - if (fundJson != null) { - //查询该福利方案下开启缴纳的福利项 - List insuranceIdList = payInsuranceIds(fundItem.getFundSchemeId()); - fundJson.forEach((k, v) -> { - if (insuranceIdList.contains(Long.valueOf(k))) { - map.put(k, v); - } + if (welBaseDiffSign) { + if (fundJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = payInsuranceIds(fundItem.getFundSchemeId(),PaymentScopeEnum.SCOPE_PERSON.getValue()); + fundJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + map.put(k + "per", v); + } + }); + } + Map fundComJson = JSON.parseObject(fundItem.getFundPaymentComBaseString(), new TypeReference>() { }); -// map.putAll(fundJson); + if (fundComJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = payInsuranceIds(fundItem.getFundSchemeId(),PaymentScopeEnum.SCOPE_COMPANY.getValue()); + fundComJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + map.put(k + "com", v); + } + }); + } + } else { + if (fundJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = payInsuranceIds(fundItem.getFundSchemeId()); + fundJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + map.put(k, v); + } + }); + } } + map.put("supplementFundAccount", fundItem.getSupplementFundAccount()); map.put("fundStartTime", fundItem.getFundStartTime()); map.put("fundEndTime", fundItem.getFundEndTime()); @@ -1637,16 +1789,39 @@ public class SIArchivesBiz { map.put("otherName", insuranceSchemeMapper.querySchemeName(otherItem.getOtherSchemeId())); Map otherJson = JSON.parseObject(otherItem.getOtherPaymentBaseString(), new TypeReference>() { }); - if (otherJson != null) { - //查询该福利方案下开启缴纳的福利项 - List insuranceIdList = payInsuranceIds(otherItem.getOtherSchemeId()); - otherJson.forEach((k, v) -> { - if (insuranceIdList.contains(Long.valueOf(k))) { - map.put(k, v); - } + if (welBaseDiffSign) { + if (otherJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = payInsuranceIds(otherItem.getOtherSchemeId(),PaymentScopeEnum.SCOPE_PERSON.getValue()); + otherJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + map.put(k + "per", v); + } + }); + } + Map otherComJson = JSON.parseObject(otherItem.getOtherPaymentComBaseString(), new TypeReference>() { }); -// map.putAll(otherJson); + if (otherComJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = payInsuranceIds(otherItem.getOtherSchemeId(),PaymentScopeEnum.SCOPE_COMPANY.getValue()); + otherComJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + map.put(k + "com", v); + } + }); + } + } else { + if (otherJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = payInsuranceIds(otherItem.getOtherSchemeId()); + otherJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + map.put(k, v); + } + }); + } } + map.put("otherStartTime", otherItem.getOtherStartTime()); map.put("otherEndTime", otherItem.getOtherEndTime()); } @@ -1669,6 +1844,19 @@ public class SIArchivesBiz { } return insuranceIdList; } + + public List payInsuranceIds(Long socialSchemeId, Integer paymentScope) { + //查询该福利方案下开启缴纳的福利项 + List detailPOS = getInsuranceSchemeDetailMapper().queryListBySchemeId(socialSchemeId); + List insuranceIdList = new ArrayList<>(); + if (detailPOS != null && detailPOS.size() > 0) { + //开启缴纳的 + insuranceIdList = detailPOS.stream().filter(f -> f.getIsPayment().equals(IsPaymentEnum.YES.getValue()) && f.getPaymentScope().equals(paymentScope)) + .map(InsuranceSchemeDetailPO::getInsuranceId).collect(Collectors.toList()); + } + return insuranceIdList; + } + /** * 获取信息提示 */ @@ -2296,4 +2484,12 @@ public class SIArchivesBiz { list.add(new WeaTableColumn("150px", "操作时间", "operatorTime")); return list; } + + public boolean isDiffWelBase() { + User user = (User) SalaryContext.get().getValue("user"); + //判断是否要区分个人和单位福利基数 + SalarySysConfPO welBaseDiff = getSalarySysConfService(user).getOneByCode(WEL_BASE_DIFF_BY_PER_AND_COM); + + return welBaseDiff != null && welBaseDiff.getConfValue().equals(OpenEnum.OPEN.getValue()); + } } diff --git a/src/com/engine/salary/web/SIArchivesController.java b/src/com/engine/salary/web/SIArchivesController.java index ecc61b1b5..e0b3bfe89 100644 --- a/src/com/engine/salary/web/SIArchivesController.java +++ b/src/com/engine/salary/web/SIArchivesController.java @@ -2,6 +2,7 @@ package com.engine.salary.web; import com.engine.common.util.ParamUtil; import com.engine.common.util.ServiceUtil; +import com.engine.salary.common.SalaryContext; import com.engine.salary.entity.siarchives.dto.InsuranceArchivesBaseHistoryDTO; import com.engine.salary.entity.siarchives.param.InsuranceArchivesListParam; import com.engine.salary.entity.siarchives.param.InsuranceArchivesSaveParam; @@ -33,6 +34,7 @@ import java.util.Map; public class SIArchivesController { private SIArchivesService getService(User user) { + SalaryContext.get().setValue("user",user); return ServiceUtil.getService(SIArchivesServiceImpl.class,user); } From 2a02e17c15e57958e48a68fd099a033c7bf4201d Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 6 Dec 2023 15:55:47 +0800 Subject: [PATCH 06/92] temp --- .../salary/service/impl/SalaryAcctResultServiceImpl.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 734f2ade4..f051dfefd 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -1151,12 +1151,13 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe }); // 入库 if (CollectionUtils.isNotEmpty(needUpdateList)) { - getSalaryAcctResultMapper().batchUpdate(needUpdateList); - } + // 数据加密 + encryptUtil.encryptList(needUpdateList, SalaryAcctResultPO.class); + List> partition = Lists.partition(needUpdateList, 100); + partition.forEach(getSalaryAcctResultMapper()::batchUpdate); - if (CollectionUtils.isNotEmpty(needInsertList)) { - getSalaryAcctResultMapper().batchInsert(needInsertList); } + batchSave(needInsertList); } } From 419baeb8cd41050570327b61d740d16b949728b6 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 6 Dec 2023 16:05:08 +0800 Subject: [PATCH 07/92] =?UTF-8?q?=E9=B2=81=E6=8E=A7=E6=95=B0=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIAccountBiz.java | 1 - .../salary/component/WeaTableColumnGroup.java | 12 ++++ .../salaryacct/bo/SalaryAcctRecordBO.java | 3 + .../salaryacct/bo/SalaryAcctResultBO.java | 23 ++++---- .../dto/SalaryAcctResultDetailDTO.java | 3 + .../param/SalaryAcctResultBatchEditParam.java | 4 +- .../SalaryAcctResultBatchUpdateParam.java | 2 +- .../service/SalaryAcctRecordService.java | 2 +- .../service/SalaryAcctReportService.java | 2 + .../service/SalaryAcctResultService.java | 4 +- .../impl/SalaryAcctRecordServiceImpl.java | 3 +- .../impl/SalaryAcctReportServiceImpl.java | 13 +++++ .../impl/SalaryAcctResultServiceImpl.java | 58 +++++++++++++++---- .../salary/web/SalaryAcctController.java | 10 ++-- .../wrapper/SalaryAcctRecordWrapper.java | 2 +- .../wrapper/SalaryAcctResultWrapper.java | 6 +- 16 files changed, 109 insertions(+), 39 deletions(-) diff --git a/src/com/engine/salary/biz/SIAccountBiz.java b/src/com/engine/salary/biz/SIAccountBiz.java index 4ba839d57..4e5d4378e 100644 --- a/src/com/engine/salary/biz/SIAccountBiz.java +++ b/src/com/engine/salary/biz/SIAccountBiz.java @@ -7,7 +7,6 @@ import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.cache.SalaryCacheKey; import com.engine.salary.constant.SalaryDefaultTenantConstant; -import com.engine.salary.encrypt.AESEncryptUtil; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.progress.ProgressDTO; import com.engine.salary.entity.siaccount.dto.InsuranceAccountViewListDTO; diff --git a/src/com/engine/salary/component/WeaTableColumnGroup.java b/src/com/engine/salary/component/WeaTableColumnGroup.java index dac9a3569..0dcd305af 100644 --- a/src/com/engine/salary/component/WeaTableColumnGroup.java +++ b/src/com/engine/salary/component/WeaTableColumnGroup.java @@ -18,6 +18,11 @@ public class WeaTableColumnGroup extends WeaTableColumn { */ private Integer pattern; + /** + * 字段类型 + */ + private String dataType; + private List children; public WeaTableColumnGroup() { @@ -40,6 +45,13 @@ public class WeaTableColumnGroup extends WeaTableColumn { this.pattern = pattern; } + public WeaTableColumnGroup(String width, String text, String column, String lockStatus, Integer pattern, String dataType) { + super(width, text, column); + this.lockStatus = lockStatus; + this.pattern = pattern; + this.dataType = dataType; + } + public WeaTableColumnGroup(String width, String text, String column, List children) { super(width, text, column); diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java index f07aa7d36..11a44f311 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java @@ -67,13 +67,16 @@ public class SalaryAcctRecordBO { btnList.add(new WeaTableOperate("删除", null, "1")); } btnList.add(new WeaTableOperate("归档", null, "2")); + btnList.add(new WeaTableOperate("结转", null, "6")); } else if (SalaryAcctRecordStatusEnum.ARCHIVED == salaryAcctRecordStatusEnum && ( salarySendMap.get(salaryAcctRecordPO.getId()) ==Boolean.TRUE ) ){ btnList.add(new WeaTableOperate("查看", null, "3")); btnList.add(new WeaTableOperate("重新核算", null, "4")); btnList.add(new WeaTableOperate("回算", null, "5")); + btnList.add(new WeaTableOperate("结转", null, "6")); } else { btnList.add(new WeaTableOperate("查看", null, "3")); btnList.add(new WeaTableOperate("重新核算", null, "4")); + btnList.add(new WeaTableOperate("结转", null, "6")); } return SalaryAcctRecordListDTO.builder() .id(salaryAcctRecordPO.getId()) diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java index 29cae5d4a..bfa7210cc 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java @@ -141,9 +141,9 @@ public class SalaryAcctResultBO { List childrenColumns = Lists.newArrayList(); for (SalarySobItemDTO salarySobItemDTO : salarySobItemGroupDTO.getItems()) { if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) { - childrenColumns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern())); + childrenColumns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType())); } else { - childrenColumns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern())); + childrenColumns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType())); } } WeaTableColumnGroup weaTableColumnWapper = new WeaTableColumnGroup("150", salarySobItemGroupDTO.getName(), String.valueOf(salarySobItemGroupDTO.getId()), childrenColumns); @@ -152,18 +152,18 @@ public class SalaryAcctResultBO { // 没有分类的薪资项目 for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getItems()) { if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) { - columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern())); + columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType())); } else { - columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern())); + columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType())); } } // 回算的薪资项目 for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getBackCalcItems()) { if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) { - columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern())); + columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType())); } else { - columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern())); + columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType())); } } @@ -378,7 +378,8 @@ public class SalaryAcctResultBO { List salarySobBackItemPOS, List salaryBackItemPOS, Map salaryBackItemFormula, - Map formulaContentMap) { + Map formulaContentMap, + List lockItems) { // 员工信息字段 Map employeeFieldValueMap = SalaryAcctFormulaBO.convert2FormulaEmployee(simpleEmployee); @@ -407,7 +408,7 @@ public class SalaryAcctResultBO { List groupItems = salarySobItemPOMap.getOrDefault(groupPO.getId(),Collections.emptyList()); if(CollectionUtils.isNotEmpty(groupItems)){ List items = groupItems.stream() - .map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap, formulaContentMap)) + .map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap, formulaContentMap, lockItems)) .collect(Collectors.toList()); itemsByGroup.add(SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemByGroupDTO.builder() .salarySobItemGroupId(groupPO.getId()) @@ -420,7 +421,7 @@ public class SalaryAcctResultBO { List noGroupItems = salarySobItemPOMap.getOrDefault(0L, Collections.emptyList()); if(CollectionUtils.isNotEmpty(noGroupItems)){ List items = noGroupItems.stream() - .map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap, formulaContentMap)) + .map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap, formulaContentMap, lockItems)) .collect(Collectors.toList()); itemsByGroup.add(SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemByGroupDTO.builder() .salarySobItemGroupId(0L) @@ -492,7 +493,8 @@ public class SalaryAcctResultBO { private static SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemDTO convert2SalaryAcctResultDetailItemDTO(SalarySobItemPO salarySobItemPO, SalaryItemPO salaryItemPO, Map resultValueMap, - Map formulaContentMap) { + Map formulaContentMap, + List lockItems) { SalaryValueTypeEnum salaryValueTypeEnum = SalaryValueTypeEnum.parseByValue(Optional.ofNullable(salarySobItemPO).map(SalarySobItemPO::getValueType).orElse(0)); String itemFormulaContent; @@ -512,6 +514,7 @@ public class SalaryAcctResultBO { // .canEdit(Objects.equals(Optional.ofNullable(salaryItemPO).map(SalaryItemPO::getUseInEmployeeSalary).orElse(0), 0)) .canEdit(true) .pattern(salarySobItemPO.getPattern()) + .lockStatus(lockItems.contains(salarySobItemPO.getSalaryItemId()) ? LockStatusEnum.LOCK.getValue() : LockStatusEnum.UNLOCK.getValue()) .build(); } diff --git a/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctResultDetailDTO.java b/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctResultDetailDTO.java index 1929494a9..8fadd2670 100644 --- a/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctResultDetailDTO.java +++ b/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctResultDetailDTO.java @@ -71,6 +71,9 @@ public class SalaryAcctResultDetailDTO { // 保留小数位数 private Integer pattern; + + // 锁定状态 + private String lockStatus; } @Data diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchEditParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchEditParam.java index 21922043c..487527d51 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchEditParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchEditParam.java @@ -28,10 +28,10 @@ public class SalaryAcctResultBatchEditParam { @Builder @AllArgsConstructor @NoArgsConstructor - public class resultValue { + public static class resultValue { // 薪资核算人员id - private Long salaryAcctEmpId; + private Long id; // 薪资项目值 private List items; diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchUpdateParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchUpdateParam.java index 8eabde532..141b3a004 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchUpdateParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchUpdateParam.java @@ -29,7 +29,7 @@ public class SalaryAcctResultBatchUpdateParam { private Long salaryItemId; // 薪资核算人员id - private List salaryAcctEmpIdList; + private List idList; //薪资项目值 private String value; diff --git a/src/com/engine/salary/service/SalaryAcctRecordService.java b/src/com/engine/salary/service/SalaryAcctRecordService.java index 319552b78..9c3ba4f8c 100644 --- a/src/com/engine/salary/service/SalaryAcctRecordService.java +++ b/src/com/engine/salary/service/SalaryAcctRecordService.java @@ -209,7 +209,7 @@ public interface SalaryAcctRecordService { List listSome(SalaryAcctRecordPO po); /** - * 鲁控数字-结账 + * 鲁控数字-结转 * @param salaryAcctRecordId */ void lkszJz(Long salaryAcctRecordId); diff --git a/src/com/engine/salary/service/SalaryAcctReportService.java b/src/com/engine/salary/service/SalaryAcctReportService.java index c4c1636db..6cf5caa12 100644 --- a/src/com/engine/salary/service/SalaryAcctReportService.java +++ b/src/com/engine/salary/service/SalaryAcctReportService.java @@ -21,6 +21,8 @@ public interface SalaryAcctReportService { */ void batchSave(Collection pos); + void lkszBatchSave(Collection pos); + /** * 根据核算记录删除 * @param salaryAcctRecordIds diff --git a/src/com/engine/salary/service/SalaryAcctResultService.java b/src/com/engine/salary/service/SalaryAcctResultService.java index 871188360..ec8efb878 100644 --- a/src/com/engine/salary/service/SalaryAcctResultService.java +++ b/src/com/engine/salary/service/SalaryAcctResultService.java @@ -206,10 +206,10 @@ public interface SalaryAcctResultService { Boolean checkAuth(Long salaryAcctRecordId); /** - * 鲁控数字薪资核算结果批量更新 + * 薪资核算结果批量更新 * @param param */ - void lkszBatchUpdate(SalaryAcctResultBatchUpdateParam param); + void batchUpdate(SalaryAcctResultBatchUpdateParam param); /** * 鲁控数字薪资核算结果批量编辑 diff --git a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java index 1a189f762..ee596af21 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java @@ -906,7 +906,6 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe // 入库 getSalaryAcctResultService(user).batchSave(needInsertResultList); - getSalaryAcctReportService(user).batchSave(needInsertResultReportList); - + getSalaryAcctReportService(user).lkszBatchSave(needInsertResultReportList); } } diff --git a/src/com/engine/salary/service/impl/SalaryAcctReportServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctReportServiceImpl.java index 8371241fb..43b7160a8 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctReportServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctReportServiceImpl.java @@ -62,6 +62,19 @@ public class SalaryAcctReportServiceImpl extends Service implements SalaryAcctRe } } + @Override + public void lkszBatchSave(Collection pos) { + if (CollectionUtils.isNotEmpty(pos)) { + SalarySysConfPO disPlay = getSalarySysConfService(user).getOneByCode(DISPLAY_EMP_INFO_REPORT); + //默认不显示,关闭状态 + if (disPlay == null || OpenEnum.OFF.getValue().equals(disPlay.getConfValue())) { + pos = encryptUtil.encryptList(new ArrayList<>(pos), SalaryAcctResultReportPO.class); + } + List> partition = Lists.partition((List) pos, 100); + partition.forEach(getSalaryAcctResultReportMapper()::batchInsert); + } + } + @Override public void deleteBySalaryAcctRecordIds(Collection salaryAcctRecordIds) { if (CollectionUtils.isNotEmpty(salaryAcctRecordIds)) { diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index f051dfefd..34148f289 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -54,6 +54,7 @@ import com.google.common.collect.Sets; import com.weaver.util.threadPool.ThreadPoolUtil; import com.weaver.util.threadPool.constant.ModulePoolEnum; import com.weaver.util.threadPool.entity.LocalRunnable; +import dm.jdbc.util.IdGenerator; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; @@ -301,9 +302,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe TaxAgentPO taxAgent = getTaxAgentService(user).getById(salaryAcctEmployeePO.getTaxAgentId()); // 查询公式 Map formulaContentMap = getSalaryAcctResultService(user).getColumnBySalaryAcctRecordId(salaryAcctEmployeePO.getSalaryAcctRecordId()); + List lockItems = byId.getLockSalaryItemIds() == null ? Collections.emptyList() : byId.getLockSalaryItemIds(); // 转换成薪资核算结果详情dto - return SalaryAcctResultBO.convert2DetailDTO(simpleEmployee, taxAgent, salaryAcctEmployeePO, salarySobEmpFieldPOS, salarySobItemGroupPOS, salarySobItemPOS, salaryItemPOS, salaryAcctResultPOS, salarySobBackItemPOList, salaryBackItemPOS, salaryBackItemFormula, formulaContentMap); + return SalaryAcctResultBO.convert2DetailDTO(simpleEmployee, taxAgent, salaryAcctEmployeePO, salarySobEmpFieldPOS, salarySobItemGroupPOS, salarySobItemPOS, salaryItemPOS, salaryAcctResultPOS, salarySobBackItemPOList, salaryBackItemPOS, salaryBackItemFormula, formulaContentMap, lockItems); } @Override @@ -1093,7 +1095,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe } @Override - public void lkszBatchUpdate(SalaryAcctResultBatchUpdateParam param) { + public void batchUpdate(SalaryAcctResultBatchUpdateParam param) { ValidUtil.doValidator(param); SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); @@ -1107,12 +1109,12 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe throw new SalaryRunTimeException("该账套不包含该薪资项目或已被删除,请先检查账套"); } // 获取需要更新的核算人员信息 - List salaryAcctEmployeePOList = Collections.emptyList(); - if (CollectionUtils.isEmpty(param.getSalaryAcctEmpIdList())) { + List salaryAcctEmployeePOList = new ArrayList<>(); + if (CollectionUtils.isEmpty(param.getIdList())) { // 没有选择核算人员,更新核算记录中所有人员 salaryAcctEmployeePOList.addAll(getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordPO.getId())); } else { - salaryAcctEmployeePOList.addAll(getSalaryAcctEmployeeService(user).listByIds(param.getSalaryAcctEmpIdList())); + salaryAcctEmployeePOList.addAll(getSalaryAcctEmployeeService(user).listByIds(param.getIdList())); } if (CollectionUtils.isNotEmpty(salaryAcctEmployeePOList)) { @@ -1120,9 +1122,12 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe // 查询薪资核算结果 List resultPOS = listByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmployeeIdList, Collections.singleton(param.getSalaryItemId())); Map salaryAcctResultPOMap = SalaryEntityUtil.convert2Map(resultPOS, SalaryAcctResultPO::getSalaryAcctEmpId); + List dataCollectionEmployees = getSalaryEmployeeService(user).listAllForReport(); + Map emps = SalaryEntityUtil.convert2Map(dataCollectionEmployees, DataCollectionEmployee::getEmployeeId); List needUpdateList = new ArrayList<>(); List needInsertList = new ArrayList<>(); Date now = new Date(); + List salaryAcctResultReportPOS = new ArrayList<>(); salaryAcctEmployeePOList.forEach(salaryAcctEmployeePO -> { if (salaryAcctResultPOMap.containsKey(salaryAcctEmployeePO.getId())) { // 更新 @@ -1139,7 +1144,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe .salaryAcctEmpId(salaryAcctEmployeePO.getId()) .employeeId(salaryAcctEmployeePO.getEmployeeId()) .taxAgentId(salaryAcctEmployeePO.getTaxAgentId()) - .resultValue(StringUtils.trim(param.getValue())) + .resultValue(param.getValue()) .originResultValue("") .creator(Long.valueOf(user.getUID())) .createTime(now) @@ -1148,16 +1153,47 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) .build()); } + + // 报表 + SalaryAcctResultReportPO po = SalaryAcctResultReportPO.builder() + .id(IdGenerator.generate()) + .salarySobId(salaryAcctRecordPO.getSalarySobId()) + .salaryItemId(param.getSalaryItemId()) + .salaryAcctRecordId(param.getSalaryAcctRecordId()) + .salaryAcctEmpId(salaryAcctEmployeePO.getId().toString()) + .employeeId(salaryAcctEmployeePO.getEmployeeId().toString()) + .taxAgentId(salaryAcctEmployeePO.getTaxAgentId()) + .resultValue(param.getValue()) + .creator(Long.valueOf(user.getUID())) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + DataCollectionEmployee dataCollectionEmployee = emps.get(salaryAcctEmployeePO.getEmployeeId()); + if (dataCollectionEmployee != null) { + po.setDepartmentId(dataCollectionEmployee.getDepartmentId()); + po.setSubcompanyId(dataCollectionEmployee.getSubcompanyid()); + po.setCostcenterId(dataCollectionEmployee.getCostcenterId()); + po.setJobtitleId(dataCollectionEmployee.getJobtitleId()); + po.setLocationId(dataCollectionEmployee.getLocationId()); + } + salaryAcctResultReportPOS.add(po); }); + // 入库 if (CollectionUtils.isNotEmpty(needUpdateList)) { // 数据加密 encryptUtil.encryptList(needUpdateList, SalaryAcctResultPO.class); List> partition = Lists.partition(needUpdateList, 100); partition.forEach(getSalaryAcctResultMapper()::batchUpdate); - } batchSave(needInsertList); + + // 报表入库前先删除 + getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(param.getIdList(), Collections.singletonList(param.getSalaryItemId()) ); + getSalaryAcctReportService(user).batchSave(salaryAcctResultReportPOS); + } } @@ -1175,7 +1211,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe Map salaryAcctEmployeePOMap = SalaryEntityUtil.convert2Map(salaryAcctEmployeePOList, SalaryAcctEmployeePO::getId); // 需要更新数据的薪资核算人员id - List updateAcctEmpIds = param.getResultValueList().stream().map(SalaryAcctResultBatchEditParam.resultValue::getSalaryAcctEmpId).collect(Collectors.toList()); + List updateAcctEmpIds = param.getResultValueList().stream().map(SalaryAcctResultBatchEditParam.resultValue::getId).collect(Collectors.toList()); // 查询原来的薪资核算结果 List salaryAcctResultPOSOld = getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctEmpIds(updateAcctEmpIds).build()); // 解密 @@ -1189,7 +1225,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe s -> s.map(SalaryAcctResultPO::getOriginResultValue).orElse("")))); List salaryAcctResultReportPOS = new ArrayList<>(); param.getResultValueList().forEach(resultValue -> { - SalaryAcctEmployeePO salaryAcctEmployeePO = salaryAcctEmployeePOMap.get(resultValue.getSalaryAcctEmpId()); + SalaryAcctEmployeePO salaryAcctEmployeePO = salaryAcctEmployeePOMap.get(resultValue.getId()); salaryAcctResultPOS.addAll(SalaryAcctResultBO.batchEditConvert2PO(salaryAcctResultOldPOMap, resultValue.getItems(), salaryAcctEmployeePO, (long) user.getUID())); // 报表 salaryAcctResultReportPOS.addAll(SalaryAcctResultReportBO.lkszConvert2PO(resultValue.getItems(), salaryAcctEmployeePO, (long) user.getUID(), emps)); @@ -1198,9 +1234,9 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe // 删除原来的薪资核算结果 param.getResultValueList().stream().forEach(resultValue -> { List saveItemIds = resultValue.getItems().stream().map(SalaryAcctResultSaveParam.SalaryAcctResultDetailItemParam::getSalaryItemId).collect(Collectors.toList()); - deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(resultValue.getSalaryAcctEmpId()), saveItemIds); + deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(resultValue.getId()), saveItemIds); // 报表 - getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(resultValue.getSalaryAcctEmpId()), saveItemIds); + getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(resultValue.getId()), saveItemIds); }); // 保存薪资核算结果 diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index 45de6654d..027678e1d 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -159,7 +159,7 @@ public class SalaryAcctController { return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::backCalculate, param.getSalaryAcctRecordId()); } - // 结账 + // 结转 @GET @Path("/lkszJz") @Produces(MediaType.APPLICATION_JSON) @@ -457,13 +457,13 @@ public class SalaryAcctController { return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::updateLockStatusByParam, param); } - //鲁控数字批量更新 + //批量更新 @POST - @Path("/acctresult/lkszBatchUpdate") + @Path("/acctresult/batchUpdate") @Produces(MediaType.APPLICATION_JSON) - public String lkszBatchUpdate(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultBatchUpdateParam param) { + public String batchUpdate(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultBatchUpdateParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::lkszBatchUpdate, param); + return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::batchUpdate, param); } //鲁控数字批量编辑 diff --git a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java index 5cd43cecb..9bf20496d 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java @@ -260,7 +260,7 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord } /** - * 鲁控数字-结账 + * 鲁控数字-结转 * @param salaryAcctRecordId */ public void lkszJz(Long salaryAcctRecordId) { diff --git a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java index 59bbd3093..2bf31ef9c 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java @@ -258,11 +258,11 @@ public class SalaryAcctResultWrapper extends Service { } /** - * 鲁控数字薪资核算结果批量更新 + * 薪资核算结果批量更新 * @param param */ - public void lkszBatchUpdate(SalaryAcctResultBatchUpdateParam param) { - getSalaryAcctResultService(user).lkszBatchUpdate(param); + public void batchUpdate(SalaryAcctResultBatchUpdateParam param) { + getSalaryAcctResultService(user).batchUpdate(param); } /** From 1287a97fe5a6f8eaed47559b222067cf0c6f965b Mon Sep 17 00:00:00 2001 From: sy Date: Thu, 7 Dec 2023 09:41:46 +0800 Subject: [PATCH 08/92] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E4=B8=8B=E8=BD=BD=E3=80=81=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E3=80=81=E5=9F=BA=E6=95=B0=E8=B0=83=E6=95=B4=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=A0=B9=E6=8D=AE=E5=8C=BA=E5=88=86?= =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E5=92=8C=E5=85=AC=E5=8F=B8=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E5=9F=BA=E6=95=B0=E9=80=BB=E8=BE=91=E6=94=B9=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 11 +- .../mapper/siarchives/FundSchemeMapper.xml | 6 + .../InsuranceBaseAdjustHistoryMapper.xml | 20 +- .../mapper/siarchives/OtherSchemeMapper.xml | 18 +- .../mapper/siarchives/SocialSchemeMapper.xml | 6 + .../service/impl/SIArchivesServiceImpl.java | 14 ++ .../service/impl/SIImportServiceImpl.java | 28 ++- .../service/impl/SISchemeServiceImpl.java | 187 ++++++++++++++---- 8 files changed, 234 insertions(+), 56 deletions(-) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index eb4980815..fbf526ca6 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -2198,6 +2198,7 @@ public class SIArchivesBiz { InsuranceArchivesBaseHistoryDTO adjustInfo = InsuranceArchivesBaseHistoryDTO.builder() .adjustAfterSchemeId(po.getSocialSchemeId()) .adjustAfterBaseJson(po.getSocialPaymentBaseString()) + .adjustAfterComBaseJson(po.getSocialPaymentComBaseString()) .welfareType(po.getWelfareType()) .employeeId(po.getEmployeeId()) .paymentOrganization(po.getPaymentOrganization()) @@ -2207,6 +2208,7 @@ public class SIArchivesBiz { InsuranceArchivesSocialSchemePO oldBaseInfo = oldBaseInfoList.get(0); encryptUtil.decrypt(oldBaseInfo, InsuranceArchivesSocialSchemePO.class); adjustInfo.setAdjustBeforeBaseJson(oldBaseInfo.getSocialPaymentBaseString()); + adjustInfo.setAdjustBeforeComBaseJson(oldBaseInfo.getSocialPaymentComBaseString()); adjustInfo.setAdjustBeforeSchemeId(oldBaseInfo.getSocialSchemeId()); } else if (oldBaseInfoList.size() > 1) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"社保档案存在冗余数据!")); @@ -2228,6 +2230,7 @@ public class SIArchivesBiz { InsuranceArchivesBaseHistoryDTO adjustInfo = InsuranceArchivesBaseHistoryDTO.builder() .adjustAfterSchemeId(po.getFundSchemeId()) .adjustAfterBaseJson(po.getFundPaymentBaseString()) + .adjustAfterComBaseJson(po.getFundPaymentComBaseString()) .welfareType(po.getWelfareType()) .employeeId(po.getEmployeeId()) .paymentOrganization(po.getPaymentOrganization()) @@ -2237,6 +2240,7 @@ public class SIArchivesBiz { InsuranceArchivesFundSchemePO oldBaseInfo = oldBaseInfoList.get(0); encryptUtil.decrypt(oldBaseInfo, InsuranceArchivesFundSchemePO.class); adjustInfo.setAdjustBeforeBaseJson(oldBaseInfo.getFundPaymentBaseString()); + adjustInfo.setAdjustBeforeComBaseJson(oldBaseInfo.getFundPaymentComBaseString()); adjustInfo.setAdjustBeforeSchemeId(oldBaseInfo.getFundSchemeId()); } else if (oldBaseInfoList.size() > 1) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"公积金档案存在冗余数据!")); @@ -2257,6 +2261,7 @@ public class SIArchivesBiz { InsuranceArchivesBaseHistoryDTO adjustInfo = InsuranceArchivesBaseHistoryDTO.builder() .adjustAfterSchemeId(po.getOtherSchemeId()) .adjustAfterBaseJson(po.getOtherPaymentBaseString()) + .adjustAfterComBaseJson(po.getOtherPaymentComBaseString()) .welfareType(po.getWelfareType()) .employeeId(po.getEmployeeId()) .paymentOrganization(po.getPaymentOrganization()) @@ -2266,6 +2271,7 @@ public class SIArchivesBiz { InsuranceArchivesOtherSchemePO oldBaseInfo = oldBaseInfoList.get(0); encryptUtil.decrypt(oldBaseInfo, InsuranceArchivesOtherSchemePO.class); adjustInfo.setAdjustBeforeBaseJson(oldBaseInfo.getOtherPaymentBaseString()); + adjustInfo.setAdjustBeforeComBaseJson(oldBaseInfo.getOtherPaymentComBaseString()); adjustInfo.setAdjustBeforeSchemeId(oldBaseInfo.getOtherSchemeId()); } else if (oldBaseInfoList.size() > 1) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"其他福利档案存在冗余数据!")); @@ -2279,10 +2285,7 @@ public class SIArchivesBiz { //生成基数调整记录(基数单元未变化则忽略) public List createAdjustInfo(InsuranceArchivesBaseHistoryDTO adjustInfo, Long creator) { Date now = new Date(); - //判断是否要区分个人和单位福利基数 - User user = new User(Math.toIntExact(creator)); - SalarySysConfPO welBaseDiff = getSalarySysConfService(user).getOneByCode(WEL_BASE_DIFF_BY_PER_AND_COM); - boolean welBaseDiffSign = welBaseDiff != null && welBaseDiff.getConfValue().equals(OpenEnum.OPEN.getValue()); + boolean welBaseDiffSign = isDiffWelBase(); List toCreateAdjustHistoryList = new ArrayList<>(); //旧档案不存在基数信息,则直接遍历新的基数数据,生成调整记录;旧档案存在基数信息,则合并新旧基数数据,遍历合并后的技术数据中的key,生成调整记录。 diff --git a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml index 56731a58b..afdde68a1 100644 --- a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml @@ -137,6 +137,7 @@ fund_end_time, fund_start_time, fund_payment_base_string, + fund_payment_com_base_string, supplement_fund_account, create_time, creator, @@ -156,6 +157,7 @@ #{item.fundEndTime}, #{item.fundStartTime}, #{item.fundPaymentBaseString}, + #{item.fundPaymentComBaseString}, #{item.supplementFundAccount}, #{item.createTime}, #{item.creator}, @@ -177,6 +179,7 @@ fund_end_time, fund_start_time, fund_payment_base_string, + fund_payment_com_base_string, supplement_fund_account, create_time, creator, @@ -195,6 +198,7 @@ #{item.fundEndTime,jdbcType=VARCHAR}, #{item.fundStartTime,jdbcType=VARCHAR}, #{item.fundPaymentBaseString,jdbcType=VARCHAR}, + #{item.fundPaymentComBaseString,jdbcType=VARCHAR}, #{item.supplementFundAccount,jdbcType=VARCHAR}, #{item.createTime,jdbcType=DATE}, #{item.creator,jdbcType=DOUBLE}, @@ -217,6 +221,7 @@ fund_end_time, fund_start_time, fund_payment_base_string, + fund_payment_com_base_string, supplement_fund_account, create_time, creator, @@ -235,6 +240,7 @@ #{item.fundEndTime}, #{item.fundStartTime}, #{item.fundPaymentBaseString}, + #{item.fundPaymentComBaseString}, #{item.supplementFundAccount}, #{item.createTime}, #{item.creator}, diff --git a/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml b/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml index da02c83b5..0752177a1 100644 --- a/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml @@ -12,6 +12,7 @@ + @@ -33,6 +34,7 @@ , t.adjust_before_base_value , t.adjust_after_base_value , t.adjust_welfare_item_id + , t.payment_scope , t.operator , t.operate_time , t.create_time @@ -48,7 +50,7 @@ adjust_before_scheme_id,adjust_after_scheme_id, adjust_before_base_value,adjust_after_base_value, adjust_welfare_item_id,operator,operate_time, - tenant_key,creator,delete_type,create_time,update_time) + tenant_key,creator,delete_type,create_time,update_time,payment_scope) VALUES ( @@ -67,7 +69,8 @@ #{item.creator}, #{item.deleteType}, #{item.createTime}, - #{item.updateTime} + #{item.updateTime}, + #{item.paymentScope} ) @@ -77,7 +80,7 @@ adjust_before_scheme_id,adjust_after_scheme_id, adjust_before_base_value,adjust_after_base_value, adjust_welfare_item_id,operator,operate_time, - tenant_key,creator,delete_type,create_time,update_time) + tenant_key,creator,delete_type,create_time,update_time,payment_scope) select #{item.id,jdbcType=DOUBLE}, @@ -95,7 +98,8 @@ #{item.creator,jdbcType=DOUBLE}, #{item.deleteType}, #{item.createTime}, - #{item.updateTime} + #{item.updateTime}, + #{item.paymentScope} from dual @@ -106,7 +110,7 @@ adjust_before_scheme_id,adjust_after_scheme_id, adjust_before_base_value,adjust_after_base_value, adjust_welfare_item_id,operator,operate_time, - tenant_key,creator,delete_type,create_time,update_time) + tenant_key,creator,delete_type,create_time,update_time,payment_scope) VALUES ( #{item.id}, @@ -124,7 +128,8 @@ #{item.creator}, #{item.deleteType}, #{item.createTime}, - #{item.updateTime} + #{item.updateTime}, + #{item.paymentScope} ) @@ -148,6 +153,7 @@ , eo.lastname as operatorName , ee.lastname as employeeName , p.name as paymentOrganizationName + , t.payment_scope FROM hrsa_insurance_base_history t LEFT JOIN hrmresource eo on eo.id = t.operator LEFT JOIN hrmresource ee on ee.id = t.employee_id @@ -180,6 +186,7 @@ , eo.lastname as operatorName , ee.lastname as employeeName , p.name as paymentOrganizationName + , t.payment_scope FROM hrsa_insurance_base_history t LEFT JOIN hrmresource eo on eo.id = t.operator LEFT JOIN hrmresource ee on ee.id = t.employee_id @@ -216,6 +223,7 @@ , eo.lastname as operatorName , ee.username as employeeName , p.name as paymentOrganizationName + , t.payment_scope FROM hrsa_insurance_base_history t LEFT JOIN hrmresource eo on eo.id = t.operator LEFT JOIN hrsa_external_employee ee on ee.id = t.employee_id diff --git a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml index de0febe4f..2d67257b4 100644 --- a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml @@ -131,7 +131,8 @@ non_payment, creator, payment_organization, - other_payment_base_string) + other_payment_base_string, + other_payment_com_base_string) VALUES ( @@ -148,7 +149,8 @@ #{item.nonPayment}, #{item.creator}, #{item.paymentOrganization}, - #{item.otherPaymentBaseString} + #{item.otherPaymentBaseString}, + #{item.otherPaymentComBaseString} ) @@ -167,7 +169,8 @@ non_payment, creator, payment_organization, - other_payment_base_string) + other_payment_base_string, + other_payment_com_base_string) select #{item.otherSchemeId,jdbcType=DOUBLE}, @@ -183,7 +186,8 @@ #{item.nonPayment,jdbcType=INTEGER}, #{item.creator,jdbcType=DOUBLE}, #{item.paymentOrganization,jdbcType=DOUBLE}, - #{item.otherPaymentBaseString,jdbcType=VARCHAR} + #{item.otherPaymentBaseString,jdbcType=VARCHAR}, + #{item.otherPaymentComBaseString,jdbcType=VARCHAR} from dual @@ -203,7 +207,8 @@ non_payment, creator, payment_organization, - other_payment_base_string) + other_payment_base_string, + other_payment_com_base_string) VALUES ( #{item.otherSchemeId}, @@ -219,7 +224,8 @@ #{item.nonPayment}, #{item.creator}, #{item.paymentOrganization}, - #{item.otherPaymentBaseString} + #{item.otherPaymentBaseString}, + #{item.otherPaymentComBaseString} ) diff --git a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml index c27048d10..79562932f 100644 --- a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml @@ -130,6 +130,7 @@ welfare_type, delete_type, social_payment_base_string, + social_payment_com_base_string, social_scheme_id, create_time, social_end_time, @@ -148,6 +149,7 @@ #{item.welfareType}, #{item.deleteType}, #{item.socialPaymentBaseString}, + #{item.socialPaymentComBaseString}, #{item.socialSchemeId}, #{item.createTime}, #{item.socialEndTime}, @@ -168,6 +170,7 @@ welfare_type, delete_type, social_payment_base_string, + social_payment_com_base_string, social_scheme_id, create_time, social_end_time, @@ -185,6 +188,7 @@ #{item.welfareType,jdbcType=INTEGER}, #{item.deleteType,jdbcType=INTEGER}, #{item.socialPaymentBaseString,jdbcType=VARCHAR}, + #{item.socialPaymentComBaseString,jdbcType=VARCHAR}, #{item.socialSchemeId,jdbcType=DOUBLE}, #{item.createTime,jdbcType=DATE}, #{item.socialEndTime,jdbcType=VARCHAR}, @@ -206,6 +210,7 @@ welfare_type, delete_type, social_payment_base_string, + social_payment_com_base_string, social_scheme_id, create_time, social_end_time, @@ -223,6 +228,7 @@ #{item.welfareType}, #{item.deleteType}, #{item.socialPaymentBaseString}, + #{item.socialPaymentComBaseString}, #{item.socialSchemeId}, #{item.createTime}, #{item.socialEndTime}, diff --git a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java index 11299554e..8738c66f9 100644 --- a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java @@ -20,6 +20,7 @@ import com.engine.salary.enums.salaryaccounting.EmployeeTypeEnum; import com.engine.salary.enums.siaccount.EmployeeStatusEnum; import com.engine.salary.enums.sicategory.DeleteTypeEnum; import com.engine.salary.enums.sicategory.NonPaymentEnum; +import com.engine.salary.enums.sicategory.PaymentScopeEnum; import com.engine.salary.enums.sicategory.WelfareTypeEnum; import com.engine.salary.enums.taxagent.TaxAgentEmpChangeModuleEnum; import com.engine.salary.exception.SalaryRunTimeException; @@ -1158,6 +1159,19 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService public PageInfo historyListByEmployeeIdAndOperator(SIArchiveBaseHistoryListParam param) { List adjustHistoryDTOS = siArchivesBiz.getBaseHistoryByEmployeeIdAndOperator(param.getOperator(), param.getEmployeeId()); + adjustHistoryDTOS.forEach(f -> { + if (StringUtils.isNotBlank(f.getPaymentScope())) { + if(f.getPaymentScope().equals(PaymentScopeEnum.SCOPE_PERSON.getValue().toString())) { + f.setPaymentScope(SalaryI18nUtil.getI18nLabel(0, "个人")); + } else if(f.getPaymentScope().equals(PaymentScopeEnum.SCOPE_COMPANY.getValue().toString())) { + f.setPaymentScope(SalaryI18nUtil.getI18nLabel(0, "公司")); + } else { + f.setPaymentScope(SalaryI18nUtil.getI18nLabel(0, "个人") + "," + SalaryI18nUtil.getI18nLabel(0, "公司")); + } + } else { + f.setPaymentScope(SalaryI18nUtil.getI18nLabel(0, "个人") + "," + SalaryI18nUtil.getI18nLabel(0, "公司")); + } + }); PageInfo listPage = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), adjustHistoryDTOS , InsuranceArchivesBaseHistoryDTO.class); diff --git a/src/com/engine/salary/service/impl/SIImportServiceImpl.java b/src/com/engine/salary/service/impl/SIImportServiceImpl.java index 8fc7eccdb..c8b41704c 100644 --- a/src/com/engine/salary/service/impl/SIImportServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIImportServiceImpl.java @@ -27,6 +27,7 @@ import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.excel.ExcelComment; import com.engine.salary.util.excel.ExcelUtil; +import com.engine.salary.util.excel.ExcelUtilPlus; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; @@ -184,7 +185,7 @@ public class SIImportServiceImpl extends Service implements SIImportService { //工作簿数据 - return ExcelUtil.genWorkbookV2(excelSheetData, sheetName,excelComments); + return ExcelUtilPlus.genWorkbookV2(excelSheetData, sheetName,excelComments); } @@ -194,6 +195,7 @@ public class SIImportServiceImpl extends Service implements SIImportService { * @return */ public List buildHeader() { + boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); List result = new ArrayList<>(); result.add(SalaryI18nUtil.getI18nLabel( 85429, "姓名")); result.add(SalaryI18nUtil.getI18nLabel( 86184, "个税扣缴义务人")); @@ -206,7 +208,13 @@ public class SIImportServiceImpl extends Service implements SIImportService { // result.add(SalaryI18nUtil.getI18nLabel( 91325, "社保缴纳组织")); //社保福利基数 Map socialMap = welfareNameIdMap( WelfareTypeEnum.SOCIAL_SECURITY); - socialMap.forEach((k, v) -> result.add(k + SalaryI18nUtil.getI18nLabel( 100293, "申报基数"))); + if (welBaseDiffSign) { + socialMap.forEach((k, v) -> result.add(k + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "个人"))); + socialMap.forEach((k, v) -> result.add(k + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "单位"))); + } else { + socialMap.forEach((k, v) -> result.add(k + SalaryI18nUtil.getI18nLabel( 0, "申报基数"))); + } + result.add(SalaryI18nUtil.getI18nLabel( 91324, "社保账号")); result.add(SalaryI18nUtil.getI18nLabel( 91319, "社保起始缴纳月")); result.add(SalaryI18nUtil.getI18nLabel( 91320, "社保最后缴纳月")); @@ -215,7 +223,13 @@ public class SIImportServiceImpl extends Service implements SIImportService { result.add(SalaryI18nUtil.getI18nLabel( 91486, "公积金账号")); //公积金福利基数 Map fundMap = welfareNameIdMap( WelfareTypeEnum.ACCUMULATION_FUND); - fundMap.forEach((k, v) -> result.add(k + SalaryI18nUtil.getI18nLabel( 100293, "申报基数"))); + if (welBaseDiffSign) { + fundMap.forEach((k, v) -> result.add(k + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "个人"))); + fundMap.forEach((k, v) -> result.add(k + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "单位"))); + } else { + fundMap.forEach((k, v) -> result.add(k + SalaryI18nUtil.getI18nLabel( 0, "申报基数"))); + } + result.add(SalaryI18nUtil.getI18nLabel( 91487, "补充公积金账号")); result.add(SalaryI18nUtil.getI18nLabel( 91483, "公积金起始缴纳月")); result.add(SalaryI18nUtil.getI18nLabel( 91484, "公积金最后缴纳月")); @@ -223,7 +237,13 @@ public class SIImportServiceImpl extends Service implements SIImportService { // result.add(SalaryI18nUtil.getI18nLabel( 91497, "其他福利缴纳组织")); //其他福利基数 Map otherMap = welfareNameIdMap( WelfareTypeEnum.OTHER); - otherMap.forEach((k, v) -> result.add(k + SalaryI18nUtil.getI18nLabel( 100293, "申报基数"))); + if (welBaseDiffSign) { + otherMap.forEach((k, v) -> result.add(k + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "个人"))); + otherMap.forEach((k, v) -> result.add(k + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "单位"))); + } else { + otherMap.forEach((k, v) -> result.add(k + SalaryI18nUtil.getI18nLabel( 0, "申报基数"))); + } + result.add(SalaryI18nUtil.getI18nLabel( 91490, "其他福利起始缴纳月")); result.add(SalaryI18nUtil.getI18nLabel( 91494, "其他福利最后缴纳月")); return result; diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index d49f971e2..295fd5615 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -1084,16 +1084,40 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { insuranceArchivesOtherSchemePO = buildOtherPO(employeeId, welfareMap, singleAccount, schemeNameIdMap, paymentNameIdMap, creator); } /**************校验申报基数**************/ - for (Map.Entry entry : welfareMap.entrySet()) { - String keyName = entry.getValue() + SalaryI18nUtil.getI18nLabel(100293, "申报基数"); - String numberVlue = findElement(singleAccount, keyName).get(keyName) == null ? "" : findElement(singleAccount, keyName).get(keyName).toString(); - if (!"".equals(numberVlue) && !NumberUtils.isParsable(numberVlue)) { - Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", rowIndex + keyName + SalaryI18nUtil.getI18nLabel(100581, "请输入数字")); - excelComments.add(errorMessageMap); - isError = true; + boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); + if (welBaseDiffSign) { + for (Map.Entry entry : welfareMap.entrySet()) { + String keyPerName = entry.getValue() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "个人"); + String keyComName = entry.getValue() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "单位"); + String numberPerValue = findElement(singleAccount, keyPerName).get(keyPerName) == null ? "" : findElement(singleAccount, keyPerName).get(keyPerName).toString(); + String numberComValue = findElement(singleAccount, keyComName).get(keyComName) == null ? "" : findElement(singleAccount, keyComName).get(keyComName).toString(); + + if (!"".equals(numberPerValue) && !NumberUtils.isParsable(numberPerValue)) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + keyPerName + SalaryI18nUtil.getI18nLabel(0, "请输入数字")); + excelComments.add(errorMessageMap); + isError = true; + } + if (!"".equals(numberComValue) && !NumberUtils.isParsable(numberComValue)) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + keyComName + SalaryI18nUtil.getI18nLabel(0, "请输入数字")); + excelComments.add(errorMessageMap); + isError = true; + } + } + } else { + for (Map.Entry entry : welfareMap.entrySet()) { + String keyName = entry.getValue() + SalaryI18nUtil.getI18nLabel(0, "申报基数"); + String numberValue = findElement(singleAccount, keyName).get(keyName) == null ? "" : findElement(singleAccount, keyName).get(keyName).toString(); + if (!"".equals(numberValue) && !NumberUtils.isParsable(numberValue)) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + keyName + SalaryI18nUtil.getI18nLabel(0, "请输入数字")); + excelComments.add(errorMessageMap); + isError = true; + } } } + //生成福利档案基础信息数据 InsuranceArchivesBaseInfoPO insuranceArchivesBaseInfoPO = buildBaseInfoPO(employeeId, singleAccount, paymentNameIdMap, creator, runStatus, employees.get(0).isExtEmp()); if (!isError) { @@ -1108,17 +1132,25 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { Boolean otherCheckBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesOtherSchemePO.getOtherSchemeId(), insuranceArchivesOtherSchemePO.getOtherPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue()); - if (socialCheckBase && fundCheckBase && otherCheckBase) { + Boolean socialCheckComBase = true; + Boolean fundCheckComBase = true; + Boolean otherCheckComBase = true; + if (welBaseDiffSign) { + socialCheckComBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesSocialSchemePO.getSocialSchemeId(), insuranceArchivesSocialSchemePO.getSocialPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue()); + fundCheckComBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesFundSchemePO.getFundSchemeId(), insuranceArchivesFundSchemePO.getFundPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue()); + otherCheckComBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesOtherSchemePO.getOtherSchemeId(), insuranceArchivesOtherSchemePO.getOtherPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue()); + } + if (socialCheckBase && fundCheckBase && otherCheckBase && socialCheckComBase && fundCheckComBase && otherCheckComBase) { insuranceArchivesAccountPOS.add(insuranceArchivesAccountPO); } else { String checkMessage = "该条数据中"; - if (!socialCheckBase) { + if (!socialCheckBase || !socialCheckComBase) { checkMessage = checkMessage + "社保福利基数、"; } - if (!fundCheckBase) { + if (!fundCheckBase || !fundCheckComBase) { checkMessage = checkMessage + "公积金福利基数、"; } - if (!otherCheckBase) { + if (!otherCheckBase || !otherCheckComBase) { checkMessage = checkMessage + "其他福利基数、"; } checkMessage = checkMessage.substring(0, checkMessage.length() - 1); @@ -1162,12 +1194,14 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { String socialAccount = (String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91324, "社保账号")).get(SalaryI18nUtil.getI18nLabel(91324, "社保账号")); Long socialSchemeId = schemeNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91323, "社保方案名称")).get(SalaryI18nUtil.getI18nLabel(91323, "社保方案名称"))); HashMap oldSocialBaseMap = new HashMap<>(); + HashMap oldSocialComBaseMap = new HashMap<>(); if (oldSocialSchemeInfos.size() > 0) { oldSocialSchemePO = oldSocialSchemeInfos.get(0); encryptUtil.decrypt(oldSocialSchemePO, InsuranceArchivesSocialSchemePO.class); BeanUtils.copyProperties(oldSocialSchemePO, insuranceArchivesSocialSchemePO); //社保基数 oldSocialBaseMap = JSON.parseObject(oldSocialSchemePO.getSocialPaymentBaseString(), new HashMap().getClass()); + oldSocialComBaseMap = JSON.parseObject(oldSocialSchemePO.getSocialPaymentComBaseString(), new HashMap().getClass()); } insuranceArchivesSocialSchemePO.setId(IdGenerator.generate()); @@ -1202,21 +1236,48 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { insuranceArchivesSocialSchemePO.setUnderTake(UndertakerEnum.SCOPE_PERSON.getValue()); List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().queryListBySchemeId(insuranceArchivesSocialSchemePO.getSocialSchemeId()); encryptUtil.decryptList(insuranceSchemeDetailPOS, InsuranceSchemeDetailPO.class); + + boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); if (CollectionUtils.isNotEmpty(insuranceSchemeDetailPOS)) { List insuranceIds = insuranceSchemeDetailPOS.stream().map(InsuranceSchemeDetailPO::getInsuranceId).collect(Collectors.toList()); HashMap socialPaymentBase = new HashMap<>(); + HashMap socialPaymentComBase = new HashMap<>(); for (Long insuranceId : insuranceIds) { if (StringUtils.isBlank(welfareMap.get(insuranceId))) { continue; } - if (findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")) != null) { - String itemValue = (String) findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")).get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")); - if (StringUtils.isNotBlank(itemValue)) { - socialPaymentBase.put(String.valueOf(insuranceId), itemValue); - } else if (oldSocialBaseMap != null && StringUtils.isNotBlank(oldSocialBaseMap.get(String.valueOf(insuranceId)))) { - socialPaymentBase.put(String.valueOf(insuranceId), oldSocialBaseMap.get(String.valueOf(insuranceId))); + if (welBaseDiffSign) { + Map itemPerMap = findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "个人")); + if (itemPerMap != null) { + String itemValue = (String) itemPerMap.get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "个人")); + if (StringUtils.isNotBlank(itemValue)) { + socialPaymentBase.put(String.valueOf(insuranceId), itemValue); + } else if (oldSocialBaseMap != null && StringUtils.isNotBlank(oldSocialBaseMap.get(String.valueOf(insuranceId)))) { + socialPaymentBase.put(String.valueOf(insuranceId), oldSocialBaseMap.get(String.valueOf(insuranceId))); + } + } + Map itemComMap = findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "单位")); + if (itemComMap != null) { + String itemValue = (String) itemComMap.get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "单位")); + if (StringUtils.isNotBlank(itemValue)) { + socialPaymentComBase.put(String.valueOf(insuranceId), itemValue); + } else if (oldSocialComBaseMap != null && StringUtils.isNotBlank(oldSocialComBaseMap.get(String.valueOf(insuranceId)))) { + socialPaymentComBase.put(String.valueOf(insuranceId), oldSocialComBaseMap.get(String.valueOf(insuranceId))); + } + } + insuranceArchivesSocialSchemePO.setSocialPaymentComBaseString(JSON.toJSONString(socialPaymentComBase)); + } else { + Map itemMap = findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数")); + if (itemMap != null) { + String itemValue = (String) itemMap.get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数")); + if (StringUtils.isNotBlank(itemValue)) { + socialPaymentBase.put(String.valueOf(insuranceId), itemValue); + } else if (oldSocialBaseMap != null && StringUtils.isNotBlank(oldSocialBaseMap.get(String.valueOf(insuranceId)))) { + socialPaymentBase.put(String.valueOf(insuranceId), oldSocialBaseMap.get(String.valueOf(insuranceId))); + } } } + } insuranceArchivesSocialSchemePO.setSocialPaymentBaseString(JSON.toJSONString(socialPaymentBase)); } @@ -1243,12 +1304,14 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { String supplementFundAccount = (String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91487, "补充公积金账号")).get(SalaryI18nUtil.getI18nLabel(91487, "补充公积金账号")); Long fundSchemeId = schemeNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91485, "公积金方案名称")).get(SalaryI18nUtil.getI18nLabel(91485, "公积金方案名称"))); HashMap oldFundBaseMap = new HashMap<>(); + HashMap oldFundComBaseMap = new HashMap<>(); if (oldFundSchemeInfos.size() > 0) { oldFundSchemePO = oldFundSchemeInfos.get(0); encryptUtil.decrypt(oldFundSchemePO, InsuranceArchivesFundSchemePO.class); BeanUtils.copyProperties(oldFundSchemePO, insuranceArchivesFundSchemePO); //社保基数 oldFundBaseMap = JSON.parseObject(oldFundSchemePO.getFundPaymentBaseString(), new HashMap().getClass()); + oldFundComBaseMap = JSON.parseObject(oldFundSchemePO.getFundPaymentComBaseString(), new HashMap().getClass()); } insuranceArchivesFundSchemePO.setId(IdGenerator.generate()); @@ -1286,24 +1349,49 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().queryListBySchemeId(insuranceArchivesFundSchemePO.getFundSchemeId()); encryptUtil.decryptList(insuranceSchemeDetailPOS, InsuranceSchemeDetailPO.class); + boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); if (CollectionUtils.isNotEmpty(insuranceSchemeDetailPOS)) { List insuranceIds = insuranceSchemeDetailPOS.stream().map(InsuranceSchemeDetailPO::getInsuranceId).collect(Collectors.toList()); - HashMap socialPaymentBase = new HashMap<>(); + HashMap fundPaymentBase = new HashMap<>(); + HashMap fundPaymentComBase = new HashMap<>(); for (Long insuranceId : insuranceIds) { if (StringUtils.isBlank(welfareMap.get(insuranceId))) { continue; } - if (findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")) != null) { - String itemValue = (String) findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")).get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")); - if (StringUtils.isNotBlank(itemValue)) { - socialPaymentBase.put(String.valueOf(insuranceId), itemValue); - } else if (oldFundBaseMap != null && StringUtils.isNotBlank(oldFundBaseMap.get(String.valueOf(insuranceId)))) { - socialPaymentBase.put(String.valueOf(insuranceId), oldFundBaseMap.get(String.valueOf(insuranceId))); + if (welBaseDiffSign) { + Map itemPerMap = findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "个人")); + if (itemPerMap != null) { + String itemValue = (String) itemPerMap.get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "个人")); + if (StringUtils.isNotBlank(itemValue)) { + fundPaymentBase.put(String.valueOf(insuranceId), itemValue); + } else if (oldFundBaseMap != null && StringUtils.isNotBlank(oldFundBaseMap.get(String.valueOf(insuranceId)))) { + fundPaymentBase.put(String.valueOf(insuranceId), oldFundBaseMap.get(String.valueOf(insuranceId))); + } + } + Map itemComMap = findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "单位")); + if (itemComMap != null) { + String itemValue = (String) itemComMap.get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "单位")); + if (StringUtils.isNotBlank(itemValue)) { + fundPaymentComBase.put(String.valueOf(insuranceId), itemValue); + } else if (oldFundComBaseMap != null && StringUtils.isNotBlank(oldFundComBaseMap.get(String.valueOf(insuranceId)))) { + fundPaymentComBase.put(String.valueOf(insuranceId), oldFundComBaseMap.get(String.valueOf(insuranceId))); + } + } + insuranceArchivesFundSchemePO.setFundPaymentComBaseString(JSON.toJSONString(fundPaymentComBase)); + } else { + Map itemMap = findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数")); + if (itemMap != null) { + String itemValue = (String) itemMap.get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数")); + if (StringUtils.isNotBlank(itemValue)) { + fundPaymentBase.put(String.valueOf(insuranceId), itemValue); + } else if (oldFundBaseMap != null && StringUtils.isNotBlank(oldFundBaseMap.get(String.valueOf(insuranceId)))) { + fundPaymentBase.put(String.valueOf(insuranceId), oldFundBaseMap.get(String.valueOf(insuranceId))); + } } - } + } - insuranceArchivesFundSchemePO.setFundPaymentBaseString(JSON.toJSONString(socialPaymentBase)); + insuranceArchivesFundSchemePO.setFundPaymentBaseString(JSON.toJSONString(fundPaymentBase)); } return insuranceArchivesFundSchemePO; } @@ -1325,12 +1413,14 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { //设置其他福利方案、起始缴纳月、最后缴纳月 Long otherSchemeId = schemeNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91496, "其他福利方案名称")).get(SalaryI18nUtil.getI18nLabel(91496, "其他福利方案名称"))); HashMap oldOtherBaseMap = new HashMap<>(); + HashMap oldOtherComBaseMap = new HashMap<>(); if (oldOtherSchemeInfos.size() > 0) { oldOtherSchemePO = oldOtherSchemeInfos.get(0); encryptUtil.decrypt(oldOtherSchemePO, InsuranceArchivesOtherSchemePO.class); BeanUtils.copyProperties(oldOtherSchemePO, insuranceArchivesOtherSchemePO); //社保基数 oldOtherBaseMap = JSON.parseObject(oldOtherSchemePO.getOtherPaymentBaseString(), new HashMap().getClass()); + oldOtherComBaseMap = JSON.parseObject(oldOtherSchemePO.getOtherPaymentComBaseString(), new HashMap().getClass()); } insuranceArchivesOtherSchemePO.setId(IdGenerator.generate()); @@ -1361,24 +1451,49 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { insuranceArchivesOtherSchemePO.setEmployeeId(employeeId); List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().queryListBySchemeId(insuranceArchivesOtherSchemePO.getOtherSchemeId()); encryptUtil.decryptList(insuranceSchemeDetailPOS, InsuranceSchemeDetailPO.class); + boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); if (CollectionUtils.isNotEmpty(insuranceSchemeDetailPOS)) { List insuranceIds = insuranceSchemeDetailPOS.stream().map(InsuranceSchemeDetailPO::getInsuranceId).collect(Collectors.toList()); - HashMap socialPaymentBase = new HashMap<>(); + HashMap otherPaymentBase = new HashMap<>(); + HashMap otherPaymentComBase = new HashMap<>(); for (Long insuranceId : insuranceIds) { if (StringUtils.isBlank(welfareMap.get(insuranceId))) { continue; } - if (findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")) != null) { - String itemValue = (String) findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")).get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")); - if (StringUtils.isNotBlank(itemValue)) { - socialPaymentBase.put(String.valueOf(insuranceId), itemValue); - } else if (oldOtherBaseMap != null && StringUtils.isNotBlank(oldOtherBaseMap.get(String.valueOf(insuranceId)))) { - socialPaymentBase.put(String.valueOf(insuranceId), oldOtherBaseMap.get(String.valueOf(insuranceId))); + if (welBaseDiffSign) { + Map itemPerMap = findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "个人")); + if (itemPerMap != null) { + String itemValue = (String) itemPerMap.get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "个人")); + if (StringUtils.isNotBlank(itemValue)) { + otherPaymentBase.put(String.valueOf(insuranceId), itemValue); + } else if (oldOtherBaseMap != null && StringUtils.isNotBlank(oldOtherBaseMap.get(String.valueOf(insuranceId)))) { + otherPaymentBase.put(String.valueOf(insuranceId), oldOtherBaseMap.get(String.valueOf(insuranceId))); + } + } + Map itemComMap = findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "单位")); + if (itemComMap != null) { + String itemValue = (String) itemComMap.get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "单位")); + if (StringUtils.isNotBlank(itemValue)) { + otherPaymentComBase.put(String.valueOf(insuranceId), itemValue); + } else if (oldOtherComBaseMap != null && StringUtils.isNotBlank(oldOtherComBaseMap.get(String.valueOf(insuranceId)))) { + otherPaymentComBase.put(String.valueOf(insuranceId), oldOtherComBaseMap.get(String.valueOf(insuranceId))); + } + } + insuranceArchivesOtherSchemePO.setOtherPaymentComBaseString(JSON.toJSONString(otherPaymentComBase)); + } else { + Map itemMap = findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数")); + if (itemMap != null) { + String itemValue = (String) itemMap.get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数")); + if (StringUtils.isNotBlank(itemValue)) { + otherPaymentBase.put(String.valueOf(insuranceId), itemValue); + } else if (oldOtherBaseMap != null && StringUtils.isNotBlank(oldOtherBaseMap.get(String.valueOf(insuranceId)))) { + otherPaymentBase.put(String.valueOf(insuranceId), oldOtherBaseMap.get(String.valueOf(insuranceId))); + } } - } + } - insuranceArchivesOtherSchemePO.setOtherPaymentBaseString(JSON.toJSONString(socialPaymentBase)); + insuranceArchivesOtherSchemePO.setOtherPaymentBaseString(JSON.toJSONString(otherPaymentBase)); } return insuranceArchivesOtherSchemePO; } From bb1b785f55e432d08fe5014c2ee7ff54d3067a2c Mon Sep 17 00:00:00 2001 From: sy Date: Thu, 7 Dec 2023 11:06:19 +0800 Subject: [PATCH 09/92] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=A0=B9=E6=8D=AE=E5=8C=BA=E5=88=86?= =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E5=92=8C=E5=85=AC=E5=8F=B8=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E5=9F=BA=E6=95=B0=E9=80=BB=E8=BE=91=E6=94=B9=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 35 +-- .../service/impl/SISchemeServiceImpl.java | 259 ++++++++++++++---- 2 files changed, 212 insertions(+), 82 deletions(-) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index fbf526ca6..32186cbbb 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -1520,26 +1520,22 @@ public class SIArchivesBiz { socialCollect.putAll(customSocial); socialCollect.putAll(sysSocial); -// socialSet.forEach(item -> { -// if (socialCollect.containsKey(Long.valueOf(item))) { -// socialMap.put(item, socialCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数"); -// } -// }); + if (welBaseDiffSign) { socialSet.forEach(item -> { if (socialCollect.containsKey(Long.valueOf(item))) { - socialMap.put(item + "per", socialCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数" + "个人"); + socialMap.put(item + "per", socialCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人")); } }); socialComSet.forEach(item -> { if (socialCollect.containsKey(Long.valueOf(item))) { - socialComMap.put(item + "com", socialCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数" + "单位"); + socialComMap.put(item + "com", socialCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位")); } }); } else { socialSet.forEach(item -> { if (socialCollect.containsKey(Long.valueOf(item))) { - socialMap.put(item, socialCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数"); + socialMap.put(item, socialCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数")); } }); } @@ -1550,26 +1546,21 @@ public class SIArchivesBiz { Map sysFund = iCategoryMapper.listByWelfareType(WelfareTypeEnum.ACCUMULATION_FUND.getValue(), DataTypeEnum.SYSTEM.getValue()).stream().collect(Collectors.toMap(ICategoryPO::getId, Function.identity())); fundCollect.putAll(customFund); fundCollect.putAll(sysFund); -// fundSet.forEach(item -> { -// if (fundCollect.containsKey(Long.valueOf(item))) { -// fundMap.put(item, fundCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数"); -// } -// }); if (welBaseDiffSign) { fundSet.forEach(item -> { if (fundCollect.containsKey(Long.valueOf(item))) { - fundMap.put(item + "per", fundCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数" + "个人"); + fundMap.put(item + "per", fundCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人")); } }); fundComSet.forEach(item -> { if (fundCollect.containsKey(Long.valueOf(item))) { - fundComMap.put(item + "com", fundCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数" + "单位"); + fundComMap.put(item + "com", fundCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位")); } }); } else { fundSet.forEach(item -> { if (fundCollect.containsKey(Long.valueOf(item))) { - fundMap.put(item, fundCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数"); + fundMap.put(item, fundCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数")); } }); } @@ -1580,26 +1571,22 @@ public class SIArchivesBiz { Map sysOther = iCategoryMapper.listByWelfareType(WelfareTypeEnum.OTHER.getValue(), DataTypeEnum.SYSTEM.getValue()).stream().collect(Collectors.toMap(ICategoryPO::getId, Function.identity())); otherCollect.putAll(customOther); otherCollect.putAll(sysOther); -// otherSet.forEach(item -> { -// if (otherCollect.containsKey(Long.valueOf(item))) { -// otherMap.put(item, otherCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数"); -// } -// }); + if (welBaseDiffSign) { otherSet.forEach(item -> { if (otherCollect.containsKey(Long.valueOf(item))) { - otherMap.put(item + "per", otherCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数" + "个人"); + otherMap.put(item + "per", otherCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人")); } }); otherComSet.forEach(item -> { if (otherCollect.containsKey(Long.valueOf(item))) { - otherComMap.put(item + "com", otherCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数" + "单位"); + otherComMap.put(item + "com", otherCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位")); } }); } else { otherSet.forEach(item -> { if (otherCollect.containsKey(Long.valueOf(item))) { - otherMap.put(item, otherCollect.get(Long.valueOf(item)).getInsuranceName() + "申报基数"); + otherMap.put(item, otherCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数")); } }); } diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index 295fd5615..5b2552ef9 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -51,6 +51,7 @@ import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.excel.ExcelParseHelper; import com.engine.salary.util.excel.ExcelSupport; import com.engine.salary.util.excel.ExcelUtil; +import com.engine.salary.util.excel.ExcelUtilPlus; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.engine.salary.util.valid.ValidUtil; @@ -261,6 +262,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { @Override public List> buildTableData(List insuranceArchivesEmployeePOS) { + boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); List> records = new ArrayList<>(); List taxAgentPOS = getTaxAgentMapper().listAll(); Map longTaxAgentPOMap = SalaryEntityUtil.convert2Map(taxAgentPOS, TaxAgentPO::getId); @@ -286,9 +288,6 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { Map fundSchemePOMap = SalaryEntityUtil.convert2Map(fundList, k -> k.getPaymentOrganization() + "-" + k.getEmployeeId()); Map otherSchemePOMap = SalaryEntityUtil.convert2Map(otherList, k -> k.getPaymentOrganization() + "-" + k.getEmployeeId()); -// Map socialSchemePOMap = socialList.stream().collect(Collectors.toMap(InsuranceArchivesSocialSchemePO::getEmployeeId, Function.identity())); -// Map fundSchemePOMap = fundList.stream().collect(Collectors.toMap(InsuranceArchivesFundSchemePO::getEmployeeId, Function.identity())); -// Map otherSchemePOMap = otherList.stream().collect(Collectors.toMap(InsuranceArchivesOtherSchemePO::getEmployeeId, Function.identity())); insuranceArchivesEmployeePOS.forEach(item -> { InsuranceArchivesSocialSchemePO socialItem = socialSchemePOMap.get(item.getPaymentOrganization() + "-" + item.getEmployeeId()); InsuranceArchivesFundSchemePO fundItem = fundSchemePOMap.get(item.getPaymentOrganization() + "-" + item.getEmployeeId()); @@ -307,15 +306,37 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { map.put("socialName", getSiSchemeService().querySchemeName(socialItem.getSocialSchemeId())); Map socialJson = JSON.parseObject(socialItem.getSocialPaymentBaseString(), new TypeReference>() { }); - if (socialJson != null) { - //查询该福利方案下开启缴纳的福利项 - List insuranceIdList = payInsuranceIds(socialItem.getSocialSchemeId()); - socialJson.forEach((k, v) -> { - if (insuranceIdList.contains(Long.valueOf(k))) { - map.put(k, v); - } + if (welBaseDiffSign) { + if (socialJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = siArchivesBiz.payInsuranceIds(socialItem.getSocialSchemeId(), PaymentScopeEnum.SCOPE_PERSON.getValue()); + socialJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + map.put(k + "per", v); + } + }); + } + Map socialComJson = JSON.parseObject(socialItem.getSocialPaymentComBaseString(), new TypeReference>() { }); -// map.putAll(socialJson); + if (socialComJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = siArchivesBiz.payInsuranceIds(socialItem.getSocialSchemeId(),PaymentScopeEnum.SCOPE_COMPANY.getValue()); + socialComJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + map.put(k + "com", v); + } + }); + } + } else { + if (socialJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = payInsuranceIds(socialItem.getSocialSchemeId()); + socialJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + map.put(k, v); + } + }); + } } map.put("socialAccount", socialItem.getSocialAccount()); map.put("socialStartTime", socialItem.getSocialStartTime()); @@ -326,15 +347,37 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { map.put("fundAccount", fundItem.getFundAccount()); Map fundJson = JSON.parseObject(fundItem.getFundPaymentBaseString(), new TypeReference>() { }); - if (fundJson != null) { - //查询该福利方案下开启缴纳的福利项 - List insuranceIdList = payInsuranceIds(fundItem.getFundSchemeId()); - fundJson.forEach((k, v) -> { - if (insuranceIdList.contains(Long.valueOf(k))) { - map.put(k, v); - } + if (welBaseDiffSign) { + if (fundJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = siArchivesBiz.payInsuranceIds(fundItem.getFundSchemeId(),PaymentScopeEnum.SCOPE_PERSON.getValue()); + fundJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + map.put(k + "per", v); + } + }); + } + Map fundComJson = JSON.parseObject(fundItem.getFundPaymentComBaseString(), new TypeReference>() { }); -// map.putAll(fundJson); + if (fundComJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = siArchivesBiz.payInsuranceIds(fundItem.getFundSchemeId(),PaymentScopeEnum.SCOPE_COMPANY.getValue()); + fundComJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + map.put(k + "com", v); + } + }); + } + } else { + if (fundJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = payInsuranceIds(fundItem.getFundSchemeId()); + fundJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + map.put(k, v); + } + }); + } } map.put("supplementFundAccount", fundItem.getSupplementFundAccount()); map.put("fundStartTime", fundItem.getFundStartTime()); @@ -345,15 +388,37 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { map.put("otherName", getSiSchemeService().querySchemeName(otherItem.getOtherSchemeId())); Map otherJson = JSON.parseObject(otherItem.getOtherPaymentBaseString(), new TypeReference>() { }); - if (otherJson != null) { - //查询该福利方案下开启缴纳的福利项 - List insuranceIdList = payInsuranceIds(otherItem.getOtherSchemeId()); - otherJson.forEach((k, v) -> { - if (insuranceIdList.contains(Long.valueOf(k))) { - map.put(k, v); - } + if (welBaseDiffSign) { + if (otherJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = siArchivesBiz.payInsuranceIds(otherItem.getOtherSchemeId(),PaymentScopeEnum.SCOPE_PERSON.getValue()); + otherJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + map.put(k + "per", v); + } + }); + } + Map otherComJson = JSON.parseObject(otherItem.getOtherPaymentComBaseString(), new TypeReference>() { }); -// map.putAll(otherJson); + if (otherComJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = siArchivesBiz.payInsuranceIds(otherItem.getOtherSchemeId(),PaymentScopeEnum.SCOPE_COMPANY.getValue()); + otherComJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + map.put(k + "com", v); + } + }); + } + } else { + if (otherJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = payInsuranceIds(otherItem.getOtherSchemeId()); + otherJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + map.put(k, v); + } + }); + } } map.put("otherStartTime", otherItem.getOtherStartTime()); map.put("otherEndTime", otherItem.getOtherEndTime()); @@ -422,11 +487,11 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { } //工作簿数据 - List> rows = new LinkedList<>(); - List collect = columns.stream().map(WeaTableColumn::getText).collect(Collectors.toList()); + List> rows = new LinkedList<>(); + List collect = columns.stream().map(WeaTableColumn::getText).collect(Collectors.toList()); rows.add(collect); for (Map recordData : records) { - List row = new LinkedList<>(); + List row = new LinkedList<>(); for (WeaTableColumn column : columns) { try { Object o = recordData.get(column.getColumn()); @@ -437,20 +502,8 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { } rows.add(row); } -// return salaryBatchService.simpleExportExcel(ExportExcelInfo.builder() -// .bizId(exportMap.get("biz")) -// .flag(true) -// .userId(employeeId) -// .eteamsId(eteamsId) -// .tenantKey(tenantKey) -// .operator(operator) -// .module(exportMap.get("module")) -// .fileName(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 94629, "社保福利档案") + SalaryDateUtil.getFormatLocalDateTime(LocalDateTime.now())) -// .handlerName("insuranceArchivesExportHandler") -// .dataType(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 99915, "档案")) -// .function(exportMap.get("function")).build(), sheetList); //获取excel - return ExcelUtil.genWorkbook(rows, sheetName); + return ExcelUtilPlus.genWorkbookV2(rows, sheetName); } @@ -532,10 +585,17 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { public Map> buildColumnTitle(List insuranceArchivesEmployeePOS, Long employeeId) { + boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); + Map> result = new HashMap<>(); Set socialSet = new HashSet<>(); Set fundSet = new HashSet<>(); Set otherSet = new HashSet<>(); + + Set socialComSet = new HashSet<>(); + Set fundComSet = new HashSet<>(); + Set otherComSet = new HashSet<>(); + insuranceArchivesEmployeePOS.forEach(item -> { List socialByEmployeeId = siArchivesBiz.getSocialByEmployeeIds(new ArrayList() {{ add(item.getEmployeeId()); @@ -571,6 +631,14 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { if (socialJson != null) { socialJson.forEach((k, v) -> socialSet.add(k)); } + //如果需要区分个人和公司福利基数 + if (welBaseDiffSign) { + Map socialComJson = JSON.parseObject(socialItem.getSocialPaymentComBaseString(), new TypeReference>() { + }); + if (socialComJson != null) { + socialComJson.forEach((k, v) -> socialComSet.add(k)); + } + } } if (fundItem != null) { Map fundJson = JSON.parseObject(fundItem.getFundPaymentBaseString(), new TypeReference>() { @@ -578,6 +646,14 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { if (fundJson != null) { fundJson.forEach((k, v) -> fundSet.add(k)); } + //如果需要区分个人和公司福利基数 + if (welBaseDiffSign) { + Map fundComJson = JSON.parseObject(fundItem.getFundPaymentComBaseString(), new TypeReference>() { + }); + if (fundComJson != null) { + fundComJson.forEach((k, v) -> fundComSet.add(k)); + } + } } if (otherItem != null) { Map otherJson = JSON.parseObject(otherItem.getOtherPaymentBaseString(), new TypeReference>() { @@ -585,42 +661,92 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { if (otherJson != null) { otherJson.forEach((k, v) -> otherSet.add(k)); } + //如果需要区分个人和公司福利基数 + if (welBaseDiffSign) { + Map otherComJson = JSON.parseObject(otherItem.getOtherPaymentComBaseString(), new TypeReference>() { + }); + if (otherComJson != null) { + otherComJson.forEach((k, v) -> otherComSet.add(k)); + } + } } }); Map socialMap = new HashMap<>(); + Map socialComMap = new HashMap<>(); Map socialCollect = new HashMap<>(); Map customSocial = getICategoryMapper().listByWelfareType(WelfareTypeEnum.SOCIAL_SECURITY.getValue(), null).stream().collect(Collectors.toMap(ICategoryPO::getId, Function.identity())); Map sysSocial = getICategoryMapper().listByWelfareType(WelfareTypeEnum.SOCIAL_SECURITY.getValue(), DataTypeEnum.SYSTEM.getValue()).stream().collect(Collectors.toMap(ICategoryPO::getId, Function.identity())); socialCollect.putAll(customSocial); socialCollect.putAll(sysSocial); - socialSet.forEach(item -> { - if (socialCollect.containsKey(Long.valueOf(item))) { - socialMap.put(item, socialCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(100293, "申报基数")); - } - }); + if (welBaseDiffSign) { + socialSet.forEach(item -> { + if (socialCollect.containsKey(Long.valueOf(item))) { + socialMap.put(item + "per", socialCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人")); + } + }); + socialComSet.forEach(item -> { + if (socialCollect.containsKey(Long.valueOf(item))) { + socialComMap.put(item + "com", socialCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位")); + } + }); + } else { + socialSet.forEach(item -> { + if (socialCollect.containsKey(Long.valueOf(item))) { + socialMap.put(item, socialCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数")); + } + }); + } Map fundMap = new HashMap<>(); + Map fundComMap = new HashMap<>(); Map fundCollect = new HashMap<>(); Map customFund = getICategoryMapper().listByWelfareType(WelfareTypeEnum.ACCUMULATION_FUND.getValue(), null).stream().collect(Collectors.toMap(ICategoryPO::getId, Function.identity())); Map sysFund = getICategoryMapper().listByWelfareType(WelfareTypeEnum.ACCUMULATION_FUND.getValue(), DataTypeEnum.SYSTEM.getValue()).stream().collect(Collectors.toMap(ICategoryPO::getId, Function.identity())); fundCollect.putAll(customFund); fundCollect.putAll(sysFund); - fundSet.forEach(item -> { - if (fundCollect.containsKey(Long.valueOf(item))) { - fundMap.put(item, fundCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(100293, "申报基数")); - } - }); + if (welBaseDiffSign) { + fundSet.forEach(item -> { + if (fundCollect.containsKey(Long.valueOf(item))) { + fundMap.put(item + "per", fundCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人")); + } + }); + fundComSet.forEach(item -> { + if (fundCollect.containsKey(Long.valueOf(item))) { + fundComMap.put(item + "com", fundCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位")); + } + }); + } else { + fundSet.forEach(item -> { + if (fundCollect.containsKey(Long.valueOf(item))) { + fundMap.put(item, fundCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数")); + } + }); + } Map otherMap = new HashMap<>(); + Map otherComMap = new HashMap<>(); Map otherCollect = new HashMap<>(); Map customOther = getICategoryMapper().listByWelfareType(WelfareTypeEnum.OTHER.getValue(), null).stream().collect(Collectors.toMap(ICategoryPO::getId, Function.identity())); Map sysOther = getICategoryMapper().listByWelfareType(WelfareTypeEnum.OTHER.getValue(), DataTypeEnum.SYSTEM.getValue()).stream().collect(Collectors.toMap(ICategoryPO::getId, Function.identity())); otherCollect.putAll(customOther); otherCollect.putAll(sysOther); - otherSet.forEach(item -> { - if (otherCollect.containsKey(Long.valueOf(item))) { - otherMap.put(item, otherCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(100293, "申报基数")); - } - }); + if (welBaseDiffSign) { + otherSet.forEach(item -> { + if (otherCollect.containsKey(Long.valueOf(item))) { + otherMap.put(item + "per", otherCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人")); + } + }); + otherComSet.forEach(item -> { + if (otherCollect.containsKey(Long.valueOf(item))) { + otherComMap.put(item + "com", otherCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位")); + } + }); + } else { + otherSet.forEach(item -> { + if (otherCollect.containsKey(Long.valueOf(item))) { + otherMap.put(item, otherCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数")); + } + }); + } // map根据key排序 LinkedHashMap socialMapWithAscKey = socialMap.entrySet().stream() @@ -635,6 +761,23 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { .sorted(Map.Entry.comparingByKey()) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new)); + if (welBaseDiffSign) { + LinkedHashMap socialComMapWithAscKey = socialComMap.entrySet().stream() + .sorted(Map.Entry.comparingByKey()) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, + LinkedHashMap::new)); + LinkedHashMap fundComMapWithAscKey = fundComMap.entrySet().stream() + .sorted(Map.Entry.comparingByKey()) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, + LinkedHashMap::new)); + LinkedHashMap otherComMapWithAscKey = otherComMap.entrySet().stream() + .sorted(Map.Entry.comparingByKey()) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, + LinkedHashMap::new)); + socialMapWithAscKey.putAll(socialComMapWithAscKey); + fundMapWithAscKey.putAll(fundComMapWithAscKey); + otherMapWithAscKey.putAll(otherComMapWithAscKey); + } result.put(WelfareTypeEnum.SOCIAL_SECURITY.getValue(), socialMapWithAscKey); result.put(WelfareTypeEnum.ACCUMULATION_FUND.getValue(), fundMapWithAscKey); From 1c5249c76e1bf3aac4f4ed3096863eda22aa819c Mon Sep 17 00:00:00 2001 From: sy Date: Fri, 8 Dec 2023 11:16:18 +0800 Subject: [PATCH 10/92] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E6=A0=B8=E7=AE=97=E3=80=81=E6=98=8E=E7=BB=86=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E3=80=81=E5=AF=BC=E5=87=BA=E6=95=B0=E6=8D=AE=EF=BC=8C=E9=80=82?= =?UTF-8?q?=E9=85=8D=E6=8B=86=E5=88=86=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E5=92=8C=E5=85=AC=E5=8F=B8=E5=9F=BA=E6=95=B0?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIAccountBiz.java | 80 +++++- .../bo/InsuranceComparisonResultBO.java | 81 +++++- .../siaccount/po/ExcelInsuranceDetailPO.java | 18 ++ .../po/InsuranceAccountDetailTempPO.java | 18 ++ .../InsuranceAccountDetailMapper.xml | 36 ++- .../siaccount/SIAccountDetailTempMapper.xml | 30 ++- .../service/impl/ColumnBuildServiceImpl.java | 127 +++++++-- .../service/impl/RecordsBuildServiceImpl.java | 129 ++++++++- .../impl/SIAComparisonResultServiceImpl.java | 8 +- .../service/impl/SIAccountServiceImpl.java | 54 +++- .../service/impl/SIExportServiceImpl.java | 250 +++++++++++++++--- .../service/impl/SIRecessionServiceImpl.java | 3 + .../salary/web/SIAccountController.java | 4 +- 13 files changed, 730 insertions(+), 108 deletions(-) diff --git a/src/com/engine/salary/biz/SIAccountBiz.java b/src/com/engine/salary/biz/SIAccountBiz.java index 34b6aae17..c6df56a19 100644 --- a/src/com/engine/salary/biz/SIAccountBiz.java +++ b/src/com/engine/salary/biz/SIAccountBiz.java @@ -631,11 +631,13 @@ public class SIAccountBiz extends Service { } public InsuranceAccountDetailPO accountOther(InsuranceAccountDetailPO insuranceAccountDetailPO, InsuranceArchivesAccountPO accountPO, String billMonth, String tenantKey) { + boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); if (accountPO.getOther() != null) { InsuranceArchivesOtherSchemePO otherPO = accountPO.getOther(); insuranceAccountDetailPO.setOtherPayOrg(otherPO.getPaymentOrganization()); insuranceAccountDetailPO.setOtherSchemeId(otherPO.getOtherSchemeId()); insuranceAccountDetailPO.setOtherPaymentBaseString(otherPO.getOtherPaymentBaseString()); + insuranceAccountDetailPO.setOtherPaymentComBaseString(otherPO.getOtherPaymentComBaseString()); //判断是否在起始缴纳月和最后缴纳月之间 Boolean inDataRange = SalaryDateUtil.monthInRange(insuranceAccountDetailPO.getBillMonth(), otherPO.getOtherStartTime(), otherPO.getOtherEndTime()); if ((Objects.equals(NonPaymentEnum.YES.getValue(), otherPO.getNonPayment()) || otherPO.getNonPayment() == null) && otherPO.getOtherSchemeId() != null && inDataRange) { @@ -719,7 +721,13 @@ public class SIAccountBiz extends Service { .collect( Collectors.toMap(InsuranceSchemeDetailPO::getInsuranceId, Function.identity())); //档案中包含的基数信息 - HashMap archivesCom = JSON.parseObject(otherPO.getOtherPaymentBaseString(), new HashMap().getClass()); +// HashMap archivesCom = JSON.parseObject(otherPO.getOtherPaymentBaseString(), new HashMap().getClass()); + HashMap archivesCom = new HashMap<>(); + if (welBaseDiffSign) { + archivesCom = JSON.parseObject(otherPO.getOtherPaymentComBaseString(), new HashMap().getClass()); + } else { + archivesCom = JSON.parseObject(otherPO.getOtherPaymentBaseString(), new HashMap().getClass()); + } //需要核算其他的福利id 单位 List needArchivesCom = new ArrayList<>(); if (archivesCom != null) { @@ -742,10 +750,11 @@ public class SIAccountBiz extends Service { List otherComList = new ArrayList<>(); Map otherComJsonMap = new HashMap<>(); + HashMap finalArchivesCom = archivesCom; needArchivesCom.stream().forEach(e -> { InsuranceSchemeDetailPO po = otherCom.get(e); BigDecimal paymentProportion = new BigDecimal(StringUtils.isBlank(po.getPaymentProportion()) ? "0" : po.getPaymentProportion()).divide(new BigDecimal("100")); - BigDecimal paymentNum = new BigDecimal((ObjectUtils.isEmpty(archivesCom) || StringUtils.isBlank(archivesCom.get(String.valueOf(e)))) ? "0" : archivesCom.get(String.valueOf(e))); + BigDecimal paymentNum = new BigDecimal((ObjectUtils.isEmpty(finalArchivesCom) || StringUtils.isBlank(finalArchivesCom.get(String.valueOf(e)))) ? "0" : finalArchivesCom.get(String.valueOf(e))); BigDecimal fixedCost = StringUtils.isBlank(po.getFixedCost()) ? new BigDecimal("0") : new BigDecimal(po.getFixedCost()); Integer newScale = po.getValidNum() == null ? 0 : po.getValidNum(); // BigDecimal result = SalaryEntityUtil.carryRule(newScale, po.getRententionRule(), paymentNum.multiply(paymentProportion).add(fixedCost)); @@ -787,6 +796,7 @@ public class SIAccountBiz extends Service { public InsuranceAccountDetailPO accountFund(InsuranceAccountDetailPO insuranceAccountDetailPO, InsuranceArchivesAccountPO accountPO, String billMonth, String tenantKey) { + boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); if (accountPO.getFund() != null) { InsuranceArchivesFundSchemePO fundPO = accountPO.getFund(); insuranceAccountDetailPO.setFundPayOrg(fundPO.getPaymentOrganization()); @@ -794,6 +804,7 @@ public class SIAccountBiz extends Service { insuranceAccountDetailPO.setSupplementFundAccount(fundPO.getSupplementFundAccount()); insuranceAccountDetailPO.setFundSchemeId(fundPO.getFundSchemeId()); insuranceAccountDetailPO.setFundPaymentBaseString(fundPO.getFundPaymentBaseString()); + insuranceAccountDetailPO.setFundPaymentComBaseString(fundPO.getFundPaymentComBaseString()); //判断是否在起始缴纳月和最后缴纳月之间 Boolean inDataRange = SalaryDateUtil.monthInRange(insuranceAccountDetailPO.getBillMonth(), fundPO.getFundStartTime(), fundPO.getFundEndTime()); if ((NonPaymentEnum.YES.getValue() == fundPO.getNonPayment() || fundPO.getNonPayment() == null) && fundPO.getFundSchemeId() != null && inDataRange) { @@ -876,7 +887,13 @@ public class SIAccountBiz extends Service { .collect( Collectors.toMap(InsuranceSchemeDetailPO::getInsuranceId, Function.identity())); //档案中包含的基数信息 - HashMap archivesCom = JSON.parseObject(fundPO.getFundPaymentBaseString(), new HashMap().getClass()); +// HashMap archivesCom = JSON.parseObject(fundPO.getFundPaymentBaseString(), new HashMap().getClass()); + HashMap archivesCom = new HashMap<>(); + if (welBaseDiffSign) { + archivesCom = JSON.parseObject(fundPO.getFundPaymentComBaseString(), new HashMap().getClass()); + } else { + archivesCom = JSON.parseObject(fundPO.getFundPaymentBaseString(), new HashMap().getClass()); + } //需要核算公积金的福利id 单位 List needArchivesCom = new ArrayList<>(); if (archivesCom != null) { @@ -899,10 +916,11 @@ public class SIAccountBiz extends Service { List fundComList = new ArrayList<>(); Map fundComJsonMap = new HashMap<>(); + HashMap finalArchivesCom = archivesCom; needArchivesCom.stream().forEach(e -> { InsuranceSchemeDetailPO po = fundCom.get(e); BigDecimal paymentProportion = new BigDecimal(StringUtils.isBlank(po.getPaymentProportion()) ? "0" : po.getPaymentProportion()).divide(new BigDecimal("100")); - BigDecimal paymentNum = new BigDecimal((ObjectUtils.isEmpty(archivesCom) || StringUtils.isBlank(archivesCom.get(String.valueOf(e)))) ? "0" : archivesCom.get(String.valueOf(e))); + BigDecimal paymentNum = new BigDecimal((ObjectUtils.isEmpty(finalArchivesCom) || StringUtils.isBlank(finalArchivesCom.get(String.valueOf(e)))) ? "0" : finalArchivesCom.get(String.valueOf(e))); BigDecimal fixedCost = StringUtils.isBlank(po.getFixedCost()) ? new BigDecimal("0") : new BigDecimal(po.getFixedCost()); Integer newScale = po.getValidNum() == null ? 0 : po.getValidNum(); // BigDecimal result = SalaryEntityUtil.carryRule(newScale, po.getRententionRule(), paymentNum.multiply(paymentProportion).add(fixedCost)); @@ -945,12 +963,14 @@ public class SIAccountBiz extends Service { public InsuranceAccountDetailPO accountSocial(InsuranceAccountDetailPO insuranceAccountDetailPO, InsuranceArchivesAccountPO accountPO, String billMonth, String tenantKey) { + boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); if (accountPO.getSocial() != null) { InsuranceArchivesSocialSchemePO socialPO = accountPO.getSocial(); insuranceAccountDetailPO.setSocialPayOrg(socialPO.getPaymentOrganization()); insuranceAccountDetailPO.setSocialAccount(socialPO.getSocialAccount()); insuranceAccountDetailPO.setSocialSchemeId(socialPO.getSocialSchemeId()); insuranceAccountDetailPO.setSocialPaymentBaseString(socialPO.getSocialPaymentBaseString()); + insuranceAccountDetailPO.setSocialPaymentComBaseString(socialPO.getSocialPaymentComBaseString()); //判断是否在起始缴纳月和最后缴纳月之间 Boolean inDataRange = SalaryDateUtil.monthInRange(insuranceAccountDetailPO.getBillMonth(), socialPO.getSocialStartTime(), socialPO.getSocialEndTime()); if ((NonPaymentEnum.YES.getValue().equals(socialPO.getNonPayment()) || socialPO.getNonPayment() == null) && socialPO.getSocialSchemeId() != null && inDataRange) { @@ -1036,7 +1056,13 @@ public class SIAccountBiz extends Service { .collect( Collectors.toMap(InsuranceSchemeDetailPO::getInsuranceId, Function.identity())); //档案中包含的基数信息 - HashMap archivesCom = JSON.parseObject(socialPO.getSocialPaymentBaseString(), new HashMap().getClass()); +// HashMap archivesCom = JSON.parseObject(socialPO.getSocialPaymentBaseString(), new HashMap().getClass()); + HashMap archivesCom = new HashMap<>(); + if (welBaseDiffSign) { + archivesCom = JSON.parseObject(socialPO.getSocialPaymentComBaseString(), new HashMap().getClass()); + } else { + archivesCom = JSON.parseObject(socialPO.getSocialPaymentBaseString(), new HashMap().getClass()); + } //需要核算社保的福利id 单位 List needArchivesCom = new ArrayList<>(); if (archivesCom != null) { @@ -1059,10 +1085,11 @@ public class SIAccountBiz extends Service { List socialCom = new ArrayList<>(); Map sociaComJsonMap = new HashMap<>(); + HashMap finalArchivesCom = archivesCom; needArchivesCom.stream().forEach(e -> { InsuranceSchemeDetailPO po = schemeCom.get(e); BigDecimal paymentProportion = new BigDecimal(StringUtils.isBlank(po.getPaymentProportion()) ? "0" : po.getPaymentProportion()).divide(new BigDecimal("100")); - BigDecimal paymentNum = new BigDecimal((ObjectUtils.isEmpty(archivesCom) || StringUtils.isBlank(archivesCom.get(String.valueOf(e)))) ? "0" : archivesCom.get(String.valueOf(e))); + BigDecimal paymentNum = new BigDecimal((ObjectUtils.isEmpty(finalArchivesCom) || StringUtils.isBlank(finalArchivesCom.get(String.valueOf(e)))) ? "0" : finalArchivesCom.get(String.valueOf(e))); BigDecimal fixedCost = StringUtils.isBlank(po.getFixedCost()) ? new BigDecimal("0") : new BigDecimal(po.getFixedCost()); Integer newScale = po.getValidNum() == null ? 0 : po.getValidNum(); // BigDecimal result = SalaryEntityUtil.carryRule(newScale, po.getRententionRule(), paymentNum.multiply(paymentProportion).add(fixedCost)); @@ -1510,7 +1537,6 @@ public class SIAccountBiz extends Service { } else { accountFund(insuranceAccountDetailPO, accountPO, baseParam.getSupplementaryMonth()); } - } if (projects.contains(ProjectTypeEnum.OTHER.getValue())) { @@ -1532,11 +1558,13 @@ public class SIAccountBiz extends Service { public InsuranceAccountDetailPO accountOther(InsuranceAccountDetailPO insuranceAccountDetailPO, InsuranceArchivesAccountPO accountPO, String billMonth) { + boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); if (accountPO.getOther() != null) { InsuranceArchivesOtherSchemePO otherPO = accountPO.getOther(); insuranceAccountDetailPO.setOtherPayOrg(otherPO.getPaymentOrganization()); insuranceAccountDetailPO.setOtherSchemeId(otherPO.getOtherSchemeId()); insuranceAccountDetailPO.setOtherPaymentBaseString(otherPO.getOtherPaymentBaseString()); + insuranceAccountDetailPO.setOtherPaymentComBaseString(otherPO.getOtherPaymentComBaseString()); //判断是否在起始缴纳月和最后缴纳月之间 Boolean inDataRange = SalaryDateUtil.monthInRange(billMonth, otherPO.getOtherStartTime(), otherPO.getOtherEndTime()); if ((Objects.equals(NonPaymentEnum.YES.getValue(), otherPO.getNonPayment()) || otherPO.getNonPayment() == null) && otherPO.getOtherSchemeId() != null && inDataRange) { @@ -1611,7 +1639,13 @@ public class SIAccountBiz extends Service { .collect( Collectors.toMap(InsuranceSchemeDetailPO::getInsuranceId, Function.identity())); //档案中包含的基数信息 - HashMap archivesCom = JSON.parseObject(otherPO.getOtherPaymentBaseString(), new HashMap().getClass()); +// HashMap archivesCom = JSON.parseObject(otherPO.getOtherPaymentBaseString(), new HashMap().getClass()); + HashMap archivesCom = new HashMap<>(); + if (welBaseDiffSign) { + archivesCom = JSON.parseObject(otherPO.getOtherPaymentComBaseString(), new HashMap().getClass()); + } else { + archivesCom = JSON.parseObject(otherPO.getOtherPaymentBaseString(), new HashMap().getClass()); + } //需要核算其他的福利id 单位 List needArchivesCom = new ArrayList<>(); if (archivesCom != null) { @@ -1626,10 +1660,11 @@ public class SIAccountBiz extends Service { List otherComList = new ArrayList<>(); Map otherComJsonMap = new HashMap<>(); + HashMap finalArchivesCom = archivesCom; needArchivesCom.stream().forEach(e -> { InsuranceSchemeDetailPO po = otherCom.get(e); BigDecimal paymentProportion = new BigDecimal(StringUtils.isBlank(po.getPaymentProportion()) ? "0" : po.getPaymentProportion()).divide(new BigDecimal("100")); - BigDecimal paymentNum = new BigDecimal((ObjectUtils.isEmpty(archivesCom) || StringUtils.isBlank(archivesCom.get(String.valueOf(e)))) ? "0" : archivesCom.get(String.valueOf(e))); + BigDecimal paymentNum = new BigDecimal((ObjectUtils.isEmpty(finalArchivesCom) || StringUtils.isBlank(finalArchivesCom.get(String.valueOf(e)))) ? "0" : finalArchivesCom.get(String.valueOf(e))); BigDecimal fixedCost = StringUtils.isBlank(po.getFixedCost()) ? new BigDecimal("0") : new BigDecimal(po.getFixedCost()); Integer newScale = po.getValidNum() == null ? 0 : po.getValidNum(); // BigDecimal result = SalaryEntityUtil.carryRule(newScale, po.getRententionRule(), paymentNum.multiply(paymentProportion).add(fixedCost)); @@ -1671,6 +1706,7 @@ public class SIAccountBiz extends Service { } public InsuranceAccountDetailPO accountFund(InsuranceAccountDetailPO insuranceAccountDetailPO, InsuranceArchivesAccountPO accountPO, String billMonth) { + boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); if (accountPO.getFund() != null) { InsuranceArchivesFundSchemePO fundPO = accountPO.getFund(); insuranceAccountDetailPO.setFundPayOrg(fundPO.getPaymentOrganization()); @@ -1678,6 +1714,7 @@ public class SIAccountBiz extends Service { insuranceAccountDetailPO.setSupplementFundAccount(fundPO.getSupplementFundAccount()); insuranceAccountDetailPO.setFundSchemeId(fundPO.getFundSchemeId()); insuranceAccountDetailPO.setFundPaymentBaseString(fundPO.getFundPaymentBaseString()); + insuranceAccountDetailPO.setFundPaymentComBaseString(fundPO.getFundPaymentComBaseString()); //判断是否在起始缴纳月和最后缴纳月之间 Boolean inDataRange = SalaryDateUtil.monthInRange(billMonth, fundPO.getFundStartTime(), fundPO.getFundEndTime()); if ((Objects.equals(NonPaymentEnum.YES.getValue(), fundPO.getNonPayment()) || fundPO.getNonPayment() == null) && fundPO.getFundSchemeId() != null && inDataRange) { @@ -1751,7 +1788,13 @@ public class SIAccountBiz extends Service { .collect( Collectors.toMap(InsuranceSchemeDetailPO::getInsuranceId, Function.identity())); //档案中包含的基数信息 - HashMap archivesCom = JSON.parseObject(fundPO.getFundPaymentBaseString(), new HashMap().getClass()); +// HashMap archivesCom = JSON.parseObject(fundPO.getFundPaymentBaseString(), new HashMap().getClass()); + HashMap archivesCom = new HashMap<>(); + if (welBaseDiffSign) { + archivesCom = JSON.parseObject(fundPO.getFundPaymentComBaseString(), new HashMap().getClass()); + } else { + archivesCom = JSON.parseObject(fundPO.getFundPaymentBaseString(), new HashMap().getClass()); + } //需要核算公积金的福利id 单位 List needArchivesCom = new ArrayList<>(); if (archivesCom != null) { @@ -1766,10 +1809,11 @@ public class SIAccountBiz extends Service { List fundComList = new ArrayList<>(); Map fundComJsonMap = new HashMap<>(); + HashMap finalArchivesCom = archivesCom; needArchivesCom.stream().forEach(e -> { InsuranceSchemeDetailPO po = fundCom.get(e); BigDecimal paymentProportion = new BigDecimal(StringUtils.isBlank(po.getPaymentProportion()) ? "0" : po.getPaymentProportion()).divide(new BigDecimal("100")); - BigDecimal paymentNum = new BigDecimal((ObjectUtils.isEmpty(archivesCom) || StringUtils.isBlank(archivesCom.get(String.valueOf(e)))) ? "0" : archivesCom.get(String.valueOf(e))); + BigDecimal paymentNum = new BigDecimal((ObjectUtils.isEmpty(finalArchivesCom) || StringUtils.isBlank(finalArchivesCom.get(String.valueOf(e)))) ? "0" : finalArchivesCom.get(String.valueOf(e))); BigDecimal fixedCost = StringUtils.isBlank(po.getFixedCost()) ? new BigDecimal("0") : new BigDecimal(po.getFixedCost()); Integer newScale = po.getValidNum() == null ? 0 : po.getValidNum(); // BigDecimal result = SalaryEntityUtil.carryRule(newScale, po.getRententionRule(), paymentNum.multiply(paymentProportion).add(fixedCost)); @@ -1812,12 +1856,14 @@ public class SIAccountBiz extends Service { } public InsuranceAccountDetailPO accountSocial(InsuranceAccountDetailPO insuranceAccountDetailPO, InsuranceArchivesAccountPO accountPO, String billMonth) { + boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); if (accountPO.getSocial() != null) { InsuranceArchivesSocialSchemePO socialPO = accountPO.getSocial(); insuranceAccountDetailPO.setSocialPayOrg(socialPO.getPaymentOrganization()); insuranceAccountDetailPO.setSocialAccount(socialPO.getSocialAccount()); insuranceAccountDetailPO.setSocialSchemeId(socialPO.getSocialSchemeId()); insuranceAccountDetailPO.setSocialPaymentBaseString(socialPO.getSocialPaymentBaseString()); + insuranceAccountDetailPO.setSocialPaymentComBaseString(socialPO.getSocialPaymentComBaseString()); //判断是否在起始缴纳月和最后缴纳月之间 Boolean inDataRange = SalaryDateUtil.monthInRange(billMonth, socialPO.getSocialStartTime(), socialPO.getSocialEndTime()); if ((Objects.equals(NonPaymentEnum.YES.getValue(), socialPO.getNonPayment()) || socialPO.getNonPayment() == null) && socialPO.getSocialSchemeId() != null && inDataRange) { @@ -1896,7 +1942,13 @@ public class SIAccountBiz extends Service { .collect( Collectors.toMap(InsuranceSchemeDetailPO::getInsuranceId, Function.identity())); //档案中包含的基数信息 - HashMap archivesCom = JSON.parseObject(socialPO.getSocialPaymentBaseString(), new HashMap().getClass()); +// HashMap archivesCom = JSON.parseObject(socialPO.getSocialPaymentBaseString(), new HashMap().getClass()); + HashMap archivesCom = new HashMap<>(); + if (welBaseDiffSign) { + archivesCom = JSON.parseObject(socialPO.getSocialPaymentComBaseString(), new HashMap().getClass()); + } else { + archivesCom = JSON.parseObject(socialPO.getSocialPaymentBaseString(), new HashMap().getClass()); + } //需要核算社保的福利id 单位 List needArchivesCom = new ArrayList<>(); if (archivesCom != null) { @@ -1911,10 +1963,11 @@ public class SIAccountBiz extends Service { List socialCom = new ArrayList<>(); Map sociaComJsonMap = new HashMap<>(); + HashMap finalArchivesCom = archivesCom; needArchivesCom.stream().forEach(e -> { InsuranceSchemeDetailPO po = schemeCom.get(e); BigDecimal paymentProportion = new BigDecimal(StringUtils.isBlank(po.getPaymentProportion()) ? "0" : po.getPaymentProportion()).divide(new BigDecimal("100")); - BigDecimal paymentNum = new BigDecimal((ObjectUtils.isEmpty(archivesCom) || StringUtils.isBlank(archivesCom.get(String.valueOf(e)))) ? "0" : archivesCom.get(String.valueOf(e))); + BigDecimal paymentNum = new BigDecimal((ObjectUtils.isEmpty(finalArchivesCom) || StringUtils.isBlank(finalArchivesCom.get(String.valueOf(e)))) ? "0" : finalArchivesCom.get(String.valueOf(e))); BigDecimal fixedCost = StringUtils.isBlank(po.getFixedCost()) ? new BigDecimal("0") : new BigDecimal(po.getFixedCost()); Integer newScale = po.getValidNum() == null ? 0 : po.getValidNum(); // BigDecimal result = SalaryEntityUtil.carryRule(newScale, po.getRententionRule(), paymentNum.multiply(paymentProportion).add(fixedCost)); @@ -1964,6 +2017,7 @@ public class SIAccountBiz extends Service { insuranceAccountDetailPO.setSocialAccount(socialPO.getSocialAccount()); insuranceAccountDetailPO.setSocialSchemeId(socialPO.getSocialSchemeId()); insuranceAccountDetailPO.setSocialPaymentBaseString(socialPO.getSocialPaymentBaseString()); + insuranceAccountDetailPO.setSocialPaymentComBaseString(socialPO.getSocialPaymentComBaseString()); //判断是否在起始缴纳月和最后缴纳月之间 Boolean inDataRange = SalaryDateUtil.monthInRange(billMonth, socialPO.getSocialStartTime(), socialPO.getSocialEndTime()); diff --git a/src/com/engine/salary/entity/siaccount/bo/InsuranceComparisonResultBO.java b/src/com/engine/salary/entity/siaccount/bo/InsuranceComparisonResultBO.java index 6a85ddd20..79909c1e2 100644 --- a/src/com/engine/salary/entity/siaccount/bo/InsuranceComparisonResultBO.java +++ b/src/com/engine/salary/entity/siaccount/bo/InsuranceComparisonResultBO.java @@ -41,7 +41,7 @@ public class InsuranceComparisonResultBO { * 构建福利核算结果列表的表头(线下对比) * */ - public static List buildTableColumns4ComparisonResult(Set insuranceBaseSet, Set insurancePerPaySet, Set insuranceComPaySet) { + public static List buildTableColumns4ComparisonResult(Set insuranceBaseSet, Set insurancePerPaySet, Set insuranceComPaySet, boolean welBaseDiffSign) { List listAll = MapperProxyFactory.getProxy(ICategoryMapper.class).listAll(); List socialWelfareList = listAll.stream().filter(e -> e.getWelfareType() == 1 && e.getIsUse() == 1 && insuranceBaseSet.contains(e.getId())).collect(Collectors.toList()); @@ -67,21 +67,63 @@ public class InsuranceComparisonResultBO { columns.add(new Column("社保账号", "socialAccount", "socialAccount")); columns.add(new Column("社保方案名称", "socialSchemeName", "socialSchemeName")); //组装社保基数 - for (ICategoryPO po : socialWelfareList) { - columns.add(new Column(po.getInsuranceName() + "申报基数", po.getId() + "socialBase", po.getId() + "socialBase")); + if (welBaseDiffSign) { + List socialComColumns = Lists.newArrayList(); + for (ICategoryPO po : socialWelfareList) { + columns.add(new Column(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人") + , po.getId() + "socialPerBase", po.getId() + "socialPerBase")); + socialComColumns.add(new Column(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位") + , po.getId() + "socialComBase", po.getId() + "socialComBase")); + } + columns.addAll(socialComColumns); + } else { + for (ICategoryPO po : socialWelfareList) { + columns.add(new Column(po.getInsuranceName() + "申报基数", po.getId() + "socialBase", po.getId() + "socialBase")); + } } +// for (ICategoryPO po : socialWelfareList) { +// columns.add(new Column(po.getInsuranceName() + "申报基数", po.getId() + "socialBase", po.getId() + "socialBase")); +// } columns.add(new Column("公积金账号", "fundAccount", "fundAccount")); columns.add(new Column("公积金方案名称", "fundSchemeName", "fundSchemeName")); //组装公积金基数 - for (ICategoryPO po : fundWelfareList) { - columns.add(new Column(po.getInsuranceName() + "申报基数", po.getId() + "fundBase", po.getId() + "fundBase")); + if (welBaseDiffSign) { + List fundComColumns = Lists.newArrayList(); + for (ICategoryPO po : fundWelfareList) { + columns.add(new Column(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人") + , po.getId() + "fundPerBase", po.getId() + "fundPerBase")); + fundComColumns.add(new Column(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位") + , po.getId() + "fundComBase", po.getId() + "fundComBase")); + } + columns.addAll(fundComColumns); + } else { + for (ICategoryPO po : fundWelfareList) { + columns.add(new Column(po.getInsuranceName() + "申报基数", po.getId() + "fundBase", po.getId() + "fundBase")); + } } +// for (ICategoryPO po : fundWelfareList) { +// columns.add(new Column(po.getInsuranceName() + "申报基数", po.getId() + "fundBase", po.getId() + "fundBase")); +// } columns.add(new Column("补充公积金账号", "supplementFundAccount", "supplementFundAccount")); columns.add(new Column("其他福利方案名称", "otherSchemeName", "otherSchemeName")); //组装其他福利基数 - for (ICategoryPO po : otherWelfareList) { - columns.add(new Column(po.getInsuranceName() + "申报基数", po.getId() + "otherBase", po.getId() + "otherBase")); + if (welBaseDiffSign) { + List otherComColumns = Lists.newArrayList(); + for (ICategoryPO po : otherWelfareList) { + columns.add(new Column(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人") + , po.getId() + "otherPerBase", po.getId() + "otherPerBase")); + otherComColumns.add(new Column(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位") + , po.getId() + "otherComBase", po.getId() + "otherComBase")); + } + columns.addAll(otherComColumns); + } else { + for (ICategoryPO po : otherWelfareList) { + columns.add(new Column(po.getInsuranceName() + "申报基数", po.getId() + "otherBase", po.getId() + "otherBase")); + } } +// for (ICategoryPO po : otherWelfareList) { +// columns.add(new Column(po.getInsuranceName() + "申报基数", po.getId() + "otherBase", po.getId() + "otherBase")); +// } //社保个人(生育保险个人、工伤保险个人、失业保险个人、养老保险个人、医疗保险个人) for (ICategoryPO po : socialWelPerList) { @@ -127,7 +169,8 @@ public class InsuranceComparisonResultBO { * 构建福利核算线下对比结果 * */ - public static List> buildComparisonTableData(List accountExportPOS, List excelAccountExportPOS, Map schemeIdNameMap) { + public static List> buildComparisonTableData(List accountExportPOS, List excelAccountExportPOS + , Map schemeIdNameMap, boolean welBaseDiffSign) { Map> excelResultMap = SalaryEntityUtil.group2Map(excelAccountExportPOS, ExcelAccountExportPO::getEmployeeId); // Map> acctResultMap = SalaryEntityUtil.group2Map(accountExportPOS, AccountExportPO::getWorkcode); @@ -177,6 +220,28 @@ public class InsuranceComparisonResultBO { if (excelResultValueList != null && excelResultValueList.size() == 1) { excelAccountExportPO = excelResultValueList.get(0); } + if (welBaseDiffSign) { + //社保基数-个人,socialPaymentBaseString + welfareElementCompare(map, accountExportPO.getSocialPaymentBaseString(), excelAccountExportPO.getSocialPaymentBaseString(), "PerBase", 1); + //公积金基数-个人,fundPaymentBaseString + welfareElementCompare(map, accountExportPO.getFundPaymentBaseString(), excelAccountExportPO.getFundPaymentBaseString(), "PerBase", 2); + //其他福利基数-个人,otherPaymentBaseString + welfareElementCompare(map, accountExportPO.getOtherPaymentBaseString(), excelAccountExportPO.getOtherPaymentBaseString(), "PerBase", 3); + + //社保基数-公司,socialPaymentComBaseString + welfareElementCompare(map, accountExportPO.getSocialPaymentComBaseString(), excelAccountExportPO.getSocialPaymentComBaseString(), "ComBase", 1); + //公积金基数-公司,fundPaymentComBaseString + welfareElementCompare(map, accountExportPO.getFundPaymentComBaseString(), excelAccountExportPO.getFundPaymentComBaseString(), "ComBase", 2); + //其他福利基数-公司,otherPaymentComBaseString + welfareElementCompare(map, accountExportPO.getOtherPaymentComBaseString(), excelAccountExportPO.getOtherPaymentComBaseString(), "ComBase", 3); + } else { + //社保基数,socialPaymentBaseString + welfareElementCompare(map, accountExportPO.getSocialPaymentBaseString(), excelAccountExportPO.getSocialPaymentBaseString(), "Base", 1); + //公积金基数,fundPaymentBaseString + welfareElementCompare(map, accountExportPO.getFundPaymentBaseString(), excelAccountExportPO.getFundPaymentBaseString(), "Base", 2); + //其他福利基数,otherPaymentBaseString + welfareElementCompare(map, accountExportPO.getOtherPaymentBaseString(), excelAccountExportPO.getOtherPaymentBaseString(), "Base", 3); + } //社保基数,socialPaymentBaseString welfareElementCompare(map, accountExportPO.getSocialPaymentBaseString(), excelAccountExportPO.getSocialPaymentBaseString(), "Base", 1); //公积金基数,fundPaymentBaseString diff --git a/src/com/engine/salary/entity/siaccount/po/ExcelInsuranceDetailPO.java b/src/com/engine/salary/entity/siaccount/po/ExcelInsuranceDetailPO.java index 4e7889544..9660b8602 100644 --- a/src/com/engine/salary/entity/siaccount/po/ExcelInsuranceDetailPO.java +++ b/src/com/engine/salary/entity/siaccount/po/ExcelInsuranceDetailPO.java @@ -101,6 +101,12 @@ public class ExcelInsuranceDetailPO { @Encrypt private String socialPaymentBaseString; + /** + * 社保缴纳基数——单位 + */ + @Encrypt + private String socialPaymentComBaseString; + /** * 公积金方案ID */ @@ -112,6 +118,12 @@ public class ExcelInsuranceDetailPO { @Encrypt private String fundPaymentBaseString; + /** + * 公积金缴纳基数——单位 + */ + @Encrypt + private String fundPaymentComBaseString; + /** * 其他福利方案id */ @@ -123,6 +135,12 @@ public class ExcelInsuranceDetailPO { @Encrypt private String otherPaymentBaseString; + /** + * 其他福利缴纳基数——单位 + */ + @Encrypt + private String otherPaymentComBaseString; + /** * 社保个人缴费明细 */ diff --git a/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailTempPO.java b/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailTempPO.java index 50897c6b2..dc8c1c2c0 100644 --- a/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailTempPO.java +++ b/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailTempPO.java @@ -102,6 +102,11 @@ public class InsuranceAccountDetailTempPO { @Encrypt private String socialPaymentBaseString; + /** + * 社保缴纳基数——单位 + */ + @Encrypt + private String socialPaymentComBaseString; /** * 公积金方案ID */ @@ -113,6 +118,12 @@ public class InsuranceAccountDetailTempPO { @Encrypt private String fundPaymentBaseString; + /** + * 公积金缴纳基数——单位 + */ + @Encrypt + private String fundPaymentComBaseString; + /** * 其他福利方案id */ @@ -124,6 +135,13 @@ public class InsuranceAccountDetailTempPO { @Encrypt private String otherPaymentBaseString; + /** + * 其他福利缴纳基数——单位 + */ + @Encrypt + private String otherPaymentComBaseString; + + /** * 社保个人缴费明细 */ diff --git a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml index 2e52ce986..925718b0b 100644 --- a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml +++ b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml @@ -18,10 +18,13 @@ + + + @@ -69,10 +72,13 @@ , t.other_pay_org , t.social_scheme_id , t.social_payment_base_string + , t.social_payment_com_base_string , t.fund_scheme_id , t.fund_payment_base_string + , t.fund_payment_com_base_string , t.other_scheme_id , t.other_payment_base_string + , t.other_payment_com_base_string , t.social_per_json , t.social_per_sum , t.fund_per_json @@ -117,10 +123,13 @@ , t.other_pay_org , t.social_scheme_id , t.social_payment_base_string + , t.social_payment_com_base_string , t.fund_scheme_id , t.fund_payment_base_string + , t.fund_payment_com_base_string , t.other_scheme_id , t.other_payment_base_string + , t.other_payment_com_base_string , t.social_per_json , t.social_per_sum , t.fund_per_json @@ -420,7 +429,8 @@ t.other_com_json,t.social_per_sum,t.social_com_sum, t.fund_per_sum,t.fund_com_sum,t.other_per_sum, t.other_com_sum,t.per_sum,t.com_sum,t.payment_organization, - t.social_payment_base_string, t.fund_payment_base_string, t.other_payment_base_string + t.social_payment_base_string, t.fund_payment_base_string, t.other_payment_base_string, + t.social_payment_com_base_string, t.fund_payment_com_base_string, t.other_payment_com_base_string FROM hrsa_bill_detail t WHERE t.delete_type = 0 @@ -711,7 +721,8 @@ (employee_id,bill_month,bill_status,payment_status,supplementary_month,supplementary_projects,resource_from,social_pay_org,social_account,social_scheme_id,social_payment_base_string, fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json, social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum, - com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization) + com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization, + social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string) VALUES ( @@ -757,7 +768,10 @@ #{item.updateTime}, #{item.deleteType}, #{item.tenantKey}, - #{item.paymentOrganization} + #{item.paymentOrganization}, + #{item.socialPaymentComBaseString}, + #{item.fundPaymentComBaseString}, + #{item.otherPaymentComBaseString} ) @@ -766,7 +780,8 @@ (employee_id,bill_month,bill_status,payment_status,supplementary_month,supplementary_projects,resource_from,social_pay_org,social_account,social_scheme_id,social_payment_base_string, fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json, social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum, - com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization) + com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization, + social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string) select #{item.employeeId,jdbcType=DOUBLE}, @@ -811,7 +826,10 @@ #{item.updateTime}, #{item.deleteType}, #{item.tenantKey,jdbcType=VARCHAR}, - #{item.paymentOrganization,jdbcType=DOUBLE} + #{item.paymentOrganization,jdbcType=DOUBLE}, + #{item.socialPaymentComBaseString,jdbcType=VARCHAR}, + #{item.fundPaymentComBaseString,jdbcType=VARCHAR}, + #{item.otherPaymentComBaseString,jdbcType=VARCHAR} from dual @@ -821,7 +839,8 @@ (employee_id,bill_month,bill_status,payment_status,supplementary_month,supplementary_projects,resource_from,social_pay_org,social_account,social_scheme_id,social_payment_base_string, fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json, social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum, - com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization) + com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization, + social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string) VALUES ( #{item.employeeId}, @@ -866,7 +885,10 @@ #{item.updateTime}, #{item.deleteType}, #{item.tenantKey}, - #{item.paymentOrganization} + #{item.paymentOrganization}, + #{item.socialPaymentComBaseString}, + #{item.fundPaymentComBaseString}, + #{item.otherPaymentComBaseString} ) diff --git a/src/com/engine/salary/mapper/siaccount/SIAccountDetailTempMapper.xml b/src/com/engine/salary/mapper/siaccount/SIAccountDetailTempMapper.xml index f99461416..19b6fb3e5 100644 --- a/src/com/engine/salary/mapper/siaccount/SIAccountDetailTempMapper.xml +++ b/src/com/engine/salary/mapper/siaccount/SIAccountDetailTempMapper.xml @@ -18,10 +18,13 @@ + + + @@ -68,10 +71,13 @@ , t.other_pay_org , t.social_scheme_id , t.social_payment_base_string + , t.social_payment_com_base_string , t.fund_scheme_id , t.fund_payment_base_string + , t.fund_payment_com_base_string , t.other_scheme_id , t.other_payment_base_string + , t.other_payment_com_base_string , t.social_per_json , t.social_per_sum , t.fund_per_json @@ -130,7 +136,8 @@ (employee_id,bill_month,bill_status,payment_status,supplementary_month,resource_from,social_pay_org,social_account,social_scheme_id,social_payment_base_string, fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json, social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum, - com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization) + com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization, + social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string) VALUES ( @@ -175,7 +182,10 @@ #{item.updateTime}, #{item.deleteType}, #{item.tenantKey}, - #{item.paymentOrganization} + #{item.paymentOrganization}, + #{item.socialPaymentComBaseString}, + #{item.fundPaymentComBaseString}, + #{item.otherPaymentComBaseString} ) @@ -184,7 +194,8 @@ (employee_id,bill_month,bill_status,payment_status,supplementary_month,resource_from,social_pay_org,social_account,social_scheme_id,social_payment_base_string, fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json, social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum, - com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization) + com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization, + social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string) select @@ -229,7 +240,10 @@ #{item.updateTime}, #{item.deleteType}, #{item.tenantKey,jdbcType=VARCHAR}, - #{item.paymentOrganization,jdbcType=DOUBLE} + #{item.paymentOrganization,jdbcType=DOUBLE}, + #{item.socialPaymentComBaseString,jdbcType=VARCHAR}, + #{item.fundPaymentComBaseString,jdbcType=VARCHAR}, + #{item.otherPaymentComBaseString,jdbcType=VARCHAR} from dual @@ -239,7 +253,8 @@ (employee_id,bill_month,bill_status,payment_status,supplementary_month,resource_from,social_pay_org,social_account,social_scheme_id,social_payment_base_string, fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json, social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum, - com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization) + com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization, + social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string) VALUES ( #{item.employeeId}, @@ -283,7 +298,10 @@ #{item.updateTime}, #{item.deleteType}, #{item.tenantKey}, - #{item.paymentOrganization} + #{item.paymentOrganization}, + #{item.socialPaymentComBaseString}, + #{item.fundPaymentComBaseString}, + #{item.otherPaymentComBaseString} ) diff --git a/src/com/engine/salary/service/impl/ColumnBuildServiceImpl.java b/src/com/engine/salary/service/impl/ColumnBuildServiceImpl.java index f15ae19f1..5312f1c51 100644 --- a/src/com/engine/salary/service/impl/ColumnBuildServiceImpl.java +++ b/src/com/engine/salary/service/impl/ColumnBuildServiceImpl.java @@ -1,6 +1,7 @@ package com.engine.salary.service.impl; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.TypeReference; import com.cloudstore.eccom.constant.WeaBoolAttr; import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.engine.core.impl.Service; @@ -31,6 +32,8 @@ import java.util.stream.Collectors; **/ public class ColumnBuildServiceImpl extends Service implements ColumnBuildService { + private SIArchivesBiz siArchivesBiz = new SIArchivesBiz(); + private ICategoryMapper getICategoryMapper() { return MapperProxyFactory.getProxy(ICategoryMapper.class); } @@ -122,58 +125,128 @@ public class ColumnBuildServiceImpl extends Service implements ColumnBuildServic } private Map> buildPaymentTitle(List pos, Map categoryIdNameMap, Long employeeId, String tenantKey) { + boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); Set socailIds = new HashSet<>(); Set fundIds = new HashSet<>(); Set otherIds = new HashSet<>(); + + Set socailComIds = new HashSet<>(); + Set fundComIds = new HashSet<>(); + Set otherComIds = new HashSet<>(); + Map> result = new HashMap<>(); pos.stream().forEach(item -> { - if (StringUtils.isNotBlank(item.getSocialPaymentBaseString())) { + if (StringUtils.isNotBlank(item.getSocialPaymentBaseString()) || StringUtils.isNotBlank(item.getSocialPaymentComBaseString())) { Map socialJson = JSON.parseObject(item.getSocialPaymentBaseString(), new HashMap().getClass()); if(socialJson!=null){ socialJson.forEach((k, v) -> { socailIds.add(k); }); } + //如果需要区分个人和公司福利基数 + if (welBaseDiffSign) { + Map socialComJson = JSON.parseObject(item.getSocialPaymentComBaseString(), new TypeReference>() { + }); + if (socialComJson != null) { + socialComJson.forEach((k, v) -> socailComIds.add(k)); + } + } } - if (StringUtils.isNotBlank(item.getFundPaymentBaseString())) { + if (StringUtils.isNotBlank(item.getFundPaymentBaseString()) || StringUtils.isNotBlank(item.getFundPaymentComBaseString())) { Map fundJson = JSON.parseObject(item.getFundPaymentBaseString(), new HashMap().getClass()); if(fundJson!=null){ fundJson.forEach((k, v) -> { fundIds.add(k); }); } + //如果需要区分个人和公司福利基数 + if (welBaseDiffSign) { + Map fundComJson = JSON.parseObject(item.getFundPaymentComBaseString(), new TypeReference>() { + }); + if (fundComJson != null) { + fundComJson.forEach((k, v) -> fundComIds.add(k)); + } + } } - if (StringUtils.isNotBlank(item.getOtherPaymentBaseString())) { + if (StringUtils.isNotBlank(item.getOtherPaymentBaseString()) || StringUtils.isNotBlank(item.getOtherPaymentComBaseString())) { Map otherJson = JSON.parseObject(item.getOtherPaymentBaseString(), new HashMap().getClass()); if(otherJson!=null){ otherJson.forEach((k, v) -> { otherIds.add(k); }); } + //如果需要区分个人和公司福利基数 + if (welBaseDiffSign) { + Map otherComJson = JSON.parseObject(item.getOtherPaymentComBaseString(), new TypeReference>() { + }); + if (otherComJson != null) { + otherComJson.forEach((k, v) -> otherComIds.add(k)); + } + } } }); Map socialColumns = new HashMap<>(); Map fundColumns = new HashMap<>(); Map otherColumns = new HashMap<>(); - socailIds.stream().forEach(social -> { - if (categoryIdNameMap.containsKey(social)) { - socialColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel(100293, "申报基数"), social + "socialBase"); - } - }); - fundIds.stream().forEach(social -> { - if (categoryIdNameMap.containsKey(social)) { - fundColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 100293, "申报基数"), social + "fundBase"); - } - }); - otherIds.stream().forEach(social -> { - if (categoryIdNameMap.containsKey(social)) { - otherColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 100293, "申报基数"), social + "otherBase"); - } - }); + + Map socialComColumns = new HashMap<>(); + Map fundComColumns = new HashMap<>(); + Map otherComColumns = new HashMap<>(); + + if (welBaseDiffSign) { + socailIds.stream().forEach(social -> { + if (categoryIdNameMap.containsKey(social)) { + socialColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "个人"), social + "socialPerBase"); + } + }); + fundIds.stream().forEach(social -> { + if (categoryIdNameMap.containsKey(social)) { + fundColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "个人"), social + "fundPerBase"); + } + }); + otherIds.stream().forEach(social -> { + if (categoryIdNameMap.containsKey(social)) { + otherColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "个人"), social + "otherPerBase"); + } + }); + + socailComIds.stream().forEach(social -> { + if (categoryIdNameMap.containsKey(social)) { + socialComColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "单位"), social + "socialComBase"); + } + }); + fundComIds.stream().forEach(social -> { + if (categoryIdNameMap.containsKey(social)) { + fundComColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "单位"), social + "fundComBase"); + } + }); + otherComIds.stream().forEach(social -> { + if (categoryIdNameMap.containsKey(social)) { + otherComColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "单位"), social + "otherComBase"); + } + }); + } else { + socailIds.stream().forEach(social -> { + if (categoryIdNameMap.containsKey(social)) { + socialColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel(0, "申报基数"), social + "socialBase"); + } + }); + fundIds.stream().forEach(social -> { + if (categoryIdNameMap.containsKey(social)) { + fundColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 0, "申报基数"), social + "fundBase"); + } + }); + otherIds.stream().forEach(social -> { + if (categoryIdNameMap.containsKey(social)) { + otherColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 0, "申报基数"), social + "otherBase"); + } + }); + } + // map根据value排序 LinkedHashMap socialColumnsWithAscValue = socialColumns.entrySet().stream() .sorted(Map.Entry.comparingByValue()) @@ -188,6 +261,24 @@ public class ColumnBuildServiceImpl extends Service implements ColumnBuildServic .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new)); + if (welBaseDiffSign) { + LinkedHashMap socialComMapWithAscKey = socialComColumns.entrySet().stream() + .sorted(Map.Entry.comparingByKey()) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, + LinkedHashMap::new)); + LinkedHashMap fundComMapWithAscKey = fundComColumns.entrySet().stream() + .sorted(Map.Entry.comparingByKey()) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, + LinkedHashMap::new)); + LinkedHashMap otherComMapWithAscKey = otherComColumns.entrySet().stream() + .sorted(Map.Entry.comparingByKey()) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, + LinkedHashMap::new)); + socialColumnsWithAscValue.putAll(socialComMapWithAscKey); + fundColumnsWithAscValue.putAll(fundComMapWithAscKey); + otherColumnsWithAscValue.putAll(otherComMapWithAscKey); + } + result.put(WelfareTypeEnum.SOCIAL_SECURITY.getValue(), socialColumnsWithAscValue); result.put(WelfareTypeEnum.ACCUMULATION_FUND.getValue(), fundColumnsWithAscValue); result.put(WelfareTypeEnum.OTHER.getValue(), otherColumnsWithAscValue); diff --git a/src/com/engine/salary/service/impl/RecordsBuildServiceImpl.java b/src/com/engine/salary/service/impl/RecordsBuildServiceImpl.java index 138eb8cf1..a18ca32e0 100644 --- a/src/com/engine/salary/service/impl/RecordsBuildServiceImpl.java +++ b/src/com/engine/salary/service/impl/RecordsBuildServiceImpl.java @@ -1,6 +1,7 @@ package com.engine.salary.service.impl; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.TypeReference; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.biz.SIArchivesBiz; @@ -15,6 +16,7 @@ import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.siaccount.BillStatusEnum; import com.engine.salary.enums.siaccount.ResourceFromEnum; +import com.engine.salary.enums.sicategory.PaymentScopeEnum; import com.engine.salary.mapper.datacollection.EmployMapper; import com.engine.salary.mapper.sischeme.InsuranceSchemeMapper; import com.engine.salary.mapper.taxagent.TaxAgentMapper; @@ -60,8 +62,11 @@ public class RecordsBuildServiceImpl extends Service implements RecordsBuildServ return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); } + private SIArchivesBiz siArchivesBiz = new SIArchivesBiz(); + @Override public List> buildCommonRecords(List list, Long employeeId) { + boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); List> result = new ArrayList<>(); if (CollectionUtils.isEmpty(list)) { return result; @@ -99,34 +104,130 @@ public class RecordsBuildServiceImpl extends Service implements RecordsBuildServ record.put("socialAccount", item.getSocialAccount()); record.put("socialSchemeName", getInsuranceSchemeMapper().querySchemeName(item.getSocialSchemeId())); - if (StringUtils.isNotEmpty(item.getSocialPaymentBaseString())) { + if (StringUtils.isNotEmpty(item.getSocialPaymentBaseString()) || StringUtils.isNotEmpty(item.getSocialPaymentComBaseString())) { Map socialJson = JSON.parseObject(item.getSocialPaymentBaseString(), new HashMap().getClass()); - if(socialJson!=null){ - socialJson.forEach((k, v) -> { - record.put(k + "socialBase", (String) v); +// if(socialJson!=null){ +// socialJson.forEach((k, v) -> { +// record.put(k + "socialBase", (String) v); +// }); +// } + if (welBaseDiffSign) { + if (socialJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = siArchivesBiz.payInsuranceIds(item.getSocialSchemeId(), PaymentScopeEnum.SCOPE_PERSON.getValue()); + socialJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + record.put(k + "socialPerBase", v); + } + }); + } + Map socialComJson = JSON.parseObject(item.getSocialPaymentComBaseString(), new TypeReference>() { }); + if (socialComJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = siArchivesBiz.payInsuranceIds(item.getSocialSchemeId(),PaymentScopeEnum.SCOPE_COMPANY.getValue()); + socialComJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + record.put(k + "socialComBase", v); + } + }); + } + } else { + if (socialJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = siArchivesBiz.payInsuranceIds(item.getSocialSchemeId()); + socialJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + record.put(k + "socialBase", v); + } + }); + } } } record.put("fundPayOrg", item.getFundPayOrg() == null ? "" : (paymentMap.getOrDefault(item.getFundPayOrg(),TaxAgentPO.builder().build())).getName()); record.put("fundAccount", item.getFundAccount()); record.put("fundSchemeName", getInsuranceSchemeMapper().querySchemeName(item.getFundSchemeId())); record.put("supplementFundAccount", item.getSupplementFundAccount()); - if (StringUtils.isNotEmpty(item.getFundPaymentBaseString())) { - Map socialJson = JSON.parseObject(item.getFundPaymentBaseString(), new HashMap().getClass()); - if(socialJson!=null){ - socialJson.forEach((k, v) -> { - record.put(k + "fundBase", (String) v); + if (StringUtils.isNotEmpty(item.getFundPaymentBaseString()) || StringUtils.isNotEmpty(item.getFundPaymentComBaseString())) { + Map fundJson = JSON.parseObject(item.getFundPaymentBaseString(), new HashMap().getClass()); +// if(fundJson!=null){ +// fundJson.forEach((k, v) -> { +// record.put(k + "fundBase", (String) v); +// }); +// } + if (welBaseDiffSign) { + if (fundJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = siArchivesBiz.payInsuranceIds(item.getFundSchemeId(),PaymentScopeEnum.SCOPE_PERSON.getValue()); + fundJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + record.put(k + "fundPerBase", v); + } + }); + } + Map fundComJson = JSON.parseObject(item.getFundPaymentComBaseString(), new TypeReference>() { }); + if (fundComJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = siArchivesBiz.payInsuranceIds(item.getFundSchemeId(),PaymentScopeEnum.SCOPE_COMPANY.getValue()); + fundComJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + record.put(k + "fundComBase", v); + } + }); + } + } else { + if (fundJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = siArchivesBiz.payInsuranceIds(item.getFundSchemeId()); + fundJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + record.put(k + "fundBase", v); + } + }); + } } } record.put("otherPayOrg", item.getOtherPayOrg() == null ? "" : (paymentMap.getOrDefault(item.getOtherPayOrg(),TaxAgentPO.builder().build())).getName()); record.put("otherSchemeName", getInsuranceSchemeMapper().querySchemeName(item.getOtherSchemeId())); - if (StringUtils.isNotEmpty(item.getOtherPaymentBaseString())) { - Map socialJson = JSON.parseObject(item.getOtherPaymentBaseString(), new HashMap().getClass()); - if(socialJson!=null){ - socialJson.forEach((k, v) -> { - record.put(k + "otherBase", (String) v); + if (StringUtils.isNotEmpty(item.getOtherPaymentBaseString()) || StringUtils.isNotEmpty(item.getOtherPaymentComBaseString())) { + Map otherJson = JSON.parseObject(item.getOtherPaymentBaseString(), new HashMap().getClass()); +// if(otherJson!=null){ +// otherJson.forEach((k, v) -> { +// record.put(k + "otherBase", (String) v); +// }); +// } + if (welBaseDiffSign) { + if (otherJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = siArchivesBiz.payInsuranceIds(item.getOtherSchemeId(),PaymentScopeEnum.SCOPE_PERSON.getValue()); + otherJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + record.put(k + "otherPerBase", v); + } + }); + } + Map otherComJson = JSON.parseObject(item.getOtherPaymentComBaseString(), new TypeReference>() { }); + if (otherComJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = siArchivesBiz.payInsuranceIds(item.getOtherSchemeId(),PaymentScopeEnum.SCOPE_COMPANY.getValue()); + otherComJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + record.put(k + "otherComBase", v); + } + }); + } + } else { + if (otherJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = siArchivesBiz.payInsuranceIds(item.getOtherSchemeId()); + otherJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + record.put(k + "otherBase", v); + } + }); + } } } if (StringUtils.isNotEmpty(item.getSocialPerJson())) { diff --git a/src/com/engine/salary/service/impl/SIAComparisonResultServiceImpl.java b/src/com/engine/salary/service/impl/SIAComparisonResultServiceImpl.java index 89f725a87..23587a874 100644 --- a/src/com/engine/salary/service/impl/SIAComparisonResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAComparisonResultServiceImpl.java @@ -2,6 +2,7 @@ package com.engine.salary.service.impl; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.salary.biz.SIArchivesBiz; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.siaccount.bo.InsuranceComparisonResultBO; import com.engine.salary.entity.siaccount.dto.InsuranceComparisonResultListDTO; @@ -45,6 +46,8 @@ import java.util.stream.Collectors; public class SIAComparisonResultServiceImpl extends Service implements SIAComparisonResultService { private EncryptUtil encryptUtil = new EncryptUtil(); + private SIArchivesBiz siArchivesBiz = new SIArchivesBiz(); + private InsuranceExportMapper getInsuranceExportMapper() { return MapperProxyFactory.getProxy(InsuranceExportMapper.class); } @@ -140,6 +143,7 @@ public class SIAComparisonResultServiceImpl extends Service implements SIACompar */ private InsuranceComparisonResultListDTO listByParam(boolean needPage, InsuranceComparisonResultQueryParam queryParam) { + boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); //排序配置 OrderRuleVO orderRule = getSalarySysConfService(user).orderRule(); @@ -200,10 +204,10 @@ public class SIAComparisonResultServiceImpl extends Service implements SIACompar Set insurancePerPaySet = new HashSet<>(insurancePerPayIds); Set insuranceComPaySet = new HashSet<>(insuranceComPayIds); //3-构建福利核算对比结果列表表头 - List weaTableColumns = InsuranceComparisonResultBO.buildTableColumns4ComparisonResult(insuranceBaseSet, insurancePerPaySet, insuranceComPaySet); + List weaTableColumns = InsuranceComparisonResultBO.buildTableColumns4ComparisonResult(insuranceBaseSet, insurancePerPaySet, insuranceComPaySet, welBaseDiffSign); //4-通过线上线下两份数据获得对比结果 Map schemeIdNameMap = getSISchemeService(user).getSchemeIdNameMap(); - List> resultMapList = InsuranceComparisonResultBO.buildComparisonTableData(accountExportPOS, excelAccountExportPOS, schemeIdNameMap); + List> resultMapList = InsuranceComparisonResultBO.buildComparisonTableData(accountExportPOS, excelAccountExportPOS, schemeIdNameMap, welBaseDiffSign); // 系统值和线下值一致的人员 if (queryParam.isOnlyDiffEmployee()) { diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index 282a6f545..d9387e62c 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -65,6 +65,7 @@ import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.excel.ExcelParseHelper; import com.engine.salary.util.excel.ExcelSupport; import com.engine.salary.util.excel.ExcelUtil; +import com.engine.salary.util.excel.ExcelUtilPlus; import com.engine.salary.util.page.Column; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; @@ -2221,7 +2222,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { */ @Override public XSSFWorkbook exportComparisonWelfareTemplate(InsuranceAccountDetailParam param) { - + boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); //查询线上福利核算记录 InsuranceExportParam insuranceExportParam = new InsuranceExportParam(); insuranceExportParam.setBillMonth(param.getBillMonth()); @@ -2279,20 +2280,57 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { // "养老保险申报基数" // "医疗保险申报基数" // "工伤保险申报基数" - for (ICategoryPO po : socialWelfareList) { - headerList.add(po.getInsuranceName() + "申报基数"); +// for (ICategoryPO po : socialWelfareList) { +// headerList.add(po.getInsuranceName() + "申报基数"); +// } + //组装社保基数 + if (welBaseDiffSign) { + List socialComColumns = Lists.newArrayList(); + for (ICategoryPO po : socialWelfareList) { + headerList.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人")); + socialComColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位")); + } + headerList.addAll(socialComColumns); + } else { + for (ICategoryPO po : socialWelfareList) { + headerList.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数")); + } } headerList.add(SalaryI18nUtil.getI18nLabel(91486, "公积金账号")); headerList.add(SalaryI18nUtil.getI18nLabel(91485, "公积金方案名称")); //组装公积金基数 - for (ICategoryPO po : fundWelfareList) { - headerList.add(po.getInsuranceName() + "申报基数"); +// for (ICategoryPO po : fundWelfareList) { +// headerList.add(po.getInsuranceName() + "申报基数"); +// } + if (welBaseDiffSign) { + List fundComColumns = Lists.newArrayList(); + for (ICategoryPO po : fundWelfareList) { + headerList.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人")); + fundComColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位")); + } + headerList.addAll(fundComColumns); + } else { + for (ICategoryPO po : fundWelfareList) { + headerList.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数")); + } } headerList.add(SalaryI18nUtil.getI18nLabel(91487, "补充公积金账号")); headerList.add(SalaryI18nUtil.getI18nLabel(91496, "其他福利方案名称")); //组装其他福利基数 - for (ICategoryPO po : otherWelfareList) { - headerList.add(po.getInsuranceName() + "申报基数"); +// for (ICategoryPO po : otherWelfareList) { +// headerList.add(po.getInsuranceName() + "申报基数"); +// } + if (welBaseDiffSign) { + List otherComColumns = Lists.newArrayList(); + for (ICategoryPO po : otherWelfareList) { + headerList.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人")); + otherComColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位")); + } + headerList.addAll(otherComColumns); + } else { + for (ICategoryPO po : otherWelfareList) { + headerList.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数")); + } } //社保个人(生育保险个人、工伤保险个人、失业保险个人、养老保险个人、医疗保险个人) for (ICategoryPO po : socialWelPerList) { @@ -2335,7 +2373,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { rows.add(headerList); String sheetName = "福利核算-线下对比导入模板"; - return ExcelUtil.genWorkbookV2(rows, sheetName); + return ExcelUtilPlus.genWorkbookV2(rows, sheetName); } /** diff --git a/src/com/engine/salary/service/impl/SIExportServiceImpl.java b/src/com/engine/salary/service/impl/SIExportServiceImpl.java index 1c351dfac..ac3ec8488 100644 --- a/src/com/engine/salary/service/impl/SIExportServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIExportServiceImpl.java @@ -1,10 +1,12 @@ package com.engine.salary.service.impl; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.TypeReference; import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.biz.SIAccountBiz; +import com.engine.salary.biz.SIArchivesBiz; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.siaccount.dto.InsuranceAccountViewListDTO; import com.engine.salary.entity.siaccount.param.InsuranceAccountDetailParam; @@ -17,6 +19,7 @@ import com.engine.salary.enums.siaccount.BillStatusEnum; import com.engine.salary.enums.siaccount.PaymentStatusEnum; import com.engine.salary.enums.siaccount.ResourceFromEnum; import com.engine.salary.enums.sicategory.DataTypeEnum; +import com.engine.salary.enums.sicategory.PaymentScopeEnum; import com.engine.salary.enums.sicategory.WelfareTypeEnum; import com.engine.salary.mapper.InsuranceExportMapper; import com.engine.salary.mapper.siaccount.InsuranceAccountDetailMapper; @@ -37,6 +40,7 @@ import com.engine.salary.util.SalaryEnumUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.excel.ExcelUtil; +import com.engine.salary.util.excel.ExcelUtilPlus; import org.springframework.beans.BeanUtils; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; @@ -66,6 +70,8 @@ public class SIExportServiceImpl extends Service implements SIExportService { private SIAccountBiz siAccountBiz = new SIAccountBiz(); + private SIArchivesBiz siArchivesBiz = new SIArchivesBiz(); + private SISchemeService getSISchemeService(User user) { return ServiceUtil.getService(SISchemeServiceImpl.class, user); } @@ -242,11 +248,12 @@ public class SIExportServiceImpl extends Service implements SIExportService { } excelSheetData.addAll(rows); - return ExcelUtil.genWorkbookV2(excelSheetData, sheetName, total); + return ExcelUtilPlus.genWorkbookV2(excelSheetData, sheetName, total); } @Override public List> buildCommonRecords(List list) { + boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); List> result = new ArrayList<>(); List paymentList = getTaxAgentMapper().listAll(); @@ -272,10 +279,42 @@ public class SIExportServiceImpl extends Service implements SIExportService { record.put("socialSchemeName", schemeIdNameMap.get(item.getSocialSchemeId())); if (StringUtils.isNotEmpty(item.getSocialPaymentBaseString())) { Map socialJson = JSON.parseObject(item.getSocialPaymentBaseString(), new HashMap().getClass()); - if (socialJson != null) { - socialJson.forEach((k, v) -> { - record.put(k + "socialBase", v); +// if (socialJson != null) { +// socialJson.forEach((k, v) -> { +// record.put(k + "socialBase", v); +// }); +// } + if (welBaseDiffSign) { + if (socialJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = siArchivesBiz.payInsuranceIds(item.getSocialSchemeId(), PaymentScopeEnum.SCOPE_PERSON.getValue()); + socialJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + record.put(k + "socialPerBase", v); + } + }); + } + Map socialComJson = JSON.parseObject(item.getSocialPaymentComBaseString(), new TypeReference>() { }); + if (socialComJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = siArchivesBiz.payInsuranceIds(item.getSocialSchemeId(),PaymentScopeEnum.SCOPE_COMPANY.getValue()); + socialComJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + record.put(k + "socialComBase", v); + } + }); + } + } else { + if (socialJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = siArchivesBiz.payInsuranceIds(item.getSocialSchemeId()); + socialJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + record.put(k + "socialBase", v); + } + }); + } } } @@ -284,22 +323,86 @@ public class SIExportServiceImpl extends Service implements SIExportService { record.put("fundSchemeName", schemeIdNameMap.get(item.getFundSchemeId())); record.put("supplementFundAccount", item.getSupplementFundAccount()); if (StringUtils.isNotEmpty(item.getFundPaymentBaseString())) { - Map socialJson = JSON.parseObject(item.getFundPaymentBaseString(), new HashMap().getClass()); - if (socialJson != null) { - socialJson.forEach((k, v) -> { - record.put(k + "fundBase", v); + Map fundJson = JSON.parseObject(item.getFundPaymentBaseString(), new HashMap().getClass()); +// if (fundJson != null) { +// fundJson.forEach((k, v) -> { +// record.put(k + "fundBase", v); +// }); +// } + if (welBaseDiffSign) { + if (fundJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = siArchivesBiz.payInsuranceIds(item.getFundSchemeId(),PaymentScopeEnum.SCOPE_PERSON.getValue()); + fundJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + record.put(k + "fundPerBase", v); + } + }); + } + Map fundComJson = JSON.parseObject(item.getFundPaymentComBaseString(), new TypeReference>() { }); + if (fundComJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = siArchivesBiz.payInsuranceIds(item.getFundSchemeId(),PaymentScopeEnum.SCOPE_COMPANY.getValue()); + fundComJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + record.put(k + "fundComBase", v); + } + }); + } + } else { + if (fundJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = siArchivesBiz.payInsuranceIds(item.getFundSchemeId()); + fundJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + record.put(k + "fundBase", v); + } + }); + } } } record.put("otherPayOrg", paymentMap.get(item.getOtherPayOrg()) == null ? "" : paymentMap.get(item.getOtherPayOrg()).getName()); record.put("otherSchemeName", schemeIdNameMap.get(item.getOtherSchemeId())); if (StringUtils.isNotEmpty(item.getOtherPaymentBaseString())) { - Map socialJson = JSON.parseObject(item.getOtherPaymentBaseString(), new HashMap().getClass()); - if (socialJson != null) { - socialJson.forEach((k, v) -> { - record.put(k + "otherBase", v); + Map otherJson = JSON.parseObject(item.getOtherPaymentBaseString(), new HashMap().getClass()); +// if (otherJson != null) { +// otherJson.forEach((k, v) -> { +// record.put(k + "otherBase", v); +// }); +// } + if (welBaseDiffSign) { + if (otherJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = siArchivesBiz.payInsuranceIds(item.getOtherSchemeId(),PaymentScopeEnum.SCOPE_PERSON.getValue()); + otherJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + record.put(k + "otherPerBase", v); + } + }); + } + Map otherComJson = JSON.parseObject(item.getOtherPaymentComBaseString(), new TypeReference>() { }); + if (otherComJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = siArchivesBiz.payInsuranceIds(item.getOtherSchemeId(),PaymentScopeEnum.SCOPE_COMPANY.getValue()); + otherComJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + record.put(k + "otherComBase", v); + } + }); + } + } else { + if (otherJson != null) { + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = siArchivesBiz.payInsuranceIds(item.getOtherSchemeId()); + otherJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + record.put(k + "otherBase", v); + } + }); + } } } @@ -628,58 +731,127 @@ public class SIExportServiceImpl extends Service implements SIExportService { } private Map> buildPaymentTitle(List pos, Map categoryIdNameMap) { + boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); Set socailIds = new HashSet<>(); Set fundIds = new HashSet<>(); Set otherIds = new HashSet<>(); + + Set socailComIds = new HashSet<>(); + Set fundComIds = new HashSet<>(); + Set otherComIds = new HashSet<>(); + Map> result = new HashMap<>(); pos.stream().forEach(item -> { - if (StringUtils.isNotBlank(item.getSocialPaymentBaseString())) { + if (StringUtils.isNotBlank(item.getSocialPaymentBaseString()) || StringUtils.isNotBlank(item.getSocialPaymentComBaseString())) { Map socialJson = JSON.parseObject(item.getSocialPaymentBaseString(), new HashMap().getClass()); if (socialJson != null) { socialJson.forEach((k, v) -> { socailIds.add(k); }); } + //如果需要区分个人和公司福利基数 + if (welBaseDiffSign) { + Map socialComJson = JSON.parseObject(item.getSocialPaymentComBaseString(), new TypeReference>() { + }); + if (socialComJson != null) { + socialComJson.forEach((k, v) -> socailComIds.add(k)); + } + } } - if (StringUtils.isNotBlank(item.getFundPaymentBaseString())) { + if (StringUtils.isNotBlank(item.getFundPaymentBaseString()) || StringUtils.isNotBlank(item.getFundPaymentComBaseString())) { Map fundJson = JSON.parseObject(item.getFundPaymentBaseString(), new HashMap().getClass()); if (fundJson != null) { fundJson.forEach((k, v) -> { fundIds.add(k); }); } + //如果需要区分个人和公司福利基数 + if (welBaseDiffSign) { + Map fundComJson = JSON.parseObject(item.getFundPaymentComBaseString(), new TypeReference>() { + }); + if (fundComJson != null) { + fundComJson.forEach((k, v) -> fundComIds.add(k)); + } + } } - if (StringUtils.isNotBlank(item.getOtherPaymentBaseString())) { + if (StringUtils.isNotBlank(item.getOtherPaymentBaseString()) || StringUtils.isNotBlank(item.getOtherPaymentComBaseString())) { Map otherJson = JSON.parseObject(item.getOtherPaymentBaseString(), new HashMap().getClass()); if (otherJson != null) { otherJson.forEach((k, v) -> { otherIds.add(k); }); } + //如果需要区分个人和公司福利基数 + if (welBaseDiffSign) { + Map otherComJson = JSON.parseObject(item.getOtherPaymentComBaseString(), new TypeReference>() { + }); + if (otherComJson != null) { + otherComJson.forEach((k, v) -> otherComIds.add(k)); + } + } } }); Map socialColumns = new HashMap<>(); Map fundColumns = new HashMap<>(); Map otherColumns = new HashMap<>(); - socailIds.stream().forEach(social -> { - if (categoryIdNameMap.containsKey(social)) { - socialColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel(100293, "申报基数"), social + "socialBase"); - } - }); - fundIds.stream().forEach(social -> { - if (categoryIdNameMap.containsKey(social)) { - fundColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel(100293, "申报基数"), social + "fundBase"); - } - }); - otherIds.stream().forEach(social -> { - if (categoryIdNameMap.containsKey(social)) { - otherColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel(100293, "申报基数"), social + "otherBase"); - } - }); + + Map socialComColumns = new HashMap<>(); + Map fundComColumns = new HashMap<>(); + Map otherComColumns = new HashMap<>(); + + if (welBaseDiffSign) { + socailIds.stream().forEach(social -> { + if (categoryIdNameMap.containsKey(social)) { + socialColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "个人"), social + "socialPerBase"); + } + }); + fundIds.stream().forEach(social -> { + if (categoryIdNameMap.containsKey(social)) { + fundColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "个人"), social + "fundPerBase"); + } + }); + otherIds.stream().forEach(social -> { + if (categoryIdNameMap.containsKey(social)) { + otherColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "个人"), social + "otherPerBase"); + } + }); + + socailComIds.stream().forEach(social -> { + if (categoryIdNameMap.containsKey(social)) { + socialComColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "单位"), social + "socialComBase"); + } + }); + fundComIds.stream().forEach(social -> { + if (categoryIdNameMap.containsKey(social)) { + fundComColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "单位"), social + "fundComBase"); + } + }); + otherComIds.stream().forEach(social -> { + if (categoryIdNameMap.containsKey(social)) { + otherComColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "单位"), social + "otherComBase"); + } + }); + } else { + socailIds.stream().forEach(social -> { + if (categoryIdNameMap.containsKey(social)) { + socialColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel(0, "申报基数"), social + "socialBase"); + } + }); + fundIds.stream().forEach(social -> { + if (categoryIdNameMap.containsKey(social)) { + fundColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 0, "申报基数"), social + "fundBase"); + } + }); + otherIds.stream().forEach(social -> { + if (categoryIdNameMap.containsKey(social)) { + otherColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 0, "申报基数"), social + "otherBase"); + } + }); + } // map根据value排序 LinkedHashMap socialColumnsWithAscValue = socialColumns.entrySet().stream() .sorted(Map.Entry.comparingByValue()) @@ -694,6 +866,24 @@ public class SIExportServiceImpl extends Service implements SIExportService { .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new)); + if (welBaseDiffSign) { + LinkedHashMap socialComMapWithAscKey = socialComColumns.entrySet().stream() + .sorted(Map.Entry.comparingByKey()) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, + LinkedHashMap::new)); + LinkedHashMap fundComMapWithAscKey = fundComColumns.entrySet().stream() + .sorted(Map.Entry.comparingByKey()) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, + LinkedHashMap::new)); + LinkedHashMap otherComMapWithAscKey = otherComColumns.entrySet().stream() + .sorted(Map.Entry.comparingByKey()) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, + LinkedHashMap::new)); + socialColumnsWithAscValue.putAll(socialComMapWithAscKey); + fundColumnsWithAscValue.putAll(fundComMapWithAscKey); + otherColumnsWithAscValue.putAll(otherComMapWithAscKey); + } + result.put(WelfareTypeEnum.SOCIAL_SECURITY.getValue(), socialColumnsWithAscValue); result.put(WelfareTypeEnum.ACCUMULATION_FUND.getValue(), fundColumnsWithAscValue); result.put(WelfareTypeEnum.OTHER.getValue(), otherColumnsWithAscValue); diff --git a/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java b/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java index e1cf27275..e9a446dac 100644 --- a/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java @@ -197,6 +197,9 @@ public class SIRecessionServiceImpl extends Service implements SIRecessionServic // temp.setExternalFlag(insuranceAccountDetailPO.getExternalFlag()); temp.setPaymentOrganization(insuranceAccountDetailPO.getPaymentOrganization()); // temp.setPaymentAgency(insuranceAccountDetailPO.getPaymentAgency()); + temp.setSocialPaymentComBaseString(insuranceAccountDetailPO.getSocialPaymentComBaseString()); + temp.setFundPaymentComBaseString(insuranceAccountDetailPO.getFundPaymentComBaseString()); + temp.setOtherPaymentComBaseString(insuranceAccountDetailPO.getOtherPaymentComBaseString()); } private void recessionSocial(RecessionParam param, InsuranceAccountDetailPO temp, InsuranceAccountDetailPO insuranceAccountDetailPO) { //退差社保个人缴费 diff --git a/src/com/engine/salary/web/SIAccountController.java b/src/com/engine/salary/web/SIAccountController.java index 75ad6975a..ab9a41c9c 100644 --- a/src/com/engine/salary/web/SIAccountController.java +++ b/src/com/engine/salary/web/SIAccountController.java @@ -2,6 +2,7 @@ package com.engine.salary.web; import com.engine.common.util.ParamUtil; import com.engine.common.util.ServiceUtil; +import com.engine.salary.common.SalaryContext; import com.engine.salary.entity.hrm.dto.HrmInfoDTO; import com.engine.salary.entity.hrm.param.HrmQueryParam; import com.engine.salary.entity.siaccount.dto.InsuranceAccountTabDTO; @@ -37,11 +38,9 @@ import javax.ws.rs.core.StreamingOutput; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.time.LocalDate; -import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; /** * 福利核算控制器 @@ -50,6 +49,7 @@ import java.util.stream.Collectors; public class SIAccountController { public SIAccountService getService(User user) { + SalaryContext.get().setValue("user",user); return ServiceUtil.getService(SIAccountServiceImpl.class, user); } From 8138b5297f2ee08bf4378a041fec610a4549ecf5 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 8 Dec 2023 11:41:13 +0800 Subject: [PATCH 11/92] =?UTF-8?q?=E8=96=AA=E9=85=AC=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=87=E6=9C=AC=E7=BB=9F=E8=AE=A1=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E6=97=B6=EF=BC=8C=E5=AD=97=E7=AC=A6=E5=8E=BB=E5=80=BC?= =?UTF-8?q?=E8=A7=84=E5=88=99=E6=B2=A1=E6=9C=89=E4=BF=9D=E5=AD=98=E8=BF=9B?= =?UTF-8?q?=E5=8E=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SalaryStatisticsItemServiceImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsItemServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsItemServiceImpl.java index 6468f3f4b..ab3600c5e 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsItemServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsItemServiceImpl.java @@ -116,10 +116,10 @@ public class SalaryStatisticsItemServiceImpl extends Service implements SalarySt .maxRule(SalaryEntityUtil.toJSONString(saveParam.getMaxRule())) .minRule(SalaryEntityUtil.toJSONString(saveParam.getMinRule())) .medianRule(SalaryEntityUtil.toJSONString(saveParam.getMedianRule())) - .lastRule(SalaryEntityUtil.toJSONString(saveParam.getMedianRule())) - .oldRule(SalaryEntityUtil.toJSONString(saveParam.getMedianRule())) - .frequentRule(SalaryEntityUtil.toJSONString(saveParam.getMedianRule())) - .tileRule(SalaryEntityUtil.toJSONString(saveParam.getMedianRule())) + .lastRule(SalaryEntityUtil.toJSONString(saveParam.getLastRule())) + .oldRule(SalaryEntityUtil.toJSONString(saveParam.getOldRule())) + .frequentRule(SalaryEntityUtil.toJSONString(saveParam.getFrequentRule())) + .tileRule(SalaryEntityUtil.toJSONString(saveParam.getTileRule())) .indexValue(max + 1) .statReportId(saveParam.getStatReportId()) .unitType(saveParam.getUnitType() == null ? UnitTypeEnum.YUAN.getValue() : saveParam.getUnitType()) From bbe4b315cf60e2a49e735a3ca74319b9be6f48f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 8 Dec 2023 11:43:19 +0800 Subject: [PATCH 12/92] =?UTF-8?q?pg=E8=84=9A=E6=9C=AC=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/PG/sql202303130202.sql | 4 ++-- resource/sqlupgrade/PG/sql202307200603.sql | 15 ++++++--------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/resource/sqlupgrade/PG/sql202303130202.sql b/resource/sqlupgrade/PG/sql202303130202.sql index 54a9eae70..c6ed8b220 100644 --- a/resource/sqlupgrade/PG/sql202303130202.sql +++ b/resource/sqlupgrade/PG/sql202303130202.sql @@ -2,9 +2,9 @@ Delete from LeftMenuInfo where id=100186; / Delete from LeftMenuConfig where infoid=100186; / -call LMConfig_U_ByInfoInsert (2,100118,9); +select LMConfig_U_ByInfoInsert (2,100118,9); / -call LMInfo_Insert (100186,541290,'','',2,100118,9,18); +select LMInfo_Insert (100186,541290,'','',2,100118,9,18); / update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/externalPersonManage' where id = 100186; / \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202307200603.sql b/resource/sqlupgrade/PG/sql202307200603.sql index e211c560e..522bcacec 100644 --- a/resource/sqlupgrade/PG/sql202307200603.sql +++ b/resource/sqlupgrade/PG/sql202307200603.sql @@ -1,17 +1,14 @@ -select @current_date:= date_format( now(),'%Y-%m-%d'); -select @current_time:= date_format( now(),'%T'); -INSERT INTO datashowset(SHOWNAME, SHOWCLASS, DATAFROM, DATASOURCEID, SQLTEXT, WSURL, WSOPERATION, XMLTEXT, INPARA,SHOWTYPE, KEYFIELD, PARENTFIELD, SHOWFIELD, DETAILPAGEURL, TYPENAME, SELECTTYPE, SHOWPAGEURL,BROWSERFROM, NAME, CUSTOMID, CUSTOMHREF, SQLTEXT1, SQLTEXT2, NAMEHEADER, DESCRIPTIONHEADER,WSWORKNAME, SEARCHBYID, CREATEDATE, CREATETIME, MODIFYDATE, MODIFYTIME, SEARCHBYNAME,onlylowestnode, characterset, uuid, isSupportPaging, ESBID, ESBSHOWID, mobiledetailpageurl,isPhyPage, subcompanyid, unconditionalQuery) VALUES ('salaryExtEmp', '1', '1', '', 'SELECT * FROM hrsa_external_employee where delete_type=0', '', '', '', '', '1','id', '', '', '', '', '', '', 2, 'нϵͳԱ', NULL, '', NULL, NULL, NULL, NULL, '', '', @current_date,@current_time, NULL, NULL, '', '', '0', uuid(), '', '', '', '', '1', 0, 1); +INSERT INTO datashowset(SHOWNAME, SHOWCLASS, DATAFROM, DATASOURCEID, SQLTEXT, WSURL, WSOPERATION, XMLTEXT, INPARA,SHOWTYPE, KEYFIELD, PARENTFIELD, SHOWFIELD, DETAILPAGEURL, TYPENAME, SELECTTYPE, SHOWPAGEURL,BROWSERFROM, NAME, CUSTOMID, CUSTOMHREF, SQLTEXT1, SQLTEXT2, NAMEHEADER, DESCRIPTIONHEADER,WSWORKNAME, SEARCHBYID, CREATEDATE, CREATETIME, MODIFYDATE, MODIFYTIME, SEARCHBYNAME,onlylowestnode, characterset, uuid, isSupportPaging, ESBID, ESBSHOWID, mobiledetailpageurl,isPhyPage, subcompanyid, unconditionalQuery) VALUES ('salaryExtEmp', '1', '1', '', 'SELECT * FROM hrsa_external_employee where delete_type=0', '', '', '', '', '1','id', '', '', '', '', '', '', 2, 'нϵͳԱ', NULL, '', NULL, NULL, NULL, NULL, '', '', '2020-01-01', '19:12:12', NULL, NULL, '', '', '0', uuid(), '', '', '', '', '1', 0, 1); -select @datashowset_id:= max(id)from datashowset; INSERT INTO datashowcacheset(showname, subcompanyid, isopencache, Createdate, createtime, Updatedate, Updatetime) -VALUES ('salaryExtEmp', '0', 0, @current_date, @current_time, NULL, NULL); +VALUES ('salaryExtEmp', '0', 0, '2020-01-01', '19:12:12', NULL, NULL); INSERT INTO datashowparam(MAINID, FIELDNAME, SEARCHNAME, TRANSQL, ISSHOWNAME, dsporder, uuid, width) -VALUES (@datashowset_id, '', 'username', '', 1, 1, uuid(), NULL); +VALUES ((select max(id) from datashowparam), '', 'username', '', 1, 1, uuid(), NULL); INSERT INTO datashowparam(MAINID, FIELDNAME, SEARCHNAME, TRANSQL, ISSHOWNAME, dsporder, uuid, width) -VALUES (@datashowset_id, 'ֻ', 'mobile', '', 0, 2, uuid(), NULL); +VALUES ((select max(id) from datashowparam), 'ֻ', 'mobile', '', 0, 2, uuid(), NULL); INSERT INTO datasearchparam(MAINID, FIELDNAME, SEARCHNAME, FIELDTYPE, WOKFLOWFIELDNAME, dsporder, uuid, isshowfield) -VALUES (@datashowset_id, '', 'username', '2', '', 1, uuid(), ''); +VALUES ((select max(id) from datasearchparam), '', 'username', '2', '', 1, uuid(), ''); INSERT INTO datasearchparam(MAINID, FIELDNAME, SEARCHNAME, FIELDTYPE, WOKFLOWFIELDNAME, dsporder, uuid, isshowfield) -VALUES (@datashowset_id, 'ֻ', 'mobile', '2', '', 2, uuid(), ''); \ No newline at end of file +VALUES ((select max(id) from datasearchparam), 'ֻ', 'mobile', '2', '', 2, uuid(), ''); \ No newline at end of file From 9d0d7a00fcf99f89b98f6dd8e29862107d60cb2c Mon Sep 17 00:00:00 2001 From: sy Date: Fri, 8 Dec 2023 18:06:54 +0800 Subject: [PATCH 13/92] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E7=BA=BF=E4=B8=8B?= =?UTF-8?q?=E5=AF=B9=E6=AF=94=E5=88=97=E8=A1=A8=E3=80=81=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E3=80=81=E5=AF=BC=E5=87=BA=EF=BC=8C=E9=80=82=E9=85=8D=E6=8B=86?= =?UTF-8?q?=E5=88=86=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=E4=B8=AA=E4=BA=BA?= =?UTF-8?q?=E5=92=8C=E5=85=AC=E5=8F=B8=E5=9F=BA=E6=95=B0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bo/InsuranceComparisonResultBO.java | 6 - .../param/ExcelInsuranceImportParam.java | 3 +- .../siaccount/ExcelInsuranceDetailMapper.xml | 24 +- .../impl/SIAComparisonResultServiceImpl.java | 46 +- .../service/impl/SIAccountServiceImpl.java | 557 ++++++++++++++---- 5 files changed, 479 insertions(+), 157 deletions(-) diff --git a/src/com/engine/salary/entity/siaccount/bo/InsuranceComparisonResultBO.java b/src/com/engine/salary/entity/siaccount/bo/InsuranceComparisonResultBO.java index 79909c1e2..c6e6b40a3 100644 --- a/src/com/engine/salary/entity/siaccount/bo/InsuranceComparisonResultBO.java +++ b/src/com/engine/salary/entity/siaccount/bo/InsuranceComparisonResultBO.java @@ -242,12 +242,6 @@ public class InsuranceComparisonResultBO { //其他福利基数,otherPaymentBaseString welfareElementCompare(map, accountExportPO.getOtherPaymentBaseString(), excelAccountExportPO.getOtherPaymentBaseString(), "Base", 3); } - //社保基数,socialPaymentBaseString - welfareElementCompare(map, accountExportPO.getSocialPaymentBaseString(), excelAccountExportPO.getSocialPaymentBaseString(), "Base", 1); - //公积金基数,fundPaymentBaseString - welfareElementCompare(map, accountExportPO.getFundPaymentBaseString(), excelAccountExportPO.getFundPaymentBaseString(), "Base", 2); - //其他福利基数,otherPaymentBaseString - welfareElementCompare(map, accountExportPO.getOtherPaymentBaseString(), excelAccountExportPO.getOtherPaymentBaseString(), "Base", 3); //社保个人socialPerJson welfareElementCompare(map, accountExportPO.getSocialPerJson(), excelAccountExportPO.getSocialPerJson(), "Per", 1); //公积金个人fundPerJson diff --git a/src/com/engine/salary/entity/siaccount/param/ExcelInsuranceImportParam.java b/src/com/engine/salary/entity/siaccount/param/ExcelInsuranceImportParam.java index 17b926b08..7a9090845 100644 --- a/src/com/engine/salary/entity/siaccount/param/ExcelInsuranceImportParam.java +++ b/src/com/engine/salary/entity/siaccount/param/ExcelInsuranceImportParam.java @@ -25,5 +25,6 @@ public class ExcelInsuranceImportParam { /** * 账单月份 */ - private String billMonth; + private String billMonth; + private String paymentOrganization; } diff --git a/src/com/engine/salary/mapper/siaccount/ExcelInsuranceDetailMapper.xml b/src/com/engine/salary/mapper/siaccount/ExcelInsuranceDetailMapper.xml index d45fdec16..15ac635ce 100644 --- a/src/com/engine/salary/mapper/siaccount/ExcelInsuranceDetailMapper.xml +++ b/src/com/engine/salary/mapper/siaccount/ExcelInsuranceDetailMapper.xml @@ -157,7 +157,8 @@ (id,employee_id,bill_month,bill_status,payment_status,supplementary_month,supplementary_projects,resource_from,social_pay_org,social_account,social_scheme_id,social_payment_base_string, fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json, social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum, - com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization) + com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization, + social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string) VALUES ( @@ -204,7 +205,10 @@ #{item.updateTime}, #{item.deleteType}, #{item.tenantKey}, - #{item.paymentOrganization} + #{item.paymentOrganization}, + #{item.socialPaymentComBaseString}, + #{item.fundPaymentComBaseString}, + #{item.otherPaymentComBaseString} ) @@ -213,7 +217,8 @@ (id,employee_id,bill_month,bill_status,payment_status,supplementary_month,supplementary_projects,resource_from,social_pay_org,social_account,social_scheme_id,social_payment_base_string, fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json, social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum, - com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization) + com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization, + social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string) select #{item.id,jdbcType=DOUBLE}, @@ -259,7 +264,10 @@ #{item.updateTime}, #{item.deleteType}, #{item.tenantKey,jdbcType=VARCHAR}, - #{item.paymentOrganization,jdbcType=DOUBLE} + #{item.paymentOrganization,jdbcType=DOUBLE}, + #{item.socialPaymentComBaseString,jdbcType=VARCHAR}, + #{item.fundPaymentComBaseString,jdbcType=VARCHAR}, + #{item.otherPaymentComBaseString,jdbcType=VARCHAR} from dual @@ -269,7 +277,8 @@ (id,employee_id,bill_month,bill_status,payment_status,supplementary_month,supplementary_projects,resource_from,social_pay_org,social_account,social_scheme_id,social_payment_base_string, fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json, social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum, - com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization) + com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization, + social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string) VALUES ( #{item.id}, @@ -315,7 +324,10 @@ #{item.updateTime}, #{item.deleteType}, #{item.tenantKey}, - #{item.paymentOrganization} + #{item.paymentOrganization}, + #{item.socialPaymentComBaseString}, + #{item.fundPaymentComBaseString}, + #{item.otherPaymentComBaseString} ) diff --git a/src/com/engine/salary/service/impl/SIAComparisonResultServiceImpl.java b/src/com/engine/salary/service/impl/SIAComparisonResultServiceImpl.java index 23587a874..389e4ef2b 100644 --- a/src/com/engine/salary/service/impl/SIAComparisonResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAComparisonResultServiceImpl.java @@ -25,6 +25,7 @@ import com.engine.salary.sys.service.SalarySysConfService; import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.excel.ExcelUtil; +import com.engine.salary.util.excel.ExcelUtilPlus; import com.engine.salary.util.page.Column; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; @@ -134,7 +135,7 @@ public class SIAComparisonResultServiceImpl extends Service implements SIACompar String sheetName = "线下对比结果"; - return ExcelUtil.genWorkbookV2(rows, sheetName); + return ExcelUtilPlus.genWorkbookV2(rows, sheetName); } @@ -231,7 +232,7 @@ public class SIAComparisonResultServiceImpl extends Service implements SIACompar } private Set welfareInfo() { - + boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); Set info = new HashSet<>(); List listAll = getICategoryMapper().listAll(); @@ -239,18 +240,37 @@ public class SIAComparisonResultServiceImpl extends Service implements SIACompar List fundWelfareList = listAll.stream().filter(e -> e.getWelfareType() == 2).collect(Collectors.toList()); List otherWelfareList = listAll.stream().filter(e -> e.getWelfareType() == 3).collect(Collectors.toList()); - //组装社保基数 - for (ICategoryPO po : socialWelfareList) { - info.add(po.getId() + "socialBase"); - } - //组装公积金基数 - for (ICategoryPO po : fundWelfareList) { - info.add(po.getId() + "fundBase"); - } - //组装其他福利基数 - for (ICategoryPO po : otherWelfareList) { - info.add(po.getId() + "otherBase"); + if (welBaseDiffSign) { + //组装社保基数 + for (ICategoryPO po : socialWelfareList) { + info.add(po.getId() + "socialPerBase"); + info.add(po.getId() + "socialComBase"); + } + //组装公积金基数 + for (ICategoryPO po : fundWelfareList) { + info.add(po.getId() + "fundPerBase"); + info.add(po.getId() + "fundComBase"); + } + //组装其他福利基数 + for (ICategoryPO po : otherWelfareList) { + info.add(po.getId() + "otherPerBase"); + info.add(po.getId() + "otherComBase"); + } + } else { + //组装社保基数 + for (ICategoryPO po : socialWelfareList) { + info.add(po.getId() + "socialBase"); + } + //组装公积金基数 + for (ICategoryPO po : fundWelfareList) { + info.add(po.getId() + "fundBase"); + } + //组装其他福利基数 + for (ICategoryPO po : otherWelfareList) { + info.add(po.getId() + "otherBase"); + } } + //社保个人(生育保险个人、工伤保险个人、失业保险个人、养老保险个人、医疗保险个人) for (ICategoryPO po : socialWelfareList) { info.add(po.getId() + "socialPer"); diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index d9387e62c..1385b84d7 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -2222,6 +2222,78 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { */ @Override public XSSFWorkbook exportComparisonWelfareTemplate(InsuranceAccountDetailParam param) { + Map> welColumnMap = createWelColumnMap(param); + + List headerList = Lists.newArrayList(SalaryI18nUtil.getI18nLabel(85429, "姓名"), + SalaryI18nUtil.getI18nLabel(86185, "部门"), + SalaryI18nUtil.getI18nLabel(86186, "手机号"), + SalaryI18nUtil.getI18nLabel(86317, "工号"), + SalaryI18nUtil.getI18nLabel(86187, "员工状态"), + SalaryI18nUtil.getI18nLabel(100377, "数据来源"), + SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人")); + headerList.add(SalaryI18nUtil.getI18nLabel(91324, "社保账号")); + headerList.add(SalaryI18nUtil.getI18nLabel(91323, "社保方案名称")); + //组装社保基数 + if (welColumnMap.get("socialBase") != null) { + headerList.addAll(welColumnMap.get("socialBase")); + } + headerList.add(SalaryI18nUtil.getI18nLabel(91486, "公积金账号")); + headerList.add(SalaryI18nUtil.getI18nLabel(91485, "公积金方案名称")); + //组装公积金基数 + if (welColumnMap.get("fundBase") != null) { + headerList.addAll(welColumnMap.get("fundBase")); + } + headerList.add(SalaryI18nUtil.getI18nLabel(91487, "补充公积金账号")); + headerList.add(SalaryI18nUtil.getI18nLabel(91496, "其他福利方案名称")); + //组装其他福利基数 + if (welColumnMap.get("otherBase") != null) { + headerList.addAll(welColumnMap.get("otherBase")); + } + //社保个人(生育保险个人、工伤保险个人、失业保险个人、养老保险个人、医疗保险个人) + if (welColumnMap.get("socialPer") != null) { + headerList.addAll(welColumnMap.get("socialPer")); + } + headerList.add(SalaryI18nUtil.getI18nLabel(100388, "社保个人合计")); + //住房公积金个人、补充住房公积金个人 + if (welColumnMap.get("fundPer") != null) { + headerList.addAll(welColumnMap.get("fundPer")); + } + headerList.add(SalaryI18nUtil.getI18nLabel(100390, "公积金个人合计")); + //其他个人(比如企业年金个人) + if (welColumnMap.get("otherPer") != null) { + headerList.addAll(welColumnMap.get("otherPer")); + } + headerList.add(SalaryI18nUtil.getI18nLabel(100392, "其他福利个人合计")); + headerList.add(SalaryI18nUtil.getI18nLabel(100393, "个人合计")); + //社保单位(生育保险单位、工伤保险单位、失业保险单位、养老保险单位、医疗保险单位) + if (welColumnMap.get("socialCom") != null) { + headerList.addAll(welColumnMap.get("socialCom")); + } + headerList.add(SalaryI18nUtil.getI18nLabel(100394, "社保单位合计")); + //住房公积金单位、补充住房公积金单位 + if (welColumnMap.get("fundCom") != null) { + headerList.addAll(welColumnMap.get("fundCom")); + } + headerList.add(SalaryI18nUtil.getI18nLabel(100395, "公积金单位合计")); + //其他单位(比如企业年金单位) + if (welColumnMap.get("otherCom") != null) { + headerList.addAll(welColumnMap.get("otherCom")); + } + headerList.add(SalaryI18nUtil.getI18nLabel(100396, "其他福利单位合计")); + headerList.add(SalaryI18nUtil.getI18nLabel(100397, "单位合计")); + headerList.add(SalaryI18nUtil.getI18nLabel(100398, "社保合计")); + headerList.add(SalaryI18nUtil.getI18nLabel(100399, "公积金合计")); + headerList.add(SalaryI18nUtil.getI18nLabel(100400, "其他福利合计")); + headerList.add(SalaryI18nUtil.getI18nLabel(93278, "合计")); + + List> rows = new ArrayList<>(); + rows.add(headerList); + String sheetName = "福利核算-线下对比导入模板"; + + return ExcelUtilPlus.genWorkbookV2(rows, sheetName); + } + + public Map> createWelColumnMap(InsuranceAccountDetailParam param) { boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); //查询线上福利核算记录 InsuranceExportParam insuranceExportParam = new InsuranceExportParam(); @@ -2266,114 +2338,238 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { List fundWelComList = listAll.stream().filter(e -> e.getWelfareType() == 2 && e.getIsUse() == 1 && insuranceComPaySet.contains(e.getId())).collect(Collectors.toList()); List otherWelComList = listAll.stream().filter(e -> e.getWelfareType() == 3 && e.getIsUse() == 1 && insuranceComPaySet.contains(e.getId())).collect(Collectors.toList()); - List headerList = Lists.newArrayList(SalaryI18nUtil.getI18nLabel(85429, "姓名"), - SalaryI18nUtil.getI18nLabel(86185, "部门"), - SalaryI18nUtil.getI18nLabel(86186, "手机号"), - SalaryI18nUtil.getI18nLabel(86317, "工号"), - SalaryI18nUtil.getI18nLabel(86187, "员工状态"), - SalaryI18nUtil.getI18nLabel(100377, "数据来源"), - SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人")); - headerList.add(SalaryI18nUtil.getI18nLabel(91324, "社保账号")); - headerList.add(SalaryI18nUtil.getI18nLabel(91323, "社保方案名称")); -// "失业保险申报基数" -// "生育保险申报基数" -// "养老保险申报基数" -// "医疗保险申报基数" -// "工伤保险申报基数" -// for (ICategoryPO po : socialWelfareList) { -// headerList.add(po.getInsuranceName() + "申报基数"); -// } //组装社保基数 + List socialBaseColumns = new ArrayList<>(); + List socialPerBaseColumns = new ArrayList<>(); + List socialComBaseColumns = Lists.newArrayList(); if (welBaseDiffSign) { - List socialComColumns = Lists.newArrayList(); for (ICategoryPO po : socialWelfareList) { - headerList.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人")); - socialComColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位")); + socialPerBaseColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人")); + socialComBaseColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位")); } - headerList.addAll(socialComColumns); + socialBaseColumns.addAll(socialPerBaseColumns); + socialBaseColumns.addAll(socialComBaseColumns); } else { for (ICategoryPO po : socialWelfareList) { - headerList.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数")); + socialBaseColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数")); } } - headerList.add(SalaryI18nUtil.getI18nLabel(91486, "公积金账号")); - headerList.add(SalaryI18nUtil.getI18nLabel(91485, "公积金方案名称")); + //组装公积金基数 -// for (ICategoryPO po : fundWelfareList) { -// headerList.add(po.getInsuranceName() + "申报基数"); -// } + List fundBaseColumns = new ArrayList<>(); + List fundPerBaseColumns = Lists.newArrayList(); + List fundComBaseColumns = Lists.newArrayList(); if (welBaseDiffSign) { - List fundComColumns = Lists.newArrayList(); for (ICategoryPO po : fundWelfareList) { - headerList.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人")); - fundComColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位")); + fundPerBaseColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人")); + fundComBaseColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位")); } - headerList.addAll(fundComColumns); + fundBaseColumns.addAll(fundPerBaseColumns); + fundBaseColumns.addAll(fundComBaseColumns); } else { for (ICategoryPO po : fundWelfareList) { - headerList.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数")); + fundBaseColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数")); } } - headerList.add(SalaryI18nUtil.getI18nLabel(91487, "补充公积金账号")); - headerList.add(SalaryI18nUtil.getI18nLabel(91496, "其他福利方案名称")); + //组装其他福利基数 -// for (ICategoryPO po : otherWelfareList) { -// headerList.add(po.getInsuranceName() + "申报基数"); -// } + List otherBaseColumns = new ArrayList<>(); + List otherPerBaseColumns = new ArrayList<>(); + List otherComBaseColumns = Lists.newArrayList(); if (welBaseDiffSign) { - List otherComColumns = Lists.newArrayList(); for (ICategoryPO po : otherWelfareList) { - headerList.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人")); - otherComColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位")); + otherPerBaseColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人")); + otherComBaseColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位")); } - headerList.addAll(otherComColumns); + otherBaseColumns.addAll(otherPerBaseColumns); + otherBaseColumns.addAll(otherComBaseColumns); } else { for (ICategoryPO po : otherWelfareList) { - headerList.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数")); + otherBaseColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数")); } } + + //社保个人(生育保险个人、工伤保险个人、失业保险个人、养老保险个人、医疗保险个人) + List socialPerColumns = new ArrayList<>(); + for (ICategoryPO po : socialWelPerList) { + socialPerColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0,"个人")); + } + //住房公积金个人、补充住房公积金个人 + List fundPerColumns = new ArrayList<>(); + for (ICategoryPO po : fundWelPerList) { + fundPerColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0,"个人")); + } + //其他个人(比如企业年金个人) + List otherPerColumns = new ArrayList<>(); + for (ICategoryPO po : otherWelPerList) { + otherPerColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0,"个人")); + } + //社保单位(生育保险单位、工伤保险单位、失业保险单位、养老保险单位、医疗保险单位) + List socialComColumns = new ArrayList<>(); + for (ICategoryPO po : socialWelComList) { + socialComColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0,"单位")); + } + //住房公积金单位、补充住房公积金单位 + List fundComColumns = new ArrayList<>(); + for (ICategoryPO po : fundWelComList) { + fundComColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0,"单位")); + } + + //其他单位(比如企业年金单位) + List otherComColumns = new ArrayList<>(); + for (ICategoryPO po : otherWelComList) { + otherComColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0,"单位")); + } + + Map> welColumnMap = new HashMap<>(); + welColumnMap.put("socialPerBase", socialPerBaseColumns); + welColumnMap.put("fundPerBase", fundPerBaseColumns); + welColumnMap.put("otherPerBase", otherPerBaseColumns); + welColumnMap.put("socialComBase", socialComBaseColumns); + welColumnMap.put("fundComBase", fundComBaseColumns); + welColumnMap.put("otherComBase", otherComBaseColumns); + welColumnMap.put("socialBase", socialBaseColumns); + welColumnMap.put("fundBase", fundBaseColumns); + welColumnMap.put("otherBase", otherBaseColumns); + welColumnMap.put("socialPer", socialPerColumns); + welColumnMap.put("fundPer", fundPerColumns); + welColumnMap.put("otherPer", otherPerColumns); + welColumnMap.put("socialCom", socialComColumns); + welColumnMap.put("fundCom", fundComColumns); + welColumnMap.put("otherCom", otherComColumns); + return welColumnMap; + } + + public Map welColumnNameCodeMap(InsuranceAccountDetailParam param) { + boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); + //查询线上福利核算记录 + InsuranceExportParam insuranceExportParam = new InsuranceExportParam(); + insuranceExportParam.setBillMonth(param.getBillMonth()); + insuranceExportParam.setPaymentOrganization(param.getPaymentOrganization()); + List accountExportPOS = getInsuranceExportMapper().exportAccount(param.getPaymentStatus(), insuranceExportParam); + + //整理线上核算记录相关的福利方案,并以此整理需要对比的福利项类别数据 + Set welfareSchemeIds = new HashSet<>(); + accountExportPOS.forEach(f -> { + welfareSchemeIds.add(f.getSocialSchemeId()); + welfareSchemeIds.add(f.getFundSchemeId()); + welfareSchemeIds.add(f.getOtherSchemeId()); + }); + List insuranceSchemeDetailPos = getInsuranceSchemeDetailMapper().listAll(); + List insuranceBaseIds = insuranceSchemeDetailPos.stream() + .filter(f -> welfareSchemeIds.contains(f.getPrimaryId()) && f.getIsPayment() == 1) + .map(InsuranceSchemeDetailPO::getInsuranceId) + .collect(Collectors.toList()); + List insurancePerPayIds = insuranceSchemeDetailPos.stream() + .filter(f -> welfareSchemeIds.contains(f.getPrimaryId()) && f.getIsPayment() == 1 && f.getPaymentScope() == 2) + .map(InsuranceSchemeDetailPO::getInsuranceId) + .collect(Collectors.toList()); + List insuranceComPayIds = insuranceSchemeDetailPos.stream() + .filter(f -> welfareSchemeIds.contains(f.getPrimaryId()) && f.getIsPayment() == 1 && f.getPaymentScope() == 1) + .map(InsuranceSchemeDetailPO::getInsuranceId) + .collect(Collectors.toList()); + Set insuranceBaseSet = new HashSet<>(insuranceBaseIds); + Set insurancePerPaySet = new HashSet<>(insurancePerPayIds); + Set insuranceComPaySet = new HashSet<>(insuranceComPayIds); + + List listAll = getICategoryMapper().listAll(); + List socialWelfareList = listAll.stream().filter(e -> e.getWelfareType() == 1 && e.getIsUse() == 1 && insuranceBaseSet.contains(e.getId())).collect(Collectors.toList()); + List fundWelfareList = listAll.stream().filter(e -> e.getWelfareType() == 2 && e.getIsUse() == 1 && insuranceBaseSet.contains(e.getId())).collect(Collectors.toList()); + List otherWelfareList = listAll.stream().filter(e -> e.getWelfareType() == 3 && e.getIsUse() == 1 && insuranceBaseSet.contains(e.getId())).collect(Collectors.toList()); + + List socialWelPerList = listAll.stream().filter(e -> e.getWelfareType() == 1 && e.getIsUse() == 1 && insurancePerPaySet.contains(e.getId())).collect(Collectors.toList()); + List fundWelPerList = listAll.stream().filter(e -> e.getWelfareType() == 2 && e.getIsUse() == 1 && insurancePerPaySet.contains(e.getId())).collect(Collectors.toList()); + List otherWelPerList = listAll.stream().filter(e -> e.getWelfareType() == 3 && e.getIsUse() == 1 && insurancePerPaySet.contains(e.getId())).collect(Collectors.toList()); + + List socialWelComList = listAll.stream().filter(e -> e.getWelfareType() == 1 && e.getIsUse() == 1 && insuranceComPaySet.contains(e.getId())).collect(Collectors.toList()); + List fundWelComList = listAll.stream().filter(e -> e.getWelfareType() == 2 && e.getIsUse() == 1 && insuranceComPaySet.contains(e.getId())).collect(Collectors.toList()); + List otherWelComList = listAll.stream().filter(e -> e.getWelfareType() == 3 && e.getIsUse() == 1 && insuranceComPaySet.contains(e.getId())).collect(Collectors.toList()); + + //组装社保基数 + Map result = new HashMap<>(); + if (welBaseDiffSign) { + for (ICategoryPO po : socialWelfareList) { + result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage())) + + SalaryI18nUtil.getI18nLabel(0, "申报基数") + + SalaryI18nUtil.getI18nLabel(0,"个人"), po.getId() + "socialPerBase"); + result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage())) + + SalaryI18nUtil.getI18nLabel(0, "申报基数") + + SalaryI18nUtil.getI18nLabel(0,"单位"), po.getId() + "socialComBase"); + } + } else { + for (ICategoryPO po : socialWelfareList) { + result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage())) + + SalaryI18nUtil.getI18nLabel(0, "申报基数"), po.getId() + "socialBase"); + } + } + + //组装公积金基数 + if (welBaseDiffSign) { + for (ICategoryPO po : fundWelfareList) { + result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage())) + + SalaryI18nUtil.getI18nLabel(0, "申报基数") + + SalaryI18nUtil.getI18nLabel(0,"个人"), po.getId() + "fundPerBase"); + result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage())) + + SalaryI18nUtil.getI18nLabel(0, "申报基数") + + SalaryI18nUtil.getI18nLabel(0,"单位"), po.getId() + "fundComBase"); + } + } else { + for (ICategoryPO po : fundWelfareList) { + result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage())) + + SalaryI18nUtil.getI18nLabel(0, "申报基数"), po.getId() + "fundBase"); + } + } + + //组装其他福利基数 + if (welBaseDiffSign) { + for (ICategoryPO po : otherWelfareList) { + result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage())) + + SalaryI18nUtil.getI18nLabel(0, "申报基数") + + SalaryI18nUtil.getI18nLabel(0,"个人"), po.getId() + "otherPerBase"); + result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage())) + + SalaryI18nUtil.getI18nLabel(0, "申报基数") + + SalaryI18nUtil.getI18nLabel(0,"单位"), po.getId() + "otherComBase"); + } + } else { + for (ICategoryPO po : otherWelfareList) { + result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage())) + + SalaryI18nUtil.getI18nLabel(0, "申报基数"), po.getId() + "otherBase"); + } + } + //社保个人(生育保险个人、工伤保险个人、失业保险个人、养老保险个人、医疗保险个人) for (ICategoryPO po : socialWelPerList) { - headerList.add(po.getInsuranceName() + "个人"); + result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage())) + + SalaryI18nUtil.getI18nLabel(0, "申报基数"), po.getId() + "socialPer"); } - headerList.add(SalaryI18nUtil.getI18nLabel(100388, "社保个人合计")); //住房公积金个人、补充住房公积金个人 for (ICategoryPO po : fundWelPerList) { - headerList.add(po.getInsuranceName() + "个人"); + result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage())) + + SalaryI18nUtil.getI18nLabel(0, "申报基数"), po.getId() + "fundPer"); } - headerList.add(SalaryI18nUtil.getI18nLabel(100390, "公积金个人合计")); //其他个人(比如企业年金个人) for (ICategoryPO po : otherWelPerList) { - headerList.add(po.getInsuranceName() + "个人"); + result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage())) + + SalaryI18nUtil.getI18nLabel(0, "申报基数"), po.getId() + "otherPer"); } - headerList.add(SalaryI18nUtil.getI18nLabel(100392, "其他福利个人合计")); - headerList.add(SalaryI18nUtil.getI18nLabel(100393, "个人合计")); //社保单位(生育保险单位、工伤保险单位、失业保险单位、养老保险单位、医疗保险单位) for (ICategoryPO po : socialWelComList) { - headerList.add(po.getInsuranceName() + "单位"); + result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage())) + + SalaryI18nUtil.getI18nLabel(0, "申报基数"), po.getId() + "socialCom"); } - headerList.add(SalaryI18nUtil.getI18nLabel(100394, "社保单位合计")); //住房公积金单位、补充住房公积金单位 for (ICategoryPO po : fundWelComList) { - headerList.add(po.getInsuranceName() + "单位"); + result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage())) + + SalaryI18nUtil.getI18nLabel(0, "申报基数"), po.getId() + "fundCom"); } - headerList.add(SalaryI18nUtil.getI18nLabel(100395, "公积金单位合计")); + //其他单位(比如企业年金单位) for (ICategoryPO po : otherWelComList) { - headerList.add(po.getInsuranceName() + "单位"); + result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage())) + + SalaryI18nUtil.getI18nLabel(0, "申报基数"), po.getId() + "otherCom"); } - headerList.add(SalaryI18nUtil.getI18nLabel(100396, "其他福利单位合计")); - headerList.add(SalaryI18nUtil.getI18nLabel(100397, "单位合计")); - headerList.add(SalaryI18nUtil.getI18nLabel(100398, "社保合计")); - headerList.add(SalaryI18nUtil.getI18nLabel(100399, "公积金合计")); - headerList.add(SalaryI18nUtil.getI18nLabel(100400, "其他福利合计")); - headerList.add(SalaryI18nUtil.getI18nLabel(93278, "合计")); - List> rows = new ArrayList<>(); - rows.add(headerList); - String sheetName = "福利核算-线下对比导入模板"; - - return ExcelUtilPlus.genWorkbookV2(rows, sheetName); + return result; } /** @@ -2424,6 +2620,12 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { } String billMonth = importParam.getBillMonth(); + + Map welColumnNameCodeMap = welColumnNameCodeMap(InsuranceAccountDetailParam.builder() + .billMonth(billMonth) + .paymentOrganization(importParam.getPaymentOrganization()) + .paymentStatus(PaymentStatusEnum.COMMON.getValue()) + .build()); //存储待更新的InsuranceAccountDetailPO数据 List addCompareList = new ArrayList<>(); //记录待删除hrsa_excel_bill_detail.id @@ -2518,7 +2720,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { idList.addAll(ids); } //拼装待更新数据 - addCompareList.add(handleExcelInsuranceDetail(billMonth, employeeId, paymentOrganization, map)); + addCompareList.add(handleExcelInsuranceDetail(billMonth, employeeId, paymentOrganization, map, welColumnNameCodeMap)); } @@ -2557,7 +2759,8 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { * @param billMonth 对比的账单月份 * @param baseMap excel导入的对比数据 */ - private ExcelInsuranceDetailPO handleExcelInsuranceDetail(String billMonth, Long employeeId, Long paymentOrganization, Map baseMap) { + private ExcelInsuranceDetailPO handleExcelInsuranceDetail(String billMonth, Long employeeId, Long paymentOrganization, Map baseMap, Map welColumnNameCodeMap) { + boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); ExcelInsuranceDetailPO excelInsuranceDetailPO = new ExcelInsuranceDetailPO(); excelInsuranceDetailPO.setId(IdGenerator.generate()); @@ -2573,6 +2776,10 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { Map fundPaymentBaseMap = new HashMap<>(); Map otherPaymentBaseMap = new HashMap<>(); + Map socialPaymentComBaseMap = new HashMap<>(); + Map fundPaymentComBaseMap = new HashMap<>(); + Map otherPaymentComBaseMap = new HashMap<>(); + //筛选出福利核算项 Map toDealMap = baseMap.entrySet().stream() @@ -2586,73 +2793,157 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); for(Map.Entry entry : toDealMap.entrySet()) { - //判断元素是否属于福利类 - String keyName = entry.getKey(); - //获取元素名后缀,方便之后判断“个人”或“单位”或者“基数” - String payScope = keyName.substring(keyName.length() - 2); - //获取福利类型 - Integer welfareType; - //根据元素名后缀,区分截取内容 - String targetWelfareName; - if ("基数".equals(payScope)) { - targetWelfareName = entry.getKey().substring(0, keyName.length() - 4); - } else { - targetWelfareName = entry.getKey().substring(0, keyName.length() - 2); - } - List categoryPOList = siCategoryBiz.listByName(targetWelfareName); - if (categoryPOList.size() == 1) { - ICategoryPO iCategoryPO = categoryPOList.get(0); - welfareType = iCategoryPO.getWelfareType(); +// //判断元素是否属于福利类 +// String keyName = entry.getKey(); +// //获取元素名后缀,方便之后判断“个人”或“单位”或者“基数” +// String payScope = keyName.substring(keyName.length() - 2); +// //获取福利类型 +// Integer welfareType; +// //根据元素名后缀,区分截取内容 +// String targetWelfareName; +// if ("基数".equals(payScope)) { +// targetWelfareName = entry.getKey().substring(0, keyName.length() - 4); +// } else { +// targetWelfareName = entry.getKey().substring(0, keyName.length() - 2); +// } +// List categoryPOList = siCategoryBiz.listByName(targetWelfareName); +// if (categoryPOList.size() == 1) { +// ICategoryPO iCategoryPO = categoryPOList.get(0); +// welfareType = iCategoryPO.getWelfareType(); +// +// switch (payScope) { +// case "个人": +// switch (welfareType) { +// case 1: +// socialPerMap.put(iCategoryPO.getId().toString(), entry.getValue().toString()); +// break; +// case 2: +// fundPerMap.put(iCategoryPO.getId().toString(), entry.getValue().toString()); +// break; +// case 3: +// otherPerMap.put(iCategoryPO.getId().toString(), entry.getValue().toString()); +// break; +// default: +// throw new SalaryRunTimeException("福利类型不存在"); +// } +// break; +// case "单位": +// switch (welfareType) { +// case 1: +// socialComMap.put(iCategoryPO.getId().toString(), entry.getValue().toString()); +// break; +// case 2: +// fundComMap.put(iCategoryPO.getId().toString(), entry.getValue().toString()); +// break; +// case 3: +// otherComMap.put(iCategoryPO.getId().toString(), entry.getValue().toString()); +// break; +// default: +// throw new SalaryRunTimeException("福利类型不存在"); +// } +// break; +// case "基数": +// switch (welfareType) { +// case 1: +// socialPaymentBaseMap.put(iCategoryPO.getId().toString(), entry.getValue().toString()); +// break; +// case 2: +// fundPaymentBaseMap.put(iCategoryPO.getId().toString(), entry.getValue().toString()); +// break; +// case 3: +// otherPaymentBaseMap.put(iCategoryPO.getId().toString(), entry.getValue().toString()); +// break; +// default: +// throw new SalaryRunTimeException("福利类型不存在"); +// } +// break; +// } +// } - switch (payScope) { - case "个人": - switch (welfareType) { - case 1: - socialPerMap.put(iCategoryPO.getId().toString(), entry.getValue().toString()); - break; - case 2: - fundPerMap.put(iCategoryPO.getId().toString(), entry.getValue().toString()); - break; - case 3: - otherPerMap.put(iCategoryPO.getId().toString(), entry.getValue().toString()); - break; - default: - throw new SalaryRunTimeException("福利类型不存在"); - } - break; - case "单位": - switch (welfareType) { - case 1: - socialComMap.put(iCategoryPO.getId().toString(), entry.getValue().toString()); - break; - case 2: - fundComMap.put(iCategoryPO.getId().toString(), entry.getValue().toString()); - break; - case 3: - otherComMap.put(iCategoryPO.getId().toString(), entry.getValue().toString()); - break; - default: - throw new SalaryRunTimeException("福利类型不存在"); - } - break; - case "基数": - switch (welfareType) { - case 1: - socialPaymentBaseMap.put(iCategoryPO.getId().toString(), entry.getValue().toString()); - break; - case 2: - fundPaymentBaseMap.put(iCategoryPO.getId().toString(), entry.getValue().toString()); - break; - case 3: - otherPaymentBaseMap.put(iCategoryPO.getId().toString(), entry.getValue().toString()); - break; - default: - throw new SalaryRunTimeException("福利类型不存在"); - } - break; + if (welColumnNameCodeMap.get(entry.getKey()) != null) { + String code = welColumnNameCodeMap.get(entry.getKey()); + if (welBaseDiffSign) { + if (code.contains("socialPerBase")) { + code = code.replace("socialPerBase", ""); + socialPaymentBaseMap.put(code, entry.getValue().toString()); + continue; + } + if (code.contains("socialComBase")) { + code = code.replace("socialComBase", ""); + socialPaymentComBaseMap.put(code, entry.getValue().toString()); + continue; + } + if (code.contains("fundPerBase")) { + code = code.replace("fundPerBase", ""); + fundPaymentBaseMap.put(code, entry.getValue().toString()); + continue; + } + if (code.contains("fundComBase")) { + code = code.replace("fundComBase", ""); + fundPaymentComBaseMap.put(code, entry.getValue().toString()); + continue; + } + if (code.contains("otherPerBase")) { + code = code.replace("otherPerBase", ""); + otherPaymentBaseMap.put(code, entry.getValue().toString()); + continue; + } + if (code.contains("otherComBase")) { + code = code.replace("otherComBase", ""); + otherPaymentComBaseMap.put(code, entry.getValue().toString()); + continue; + } + } else { + if (code.contains("socialBase")) { + code = code.replace("socialBase", ""); + socialPaymentBaseMap.put(code, entry.getValue().toString()); + continue; + } + if (code.contains("fundBase")) { + code = code.replace("fundBase", ""); + fundPaymentBaseMap.put(code, entry.getValue().toString()); + continue; + } + if (code.contains("otherBase")) { + code = code.replace("otherBase", ""); + otherPaymentBaseMap.put(code, entry.getValue().toString()); + continue; + } + } + + + if (code.contains("socialPer") && !code.contains("socialPerBase")) { + code = code.replace("socialPer", ""); + socialPerMap.put(code, entry.getValue().toString()); + continue; + } + if (code.contains("fundPer") && !code.contains("fundPerBase")) { + code = code.replace("fundPer", ""); + fundPerMap.put(code, entry.getValue().toString()); + continue; + } + if (code.contains("otherPer") && !code.contains("otherPerBase")) { + code = code.replace("otherPer", ""); + otherPerMap.put(code, entry.getValue().toString()); + continue; + } + + if (code.contains("socialCom") && !code.contains("socialComBase")) { + code = code.replace("socialCom", ""); + socialComMap.put(code, entry.getValue().toString()); + continue; + } + if (code.contains("fundCom") && !code.contains("fundComBase")) { + code = code.replace("fundCom", ""); + fundComMap.put(code, entry.getValue().toString()); + continue; + } + if (code.contains("otherCom") && !code.contains("otherComBase")) { + code = code.replace("otherCom", ""); + otherComMap.put(code, entry.getValue().toString()); + continue; } } - } //设置社保个人和公司缴纳明细 @@ -2669,6 +2960,10 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { excelInsuranceDetailPO.setFundPaymentBaseString(JSON.toJSONString(fundPaymentBaseMap)); excelInsuranceDetailPO.setOtherPaymentBaseString(JSON.toJSONString(otherPaymentBaseMap)); + excelInsuranceDetailPO.setSocialPaymentComBaseString(JSON.toJSONString(socialPaymentComBaseMap)); + excelInsuranceDetailPO.setFundPaymentComBaseString(JSON.toJSONString(fundPaymentComBaseMap)); + excelInsuranceDetailPO.setOtherPaymentComBaseString(JSON.toJSONString(otherPaymentComBaseMap)); + //组装新的insuranceAccountDetailPO对象数据 excelInsuranceDetailPO.setEmployeeId(employeeId); excelInsuranceDetailPO.setBillMonth(billMonth); From 82ec08bfd905d965d108899398f40b07df9476c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 8 Dec 2023 18:15:56 +0800 Subject: [PATCH 14/92] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E7=94=B3=E6=8A=A5?= =?UTF-8?q?=E6=98=8E=E7=BB=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../remote/tax/client/DeclareClient.java | 11 +- .../GetDeclareTaxResultFeedbackResponse.java | 940 ++++++++++-------- .../service/TaxDeclareRecordService.java | 2 + .../impl/EmployeeDeclareExcelServiceImpl.java | 42 +- .../impl/TaxDeclareRecordServiceImpl.java | 20 +- .../engine/salary/util/excel/ExcelUtil.java | 42 +- .../salary/web/TaxDeclarationController.java | 41 +- .../wrapper/TaxDeclareRecordWrapper.java | 6 + 8 files changed, 628 insertions(+), 476 deletions(-) diff --git a/src/com/engine/salary/remote/tax/client/DeclareClient.java b/src/com/engine/salary/remote/tax/client/DeclareClient.java index bcd390856..bd7a500da 100644 --- a/src/com/engine/salary/remote/tax/client/DeclareClient.java +++ b/src/com/engine/salary/remote/tax/client/DeclareClient.java @@ -1,7 +1,10 @@ package com.engine.salary.remote.tax.client; +import com.engine.salary.remote.tax.response.employee.GetDeclareTaxResultFeedbackResponse; import com.engine.salary.util.HttpUtil; +import com.engine.salary.util.JsonUtil; import com.engine.salary.util.SingnatureData; +import lombok.extern.slf4j.Slf4j; import java.util.Collections; import java.util.HashMap; @@ -15,6 +18,7 @@ import java.util.Map; * @author qiantao * @version 1.0 **/ +@Slf4j public class DeclareClient extends TaxBaseClient{ public DeclareClient(Long taxAgentId) { super(taxAgentId); @@ -25,7 +29,7 @@ public class DeclareClient extends TaxBaseClient{ * @param requestId· * @return */ - public Object getDeclareTaxResultFeedback(String requestId){ + public GetDeclareTaxResultFeedbackResponse getDeclareTaxResultFeedback(String requestId){ // 供应商信息 String url = super.apiConfig.getHost() + "/gateway/iit/report/getDeclareTaxResultFeedback"; Map params = new HashMap<>(1); @@ -33,9 +37,8 @@ public class DeclareClient extends TaxBaseClient{ Map header = SingnatureData.initHeader(Collections.emptyMap(), apiConfig.getAppKey(), apiConfig.getAppSecret()); String res = HttpUtil.getRequest(url, header, params); - - - return res; + log.info("getDeclareTaxResultFeedback res --- {}", res); + return JsonUtil.parseObject(res, GetDeclareTaxResultFeedbackResponse.class); } diff --git a/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java b/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java index 45e773ab0..47f9c42fe 100644 --- a/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java +++ b/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java @@ -1,37 +1,51 @@ package com.engine.salary.remote.tax.response.employee; +import com.engine.salary.annotation.SalaryTableColumn; +import com.engine.salary.entity.taxpayment.response.BaseResponse; +import lombok.Data; +import lombok.EqualsAndHashCode; + import java.math.BigDecimal; import java.util.List; -public class GetDeclareTaxResultFeedbackResponse { +@Data +@EqualsAndHashCode(callSuper = true) +public class GetDeclareTaxResultFeedbackResponse extends BaseResponse { /** - * 企业名称 必填:是 + * 返回数据 */ - private String qymc; - /** - * 税号 必填:是 - */ - private String nsrsbh; - /** - * 地区编号 必填:是 6位行政区划代码,精确到市级,例如:440100,参考省市区编码 - */ - private String areaid; - /** - * 部门编号 必填:是 - */ - private String bmbh; - /** - * 部门名称 必填:否 - */ - private String bmmc; - /** - * 算税月份 必填:是 - */ - private String skssq; - /** - * 综合所得 必填:是 见综合所得计算结果 - */ - private zhsd zhsd; + private Body body; + + @Data + public static class Body { + /** + * 企业名称 必填:是 + */ + private String qymc; + /** + * 税号 必填:是 + */ + private String nsrsbh; + /** + * 地区编号 必填:是 6位行政区划代码,精确到市级,例如:440100,参考省市区编码 + */ + private String areaid; + /** + * 部门编号 必填:是 + */ + private String bmbh; + /** + * 部门名称 必填:否 + */ + private String bmmc; + /** + * 算税月份 必填:是 + */ + private String skssq; + /** + * 综合所得 必填:是 见综合所得计算结果 + */ + private zhsd zhsd; // /** // * 分类所得 必填:是 见分类所得计算结果 // */ @@ -49,16 +63,16 @@ public class GetDeclareTaxResultFeedbackResponse { // */ // private 数组 rysbsblb; - - public class zhsd { - /** - * 人员代代报失败列表 参考人员代报结果对象 - */ - private List rysbsblb; - /** - * 正常工资薪金算税结果对象 参考综合所得算税结果对象 - */ - private zcgzxj zcgzxj; + @Data + public static class zhsd { + /** + * 人员代代报失败列表 参考人员代报结果对象 + */ + private List rysbsblb; + /** + * 正常工资薪金算税结果对象 参考综合所得算税结果对象 + */ + private zcgzxj zcgzxj; // /** // * 全年一次性奖金收入算税结果对象 参考综合所得算税结果对象 // */ @@ -121,393 +135,17 @@ public class GetDeclareTaxResultFeedbackResponse { // private 对象 flyzlwbclb; - /** - * 人员代报结果对象 - */ - public class rydbjgdx { /** - * 姓名 + * 人员代报结果对象 */ - private String xm; - /** - * 证件类型名称 - */ - private String zzlx; - /** - * 证件号码 - */ - private String zzhm; - /** - * 代报状态 1 待报送 2 代报中 3 代报失败 4 代报成功 - */ - private String sbzt; - /** - * 人员认证状态 - */ - private String rzzt; - /** - * 失败原因 - */ - private String sbyy; - /** - * 专项代报状态 - */ - private String clzt; - /** - * 专项代报结果原因 - */ - private String cljgms; - } - - - /** - * 综合所得算税结果对象 - */ - public class zcgzxj { - /** - * 综合算税成功列表 参考综合所得输出结果报文 - */ - private List sscglb; - /** - * 综合算税失败列表 参考综合所得输出结果报文 - */ - private List sssblb; - /** - * 综合算税失败原因列表 参考算税失败原因对象 - */ - private List sssbyylb; - /** - * 参与综合算税总人数 - */ - private int sszrs; - /** - * 综合算税失败总人数 - */ - private int sssbrs; - /** - * 年金上限 - */ - private BigDecimal njsx; - /** - * 住房公积金上限 - */ - private BigDecimal zfgjjsx; - /** - * 年平均工资 - */ - private BigDecimal npjgz; - /** - * 企业上月是否已申报 0:上月未申报 1:上月已申报 2:上上月未申报 - */ - private String qysysfysb; - /** - * 专项代报状态 - */ - private String clzt; - /** - * 专项代报结果原因 - */ - private String cljgms; - - - /** - * 综合所得输出结果报文 - */ - public class zhsdscjgbw { + @Data + public static class rydbjgdx { /** - * 是否明细申报 必填:否 是或者否 - */ - private String sfmxsb; - /** - * 姓名 必填:null 如果是汇总申报返回空 + * 姓名 */ private String xm; /** - * 证件类型 必填:null 见证件类型字典 - */ - private String zzlx; - /** - * 证件号码 必填:null 如果是汇总申报返回空 - */ - private String zzhm; - /** - * 任职受雇日期 必填:是 格式YYYY-MM-DD - */ - private String rzsgrq; - /** - * 离职日期 必填:否 格式YYYY-MM-DD - */ - private String lzrq; - /** - * 当期收入额 必填:是 不填写默认为0 - */ - private BigDecimal sre; - /** - * 当期免税收入 必填:null - */ - private BigDecimal mssd; - /** - * 基本养老保险 必填:null - */ - private BigDecimal jbylaobxf; - /** - * 基本医疗保险 必填:null - */ - private BigDecimal jbylbxf; - /** - * 失业保险 必填:null - */ - private BigDecimal sybxf; - /** - * 住房公积金 必填:null - */ - private BigDecimal zfgjj; - /** - * 子女教育支出 必填:null - */ - private BigDecimal znjyzc; - /** - * 赡养老人支出 必填:null - */ - private BigDecimal sylrzc; - /** - * 住房贷款利息支出 必填:null - */ - private BigDecimal zfdklxzc; - /** - * 住房租金支出 必填:null - */ - private BigDecimal zfzjzc; - /** - * 继续教育支出 必填:null - */ - private BigDecimal jxjyzc; - /** - * 非学历继续教育支出 必填:null - */ - private BigDecimal fxljxjyzc; - /** - * 3岁以下婴幼儿照护支出 必填:null - */ - private BigDecimal yyezhzc; - /** - * 年金 必填:null - */ - private BigDecimal nj; - /** - * 商业健康保险 必填:null - */ - private BigDecimal syjkbx; - /** - * 税延养老保险 必填:null - */ - private BigDecimal syylbx; - /** - * 其他 必填:null 按法律规定可以在税前扣除的项目 - */ - private BigDecimal qt; - /** - * 准予扣除的捐赠额 必填:null - */ - private BigDecimal zykcjze; - /** - * 减免税额 必填:null - */ - private BigDecimal jmse; - /** - * 备注 必填:null - */ - private String bz; - /** - * 减除费用 必填:null 正常工资薪金的减除费用。 对应保险营销员、证券经纪人的费用 - */ - private BigDecimal jcfy; - /** - * 其他扣除合计 必填:null - */ - private BigDecimal qtckhj; - /** - * 应纳税所得额 必填:null 正常工资薪金返回Null - */ - private BigDecimal ynssde; - /** - * 应纳税额 必填:null 正常工资薪金返回Null - */ - private BigDecimal ynse; - /** - * 已缴税额 必填:null 正常工资薪金返回Null - */ - private BigDecimal ykjse; - /** - * 应扣缴税额 必填:null 正常工资薪金返回Null - */ - private BigDecimal yingkjse; - /** - * 税率 必填:null - */ - private BigDecimal sl; - /** - * 速算扣除数 必填:null - */ - private BigDecimal sskcs; - /** - * 所得项目名称 必填:是 正常工资薪金;全年一次性奖金收入;稿酬所得;劳务报酬 - */ - private String sdxm; - /** - * 应补退税额 必填:null 应补退税额=累计应扣缴税额-累计已缴税额 - */ - private BigDecimal ybtse; - /** - * 累计收入额 必填:null - */ - private BigDecimal ljsre; - /** - * 累计免税收入额 必填:null - */ - private BigDecimal ljmssd; - /** - * 累计专项扣除额 必填:null 三险一金合计 - */ - private BigDecimal ljzxkce; - /** - * 累计专项附加扣除额 必填:null 专项附加合计 - */ - private BigDecimal ljzxfjkce; - /** - * 累计其他扣除额 必填:null - */ - private BigDecimal ljqtkce; - /** - * 累计减免税额 必填:null - */ - private BigDecimal ljjmse; - /** - * 累计减除费用额 必填:null 正常工资薪金累计减除费用 对应保险营销员、证券经纪人累计费用 - */ - private BigDecimal ljjcfye; - /** - * 累计月减除费用 必填:null 保险营销员、证券经纪人,其他连续劳务报酬的减除费用 - */ - private BigDecimal ljyjcfy; - /** - * 允许扣除税费 必填:null 保险营销员、证券经纪人 - */ - private BigDecimal yxkcsf; - /** - * 展业成本 必填:null 保险营销员、证券经纪人 - */ - private BigDecimal zycb; - /** - * 月减除费用 必填:null 保险营销员、证券经纪人,其他连续劳务报酬的减除费用 - */ - private BigDecimal yjcfy; - /** - * 累计应纳税所得额 必填:null - */ - private BigDecimal ljynssde; - /** - * 累计应纳税额 必填:null - */ - private BigDecimal ljynse; - /** - * 累计应扣缴税额 必填:null 累计应扣缴税额 = 累计应纳税额 - 累计减免税额 - */ - private BigDecimal ljyingkjse; - /** - * 累计已缴税额 必填:null - */ - private BigDecimal ljykjse; - /** - * 累计子女教育支出 必填:null - */ - private BigDecimal ljznjyzc; - /** - * 累计继续教育支出 必填:null - */ - private BigDecimal ljjxjyzc; - /** - * 累计非学历继续教育支持 必填:null - */ - private BigDecimal ljfxljxjyzc; - /** - * 累计学历继续教育支持 必填:null - */ - private BigDecimal ljxljxjyzc; - /** - * 累计住房租金支出 必填:null - */ - private BigDecimal ljzfzjzc; - /** - * 累计房屋贷款支出 必填:null - */ - private BigDecimal ljzfdklxzc; - /** - * 累计赡养老人支出 必填:null - */ - private BigDecimal ljsylrzc; - /** - * 累计3岁以下婴幼儿照护支出 必填:null - */ - private BigDecimal ljyyezhzc; - /** - * 累计准予扣除的捐赠额 必填:null - */ - private BigDecimal ljzykcjze; - /** - * 累计个人养老金 必填:null - */ - private BigDecimal ljgrylj; - /** - * 累计个人养老金校验码 必填:null - */ - private String ljgryljjym; - /** - * 企业上月是否已申报 必填:null 仅在两个月算税场景时使用,当前月分为N月: - * 0表示N-1月(上月)未申报 - * 1表示N-1月(上月)已申报 - * 2表示N-2月(上上个月)未申报 - */ - private String qysysfysb; - /** - * 员工在税局累计已扣缴的税额 必填:null 当前月分为N,如果N-1(上月)已申报,则返回N-1月员工在税局累计已扣缴的税额; - * 如果N-1月未申报,则返回N-2月工在税局累计已扣缴的税额; - */ - private BigDecimal ygzsjljykjse; - - /** - * 本月已累计扣除税额 必填:null 针对一月多次算税的场景字段 - */ - private BigDecimal byyljkjse; - /** - * 本次应扣缴税额 必填:null 针对一月多次算税的场景字段,本次应扣缴税额=本月应扣缴税额-本月已累计税额 - */ - private BigDecimal bcykjse; - /** - * 分摊年度数 必填:null - */ - private Integer ftnds; - /** - * 年减除费用 必填:null 默认为60000 - */ - private BigDecimal njcfy; - - } - - /** - * 4.4.1.3.2算税失败原因对象 - */ - public class sssbyydx { - /** - * 人员ID - */ - private Integer ygid; - /** - * 人员名称 - */ - private String xm; - /** - * 证件类型 见证件类型字典 + * 证件类型名称 */ private String zzlx; /** @@ -515,21 +153,471 @@ public class GetDeclareTaxResultFeedbackResponse { */ private String zzhm; /** - * 错误码 + * 代报状态 1 待报送 2 代报中 3 代报失败 4 代报成功 */ - private String cwm; + private String sbzt; /** - * 错误信息 + * 人员认证状态 */ - private String cwxx; + private String rzzt; /** - * 所得税的code + * 失败原因 */ - private String sdxmdm; + private String sbyy; /** - * 所得税的名称 + * 专项代报状态 */ - private String sdxmmc; + private String clzt; + /** + * 专项代报结果原因 + */ + private String cljgms; + } + + + /** + * 综合所得算税结果对象 + */ + @Data + public static class zcgzxj { + /** + * 综合算税成功列表 参考综合所得输出结果报文 + */ + private List sscglb; + /** + * 综合算税失败列表 参考综合所得输出结果报文 + */ + private List sssblb; + /** + * 综合算税失败原因列表 参考算税失败原因对象 + */ + private List sssbyylb; + /** + * 参与综合算税总人数 + */ + private int sszrs; + /** + * 综合算税失败总人数 + */ + private int sssbrs; + /** + * 年金上限 + */ + private BigDecimal njsx; + /** + * 住房公积金上限 + */ + private BigDecimal zfgjjsx; + /** + * 年平均工资 + */ + private BigDecimal npjgz; + /** + * 企业上月是否已申报 0:上月未申报 1:上月已申报 2:上上月未申报 + */ + private String qysysfysb; + /** + * 专项代报状态 + */ + private String clzt; + /** + * 专项代报结果原因 + */ + private String cljgms; + + + /** + * 综合所得输出结果报文 + */ + @Data + public static class zhsdscjgbw { + /** + * 是否明细申报 必填:否 是或者否 + */ + @SalaryTableColumn(text = "是否明细申报", width = "10%", column = "sfmxsb") + private String sfmxsb; + /** + * 姓名 必填:null 如果是汇总申报返回空 + */ + @SalaryTableColumn(text = "姓名", width = "10%", column = "xm") + private String xm; + /** + * 证件类型 必填:null 见证件类型字典 + */ + @SalaryTableColumn(text = "证件类型", width = "10%", column = "zzlx") + private String zzlx; + /** + * 证件号码 必填:null 如果是汇总申报返回空 + */ + @SalaryTableColumn(text = "证件号码", width = "10%", column = "zzhm") + private String zzhm; + /** + * 任职受雇日期 必填:是 格式YYYY-MM-DD + */ + @SalaryTableColumn(text = "任职受雇日期", width = "10%", column = "rzsgrq") + private String rzsgrq; + /** + * 离职日期 必填:否 格式YYYY-MM-DD + */ + @SalaryTableColumn(text = "离职日期", width = "10%", column = "lzrq") + private String lzrq; + /** + * 当期收入额 必填:是 不填写默认为0 + */ + @SalaryTableColumn(text = "当期收入额", width = "10%", column = "sre") + private BigDecimal sre; + /** + * 当期免税收入 必填:null + */ + @SalaryTableColumn(text = "当期免税收入", width = "10%", column = "mssd") + private BigDecimal mssd; + /** + * 基本养老保险 必填:null + */ + @SalaryTableColumn(text = "基本养老保险", width = "10%", column = "jbylaobxf") + private BigDecimal jbylaobxf; + /** + * 基本医疗保险 必填:null + */ + @SalaryTableColumn(text = "基本医疗保险", width = "10%", column = "jbylbxf") + private BigDecimal jbylbxf; + /** + * 失业保险 必填:null + */ + @SalaryTableColumn(text = "失业保险", width = "10%", column = "sybxf") + private BigDecimal sybxf; + /** + * 住房公积金 必填:null + */ + @SalaryTableColumn(text = "住房公积金", width = "10%", column = "zfgjj") + private BigDecimal zfgjj; + /** + * 子女教育支出 必填:null + */ + @SalaryTableColumn(text = "子女教育支出", width = "10%", column = "znjyzc") + private BigDecimal znjyzc; + /** + * 赡养老人支出 必填:null + */ + @SalaryTableColumn(text = "赡养老人支出", width = "10%", column = "sylrzc") + private BigDecimal sylrzc; + /** + * 住房贷款利息支出 必填:null + */ + @SalaryTableColumn(text = "住房贷款利息支出", width = "10%", column = "zfdklxzc") + private BigDecimal zfdklxzc; + /** + * 住房租金支出 必填:null + */ + @SalaryTableColumn(text = "住房租金支出", width = "10%", column = "zfzjzc") + private BigDecimal zfzjzc; + /** + * 继续教育支出 必填:null + */ + @SalaryTableColumn(text = "继续教育支出", width = "10%", column = "jxjyzc") + private BigDecimal jxjyzc; + /** + * 非学历继续教育支出 必填:null + */ + @SalaryTableColumn(text = "非学历继续教育支出", width = "10%", column = "fxljxjyzc") + private BigDecimal fxljxjyzc; + /** + * 3岁以下婴幼儿照护支出 必填:null + */ + @SalaryTableColumn(text = "3岁以下婴幼儿照护支出", width = "10%", column = "yyezhzc") + private BigDecimal yyezhzc; + /** + * 年金 必填:null + */ + @SalaryTableColumn(text = "年金", width = "10%", column = "nj") + private BigDecimal nj; + /** + * 商业健康保险 必填:null + */ + @SalaryTableColumn(text = "商业健康保险", width = "10%", column = "syjkbx") + private BigDecimal syjkbx; + /** + * 税延养老保险 必填:null + */ + @SalaryTableColumn(text = "税延养老保险", width = "10%", column = "syylbx") + private BigDecimal syylbx; + /** + * 其他 必填:null 按法律规定可以在税前扣除的项目 + */ + @SalaryTableColumn(text = "其他", width = "10%", column = "qt") + private BigDecimal qt; + /** + * 准予扣除的捐赠额 必填:null + */ + @SalaryTableColumn(text = "准予扣除的捐赠额", width = "10%", column = "zykcjze") + private BigDecimal zykcjze; + /** + * 减免税额 必填:null + */ + @SalaryTableColumn(text = "减免税额", width = "10%", column = "jmse") + private BigDecimal jmse; + /** + * 备注 必填:null + */ + @SalaryTableColumn(text = "备注", width = "10%", column = "bz") + private String bz; + /** + * 减除费用 必填:null 正常工资薪金的减除费用。 对应保险营销员、证券经纪人的费用 + */ + @SalaryTableColumn(text = "减除费用", width = "10%", column = "jcfy") + private BigDecimal jcfy; + /** + * 其他扣除合计 必填:null + */ + @SalaryTableColumn(text = "其他扣除合计", width = "10%", column = "qtckhj") + private BigDecimal qtckhj; + /** + * 应纳税所得额 必填:null 正常工资薪金返回Null + */ + @SalaryTableColumn(text = "应纳税所得额", width = "10%", column = "ynssde") + private BigDecimal ynssde; + /** + * 应纳税额 必填:null 正常工资薪金返回Null + */ + @SalaryTableColumn(text = "应纳税额", width = "10%", column = "ynse") + private BigDecimal ynse; + /** + * 已缴税额 必填:null 正常工资薪金返回Null + */ + @SalaryTableColumn(text = "已缴税额", width = "10%", column = "ykjse") + private BigDecimal ykjse; + /** + * 应扣缴税额 必填:null 正常工资薪金返回Null + */ + @SalaryTableColumn(text = "应扣缴税额", width = "10%", column = "yingkjse") + private BigDecimal yingkjse; + /** + * 税率 必填:null + */ + @SalaryTableColumn(text = "税率", width = "10%", column = "sl") + private BigDecimal sl; + /** + * 速算扣除数 必填:null + */ + @SalaryTableColumn(text = "速算扣除数", width = "10%", column = "sskcs") + private BigDecimal sskcs; + /** + * 所得项目名称 必填:是 正常工资薪金;全年一次性奖金收入;稿酬所得;劳务报酬 + */ + @SalaryTableColumn(text = "所得项目名称", width = "10%", column = "sdxm") + private String sdxm; + /** + * 应补退税额 必填:null 应补退税额=累计应扣缴税额-累计已缴税额 + */ + @SalaryTableColumn(text = "应补退税额", width = "10%", column = "ybtse") + private BigDecimal ybtse; + /** + * 累计收入额 必填:null + */ + @SalaryTableColumn(text = "累计收入额", width = "10%", column = "ljsre") + private BigDecimal ljsre; + /** + * 累计免税收入额 必填:null + */ + @SalaryTableColumn(text = "累计免税收入额", width = "10%", column = "ljmssd") + private BigDecimal ljmssd; + /** + * 累计专项扣除额 必填:null 三险一金合计 + */ + @SalaryTableColumn(text = "累计专项扣除额", width = "10%", column = "ljzxkce") + private BigDecimal ljzxkce; + /** + * 累计专项附加扣除额 必填:null 专项附加合计 + */ + @SalaryTableColumn(text = "累计专项附加扣除额", width = "10%", column = "ljzxfjkce") + private BigDecimal ljzxfjkce; + /** + * 累计其他扣除额 必填:null + */ + @SalaryTableColumn(text = "累计其他扣除额", width = "10%", column = "ljqtkce") + private BigDecimal ljqtkce; + /** + * 累计减免税额 必填:null + */ + @SalaryTableColumn(text = "累计减免税额", width = "10%", column = "ljjmse") + private BigDecimal ljjmse; + /** + * 累计减除费用额 必填:null 正常工资薪金累计减除费用 对应保险营销员、证券经纪人累计费用 + */ + @SalaryTableColumn(text = "累计减除费用额", width = "10%", column = "ljjcfye") + private BigDecimal ljjcfye; + /** + * 累计月减除费用 必填:null 保险营销员、证券经纪人,其他连续劳务报酬的减除费用 + */ + @SalaryTableColumn(text = "累计月减除费用", width = "10%", column = "ljyjcfy") + private BigDecimal ljyjcfy; + /** + * 允许扣除税费 必填:null 保险营销员、证券经纪人 + */ + @SalaryTableColumn(text = "允许扣除税费", width = "10%", column = "yxkcsf") + private BigDecimal yxkcsf; + /** + * 展业成本 必填:null 保险营销员、证券经纪人 + */ + @SalaryTableColumn(text = "展业成本", width = "10%", column = "zycb") + private BigDecimal zycb; + /** + * 月减除费用 必填:null 保险营销员、证券经纪人,其他连续劳务报酬的减除费用 + */ + @SalaryTableColumn(text = "月减除费用", width = "10%", column = "yjcfy") + private BigDecimal yjcfy; + /** + * 累计应纳税所得额 必填:null + */ + @SalaryTableColumn(text = "累计应纳税所得额", width = "10%", column = "ljynssde") + private BigDecimal ljynssde; + /** + * 累计应纳税额 必填:null + */ + @SalaryTableColumn(text = "累计应纳税额", width = "10%", column = "ljynse") + private BigDecimal ljynse; + /** + * 累计应扣缴税额 必填:null 累计应扣缴税额 = 累计应纳税额 - 累计减免税额 + */ + @SalaryTableColumn(text = "累计应扣缴税额", width = "10%", column = "ljyingkjse") + private BigDecimal ljyingkjse; + /** + * 累计已缴税额 必填:null + */ + @SalaryTableColumn(text = "累计已缴税额", width = "10%", column = "ljykjse") + private BigDecimal ljykjse; + /** + * 累计子女教育支出 必填:null + */ + @SalaryTableColumn(text = "累计子女教育支出", width = "10%", column = "ljznjyzc") + private BigDecimal ljznjyzc; + /** + * 累计继续教育支出 必填:null + */ + @SalaryTableColumn(text = "累计继续教育支出", width = "10%", column = "ljjxjyzc") + private BigDecimal ljjxjyzc; + /** + * 累计非学历继续教育支持 必填:null + */ + @SalaryTableColumn(text = "累计非学历继续教育支持", width = "10%", column = "ljfxljxjyzc") + private BigDecimal ljfxljxjyzc; + /** + * 累计学历继续教育支持 必填:null + */ + @SalaryTableColumn(text = "累计学历继续教育支持", width = "10%", column = "ljxljxjyzc") + private BigDecimal ljxljxjyzc; + /** + * 累计住房租金支出 必填:null + */ + @SalaryTableColumn(text = "累计住房租金支出", width = "10%", column = "ljzfzjzc") + private BigDecimal ljzfzjzc; + /** + * 累计房屋贷款支出 必填:null + */ + @SalaryTableColumn(text = "累计房屋贷款支出", width = "10%", column = "ljzfdklxzc") + private BigDecimal ljzfdklxzc; + /** + * 累计赡养老人支出 必填:null + */ + @SalaryTableColumn(text = "累计赡养老人支出", width = "10%", column = "ljsylrzc") + private BigDecimal ljsylrzc; + /** + * 累计3岁以下婴幼儿照护支出 必填:null + */ + @SalaryTableColumn(text = "累计3岁以下婴幼儿照护支出", width = "10%", column = "ljyyezhzc") + private BigDecimal ljyyezhzc; + /** + * 累计准予扣除的捐赠额 必填:null + */ + @SalaryTableColumn(text = "累计准予扣除的捐赠额", width = "10%", column = "ljzykcjze") + private BigDecimal ljzykcjze; + /** + * 累计个人养老金 必填:null + */ + @SalaryTableColumn(text = "累计个人养老金", width = "10%", column = "ljgrylj") + private BigDecimal ljgrylj; + /** + * 累计个人养老金校验码 必填:null + */ + @SalaryTableColumn(text = "累计个人养老金校验码", width = "10%", column = "ljgryljjym") + private String ljgryljjym; + /** + * 企业上月是否已申报 必填:null 仅在两个月算税场景时使用,当前月分为N月: + * 0表示N-1月(上月)未申报 + * 1表示N-1月(上月)已申报 + * 2表示N-2月(上上个月)未申报 + */ + @SalaryTableColumn(text = "企业上月是否已申报", width = "10%", column = "qysysfysb") + private String qysysfysb; + /** + * 员工在税局累计已扣缴的税额 必填:null 当前月分为N,如果N-1(上月)已申报,则返回N-1月员工在税局累计已扣缴的税额; + * 如果N-1月未申报,则返回N-2月工在税局累计已扣缴的税额; + */ + @SalaryTableColumn(text = "员工在税局累计已扣缴的税额", width = "10%", column = "ygzsjljykjse") + private BigDecimal ygzsjljykjse; + + /** + * 本月已累计扣除税额 必填:null 针对一月多次算税的场景字段 + */ + @SalaryTableColumn(text = "本月已累计扣除税额", width = "10%", column = "byyljkjse") + private BigDecimal byyljkjse; + /** + * 本次应扣缴税额 必填:null 针对一月多次算税的场景字段,本次应扣缴税额=本月应扣缴税额-本月已累计税额 + */ + @SalaryTableColumn(text = "本次应扣缴税额", width = "10%", column = "bcykjse") + private BigDecimal bcykjse; + /** + * 分摊年度数 必填:null + */ + @SalaryTableColumn(text = "分摊年度数", width = "10%", column = "ftnds") + private Integer ftnds; + /** + * 年减除费用 必填:null 默认为60000 + */ + @SalaryTableColumn(text = "年减除费用", width = "10%", column = "njcfy") + private BigDecimal njcfy; + + } + + /** + * 4.4.1.3.2算税失败原因对象 + */ + @Data + public static class sssbyydx { + /** + * 人员ID + */ + private Integer ygid; + /** + * 人员名称 + */ + private String xm; + /** + * 证件类型 见证件类型字典 + */ + private String zzlx; + /** + * 证件号码 + */ + private String zzhm; + /** + * 错误码 + */ + private String cwm; + /** + * 错误信息 + */ + private String cwxx; + /** + * 所得税的code + */ + private String sdxmdm; + /** + * 所得税的名称 + */ + private String sdxmmc; + } + } } diff --git a/src/com/engine/salary/service/TaxDeclareRecordService.java b/src/com/engine/salary/service/TaxDeclareRecordService.java index 4c325a520..a294e259d 100644 --- a/src/com/engine/salary/service/TaxDeclareRecordService.java +++ b/src/com/engine/salary/service/TaxDeclareRecordService.java @@ -7,6 +7,7 @@ import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationSaveParam; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationPO; import com.engine.salary.entity.taxdeclaration.po.TaxDeclareRecordPO; import com.engine.salary.util.page.PageInfo; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.util.Collection; import java.util.Date; @@ -139,6 +140,7 @@ public interface TaxDeclareRecordService { */ Object getDeclareTaxResultFeedback(Long id); + XSSFWorkbook exportGetDeclareTaxResultFeedback(Long id,String requestId); /** * 作废 * diff --git a/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java b/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java index bdf2bfb67..07490e5e1 100644 --- a/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java @@ -2,7 +2,6 @@ package com.engine.salary.service.impl; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; -import com.engine.salary.annotation.SalaryTableColumn; import com.engine.salary.entity.employeedeclare.dto.EmployeeDeclareListDTO; import com.engine.salary.entity.employeedeclare.param.EmployeeDeclareListQueryParam; import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; @@ -10,18 +9,12 @@ import com.engine.salary.service.EmployeeDeclareExcelService; import com.engine.salary.service.EmployeeDeclareService; import com.engine.salary.service.SalaryEmployeeService; import com.engine.salary.service.TaxAgentService; -import com.engine.salary.util.JsonUtil; import com.engine.salary.util.excel.ExcelUtil; -import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.User; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; /** * @description: 人员报送(人员)导入导出 @@ -115,7 +108,7 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee // 转换成dto List dtoList = getEmployeeDeclareService(user).convert(employeeDeclares); // 需要导出的数据 - List> excelSheetData = getExcelSheetData(EmployeeDeclareListDTO.class, dtoList); + List> excelSheetData = ExcelUtil.getExcelSheetData(EmployeeDeclareListDTO.class, dtoList); return ExcelUtil.genWorkbookV2(excelSheetData, "人员信息采集"); } @@ -213,20 +206,6 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee // } - private List> getExcelSheetData(Class clazz, List dtoList) { - // 导出的表头 - Map> headerMap = getHeader(clazz); - // 导出的数据 - List> rows = new ArrayList<>(); - rows.add(headerMap.get("header")); - dtoList.forEach(dto -> { - Map map = JsonUtil.parseMap(dto, Object.class); - List row = Lists.newArrayListWithExpectedSize(headerMap.get("dataIndex").size()); - headerMap.get("dataIndex").forEach(dataIndex -> row.add(map.get(dataIndex))); - rows.add(row); - }); - return rows; - } // // @Transactional(rollbackFor = Exception.class) // @BatchImportHandler("importEmployeeDeclare") @@ -605,24 +584,7 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee // SalaryI18nUtil.getI18nLabel(employeeId, 156402, "是否扣除减除费用")); // } - private Map> getHeader(Class clazz) { - Map> headerMap = new HashMap<>(); - // 导出的表头 - List headerList = Lists.newArrayList(); - List dataIndexList = Lists.newArrayList(); - Field[] declaredFields = clazz.getDeclaredFields(); - for (Field declaredField : declaredFields) { - if (!declaredField.isAnnotationPresent(SalaryTableColumn.class)) { - continue; - } - SalaryTableColumn annotation = declaredField.getAnnotation(SalaryTableColumn.class); - headerList.add(annotation.text()); - dataIndexList.add(annotation.column()); - } - headerMap.put("header", headerList); - headerMap.put("dataIndex", dataIndexList); - return headerMap; - } + // /** // * 检查表头 diff --git a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java index 109ef366c..ac6829f00 100644 --- a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java @@ -41,10 +41,12 @@ import com.engine.salary.enums.taxdeclaration.*; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.taxdeclaration.TaxDeclareRecordMapper; import com.engine.salary.remote.tax.client.DeclareClient; +import com.engine.salary.remote.tax.response.employee.GetDeclareTaxResultFeedbackResponse; import com.engine.salary.service.*; import com.engine.salary.service.factory.TaxPaymentServiceFactory; import com.engine.salary.util.*; import com.engine.salary.util.db.MapperProxyFactory; +import com.engine.salary.util.excel.ExcelUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.ImmutableMap; @@ -54,6 +56,7 @@ import dm.jdbc.util.IdGenerator; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.transaction.annotation.Transactional; import weaver.general.Util; import weaver.hrm.User; @@ -739,7 +742,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe } } taxDeclareRecord.setTaxDeclareErrorMsg(String.join(",", errorMsg)); - }else { + } else { //清除之前的错误 taxDeclareRecord.setTaxDeclareErrorMsg(""); } @@ -924,6 +927,21 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe return declareClient.getDeclareTaxResultFeedback(taxDeclareRecord.getRequestId()); } + @Override + public XSSFWorkbook exportGetDeclareTaxResultFeedback(Long id, String requestId) { + TaxDeclareRequest taxDeclareRequest = buildTaxDeclareRequest(id); + TaxDeclareRecordPO taxDeclareRecord = taxDeclareRequest.getTaxDeclareRecord(); + + DeclareClient declareClient = new DeclareClient(taxDeclareRecord.getTaxAgentId()); + GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse = declareClient.getDeclareTaxResultFeedback(StringUtils.isEmpty(requestId) ? taxDeclareRecord.getRequestId() : requestId); + List sscglb = declareTaxResultFeedbackResponse.getBody().getZhsd().getZcgzxj().getSscglb(); + + // 需要导出的数据 + List> excelSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, sscglb); + + return ExcelUtil.genWorkbookV2(excelSheetData, "申报内置算税结果"); + } + @Override public void updateDeclare(Long id) { diff --git a/src/com/engine/salary/util/excel/ExcelUtil.java b/src/com/engine/salary/util/excel/ExcelUtil.java index 8c271981a..5126cfc96 100644 --- a/src/com/engine/salary/util/excel/ExcelUtil.java +++ b/src/com/engine/salary/util/excel/ExcelUtil.java @@ -1,6 +1,9 @@ package com.engine.salary.util.excel; +import com.engine.salary.annotation.SalaryTableColumn; +import com.engine.salary.util.JsonUtil; import com.engine.salary.util.SalaryDateUtil; +import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.FillPatternType; @@ -9,6 +12,7 @@ import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.xssf.usermodel.*; import java.awt.*; +import java.lang.reflect.Field; import java.util.*; import java.util.List; @@ -271,7 +275,43 @@ public class ExcelUtil { public static XSSFWorkbook genWorkbook(ExcelSheetData excelSheetData) { List> list = new ArrayList<>(); list.add(Collections.singletonList(excelSheetData.getHeaders())); - list.addAll( excelSheetData.getRows()); + list.addAll(excelSheetData.getRows()); return genWorkbookV2(list, excelSheetData.getSheetName()); } + + + public static Map> getHeader(Class clazz) { + Map> headerMap = new HashMap<>(); + // 导出的表头 + List headerList = Lists.newArrayList(); + List dataIndexList = Lists.newArrayList(); + Field[] declaredFields = clazz.getDeclaredFields(); + for (Field declaredField : declaredFields) { + if (!declaredField.isAnnotationPresent(SalaryTableColumn.class)) { + continue; + } + SalaryTableColumn annotation = declaredField.getAnnotation(SalaryTableColumn.class); + headerList.add(annotation.text()); + dataIndexList.add(annotation.column()); + } + headerMap.put("header", headerList); + headerMap.put("dataIndex", dataIndexList); + return headerMap; + } + + public static List> getExcelSheetData(Class clazz, List dtoList) { + // 导出的表头 + Map> headerMap = getHeader(clazz); + // 导出的数据 + List> rows = new ArrayList<>(); + rows.add(headerMap.get("header")); + dtoList.forEach(dto -> { + Map map = JsonUtil.parseMap(dto, Object.class); + List row = Lists.newArrayListWithExpectedSize(headerMap.get("dataIndex").size()); + headerMap.get("dataIndex").forEach(dataIndex -> row.add(map.get(dataIndex))); + rows.add(row); + }); + return rows; + } + } diff --git a/src/com/engine/salary/web/TaxDeclarationController.java b/src/com/engine/salary/web/TaxDeclarationController.java index ba563895b..57dba6fb2 100644 --- a/src/com/engine/salary/web/TaxDeclarationController.java +++ b/src/com/engine/salary/web/TaxDeclarationController.java @@ -31,6 +31,7 @@ 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.time.LocalDateTime; import java.util.Collection; import java.util.List; @@ -211,11 +212,43 @@ public class TaxDeclarationController { @GET @Path("/getDeclareTaxResultFeedback") @Produces(MediaType.APPLICATION_JSON) - public String getDeclareTaxResultFeedback(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { + public String getDeclareTaxResultFeedback(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::getDeclareTaxResultFeedback, id); } + /** + * 人员报送-导出全部人员 + * + * @return + */ + @GET + @Path("/exportGetDeclareTaxResultFeedback") + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Response exportGetDeclareTaxResultFeedback(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id, @QueryParam(value = "requestId") String requestId) { + + try { + User user = HrmUserVarify.getUser(request, response); + XSSFWorkbook workbook = getTaxDeclareRecordWrapper(user).exportGetDeclareTaxResultFeedback(id ,requestId); + String fileName = "申报内置算税结果-" + LocalDate.now(); + 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) { + log.error("申报内置算税结果导出异常", e); + throw e; + } + } + /** * 作废 @@ -466,7 +499,7 @@ public class TaxDeclarationController { try { User user = HrmUserVarify.getUser(request, response); - AbnormalEmployeeListQueryParam queryParam = genAbnormalEmployeeListQueryParam(request); + AbnormalEmployeeListQueryParam queryParam = genAbnormalEmployeeListQueryParam(request); XSSFWorkbook workbook = getTaxDeclareRecordWrapper(user).exportEmployee4NotDeclare(queryParam); String fileName = SalaryI18nUtil.getI18nLabel(156420, "未报送的人员") + "-" + SalaryDateUtil.getFormatLocalDate(LocalDateTime.now()); @@ -503,7 +536,7 @@ public class TaxDeclarationController { try { User user = HrmUserVarify.getUser(request, response); - AbnormalEmployeeListQueryParam queryParam = genAbnormalEmployeeListQueryParam(request); + AbnormalEmployeeListQueryParam queryParam = genAbnormalEmployeeListQueryParam(request); XSSFWorkbook workbook = getTaxDeclareRecordWrapper(user).exportEmployee4NoValue(queryParam); String fileName = SalaryI18nUtil.getI18nLabel(156421, "缺少申报数据的人员") + "-" + SalaryDateUtil.getFormatLocalDate(LocalDateTime.now()); @@ -539,7 +572,7 @@ public class TaxDeclarationController { public Response exportEmployee4Fail(@Context HttpServletRequest request, @Context HttpServletResponse response) { try { User user = HrmUserVarify.getUser(request, response); - AbnormalEmployeeListQueryParam queryParam = genAbnormalEmployeeListQueryParam(request); + AbnormalEmployeeListQueryParam queryParam = genAbnormalEmployeeListQueryParam(request); XSSFWorkbook workbook = getTaxDeclareRecordWrapper(user).exportEmployee4Fail(queryParam); String fileName = SalaryI18nUtil.getI18nLabel(156422, "申报失败人员") + "-" + SalaryDateUtil.getFormatLocalDate(LocalDateTime.now()); diff --git a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java index c47959f3c..edd3900df 100644 --- a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java +++ b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java @@ -466,6 +466,11 @@ public class TaxDeclareRecordWrapper extends Service { return getTaxDeclareRecordService(user).getDeclareTaxResultFeedback(id); } + + public XSSFWorkbook exportGetDeclareTaxResultFeedback(Long id,String requestId) { + return getTaxDeclareRecordService(user).exportGetDeclareTaxResultFeedback(id, requestId); + } + /** * 作废 * @@ -654,4 +659,5 @@ public class TaxDeclareRecordWrapper extends Service { public XSSFWorkbook exportEmployee4Fail(AbnormalEmployeeListQueryParam queryParam) { return getTaxDeclarationExcelService(user).exportEmployee4Fail(queryParam); } + } From e495c1799f04aec29446feced9d3e748fd10011a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 11 Dec 2023 09:52:47 +0800 Subject: [PATCH 15/92] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryacct/bo/SalaryAcctResultBO.java | 38 +++++++++---------- .../salary/util/page/SalaryPageUtil.java | 12 +++++- 2 files changed, 28 insertions(+), 22 deletions(-) diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java index d736bf37f..392ac81e6 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java @@ -23,6 +23,7 @@ import com.engine.salary.enums.salaryaccounting.LockStatusEnum; import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.apache.commons.collections4.CollectionUtils; @@ -85,7 +86,6 @@ public class SalaryAcctResultBO { // } - /** * 构建薪资核算结果列表的表头(线下对比) * @@ -170,7 +170,7 @@ public class SalaryAcctResultBO { List columns = Lists.newArrayList(); // 员工信息字段 for (SalarySobEmpFieldDTO salarySobEmpFieldDTO : salarySobItemAggregateDTO.getEmpFields()) { - columns.add(new WeaTableColumnGroup("150", salarySobEmpFieldDTO.getFieldName(), salarySobEmpFieldDTO.getFieldId())); + columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobEmpFieldDTO.getFieldName()), salarySobEmpFieldDTO.getFieldName(), salarySobEmpFieldDTO.getFieldId())); } // 薪资项目分组下的薪资项目 for (SalarySobItemGroupDTO salarySobItemGroupDTO : salarySobItemAggregateDTO.getItemGroups()) { @@ -180,29 +180,29 @@ public class SalaryAcctResultBO { List childrenColumns = Lists.newArrayList(); for (SalarySobItemDTO salarySobItemDTO : salarySobItemGroupDTO.getItems()) { if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) { - childrenColumns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern())); + childrenColumns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern())); } else { - childrenColumns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern())); + childrenColumns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern())); } } - WeaTableColumnGroup weaTableColumnWapper = new WeaTableColumnGroup("150", salarySobItemGroupDTO.getName(), String.valueOf(salarySobItemGroupDTO.getId()), childrenColumns); + WeaTableColumnGroup weaTableColumnWapper = new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemGroupDTO.getName()), salarySobItemGroupDTO.getName(), String.valueOf(salarySobItemGroupDTO.getId()), childrenColumns); columns.add(weaTableColumnWapper); } // 没有分类的薪资项目 for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getItems()) { if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) { - columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern())); + columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern())); } else { - columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern())); + columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern())); } } // 回算的薪资项目 for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getBackCalcItems()) { if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) { - columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern())); + columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern())); } else { - columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern())); + columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern())); } } @@ -442,9 +442,9 @@ public class SalaryAcctResultBO { sortItem(salarySobItemPOMap); // 根据账套分组封装薪资项目的值 List itemsByGroup = new ArrayList<>(); - for(SalarySobItemGroupPO groupPO : salarySobItemGroupPOS){ - List groupItems = salarySobItemPOMap.getOrDefault(groupPO.getId(),Collections.emptyList()); - if(CollectionUtils.isNotEmpty(groupItems)){ + for (SalarySobItemGroupPO groupPO : salarySobItemGroupPOS) { + List groupItems = salarySobItemPOMap.getOrDefault(groupPO.getId(), Collections.emptyList()); + if (CollectionUtils.isNotEmpty(groupItems)) { List items = groupItems.stream() .map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap, formulaContentMap)) .collect(Collectors.toList()); @@ -452,12 +452,12 @@ public class SalaryAcctResultBO { .salarySobItemGroupId(groupPO.getId()) .salarySobItemGroupName(groupPO.getName()) .salaryItems(items) - .sortedIndex(groupPO.getSortedIndex()).build() ); + .sortedIndex(groupPO.getSortedIndex()).build()); } } // 未分类 List noGroupItems = salarySobItemPOMap.getOrDefault(0L, Collections.emptyList()); - if(CollectionUtils.isNotEmpty(noGroupItems)){ + if (CollectionUtils.isNotEmpty(noGroupItems)) { List items = noGroupItems.stream() .map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap, formulaContentMap)) .collect(Collectors.toList()); @@ -469,7 +469,6 @@ public class SalaryAcctResultBO { } - // // 公式项的值(不根据salaryItemPO的valueType判断是因为薪资项目的valueType属性改变后并不会同步更新薪资账套中的薪资项目的formulaId字段) // List formulaItems = salarySobItemPOS.stream() // .filter(salarySobItemPO -> salarySobItemPO.getFormulaId() > 0) @@ -500,7 +499,7 @@ public class SalaryAcctResultBO { } public static List sortGroup(List salarySobItemGroupPOS) { - if(CollectionUtils.isEmpty(salarySobItemGroupPOS)){ + if (CollectionUtils.isEmpty(salarySobItemGroupPOS)) { return Collections.emptyList(); } return salarySobItemGroupPOS.stream().sorted(Comparator.comparingInt(SalarySobItemGroupPO::getSortedIndex)).collect(Collectors.toList()); @@ -508,10 +507,9 @@ public class SalaryAcctResultBO { /** * 薪资账套的薪资项目按照sortedIndex排序 - * */ public static void sortItem(Map> salarySobItemPOMap) { - for(Map.Entry> entry : salarySobItemPOMap.entrySet()){ + for (Map.Entry> entry : salarySobItemPOMap.entrySet()) { List items = entry.getValue(); if (CollectionUtils.isNotEmpty(items)) { List sortedValue = items.stream().sorted(Comparator.comparingInt(SalarySobItemPO::getSortedIndex)).collect(Collectors.toList()); @@ -535,9 +533,9 @@ public class SalaryAcctResultBO { SalaryValueTypeEnum salaryValueTypeEnum = SalaryValueTypeEnum.parseByValue(Optional.ofNullable(salarySobItemPO).map(SalarySobItemPO::getValueType).orElse(0)); String itemFormulaContent; - if(Objects.equals(salaryValueTypeEnum.getValue(),SalaryValueTypeEnum.FORMULA.getValue())){ + if (Objects.equals(salaryValueTypeEnum.getValue(), SalaryValueTypeEnum.FORMULA.getValue())) { itemFormulaContent = Optional.ofNullable(formulaContentMap.get(salarySobItemPO.getSalaryItemId().toString())).map(SalaryAcctResultListColumnDTO::getFormulaContent).orElse(""); - }else{ + } else { itemFormulaContent = salaryValueTypeEnum == null ? "" : salaryValueTypeEnum.getDefaultLabel(); } diff --git a/src/com/engine/salary/util/page/SalaryPageUtil.java b/src/com/engine/salary/util/page/SalaryPageUtil.java index 062b5408f..4a39874cb 100644 --- a/src/com/engine/salary/util/page/SalaryPageUtil.java +++ b/src/com/engine/salary/util/page/SalaryPageUtil.java @@ -2,6 +2,7 @@ package com.engine.salary.util.page; import com.github.pagehelper.PageHelper; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import java.util.Collections; @@ -37,8 +38,8 @@ public class SalaryPageUtil { return pageInfo; } - public static PageInfo buildPage(Integer pageNo, Integer pageSize,List totalCollection) { - PageInfo pageInfo = new PageInfo<>(); + public static PageInfo buildPage(Integer pageNo, Integer pageSize, List totalCollection) { + PageInfo pageInfo = new PageInfo<>(); pageInfo.setTotal(totalCollection.size()); totalCollection = subList(pageNo, pageSize, totalCollection); pageInfo.setPageNum(pageNo); @@ -90,4 +91,11 @@ public class SalaryPageUtil { return source.subList(startIndex > source.size() ? source.size() : startIndex, endIndex > source.size() ? source.size() : endIndex); } + + public static String selfAdaption(String chars) { + if (StringUtils.isNotEmpty(chars)) { + return chars.length() * 12+40 + ""; + } + return "150"; + } } From d6705e89177195c20886b7aa6c416517c301682c Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 11 Dec 2023 13:09:20 +0800 Subject: [PATCH 16/92] =?UTF-8?q?=E4=BA=A7=E5=93=81-=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/bo/SalaryAcctResultReportBO.java | 40 -------- .../salaryacct/bo/SalaryAcctRecordBO.java | 3 - .../param/SalaryAcctResultBatchEditParam.java | 40 -------- .../SalaryAcctResultBatchUpdateParam.java | 2 +- .../service/SalaryAcctRecordService.java | 6 -- .../service/SalaryAcctReportService.java | 2 - .../service/SalaryAcctResultService.java | 6 -- .../impl/SalaryAcctRecordServiceImpl.java | 83 ---------------- .../impl/SalaryAcctReportServiceImpl.java | 13 --- .../impl/SalaryAcctResultServiceImpl.java | 97 ------------------- .../salary/web/SalaryAcctController.java | 17 ---- .../wrapper/SalaryAcctRecordWrapper.java | 8 -- .../wrapper/SalaryAcctResultWrapper.java | 9 -- 13 files changed, 1 insertion(+), 325 deletions(-) delete mode 100644 src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchEditParam.java diff --git a/src/com/engine/salary/entity/report/bo/SalaryAcctResultReportBO.java b/src/com/engine/salary/entity/report/bo/SalaryAcctResultReportBO.java index 485389860..06cb10a8a 100644 --- a/src/com/engine/salary/entity/report/bo/SalaryAcctResultReportBO.java +++ b/src/com/engine/salary/entity/report/bo/SalaryAcctResultReportBO.java @@ -8,7 +8,6 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultTempPO; import dm.jdbc.util.IdGenerator; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.math.NumberUtils; import java.util.*; @@ -63,45 +62,6 @@ public class SalaryAcctResultReportBO { .collect(Collectors.toList()); } - public static List lkszConvert2PO(List items, - SalaryAcctEmployeePO salaryAcctEmployee, - Long employeeId, Map emps) { - if (CollectionUtils.isEmpty(items) || ObjectUtils.isEmpty(salaryAcctEmployee)) { - return Collections.emptyList(); - } - Date now = new Date(); - return items.stream() - .map(e -> { - SalaryAcctResultReportPO po = SalaryAcctResultReportPO.builder() - .id(IdGenerator.generate()) - .salarySobId(salaryAcctEmployee.getSalarySobId()) - .salaryItemId(e.getSalaryItemId()) - .salaryAcctRecordId(salaryAcctEmployee.getSalaryAcctRecordId()) - .salaryAcctEmpId(salaryAcctEmployee.getId().toString()) - .employeeId(salaryAcctEmployee.getEmployeeId().toString()) - .taxAgentId(salaryAcctEmployee.getTaxAgentId()) - .resultValue(e.getResultValue()) - .creator(employeeId) - .createTime(now) - .updateTime(now) - .deleteType(NumberUtils.INTEGER_ZERO) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .build(); - - DataCollectionEmployee dataCollectionEmployee = emps.get(salaryAcctEmployee.getEmployeeId()); - if (dataCollectionEmployee != null) { - po.setDepartmentId(dataCollectionEmployee.getDepartmentId()); - po.setSubcompanyId(dataCollectionEmployee.getSubcompanyid()); - po.setCostcenterId(dataCollectionEmployee.getCostcenterId()); - po.setJobtitleId(dataCollectionEmployee.getJobtitleId()); - po.setLocationId(dataCollectionEmployee.getLocationId()); - } - return po; - }) - .collect(Collectors.toList()); - } - - public static List convert2ReportPO(Collection temps, Map emps) { // Map longDataCollectionEmployeeMap = SalaryEntityUtil.convert2Map(emps, DataCollectionEmployee::getEmployeeId); if (CollectionUtils.isEmpty(temps)) { diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java index dbf3b552e..53eb473b6 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java @@ -70,16 +70,13 @@ public class SalaryAcctRecordBO { btnList.add(new WeaTableOperate("删除", null, "1")); } btnList.add(new WeaTableOperate("归档", null, "2")); - btnList.add(new WeaTableOperate("结转", null, "6")); } else if (SalaryAcctRecordStatusEnum.ARCHIVED == salaryAcctRecordStatusEnum && ( salarySendMap.get(salaryAcctRecordPO.getId()) ==Boolean.TRUE ) ){ btnList.add(new WeaTableOperate("查看", null, "3")); btnList.add(new WeaTableOperate("重新核算", null, "4")); btnList.add(new WeaTableOperate("回算", null, "5")); - btnList.add(new WeaTableOperate("结转", null, "6")); } else { btnList.add(new WeaTableOperate("查看", null, "3")); btnList.add(new WeaTableOperate("重新核算", null, "4")); - btnList.add(new WeaTableOperate("结转", null, "6")); } return SalaryAcctRecordListDTO.builder() .id(salaryAcctRecordPO.getId()) diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchEditParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchEditParam.java deleted file mode 100644 index 487527d51..000000000 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchEditParam.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.engine.salary.entity.salaryacct.param; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * @ClassName SalaryAcctResultBatchUpdateParam - * @author Harryxzy - * @date 2023/12/4 13:48 - * @description 鲁控数字批量编辑参数 - */ -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class SalaryAcctResultBatchEditParam { - - private Long salaryAcctRecordId; - - private List resultValueList; - - - @Data - @Builder - @AllArgsConstructor - @NoArgsConstructor - public static class resultValue { - - // 薪资核算人员id - private Long id; - - // 薪资项目值 - private List items; - } - -} diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchUpdateParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchUpdateParam.java index 141b3a004..89c06ad5e 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchUpdateParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchUpdateParam.java @@ -12,7 +12,7 @@ import java.util.List; * @ClassName SalaryAcctResultBatchUpdateParam * @author Harryxzy * @date 2023/12/4 13:48 - * @description 鲁控数字批量更新参数 + * @description 批量更新参数 */ @Data @Builder diff --git a/src/com/engine/salary/service/SalaryAcctRecordService.java b/src/com/engine/salary/service/SalaryAcctRecordService.java index 9c3ba4f8c..1ba3419bf 100644 --- a/src/com/engine/salary/service/SalaryAcctRecordService.java +++ b/src/com/engine/salary/service/SalaryAcctRecordService.java @@ -207,10 +207,4 @@ public interface SalaryAcctRecordService { List listSome(SalaryAcctRecordPO po); - - /** - * 鲁控数字-结转 - * @param salaryAcctRecordId - */ - void lkszJz(Long salaryAcctRecordId); } diff --git a/src/com/engine/salary/service/SalaryAcctReportService.java b/src/com/engine/salary/service/SalaryAcctReportService.java index 6cf5caa12..c4c1636db 100644 --- a/src/com/engine/salary/service/SalaryAcctReportService.java +++ b/src/com/engine/salary/service/SalaryAcctReportService.java @@ -21,8 +21,6 @@ public interface SalaryAcctReportService { */ void batchSave(Collection pos); - void lkszBatchSave(Collection pos); - /** * 根据核算记录删除 * @param salaryAcctRecordIds diff --git a/src/com/engine/salary/service/SalaryAcctResultService.java b/src/com/engine/salary/service/SalaryAcctResultService.java index ec8efb878..0090f8330 100644 --- a/src/com/engine/salary/service/SalaryAcctResultService.java +++ b/src/com/engine/salary/service/SalaryAcctResultService.java @@ -210,10 +210,4 @@ public interface SalaryAcctResultService { * @param param */ void batchUpdate(SalaryAcctResultBatchUpdateParam param); - - /** - * 鲁控数字薪资核算结果批量编辑 - * @param param - */ - void lkszBatchEdit(SalaryAcctResultBatchEditParam param); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java index ee596af21..d6924e489 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java @@ -825,87 +825,4 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe public List listSome(SalaryAcctRecordPO po) { return getSalaryAcctRecordMapper().listSome(po); } - - @Override - public void lkszJz(Long salaryAcctRecordId) { - SalaryAcctRecordPO salaryAcctRecordPO = getById(salaryAcctRecordId); - if (ObjectUtils.isEmpty(salaryAcctRecordPO)) { - throw new SalaryRunTimeException("薪资核算记录不存在或已被删除"); - } - YearMonth salaryMonth = SalaryDateUtil.toYearMonth(SalaryDateUtil.dateToLocalDate(salaryAcctRecordPO.getSalaryMonth()).plusMonths(1)); - // 创建下一个月的薪资核算记录 - Long newSalaryAcctRecordId = save(SalaryAcctRecordSaveParam.builder().salarySobId(salaryAcctRecordPO.getSalarySobId()).salaryMonth(salaryMonth).build()); - // 查询下个月的薪资核算人员 - List salaryAcctEmployeePOList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(newSalaryAcctRecordId); - List acctEmpIds = salaryAcctEmployeePOList.stream().map(SalaryAcctEmployeePO::getEmployeeId).collect(Collectors.toList()); - // 获取原来的薪资核算结果 - List salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); - List salarySobItemIds = salarySobItemPOS.stream().map(SalarySobItemPO::getSalaryItemId).collect(Collectors.toList()); - List resultPOS = getSalaryAcctResultService(user).listBySalaryAcctRecordIdsAndSalaryItemIds(Collections.singletonList(salaryAcctRecordId), salarySobItemIds); - // 过滤掉新的核算记录中不存在的人 - resultPOS = resultPOS.stream().filter(result -> acctEmpIds.contains(result.getEmployeeId())).collect(Collectors.toList()); - Map> resultMap = SalaryEntityUtil.group2Map(resultPOS, SalaryAcctResultPO::getEmployeeId); - // 查询人员信息,供报表使用 - List dataCollectionEmployees = getSalaryEmployeeService(user).listAllForReport(); - Map emps = SalaryEntityUtil.convert2Map(dataCollectionEmployees, DataCollectionEmployee::getEmployeeId); - - // 需要保存的核算结果 - List needInsertResultList = new ArrayList<>(); - // 报表 - List needInsertResultReportList = new ArrayList<>(); - Date now = new Date(); - Long uid = Long.valueOf(user.getUID()); - salaryAcctEmployeePOList.stream().forEach(acctEmp -> { - List oldResultList = resultMap.get(acctEmp.getEmployeeId()); - oldResultList.stream().forEach(oldResult -> { - // 薪资核算结果 - needInsertResultList.add(SalaryAcctResultPO.builder() - .salarySobId(salaryAcctRecordPO.getSalarySobId()) - .salaryItemId(oldResult.getSalaryItemId()) - .salaryAcctRecordId(newSalaryAcctRecordId) - .salaryAcctEmpId(acctEmp.getId()) - .employeeId(acctEmp.getEmployeeId()) - .taxAgentId(acctEmp.getTaxAgentId()) - .resultValue(StringUtils.trim(oldResult.getResultValue())) - .originResultValue(oldResult.getOriginResultValue()) - .creator(uid) - .createTime(now) - .updateTime(now) - .deleteType(NumberUtils.INTEGER_ZERO) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .build()); - - // 报表结果 - SalaryAcctResultReportPO po = SalaryAcctResultReportPO.builder() - .id(IdGenerator.generate()) - .salarySobId(salaryAcctRecordPO.getSalarySobId()) - .salaryItemId(oldResult.getSalaryItemId()) - .salaryAcctRecordId(newSalaryAcctRecordId) - .salaryAcctEmpId(acctEmp.getId().toString()) - .employeeId(acctEmp.getEmployeeId().toString()) - .taxAgentId(acctEmp.getTaxAgentId()) - .resultValue(StringUtils.trim(oldResult.getResultValue())) - .creator(uid) - .createTime(now) - .updateTime(now) - .deleteType(NumberUtils.INTEGER_ZERO) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .build(); - - DataCollectionEmployee dataCollectionEmployee = emps.get(acctEmp.getEmployeeId()); - if (dataCollectionEmployee != null) { - po.setDepartmentId(dataCollectionEmployee.getDepartmentId()); - po.setSubcompanyId(dataCollectionEmployee.getSubcompanyid()); - po.setCostcenterId(dataCollectionEmployee.getCostcenterId()); - po.setJobtitleId(dataCollectionEmployee.getJobtitleId()); - po.setLocationId(dataCollectionEmployee.getLocationId()); - } - needInsertResultReportList.add(po); - }); - }); - - // 入库 - getSalaryAcctResultService(user).batchSave(needInsertResultList); - getSalaryAcctReportService(user).lkszBatchSave(needInsertResultReportList); - } } diff --git a/src/com/engine/salary/service/impl/SalaryAcctReportServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctReportServiceImpl.java index 43b7160a8..8371241fb 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctReportServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctReportServiceImpl.java @@ -62,19 +62,6 @@ public class SalaryAcctReportServiceImpl extends Service implements SalaryAcctRe } } - @Override - public void lkszBatchSave(Collection pos) { - if (CollectionUtils.isNotEmpty(pos)) { - SalarySysConfPO disPlay = getSalarySysConfService(user).getOneByCode(DISPLAY_EMP_INFO_REPORT); - //默认不显示,关闭状态 - if (disPlay == null || OpenEnum.OFF.getValue().equals(disPlay.getConfValue())) { - pos = encryptUtil.encryptList(new ArrayList<>(pos), SalaryAcctResultReportPO.class); - } - List> partition = Lists.partition((List) pos, 100); - partition.forEach(getSalaryAcctResultReportMapper()::batchInsert); - } - } - @Override public void deleteBySalaryAcctRecordIds(Collection salaryAcctRecordIds) { if (CollectionUtils.isNotEmpty(salaryAcctRecordIds)) { diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 34148f289..5369fea9e 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -1196,101 +1196,4 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe } } - - @Override - public void lkszBatchEdit(SalaryAcctResultBatchEditParam param) { - List dataCollectionEmployees = getSalaryEmployeeService(user).listAllForReport(); - Map emps = SalaryEntityUtil.convert2Map(dataCollectionEmployees, DataCollectionEmployee::getEmployeeId); - - SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); - if (ObjectUtils.isEmpty(salaryAcctRecordPO)) { - throw new SalaryRunTimeException("薪资核算结果不存在或已被删除"); - } - - List salaryAcctEmployeePOList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(param.getSalaryAcctRecordId()); - Map salaryAcctEmployeePOMap = SalaryEntityUtil.convert2Map(salaryAcctEmployeePOList, SalaryAcctEmployeePO::getId); - - // 需要更新数据的薪资核算人员id - List updateAcctEmpIds = param.getResultValueList().stream().map(SalaryAcctResultBatchEditParam.resultValue::getId).collect(Collectors.toList()); - // 查询原来的薪资核算结果 - List salaryAcctResultPOSOld = getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctEmpIds(updateAcctEmpIds).build()); - // 解密 - encryptUtil.decryptList(salaryAcctResultPOSOld, SalaryAcctResultPO.class); - // 保存参数转换成薪资核算结果po - List salaryAcctResultPOS = new ArrayList<>(); - // 获取薪资项目回算前的值 - Map salaryAcctResultOldPOMap = salaryAcctResultPOSOld.stream() - .collect(Collectors.groupingBy(p -> p.getSalaryAcctEmpId() + "-" + p.getSalaryItemId(), - Collectors.collectingAndThen(Collectors.maxBy(Comparator.comparing(SalaryAcctResultPO::getId)), - s -> s.map(SalaryAcctResultPO::getOriginResultValue).orElse("")))); - List salaryAcctResultReportPOS = new ArrayList<>(); - param.getResultValueList().forEach(resultValue -> { - SalaryAcctEmployeePO salaryAcctEmployeePO = salaryAcctEmployeePOMap.get(resultValue.getId()); - salaryAcctResultPOS.addAll(SalaryAcctResultBO.batchEditConvert2PO(salaryAcctResultOldPOMap, resultValue.getItems(), salaryAcctEmployeePO, (long) user.getUID())); - // 报表 - salaryAcctResultReportPOS.addAll(SalaryAcctResultReportBO.lkszConvert2PO(resultValue.getItems(), salaryAcctEmployeePO, (long) user.getUID(), emps)); - }); - - // 删除原来的薪资核算结果 - param.getResultValueList().stream().forEach(resultValue -> { - List saveItemIds = resultValue.getItems().stream().map(SalaryAcctResultSaveParam.SalaryAcctResultDetailItemParam::getSalaryItemId).collect(Collectors.toList()); - deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(resultValue.getId()), saveItemIds); - // 报表 - getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(resultValue.getId()), saveItemIds); - }); - - // 保存薪资核算结果 - if (CollectionUtils.isNotEmpty(salaryAcctResultPOS)) { - // 加密 - encryptUtil.encryptList(salaryAcctResultPOS, SalaryAcctResultPO.class); - List> partition = Lists.partition(salaryAcctResultPOS, 100); - partition.forEach(getSalaryAcctResultMapper()::batchInsert); - } - - //报表 - if (CollectionUtils.isNotEmpty(salaryAcctResultReportPOS)) { - getSalaryAcctReportService(user).batchSave(salaryAcctResultReportPOS); - } - } - - - public void temp(SalaryAcctResultSaveParam saveParam){ - List dataCollectionEmployees = getSalaryEmployeeService(user).listAllForReport(); - Map emps = SalaryEntityUtil.convert2Map(dataCollectionEmployees, DataCollectionEmployee::getEmployeeId); - - // 查询薪资核算人员 - SalaryAcctEmployeePO salaryAcctEmployeePO = getSalaryAcctEmployeeService(user).getById(saveParam.getSalaryAcctEmpId()); - if (Objects.isNull(salaryAcctEmployeePO)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98831, "薪资核算人员不存在或已被删除")); - } - // 查询原来的薪资核算结果 - List salaryAcctResultPOSOld = getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctEmpId(saveParam.getSalaryAcctEmpId()).build()); - // 解密 - encryptUtil.decryptList(salaryAcctResultPOSOld, SalaryAcctResultPO.class); - // 保存参数转换成薪资核算结果po - List salaryAcctResultPOS = SalaryAcctResultBO.convert2PO(salaryAcctResultPOSOld, saveParam, salaryAcctEmployeePO, (long) user.getUID()); - SalarySysConfPO autoLock = getSalarySysConfService(user).getOneByCode(SalarySysConstant.EDIT_IMPORT_AUTO_LOCK); - - // 删除原来的薪资核算结果 - List saveItemIds = saveParam.getItems().stream().map(SalaryAcctResultSaveParam.SalaryAcctResultDetailItemParam::getSalaryItemId).collect(Collectors.toList()); - deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(saveParam.getSalaryAcctEmpId()), saveItemIds); - // 保存薪资核算结果 - if (CollectionUtils.isNotEmpty(salaryAcctResultPOS)) { - // 加密 - encryptUtil.encryptList(salaryAcctResultPOS, SalaryAcctResultPO.class); - List> partition = Lists.partition(salaryAcctResultPOS, 100); - partition.forEach(getSalaryAcctResultMapper()::batchInsert); - } - //报表 todo - getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(saveParam.getSalaryAcctEmpId()), saveItemIds); - List salaryAcctResultReportPOS = SalaryAcctResultReportBO.convert2PO(saveParam, salaryAcctEmployeePO, (long) user.getUID(), emps); - if (CollectionUtils.isNotEmpty(salaryAcctResultReportPOS)) { - getSalaryAcctReportService(user).batchSave(salaryAcctResultReportPOS); - } - - - // 存储薪资核算结果数据来源日志 - salaryAcctResultPOS = getSalaryAcctRecordService(user).listBySalaryAcctEmpId(saveParam.getSalaryAcctEmpId()); - saveSalaryAcctResultLog(salaryAcctResultPOSOld, salaryAcctResultPOS); - } } \ No newline at end of file diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index c6032686c..4a8088761 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -159,14 +159,6 @@ public class SalaryAcctController { return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::backCalculate, param.getSalaryAcctRecordId()); } - // 结转 - @GET - @Path("/lkszJz") - @Produces(MediaType.APPLICATION_JSON) - public String lkszJz(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { - User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::lkszJz, id); - } /* ********************************薪资核算记录相关 end*********************************/ @@ -466,15 +458,6 @@ public class SalaryAcctController { return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::batchUpdate, param); } - //鲁控数字批量编辑 - @POST - @Path("/acctresult/lkszBatchEdit") - @Produces(MediaType.APPLICATION_JSON) - public String lkszBatchEdit(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultBatchEditParam param) { - User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::lkszBatchEdit, param); - } - //薪资核算 @POST @Path("/acctresult/accounting") diff --git a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java index 95b461e7d..b3d7d06e3 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java @@ -266,12 +266,4 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord public void backCalculate(Long salaryAcctRecordId){ getSalaryAcctRecordService(user).backCalculate(salaryAcctRecordId); } - - /** - * 鲁控数字-结转 - * @param salaryAcctRecordId - */ - public void lkszJz(Long salaryAcctRecordId) { - getSalaryAcctRecordService(user).lkszJz(salaryAcctRecordId); - } } diff --git a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java index 2bf31ef9c..5c1347343 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java @@ -265,15 +265,6 @@ public class SalaryAcctResultWrapper extends Service { getSalaryAcctResultService(user).batchUpdate(param); } - /** - * 鲁控数字薪资核算结果批量编辑 - * @param param - */ - public void lkszBatchEdit(SalaryAcctResultBatchEditParam param) { - getSalaryAcctResultService(user).lkszBatchEdit(param); - } - - /** * 薪资核算-校验 * From 04e3225c988929f63763d67969431bfb744d0a7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 12 Dec 2023 10:07:31 +0800 Subject: [PATCH 17/92] =?UTF-8?q?=E8=87=AA=E9=80=82=E5=BA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/util/page/SalaryPageUtil.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/util/page/SalaryPageUtil.java b/src/com/engine/salary/util/page/SalaryPageUtil.java index 4a39874cb..0e75d79d2 100644 --- a/src/com/engine/salary/util/page/SalaryPageUtil.java +++ b/src/com/engine/salary/util/page/SalaryPageUtil.java @@ -2,7 +2,6 @@ package com.engine.salary.util.page; import com.github.pagehelper.PageHelper; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import java.util.Collections; @@ -93,9 +92,14 @@ public class SalaryPageUtil { } public static String selfAdaption(String chars) { - if (StringUtils.isNotEmpty(chars)) { - return chars.length() * 12+40 + ""; + int adaption = 0; + + if (chars != null) { + adaption = chars.length() * 12 + 55; } - return "150"; + if (adaption < 79) { + adaption = 79; + } + return adaption + ""; } } From 929bcc78773e52927a6ec214e224192e6697148a Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 12 Dec 2023 10:18:10 +0800 Subject: [PATCH 18/92] =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=A0=B8=E7=AE=97?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=E3=80=81=E7=BA=BF=E4=B8=8B=E5=AF=B9=E6=AF=94?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E5=AF=BC=E5=85=A5=E6=A8=A1=E6=9D=BF=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bo/SalarySobItemAggregateBO.java | 4 +- .../impl/SalaryAcctExcelServiceImpl.java | 37 ++++++++++++------- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java index 2014bf2b8..be5bcf6c3 100644 --- a/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java +++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java @@ -14,6 +14,7 @@ import com.engine.salary.util.SalaryI18nUtil; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import lombok.AllArgsConstructor; +import lombok.NoArgsConstructor; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; @@ -32,6 +33,7 @@ import java.util.stream.Collectors; * @version 1.0 **/ @AllArgsConstructor +@NoArgsConstructor public class SalarySobItemAggregateBO { /** @@ -206,7 +208,7 @@ public class SalarySobItemAggregateBO { * @param salarySobEmpFields 薪资账套的员工信息字段 * @return */ - private List buildEmpField(Collection salarySobEmpFields) { + public List buildEmpField(Collection salarySobEmpFields) { if (CollectionUtils.isEmpty(salarySobEmpFields)) { return Collections.emptyList(); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index 11f239225..4374cf47a 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -18,6 +18,8 @@ import com.engine.salary.entity.salaryacct.dto.SalaryComparisonResultListDTO; import com.engine.salary.entity.salaryacct.param.*; import com.engine.salary.entity.salaryacct.po.*; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; +import com.engine.salary.entity.salarysob.bo.SalarySobItemAggregateBO; +import com.engine.salary.entity.salarysob.dto.SalarySobEmpFieldDTO; import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO; import com.engine.salary.entity.salarysob.dto.SalarySobItemDTO; import com.engine.salary.entity.salarysob.dto.SalarySobItemGroupDTO; @@ -670,19 +672,22 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc parseHeader(headerColumnGroup, finalWeaTableColumns); List headerList = new ArrayList<>(finalWeaTableColumns); - // 查询薪资核算结果 - List> resultMapList = getSalaryAcctResultService(user).listByParam(param); // excel导出的数据 List> rows = new ArrayList<>(); rows.add(headerList); - for (Map map : resultMapList) { - List row = Lists.newArrayListWithExpectedSize(headerColumnGroup.size()); - for (WeaTableColumnGroup weaTableColumn : headerColumnGroup) { - row.add(map.getOrDefault(weaTableColumn.getColumn(), StringUtils.EMPTY)); + if (param.getImportType() != null && param.getImportType().equals("1")) { + // 需要导出现有数据,查询薪资核算结果 + List> resultMapList = getSalaryAcctResultService(user).listByParam(param); + for (Map map : resultMapList) { + List row = Lists.newArrayListWithExpectedSize(headerColumnGroup.size()); + for (WeaTableColumnGroup weaTableColumn : headerColumnGroup) { + row.add(map.getOrDefault(weaTableColumn.getColumn(), StringUtils.EMPTY)); + } + rows.add(row); } - rows.add(row); } + String sheetName = "薪资核算导入模板"; return ExcelUtilPlus.genWorkbookWithChildTitleColumn(rows, sheetName, false); } @@ -784,12 +789,18 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc if (Objects.isNull(salaryAcctRecordPO)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); } - // 模板表头(默认必带"个税扣缴义务人"、"姓名") - List headerList = Lists.newArrayList(SalaryI18nUtil.getI18nLabel(85429, "姓名"), SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人")); - //定位人员带“部门”,“手机号”,“工号” - headerList.add("部门"); - headerList.add("手机号"); - headerList.add("工号"); + + // 查询薪资核算所用的薪资账套的员工信息字段 + List salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + List salarySobEmpFieldDTOS = new SalarySobItemAggregateBO().buildEmpField(salarySobEmpFieldPOS); + List headerList = new ArrayList<>(); + salarySobEmpFieldDTOS.stream().forEach(empField -> headerList.add(empField.getFieldName())); + // // 模板表头(默认必带"个税扣缴义务人"、"姓名") + // List headerList = Lists.newArrayList(SalaryI18nUtil.getI18nLabel(85429, "姓名"), SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人")); + // //定位人员带“部门”,“手机号”,“工号” + // headerList.add("部门"); + // headerList.add("手机号"); + // headerList.add("工号"); // 查询薪资账套下的薪资项目 SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateBySalarySobId(salaryAcctRecordPO.getSalarySobId()); From 559ba88e9f3de7ee67f409ec6b460636733df380 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 12 Dec 2023 10:32:04 +0800 Subject: [PATCH 19/92] =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=A0=B8=E7=AE=97?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=E3=80=81=E7=BA=BF=E4=B8=8B=E5=AF=B9=E6=AF=94?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E5=AF=BC=E5=85=A5=E6=A8=A1=E6=9D=BF=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/SalaryAcctExcelServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index 4374cf47a..7102c0660 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -675,7 +675,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc // excel导出的数据 List> rows = new ArrayList<>(); rows.add(headerList); - if (param.getImportType() != null && param.getImportType().equals("1")) { + if (param.getImportType() != null && param.getImportType().equals("true")) { // 需要导出现有数据,查询薪资核算结果 List> resultMapList = getSalaryAcctResultService(user).listByParam(param); for (Map map : resultMapList) { From 4d573956c8c3bd085d1520319f3537165b64bd82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 12 Dec 2023 11:06:25 +0800 Subject: [PATCH 20/92] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=E7=A8=8E=E6=AC=BE=E6=89=80=E5=B1=9E=E6=9C=9F=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/SalarySobInitServiceImpl.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalarySobInitServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobInitServiceImpl.java index e277bac7f..e2dec0af8 100644 --- a/src/com/engine/salary/service/impl/SalarySobInitServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobInitServiceImpl.java @@ -11,7 +11,6 @@ import com.engine.salary.entity.salarysob.bo.SalarySobInitEnv; import com.engine.salary.entity.salarysob.param.SalarySobBasicSaveParam; import com.engine.salary.entity.salarysob.po.*; import com.engine.salary.entity.taxdeclaration.po.TaxReportColumnPO; -import com.engine.salary.enums.SalaryCycleTypeEnum; import com.engine.salary.enums.salarysob.IncomeCategoryEnum; import com.engine.salary.enums.sicategory.DeleteTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; @@ -112,7 +111,7 @@ public class SalarySobInitServiceImpl extends AbstractSalarySobInitService { .setIncomeCategory(saveParam.getTaxableItems()) .setSalaryCycleType(saveParam.getSalaryCycleType()) .setSalaryCycleFromDay(saveParam.getSalaryCycleFromDay()) - .setTaxCycleType(SalaryCycleTypeEnum.THIS_MONTH.getValue()) + .setTaxCycleType(saveParam.getTaxCycleType()) .setAttendCycleType(saveParam.getAttendCycleType()) .setAttendCycleFromDay(saveParam.getAttendCycleFromDay()) .setSocialSecurityCycleType(saveParam.getSocialSecurityCycleType()) From b78f4302e0667be39d25733da8fc09226dd3392d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 12 Dec 2023 13:18:17 +0800 Subject: [PATCH 21/92] =?UTF-8?q?=E5=B0=8F=E6=95=B0=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/entity/salaryitem/param/SalaryItemSaveParam.java | 2 +- .../salary/entity/salarysob/dto/SalarySobItemFormDTO.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/entity/salaryitem/param/SalaryItemSaveParam.java b/src/com/engine/salary/entity/salaryitem/param/SalaryItemSaveParam.java index a2c6fa84b..916342dfd 100644 --- a/src/com/engine/salary/entity/salaryitem/param/SalaryItemSaveParam.java +++ b/src/com/engine/salary/entity/salaryitem/param/SalaryItemSaveParam.java @@ -63,7 +63,7 @@ public class SalaryItemSaveParam { private Integer roundingMode; //保留小数位 - @DataCheck(require = true, type = ValidTypeEnum.NUMBER, max = 6, message = "小数位最多为6") + @DataCheck(require = true, type = ValidTypeEnum.NUMBER, max = 8, message = "小数位最多为8") private Integer pattern; /** diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java index 240625524..f23df1512 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java @@ -53,7 +53,7 @@ public class SalarySobItemFormDTO { private Integer roundingMode; //保留小数位") - @DataCheck(require = true, type = ValidTypeEnum.NUMBER, max = 6, message = "小数位最多为6") + @DataCheck(require = true, type = ValidTypeEnum.NUMBER, max = 8, message = "小数位最多为8") private Integer pattern; //取值方式") From 9602e48e7466c8fb5b11459bf7a1bc42d6ae405d Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 12 Dec 2023 14:11:48 +0800 Subject: [PATCH 22/92] =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=A0=B8=E7=AE=97?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=E3=80=81=E7=BA=BF=E4=B8=8B=E5=AF=B9=E6=AF=94?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E5=AF=BC=E5=85=A5=E6=A8=A1=E6=9D=BF=E4=BC=98?= =?UTF-8?q?=E5=8C=96fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SalaryAcctExcelServiceImpl.java | 47 +++++++++---------- 1 file changed, 22 insertions(+), 25 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index 7102c0660..346ebe4cd 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -21,8 +21,6 @@ import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.bo.SalarySobItemAggregateBO; import com.engine.salary.entity.salarysob.dto.SalarySobEmpFieldDTO; 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.SalarySobItemGroupPO; import com.engine.salary.entity.salarysob.po.SalarySobItemPO; @@ -789,12 +787,6 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc if (Objects.isNull(salaryAcctRecordPO)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); } - - // 查询薪资核算所用的薪资账套的员工信息字段 - List salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); - List salarySobEmpFieldDTOS = new SalarySobItemAggregateBO().buildEmpField(salarySobEmpFieldPOS); - List headerList = new ArrayList<>(); - salarySobEmpFieldDTOS.stream().forEach(empField -> headerList.add(empField.getFieldName())); // // 模板表头(默认必带"个税扣缴义务人"、"姓名") // List headerList = Lists.newArrayList(SalaryI18nUtil.getI18nLabel(85429, "姓名"), SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人")); // //定位人员带“部门”,“手机号”,“工号” @@ -815,16 +807,16 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc // } // // } - // 薪资项目分类下的新资项目 - for (SalarySobItemGroupDTO itemGroup : salarySobItemAggregateDTO.getItemGroups()) { - for (SalarySobItemDTO item : itemGroup.getItems()) { - headerList.add(item.getName()); - } - } - // 没有分类的薪资项目 - for (SalarySobItemDTO item : salarySobItemAggregateDTO.getItems()) { - headerList.add(item.getName()); - } +// // 薪资项目分类下的新资项目 +// for (SalarySobItemGroupDTO itemGroup : salarySobItemAggregateDTO.getItemGroups()) { +// for (SalarySobItemDTO item : itemGroup.getItems()) { +// headerList.add(item.getName()); +// } +// } +// // 没有分类的薪资项目 +// for (SalarySobItemDTO item : salarySobItemAggregateDTO.getItems()) { +// headerList.add(item.getName()); +// } // 无分类薪资项目id @@ -832,11 +824,10 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc // 查询列表的表头 List weaTableColumns = listWeaTableColumn(salaryAcctRecordPO); List finalWeaTableColumns = new ArrayList<>(); - finalWeaTableColumns.add(new WeaTableColumnGroup("150", SalaryI18nUtil.getI18nLabel(85429, "姓名"), SalaryI18nUtil.getI18nLabel(85429, "姓名"))); - finalWeaTableColumns.add(new WeaTableColumnGroup("150", SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"), SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"))); - finalWeaTableColumns.add(new WeaTableColumnGroup("150", "部门", "部门")); - finalWeaTableColumns.add(new WeaTableColumnGroup("150", "手机号", "手机号")); - finalWeaTableColumns.add(new WeaTableColumnGroup("150", "工号", "工号")); + // 查询薪资核算所用的薪资账套的员工信息字段 + List salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + List salarySobEmpFieldDTOS = new SalarySobItemAggregateBO().buildEmpField(salarySobEmpFieldPOS); + salarySobEmpFieldDTOS.stream().forEach(empField -> finalWeaTableColumns.add(new WeaTableColumnGroup("150", SalaryI18nUtil.getI18nLabel(0, empField.getFieldName()), SalaryI18nUtil.getI18nLabel(0, empField.getFieldName())))); for (WeaTableColumnGroup tableColumn : weaTableColumns) { WeaTableColumnGroup columnGroupItem = (WeaTableColumnGroup) tableColumn; if (columnGroupItem.getChildren() != null) { @@ -955,7 +946,11 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc // 租户下所有的个税扣缴义务人 List taxAgents = getTaxAgentService(user).listAll(); Map taxAgentNameMap = SalaryEntityUtil.convert2Map(taxAgents, TaxAgentPO::getName, TaxAgentPO::getId); - + // 薪资核算人员信息字段 + List salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + List salarySobEmpFields = SalaryEntityUtil.properties(new SalarySobItemAggregateBO().buildEmpField(salarySobEmpFieldPOS), SalarySobEmpFieldDTO::getFieldName, Collectors.toList()); + List excludeFields = Arrays.asList("个税扣缴义务人", "部门", "姓名"); + salarySobEmpFields = salarySobEmpFields.stream().filter(field -> !excludeFields.contains(field)).collect(Collectors.toList()); // 索引(用于计算进度) int index = 0; // 失败的数量 @@ -1077,7 +1072,9 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc } } else if (StringUtils.equals(SalaryI18nUtil.getI18nLabel(86184, "部门"), dataKey.toString()) || StringUtils.equals(SalaryI18nUtil.getI18nLabel(86186, "手机号"), dataKey.toString()) - || StringUtils.equals(SalaryI18nUtil.getI18nLabel(86186, "工号"), dataKey.toString())) { + || StringUtils.equals(SalaryI18nUtil.getI18nLabel(86186, "工号"), dataKey.toString()) + || salarySobEmpFields.contains(dataKey.toString()) + ) { } else if (StringUtils.equals(SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"), dataKey.toString())) { if (StringUtils.isEmpty(dataValue)) { From 51022c0a169b959f491c1ee2ab7a12b231150acd Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 12 Dec 2023 14:22:18 +0800 Subject: [PATCH 23/92] =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=A0=B8=E7=AE=97?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=E3=80=81=E7=BA=BF=E4=B8=8B=E5=AF=B9=E6=AF=94?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E5=AF=BC=E5=85=A5=E6=A8=A1=E6=9D=BF=E4=BC=98?= =?UTF-8?q?=E5=8C=96fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/SalaryAcctExcelServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index 346ebe4cd..8840d9302 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -871,7 +871,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId())); Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX); map.put("headers", ExcelSupport.getSheetHeader(sheet, 1)); - map.put("list", ExcelParseHelper.parse2List(sheet, 2)); + map.put("list", ExcelParseHelper.parse2List(sheet, 2, 1)); return map; } finally { From f53922a3abe392ab9bdf02617bf6dfe7f8cde2f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 12 Dec 2023 17:18:56 +0800 Subject: [PATCH 24/92] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E4=BD=9C=E5=BA=9F?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../taxpayment/po/TaxPaymentRequestPO.java | 6 ++++-- .../service/impl/AbstractTaxPaymentService.java | 16 +++++++++------- .../impl/TaxPaymentWithholdingServiceImpl.java | 4 ++-- .../TaxPaymentWithholdingVoucherServiceImpl.java | 4 ++-- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/com/engine/salary/entity/taxpayment/po/TaxPaymentRequestPO.java b/src/com/engine/salary/entity/taxpayment/po/TaxPaymentRequestPO.java index 48c2a0973..34141f5a2 100644 --- a/src/com/engine/salary/entity/taxpayment/po/TaxPaymentRequestPO.java +++ b/src/com/engine/salary/entity/taxpayment/po/TaxPaymentRequestPO.java @@ -1,5 +1,7 @@ package com.engine.salary.entity.taxpayment.po; +import com.engine.salary.enums.SalaryOnOffEnum; +import com.engine.salary.enums.taxdeclaration.TaxPaymentServiceTypeEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -58,7 +60,7 @@ public class TaxPaymentRequestPO implements Serializable { /** * 请求类型 * - * com.weaver.hrm.salary.enums.taxdeclaration.TaxPaymentServiceTypeEnum + * @see TaxPaymentServiceTypeEnum */ //异步请求ID") private Integer requestType; @@ -66,7 +68,7 @@ public class TaxPaymentRequestPO implements Serializable { /** * 是否已获取反馈 * - * com.weaver.hrm.salary.enums.salaryitem.SalaryOnOffEnum + *@see SalaryOnOffEnum */ //是否已获取反馈") private Integer feedback; diff --git a/src/com/engine/salary/service/impl/AbstractTaxPaymentService.java b/src/com/engine/salary/service/impl/AbstractTaxPaymentService.java index 2b001a10c..47647f058 100644 --- a/src/com/engine/salary/service/impl/AbstractTaxPaymentService.java +++ b/src/com/engine/salary/service/impl/AbstractTaxPaymentService.java @@ -39,7 +39,6 @@ import java.math.BigDecimal; import java.util.*; /** - * *

Copyright: Copyright (c) 2023

*

Company: 泛微软件

* @@ -202,12 +201,15 @@ public abstract class AbstractTaxPaymentService extends Service implements TaxPa .taxYearMonth(param.getTaxYearMonth()) .build()); if (Objects.isNull(param.getCheckFeedback()) || SalaryOnOffEnum.ON.getValue().equals(param.getCheckFeedback())) { - TaxPaymentRequestPO notFeedback = paymentRequests.stream().filter(e -> { - boolean conditionA = getServiceType().equals(e.getRequestType()) - || TaxPaymentServiceTypeEnum.QUERY_AGREEMENT.getValue().equals(e.getRequestType()); - boolean conditionB = SalaryOnOffEnum.OFF.getValue().equals(e.getFeedback()); - return !conditionA && conditionB; - }).findFirst().orElse(null); + TaxPaymentRequestPO notFeedback = paymentRequests.stream() + .filter(e -> { + boolean conditionA = getServiceType().equals(e.getRequestType()) + || TaxPaymentServiceTypeEnum.QUERY_AGREEMENT.getValue().equals(e.getRequestType()); + boolean conditionB = SalaryOnOffEnum.OFF.getValue().equals(e.getFeedback()); + return !conditionA && conditionB; + }) + .findFirst() + .orElse(null); if (Objects.nonNull(notFeedback)) { TaxPaymentServiceTypeEnum notFeedbackType = TaxPaymentServiceTypeEnum.parseByValue(notFeedback.getRequestType()); diff --git a/src/com/engine/salary/service/impl/TaxPaymentWithholdingServiceImpl.java b/src/com/engine/salary/service/impl/TaxPaymentWithholdingServiceImpl.java index 4e6c5180e..eab790615 100644 --- a/src/com/engine/salary/service/impl/TaxPaymentWithholdingServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxPaymentWithholdingServiceImpl.java @@ -117,7 +117,7 @@ public class TaxPaymentWithholdingServiceImpl extends AbstractTaxPaymentService .taxYearMonth(taxDeclareRecord.getTaxCycle()) .build()); - if (paymentRequestPO != null) { +// if (paymentRequestPO != null) { String url = apiConfig.getHost() + SzyhApiConstant.CANCEL_WITHHOLDING_VOUCHER; QuerySpecialAmountResponse cancelResponse = postRequest(apiConfig, url, requestParam, QuerySpecialAmountResponse.class); SzyhResponseHead head = Optional.ofNullable(cancelResponse).map(QuerySpecialAmountResponse::getHead) @@ -132,7 +132,7 @@ public class TaxPaymentWithholdingServiceImpl extends AbstractTaxPaymentService .taxAgentId(taxDeclareRecord.getTaxAgentId()) .taxYearMonth(taxDeclareRecord.getTaxCycle()) .build()); - } +// } } protected BaseResponse getFeedbackResponse(TaxDeclarationApiConfigPO apiConfig, String requestId) { diff --git a/src/com/engine/salary/service/impl/TaxPaymentWithholdingVoucherServiceImpl.java b/src/com/engine/salary/service/impl/TaxPaymentWithholdingVoucherServiceImpl.java index 048f286ab..44e895087 100644 --- a/src/com/engine/salary/service/impl/TaxPaymentWithholdingVoucherServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxPaymentWithholdingVoucherServiceImpl.java @@ -113,7 +113,7 @@ public class TaxPaymentWithholdingVoucherServiceImpl extends AbstractTaxPaymentS .taxAgentId(taxDeclareRecord.getTaxAgentId()) .taxYearMonth(taxDeclareRecord.getTaxCycle()) .build()); - if (paymentRequestPO != null) { +// if (paymentRequestPO != null) { String url = apiConfig.getHost() + SzyhApiConstant.CANCEL_WITHHOLDING_VOUCHER; QuerySpecialAmountResponse cancelResponse = postRequest(apiConfig, url, requestParam, QuerySpecialAmountResponse.class); SzyhResponseHead head = Optional.ofNullable(cancelResponse).map(QuerySpecialAmountResponse::getHead) @@ -126,7 +126,7 @@ public class TaxPaymentWithholdingVoucherServiceImpl extends AbstractTaxPaymentS .taxAgentId(taxDeclareRecord.getTaxAgentId()) .taxYearMonth(taxDeclareRecord.getTaxCycle()) .build()); - } +// } } @Override From cfbddef42a24ed08161dbd1a80c7689878b616f2 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 13 Dec 2023 09:58:00 +0800 Subject: [PATCH 25/92] =?UTF-8?q?=E6=A0=B8=E7=AE=97=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=BD=92=E6=A1=A3action?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/FileSalaryAcctRecordAction.java | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/com/engine/salary/action/FileSalaryAcctRecordAction.java diff --git a/src/com/engine/salary/action/FileSalaryAcctRecordAction.java b/src/com/engine/salary/action/FileSalaryAcctRecordAction.java new file mode 100644 index 000000000..7d6d22fb7 --- /dev/null +++ b/src/com/engine/salary/action/FileSalaryAcctRecordAction.java @@ -0,0 +1,70 @@ +package com.engine.salary.action; + +import com.engine.common.util.ServiceUtil; +import com.engine.salary.mapper.taxagent.TaxAgentMapper; +import com.engine.salary.service.SalaryAcctRecordService; +import com.engine.salary.service.impl.SalaryAcctRecordServiceImpl; +import com.engine.salary.util.db.MapperProxyFactory; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.Property; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.Arrays; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author Harryxzy + * @ClassName FileSalaryAcctRecordAction + * @date 2023/12/13 9:17 + * @description 薪资核算记录归档action + */ +@Slf4j +public class FileSalaryAcctRecordAction implements Action { + + + private SalaryAcctRecordService getSalaryAcctRecordService(User user) { + return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user); + } + + private TaxAgentMapper getTaxAgentMapper() { + return MapperProxyFactory.getProxy(TaxAgentMapper.class); + } + + + private String recordIdFieldName; + + + public String getRecordIdFieldName() { + return recordIdFieldName; + } + + public void setRecordIdFieldName(String recordIdFieldName) { + this.recordIdFieldName = recordIdFieldName; + } + + @Override + public String execute(RequestInfo requestInfo) { + Property[] properties = requestInfo.getMainTableInfo().getProperty(); + Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, + property -> Util.null2String(property.getValue()))); + String salaryAcctRecordId = fieldMap.get(recordIdFieldName); + if (StringUtils.isBlank(salaryAcctRecordId)) { + requestInfo.getRequestManager().setMessage("薪资核算记录不存在"); + return FAILURE_AND_CONTINUE; + } + User user = new User(); + user.setUid(1); + try { + getSalaryAcctRecordService(user).file(Long.valueOf(salaryAcctRecordId)); + } catch (Exception e) { + requestInfo.getRequestManager().setMessage(e.getMessage()); + return FAILURE_AND_CONTINUE; + } + return SUCCESS; + } +} From e97dab27fc162809bac36042006d229ca231b5ff Mon Sep 17 00:00:00 2001 From: sy Date: Wed, 13 Dec 2023 10:51:24 +0800 Subject: [PATCH 26/92] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E6=8B=86=E5=88=86?= =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E5=92=8C=E5=85=AC=E5=8F=B8=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E5=9F=BA=E6=95=B0=E9=80=BB=E8=BE=91=E7=9B=B8=E5=85=B3sql?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202312130203.sql | 39 +++++++++++++++++++ resource/sqlupgrade/GS/sql202312130203.sql | 39 +++++++++++++++++++ resource/sqlupgrade/JC/sql202312130203.sql | 39 +++++++++++++++++++ resource/sqlupgrade/Mysql/sql202312130203.sql | 17 ++++++++ .../sqlupgrade/Oracle/sql202312130203.sql | 30 ++++++++++++++ resource/sqlupgrade/PG/sql202312130203.sql | 17 ++++++++ .../sqlupgrade/SQLServer/sql202312130203.sql | 30 ++++++++++++++ resource/sqlupgrade/ST/sql202312130203.sql | 39 +++++++++++++++++++ 8 files changed, 250 insertions(+) create mode 100644 resource/sqlupgrade/DM/sql202312130203.sql create mode 100644 resource/sqlupgrade/GS/sql202312130203.sql create mode 100644 resource/sqlupgrade/JC/sql202312130203.sql create mode 100644 resource/sqlupgrade/Mysql/sql202312130203.sql create mode 100644 resource/sqlupgrade/Oracle/sql202312130203.sql create mode 100644 resource/sqlupgrade/PG/sql202312130203.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202312130203.sql create mode 100644 resource/sqlupgrade/ST/sql202312130203.sql diff --git a/resource/sqlupgrade/DM/sql202312130203.sql b/resource/sqlupgrade/DM/sql202312130203.sql new file mode 100644 index 000000000..d5bdd577d --- /dev/null +++ b/resource/sqlupgrade/DM/sql202312130203.sql @@ -0,0 +1,39 @@ +ALTER TABLE hrsa_social_archives ADD social_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_fund_archives ADD fund_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_other_archives ADD other_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_bill_detail ADD social_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_bill_detail ADD fund_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_bill_detail ADD other_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_bill_detail_temp ADD social_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_bill_detail_temp ADD fund_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_bill_detail_temp ADD other_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_excel_bill_detail ADD social_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_excel_bill_detail ADD fund_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_excel_bill_detail ADD other_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_insurance_base_history ADD payment_scope varchar2(10) NULL; +/ + diff --git a/resource/sqlupgrade/GS/sql202312130203.sql b/resource/sqlupgrade/GS/sql202312130203.sql new file mode 100644 index 000000000..d5bdd577d --- /dev/null +++ b/resource/sqlupgrade/GS/sql202312130203.sql @@ -0,0 +1,39 @@ +ALTER TABLE hrsa_social_archives ADD social_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_fund_archives ADD fund_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_other_archives ADD other_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_bill_detail ADD social_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_bill_detail ADD fund_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_bill_detail ADD other_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_bill_detail_temp ADD social_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_bill_detail_temp ADD fund_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_bill_detail_temp ADD other_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_excel_bill_detail ADD social_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_excel_bill_detail ADD fund_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_excel_bill_detail ADD other_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_insurance_base_history ADD payment_scope varchar2(10) NULL; +/ + diff --git a/resource/sqlupgrade/JC/sql202312130203.sql b/resource/sqlupgrade/JC/sql202312130203.sql new file mode 100644 index 000000000..d5bdd577d --- /dev/null +++ b/resource/sqlupgrade/JC/sql202312130203.sql @@ -0,0 +1,39 @@ +ALTER TABLE hrsa_social_archives ADD social_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_fund_archives ADD fund_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_other_archives ADD other_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_bill_detail ADD social_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_bill_detail ADD fund_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_bill_detail ADD other_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_bill_detail_temp ADD social_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_bill_detail_temp ADD fund_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_bill_detail_temp ADD other_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_excel_bill_detail ADD social_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_excel_bill_detail ADD fund_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_excel_bill_detail ADD other_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_insurance_base_history ADD payment_scope varchar2(10) NULL; +/ + diff --git a/resource/sqlupgrade/Mysql/sql202312130203.sql b/resource/sqlupgrade/Mysql/sql202312130203.sql new file mode 100644 index 000000000..7ff70da9f --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202312130203.sql @@ -0,0 +1,17 @@ +ALTER TABLE hrsa_social_archives ADD COLUMN social_payment_com_base_string varchar(4000) NULL; +ALTER TABLE hrsa_fund_archives ADD COLUMN fund_payment_com_base_string varchar(4000) NULL; +ALTER TABLE hrsa_other_archives ADD COLUMN other_payment_com_base_string varchar(4000) NULL; + +ALTER TABLE hrsa_bill_detail ADD COLUMN social_payment_com_base_string varchar(4000) NULL; +ALTER TABLE hrsa_bill_detail ADD COLUMN fund_payment_com_base_string varchar(4000) NULL; +ALTER TABLE hrsa_bill_detail ADD COLUMN other_payment_com_base_string varchar(4000) NULL; + +ALTER TABLE hrsa_bill_detail_temp ADD COLUMN social_payment_com_base_string varchar(4000) NULL; +ALTER TABLE hrsa_bill_detail_temp ADD COLUMN fund_payment_com_base_string varchar(4000) NULL; +ALTER TABLE hrsa_bill_detail_temp ADD COLUMN other_payment_com_base_string varchar(4000) NULL; + +ALTER TABLE hrsa_excel_bill_detail ADD COLUMN social_payment_com_base_string varchar(4000) NULL; +ALTER TABLE hrsa_excel_bill_detail ADD COLUMN fund_payment_com_base_string varchar(4000) NULL; +ALTER TABLE hrsa_excel_bill_detail ADD COLUMN other_payment_com_base_string varchar(4000) NULL; + +ALTER TABLE hrsa_insurance_base_history ADD COLUMN payment_scope varchar(10) NULL; diff --git a/resource/sqlupgrade/Oracle/sql202312130203.sql b/resource/sqlupgrade/Oracle/sql202312130203.sql new file mode 100644 index 000000000..f62d861b8 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202312130203.sql @@ -0,0 +1,30 @@ +ALTER TABLE hrsa_social_archives ADD social_payment_com_base_string varchar2(4000) NULL +/ +ALTER TABLE hrsa_fund_archives ADD fund_payment_com_base_string varchar2(4000) NULL +/ +ALTER TABLE hrsa_other_archives ADD other_payment_com_base_string varchar2(4000) NULL +/ + +ALTER TABLE hrsa_bill_detail ADD social_payment_com_base_string varchar2(4000) NULL +/ +ALTER TABLE hrsa_bill_detail ADD fund_payment_com_base_string varchar2(4000) NULL +/ +ALTER TABLE hrsa_bill_detail ADD other_payment_com_base_string varchar2(4000) NULL +/ + +ALTER TABLE hrsa_bill_detail_temp ADD social_payment_com_base_string varchar2(4000) NULL +/ +ALTER TABLE hrsa_bill_detail_temp ADD fund_payment_com_base_string varchar2(4000) NULL +/ +ALTER TABLE hrsa_bill_detail_temp ADD other_payment_com_base_string varchar2(4000) NULL +/ + +ALTER TABLE hrsa_excel_bill_detail ADD social_payment_com_base_string varchar2(4000) NULL +/ +ALTER TABLE hrsa_excel_bill_detail ADD fund_payment_com_base_string varchar2(4000) NULL +/ +ALTER TABLE hrsa_excel_bill_detail ADD other_payment_com_base_string varchar2(4000) NULL +/ + +ALTER TABLE hrsa_insurance_base_history ADD payment_scope varchar2(10) NULL +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202312130203.sql b/resource/sqlupgrade/PG/sql202312130203.sql new file mode 100644 index 000000000..9b9630ce6 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202312130203.sql @@ -0,0 +1,17 @@ +ALTER TABLE hrsa_social_archives ADD COLUMN social_payment_com_base_string varchar(4000) NULL; +ALTER TABLE hrsa_fund_archives ADD COLUMN fund_payment_com_base_string varchar(4000) NULL; +ALTER TABLE hrsa_other_archives ADD COLUMN other_payment_com_base_string varchar(4000) NULL; + +ALTER TABLE hrsa_bill_detail ADD COLUMN social_payment_com_base_string varchar(4000) NULL; +ALTER TABLE hrsa_bill_detail ADD COLUMN fund_payment_com_base_string varchar(4000) NULL; +ALTER TABLE hrsa_bill_detail ADD COLUMN other_payment_com_base_string varchar(4000) NULL; + +ALTER TABLE hrsa_bill_detail_temp ADD COLUMN social_payment_com_base_string varchar(4000) NULL; +ALTER TABLE hrsa_bill_detail_temp ADD COLUMN fund_payment_com_base_string varchar(4000) NULL; +ALTER TABLE hrsa_bill_detail_temp ADD COLUMN other_payment_com_base_string varchar(4000) NULL; + +ALTER TABLE hrsa_excel_bill_detail ADD COLUMN social_payment_com_base_string varchar(4000) NULL; +ALTER TABLE hrsa_excel_bill_detail ADD COLUMN fund_payment_com_base_string varchar(4000) NULL; +ALTER TABLE hrsa_excel_bill_detail ADD COLUMN other_payment_com_base_string varchar(4000) NULL; + +ALTER TABLE hrsa_insurance_base_history ADD COLUMN payment_scope varchar(10) NULL; \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202312130203.sql b/resource/sqlupgrade/SQLServer/sql202312130203.sql new file mode 100644 index 000000000..0738202b3 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202312130203.sql @@ -0,0 +1,30 @@ +ALTER TABLE hrsa_social_archives ADD social_payment_com_base_string varchar(4000) NULL +GO +ALTER TABLE hrsa_fund_archives ADD fund_payment_com_base_string varchar(4000) NULL +GO +ALTER TABLE hrsa_other_archives ADD other_payment_com_base_string varchar(4000) NULL +GO + +ALTER TABLE hrsa_bill_detail ADD social_payment_com_base_string varchar(4000) NULL +GO +ALTER TABLE hrsa_bill_detail ADD fund_payment_com_base_string varchar(4000) NULL +GO +ALTER TABLE hrsa_bill_detail ADD other_payment_com_base_string varchar(4000) NULL +GO + +ALTER TABLE hrsa_bill_detail_temp ADD social_payment_com_base_string varchar(4000) NULL +GO +ALTER TABLE hrsa_bill_detail_temp ADD fund_payment_com_base_string varchar(4000) NULL +GO +ALTER TABLE hrsa_bill_detail_temp ADD other_payment_com_base_string varchar(4000) NULL +GO + +ALTER TABLE hrsa_excel_bill_detail ADD social_payment_com_base_string varchar(4000) NULL +GO +ALTER TABLE hrsa_excel_bill_detail ADD fund_payment_com_base_string varchar(4000) NULL +GO +ALTER TABLE hrsa_excel_bill_detail ADD other_payment_com_base_string varchar(4000) NULL +GO + +ALTER TABLE hrsa_insurance_base_history ADD payment_scope varchar(10) NULL +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202312130203.sql b/resource/sqlupgrade/ST/sql202312130203.sql new file mode 100644 index 000000000..d5bdd577d --- /dev/null +++ b/resource/sqlupgrade/ST/sql202312130203.sql @@ -0,0 +1,39 @@ +ALTER TABLE hrsa_social_archives ADD social_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_fund_archives ADD fund_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_other_archives ADD other_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_bill_detail ADD social_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_bill_detail ADD fund_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_bill_detail ADD other_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_bill_detail_temp ADD social_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_bill_detail_temp ADD fund_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_bill_detail_temp ADD other_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_excel_bill_detail ADD social_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_excel_bill_detail ADD fund_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_excel_bill_detail ADD other_payment_com_base_string varchar2(4000) NULL; +/ + +ALTER TABLE hrsa_insurance_base_history ADD payment_scope varchar2(10) NULL; +/ + From fa30083d0775d9bb241866c5b31f7e5856c23165 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 13 Dec 2023 17:52:51 +0800 Subject: [PATCH 27/92] =?UTF-8?q?=E4=BA=BA=E5=91=98=E6=8A=A5=E9=80=81?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/EmployeeDeclareExcelDTO.java | 126 +++ .../EmployeeDeclareImportEmployeeParam.java | 30 + .../param/EmployeeDeclareImportParam.java | 18 + .../service/EmployeeDeclareExcelService.java | 3 +- .../impl/EmployeeDeclareExcelServiceImpl.java | 795 +++++++++--------- .../impl/TaxDeclarationExcelServiceImpl.java | 6 +- .../salary/util/excel/ExcelSheetData.java | 2 +- .../engine/salary/util/excel/ExcelUtil.java | 2 +- .../salary/web/EmployeeDeclareController.java | 38 +- .../salary/web/TaxDeclarationController.java | 2 +- .../wrapper/EmployeeDeclareWrapper.java | 18 +- 11 files changed, 641 insertions(+), 399 deletions(-) create mode 100644 src/com/engine/salary/entity/employeedeclare/dto/EmployeeDeclareExcelDTO.java create mode 100644 src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareImportEmployeeParam.java create mode 100644 src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareImportParam.java diff --git a/src/com/engine/salary/entity/employeedeclare/dto/EmployeeDeclareExcelDTO.java b/src/com/engine/salary/entity/employeedeclare/dto/EmployeeDeclareExcelDTO.java new file mode 100644 index 000000000..5e1c658d7 --- /dev/null +++ b/src/com/engine/salary/entity/employeedeclare/dto/EmployeeDeclareExcelDTO.java @@ -0,0 +1,126 @@ +package com.engine.salary.entity.employeedeclare.dto; + +import com.engine.salary.annotation.SalaryTable; +import com.engine.salary.annotation.SalaryTableColumn; +import com.engine.salary.annotation.TableTitle; +import com.engine.salary.enums.employeedeclare.DeclareStatusEnum; +import com.engine.salary.enums.salaryaccounting.EmployeeTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.util.Set; + +/** + * 人员报送(人员)列表 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = true) +@SalaryTable(pageId = "a4f89287-289scf07669d7a23de0ef8u8s2710oe7") +public class EmployeeDeclareExcelDTO { + + // 主键id + private Long id; + + // 人员ID + private Long employeeId; + + // 人员类型 + private EmployeeTypeEnum employeeType; + + + // 姓名 + @SalaryTableColumn(text = "姓名", width = "10%", column = "employeeName") + @TableTitle(title = "姓名", dataIndex = "employeeName", key = "employeeName") + private String employeeName; + + // 分部 + @SalaryTableColumn(text = "分部", width = "10%", column = "subCompanyName") + @TableTitle(title = "分部", dataIndex = "subCompanyName", key = "subCompanyName") + private String subCompanyName; + + // 部门 + @SalaryTableColumn(text = "部门", width = "10%", column = "departmentName") + @TableTitle(title = "部门", dataIndex = "departmentName", key = "departmentName") + private String departmentName; + + // 个税扣缴义务人 + @SalaryTableColumn(text = "个税扣缴义务人", width = "10%", column = "taxAgentName") + @TableTitle(title = "个税扣缴义务人", dataIndex = "taxAgentName", key = "taxAgentName") + private String taxAgentName; + + // 工号 + @SalaryTableColumn(text = "工号", width = "10%", column = "jobNum") + @TableTitle(title = "工号", dataIndex = "jobNum", key = "jobNum") + private String jobNum; + + // 证件类型 + @SalaryTableColumn(text = "证件类型", width = "10%", column = "cardType") + @TableTitle(title = "证件类型", dataIndex = "cardType", key = "cardType") + private String cardType; + + // 证件号码 + @SalaryTableColumn(text = "证件号码", width = "10%", column = "cardNum") + @TableTitle(title = "证件号码", dataIndex = "cardNum", key = "cardNum") + private String cardNum; + + // 性别 + @SalaryTableColumn(text = "性别", width = "10%", column = "gender") + @TableTitle(title = "性别", dataIndex = "gender", key = "gender") + private String gender; + + // 出生日期 + @SalaryTableColumn(text = "出生日期", width = "10%", column = "birthday") + @TableTitle(title = "出生日期", dataIndex = "birthday", key = "birthday") + private String birthday; + + // 人员状态 + @SalaryTableColumn(text = "人员状态", width = "10%", column = "employmentStatus") + @TableTitle(title = "人员状态", dataIndex = "employmentStatus", key = "employmentStatus") + private String employmentStatus; + + // 手机号码 + @SalaryTableColumn(text = "手机号码", width = "10%", column = "mobile") + @TableTitle(title = "手机号码", dataIndex = "mobile", key = "mobile") + private String mobile; + + // 任职受雇从业类型 + @SalaryTableColumn(text = "任职受雇从业类型", width = "10%", column = "employmentType") + @TableTitle(title = "任职受雇从业类型", dataIndex = "employmentType", key = "employmentType") + private String employmentType; + + // 任职受雇从业日期 + @SalaryTableColumn(text = "任职受雇从业日期", width = "10%", column = "employmentDate") + @TableTitle(title = "任职受雇从业日期", dataIndex = "employmentDate", key = "employmentDate") + private String employmentDate; + + + // 离职日期 + @SalaryTableColumn(text = "离职日期", width = "10%", column = "dismissDate") + @TableTitle(title = "离职日期", dataIndex = "dismissDate", key = "dismissDate") + private String dismissDate; + + // 申报状态 + private DeclareStatusEnum declareStatus; + + // 申报状态 + @SalaryTableColumn(text = "申报状态", width = "10%", column = "declareStatusDesc") + @TableTitle(title = "申报状态", dataIndex = "declareStatusDesc", key = "declareStatusDesc") + private String declareStatusDesc; + + // 申报失败原因 + private String declareErrorMsg; + + // 编辑过的字段 + private Set updatedDataIndexSet; +} diff --git a/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareImportEmployeeParam.java b/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareImportEmployeeParam.java new file mode 100644 index 000000000..16f994ee5 --- /dev/null +++ b/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareImportEmployeeParam.java @@ -0,0 +1,30 @@ +package com.engine.salary.entity.employeedeclare.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 人员报送(人员)导入参数 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class EmployeeDeclareImportEmployeeParam { + //上传文件id + String imageId; + + Long taxAgentId; + + Date taxCycle; + +} diff --git a/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareImportParam.java b/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareImportParam.java new file mode 100644 index 000000000..72a7bd9f3 --- /dev/null +++ b/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareImportParam.java @@ -0,0 +1,18 @@ +package com.engine.salary.entity.employeedeclare.param; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: 人员报送导入参数 + * @author: xiajun + * @modified By: xiajun + * @date: Created in 2022/11/21 4:58 PM + * @version:v1.0 + */ +@Data +public class EmployeeDeclareImportParam extends EmployeeDeclareListQueryParam { + + @ApiModelProperty("是否导出现有数据") + private String exportData; +} diff --git a/src/com/engine/salary/service/EmployeeDeclareExcelService.java b/src/com/engine/salary/service/EmployeeDeclareExcelService.java index 6b0f75775..f48aa1199 100644 --- a/src/com/engine/salary/service/EmployeeDeclareExcelService.java +++ b/src/com/engine/salary/service/EmployeeDeclareExcelService.java @@ -1,5 +1,6 @@ package com.engine.salary.service; +import com.engine.salary.entity.employeedeclare.param.EmployeeDeclareImportParam; import com.engine.salary.entity.employeedeclare.param.EmployeeDeclareListQueryParam; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -18,7 +19,7 @@ public interface EmployeeDeclareExcelService { * @param importParam * @return */ -// Map exportTemplate(EmployeeDeclareImportParam importParam); + XSSFWorkbook exportTemplate(EmployeeDeclareImportParam importParam); /** * 导出人员信息采集-全部 diff --git a/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java b/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java index 07490e5e1..15afa6d35 100644 --- a/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java @@ -3,33 +3,50 @@ package com.engine.salary.service.impl; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.employeedeclare.dto.EmployeeDeclareListDTO; +import com.engine.salary.entity.employeedeclare.param.EmployeeDeclareImportParam; import com.engine.salary.entity.employeedeclare.param.EmployeeDeclareListQueryParam; import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; +import com.engine.salary.enums.employeedeclare.CardTypeEnum; +import com.engine.salary.enums.employeedeclare.EmploymentStatusEnum; +import com.engine.salary.enums.employeedeclare.EmploymentTypeEnum; import com.engine.salary.service.EmployeeDeclareExcelService; import com.engine.salary.service.EmployeeDeclareService; import com.engine.salary.service.SalaryEmployeeService; import com.engine.salary.service.TaxAgentService; +import com.engine.salary.util.SalaryEnumUtil; +import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.excel.ExcelSheetData; import com.engine.salary.util.excel.ExcelUtil; +import com.google.common.base.Joiner; +import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import weaver.general.Util; import weaver.hrm.User; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; /** - * @description: 人员报送(人员)导入导出 - * @author: xiajun - * @modified By: xiajun - * @date: Created in 9/7/22 5:39 PM - * @version:v1.0 - */ + * 人员报送(人员)导入导出 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ @Slf4j public class EmployeeDeclareExcelServiceImpl extends Service implements EmployeeDeclareExcelService { - private EmployeeDeclareService getEmployeeDeclareService(User user) { return ServiceUtil.getService(EmployeeDeclareServiceImpl.class, user); } + private SalaryEmployeeService getSalaryEmployeeService(User user) { return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); } @@ -39,67 +56,45 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee return ServiceUtil.getService(TaxAgentServiceImpl.class, user); } -// @Override -// public Map exportTemplate( EmployeeDeclareImportParam importParam) { -// String tenantKey = simpleEmployee.getTenantKey(); -// Long currentEmployeeId = simpleEmployee.getEmployeeId(); -// // 查询人员 -// List employeeDeclares = Collections.emptyList(); -// if (StringUtils.equalsIgnoreCase(importParam.getExportData(), "true")) { -// employeeDeclares = getEmployeeDeclareService(user).listByParam(importParam); -// } -// String yesI18 = SalaryI18nUtil.getI18nLabel( 84967, "是"); -// String noI18 = SalaryI18nUtil.getI18nLabel( 84968, "否"); -// List> rows = Lists.newArrayList(); -// for (EmployeeDeclarePO employeeDeclare : employeeDeclares) { -// EmploymentStatusEnum employmentStatusEnum = SalaryEnumUtil.enumMatchByValue(employeeDeclare.getEmploymentStatus(), EmploymentStatusEnum.class); -// EmploymentTypeEnum employmentTypeEnum = SalaryEnumUtil.enumMatchByValue(employeeDeclare.getEmploymentType(), EmploymentTypeEnum.class); -// List row = Lists.newArrayList(); -// row.add(employeeDeclare.getJobNum()); -// row.add(employeeDeclare.getEmployeeName()); -// row.add(CardTypeEnum.RESIDENT_IDENTITY_CARDS.getDefaultLabel()); -// row.add(employeeDeclare.getCardNum()); -// row.add(employmentStatusEnum == null ? "" : employmentStatusEnum.getDefaultLabel()); -// row.add(employmentTypeEnum == null ? "" : employmentTypeEnum.getDefaultLabel()); -// row.add(employeeDeclare.getEmploymentFirstYear()); -// row.add(employeeDeclare.getMobile()); -// row.add(Util.null2String(employeeDeclare.getEmploymentDate())); -// row.add(Util.null2String(employeeDeclare.getDismissDate())); -// row.add(Objects.equals(employeeDeclare.getDisability(), 1) ? yesI18 : noI18); -// row.add(employeeDeclare.getDisabilityCardNo()); -// row.add(Objects.equals(employeeDeclare.getMartyrDependents(), 1) ? yesI18 : noI18); -// row.add(employeeDeclare.getMartyrDependentsCardNo()); -// row.add(Objects.equals(employeeDeclare.getLonelyOld(), 1) ? yesI18 : noI18); -// row.add(Objects.equals(employeeDeclare.getDeductExpenses(), 1) ? yesI18 : noI18); -// rows.add(row); -// } -// // 组装excel导出数据 -// String[] headers = getImportHeader(currentEmployeeId, tenantKey).toArray(new String[0]); -// ExcelSheetData excelSheetData = new ExcelSheetData(); -// excelSheetData.setSheetName(SalaryI18nUtil.getI18nLabel( 156425, "人员信息采集")); -// excelSheetData.setHeaders(Collections.singletonList(headers)); -// excelSheetData.setRows(rows); -// ExportExcelInfo exportExcelInfo = ExportExcelInfo.builder() -// .fileName(SalaryI18nUtil.getI18nLabel( 156424, "人员信息采集导入模板") + "-" + SalaryDateUtil.getFormatLocalDate(LocalDateTime.now())) -// .dataType(SalaryI18nUtil.getI18nLabel( 156424, "人员信息采集导入模板")) -// .function(excelExportParam.getFunction()) -// .handlerName("exportEmployeeDeclareTemplate") -// .flag(true) -// .bizId(excelExportParam.getBiz()) -// .module(excelExportParam.getModule()) -// .userId(simpleEmployee.getEmployeeId()) -// .tenantKey(simpleEmployee.getTenantKey()) -// .operator(simpleEmployee.getUsername()) -// .eteamsId(TenantRpcContext.getEteamsId()) -// .build(); -// return salaryBatchService.simpleExportExcel(exportExcelInfo, Collections.singletonList(excelSheetData)); -// } -// -// @BatchExportHandler("exportEmployeeDeclareTemplate") -// private void exportEmployeeDeclareTemplate() { -// BatchCallbackMessage message = BatchExportContext.getBatchCallbackMessage(); -// log.info("导出结束:{}", JsonUtil.toJsonString(message)); -// } + @Override + public XSSFWorkbook exportTemplate(EmployeeDeclareImportParam importParam) { + // 查询人员 + List employeeDeclares = Collections.emptyList(); + if (StringUtils.equalsIgnoreCase(importParam.getExportData(), "true")) { + employeeDeclares = getEmployeeDeclareService(user).listByParam(importParam); + } + String yesI18 = SalaryI18nUtil.getI18nLabel(84967, "是"); + String noI18 = SalaryI18nUtil.getI18nLabel(84968, "否"); + List> rows = Lists.newArrayList(); + for (EmployeeDeclarePO employeeDeclare : employeeDeclares) { + EmploymentStatusEnum employmentStatusEnum = SalaryEnumUtil.enumMatchByValue(employeeDeclare.getEmploymentStatus(), EmploymentStatusEnum.class); + EmploymentTypeEnum employmentTypeEnum = SalaryEnumUtil.enumMatchByValue(employeeDeclare.getEmploymentType(), EmploymentTypeEnum.class); + List row = Lists.newArrayList(); + row.add(employeeDeclare.getJobNum()); + row.add(employeeDeclare.getEmployeeName()); + row.add(CardTypeEnum.RESIDENT_IDENTITY_CARDS.getDefaultLabel()); + row.add(employeeDeclare.getCardNum()); + row.add(employmentStatusEnum == null ? "" : employmentStatusEnum.getDefaultLabel()); + row.add(employmentTypeEnum == null ? "" : employmentTypeEnum.getDefaultLabel()); + row.add(employeeDeclare.getEmploymentFirstYear()); + row.add(employeeDeclare.getMobile()); + row.add(Util.null2String(employeeDeclare.getEmploymentDate())); + row.add(Util.null2String(employeeDeclare.getDismissDate())); + row.add(Objects.equals(employeeDeclare.getDisability(), 1) ? yesI18 : noI18); + row.add(employeeDeclare.getDisabilityCardNo()); + row.add(Objects.equals(employeeDeclare.getMartyrDependents(), 1) ? yesI18 : noI18); + row.add(employeeDeclare.getMartyrDependentsCardNo()); + row.add(Objects.equals(employeeDeclare.getLonelyOld(), 1) ? yesI18 : noI18); + row.add(Objects.equals(employeeDeclare.getDeductExpenses(), 1) ? yesI18 : noI18); + rows.add(row); + } + // 组装excel导出数据 + ExcelSheetData excelSheetData = new ExcelSheetData(); + excelSheetData.setSheetName(SalaryI18nUtil.getI18nLabel(156425, "人员信息采集")); + excelSheetData.setHeaders(getImportHeader()); + excelSheetData.setRows(rows); + return ExcelUtil.genWorkbook(excelSheetData); + } @Override public XSSFWorkbook export(EmployeeDeclareListQueryParam queryParam) { @@ -206,59 +201,46 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee // } -// -// @Transactional(rollbackFor = Exception.class) -// @BatchImportHandler("importEmployeeDeclare") -// public void importEmployeeDeclare() { -// BatchDocumentMessage message = BatchImportContext.getBatchDocumentMessage(); -// Long employeeId = message.getUserId(); -// String tenantKey = message.getTenantKey(); +// public Map importEmployeeDeclare(EmployeeDeclareImportEmployeeParam param) { // try { -// LocalDateTime now = LocalDateTime.now(); -// Map paramMap = JsonUtil.parseMap(message.getUploadSet().getCustomData(), Object.class); +// Date now = new Date(); // // 个税扣缴义务人id -// Long taxAgentId = Util.getLongValue(Util.null2String(paramMap.get("taxAgentId"))); -// TaxAgentPO taxAgent = getTaxAgentService(user).getById(taxAgentId, employeeId, tenantKey); +// Long taxAgentId = param.getTaxAgentId(); +// TaxAgentPO taxAgent = getTaxAgentService(user).getById(taxAgentId); // if (taxAgent == null) { -// salaryBatchService.sendImportCallBackInfo(message, SalaryI18nUtil.getI18nLabel(employeeId, 187469, "参数错误,无法找到个税扣缴义务人")); -// return; +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(111111, "参数错误,无法找到个税扣缴义务人")); // } // // 税款所属期 -// String taxCycle = Util.null2String(paramMap.get("taxCycle")); -// if (!SalaryDateUtil.checkYearMonth(taxCycle)) { -// salaryBatchService.sendImportCallBackInfo(message, SalaryI18nUtil.getI18nLabel(employeeId, 156384, "参数错误,税款所属期参数格式错误")); -// return; +// Date taxCycle = param.getTaxCycle(); +// if (taxCycle == null) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(111111, "参数错误,税款所属期参数格式错误")); // } // +// InputStream fileInputStream = null; +// fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId())); +// // // 导出模板中的表头 -// List headerList = getImportHeader(employeeId, tenantKey); +// List headerList = getImportHeader(); // // 查询所有的人员 -// List orgEmployeeIds = hrmCommonEmployeeService.getAllEmployee(tenantKey); -// List simpleEmployees = hrmCommonEmployeeService.getEmployeeByIds(orgEmployeeIds, tenantKey); -// // 查询所有的外部人员 -// List extEmployees = extEmployeeService.listAll(tenantKey); +// List simpleEmployees = getSalaryEmployeeService(user).listAll(UseEmployeeTypeEnum.ALL); // // 查询人员报送表的人员 -// List employeeDeclares = getEmployeeDeclareService(user).listByTaxCycleAndTaxAgentId(YearMonth.parse(taxCycle), -// taxAgentId, tenantKey); +// List employeeDeclares = getEmployeeDeclareService(user).listByTaxCycleAndTaxAgentId(taxCycle, taxAgentId); // // 校验字段 // String checkType = Util.null2String(paramMap.getOrDefault("checkType", "jobNum")); -// Map extEmployeeMap = Maps.newHashMap(); -// Map simpleEmployeeMap = Maps.newHashMap(); +// Map simpleEmployeeMap = Maps.newHashMap(); // Map employeeDeclareMap = Maps.newHashMapWithExpectedSize(employeeDeclares.size()); // if (Objects.equals(checkType, "jobNum")) { -// extEmployeeMap = Collections.emptyMap(); // simpleEmployeeMap = SalaryEntityUtil.convert2Map(simpleEmployees, SimpleEmployee::getJobNum); // employeeDeclareMap = SalaryEntityUtil.convert2Map(employeeDeclares, EmployeeDeclarePO::getJobNum); // } else { // // 查询所有人员的个人信息 -// List simpleUserInfos = getSalaryEmployeeService(user).listByEmployeeIds(orgEmployeeIds, tenantKey); -// Map idKeySimpleEmployeeMap = SalaryEntityUtil.convert2Map(simpleEmployees, SimpleEmployee::getId); +// List simpleUserInfos = getSalaryEmployeeService(user).listByEmployeeIds(orgEmployeeIds); +// Map idKeySimpleEmployeeMap = SalaryEntityUtil.convert2Map(simpleEmployees, SimpleEmployee::getId); // for (SimpleUserInfo simpleUserInfo : simpleUserInfos) { // if (idKeySimpleEmployeeMap.containsKey(simpleUserInfo.getEmployeeId())) { // simpleEmployeeMap.put(simpleUserInfo.getIdNo(), idKeySimpleEmployeeMap.get(simpleUserInfo.getEmployeeId())); // } // } -// extEmployeeMap = SalaryEntityUtil.convert2Map(extEmployees, ExtEmployeePO::getCardNum); // employeeDeclareMap = SalaryEntityUtil.convert2Map(employeeDeclares, EmployeeDeclarePO::getCardNum); // // } @@ -269,263 +251,308 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee // // 索引(用于计算进度) // int index = 0; // // 失败的数量 -// int failCount = 0; +// int errorCount = 0; // // 成功的数量 // int successCount = 0; // // 错误行的索引 // int failRowIndex = 1; -// // 包含错误提示信息的sheet页 -// List errorExcelSheets = Lists.newArrayList(); -// for (ExcelSheet excelSheet : message.getBatchFile().getExcelSheets()) { -// if (CollectionUtils.isEmpty(excelSheet.getHeader())) { -// continue; +// // 错误提示 +// List> excelComments = new ArrayList<>(); +// // 错误excel内容 +// List errorData = new ArrayList<>(); +// +// Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX); +// // 表头 +// List headers = ExcelSupport.getSheetHeader(sheet, 0); +// +// // 检查表头 +// String isValidHeader = checkHeader(headers, headerList); +// if (StringUtils.isNotBlank(isValidHeader)) { +// Map apidatas = new HashMap(); +// apidatas.put("successCount", successCount); +// apidatas.put("errorCount", errorCount); +// +// Map errorMessageMap = Maps.newHashMap(); +// errorMessageMap.put("message", isValidHeader); +// excelComments.add(errorMessageMap); +// apidatas.put("errorData", excelComments); +// return apidatas; +// } +// +// // 数据 +// List data = ExcelParseHelper.parse2Map(fileInputStream, EmployeeDeclareExcelDTO.class, 0, 1, 14, "1.xlsx"); +// if (CollectionUtils.isEmpty(data)) { +// Map apidatas = new HashMap(); +// apidatas.put("successCount", successCount); +// apidatas.put("errorCount", errorCount); +// return apidatas; +// } +// +// for (int i = 0; i < data.size(); i++) { +// EmployeeDeclareExcelDTO employeeDeclareExcelDTO = data.get(i); +// +// employeeDeclareExcelDTO.getEmployeeName() +// +// //筛选导入人员信息可以在人力资源池中匹配到的人员信息 +// List employeeSameIds = getSalaryEmployeeService(user).matchImportEmployee(simpleEmployees, userName, deparmentName, mobile, workcode, null); +// +// if (StringUtils.isBlank(userName) && "0".equals(confValue)) { +// //姓名 不能为空 +// //错误消息对象 +// Map errorMessageMap = Maps.newHashMap(); +// errorMessageMap.put("message", rowIndex + "姓名不能为空"); +// errorData.add(errorMessageMap); +// errorSum += 1; +// } else if (CollectionUtils.isEmpty(employeeSameIds)) { +// Map errorMessageMap = Maps.newHashMap(); +// errorMessageMap.put("message", rowIndex + "员工信息不存在"); +// errorData.add(errorMessageMap); +// errorSum += 1; +// } else if (employeeSameIds.size() > 1) { +// //存在离职和在职状态取在职状态 +// employeeSameIds = employeeSameIds.stream() +// .filter(e -> UserStatusEnum.getNormalStatus().contains(e.getStatus())) +// .collect(Collectors.toList()); +// if (employeeSameIds.size() != 1) { +// Map errorMessageMap = Maps.newHashMap(); +// errorMessageMap.put("message", rowIndex + "员工信息不存在或者存在多个员工"); +// errorData.add(errorMessageMap); +// errorSum += 1; +// } else { +// Long employeeId = CollectionUtils.isNotEmpty(employeeSameIds) && employeeSameIds.size() == 1 ? employeeSameIds.get(0).getEmployeeId() : null; +// addUpDeduction.setEmployeeId(employeeId); +// } +// } else { +// Long employeeId = CollectionUtils.isNotEmpty(employeeSameIds) && employeeSameIds.size() == 1 ? employeeSameIds.get(0).getEmployeeId() : null; +// if (employeeId != null && employeeId > 0) { +// addUpDeduction.setEmployeeId(employeeId); +// } else { +// //姓名错误,系统内不存在该姓名 +// Map errorMessageMap = Maps.newHashMap(); +// errorMessageMap.put("message", rowIndex + "姓名错误,系统内不存在该姓名"); +// errorData.add(errorMessageMap); +// errorSum += 1; +// } // } -// // 表头 -// List headers = excelSheet.getHeader().stream() -// .map(m -> Util.null2String(m.get("key"))) -// .collect(Collectors.toList()); -// // 检查表头 -// boolean isCorrectHeader = checkHeader(message, headers, headerList); -// if (!isCorrectHeader) { -// return; -// } -// // 表头每一列的位置 -// Map columnIndexMap = Maps.newHashMap(); -// for (int i = 0; i < headers.size(); i++) { -// columnIndexMap.put(headers.get(i), i); -// } -// // 数据 -// List> data = excelSheet.getData(); -// if (CollectionUtils.isEmpty(data)) { -// continue; -// } -// // 错误提示信息 -// List excelComments = Lists.newArrayList(); -// // 存在错误的那行数据 -// List> errorData = Lists.newArrayList(); -// for (int i = 0; i < data.size(); i++) { -// Map map = data.get(i); -// // 数据是否存在错误 -// boolean isError = false; -// EmployeeDeclareExcelDTO employeeDeclareExcel = new EmployeeDeclareExcelDTO(); -// for (String dataKey : getImportHeader(employeeId, tenantKey)) { -// Integer j = columnIndexMap.get(dataKey); -// String dataValue = Util.null2String(map.get(dataKey)); -// if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 86317, "工号"))) { -// if (StringUtils.equals(checkType, "jobNum") && StringUtils.isEmpty(dataValue)) { -// isError = true; -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 136250, "工号不能为空"), failRowIndex, failRowIndex, j, j); -// } -// employeeDeclareExcel.setJobNum(dataValue); -// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 85429, "姓名"))) { -// if (StringUtils.isEmpty(dataValue)) { -// isError = true; -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 102838, "姓名不能为空"), failRowIndex, failRowIndex, j, j); -// } else { -// employeeDeclareExcel.setEmployeeName(dataValue); -// } -// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 105139, "证件类型"))) { -// employeeDeclareExcel.setCardType(CardTypeEnum.RESIDENT_IDENTITY_CARDS.getValue()); -// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 86318, "证件号码"))) { -// if (StringUtils.isEmpty(dataValue)) { -// isError = true; -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 156386, "证件号码不能为空"), failRowIndex, failRowIndex, j, j); -// } else if (!SalaryCardUtil.checkIdNum(dataValue)) { -// isError = true; -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 156429, "证件号码格式不正确"), failRowIndex, failRowIndex, j, j); -// } else { -// employeeDeclareExcel.setCardNum(dataValue); -// employeeDeclareExcel.setGender(SalaryCardUtil.judgeGender(dataValue).getValue()); -// employeeDeclareExcel.setBirthday(SalaryCardUtil.judgeBirthday(dataValue)); -// } -// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 156394, "人员状态"))) { -// boolean legalDataValue = false; -// for (EmploymentStatusEnum employmentStatusEnum : EmploymentStatusEnum.values()) { -// if (StringUtils.equals(dataValue, employmentStatusEnum.getDefaultLabel())) { -// legalDataValue = true; -// employeeDeclareExcel.setEmploymentStatus(employmentStatusEnum.getValue()); -// break; -// } -// } -// if (!legalDataValue) { -// isError = true; -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 156430, "人员状态只能填写正常或非正常"), failRowIndex, failRowIndex, j, j); -// } -// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 156396, "任职受雇从业类型"))) { -// boolean legalDataValue = false; -// for (EmploymentTypeEnum employmentTypeEnum : EmploymentTypeEnum.values()) { -// if (StringUtils.equals(dataValue, employmentTypeEnum.getDefaultLabel())) { -// legalDataValue = true; -// employeeDeclareExcel.setEmploymentType(employmentTypeEnum.getValue()); -// break; -// } -// } -// if (!legalDataValue) { -// isError = true; -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 156431, "任职受雇从业类型填写错误"), failRowIndex, failRowIndex, j, j); -// } -// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 187374, "入职年度就业情形"))) { -// employeeDeclareExcel.setEmploymentFirstYear(dataValue); -// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 98621, "手机号码"))) { -// if (StringUtils.isEmpty(dataValue)) { -// isError = true; -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 106429, "手机号码不能为空"), failRowIndex, failRowIndex, j, j); -// } else if (!SalaryCardUtil.checkMobile(dataValue)) { -// isError = true; -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 160510, "手机号码格式不正确"), failRowIndex, failRowIndex, j, j); -// } else { -// employeeDeclareExcel.setMobile(dataValue); -// } -// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 156409, "任职受雇从业日期"))) { -// if (StringUtils.isEmpty(dataValue)) { -// if (!Objects.equals(employeeDeclareExcel.getEmploymentType(), EmploymentTypeEnum.OTHER.getValue())) { -// isError = true; -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 160511, "任职受雇从业类型不为「其他」时,任职受雇从业日期为必填"), failRowIndex, failRowIndex, j, j); -// } -// } else { -// if (!SalaryDateUtil.checkDay(dataValue)) { -// isError = true; -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 156432, "日期格式不正确"), failRowIndex, failRowIndex, j, j); -// } else { -// employeeDeclareExcel.setEmploymentDate(LocalDate.parse(dataValue)); -// } -// } -// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 95228, "离职日期"))) { -// if (StringUtils.isEmpty(dataValue)) { -// if (Objects.equals(employeeDeclareExcel.getEmploymentStatus(), EmploymentStatusEnum.ABNORMAL.getValue())) { -// isError = true; -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 160512, "人员状态为非正常时,离职日期必填"), failRowIndex, failRowIndex, j, j); -// } -// } else { -// if (!SalaryDateUtil.checkDay(dataValue)) { -// isError = true; -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 156432, "日期格式不正确"), failRowIndex, failRowIndex, j, j); -// } else { -// employeeDeclareExcel.setDismissDate(LocalDate.parse(dataValue)); -// } -// } -// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 156399, "是否残疾"))) { -// if (StringUtils.equals(dataValue, SalaryOnOffEnum.ON.getDefaultLabel())) { -// employeeDeclareExcel.setDisability(SalaryOnOffEnum.ON.getValue()); -// } else if (StringUtils.equals(dataValue, SalaryOnOffEnum.OFF.getDefaultLabel())) { -// employeeDeclareExcel.setDisability(SalaryOnOffEnum.OFF.getValue()); -// } else { -// isError = true; -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 156433, "是否残疾只能填写是与否"), failRowIndex, failRowIndex, j, j); -// } -// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 156412, "残疾证号"))) { -// if (StringUtils.isEmpty(dataValue)) { -// if (Objects.equals(employeeDeclareExcel.getDisability(), SalaryOnOffEnum.ON.getValue())) { -// isError = true; -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 160513, "「是否残疾」填「是」时,残疾证号必填"), failRowIndex, failRowIndex, j, j); -// } -// } else { -// employeeDeclareExcel.setDisabilityCardNo(dataValue); -// } -// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 187385, "是否烈属"))) { -// if (StringUtils.equals(dataValue, SalaryOnOffEnum.ON.getDefaultLabel())) { -// employeeDeclareExcel.setMartyrDependents(SalaryOnOffEnum.ON.getValue()); -// } else if (StringUtils.equals(dataValue, SalaryOnOffEnum.OFF.getDefaultLabel())) { -// employeeDeclareExcel.setMartyrDependents(SalaryOnOffEnum.OFF.getValue()); -// } else { -// isError = true; -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 156433, "是否烈属只能填写是与否"), failRowIndex, failRowIndex, j, j); -// } -// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 156413, "烈属证号"))) { -// if (StringUtils.isEmpty(dataValue)) { -// if (Objects.equals(employeeDeclareExcel.getMartyrDependents(), SalaryOnOffEnum.ON.getValue())) { -// isError = true; -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 160514, "「是否烈属」填「是」时,烈属证号必填"), failRowIndex, failRowIndex, j, j); -// } -// } else { -// employeeDeclareExcel.setMartyrDependentsCardNo(dataValue); -// } -// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 156400, "是否孤老"))) { -// if (StringUtils.equals(dataValue, SalaryOnOffEnum.ON.getDefaultLabel())) { -// employeeDeclareExcel.setLonelyOld(SalaryOnOffEnum.ON.getValue()); -// } else if (StringUtils.equals(dataValue, SalaryOnOffEnum.OFF.getDefaultLabel())) { -// employeeDeclareExcel.setLonelyOld(SalaryOnOffEnum.OFF.getValue()); -// } else { -// isError = true; -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 156434, "是否孤老只能填写是与否"), failRowIndex, failRowIndex, j, j); -// } -// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 156402, "是否扣除减除费用"))) { -// if (StringUtils.equals(dataValue, SalaryOnOffEnum.ON.getDefaultLabel())) { -// employeeDeclareExcel.setDeductExpenses(SalaryOnOffEnum.ON.getValue()); -// } else if (StringUtils.equals(dataValue, SalaryOnOffEnum.OFF.getDefaultLabel())) { -// employeeDeclareExcel.setDeductExpenses(SalaryOnOffEnum.OFF.getValue()); -// } else { -// isError = true; -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 156435, "是否扣除减除费用只能填写是与否"), failRowIndex, failRowIndex, j, j); -// } +// +// +// // 数据是否存在错误 +// boolean isError = false; +// if (StringUtils.equals(employeeDeclareExcelDTO.getJobNum(), SalaryI18nUtil.getI18nLabel(86317, "工号"))) { +// if (StringUtils.isEmpty(employeeDeclareExcelDTO.getJobNum()) ) { +// isError = true; +// +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(136250, "工号不能为空"), failRowIndex, failRowIndex, j, j); +// } +// employeeDeclareExcel.setJobNum(dataValue); +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(85429, "姓名"))) { +// if (StringUtils.isEmpty(dataValue)) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(102838, "姓名不能为空"), failRowIndex, failRowIndex, j, j); +// } else { +// employeeDeclareExcel.setEmployeeName(dataValue); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(105139, "证件类型"))) { +// employeeDeclareExcel.setCardType(CardTypeEnum.RESIDENT_IDENTITY_CARDS.getValue()); +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(86318, "证件号码"))) { +// if (StringUtils.isEmpty(dataValue)) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(156386, "证件号码不能为空"), failRowIndex, failRowIndex, j, j); +// } else if (!SalaryCardUtil.checkIdNum(dataValue)) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(156429, "证件号码格式不正确"), failRowIndex, failRowIndex, j, j); +// } else { +// employeeDeclareExcel.setCardNum(dataValue); +// employeeDeclareExcel.setGender(SalaryCardUtil.judgeGender(dataValue).getValue()); +// employeeDeclareExcel.setBirthday(SalaryCardUtil.judgeBirthday(dataValue)); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(156394, "人员状态"))) { +// boolean legalDataValue = false; +// for (EmploymentStatusEnum employmentStatusEnum : EmploymentStatusEnum.values()) { +// if (StringUtils.equals(dataValue, employmentStatusEnum.getDefaultLabel())) { +// legalDataValue = true; +// employeeDeclareExcel.setEmploymentStatus(employmentStatusEnum.getValue()); +// break; // } // } -// if (!isError) { -// if (StringUtils.equals(checkType, "jobNum")) { -// EmployeeDeclarePO employeeDeclare = employeeDeclareMap.get(employeeDeclareExcel.getJobNum()); -// if (employeeDeclare == null) { -// ExtEmployeePO extEmployee = extEmployeeMap.get(employeeDeclareExcel.getJobNum()); -// SimpleEmployee simpleEmployee = simpleEmployeeMap.get(employeeDeclareExcel.getJobNum()); -// if (extEmployee == null && simpleEmployee == null) { -// isError = true; -// String jobNumI18 = SalaryI18nUtil.getI18nLabel(employeeId, 86317, "工号"); -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 156436, "系统内的人员不存在该工号"), failRowIndex, failRowIndex, headers.indexOf(jobNumI18), headers.indexOf(jobNumI18)); -// } else { -// needAddEmployeeDeclares.add(buildEmployeeDeclare(extEmployee, simpleEmployee, -// employeeDeclareExcel, taxAgentId, taxCycle, now, employeeId, tenantKey)); -// } +// if (!legalDataValue) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(156430, "人员状态只能填写正常或非正常"), failRowIndex, failRowIndex, j, j); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(156396, "任职受雇从业类型"))) { +// boolean legalDataValue = false; +// for (EmploymentTypeEnum employmentTypeEnum : EmploymentTypeEnum.values()) { +// if (StringUtils.equals(dataValue, employmentTypeEnum.getDefaultLabel())) { +// legalDataValue = true; +// employeeDeclareExcel.setEmploymentType(employmentTypeEnum.getValue()); +// break; +// } +// } +// if (!legalDataValue) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(156431, "任职受雇从业类型填写错误"), failRowIndex, failRowIndex, j, j); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(187374, "入职年度就业情形"))) { +// employeeDeclareExcel.setEmploymentFirstYear(dataValue); +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(98621, "手机号码"))) { +// if (StringUtils.isEmpty(dataValue)) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(106429, "手机号码不能为空"), failRowIndex, failRowIndex, j, j); +// } else if (!SalaryCardUtil.checkMobile(dataValue)) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(160510, "手机号码格式不正确"), failRowIndex, failRowIndex, j, j); +// } else { +// employeeDeclareExcel.setMobile(dataValue); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(156409, "任职受雇从业日期"))) { +// if (StringUtils.isEmpty(dataValue)) { +// if (!Objects.equals(employeeDeclareExcel.getEmploymentType(), EmploymentTypeEnum.OTHER.getValue())) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(160511, "任职受雇从业类型不为「其他」时,任职受雇从业日期为必填"), failRowIndex, failRowIndex, j, j); +// } +// } else { +// if (!SalaryDateUtil.checkDay(dataValue)) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(156432, "日期格式不正确"), failRowIndex, failRowIndex, j, j); +// } else { +// employeeDeclareExcel.setEmploymentDate(LocalDate.parse(dataValue)); +// } +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(95228, "离职日期"))) { +// if (StringUtils.isEmpty(dataValue)) { +// if (Objects.equals(employeeDeclareExcel.getEmploymentStatus(), EmploymentStatusEnum.ABNORMAL.getValue())) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(160512, "人员状态为非正常时,离职日期必填"), failRowIndex, failRowIndex, j, j); +// } +// } else { +// if (!SalaryDateUtil.checkDay(dataValue)) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(156432, "日期格式不正确"), failRowIndex, failRowIndex, j, j); +// } else { +// employeeDeclareExcel.setDismissDate(LocalDate.parse(dataValue)); +// } +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(156399, "是否残疾"))) { +// if (StringUtils.equals(dataValue, SalaryOnOffEnum.ON.getDefaultLabel())) { +// employeeDeclareExcel.setDisability(SalaryOnOffEnum.ON.getValue()); +// } else if (StringUtils.equals(dataValue, SalaryOnOffEnum.OFF.getDefaultLabel())) { +// employeeDeclareExcel.setDisability(SalaryOnOffEnum.OFF.getValue()); +// } else { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(156433, "是否残疾只能填写是与否"), failRowIndex, failRowIndex, j, j); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(156412, "残疾证号"))) { +// if (StringUtils.isEmpty(dataValue)) { +// if (Objects.equals(employeeDeclareExcel.getDisability(), SalaryOnOffEnum.ON.getValue())) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(160513, "「是否残疾」填「是」时,残疾证号必填"), failRowIndex, failRowIndex, j, j); +// } +// } else { +// employeeDeclareExcel.setDisabilityCardNo(dataValue); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(187385, "是否烈属"))) { +// if (StringUtils.equals(dataValue, SalaryOnOffEnum.ON.getDefaultLabel())) { +// employeeDeclareExcel.setMartyrDependents(SalaryOnOffEnum.ON.getValue()); +// } else if (StringUtils.equals(dataValue, SalaryOnOffEnum.OFF.getDefaultLabel())) { +// employeeDeclareExcel.setMartyrDependents(SalaryOnOffEnum.OFF.getValue()); +// } else { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(156433, "是否烈属只能填写是与否"), failRowIndex, failRowIndex, j, j); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(156413, "烈属证号"))) { +// if (StringUtils.isEmpty(dataValue)) { +// if (Objects.equals(employeeDeclareExcel.getMartyrDependents(), SalaryOnOffEnum.ON.getValue())) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(160514, "「是否烈属」填「是」时,烈属证号必填"), failRowIndex, failRowIndex, j, j); +// } +// } else { +// employeeDeclareExcel.setMartyrDependentsCardNo(dataValue); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(156400, "是否孤老"))) { +// if (StringUtils.equals(dataValue, SalaryOnOffEnum.ON.getDefaultLabel())) { +// employeeDeclareExcel.setLonelyOld(SalaryOnOffEnum.ON.getValue()); +// } else if (StringUtils.equals(dataValue, SalaryOnOffEnum.OFF.getDefaultLabel())) { +// employeeDeclareExcel.setLonelyOld(SalaryOnOffEnum.OFF.getValue()); +// } else { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(156434, "是否孤老只能填写是与否"), failRowIndex, failRowIndex, j, j); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(156402, "是否扣除减除费用"))) { +// if (StringUtils.equals(dataValue, SalaryOnOffEnum.ON.getDefaultLabel())) { +// employeeDeclareExcel.setDeductExpenses(SalaryOnOffEnum.ON.getValue()); +// } else if (StringUtils.equals(dataValue, SalaryOnOffEnum.OFF.getDefaultLabel())) { +// employeeDeclareExcel.setDeductExpenses(SalaryOnOffEnum.OFF.getValue()); +// } else { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(156435, "是否扣除减除费用只能填写是与否"), failRowIndex, failRowIndex, j, j); +// } +// } +// if (!isError) { +// if (StringUtils.equals(checkType, "jobNum")) { +// EmployeeDeclarePO employeeDeclare = employeeDeclareMap.get(employeeDeclareExcel.getJobNum()); +// if (employeeDeclare == null) { +// ExtEmployeePO extEmployee = extEmployeeMap.get(employeeDeclareExcel.getJobNum()); +// SimpleEmployee simpleEmployee = simpleEmployeeMap.get(employeeDeclareExcel.getJobNum()); +// if (extEmployee == null && simpleEmployee == null) { +// isError = true; +// String jobNumI18 = SalaryI18nUtil.getI18nLabel(86317, "工号"); +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(156436, "系统内的人员不存在该工号"), failRowIndex, failRowIndex, headers.indexOf(jobNumI18), headers.indexOf(jobNumI18)); // } else { -// EmployeeDeclarePO newEmployeeDeclare = new EmployeeDeclarePO(); -// BeanUtils.copyProperties(employeeDeclare, newEmployeeDeclare); -// BeanUtils.copyProperties(employeeDeclareExcel, newEmployeeDeclare); -// newEmployeeDeclare.setNewEmployeeInfo(StringUtils.equals(employeeDeclare.toCompareString(), newEmployeeDeclare.toCompareString()) ? 0 : 1) -// .setUpdateTime(now); -// needUpdateEmployeeDeclares.add(newEmployeeDeclare); -// if (Objects.equals(newEmployeeDeclare.getNewEmployeeInfo(), 1)) { -// newEmployeeDeclare.setDeclareStatus(DeclareStatusEnum.NOT_DECLARE.getValue()); -// newEmployeeDeclare.setDeclareErrorMsg(""); -// } +// needAddEmployeeDeclares.add(buildEmployeeDeclare(extEmployee, simpleEmployee, +// employeeDeclareExcel, taxAgentId, taxCycle, now, employeeId)); // } // } else { -// EmployeeDeclarePO employeeDeclare = employeeDeclareMap.get(employeeDeclareExcel.getCardNum()); -// if (employeeDeclare == null) { -// ExtEmployeePO extEmployee = extEmployeeMap.get(employeeDeclareExcel.getCardNum()); -// SimpleEmployee simpleEmployee = simpleEmployeeMap.get(employeeDeclareExcel.getCardNum()); -// if (extEmployee == null && simpleEmployee == null) { -// isError = true; -// String cardNoI18 = SalaryI18nUtil.getI18nLabel(employeeId, 86318, "证件号码"); -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 156437, "系统内的人员不存在该证件号码"), failRowIndex, failRowIndex, headers.indexOf(cardNoI18), headers.indexOf(cardNoI18)); -// } else { -// needAddEmployeeDeclares.add(buildEmployeeDeclare(extEmployee, simpleEmployee, -// employeeDeclareExcel, taxAgentId, taxCycle, now, employeeId, tenantKey)); -// } -// } else { -// EmployeeDeclarePO newEmployeeDeclare = new EmployeeDeclarePO(); -// BeanUtils.copyProperties(employeeDeclare, newEmployeeDeclare); -// BeanUtils.copyProperties(employeeDeclareExcel, newEmployeeDeclare); -// newEmployeeDeclare.setNewEmployeeInfo(StringUtils.equals(employeeDeclare.toCompareString(), newEmployeeDeclare.toCompareString()) ? 0 : 1) -// .setUpdateTime(now); -// if (Objects.equals(newEmployeeDeclare.getNewEmployeeInfo(), 1)) { -// newEmployeeDeclare.setDeclareStatus(DeclareStatusEnum.NOT_DECLARE.getValue()); -// newEmployeeDeclare.setDeclareErrorMsg(""); -// } -// needUpdateEmployeeDeclares.add(newEmployeeDeclare); +// EmployeeDeclarePO newEmployeeDeclare = new EmployeeDeclarePO(); +// BeanUtils.copyProperties(employeeDeclare, newEmployeeDeclare); +// BeanUtils.copyProperties(employeeDeclareExcel, newEmployeeDeclare); +// newEmployeeDeclare.setNewEmployeeInfo(StringUtils.equals(employeeDeclare.toCompareString(), newEmployeeDeclare.toCompareString()) ? 0 : 1) +// .setUpdateTime(now); +// needUpdateEmployeeDeclares.add(newEmployeeDeclare); +// if (Objects.equals(newEmployeeDeclare.getNewEmployeeInfo(), 1)) { +// newEmployeeDeclare.setDeclareStatus(DeclareStatusEnum.NOT_DECLARE.getValue()); +// newEmployeeDeclare.setDeclareErrorMsg(""); // } // } +// } else { +// EmployeeDeclarePO employeeDeclare = employeeDeclareMap.get(employeeDeclareExcel.getCardNum()); +// if (employeeDeclare == null) { +// ExtEmployeePO extEmployee = extEmployeeMap.get(employeeDeclareExcel.getCardNum()); +// SimpleEmployee simpleEmployee = simpleEmployeeMap.get(employeeDeclareExcel.getCardNum()); +// if (extEmployee == null && simpleEmployee == null) { +// isError = true; +// String cardNoI18 = SalaryI18nUtil.getI18nLabel(86318, "证件号码"); +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(156437, "系统内的人员不存在该证件号码"), failRowIndex, failRowIndex, headers.indexOf(cardNoI18), headers.indexOf(cardNoI18)); +// } else { +// needAddEmployeeDeclares.add(buildEmployeeDeclare(extEmployee, simpleEmployee, +// employeeDeclareExcel, taxAgentId, taxCycle, now, employeeId)); +// } +// } else { +// EmployeeDeclarePO newEmployeeDeclare = new EmployeeDeclarePO(); +// BeanUtils.copyProperties(employeeDeclare, newEmployeeDeclare); +// BeanUtils.copyProperties(employeeDeclareExcel, newEmployeeDeclare); +// newEmployeeDeclare.setNewEmployeeInfo(StringUtils.equals(employeeDeclare.toCompareString(), newEmployeeDeclare.toCompareString()) ? 0 : 1) +// .setUpdateTime(now); +// if (Objects.equals(newEmployeeDeclare.getNewEmployeeInfo(), 1)) { +// newEmployeeDeclare.setDeclareStatus(DeclareStatusEnum.NOT_DECLARE.getValue()); +// newEmployeeDeclare.setDeclareErrorMsg(""); +// } +// needUpdateEmployeeDeclares.add(newEmployeeDeclare); +// } // } -// if (isError) { -// failCount++; -// failRowIndex++; -// errorData.add(map); -// continue; -// } -// successCount++; // } -// // 如果sheet包含错误数据 -// if (CollectionUtils.isNotEmpty(errorData)) { -// salaryBatchService.createErrorExcelSheet(excelSheet.getHeader(), errorData, excelSheet.getName(), excelComments, errorExcelSheets); +// if (isError) { +// errorCount++; +// failRowIndex++; +// errorData.add(map); +// continue; // } +// successCount++; // } +// // 如果sheet包含错误数据 +// if (CollectionUtils.isNotEmpty(errorData)) { +// salaryBatchService.createErrorExcelSheet(excelSheet.getHeader(), errorData, excelSheet.getName(), excelComments, errorExcelSheets); +// } +// // if (CollectionUtils.isNotEmpty(needAddEmployeeDeclares)) { // getEmployeeDeclareService(user).saveBatch(needAddEmployeeDeclares); // } @@ -533,16 +560,16 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee // getEmployeeDeclareService(user).updateBatchById(needUpdateEmployeeDeclares); // } // // 发送导入回调信息 -// salaryBatchService.sendImportCallBackInfo(message, successCount, failCount, errorExcelSheets); +// salaryBatchService.sendImportCallBackInfo(message, successCount, errorCount, errorExcelSheets); // } catch (Exception e) { // log.error("人员报送信息导入失败:{}", e.getMessage(), e); -// salaryBatchService.sendImportCallBackInfo(message, SalaryI18nUtil.getI18nLabel(employeeId, 156438, "人员报送信息导入失败:") + e.getMessage()); +// salaryBatchService.sendImportCallBackInfo(message, SalaryI18nUtil.getI18nLabel(156438, "人员报送信息导入失败:") + e.getMessage()); // } // } // // private EmployeeDeclarePO buildEmployeeDeclare(ExtEmployeePO extEmployee, // EmployeeDeclareExcelDTO employeeDeclareExcel, Long taxAgentId, -// String taxCycle, LocalDateTime now, Long employeeId, String tenantKey) { +// String taxCycle, LocalDateTime now, Long String tenantKey) { // EmployeeDeclarePO employeeDeclare = new EmployeeDeclarePO() // .setId(IdGenerator.generate()) // .setTaxAgentId(taxAgentId) @@ -563,49 +590,47 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee // } // return employeeDeclare; // } -// -// private List getImportHeader(Long employeeId, String tenantKey) { -// return Lists.newArrayList( -// SalaryI18nUtil.getI18nLabel(employeeId, 86317, "工号"), -// SalaryI18nUtil.getI18nLabel(employeeId, 85429, "姓名"), -// SalaryI18nUtil.getI18nLabel(employeeId, 105139, "证件类型"), -// SalaryI18nUtil.getI18nLabel(employeeId, 86318, "证件号码"), -// SalaryI18nUtil.getI18nLabel(employeeId, 156394, "人员状态"), -// SalaryI18nUtil.getI18nLabel(employeeId, 156396, "任职受雇从业类型"), -// SalaryI18nUtil.getI18nLabel(employeeId, 187374, "入职年度就业情形"), -// SalaryI18nUtil.getI18nLabel(employeeId, 98621, "手机号码"), -// SalaryI18nUtil.getI18nLabel(employeeId, 156409, "任职受雇从业日期"), -// SalaryI18nUtil.getI18nLabel(employeeId, 95228, "离职日期"), -// SalaryI18nUtil.getI18nLabel(employeeId, 156399, "是否残疾"), -// SalaryI18nUtil.getI18nLabel(employeeId, 156412, "残疾证号"), -// SalaryI18nUtil.getI18nLabel(employeeId, 187385, "是否烈属"), -// SalaryI18nUtil.getI18nLabel(employeeId, 156413, "烈属证号"), -// SalaryI18nUtil.getI18nLabel(employeeId, 156400, "是否孤老"), -// SalaryI18nUtil.getI18nLabel(employeeId, 156402, "是否扣除减除费用")); -// } + + private List getImportHeader() { + List headers = new ArrayList<>(); + + headers.add(SalaryI18nUtil.getI18nLabel(86317, "工号")); + headers.add(SalaryI18nUtil.getI18nLabel(85429, "姓名")); + headers.add(SalaryI18nUtil.getI18nLabel(105139, "证件类型")); + headers.add(SalaryI18nUtil.getI18nLabel(86318, "证件号码")); + headers.add(SalaryI18nUtil.getI18nLabel(156394, "人员状态")); + headers.add(SalaryI18nUtil.getI18nLabel(156396, "任职受雇从业类型")); + headers.add(SalaryI18nUtil.getI18nLabel(187374, "入职年度就业情形")); + headers.add(SalaryI18nUtil.getI18nLabel(98621, "手机号码")); + headers.add(SalaryI18nUtil.getI18nLabel(156409, "任职受雇从业日期")); + headers.add(SalaryI18nUtil.getI18nLabel(95228, "离职日期")); + headers.add(SalaryI18nUtil.getI18nLabel(156399, "是否残疾")); + headers.add(SalaryI18nUtil.getI18nLabel(156412, "残疾证号")); + headers.add(SalaryI18nUtil.getI18nLabel(187385, "是否烈属")); + headers.add(SalaryI18nUtil.getI18nLabel(156413, "烈属证号")); + headers.add(SalaryI18nUtil.getI18nLabel(156400, "是否孤老")); + headers.add(SalaryI18nUtil.getI18nLabel(156402, "是否扣除减除费用")); + + return headers; + + } - -// /** -// * 检查表头 -// * -// * @param message -// * @param headers -// * @return -// */ -// private boolean checkHeader(BatchDocumentMessage message, List headers, List headerList) { -// Long employeeId = message.getUserId(); -// String tenantKey = message.getTenantKey(); -// // 缺少的列 -// List lackHeaders = headerList.stream() -// .filter(header -> !headers.contains(header)) -// .collect(Collectors.toList()); -// if (CollectionUtils.isNotEmpty(lackHeaders)) { -// // 发送导入回调信息 -// String errorMsg = SalaryI18nUtil.getI18nLabel(employeeId, 101850, "缺少如下列,请检查:") + Joiner.on(",").join(lackHeaders); -// salaryBatchService.sendImportCallBackInfo(message, errorMsg); -// return false; -// } -// return true; -// } + /** + * 检查表头 + * + * @param headers + * @return + */ + private String checkHeader(List headers, List headerList) { + // 缺少的列 + List lackHeaders = headerList.stream() + .filter(header -> !headers.contains(header)) + .collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(lackHeaders)) { + // 发送导入回调信息 + return SalaryI18nUtil.getI18nLabel(101850, "缺少如下列,请检查:") + Joiner.on(",").join((Iterable) lackHeaders); + } + return null; + } } diff --git a/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java index 8a7e8a3e3..72597d4f2 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java @@ -138,7 +138,7 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar private ExcelSheetData getExcelSheetData(Class clazz, List dtoList) { // 导出的表头 - List headerList = Lists.newArrayList(); + List headerList = Lists.newArrayList(); List dataIndexList = Lists.newArrayList(); parseHeader(clazz, headerList, dataIndexList); // 导出的数据 @@ -165,14 +165,14 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar * @param dataIndexList * @param */ - private void parseHeader(Class clazz, List headerList, List dataIndexList) { + private void parseHeader(Class clazz, List headerList, List dataIndexList) { Field[] declaredFields = clazz.getDeclaredFields(); for (Field declaredField : declaredFields) { if (!declaredField.isAnnotationPresent(SalaryTableColumn.class)) { continue; } SalaryTableColumn annotation = declaredField.getAnnotation(SalaryTableColumn.class); - headerList.add(SalaryI18nUtil.getI18nLabel((int) annotation.labelId(), annotation.text())); + headerList.add(SalaryI18nUtil.getI18nLabel(annotation.labelId(), annotation.text())); dataIndexList.add(declaredField.getName()); } } diff --git a/src/com/engine/salary/util/excel/ExcelSheetData.java b/src/com/engine/salary/util/excel/ExcelSheetData.java index f4cf615ea..87a827d55 100644 --- a/src/com/engine/salary/util/excel/ExcelSheetData.java +++ b/src/com/engine/salary/util/excel/ExcelSheetData.java @@ -8,7 +8,7 @@ import java.util.List; public class ExcelSheetData { private String sheetName; - private List headers; + private List headers; private List> rows; diff --git a/src/com/engine/salary/util/excel/ExcelUtil.java b/src/com/engine/salary/util/excel/ExcelUtil.java index 5126cfc96..b9a0c5d2c 100644 --- a/src/com/engine/salary/util/excel/ExcelUtil.java +++ b/src/com/engine/salary/util/excel/ExcelUtil.java @@ -274,7 +274,7 @@ public class ExcelUtil { public static XSSFWorkbook genWorkbook(ExcelSheetData excelSheetData) { List> list = new ArrayList<>(); - list.add(Collections.singletonList(excelSheetData.getHeaders())); + list.add(excelSheetData.getHeaders()); list.addAll(excelSheetData.getRows()); return genWorkbookV2(list, excelSheetData.getSheetName()); } diff --git a/src/com/engine/salary/web/EmployeeDeclareController.java b/src/com/engine/salary/web/EmployeeDeclareController.java index 97f338abf..c2c2703e6 100644 --- a/src/com/engine/salary/web/EmployeeDeclareController.java +++ b/src/com/engine/salary/web/EmployeeDeclareController.java @@ -12,7 +12,6 @@ import com.engine.salary.util.page.PageInfo; import com.engine.salary.wrapper.EmployeeDeclareWrapper; import io.swagger.v3.oas.annotations.parameters.RequestBody; import lombok.extern.slf4j.Slf4j; -import lombok.extern.slf4j.Slf4j; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; @@ -272,6 +271,39 @@ public class EmployeeDeclareController { return new ResponseResult(user).run(getEmployeeDeclareWrapper(user)::getCompanyEmployee, param); } + /** + * 人员报送-下载导入模板 + * + * @param queryParam 导出参数 + * @return + */ + @POST + @Path("/exportTemplate") + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Response exportTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareImportParam queryParam) { + + try { + User user = HrmUserVarify.getUser(request, response); + XSSFWorkbook workbook = getEmployeeDeclareWrapper(user).exportTemplate(queryParam); + String fileName = "人员信息采集导入模板-" + LocalDate.now(); + 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) { + log.error("人员报送-人员信息采集导入模板异常", e); + throw e; + } + } + /** * 人员报送-导出全部人员 * @@ -281,11 +313,11 @@ public class EmployeeDeclareController { @POST @Path("/export") @Produces(MediaType.APPLICATION_OCTET_STREAM) - public Response export(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareListQueryParam queryParam) { + public Response export(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareListQueryParam param) { try { User user = HrmUserVarify.getUser(request, response); - XSSFWorkbook workbook = getEmployeeDeclareWrapper(user).export(queryParam); + XSSFWorkbook workbook = getEmployeeDeclareWrapper(user).export(param); String fileName = "人员信息采集-" + LocalDate.now(); try { fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); diff --git a/src/com/engine/salary/web/TaxDeclarationController.java b/src/com/engine/salary/web/TaxDeclarationController.java index 57dba6fb2..f3e0a89e5 100644 --- a/src/com/engine/salary/web/TaxDeclarationController.java +++ b/src/com/engine/salary/web/TaxDeclarationController.java @@ -218,7 +218,7 @@ public class TaxDeclarationController { } /** - * 人员报送-导出全部人员 + * 申报内置算税结果 * * @return */ diff --git a/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java b/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java index 5c8fb6c19..399286e63 100644 --- a/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java +++ b/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java @@ -558,13 +558,23 @@ public class EmployeeDeclareWrapper extends Service { } /** - * 人员报送-导出本月全部的人员 + * 人员报送-下载导入模板 * - * @param queryParam + * @param param * @return */ - public XSSFWorkbook export(EmployeeDeclareListQueryParam queryParam) { - return getEmployeeDeclareExcelService(user).export(queryParam); + public XSSFWorkbook exportTemplate(EmployeeDeclareImportParam param) { + return getEmployeeDeclareExcelService(user).exportTemplate(param); + } + + /** + * 人员报送-导出本月全部的人员 + * + * @param param + * @return + */ + public XSSFWorkbook export(EmployeeDeclareListQueryParam param) { + return getEmployeeDeclareExcelService(user).export(param); } // /** From a5ffe12509e26962e428f236b3220a596c0c1e7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 13 Dec 2023 19:34:10 +0800 Subject: [PATCH 28/92] =?UTF-8?q?=E8=BA=AB=E4=BB=BD=E8=AF=81=E6=9C=80?= =?UTF-8?q?=E5=90=8E=E4=B8=80=E4=BD=8Dx=E8=BD=AC=E5=A4=A7=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bo/EmployeeDeclareRefresh.java | 2 +- .../impl/EmployeeDeclareExcelServiceImpl.java | 40 +++++++++---------- .../impl/EmployeeDeclareServiceImpl.java | 2 +- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRefresh.java b/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRefresh.java index 3ef2357b2..f3223479e 100644 --- a/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRefresh.java +++ b/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRefresh.java @@ -105,7 +105,7 @@ public class EmployeeDeclareRefresh { } EmployeeDeclarePO employeeDeclare = initEmployeeDeclare(dto.getTaxAgentId(), dto.getTaxCycle(), now, employeeId); DataCollectionEmployee simpleUserInfo = simpleUserInfoMap.get(hrmEmployeeComInfo.getEmployeeId()); - String idNum = simpleUserInfo == null ? "" : simpleUserInfo.getIdNo(); + String idNum = simpleUserInfo != null && simpleUserInfo.getIdNo() != null ? simpleUserInfo.getIdNo().toUpperCase() : ""; employeeDeclare.setEmployeeId(hrmEmployeeComInfo.getEmployeeId()); employeeDeclare.setEmployeeType(EmployeeTypeEnum.ORGANIZATION.getValue()); employeeDeclare.setEmployeeName(hrmEmployeeComInfo.getUsername()); diff --git a/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java b/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java index 15afa6d35..783e15511 100644 --- a/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java @@ -63,8 +63,8 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee if (StringUtils.equalsIgnoreCase(importParam.getExportData(), "true")) { employeeDeclares = getEmployeeDeclareService(user).listByParam(importParam); } - String yesI18 = SalaryI18nUtil.getI18nLabel(84967, "是"); - String noI18 = SalaryI18nUtil.getI18nLabel(84968, "否"); + String yesI18 = SalaryI18nUtil.getI18nLabel(111111, "是"); + String noI18 = SalaryI18nUtil.getI18nLabel(111111, "否"); List> rows = Lists.newArrayList(); for (EmployeeDeclarePO employeeDeclare : employeeDeclares) { EmploymentStatusEnum employmentStatusEnum = SalaryEnumUtil.enumMatchByValue(employeeDeclare.getEmploymentStatus(), EmploymentStatusEnum.class); @@ -90,7 +90,7 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee } // 组装excel导出数据 ExcelSheetData excelSheetData = new ExcelSheetData(); - excelSheetData.setSheetName(SalaryI18nUtil.getI18nLabel(156425, "人员信息采集")); + excelSheetData.setSheetName(SalaryI18nUtil.getI18nLabel(111111, "人员信息采集")); excelSheetData.setHeaders(getImportHeader()); excelSheetData.setRows(rows); return ExcelUtil.genWorkbook(excelSheetData); @@ -594,22 +594,22 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee private List getImportHeader() { List headers = new ArrayList<>(); - headers.add(SalaryI18nUtil.getI18nLabel(86317, "工号")); - headers.add(SalaryI18nUtil.getI18nLabel(85429, "姓名")); - headers.add(SalaryI18nUtil.getI18nLabel(105139, "证件类型")); - headers.add(SalaryI18nUtil.getI18nLabel(86318, "证件号码")); - headers.add(SalaryI18nUtil.getI18nLabel(156394, "人员状态")); - headers.add(SalaryI18nUtil.getI18nLabel(156396, "任职受雇从业类型")); - headers.add(SalaryI18nUtil.getI18nLabel(187374, "入职年度就业情形")); - headers.add(SalaryI18nUtil.getI18nLabel(98621, "手机号码")); - headers.add(SalaryI18nUtil.getI18nLabel(156409, "任职受雇从业日期")); - headers.add(SalaryI18nUtil.getI18nLabel(95228, "离职日期")); - headers.add(SalaryI18nUtil.getI18nLabel(156399, "是否残疾")); - headers.add(SalaryI18nUtil.getI18nLabel(156412, "残疾证号")); - headers.add(SalaryI18nUtil.getI18nLabel(187385, "是否烈属")); - headers.add(SalaryI18nUtil.getI18nLabel(156413, "烈属证号")); - headers.add(SalaryI18nUtil.getI18nLabel(156400, "是否孤老")); - headers.add(SalaryI18nUtil.getI18nLabel(156402, "是否扣除减除费用")); + headers.add(SalaryI18nUtil.getI18nLabel(111111, "工号")); + headers.add(SalaryI18nUtil.getI18nLabel(111111, "姓名")); + headers.add(SalaryI18nUtil.getI18nLabel(111111, "证件类型")); + headers.add(SalaryI18nUtil.getI18nLabel(111111, "证件号码")); + headers.add(SalaryI18nUtil.getI18nLabel(111111, "人员状态")); + headers.add(SalaryI18nUtil.getI18nLabel(111111, "任职受雇从业类型")); + headers.add(SalaryI18nUtil.getI18nLabel(111111, "入职年度就业情形")); + headers.add(SalaryI18nUtil.getI18nLabel(111111, "手机号码")); + headers.add(SalaryI18nUtil.getI18nLabel(111111, "任职受雇从业日期")); + headers.add(SalaryI18nUtil.getI18nLabel(111111, "离职日期")); + headers.add(SalaryI18nUtil.getI18nLabel(111111, "是否残疾")); + headers.add(SalaryI18nUtil.getI18nLabel(111111, "残疾证号")); + headers.add(SalaryI18nUtil.getI18nLabel(111111, "是否烈属")); + headers.add(SalaryI18nUtil.getI18nLabel(111111, "烈属证号")); + headers.add(SalaryI18nUtil.getI18nLabel(111111, "是否孤老")); + headers.add(SalaryI18nUtil.getI18nLabel(111111, "是否扣除减除费用")); return headers; @@ -629,7 +629,7 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee .collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(lackHeaders)) { // 发送导入回调信息 - return SalaryI18nUtil.getI18nLabel(101850, "缺少如下列,请检查:") + Joiner.on(",").join((Iterable) lackHeaders); + return SalaryI18nUtil.getI18nLabel(111111, "缺少如下列,请检查:") + Joiner.on(",").join((Iterable) lackHeaders); } return null; } diff --git a/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java b/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java index 32bf9a06b..5559e5214 100644 --- a/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java +++ b/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java @@ -193,7 +193,7 @@ public class EmployeeDeclareServiceImpl extends Service implements EmployeeDecla employeeDeclare.setEmployeeName(saveParam.getEmployeeName()); employeeDeclare.setJobNum(saveParam.getJobNum()); employeeDeclare.setCardType(CardTypeEnum.RESIDENT_IDENTITY_CARDS.getValue()); - employeeDeclare.setCardNum(saveParam.getCardNum()); + employeeDeclare.setCardNum(saveParam.getCardNum().toUpperCase()); employeeDeclare.setGender(SalaryCardUtil.judgeGender(saveParam.getCardNum()).getValue()); employeeDeclare.setBirthday(SalaryDateUtil.localDateToDate(SalaryCardUtil.judgeBirthday(saveParam.getCardNum()))); employeeDeclare.setEmploymentStatus(saveParam.getEmploymentStatus().getValue()); From 0a54fe5f80b2abeb58a3e78f31864979161f402c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 14 Dec 2023 10:35:10 +0800 Subject: [PATCH 29/92] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=94=B3=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TaxDeclareRecordDetailSaveParam.java | 64 +++++++++++++++++++ .../taxdeclaration/po/TaxReportColumnPO.java | 28 ++++---- .../impl/TaxDeclareRecordServiceImpl.java | 10 ++- .../salary/web/TaxDeclarationController.java | 31 ++++++++- .../wrapper/TaxDeclareRecordWrapper.java | 40 ++++++++++-- 5 files changed, 151 insertions(+), 22 deletions(-) create mode 100644 src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordDetailSaveParam.java diff --git a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordDetailSaveParam.java b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordDetailSaveParam.java new file mode 100644 index 000000000..7744819ba --- /dev/null +++ b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordDetailSaveParam.java @@ -0,0 +1,64 @@ +package com.engine.salary.entity.taxdeclaration.param; + +import com.engine.salary.annotation.SalaryTableColumn; +import com.engine.salary.annotation.TableTitle; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.util.Map; + +/** + * 个税申报明细保存 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +public class TaxDeclareRecordDetailSaveParam { + + //主键id + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + //个税申报记录id") + private Long taxDeclareRecordId; + + //个税申报表id") + private Long taxDeclarationId; + + //人员id + @JsonSerialize(using = ToStringSerializer.class) + private Long employeeId; + private Integer employeeType; + + @SalaryTableColumn( + text = "工号", width = "10%", column = "jobNum" + ) + @TableTitle(title ="工号",dataIndex = "jobNum",key = "jobNum") + private String jobNum; + + @SalaryTableColumn( + text = "姓名", width = "10%", column = "username" + ) + @TableTitle(title ="姓名",dataIndex = "username",key = "username") + private String username; + + @SalaryTableColumn( + text = "证件类型", width = "10%", column = "cardType" + ) + @TableTitle(title ="证件类型",dataIndex = "cardType",key = "cardType") + private String cardType; + + @SalaryTableColumn( + text = "证件号码", width = "10%", column = "cardNum" + ) + @TableTitle(title ="证件号码",dataIndex = "cardNum",key = "cardNum") + private String cardNum; + + private Map taxReportColumnValues; + + +} diff --git a/src/com/engine/salary/entity/taxdeclaration/po/TaxReportColumnPO.java b/src/com/engine/salary/entity/taxdeclaration/po/TaxReportColumnPO.java index 5e824dc48..a6591e714 100644 --- a/src/com/engine/salary/entity/taxdeclaration/po/TaxReportColumnPO.java +++ b/src/com/engine/salary/entity/taxdeclaration/po/TaxReportColumnPO.java @@ -20,34 +20,34 @@ import java.util.Date; @Builder @AllArgsConstructor @NoArgsConstructor -//hrsa_tax_report_column") +//hrsa_tax_report_column public class TaxReportColumnPO { - //name = "主键id") + //name = 主键id private Long id; - //name = "报表类型") + //name = 报表类型 private String taxReportType; - //name = "所得项目") + //name = 所得项目 private String incomeCategory; - //name = "申报表的列名") + //name = 申报表的列名 private String reportColumnName; - //name = "申报表的列名多语言标签") + //name = 申报表的列名多语言标签 private Integer reportColumnLabel; - //name = "申报表的列索引") + //name = 申报表的列索引 private String reportColumnDataIndex; - //name = "数值类型") + //name = 数值类型 private String dataType; - //name = "个税对接时的参数key") + //name = 个税对接时的参数key private String requestParamKey; - //name = "租户key", ignore = true) + //name = 租户key private String tenantKey; - //name = "创建人id", ignore = true) + //name = 创建人id private Long creator; - //name = "是否删除", ignore = true) + //name = 是否删除 private Integer deleteType; - //name = "创建时间", ignore = true) + //name = 创建时间 private Date createTime; - //name = "更新时间", ignore = true) + //name = 更新时间 private Date updateTime; Collection ids; diff --git a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java index ac6829f00..23606e23e 100644 --- a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java @@ -414,7 +414,15 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe // 薪资核算结果 Set salaryAcctEmployeeIdSet = SalaryEntityUtil.properties(incomeCategoryEntry.getValue(), SalaryAcctEmployeePO::getId); List> resultValues = salaryAcctEmployeeIdSet.stream().map(salaryAcctResultValueMap::get).filter(Objects::nonNull).collect(Collectors.toList()); - TaxDeclareContext taxDeclareContext = new TaxDeclareContext().setSalaryAcctRecordMap(salaryAcctRecordMap).setSalaryAcctEmployees(incomeCategoryEntry.getValue()).setSalaryAcctResultValues(salaryAcctResultValues).setTaxDeclaration(taxDeclaration).setSalarySobTaxReportRuleMap(salarySobTaxReportRuleMap).setSalarySobAddUpRuleMap(salarySobAddUpRuleMap).setTaxReportColumns(taxReportColumnMap.get(incomeCategoryEntry.getKey())).setSalaryItems(salaryItems); + TaxDeclareContext taxDeclareContext = new TaxDeclareContext() + .setSalaryAcctRecordMap(salaryAcctRecordMap) + .setSalaryAcctEmployees(incomeCategoryEntry.getValue()) + .setSalaryAcctResultValues(salaryAcctResultValues) + .setTaxDeclaration(taxDeclaration) + .setSalarySobTaxReportRuleMap(salarySobTaxReportRuleMap) + .setSalarySobAddUpRuleMap(salarySobAddUpRuleMap) + .setTaxReportColumns(taxReportColumnMap.get(incomeCategoryEntry.getKey())) + .setSalaryItems(salaryItems); TaxDeclarationStrategy taxDeclarationStrategy = new TaxDeclarationCommon(); TaxDeclarationGenerateResult generateResult = taxDeclarationStrategy.generate(taxDeclareContext, (long) user.getUID()); taxDeclarationValues.addAll(generateResult.getTaxDeclarationValues()); diff --git a/src/com/engine/salary/web/TaxDeclarationController.java b/src/com/engine/salary/web/TaxDeclarationController.java index f3e0a89e5..64fba69e2 100644 --- a/src/com/engine/salary/web/TaxDeclarationController.java +++ b/src/com/engine/salary/web/TaxDeclarationController.java @@ -229,7 +229,7 @@ public class TaxDeclarationController { try { User user = HrmUserVarify.getUser(request, response); - XSSFWorkbook workbook = getTaxDeclareRecordWrapper(user).exportGetDeclareTaxResultFeedback(id ,requestId); + XSSFWorkbook workbook = getTaxDeclareRecordWrapper(user).exportGetDeclareTaxResultFeedback(id, requestId); String fileName = "申报内置算税结果-" + LocalDate.now(); try { fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); @@ -334,6 +334,35 @@ public class TaxDeclarationController { return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::refreshData, taxDeclareRecordParam.getTaxDeclareRecordId()); } + /** + * 新增表单 + * + * @param incomeCategory + * @return + */ + @GET + @Path("/getAddForm") + @Produces(MediaType.APPLICATION_JSON) + public String getAddForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "IncomeCategoryEnum") IncomeCategoryEnum incomeCategory) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::getAddForm, incomeCategory); + } + + /** + * 新增 + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/add") + @Produces(MediaType.APPLICATION_JSON) + public String add(@Context HttpServletRequest request, @Context HttpServletResponse response,TaxDeclareRecordDetailSaveParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::add, param); + } + /** * 个税申报表详情列表 * diff --git a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java index edd3900df..96c8e6ee6 100644 --- a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java +++ b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java @@ -3,13 +3,11 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.cache.SalaryCacheKey; +import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.entity.taxdeclaration.dto.*; -import com.engine.salary.entity.taxdeclaration.param.AbnormalEmployeeListQueryParam; -import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationListQueryParam; -import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationSaveParam; -import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationValueListQueryParam; +import com.engine.salary.entity.taxdeclaration.param.*; import com.engine.salary.entity.taxdeclaration.po.*; import com.engine.salary.enums.salarysob.IncomeCategoryEnum; import com.engine.salary.enums.taxdeclaration.TaxDeclareStatusEnum; @@ -89,6 +87,11 @@ public class TaxDeclareRecordWrapper extends Service { return ServiceUtil.getService(TaxDeclareFailServiceImpl.class, user); } + private TaxReportColumnService getTaxReportColumnService(User user) { + return ServiceUtil.getService(TaxReportColumnServiceImpl.class, user); + } + + /** * 个税申报记录列表 * @@ -463,11 +466,11 @@ public class TaxDeclareRecordWrapper extends Service { public Object getDeclareTaxResultFeedback(Long id) { - return getTaxDeclareRecordService(user).getDeclareTaxResultFeedback(id); + return getTaxDeclareRecordService(user).getDeclareTaxResultFeedback(id); } - public XSSFWorkbook exportGetDeclareTaxResultFeedback(Long id,String requestId) { + public XSSFWorkbook exportGetDeclareTaxResultFeedback(Long id, String requestId) { return getTaxDeclareRecordService(user).exportGetDeclareTaxResultFeedback(id, requestId); } @@ -660,4 +663,29 @@ public class TaxDeclareRecordWrapper extends Service { return getTaxDeclarationExcelService(user).exportEmployee4Fail(queryParam); } + public List getAddForm(IncomeCategoryEnum incomeCategoryEnum) { + // 查询个税申报表列 + List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum); + return taxReportColumns; + } + + public void add(TaxDeclareRecordDetailSaveParam param) { + + TaxDeclarationValuePO build = TaxDeclarationValuePO.builder() + .id(IdGenerator.generate()) + .taxDeclarationId(param.getTaxDeclarationId()) + .taxDeclareRecordId(param.getTaxDeclareRecordId()) + .employeeId(param.getEmployeeId()) + .employeeType(param.getEmployeeType()) + .resultValue(param.getTaxReportColumnValues()) + .createTime(new Date()) + .updateTime(new Date()) + .creator((long) user.getUID()) + .deleteType(0) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + List objects = new ArrayList<>(); + objects.add(build); + getTaxDeclarationValueService(user).batchSave(objects); + } } From 96d37b1b68acee1f29a88860cb4085622d391177 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 14 Dec 2023 10:39:49 +0800 Subject: [PATCH 30/92] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=94=B3=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8=E6=98=8E=E7=BB=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SalaryStatisticsReportServiceImpl.java | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java index c71f5193c..4bb650f92 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java @@ -352,7 +352,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary po.setCreator(uid); po.setCreateTime(now); po.setUpdateTime(now); - po.setReportName(po.getReportName()+"_copy"); + po.setReportName(po.getReportName() + "_copy"); getSalaryStatisticsReportMapper().insertIgnoreNull(po); @@ -414,11 +414,21 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary param.setSalaryStartMonth(SalaryDateUtil.getFormatYearMonth(reportPO.getSalaryStartMonth())); param.setSalaryEndMonth(SalaryDateUtil.getFormatYearMonth(reportPO.getSalaryEndMonth())); String key = "id"; - param.setTaxAgent(((List) JSON.parseArray(reportPO.getTaxAgentSetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList())); - param.setSubCompany(((List) JSON.parseArray(reportPO.getSubCompanySetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList())); - param.setDepart(((List) JSON.parseArray(reportPO.getDepartSetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList())); - param.setEmployee(((List) JSON.parseArray(reportPO.getEmployeeSetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList())); - param.setHiredate(JSON.parseArray(reportPO.getHiredateSetting(), Date.class)); + if (reportPO.getTaxAgentSetting() != null) { + param.setTaxAgent(((List) JSON.parseArray(reportPO.getTaxAgentSetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList())); + } + if (reportPO.getSubCompanySetting() != null) { + param.setSubCompany(((List) JSON.parseArray(reportPO.getSubCompanySetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList())); + } + if (reportPO.getDepartSetting() != null) { + param.setDepart(((List) JSON.parseArray(reportPO.getDepartSetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList())); + } + if (reportPO.getEmployeeSetting() != null) { + param.setEmployee(((List) JSON.parseArray(reportPO.getEmployeeSetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList())); + } + if (reportPO.getHiredateSetting() != null) { + param.setHiredate(JSON.parseArray(reportPO.getHiredateSetting(), Date.class)); + } SalaryStatisticsReportDataQueryParam queryParam = new SalaryStatisticsReportDataQueryParam(); com.mzlion.core.utils.BeanUtils.copyProperties(param, queryParam); // 获取本期报表分权后的核算人员 @@ -1062,7 +1072,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary List fieldSettings = Optional.ofNullable(Optional.ofNullable(employeeInfoExpandDTO).orElse(new EmployeeInfoExpandDTO()).getFieldSettings()).orElse(new ArrayList<>()); Map> expandEmployeeMap = getSalaryEmployeeService(user).expandEmployeeMap(empIds, employeeInfoExpandDTO); - log.info("扩展属性"+expandEmployeeMap); + log.info("扩展属性" + expandEmployeeMap); // List extEmployees = extEmployeeService.listByIdsWithDeleted(accountDetailPOList.stream().filter(e -> EmployeeTypeEnum.EXT_EMPLOYEE.getValue().equals(e.getEmployeeType())).map(SalaryAcctEmployeePO::getEmployeeId).distinct().collect(Collectors.toList()), data.getTenantKey()); // Map employeeExtByIdMap = SalaryEntityUtil.convert2Map(extEmployees, ExtEmployeePO::getId, ExtEmployeePO::getUsername); @@ -1075,7 +1085,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary temp.put(DM, employeeByIdMap.get(k).getUsername()); fieldSettings.forEach( fieldSetting -> { - temp.put(fieldSetting.getField(), expandEmployeeMap.getOrDefault(k,new HashMap<>()).get(fieldSetting.getField())); + temp.put(fieldSetting.getField(), expandEmployeeMap.getOrDefault(k, new HashMap<>()).get(fieldSetting.getField())); } ); temp.putAll(SalaryStatisticsReportBO.calculateItem(v, lastEmployeeListMap.get(k), sameEmployeeListMap.get(k), salaryAcctResultValueMap, data.getSalaryStatisticsItemList())); From 2685c724e4408337958de4dc7b64a58aaf492798 Mon Sep 17 00:00:00 2001 From: sy Date: Thu, 14 Dec 2023 13:59:39 +0800 Subject: [PATCH 31/92] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E7=BC=96=E8=BE=91=E9=A1=B5=E6=96=B9=E6=A1=88?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E4=BF=A1=E6=81=AF=E8=BF=94=E5=9B=9E=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index 32186cbbb..f2f3feee7 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -317,6 +317,12 @@ public class SIArchivesBiz { List inputItems = buildPaymentBase(user, schemeId, welfareType); addGroups.add(new SearchConditionGroup("其它福利缴纳基数", true, inputItems)); dataMap.put("items", addGroups); + if (welBaseDiffSign) { + List addComGroups = new ArrayList<>(); + List inputComItems = buildPaymentComBase(user, schemeId, welfareType); + addComGroups.add(new SearchConditionGroup("其它福利缴纳基数", true, inputComItems)); + dataMap.put("comItems", addComGroups); + } return dataMap; } @@ -344,6 +350,12 @@ public class SIArchivesBiz { List inputItems = buildPaymentBase(user, schemeId, welfareType); addGroups.add(new SearchConditionGroup("公积金缴纳基数", true, inputItems)); dataMap.put("items", addGroups); + if (welBaseDiffSign) { + List addComGroups = new ArrayList<>(); + List inputComItems = buildPaymentComBase(user, schemeId, welfareType); + addComGroups.add(new SearchConditionGroup("公积金缴纳基数", true, inputComItems)); + dataMap.put("comItems", addComGroups); + } return dataMap; } From e97a35f158c77fb089a9d770cc54e4076714ea90 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 14 Dec 2023 15:57:55 +0800 Subject: [PATCH 32/92] =?UTF-8?q?=E6=96=B0=E5=BB=BA=E8=A1=A5=E5=8F=91?= =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E6=A8=A1=E6=9D=BF=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E5=B7=B2=E5=8F=91=E8=A1=A5=E5=8F=91=E9=A1=B9=E7=9B=AEfix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/com/engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java b/src/com/engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java index 893b0d55e..cd7af96ba 100644 --- a/src/com/engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java +++ b/src/com/engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java @@ -167,6 +167,8 @@ public class SalaryTemplateBO { .id(String.valueOf(e.getSalaryItemId())) .salaryItemId(String.valueOf(e.getSalaryItemId())) .name(e.getName()) + .salaryItemShowName(e.getName()) + .originName(e.getName()) .sortedIndex(e.getSortedIndex()) .build() ); From d9c952e80c66280f502b4033ec391e862a4329bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 14 Dec 2023 17:55:48 +0800 Subject: [PATCH 33/92] =?UTF-8?q?=E7=94=B3=E6=8A=A5=E8=A1=A8=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E6=96=B0=E5=A2=9E=E3=80=81=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/EmployeeDeclareListQueryParam.java | 1 + .../bo/TaxDeclarationDetailBO.java | 26 ++++- .../dto/TaxDeclareRecordDetailFormDTO.java | 76 +++++++++++++++ .../TaxDeclareRecordDetailFormParam.java | 21 ++++ .../TaxDeclareRecordDetailSaveParam.java | 32 +------ .../employeedeclare/EmployeeDeclareMapper.xml | 3 + .../service/TaxDeclarationValueService.java | 8 ++ .../impl/TaxDeclarationValueServiceImpl.java | 57 +++++++++++ .../salary/web/TaxDeclarationController.java | 61 ++++++++---- .../wrapper/TaxDeclareRecordWrapper.java | 95 +++++++++++++++---- 10 files changed, 309 insertions(+), 71 deletions(-) create mode 100644 src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclareRecordDetailFormDTO.java create mode 100644 src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordDetailFormParam.java diff --git a/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareListQueryParam.java b/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareListQueryParam.java index e569ecbf1..27222c08f 100644 --- a/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareListQueryParam.java +++ b/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareListQueryParam.java @@ -48,6 +48,7 @@ public class EmployeeDeclareListQueryParam extends BaseQueryParam { // 员工姓名/编号 private String keyword; + private Long employeeId; // 部门 private Collection departmentIds; diff --git a/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationDetailBO.java b/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationDetailBO.java index 81010fb7b..5b8454a82 100644 --- a/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationDetailBO.java +++ b/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationDetailBO.java @@ -2,11 +2,9 @@ package com.engine.salary.entity.taxdeclaration.bo; import com.engine.salary.constant.TaxDeclarationDataIndexConstant; import com.engine.salary.entity.datacollection.DataCollectionEmployee; -import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationAnnualListDTO; -import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationEmployeeDTO; -import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationLaborListDTO; -import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationWageListDTO; +import com.engine.salary.entity.taxdeclaration.dto.*; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationDetailPO; +import com.engine.salary.entity.taxdeclaration.po.TaxReportColumnPO; import com.engine.salary.enums.salaryaccounting.EmployeeTypeEnum; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; @@ -15,6 +13,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import java.util.*; +import java.util.stream.Collectors; /** * 个税申报表详情 @@ -177,4 +176,23 @@ public class TaxDeclarationDetailBO { } return taxDeclarationLaborListDTOS; } + + + public static List convert2ListTaxReportColumn(List pos) { + if (CollectionUtils.isEmpty(pos)) { + return Collections.emptyList(); + } + + List collect = pos.stream().map(po -> { + TaxDeclareRecordDetailFormDTO.TaxReportColumn taxReportColumn = new TaxDeclareRecordDetailFormDTO.TaxReportColumn(); + taxReportColumn.setReportColumnName(po.getReportColumnName()); + taxReportColumn.setReportColumnDataIndex(po.getReportColumnDataIndex()); + taxReportColumn.setTaxReportType(po.getTaxReportType()); + taxReportColumn.setIncomeCategory(po.getIncomeCategory()); + taxReportColumn.setDataType(po.getDataType()); + return taxReportColumn; + }).collect(Collectors.toList()); + + return collect; + } } diff --git a/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclareRecordDetailFormDTO.java b/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclareRecordDetailFormDTO.java new file mode 100644 index 000000000..a94811684 --- /dev/null +++ b/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclareRecordDetailFormDTO.java @@ -0,0 +1,76 @@ +package com.engine.salary.entity.taxdeclaration.dto; + +import com.engine.salary.annotation.TableTitle; +import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; +import java.util.Map; + +/** + * 个税申报明细新增表单 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaxDeclareRecordDetailFormDTO { + + /** + * 个税申报表id + */ + private Long taxDeclarationId; + + @TableTitle(title = "工号", dataIndex = "jobNum", key = "jobNum") + private String jobNum; + + @TableTitle(title = "姓名", dataIndex = "username", key = "username") + private String username; + + @TableTitle(title = "证件类型", dataIndex = "cardType", key = "cardType") + private String cardType; + + @TableTitle(title = "证件号码", dataIndex = "cardNum", key = "cardNum") + private String cardNum; + + /** + * 收入所得项目 + */ + private String incomeCategory; + + /** + * 人员报送下拉选择 + */ + private List employeeDeclares; + + /** + * 当前申报类型可编辑字段 + */ + private List taxReportColumns; + private Map resultValue; + + + @Data + @NoArgsConstructor + @AllArgsConstructor + public static class TaxReportColumn { + //报表类型 + private String taxReportType; + //所得项目 + private String incomeCategory; + //申报表列索引 + private String reportColumnDataIndex ; + //申报表的列名 + private String reportColumnName; + //数值类型 + private String dataType; + } +} diff --git a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordDetailFormParam.java b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordDetailFormParam.java new file mode 100644 index 000000000..3386119bf --- /dev/null +++ b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordDetailFormParam.java @@ -0,0 +1,21 @@ +package com.engine.salary.entity.taxdeclaration.param; + +import lombok.Data; + +/** + * 个税申报明细保存 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +public class TaxDeclareRecordDetailFormParam { + + /** + * 个税申报表id + */ + private Long taxDeclarationId; + +} diff --git a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordDetailSaveParam.java b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordDetailSaveParam.java index 7744819ba..0f60decd9 100644 --- a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordDetailSaveParam.java +++ b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordDetailSaveParam.java @@ -1,7 +1,5 @@ package com.engine.salary.entity.taxdeclaration.param; -import com.engine.salary.annotation.SalaryTableColumn; -import com.engine.salary.annotation.TableTitle; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; @@ -23,10 +21,7 @@ public class TaxDeclareRecordDetailSaveParam { @JsonSerialize(using = ToStringSerializer.class) private Long id; - //个税申报记录id") - private Long taxDeclareRecordId; - - //个税申报表id") + //个税申报表id private Long taxDeclarationId; //人员id @@ -34,31 +29,6 @@ public class TaxDeclareRecordDetailSaveParam { private Long employeeId; private Integer employeeType; - @SalaryTableColumn( - text = "工号", width = "10%", column = "jobNum" - ) - @TableTitle(title ="工号",dataIndex = "jobNum",key = "jobNum") - private String jobNum; - - @SalaryTableColumn( - text = "姓名", width = "10%", column = "username" - ) - @TableTitle(title ="姓名",dataIndex = "username",key = "username") - private String username; - - @SalaryTableColumn( - text = "证件类型", width = "10%", column = "cardType" - ) - @TableTitle(title ="证件类型",dataIndex = "cardType",key = "cardType") - private String cardType; - - @SalaryTableColumn( - text = "证件号码", width = "10%", column = "cardNum" - ) - @TableTitle(title ="证件号码",dataIndex = "cardNum",key = "cardNum") - private String cardNum; - private Map taxReportColumnValues; - } diff --git a/src/com/engine/salary/mapper/employeedeclare/EmployeeDeclareMapper.xml b/src/com/engine/salary/mapper/employeedeclare/EmployeeDeclareMapper.xml index 890181735..33e2deec0 100644 --- a/src/com/engine/salary/mapper/employeedeclare/EmployeeDeclareMapper.xml +++ b/src/com/engine/salary/mapper/employeedeclare/EmployeeDeclareMapper.xml @@ -838,6 +838,9 @@ AND declare_status = #{param.declareStatus.value} + + AND employee_id=#{param.employeeId} + AND employment_status = #{param.employmentStatus.value} diff --git a/src/com/engine/salary/service/TaxDeclarationValueService.java b/src/com/engine/salary/service/TaxDeclarationValueService.java index 8ec154857..ab129909c 100644 --- a/src/com/engine/salary/service/TaxDeclarationValueService.java +++ b/src/com/engine/salary/service/TaxDeclarationValueService.java @@ -2,6 +2,7 @@ package com.engine.salary.service; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationValueListDTO; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationValueListQueryParam; +import com.engine.salary.entity.taxdeclaration.param.TaxDeclareRecordDetailSaveParam; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationPO; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationValuePO; import com.engine.salary.util.page.PageInfo; @@ -58,10 +59,17 @@ public interface TaxDeclarationValueService { */ void batchSave(List taxDeclarationValues); + + void save(TaxDeclareRecordDetailSaveParam param); + void edit(TaxDeclareRecordDetailSaveParam param); + TaxDeclarationValuePO getById(Long id); + /** * 删除个税申报表明细 * * @param taxDeclareRecordIds */ void deleteByTaxDeclareRecordIds(Collection taxDeclareRecordIds); + + } diff --git a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java index f7aaf17c9..e45ba18f2 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java @@ -3,6 +3,7 @@ package com.engine.salary.service.impl; import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; @@ -10,11 +11,13 @@ import com.engine.salary.entity.extemp.po.ExtEmpPO; import com.engine.salary.entity.taxdeclaration.bo.TaxDeclarationValueList; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationValueListDTO; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationValueListQueryParam; +import com.engine.salary.entity.taxdeclaration.param.TaxDeclareRecordDetailSaveParam; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationPO; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationValuePO; import com.engine.salary.entity.taxdeclaration.po.TaxReportColumnPO; import com.engine.salary.enums.salaryaccounting.EmployeeTypeEnum; import com.engine.salary.enums.salarysob.IncomeCategoryEnum; +import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.taxdeclaration.TaxDeclarationValueMapper; import com.engine.salary.service.*; import com.engine.salary.util.JsonUtil; @@ -24,6 +27,7 @@ import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; +import dm.jdbc.util.IdGenerator; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import weaver.hrm.User; @@ -63,6 +67,10 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar return ServiceUtil.getService(TaxReportColumnServiceImpl.class, user); } + private TaxDeclarationService getTaxDeclarationService(User user) { + return ServiceUtil.getService(TaxDeclarationServiceImpl.class, user); + } + @Override public PageInfo listPageByTaxDeclarationIds(TaxDeclarationValueListQueryParam queryParam, Collection taxDeclarationIds) { List taxDeclarationValuePOS = getTaxDeclarationValueMapper().listSome(TaxDeclarationValuePO.builder().taxDeclarationIds(taxDeclarationIds).build()); @@ -131,6 +139,55 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar } } + @Override + public void save(TaxDeclareRecordDetailSaveParam param) { + TaxDeclarationPO taxDeclaration = getTaxDeclarationService(user).getById(param.getTaxDeclarationId()); + if(taxDeclaration==null){ + throw new SalaryRunTimeException("个税申报表不存在!"); + } + + TaxDeclarationValuePO po = TaxDeclarationValuePO.builder() + .id(IdGenerator.generate()) + .taxDeclarationId(param.getTaxDeclarationId()) + .taxDeclareRecordId(taxDeclaration.getTaxDeclareRecordId()) + .employeeId(param.getEmployeeId()) + .employeeType(param.getEmployeeType()) + .resultValue(param.getTaxReportColumnValues()) + .resultValueJson(JsonUtil.toJsonString(param.getTaxReportColumnValues())) + .createTime(new Date()) + .updateTime(new Date()) + .creator((long) user.getUID()) + .deleteType(0) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + encryptUtil.encrypt(po, TaxDeclarationValuePO.class); + + getTaxDeclarationValueMapper().insertIgnoreNull(po); + + } + + @Override + public void edit(TaxDeclareRecordDetailSaveParam param) { + TaxDeclarationValuePO po = getById(param.getId()); + po.setResultValue(param.getTaxReportColumnValues()); + po.setResultValueJson(JsonUtil.toJsonString(param.getTaxReportColumnValues())); + po.setUpdateTime(new Date()); + encryptUtil.encrypt(po, TaxDeclarationValuePO.class); + getTaxDeclarationValueMapper().updateIgnoreNull(po); + } + + @Override + public TaxDeclarationValuePO getById(Long id) { + TaxDeclarationValuePO po = getTaxDeclarationValueMapper().getById(id); + if(po==null){ + throw new SalaryRunTimeException("个税申报明细不存在!"); + } + encryptUtil.decrypt(po,TaxDeclarationValuePO.class); + po.setResultValue(JsonUtil.parseMap(po.getResultValueJson(), String.class)); + + return po; + } + @Override public void deleteByTaxDeclareRecordIds(Collection taxDeclareRecordIds) { if (CollectionUtils.isEmpty(taxDeclareRecordIds)) { diff --git a/src/com/engine/salary/web/TaxDeclarationController.java b/src/com/engine/salary/web/TaxDeclarationController.java index 64fba69e2..0d6ad1e9e 100644 --- a/src/com/engine/salary/web/TaxDeclarationController.java +++ b/src/com/engine/salary/web/TaxDeclarationController.java @@ -337,19 +337,20 @@ public class TaxDeclarationController { /** * 新增表单 * - * @param incomeCategory + * @param param * @return */ - @GET + @POST @Path("/getAddForm") @Produces(MediaType.APPLICATION_JSON) - public String getAddForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "IncomeCategoryEnum") IncomeCategoryEnum incomeCategory) { + public String getAddForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordDetailFormParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::getAddForm, incomeCategory); + return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::getAddForm, param); } /** * 新增 + * * @param request * @param response * @param param @@ -358,11 +359,45 @@ public class TaxDeclarationController { @POST @Path("/add") @Produces(MediaType.APPLICATION_JSON) - public String add(@Context HttpServletRequest request, @Context HttpServletResponse response,TaxDeclareRecordDetailSaveParam param) { + public String add(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordDetailSaveParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::add, param); } + + /** + * 编辑 + * + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/edit") + @Produces(MediaType.APPLICATION_JSON) + public String edit(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordDetailSaveParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::edit, param); + } + + /** + * 获取详细详细 + * + * @param request + * @param response + * @param id + * @return + */ + @GET + @Path("/detailInfo") + @Produces(MediaType.APPLICATION_JSON) + public String edit(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::detailInfo, id); + } + + /** * 个税申报表详情列表 * @@ -407,9 +442,7 @@ public class TaxDeclarationController { }; response.setContentType("application/octet-stream"); - return Response.ok(output) - .header("Content-disposition", "attachment;filename=" + fileName) - .header("Cache-Control", "no-cache").build(); + return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); } catch (Exception e) { log.error("个税申报表明细导出异常", e); throw e; @@ -544,9 +577,7 @@ public class TaxDeclarationController { }; response.setContentType("application/octet-stream"); - return Response.ok(output) - .header("Content-disposition", "attachment;filename=" + fileName) - .header("Cache-Control", "no-cache").build(); + return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); } catch (Exception e) { log.error("未报送的人员导出异常", e); throw e; @@ -581,9 +612,7 @@ public class TaxDeclarationController { }; response.setContentType("application/octet-stream"); - return Response.ok(output) - .header("Content-disposition", "attachment;filename=" + fileName) - .header("Cache-Control", "no-cache").build(); + return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); } catch (Exception e) { log.error("缺少申报数据的人员导出异常", e); throw e; @@ -617,9 +646,7 @@ public class TaxDeclarationController { }; response.setContentType("application/octet-stream"); - return Response.ok(output) - .header("Content-disposition", "attachment;filename=" + fileName) - .header("Cache-Control", "no-cache").build(); + return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); } catch (Exception e) { log.error("申报失败人员导出异常", e); throw e; diff --git a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java index 96c8e6ee6..17b58d8e1 100644 --- a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java +++ b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java @@ -3,12 +3,17 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.cache.SalaryCacheKey; -import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.employeedeclare.param.EmployeeDeclareListQueryParam; +import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.entity.taxdeclaration.bo.TaxDeclarationDetailBO; import com.engine.salary.entity.taxdeclaration.dto.*; import com.engine.salary.entity.taxdeclaration.param.*; import com.engine.salary.entity.taxdeclaration.po.*; +import com.engine.salary.enums.employeedeclare.CardTypeEnum; +import com.engine.salary.enums.employeedeclare.DeclareStatusEnum; +import com.engine.salary.enums.employeedeclare.EmploymentStatusEnum; import com.engine.salary.enums.salarysob.IncomeCategoryEnum; import com.engine.salary.enums.taxdeclaration.TaxDeclareStatusEnum; import com.engine.salary.enums.taxdeclaration.TaxDeclareTypeEnum; @@ -91,6 +96,10 @@ public class TaxDeclareRecordWrapper extends Service { return ServiceUtil.getService(TaxReportColumnServiceImpl.class, user); } + private EmployeeDeclareService getEmployeeDeclareService(User user) { + return ServiceUtil.getService(EmployeeDeclareServiceImpl.class, user); + } + /** * 个税申报记录列表 @@ -663,29 +672,77 @@ public class TaxDeclareRecordWrapper extends Service { return getTaxDeclarationExcelService(user).exportEmployee4Fail(queryParam); } - public List getAddForm(IncomeCategoryEnum incomeCategoryEnum) { + public TaxDeclareRecordDetailFormDTO getAddForm(TaxDeclareRecordDetailFormParam param) { + TaxDeclarationPO taxDeclaration = getTaxDeclarationService(user).getById(param.getTaxDeclarationId()); // 查询个税申报表列 - List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum); - return taxReportColumns; + List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(IncomeCategoryEnum.parseByValue(taxDeclaration.getIncomeCategory())); + //当前税款所属期报送成功且状态正常的人员 + List employeeDeclarePOS = getEmployeeDeclareService(user).listByParam( + EmployeeDeclareListQueryParam + .builder() + .taxCycle(taxDeclaration.getTaxCycle()) + .taxAgentId(taxDeclaration.getTaxAgentId()) + .declareStatus(DeclareStatusEnum.DECLARE_SUCCESS) + .employmentStatus(EmploymentStatusEnum.NORMAL) + .build() + ); + + //过滤申报表中已存在的人员 + List taxDeclarationValuePOS = getTaxDeclarationValueService(user).listByTaxDeclarationIds(Collections.singletonList(param.getTaxDeclarationId())); + Set empIds = SalaryEntityUtil.properties(taxDeclarationValuePOS, TaxDeclarationValuePO::getEmployeeId); + + employeeDeclarePOS = employeeDeclarePOS.stream().filter(emp -> !empIds.contains(emp.getEmployeeId())).collect(Collectors.toList()); + + return TaxDeclareRecordDetailFormDTO.builder() + .taxReportColumns(TaxDeclarationDetailBO.convert2ListTaxReportColumn(taxReportColumns)) + .employeeDeclares(employeeDeclarePOS) + .taxDeclarationId(taxDeclaration.getTaxAgentId()) + .build(); } + /** + * 新增 + * @param param + */ public void add(TaxDeclareRecordDetailSaveParam param) { + getTaxDeclarationValueService(user).save(param); + } - TaxDeclarationValuePO build = TaxDeclarationValuePO.builder() - .id(IdGenerator.generate()) - .taxDeclarationId(param.getTaxDeclarationId()) - .taxDeclareRecordId(param.getTaxDeclareRecordId()) - .employeeId(param.getEmployeeId()) - .employeeType(param.getEmployeeType()) - .resultValue(param.getTaxReportColumnValues()) - .createTime(new Date()) - .updateTime(new Date()) - .creator((long) user.getUID()) - .deleteType(0) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + /** + * 编辑 + * @param param + */ + public void edit(TaxDeclareRecordDetailSaveParam param) { + getTaxDeclarationValueService(user).edit(param); + } + + public TaxDeclareRecordDetailFormDTO detailInfo(Long id) { + TaxDeclarationValuePO declarationValuePO = getTaxDeclarationValueService(user).getById(id); + TaxDeclarationPO taxDeclarationPO = getTaxDeclarationService(user).getById(declarationValuePO.getTaxDeclarationId()); + + List employeeDeclarePOS = getEmployeeDeclareService(user).listByParam( + EmployeeDeclareListQueryParam + .builder() + .taxCycle(taxDeclarationPO.getTaxCycle()) + .taxAgentId(taxDeclarationPO.getTaxAgentId()) + .employeeId(declarationValuePO.getEmployeeId()) + .build() + ); + + if (CollectionUtils.isEmpty(employeeDeclarePOS)) { + throw new SalaryRunTimeException("当前人员未报送!"); + } + EmployeeDeclarePO employeeDeclarePO = employeeDeclarePOS.get(0); + // 查询个税申报表列 + List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(IncomeCategoryEnum.parseByValue(taxDeclarationPO.getIncomeCategory())); + return TaxDeclareRecordDetailFormDTO.builder() + .incomeCategory(IncomeCategoryEnum.parseByValue(taxDeclarationPO.getIncomeCategory()).getDefaultLabel()) + .cardNum(employeeDeclarePO.getCardNum()) + .cardType(SalaryEnumUtil.enumMatchByValue(employeeDeclarePO.getCardType(), CardTypeEnum.class).getDefaultLabel()) + .username(employeeDeclarePO.getEmployeeName()) + .jobNum(employeeDeclarePO.getJobNum()) + .taxReportColumns(TaxDeclarationDetailBO.convert2ListTaxReportColumn(taxReportColumns)) + .resultValue(declarationValuePO.getResultValue()) .build(); - List objects = new ArrayList<>(); - objects.add(build); - getTaxDeclarationValueService(user).batchSave(objects); } } From 7cb0e686238e8e48ce887a84e32d7c5fe9298939 Mon Sep 17 00:00:00 2001 From: sy Date: Fri, 15 Dec 2023 09:50:20 +0800 Subject: [PATCH 34/92] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E7=BC=96=E8=BE=91=E9=A1=B5=E5=85=AC=E5=8F=B8?= =?UTF-8?q?=E5=9F=BA=E6=95=B0=E4=BF=A1=E6=81=AF=E8=BF=94=E5=9B=9E=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/entity/siarchives/bo/InsuranceArchivesBO.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/com/engine/salary/entity/siarchives/bo/InsuranceArchivesBO.java b/src/com/engine/salary/entity/siarchives/bo/InsuranceArchivesBO.java index a96b96aad..710038513 100644 --- a/src/com/engine/salary/entity/siarchives/bo/InsuranceArchivesBO.java +++ b/src/com/engine/salary/entity/siarchives/bo/InsuranceArchivesBO.java @@ -35,6 +35,7 @@ public class InsuranceArchivesBO { .socialStartTime(po.getSocialStartTime()) .schemeAccount(po.getSocialAccount()) .schemePaymentBaseString(po.getSocialPaymentBaseString()) + .schemePaymentComBaseString(po.getSocialPaymentComBaseString()) .underTake(po.getUnderTake() == null ? null : String.valueOf(po.getUnderTake())) .build(); } @@ -52,6 +53,7 @@ public class InsuranceArchivesBO { .fundSchemeId(po.getFundSchemeId()) .paymentOrganization(po.getPaymentOrganization()) .fundPaymentBaseString(po.getFundPaymentBaseString()) + .fundPaymentComBaseString(po.getFundPaymentComBaseString()) .fundStartTime(po.getFundStartTime()) .supplementFundAccount(po.getSupplementFundAccount()) .nonPayment(po.getNonPayment()) @@ -72,6 +74,7 @@ public class InsuranceArchivesBO { .otherName(po.getOtherSchemeId() == null ? null : String.valueOf(po.getOtherSchemeId())) .otherSchemeId(po.getOtherSchemeId()) .otherPaymentBaseString(po.getOtherPaymentBaseString()) + .otherPaymentComBaseString(po.getOtherPaymentComBaseString()) .otherStartTime(po.getOtherStartTime()) .otherEndTime(po.getOtherEndTime()) .paymentOrganization(po.getPaymentOrganization()) From 4f8606b00ee4311c09848fa62f183b56f6fa9940 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Sat, 16 Dec 2023 12:35:24 +0800 Subject: [PATCH 35/92] =?UTF-8?q?=E7=BC=93=E5=AD=98=E8=AF=86=E5=88=AB?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/report/wrapper/SalaryStatisticsReportWrapper.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java index ce270b1fa..86b7aeb7d 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java @@ -216,6 +216,7 @@ public class SalaryStatisticsReportWrapper extends Service { /** * 复制薪资账套 + * * @param id */ public void duplicate(Long id) { @@ -322,7 +323,7 @@ public class SalaryStatisticsReportWrapper extends Service { //报表中缓存的条件 salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id)); if (StringUtils.isNotBlank(salaryReportConditions) && salaryReportConditions.contains(paramMd5)) { - return getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + paramMd5); + return getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5); } } @@ -346,7 +347,7 @@ public class SalaryStatisticsReportWrapper extends Service { getSalaryCacheService(user).set(SalaryCacheKey.SALARY_REPORT_IDS, salaryReportIds + "," + id); getSalaryCacheService(user).set(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id, salaryReportConditions + "," + paramMd5); - getSalaryCacheService(user).set(SalaryCacheKey.SALARY_REPORT_DATA + paramMd5, resultMap); + getSalaryCacheService(user).set(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5, resultMap); return resultMap; From bda3d7080bee22cb7fab3b869b54840066c4e6a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Sat, 16 Dec 2023 12:36:56 +0800 Subject: [PATCH 36/92] =?UTF-8?q?=E7=BC=93=E5=AD=98=E8=AF=86=E5=88=AB?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/service/impl/SalaryStatisticsReportServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java index 4bb650f92..3f9745f11 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java @@ -497,7 +497,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary Arrays.asList(salaryReportConditions.split(",")).forEach(paramMd5 -> { if (StringUtils.isNotBlank(paramMd5)) { //条件对应的结果 - getSalaryCacheService(user).remove(SalaryCacheKey.SALARY_REPORT_DATA + paramMd5); + getSalaryCacheService(user).remove(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5); } } ); From e8223a832bb0c89038a2f3b56811fd88a365abdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Sat, 16 Dec 2023 12:40:33 +0800 Subject: [PATCH 37/92] =?UTF-8?q?=E7=BC=93=E5=AD=98=E8=AF=86=E5=88=AB?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/report/wrapper/SalaryStatisticsReportWrapper.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java index 86b7aeb7d..508877028 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java @@ -345,6 +345,7 @@ public class SalaryStatisticsReportWrapper extends Service { resultMap.put("reportId", id); + //设置报表缓存 getSalaryCacheService(user).set(SalaryCacheKey.SALARY_REPORT_IDS, salaryReportIds + "," + id); getSalaryCacheService(user).set(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id, salaryReportConditions + "," + paramMd5); getSalaryCacheService(user).set(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5, resultMap); From c581c8d74db7fa03dfd4472307d7d1363653a70f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 20 Dec 2023 17:21:46 +0800 Subject: [PATCH 38/92] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E7=94=B3=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8=E6=98=8E=E7=BB=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bo/TaxDeclarationCommon.java | 5 +- .../enums/salarysob/IncomeCategoryEnum.java | 140 ++++- .../GetDeclareTaxResultFeedbackResponse.java | 523 ++++++++++-------- .../salary/service/TaxDeclarationService.java | 4 +- .../impl/TaxDeclarationServiceImpl.java | 15 +- .../impl/TaxDeclareRecordServiceImpl.java | 10 +- .../engine/salary/util/excel/ExcelUtil.java | 65 +++ 7 files changed, 490 insertions(+), 272 deletions(-) diff --git a/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationCommon.java b/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationCommon.java index 88192ff3e..904e638e4 100644 --- a/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationCommon.java +++ b/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationCommon.java @@ -19,6 +19,7 @@ import com.engine.salary.util.SalaryEntityUtil; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import dm.jdbc.util.IdGenerator; +import org.apache.commons.lang3.StringUtils; import java.lang.reflect.Field; import java.math.BigDecimal; @@ -63,8 +64,7 @@ public class TaxDeclarationCommon implements TaxDeclarationStrategy { SalarySobTaxReportRulePO salarySobTaxReportRule = taxDeclareContext.getSalarySobTaxReportRuleMap() .get(lastSalaryAcctEmployee.getSalarySobId() + "-" + taxReportColumn.getReportColumnDataIndex()); List salaryAcctResultValue = salaryAcctResultValueMap.get(lastSalaryAcctEmployee.getId()); - String defaultValue = Objects.equals(taxReportColumn.getDataType(), SalaryDataTypeEnum.NUMBER.getValue()) ? "0" : ""; - String value = defaultValue; + String value = ""; if (salarySobTaxReportRule != null && salaryAcctResultValue != null) { value = salaryAcctResultValue.stream() .filter(result -> result.getSalaryItemId().equals(salarySobTaxReportRule.getSalaryItemId())) @@ -72,6 +72,7 @@ public class TaxDeclarationCommon implements TaxDeclarationStrategy { .orElse(new SalaryAcctResultPO()) .getResultValue(); } + value = StringUtils.isNotBlank(value) ? value : Objects.equals(taxReportColumn.getDataType(), SalaryDataTypeEnum.NUMBER.getValue()) ? "0.00" : ""; valueMap.put(taxReportColumn.getReportColumnDataIndex(), value); } TaxDeclarationValuePO taxDeclarationValue = TaxDeclarationValuePO.builder() diff --git a/src/com/engine/salary/enums/salarysob/IncomeCategoryEnum.java b/src/com/engine/salary/enums/salarysob/IncomeCategoryEnum.java index 762b3e581..71009b4e6 100644 --- a/src/com/engine/salary/enums/salarysob/IncomeCategoryEnum.java +++ b/src/com/engine/salary/enums/salarysob/IncomeCategoryEnum.java @@ -1,13 +1,12 @@ package com.engine.salary.enums.salarysob; import com.engine.salary.enums.BaseEnum; +import com.engine.salary.remote.tax.response.employee.GetDeclareTaxResultFeedbackResponse; +import com.engine.salary.util.excel.ExcelUtil; import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Objects; +import java.util.*; /** * 应税项目 @@ -20,19 +19,123 @@ import java.util.Objects; public enum IncomeCategoryEnum implements BaseEnum { // todo 多语言 - WAGES_AND_SALARIES(1, "0101", "正常工资薪金", 160487), - REMUNERATION_FOR_LABOR(4, "0400", "一般劳务报酬所得", 160488), - ONETIME_ANNUAL_BONUS(2, "0103", "全年一次性奖金收入", 160489), - COMPENSATION_FOR_RETIRE(107, "0107", "内退一次性补偿金", 181936), - COMPENSATION_FOR_DISMISS(108, "0108", "解除劳动合同一次性补偿金", 181937), - INCOME_FOR_INDIVIDUAL_EQUITY_INCENTIVE(109, "0109", "个人股权激励收入", 181938), - ANNUITY_RECEIPT(110, "0110", "年金领取", 181939), - INCOME_FOR_INSURANCE_SALESMAN(402, "0402", "保险营销员佣金收入", 181940), - INCOME_FOR_SECURITIES_BROKER(403, "0403", "证券经纪人佣金收入", 181942), - REMUNERATION_FOR_OTHER_CONTINUOUS_LABOR(489, "0489", "其他连续劳务报酬所得", 181943), - REMUNERATION_FOR_OTHER_LABOR(499, "0499", "其他非连续劳务报酬所得", 175330), - REMUNERATION_FOR_AUTHOR(500, "0500", "稿酬所得", 181944), - ROYALTIES(600, "0600", "特许权使用费所得", 181945), + WAGES_AND_SALARIES(1, "0101", "正常工资薪金", 160487) { + @Override + public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { + List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getZcgzxj().getSscglb(); + List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); + result.put(this.getDefaultLabel(), zhsdSheetData); + return result; + } + }, + REMUNERATION_FOR_LABOR(4, "0400", "一般劳务报酬所得", 160488) { + @Override + public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { + List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getLwbclb().getSscglb(); + List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); + result.put(this.getDefaultLabel(), zhsdSheetData); + return result; + } + }, + ONETIME_ANNUAL_BONUS(2, "0103", "全年一次性奖金收入", 160489) { + @Override + public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { + List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getQnycxjjsslb().getSscglb(); + List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); + result.put(this.getDefaultLabel(), zhsdSheetData); + return result; + } + }, + COMPENSATION_FOR_RETIRE(107, "0107", "内退一次性补偿金", 181936) { + @Override + public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { + List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getNtycxbcjlb().getSscglb(); + List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); + result.put(this.getDefaultLabel(), zhsdSheetData); + return result; + } + }, + COMPENSATION_FOR_DISMISS(108, "0108", "解除劳动合同一次性补偿金", 181937) { + @Override + public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { + List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getJcldhtycxbcjlb().getSscglb(); + List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); + result.put(this.getDefaultLabel(), zhsdSheetData); + return result; + } + }, + INCOME_FOR_INDIVIDUAL_EQUITY_INCENTIVE(109, "0109", "个人股权激励收入", 181938) { + @Override + public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { + List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getGrgqjl().getSscglb(); + List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); + result.put(this.getDefaultLabel(), zhsdSheetData); + return result; + } + }, + ANNUITY_RECEIPT(110, "0110", "年金领取", 181939) { + @Override + public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { + List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getQynj().getSscglb(); + List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); + result.put(this.getDefaultLabel(), zhsdSheetData); + return result; + } + }, + INCOME_FOR_INSURANCE_SALESMAN(402, "0402", "保险营销员佣金收入", 181940) { + @Override + public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { + List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getBxyxy().getSscglb(); + List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); + result.put(this.getDefaultLabel(), zhsdSheetData); + return result; + } + }, + INCOME_FOR_SECURITIES_BROKER(403, "0403", "证券经纪人佣金收入", 181942) { + @Override + public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { + List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getZqjjr().getSscglb(); + List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); + result.put(this.getDefaultLabel(), zhsdSheetData); + return result; + } + }, + REMUNERATION_FOR_OTHER_CONTINUOUS_LABOR(489, "0489", "其他连续劳务报酬所得", 181943) { + @Override + public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { + List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getQtlxlwbc().getSscglb(); + List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); + result.put(this.getDefaultLabel(), zhsdSheetData); + return result; + } + }, + REMUNERATION_FOR_OTHER_LABOR(499, "0499", "其他非连续劳务报酬所得", 175330) { + @Override + public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { + List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getQtflxlwbc().getSscglb(); + List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); + result.put(this.getDefaultLabel(), zhsdSheetData); + return result; + } + }, + REMUNERATION_FOR_AUTHOR(500, "0500", "稿酬所得", 181944) { + @Override + public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { + List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getGcsdlb().getSscglb(); + List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); + result.put(this.getDefaultLabel(), zhsdSheetData); + return result; + } + }, + ROYALTIES(600, "0600", "特许权使用费所得", 181945) { + @Override + public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { + List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getTxq().getSscglb(); + List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); + result.put(this.getDefaultLabel(), zhsdSheetData); + return result; + } + }, ; @@ -51,6 +154,8 @@ public enum IncomeCategoryEnum implements BaseEnum { this.labelId = labelId; } + public abstract Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse); + @Override public Integer getValue() { return value; @@ -79,6 +184,7 @@ public enum IncomeCategoryEnum implements BaseEnum { } return null; } + public static List parseByValue(Collection values) { if (CollectionUtils.isEmpty(values)) { return Collections.emptyList(); diff --git a/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java b/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java index 47f9c42fe..1313ca083 100644 --- a/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java +++ b/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java @@ -58,10 +58,11 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse { // * 限售股所得 必填:是 见限售股所得计算结果 // */ // private 对象 xsgsd; -// /** -// * 人员申报失败列表 必填:是 参考人员代报结果对象 -// */ -// private 数组 rysbsblb; + + /** + * 人员申报失败列表 必填:是 参考人员代报结果对象 + */ + private List rysbsblb; @Data public static class zhsd { @@ -73,66 +74,66 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse { * 正常工资薪金算税结果对象 参考综合所得算税结果对象 */ private zcgzxj zcgzxj; -// /** -// * 全年一次性奖金收入算税结果对象 参考综合所得算税结果对象 -// */ -// private 对象 qnycxjjsslb; -// /** -// * 稿酬所得算税结果对象 参考综合所得算税结果对象 -// */ -// private 对象 gcsdlb; -// /** -// * 一般劳务报酬算税结果对象 参考综合所得算税结果对象 -// */ -// private 对象 lwbclb; -// /** -// * 解除劳动合同一次性补偿金列表 参考综合所得算税结果对象 -// */ -// private 对象 jcldhtycxbcjlb; -// /** -// * 保险营销员薪金算税结果对象 参考综合所得算税结果对象 -// */ -// private 对象 bxyxy; -// /** -// * 证券经纪人薪金算税结果对象 参考综合所得算税结果对象 -// */ -// private 对象 zqjjr; -// /** -// * 特许权算税结果对象 参考综合所得算税结果对象 -// */ -// private 对象 txq; -// /** -// * 个人股权激励结果对象 参考综合所得算税结果对象 -// */ -// private 对象 grgqjl; -// /** -// * 企业年金结果对象 参考综合所得算税结果对象 -// */ -// private 对象 qynj; -// /** -// * 内退一次性补偿金 参考综合所得算税结果对象 -// */ -// private 对象 ntycxbcjlb; -// /** -// * 其他连续劳务报酬 参考综合所得算税结果对象 -// */ -// private 对象 qtlxlwbc; -// /** -// * 其他非连续劳务报酬 参考综合所得算税结果对象 -// */ -// private 对象 qtflxlwbc; -// /** -// * 提前退休一次性补贴 参考综合所得算税结果对象 -// */ -// private 对象 tqtxycxbt; -// /** -// * 央企负责人绩效薪金延期兑现收入和任期奖励 参考综合所得算税结果对象 -// */ -// private 对象 yqfzrsrhjl; -// /** -// * 法律援助劳务报酬 参考综合所得算税结果对象 -// */ -// private 对象 flyzlwbclb; + /** + * 全年一次性奖金收入算税结果对象 参考综合所得算税结果对象 + */ + private zcgzxj qnycxjjsslb; + /** + * 稿酬所得算税结果对象 参考综合所得算税结果对象 + */ + private zcgzxj gcsdlb; + /** + * 一般劳务报酬算税结果对象 参考综合所得算税结果对象 + */ + private zcgzxj lwbclb; + /** + * 解除劳动合同一次性补偿金列表 参考综合所得算税结果对象 + */ + private zcgzxj jcldhtycxbcjlb; + /** + * 保险营销员薪金算税结果对象 参考综合所得算税结果对象 + */ + private zcgzxj bxyxy; + /** + * 证券经纪人薪金算税结果对象 参考综合所得算税结果对象 + */ + private zcgzxj zqjjr; + /** + * 特许权算税结果对象 参考综合所得算税结果对象 + */ + private zcgzxj txq; + /** + * 个人股权激励结果对象 参考综合所得算税结果对象 + */ + private zcgzxj grgqjl; + /** + * 企业年金结果对象 参考综合所得算税结果对象 + */ + private zcgzxj qynj; + /** + * 内退一次性补偿金 参考综合所得算税结果对象 + */ + private zcgzxj ntycxbcjlb; + /** + * 其他连续劳务报酬 参考综合所得算税结果对象 + */ + private zcgzxj qtlxlwbc; + /** + * 其他非连续劳务报酬 参考综合所得算税结果对象 + */ + private zcgzxj qtflxlwbc; + /** + * 提前退休一次性补贴 参考综合所得算税结果对象 + */ + private zcgzxj tqtxycxbt; + /** + * 央企负责人绩效薪金延期兑现收入和任期奖励 参考综合所得算税结果对象 + */ + private zcgzxj yqfzrsrhjl; + /** + * 法律援助劳务报酬 参考综合所得算税结果对象 + */ + private zcgzxj flyzlwbclb; /** @@ -234,7 +235,6 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse { /** * 是否明细申报 必填:否 是或者否 */ - @SalaryTableColumn(text = "是否明细申报", width = "10%", column = "sfmxsb") private String sfmxsb; /** * 姓名 必填:null 如果是汇总申报返回空 @@ -264,133 +264,143 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse { /** * 当期收入额 必填:是 不填写默认为0 */ - @SalaryTableColumn(text = "当期收入额", width = "10%", column = "sre") + @SalaryTableColumn(text = "本期收入", width = "10%", column = "sre") private BigDecimal sre; /** * 当期免税收入 必填:null */ - @SalaryTableColumn(text = "当期免税收入", width = "10%", column = "mssd") + @SalaryTableColumn(text = "本期免税收入", width = "10%", column = "mssd") private BigDecimal mssd; /** * 基本养老保险 必填:null */ - @SalaryTableColumn(text = "基本养老保险", width = "10%", column = "jbylaobxf") + @SalaryTableColumn(text = "本期基本养老保险费", width = "10%", column = "jbylaobxf") private BigDecimal jbylaobxf; /** * 基本医疗保险 必填:null */ - @SalaryTableColumn(text = "基本医疗保险", width = "10%", column = "jbylbxf") + @SalaryTableColumn(text = "本期基本医疗保险费", width = "10%", column = "jbylbxf") private BigDecimal jbylbxf; /** * 失业保险 必填:null */ - @SalaryTableColumn(text = "失业保险", width = "10%", column = "sybxf") + @SalaryTableColumn(text = "本期失业保险费", width = "10%", column = "sybxf") private BigDecimal sybxf; /** * 住房公积金 必填:null */ - @SalaryTableColumn(text = "住房公积金", width = "10%", column = "zfgjj") + @SalaryTableColumn(text = "本期住房公积金", width = "10%", column = "zfgjj") private BigDecimal zfgjj; - /** - * 子女教育支出 必填:null - */ - @SalaryTableColumn(text = "子女教育支出", width = "10%", column = "znjyzc") - private BigDecimal znjyzc; - /** - * 赡养老人支出 必填:null - */ - @SalaryTableColumn(text = "赡养老人支出", width = "10%", column = "sylrzc") - private BigDecimal sylrzc; - /** - * 住房贷款利息支出 必填:null - */ - @SalaryTableColumn(text = "住房贷款利息支出", width = "10%", column = "zfdklxzc") - private BigDecimal zfdklxzc; - /** - * 住房租金支出 必填:null - */ - @SalaryTableColumn(text = "住房租金支出", width = "10%", column = "zfzjzc") - private BigDecimal zfzjzc; - /** - * 继续教育支出 必填:null - */ - @SalaryTableColumn(text = "继续教育支出", width = "10%", column = "jxjyzc") - private BigDecimal jxjyzc; - /** - * 非学历继续教育支出 必填:null - */ - @SalaryTableColumn(text = "非学历继续教育支出", width = "10%", column = "fxljxjyzc") - private BigDecimal fxljxjyzc; - /** - * 3岁以下婴幼儿照护支出 必填:null - */ - @SalaryTableColumn(text = "3岁以下婴幼儿照护支出", width = "10%", column = "yyezhzc") - private BigDecimal yyezhzc; + /** * 年金 必填:null */ - @SalaryTableColumn(text = "年金", width = "10%", column = "nj") + @SalaryTableColumn(text = "本期企业(职业)年金", width = "10%", column = "nj") private BigDecimal nj; + /** * 商业健康保险 必填:null */ - @SalaryTableColumn(text = "商业健康保险", width = "10%", column = "syjkbx") + @SalaryTableColumn(text = "本期商业健康保险费", width = "10%", column = "syjkbx") private BigDecimal syjkbx; /** * 税延养老保险 必填:null */ - @SalaryTableColumn(text = "税延养老保险", width = "10%", column = "syylbx") + @SalaryTableColumn(text = "本期税延养老保险费", width = "10%", column = "syylbx") private BigDecimal syylbx; /** * 其他 必填:null 按法律规定可以在税前扣除的项目 */ - @SalaryTableColumn(text = "其他", width = "10%", column = "qt") + @SalaryTableColumn(text = "本期其他扣除(其他)", width = "10%", column = "qt") private BigDecimal qt; + /** - * 准予扣除的捐赠额 必填:null + * 累计收入额 必填:null */ - @SalaryTableColumn(text = "准予扣除的捐赠额", width = "10%", column = "zykcjze") - private BigDecimal zykcjze; + @SalaryTableColumn(text = "累计收入额", width = "10%", column = "ljsre") + private BigDecimal ljsre; /** - * 减免税额 必填:null + * 累计免税收入额 必填:null */ - @SalaryTableColumn(text = "减免税额", width = "10%", column = "jmse") - private BigDecimal jmse; + @SalaryTableColumn(text = "累计免税收入", width = "10%", column = "ljmssd") + private BigDecimal ljmssd; + /** - * 备注 必填:null + * 累计减除费用额 必填:null 正常工资薪金累计减除费用 对应保险营销员、证券经纪人累计费用 */ - @SalaryTableColumn(text = "备注", width = "10%", column = "bz") - private String bz; + @SalaryTableColumn(text = "累计减除费用", width = "10%", column = "ljjcfye") + private BigDecimal ljjcfye; + /** - * 减除费用 必填:null 正常工资薪金的减除费用。 对应保险营销员、证券经纪人的费用 + * 累计专项扣除额 必填:null 三险一金合计 */ - @SalaryTableColumn(text = "减除费用", width = "10%", column = "jcfy") - private BigDecimal jcfy; + @SalaryTableColumn(text = "累计专项扣除", width = "10%", column = "ljzxkce") + private BigDecimal ljzxkce; + /** - * 其他扣除合计 必填:null + * 累计子女教育支出 必填:null */ - @SalaryTableColumn(text = "其他扣除合计", width = "10%", column = "qtckhj") - private BigDecimal qtckhj; + @SalaryTableColumn(text = "累计子女教育支出扣除", width = "10%", column = "ljznjyzc") + private BigDecimal ljznjyzc; /** - * 应纳税所得额 必填:null 正常工资薪金返回Null + * 累计继续教育支出 必填:null */ - @SalaryTableColumn(text = "应纳税所得额", width = "10%", column = "ynssde") - private BigDecimal ynssde; + @SalaryTableColumn(text = "累计继续教育支出扣除", width = "10%", column = "ljjxjyzc") + private BigDecimal ljjxjyzc; /** - * 应纳税额 必填:null 正常工资薪金返回Null + * 累计非学历继续教育支持 必填:null */ - @SalaryTableColumn(text = "应纳税额", width = "10%", column = "ynse") - private BigDecimal ynse; + private BigDecimal ljfxljxjyzc; /** - * 已缴税额 必填:null 正常工资薪金返回Null + * 累计学历继续教育支持 必填:null */ - @SalaryTableColumn(text = "已缴税额", width = "10%", column = "ykjse") - private BigDecimal ykjse; + private BigDecimal ljxljxjyzc; /** - * 应扣缴税额 必填:null 正常工资薪金返回Null + * 累计住房租金支出 必填:null */ - @SalaryTableColumn(text = "应扣缴税额", width = "10%", column = "yingkjse") - private BigDecimal yingkjse; + @SalaryTableColumn(text = "累计住房租金支出扣除", width = "10%", column = "ljzfzjzc") + private BigDecimal ljzfzjzc; + /** + * 累计房屋贷款支出 必填:null + */ + @SalaryTableColumn(text = "累计房屋贷款支出扣除", width = "10%", column = "ljzfdklxzc") + private BigDecimal ljzfdklxzc; + /** + * 累计赡养老人支出 必填:null + */ + @SalaryTableColumn(text = "累计赡养老人支出扣除", width = "10%", column = "ljsylrzc") + private BigDecimal ljsylrzc; + /** + * 累计3岁以下婴幼儿照护支出 必填:null + */ + @SalaryTableColumn(text = "累计3岁以下婴幼儿照护", width = "10%", column = "ljyyezhzc") + private BigDecimal ljyyezhzc; + + + /** + * 累计个人养老金 必填:null + */ + @SalaryTableColumn(text = "累计个人养老金", width = "10%", column = "ljgrylj") + private BigDecimal ljgrylj; + + /** + * 累计其他扣除额 必填:null + */ + @SalaryTableColumn(text = "累计其他扣除", width = "10%", column = "ljqtkce") + private BigDecimal ljqtkce; + + /** + * 累计准予扣除的捐赠额 必填:null + */ + @SalaryTableColumn(text = "累计准予扣除的捐赠", width = "10%", column = "ljzykcjze") + private BigDecimal ljzykcjze; + + /** + * 累计应纳税所得额 必填:null + */ + @SalaryTableColumn(text = "累计应纳税所得额", width = "10%", column = "ljynssde") + private BigDecimal ljynssde; + /** * 税率 必填:null */ @@ -401,81 +411,19 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse { */ @SalaryTableColumn(text = "速算扣除数", width = "10%", column = "sskcs") private BigDecimal sskcs; - /** - * 所得项目名称 必填:是 正常工资薪金;全年一次性奖金收入;稿酬所得;劳务报酬 - */ - @SalaryTableColumn(text = "所得项目名称", width = "10%", column = "sdxm") - private String sdxm; - /** - * 应补退税额 必填:null 应补退税额=累计应扣缴税额-累计已缴税额 - */ - @SalaryTableColumn(text = "应补退税额", width = "10%", column = "ybtse") - private BigDecimal ybtse; - /** - * 累计收入额 必填:null - */ - @SalaryTableColumn(text = "累计收入额", width = "10%", column = "ljsre") - private BigDecimal ljsre; - /** - * 累计免税收入额 必填:null - */ - @SalaryTableColumn(text = "累计免税收入额", width = "10%", column = "ljmssd") - private BigDecimal ljmssd; - /** - * 累计专项扣除额 必填:null 三险一金合计 - */ - @SalaryTableColumn(text = "累计专项扣除额", width = "10%", column = "ljzxkce") - private BigDecimal ljzxkce; - /** - * 累计专项附加扣除额 必填:null 专项附加合计 - */ - @SalaryTableColumn(text = "累计专项附加扣除额", width = "10%", column = "ljzxfjkce") - private BigDecimal ljzxfjkce; - /** - * 累计其他扣除额 必填:null - */ - @SalaryTableColumn(text = "累计其他扣除额", width = "10%", column = "ljqtkce") - private BigDecimal ljqtkce; - /** - * 累计减免税额 必填:null - */ - @SalaryTableColumn(text = "累计减免税额", width = "10%", column = "ljjmse") - private BigDecimal ljjmse; - /** - * 累计减除费用额 必填:null 正常工资薪金累计减除费用 对应保险营销员、证券经纪人累计费用 - */ - @SalaryTableColumn(text = "累计减除费用额", width = "10%", column = "ljjcfye") - private BigDecimal ljjcfye; - /** - * 累计月减除费用 必填:null 保险营销员、证券经纪人,其他连续劳务报酬的减除费用 - */ - @SalaryTableColumn(text = "累计月减除费用", width = "10%", column = "ljyjcfy") - private BigDecimal ljyjcfy; - /** - * 允许扣除税费 必填:null 保险营销员、证券经纪人 - */ - @SalaryTableColumn(text = "允许扣除税费", width = "10%", column = "yxkcsf") - private BigDecimal yxkcsf; - /** - * 展业成本 必填:null 保险营销员、证券经纪人 - */ - @SalaryTableColumn(text = "展业成本", width = "10%", column = "zycb") - private BigDecimal zycb; - /** - * 月减除费用 必填:null 保险营销员、证券经纪人,其他连续劳务报酬的减除费用 - */ - @SalaryTableColumn(text = "月减除费用", width = "10%", column = "yjcfy") - private BigDecimal yjcfy; - /** - * 累计应纳税所得额 必填:null - */ - @SalaryTableColumn(text = "累计应纳税所得额", width = "10%", column = "ljynssde") - private BigDecimal ljynssde; + /** * 累计应纳税额 必填:null */ @SalaryTableColumn(text = "累计应纳税额", width = "10%", column = "ljynse") private BigDecimal ljynse; + + /** + * 累计减免税额 必填:null + */ + @SalaryTableColumn(text = "累计减免税额", width = "10%", column = "ljjmse") + private BigDecimal ljjmse; + /** * 累计应扣缴税额 必填:null 累计应扣缴税额 = 累计应纳税额 - 累计减免税额 */ @@ -487,59 +435,114 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse { @SalaryTableColumn(text = "累计已缴税额", width = "10%", column = "ljykjse") private BigDecimal ljykjse; /** - * 累计子女教育支出 必填:null + * 已缴税额 必填:null 正常工资薪金返回Null */ - @SalaryTableColumn(text = "累计子女教育支出", width = "10%", column = "ljznjyzc") - private BigDecimal ljznjyzc; + @SalaryTableColumn(text = "已缴税额", width = "10%", column = "ykjse") + private BigDecimal ykjse; + /** - * 累计继续教育支出 必填:null + * 累计专项附加扣除额 必填:null 专项附加合计 */ - @SalaryTableColumn(text = "累计继续教育支出", width = "10%", column = "ljjxjyzc") - private BigDecimal ljjxjyzc; + @SalaryTableColumn(text = "累计专项附加扣除额", width = "10%", column = "ljzxfjkce") + private BigDecimal ljzxfjkce; + /** - * 累计非学历继续教育支持 必填:null + * 应补退税额 必填:null 应补退税额=累计应扣缴税额-累计已缴税额 */ - @SalaryTableColumn(text = "累计非学历继续教育支持", width = "10%", column = "ljfxljxjyzc") - private BigDecimal ljfxljxjyzc; + @SalaryTableColumn(text = "应补退税额", width = "10%", column = "ybtse") + private BigDecimal ybtse; + /** - * 累计学历继续教育支持 必填:null + * 备注 必填:null */ - @SalaryTableColumn(text = "累计学历继续教育支持", width = "10%", column = "ljxljxjyzc") - private BigDecimal ljxljxjyzc; + @SalaryTableColumn(text = "备注", width = "10%", column = "bz") + private String bz; + /** - * 累计住房租金支出 必填:null + * 子女教育支出 必填:null */ - @SalaryTableColumn(text = "累计住房租金支出", width = "10%", column = "ljzfzjzc") - private BigDecimal ljzfzjzc; + private BigDecimal znjyzc; /** - * 累计房屋贷款支出 必填:null + * 赡养老人支出 必填:null */ - @SalaryTableColumn(text = "累计房屋贷款支出", width = "10%", column = "ljzfdklxzc") - private BigDecimal ljzfdklxzc; + private BigDecimal sylrzc; /** - * 累计赡养老人支出 必填:null + * 住房贷款利息支出 必填:null */ - @SalaryTableColumn(text = "累计赡养老人支出", width = "10%", column = "ljsylrzc") - private BigDecimal ljsylrzc; + private BigDecimal zfdklxzc; /** - * 累计3岁以下婴幼儿照护支出 必填:null + * 住房租金支出 必填:null */ - @SalaryTableColumn(text = "累计3岁以下婴幼儿照护支出", width = "10%", column = "ljyyezhzc") - private BigDecimal ljyyezhzc; + private BigDecimal zfzjzc; /** - * 累计准予扣除的捐赠额 必填:null + * 继续教育支出 必填:null */ - @SalaryTableColumn(text = "累计准予扣除的捐赠额", width = "10%", column = "ljzykcjze") - private BigDecimal ljzykcjze; + private BigDecimal jxjyzc; /** - * 累计个人养老金 必填:null + * 非学历继续教育支出 必填:null */ - @SalaryTableColumn(text = "累计个人养老金", width = "10%", column = "ljgrylj") - private BigDecimal ljgrylj; + private BigDecimal fxljxjyzc; + /** + * 3岁以下婴幼儿照护支出 必填:null + */ + private BigDecimal yyezhzc; + + /** + * 准予扣除的捐赠额 必填:null + */ + private BigDecimal zykcjze; + /** + * 减免税额 必填:null + */ + private BigDecimal jmse; + + /** + * 减除费用 必填:null 正常工资薪金的减除费用。 对应保险营销员、证券经纪人的费用 + */ + private BigDecimal jcfy; + /** + * 其他扣除合计 必填:null + */ + private BigDecimal qtckhj; + /** + * 应纳税所得额 必填:null 正常工资薪金返回Null + */ + private BigDecimal ynssde; + /** + * 应纳税额 必填:null 正常工资薪金返回Null + */ + private BigDecimal ynse; + + /** + * 应扣缴税额 必填:null 正常工资薪金返回Null + */ + private BigDecimal yingkjse; + + /** + * 所得项目名称 必填:是 正常工资薪金;全年一次性奖金收入;稿酬所得;劳务报酬 + */ + private String sdxm; + + /** + * 累计月减除费用 必填:null 保险营销员、证券经纪人,其他连续劳务报酬的减除费用 + */ + private BigDecimal ljyjcfy; + /** + * 允许扣除税费 必填:null 保险营销员、证券经纪人 + */ + private BigDecimal yxkcsf; + /** + * 展业成本 必填:null 保险营销员、证券经纪人 + */ + private BigDecimal zycb; + /** + * 月减除费用 必填:null 保险营销员、证券经纪人,其他连续劳务报酬的减除费用 + */ + private BigDecimal yjcfy; + /** * 累计个人养老金校验码 必填:null */ - @SalaryTableColumn(text = "累计个人养老金校验码", width = "10%", column = "ljgryljjym") private String ljgryljjym; /** * 企业上月是否已申报 必填:null 仅在两个月算税场景时使用,当前月分为N月: @@ -547,34 +550,28 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse { * 1表示N-1月(上月)已申报 * 2表示N-2月(上上个月)未申报 */ - @SalaryTableColumn(text = "企业上月是否已申报", width = "10%", column = "qysysfysb") private String qysysfysb; /** * 员工在税局累计已扣缴的税额 必填:null 当前月分为N,如果N-1(上月)已申报,则返回N-1月员工在税局累计已扣缴的税额; * 如果N-1月未申报,则返回N-2月工在税局累计已扣缴的税额; */ - @SalaryTableColumn(text = "员工在税局累计已扣缴的税额", width = "10%", column = "ygzsjljykjse") private BigDecimal ygzsjljykjse; /** * 本月已累计扣除税额 必填:null 针对一月多次算税的场景字段 */ - @SalaryTableColumn(text = "本月已累计扣除税额", width = "10%", column = "byyljkjse") private BigDecimal byyljkjse; /** * 本次应扣缴税额 必填:null 针对一月多次算税的场景字段,本次应扣缴税额=本月应扣缴税额-本月已累计税额 */ - @SalaryTableColumn(text = "本次应扣缴税额", width = "10%", column = "bcykjse") private BigDecimal bcykjse; /** * 分摊年度数 必填:null */ - @SalaryTableColumn(text = "分摊年度数", width = "10%", column = "ftnds") private Integer ftnds; /** * 年减除费用 必填:null 默认为60000 */ - @SalaryTableColumn(text = "年减除费用", width = "10%", column = "njcfy") private BigDecimal njcfy; } @@ -622,6 +619,44 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse { } + /** + * 4.4.1.3.1.1人员代报结果对象 + */ + @Data + public static class rydbjgdx { + /** + * 人员ID + */ + private Integer ygid; + /** + * 人员名称 + */ + private String xm; + /** + * 证件类型 见证件类型字典 + */ + private String zzlx; + /** + * 证件号码 + */ + private String zzhm; + /** + * 错误码 + */ + private String cwm; + /** + * 错误信息 + */ + private String cwxx; + /** + * 所得税的code + */ + private String sdxmdm; + /** + * 所得税的名称 + */ + private String sdxmmc; + } } diff --git a/src/com/engine/salary/service/TaxDeclarationService.java b/src/com/engine/salary/service/TaxDeclarationService.java index 2731904a5..cb12aae30 100644 --- a/src/com/engine/salary/service/TaxDeclarationService.java +++ b/src/com/engine/salary/service/TaxDeclarationService.java @@ -23,6 +23,8 @@ public interface TaxDeclarationService { */ List listByTaxCycleAndTaxAgentIds(YearMonth salaryMonth, Collection taxAgentIds); + List listByTaxDeclareRecordId(Long taxDeclareRecordId); + PageInfo listPageByParam(TaxDeclarationListQueryParam queryParam); List countByTaxDeclarationId(Collection taxAgentIds); @@ -33,7 +35,6 @@ public interface TaxDeclarationService { /** * 删除个税申报表 - * */ void delete(SalaryAcctRecordPO salaryAcctRecordPO); @@ -48,6 +49,7 @@ public interface TaxDeclarationService { /** * 撤回个税申报单 + * * @param taxDeclarationId */ void withDrawTaxDeclaration(Long taxDeclarationId); diff --git a/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java index 987eacf58..3c8391812 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java @@ -94,6 +94,15 @@ public class TaxDeclarationServiceImpl extends Service implements TaxDeclaration return taxDeclarationPOS; } + @Override + public List listByTaxDeclareRecordId(Long taxDeclareRecordId) { + if (Objects.isNull(taxDeclareRecordId)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(84026, "参数错误")); + } + TaxDeclarationPO po = TaxDeclarationPO.builder().taxDeclareRecordId(taxDeclareRecordId).build(); + return getTaxDeclarationMapper().listSome(po); + } + @Override public PageInfo listPageByParam(TaxDeclarationListQueryParam queryParam) { long currentEmployeeId = user.getUID(); @@ -205,7 +214,7 @@ public class TaxDeclarationServiceImpl extends Service implements TaxDeclaration // 无薪资核算结果,不允许生成个税申报表 if (CollectionUtils.isEmpty(salaryAcctResultPOS)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(110093, "{0}无可申报数据") - .replace("{0}", SalaryDateUtil.getFormatYearMonth(saveParam.getSalaryMonth()))); + .replace("{0}", SalaryDateUtil.getFormatYearMonth(saveParam.getSalaryMonth()))); } Set salaryAcctRecordIds = SalaryEntityUtil.properties(salaryAcctResultPOS, SalaryAcctResultPO::getSalaryAcctRecordId); @@ -214,14 +223,14 @@ public class TaxDeclarationServiceImpl extends Service implements TaxDeclaration boolean notArchived = salaryAcctRecordPOS.stream().anyMatch(salaryAcctRecordPO -> Objects.equals(salaryAcctRecordPO.getStatus(), SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue())); if (notArchived) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98875, "{0}有未归档数据,请全部归档后再申报") - .replace("{0}", SalaryDateUtil.getFormatYearMonth(saveParam.getSalaryMonth()))); + .replace("{0}", SalaryDateUtil.getFormatYearMonth(saveParam.getSalaryMonth()))); } // 如果当前薪资所属月下存在不同的税款所属期,属于异常业务场景,不允许生成个税申报表 Date taxCycle = salaryAcctRecordPOS.get(0).getTaxCycle(); boolean differentTaxCycle = salaryAcctRecordPOS.stream().anyMatch(salaryAcctRecordPO -> salaryAcctRecordPO.getTaxCycle().compareTo(taxCycle) != 0); if (differentTaxCycle) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98876, "{0}存在不同的税款所属期,无法正常生成个税申报表,请调整账套设置,重新核算后再生成个税申报表") - .replace("{0}", SalaryDateUtil.getFormatYearMonth(saveParam.getSalaryMonth()))); + .replace("{0}", SalaryDateUtil.getFormatYearMonth(saveParam.getSalaryMonth()))); } // 查询薪资账套 Set salarySobIds = SalaryEntityUtil.properties(salaryAcctRecordPOS, SalaryAcctRecordPO::getSalarySobId); diff --git a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java index 23606e23e..f84035722 100644 --- a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java @@ -35,6 +35,7 @@ import com.engine.salary.entity.taxdeclaration.response.DeclareTaxResponse; import com.engine.salary.entity.taxdeclaration.response.UpdateDeclareResponse; import com.engine.salary.enums.employeedeclare.DeclareStatusEnum; import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; +import com.engine.salary.enums.salarysob.IncomeCategoryEnum; import com.engine.salary.enums.sicategory.DeleteTypeEnum; import com.engine.salary.enums.taxagent.TaxAgentTaxReturnStatusEnum; import com.engine.salary.enums.taxdeclaration.*; @@ -942,12 +943,11 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe DeclareClient declareClient = new DeclareClient(taxDeclareRecord.getTaxAgentId()); GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse = declareClient.getDeclareTaxResultFeedback(StringUtils.isEmpty(requestId) ? taxDeclareRecord.getRequestId() : requestId); - List sscglb = declareTaxResultFeedbackResponse.getBody().getZhsd().getZcgzxj().getSscglb(); - // 需要导出的数据 - List> excelSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, sscglb); - - return ExcelUtil.genWorkbookV2(excelSheetData, "申报内置算税结果"); + Map>> map = new HashMap<>(); + List list = getTaxDeclarationService(user).listByTaxDeclareRecordId(id); + list.stream().map(TaxDeclarationPO::getIncomeCategory).map(IncomeCategoryEnum::parseByValue).forEach(e->e.parseGetDeclareTaxResultFeedbackResponse(map,declareTaxResultFeedbackResponse)); + return ExcelUtil.genWorkbookV2(map); } diff --git a/src/com/engine/salary/util/excel/ExcelUtil.java b/src/com/engine/salary/util/excel/ExcelUtil.java index b9a0c5d2c..f0ac59837 100644 --- a/src/com/engine/salary/util/excel/ExcelUtil.java +++ b/src/com/engine/salary/util/excel/ExcelUtil.java @@ -272,6 +272,71 @@ public class ExcelUtil { return workbook; } + public static XSSFWorkbook genWorkbookV2(Map>> map) { + XSSFWorkbook workbook = new XSSFWorkbook(); + + map.entrySet().forEach(en->{ + + String sheetName = en.getKey(); + List> rowList = en.getValue(); + // 设置title样式 + XSSFCellStyle titleCellStyle = workbook.createCellStyle(); + XSSFFont titleFont = workbook.createFont(); + titleFont.setFontName("仿宋"); + titleFont.setFontHeightInPoints((short) 15); + titleCellStyle.setFont(titleFont); + titleCellStyle.setAlignment(HorizontalAlignment.CENTER); + titleCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());//背景色 + titleCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); + + + // 设置主体样式 + XSSFCellStyle cellStyle = workbook.createCellStyle(); + XSSFFont font = workbook.createFont(); + font.setFontName("宋体"); + font.setFontHeightInPoints((short) 10);// 设置字体大小 + cellStyle.setFont(font);// 选择需要用到的字体格式 + cellStyle.setWrapText(true); + + XSSFSheet sheet = workbook.createSheet(sheetName); + //自适应宽度 + sheet.autoSizeColumn(0, true); + //默认列宽 + sheet.setDefaultColumnWidth(20); + //默认行高 + sheet.setDefaultRowHeightInPoints(18); + + for (int rowIndex = 0; rowIndex < rowList.size(); rowIndex++) { + List infoList = rowList.get(rowIndex); + XSSFRow row = sheet.createRow(rowIndex); + for (int cellIndex = 0; cellIndex < infoList.size(); cellIndex++) { + XSSFCell cell = row.createCell(cellIndex); + if (rowIndex == 0) { + cell.setCellStyle(titleCellStyle); + } else { + cell.setCellStyle(cellStyle); + } + Object o = infoList.get(cellIndex); + if (o instanceof String) { + cell.setCellType(CellType.STRING); + cell.setCellValue(String.valueOf(o)); + } else if (o instanceof Boolean) { + cell.setCellType(CellType.BOOLEAN); + cell.setCellValue(String.valueOf(o)); + } else if (o instanceof Date) { + cell.setCellType(CellType.STRING); + cell.setCellValue(SalaryDateUtil.getFormatLocalDate((Date) o)); + } else { + cell.setCellType(CellType.STRING); + cell.setCellValue(o == null ? "" : o.toString()); + } + } + } + }); + + return workbook; + } + public static XSSFWorkbook genWorkbook(ExcelSheetData excelSheetData) { List> list = new ArrayList<>(); list.add(excelSheetData.getHeaders()); From a5eb86ab068b7f5f36305be0e1a6e9eaad7f1303 Mon Sep 17 00:00:00 2001 From: sy Date: Thu, 21 Dec 2023 13:33:21 +0800 Subject: [PATCH 39/92] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E7=BA=BF=E4=B8=8B?= =?UTF-8?q?=E5=AF=B9=E6=AF=94=E5=AF=BC=E5=85=A5=E5=8A=9F=E8=83=BD=E4=BC=98?= =?UTF-8?q?=E5=8C=96=EF=BC=8C=E9=80=82=E9=85=8D=E7=A6=8F=E5=88=A9=E5=9F=BA?= =?UTF-8?q?=E6=95=B0=E4=B8=AA=E4=BA=BA=E5=92=8C=E5=85=AC=E5=8F=B8=E5=AF=BC?= =?UTF-8?q?=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SIAccountServiceImpl.java | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index 1385b84d7..cbed96243 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -2540,33 +2540,33 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { //社保个人(生育保险个人、工伤保险个人、失业保险个人、养老保险个人、医疗保险个人) for (ICategoryPO po : socialWelPerList) { result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage())) - + SalaryI18nUtil.getI18nLabel(0, "申报基数"), po.getId() + "socialPer"); + + SalaryI18nUtil.getI18nLabel(0, "个人"), po.getId() + "socialPer"); } //住房公积金个人、补充住房公积金个人 for (ICategoryPO po : fundWelPerList) { result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage())) - + SalaryI18nUtil.getI18nLabel(0, "申报基数"), po.getId() + "fundPer"); + + SalaryI18nUtil.getI18nLabel(0, "个人"), po.getId() + "fundPer"); } //其他个人(比如企业年金个人) for (ICategoryPO po : otherWelPerList) { result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage())) - + SalaryI18nUtil.getI18nLabel(0, "申报基数"), po.getId() + "otherPer"); + + SalaryI18nUtil.getI18nLabel(0, "个人"), po.getId() + "otherPer"); } //社保单位(生育保险单位、工伤保险单位、失业保险单位、养老保险单位、医疗保险单位) for (ICategoryPO po : socialWelComList) { result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage())) - + SalaryI18nUtil.getI18nLabel(0, "申报基数"), po.getId() + "socialCom"); + + SalaryI18nUtil.getI18nLabel(0, "单位"), po.getId() + "socialCom"); } //住房公积金单位、补充住房公积金单位 for (ICategoryPO po : fundWelComList) { result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage())) - + SalaryI18nUtil.getI18nLabel(0, "申报基数"), po.getId() + "fundCom"); + + SalaryI18nUtil.getI18nLabel(0, "单位"), po.getId() + "fundCom"); } //其他单位(比如企业年金单位) for (ICategoryPO po : otherWelComList) { result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage())) - + SalaryI18nUtil.getI18nLabel(0, "申报基数"), po.getId() + "otherCom"); + + SalaryI18nUtil.getI18nLabel(0, "单位"), po.getId() + "otherCom"); } return result; @@ -2621,11 +2621,12 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { String billMonth = importParam.getBillMonth(); - Map welColumnNameCodeMap = welColumnNameCodeMap(InsuranceAccountDetailParam.builder() - .billMonth(billMonth) - .paymentOrganization(importParam.getPaymentOrganization()) - .paymentStatus(PaymentStatusEnum.COMMON.getValue()) - .build()); +// Map welColumnNameCodeMap = welColumnNameCodeMap(InsuranceAccountDetailParam.builder() +// .billMonth(billMonth) +// .paymentOrganization(importParam.getPaymentOrganization()) +// .paymentStatus(PaymentStatusEnum.COMMON.getValue()) +// .build()); + Map welColumnNameCodeMap = new HashMap<>(); //存储待更新的InsuranceAccountDetailPO数据 List addCompareList = new ArrayList<>(); //记录待删除hrsa_excel_bill_detail.id @@ -2647,6 +2648,11 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { if (taxAgentPoList.size() == 1) { paymentOrganization = taxAgentPoList.get(0).getId(); + welColumnNameCodeMap = welColumnNameCodeMap(InsuranceAccountDetailParam.builder() + .billMonth(billMonth) + .paymentOrganization(paymentOrganization.toString()) + .paymentStatus(PaymentStatusEnum.COMMON.getValue()) + .build()); } else { isError = true; Map errorMessageMap = Maps.newHashMap(); From e67cb5bf83df94cfc5238d478e1ba62e42dfa382 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 25 Dec 2023 16:31:36 +0800 Subject: [PATCH 40/92] =?UTF-8?q?=E4=B8=AA=E7=A8=8E=E6=89=A3=E7=BC=B4?= =?UTF-8?q?=E4=B9=89=E5=8A=A1=E4=BA=BAlike=E5=88=86=E6=88=903=E4=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/mapper/taxagent/TaxAgentMapper.xml | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/com/engine/salary/mapper/taxagent/TaxAgentMapper.xml b/src/com/engine/salary/mapper/taxagent/TaxAgentMapper.xml index 84e424805..b39f69b49 100644 --- a/src/com/engine/salary/mapper/taxagent/TaxAgentMapper.xml +++ b/src/com/engine/salary/mapper/taxagent/TaxAgentMapper.xml @@ -38,6 +38,31 @@ + + + + AND id IN + + #{id} + + + + AND name like '%'||#{param.name}||'%' + + + + + + AND id IN + + #{id} + + + + AND name like '%'+#{param.name}+'%' + + + diff --git a/src/com/engine/salary/mapper/taxdeclaration/TaxDeclarationValueMapper.java b/src/com/engine/salary/mapper/taxdeclaration/TaxDeclarationValueMapper.java index 1515f916c..fc5d0415f 100644 --- a/src/com/engine/salary/mapper/taxdeclaration/TaxDeclarationValueMapper.java +++ b/src/com/engine/salary/mapper/taxdeclaration/TaxDeclarationValueMapper.java @@ -120,4 +120,9 @@ public interface TaxDeclarationValueMapper { */ void batchInsert(@Param("collection") Collection taxDeclarationValues); + + List queryNotWagesEmpIds(@Param("taxDeclareRecordId")Long taxDeclareRecordId); + + List queryWagesEmpIds(@Param("taxDeclareRecordId")Long taxDeclareRecordId); + } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/taxdeclaration/TaxDeclarationValueMapper.xml b/src/com/engine/salary/mapper/taxdeclaration/TaxDeclarationValueMapper.xml index dfcaecaf1..5935df30e 100644 --- a/src/com/engine/salary/mapper/taxdeclaration/TaxDeclarationValueMapper.xml +++ b/src/com/engine/salary/mapper/taxdeclaration/TaxDeclarationValueMapper.xml @@ -428,4 +428,24 @@ + + + + \ No newline at end of file diff --git a/src/com/engine/salary/service/TaxDeclarationService.java b/src/com/engine/salary/service/TaxDeclarationService.java index cb12aae30..91b38c3eb 100644 --- a/src/com/engine/salary/service/TaxDeclarationService.java +++ b/src/com/engine/salary/service/TaxDeclarationService.java @@ -24,6 +24,7 @@ public interface TaxDeclarationService { List listByTaxCycleAndTaxAgentIds(YearMonth salaryMonth, Collection taxAgentIds); List listByTaxDeclareRecordId(Long taxDeclareRecordId); + List listByTaxDeclareRecordId(Long taxDeclareRecordId,Integer incomeCategory); PageInfo listPageByParam(TaxDeclarationListQueryParam queryParam); diff --git a/src/com/engine/salary/service/TaxDeclarationValueService.java b/src/com/engine/salary/service/TaxDeclarationValueService.java index ab129909c..70bd6f729 100644 --- a/src/com/engine/salary/service/TaxDeclarationValueService.java +++ b/src/com/engine/salary/service/TaxDeclarationValueService.java @@ -5,6 +5,7 @@ import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationValueListQuer import com.engine.salary.entity.taxdeclaration.param.TaxDeclareRecordDetailSaveParam; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationPO; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationValuePO; +import com.engine.salary.entity.taxdeclaration.po.TaxDeclareRecordPO; import com.engine.salary.util.page.PageInfo; import java.util.Collection; @@ -71,5 +72,12 @@ public interface TaxDeclarationValueService { */ void deleteByTaxDeclareRecordIds(Collection taxDeclareRecordIds); + /** + * 因为单独申报年终奖不可行 + * 需要补充正常工资薪金的申报,按0申报 + * @param po + */ + void autoAddWagesDeclare(TaxDeclareRecordPO po); + } diff --git a/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java index 3c8391812..d69513ae0 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java @@ -102,6 +102,15 @@ public class TaxDeclarationServiceImpl extends Service implements TaxDeclaration TaxDeclarationPO po = TaxDeclarationPO.builder().taxDeclareRecordId(taxDeclareRecordId).build(); return getTaxDeclarationMapper().listSome(po); } + @Override + public List listByTaxDeclareRecordId(Long taxDeclareRecordId,Integer incomeCategory) { + if (Objects.isNull(taxDeclareRecordId)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(84026, "参数错误")); + } + TaxDeclarationPO po = TaxDeclarationPO.builder().taxDeclareRecordId(taxDeclareRecordId).incomeCategory(incomeCategory).build(); + return getTaxDeclarationMapper().listSome(po); + } + @Override public PageInfo listPageByParam(TaxDeclarationListQueryParam queryParam) { diff --git a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java index e45ba18f2..b8633e57b 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java @@ -14,9 +14,13 @@ import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationValueListQuer import com.engine.salary.entity.taxdeclaration.param.TaxDeclareRecordDetailSaveParam; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationPO; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationValuePO; +import com.engine.salary.entity.taxdeclaration.po.TaxDeclareRecordPO; import com.engine.salary.entity.taxdeclaration.po.TaxReportColumnPO; import com.engine.salary.enums.salaryaccounting.EmployeeTypeEnum; +import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; import com.engine.salary.enums.salarysob.IncomeCategoryEnum; +import com.engine.salary.enums.sicategory.DeleteTypeEnum; +import com.engine.salary.enums.taxdeclaration.SourceEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.taxdeclaration.TaxDeclarationValueMapper; import com.engine.salary.service.*; @@ -27,6 +31,7 @@ import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import dm.jdbc.util.IdGenerator; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -142,7 +147,7 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar @Override public void save(TaxDeclareRecordDetailSaveParam param) { TaxDeclarationPO taxDeclaration = getTaxDeclarationService(user).getById(param.getTaxDeclarationId()); - if(taxDeclaration==null){ + if (taxDeclaration == null) { throw new SalaryRunTimeException("个税申报表不存在!"); } @@ -156,6 +161,7 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar .resultValueJson(JsonUtil.toJsonString(param.getTaxReportColumnValues())) .createTime(new Date()) .updateTime(new Date()) + .source(SourceEnum.ADD.getValue()) .creator((long) user.getUID()) .deleteType(0) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) @@ -172,6 +178,7 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar po.setResultValue(param.getTaxReportColumnValues()); po.setResultValueJson(JsonUtil.toJsonString(param.getTaxReportColumnValues())); po.setUpdateTime(new Date()); + po.setSource(SourceEnum.EDIT.getValue()); encryptUtil.encrypt(po, TaxDeclarationValuePO.class); getTaxDeclarationValueMapper().updateIgnoreNull(po); } @@ -179,10 +186,10 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar @Override public TaxDeclarationValuePO getById(Long id) { TaxDeclarationValuePO po = getTaxDeclarationValueMapper().getById(id); - if(po==null){ + if (po == null) { throw new SalaryRunTimeException("个税申报明细不存在!"); } - encryptUtil.decrypt(po,TaxDeclarationValuePO.class); + encryptUtil.decrypt(po, TaxDeclarationValuePO.class); po.setResultValue(JsonUtil.parseMap(po.getResultValueJson(), String.class)); return po; @@ -207,4 +214,84 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar }); return taxDeclarationValues; } + + + @Override + public void autoAddWagesDeclare(TaxDeclareRecordPO taxDeclareRecord) { + + Long taxDeclareRecordId = taxDeclareRecord.getId(); + Date now = new Date(); + + //非正常薪资的人员 + List notWagesEmpIds = getTaxDeclarationValueMapper().queryNotWagesEmpIds(taxDeclareRecordId); + if (CollectionUtils.isEmpty(notWagesEmpIds)) { + return; + } + + //正常薪资人员 + List wagesEmpIds = getTaxDeclarationValueMapper().queryWagesEmpIds(taxDeclareRecordId); + + //比较差异 + List autoAddIds = notWagesEmpIds.stream().filter(id -> !wagesEmpIds.contains(id)).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(autoAddIds)) { + return; + } + + //正常薪资的表头 + List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(IncomeCategoryEnum.WAGES_AND_SALARIES); + Map valueMap = Maps.newHashMap(); + for (TaxReportColumnPO taxReportColumn : taxReportColumns) { + String value = Objects.equals(taxReportColumn.getDataType(), SalaryDataTypeEnum.NUMBER.getValue()) ? "0.00" : ""; + valueMap.put(taxReportColumn.getReportColumnDataIndex(), value); + } + + //当前申报表是否含正常申报 + List list = getTaxDeclarationService(user).listByTaxDeclareRecordId(taxDeclareRecordId, IncomeCategoryEnum.WAGES_AND_SALARIES.getValue()); + TaxDeclarationPO taxDeclarationPO; + if (CollectionUtils.isNotEmpty(list)) { + if (list.size() > 1) { + throw new SalaryRunTimeException("存在多条正常工资薪金申报表数据"); + } + taxDeclarationPO = list.get(0); + } else { + taxDeclarationPO = TaxDeclarationPO + .builder() + .id(IdGenerator.generate()) + .taxDeclareRecordId(taxDeclareRecordId) + .incomeCategory(IncomeCategoryEnum.WAGES_AND_SALARIES.getValue()) + .taxAgentId(taxDeclareRecord.getTaxAgentId()) + .salaryMonth(taxDeclareRecord.getSalaryMonth()) + .taxCycle(taxDeclareRecord.getTaxCycle()) + .description(taxDeclareRecord.getRemark()) + .controlView(0) + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .deleteType(DeleteTypeEnum.NOT_DELETED.getValue()) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + List taxList = new ArrayList<>(); + getTaxDeclarationService(user).saveBatch(taxList); + } + + //组装数据,自动补足 + List autoAddValuePOs = autoAddIds.stream().map((empId -> { + TaxDeclarationValuePO taxDeclarationValue = TaxDeclarationValuePO.builder() + .id(IdGenerator.generate()) + .taxDeclareRecordId(taxDeclarationPO.getTaxDeclareRecordId()) + .taxDeclarationId(taxDeclarationPO.getId()) + .employeeType(0) + .employeeId(empId) + .resultValue(valueMap) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .creator((long) user.getUID()) + .deleteType(DeleteTypeEnum.NOT_DELETED.getValue()) + .createTime(now) + .updateTime(now) + .source(SourceEnum.AUTO.getValue()) + .build(); + return taxDeclarationValue; + })).collect(Collectors.toList()); + batchSave(autoAddValuePOs); + } } diff --git a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java index f84035722..06a8da778 100644 --- a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java @@ -376,6 +376,9 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe } } + //艾志正常工资薪金补足年终奖人员 + getTaxDeclarationValueService(user).autoAddWagesDeclare(taxDeclareRecord); + //更新核算记录状态 getSalaryAcctRecordService(user).updateStatusByIds(salaryAcctRecordIds, SalaryAcctRecordStatusEnum.DECLARED); } @@ -946,7 +949,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe Map>> map = new HashMap<>(); List list = getTaxDeclarationService(user).listByTaxDeclareRecordId(id); - list.stream().map(TaxDeclarationPO::getIncomeCategory).map(IncomeCategoryEnum::parseByValue).forEach(e->e.parseGetDeclareTaxResultFeedbackResponse(map,declareTaxResultFeedbackResponse)); + list.stream().map(TaxDeclarationPO::getIncomeCategory).map(IncomeCategoryEnum::parseByValue).forEach(e -> e.parseGetDeclareTaxResultFeedbackResponse(map, declareTaxResultFeedbackResponse)); return ExcelUtil.genWorkbookV2(map); } From 7e561527ac4ce7c1f7cea16c80e0832c1cae31e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 27 Dec 2023 17:35:16 +0800 Subject: [PATCH 46/92] =?UTF-8?q?=E8=A1=A5=E5=85=85=E6=AD=A3=E5=B8=B8?= =?UTF-8?q?=E5=B7=A5=E8=B5=84=E8=96=AA=E9=87=91=E7=9A=84=E7=94=B3=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/TaxDeclareRecordServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java index 06a8da778..f68dee7eb 100644 --- a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java @@ -376,7 +376,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe } } - //艾志正常工资薪金补足年终奖人员 + //补充正常工资薪金的申报人员 getTaxDeclarationValueService(user).autoAddWagesDeclare(taxDeclareRecord); //更新核算记录状态 From 1c499ffd94ed04593d3c029e5a57362029b6d025 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 28 Dec 2023 09:39:09 +0800 Subject: [PATCH 47/92] =?UTF-8?q?=E8=A1=A5=E5=85=85=E6=AD=A3=E5=B8=B8?= =?UTF-8?q?=E5=B7=A5=E8=B5=84=E8=96=AA=E9=87=91=E7=9A=84=E7=94=B3=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202312270703.sql | 3 ++ resource/sqlupgrade/GS/sql202312270703.sql | 3 ++ resource/sqlupgrade/JC/sql202312270703.sql | 3 ++ resource/sqlupgrade/Mysql/sql202312270703.sql | 1 + .../sqlupgrade/Oracle/sql202312270703.sql | 2 ++ resource/sqlupgrade/PG/sql202312270703.sql | 1 + .../sqlupgrade/SQLServer/sql202312270703.sql | 2 ++ resource/sqlupgrade/ST/sql202312270703.sql | 3 ++ .../dto/TaxDeclareRecordDetailFormDTO.java | 11 ++++++ .../taxdeclaration/po/TaxDeclareRecordPO.java | 2 ++ .../TaxDeclarationValueMapper.xml | 35 +++++++++++++++---- .../wrapper/TaxDeclareRecordWrapper.java | 7 +++- 12 files changed, 65 insertions(+), 8 deletions(-) create mode 100644 resource/sqlupgrade/DM/sql202312270703.sql create mode 100644 resource/sqlupgrade/GS/sql202312270703.sql create mode 100644 resource/sqlupgrade/JC/sql202312270703.sql create mode 100644 resource/sqlupgrade/Mysql/sql202312270703.sql create mode 100644 resource/sqlupgrade/Oracle/sql202312270703.sql create mode 100644 resource/sqlupgrade/PG/sql202312270703.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202312270703.sql create mode 100644 resource/sqlupgrade/ST/sql202312270703.sql diff --git a/resource/sqlupgrade/DM/sql202312270703.sql b/resource/sqlupgrade/DM/sql202312270703.sql new file mode 100644 index 000000000..fa59157ed --- /dev/null +++ b/resource/sqlupgrade/DM/sql202312270703.sql @@ -0,0 +1,3 @@ +update hrsa_tax_declaration_value set source = 0; +/ + diff --git a/resource/sqlupgrade/GS/sql202312270703.sql b/resource/sqlupgrade/GS/sql202312270703.sql new file mode 100644 index 000000000..fa59157ed --- /dev/null +++ b/resource/sqlupgrade/GS/sql202312270703.sql @@ -0,0 +1,3 @@ +update hrsa_tax_declaration_value set source = 0; +/ + diff --git a/resource/sqlupgrade/JC/sql202312270703.sql b/resource/sqlupgrade/JC/sql202312270703.sql new file mode 100644 index 000000000..fa59157ed --- /dev/null +++ b/resource/sqlupgrade/JC/sql202312270703.sql @@ -0,0 +1,3 @@ +update hrsa_tax_declaration_value set source = 0; +/ + diff --git a/resource/sqlupgrade/Mysql/sql202312270703.sql b/resource/sqlupgrade/Mysql/sql202312270703.sql new file mode 100644 index 000000000..099b6ab58 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202312270703.sql @@ -0,0 +1 @@ +update hrsa_tax_declaration_value set source = 0; \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202312270703.sql b/resource/sqlupgrade/Oracle/sql202312270703.sql new file mode 100644 index 000000000..e2477f553 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202312270703.sql @@ -0,0 +1,2 @@ +update hrsa_tax_declaration_value set source = 0; +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202312270703.sql b/resource/sqlupgrade/PG/sql202312270703.sql new file mode 100644 index 000000000..099b6ab58 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202312270703.sql @@ -0,0 +1 @@ +update hrsa_tax_declaration_value set source = 0; \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202312270703.sql b/resource/sqlupgrade/SQLServer/sql202312270703.sql new file mode 100644 index 000000000..0384f9313 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202312270703.sql @@ -0,0 +1,2 @@ +update hrsa_tax_declaration_value set source = 0 +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202312270703.sql b/resource/sqlupgrade/ST/sql202312270703.sql new file mode 100644 index 000000000..fa59157ed --- /dev/null +++ b/resource/sqlupgrade/ST/sql202312270703.sql @@ -0,0 +1,3 @@ +update hrsa_tax_declaration_value set source = 0; +/ + diff --git a/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclareRecordDetailFormDTO.java b/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclareRecordDetailFormDTO.java index a94811684..04e7d0bff 100644 --- a/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclareRecordDetailFormDTO.java +++ b/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclareRecordDetailFormDTO.java @@ -2,6 +2,8 @@ package com.engine.salary.entity.taxdeclaration.dto; import com.engine.salary.annotation.TableTitle; import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -29,6 +31,15 @@ public class TaxDeclareRecordDetailFormDTO { */ private Long taxDeclarationId; + //主键id + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + //人员id + @JsonSerialize(using = ToStringSerializer.class) + private Long employeeId; + private Integer employeeType; + @TableTitle(title = "工号", dataIndex = "jobNum", key = "jobNum") private String jobNum; diff --git a/src/com/engine/salary/entity/taxdeclaration/po/TaxDeclareRecordPO.java b/src/com/engine/salary/entity/taxdeclaration/po/TaxDeclareRecordPO.java index 6664f1985..8a88a15ee 100644 --- a/src/com/engine/salary/entity/taxdeclaration/po/TaxDeclareRecordPO.java +++ b/src/com/engine/salary/entity/taxdeclaration/po/TaxDeclareRecordPO.java @@ -1,5 +1,6 @@ package com.engine.salary.entity.taxdeclaration.po; +import com.engine.salary.enums.taxdeclaration.TaxDeclareStatusEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -50,6 +51,7 @@ public class TaxDeclareRecordPO implements Serializable { private Integer taxDeclareType; /** * 申报状态 + * @see TaxDeclareStatusEnum */ private Integer taxDeclareStatus; /** diff --git a/src/com/engine/salary/mapper/taxdeclaration/TaxDeclarationValueMapper.xml b/src/com/engine/salary/mapper/taxdeclaration/TaxDeclarationValueMapper.xml index 5935df30e..5eba618cb 100644 --- a/src/com/engine/salary/mapper/taxdeclaration/TaxDeclarationValueMapper.xml +++ b/src/com/engine/salary/mapper/taxdeclaration/TaxDeclarationValueMapper.xml @@ -13,6 +13,7 @@ + @@ -30,6 +31,7 @@ , t.employee_type , t.employee_id , t.result_value_json + , t.source @@ -88,6 +90,9 @@ AND result_value_json = #{resultValueJson} + + AND source = #{source} + AND id IN @@ -142,6 +147,9 @@ result_value_json, + + source, + @@ -177,6 +185,9 @@ #{resultValueJson}, + + #{source}, + @@ -195,7 +206,8 @@ tax_declaration_id, employee_type, employee_id, - result_value_json + result_value_json, + source ) VALUES ( @@ -210,7 +222,8 @@ #{item.taxDeclarationId}, #{item.employeeType}, #{item.employeeId}, - #{item.resultValueJson} + #{item.resultValueJson}, + #{item.source} ) @@ -228,7 +241,8 @@ tax_declaration_id, employee_type, employee_id, - result_value_json + result_value_json, + source ) @@ -243,7 +257,8 @@ #{item.taxDeclarationId,jdbcType=DOUBLE}, #{item.employeeType,jdbcType=INTEGER}, #{item.employeeId,jdbcType=DOUBLE}, - #{item.resultValueJson,jdbcType=VARCHAR} + #{item.resultValueJson,jdbcType=VARCHAR}, + #{item.source,jdbcType=INTEGER} from dual @@ -262,7 +277,8 @@ tax_declaration_id, employee_type, employee_id, - result_value_json + result_value_json, + source ) VALUES ( @@ -276,7 +292,8 @@ #{item.taxDeclarationId}, #{item.employeeType}, #{item.employeeId}, - #{item.resultValueJson} + #{item.resultValueJson}, + #{item.source} ) @@ -295,6 +312,7 @@ employee_type=#{employeeType}, employee_id=#{employeeId}, result_value_json=#{resultValueJson}, + source=#{source}, WHERE id = #{id} AND delete_type = 0 @@ -334,6 +352,9 @@ result_value_json=#{resultValueJson}, + + source=#{source}, + WHERE id = #{id} AND delete_type = 0 @@ -434,7 +455,7 @@ left join hrsa_tax_declaration_value b on a.id = b.tax_declaration_id where a.delete_type = 0 and b.delete_type = 0 - and a.income_category ]]> 1 + and a.income_category = 2 and a.tax_declare_record_id = #{taxDeclareRecordId} diff --git a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java index 17b58d8e1..28bcde42e 100644 --- a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java +++ b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java @@ -735,7 +735,12 @@ public class TaxDeclareRecordWrapper extends Service { EmployeeDeclarePO employeeDeclarePO = employeeDeclarePOS.get(0); // 查询个税申报表列 List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(IncomeCategoryEnum.parseByValue(taxDeclarationPO.getIncomeCategory())); - return TaxDeclareRecordDetailFormDTO.builder() + return TaxDeclareRecordDetailFormDTO + .builder() + .id(id) + .employeeId(employeeDeclarePO.getEmployeeId()) + .employeeType(employeeDeclarePO.getEmployeeType()) + .taxDeclarationId(taxDeclarationPO.getId()) .incomeCategory(IncomeCategoryEnum.parseByValue(taxDeclarationPO.getIncomeCategory()).getDefaultLabel()) .cardNum(employeeDeclarePO.getCardNum()) .cardType(SalaryEnumUtil.enumMatchByValue(employeeDeclarePO.getCardType(), CardTypeEnum.class).getDefaultLabel()) From 0f4d92f302ada3258313c769b734aa5f310b7741 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 28 Dec 2023 10:10:08 +0800 Subject: [PATCH 48/92] =?UTF-8?q?=E4=BA=BA=E5=91=98=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=8A=A5=E9=80=81=E8=BA=AB=E4=BB=BD=E4=B8=AD=E5=8F=B7=E8=BD=AC?= =?UTF-8?q?=E4=B8=BA=E5=A4=A7=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/EmployeeDeclareExcelServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java b/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java index 4352be9cf..4bfb84b78 100644 --- a/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java @@ -267,7 +267,8 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(0, "证件号码格式不正确")); errorData.add(errorMessageMap); } else { - employeeDeclareExcel.setCardNum(dataValue); + // 身份证号全部转为大写 + employeeDeclareExcel.setCardNum(dataValue.toUpperCase()); employeeDeclareExcel.setGender(SalaryCardUtil.judgeGender(dataValue).getValue().toString()); employeeDeclareExcel.setBirthday(SalaryCardUtil.judgeBirthday(dataValue).toString()); } From 2befcfd1f2585e6103152ac5c5495c845656b11e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 28 Dec 2023 11:08:53 +0800 Subject: [PATCH 49/92] =?UTF-8?q?pg=E8=84=9A=E6=9C=AC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/PG/sql202206090403.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resource/sqlupgrade/PG/sql202206090403.sql b/resource/sqlupgrade/PG/sql202206090403.sql index 679a8cc59..8f5d32f79 100644 --- a/resource/sqlupgrade/PG/sql202206090403.sql +++ b/resource/sqlupgrade/PG/sql202206090403.sql @@ -1,3 +1,3 @@ -ALTER TABLE hrsa_tax_declaration ADD COLUMN income_category int NOT NULL ; +ALTER TABLE hrsa_tax_declaration ADD COLUMN income_category int ; -ALTER TABLE hrsa_tax_declaration_detail ADD COLUMN employee_type int NOT NULL ; \ No newline at end of file +ALTER TABLE hrsa_tax_declaration_detail ADD COLUMN employee_type int ; \ No newline at end of file From 4e0a5b4b7f9936e1ac71f3432ab6c6eec848db86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 28 Dec 2023 14:09:34 +0800 Subject: [PATCH 50/92] =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E5=86=85=E7=BD=AE?= =?UTF-8?q?=E7=AE=97=E7=A8=8E=E6=98=8E=E7=BB=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DeclareTaxResultFeedbackQueryParam.java | 18 ++++++++++++++++ .../taxdeclaration/po/TaxDeclareRecordPO.java | 4 ++++ .../taxdeclaration/TaxDeclareRecordMapper.xml | 21 +++++++++++++++++++ .../service/TaxDeclareRecordService.java | 3 ++- .../impl/TaxDeclareRecordServiceImpl.java | 10 ++++++--- .../salary/web/TaxDeclarationController.java | 6 +++--- .../wrapper/TaxDeclareRecordWrapper.java | 4 ++-- 7 files changed, 57 insertions(+), 9 deletions(-) create mode 100644 src/com/engine/salary/entity/taxdeclaration/param/DeclareTaxResultFeedbackQueryParam.java diff --git a/src/com/engine/salary/entity/taxdeclaration/param/DeclareTaxResultFeedbackQueryParam.java b/src/com/engine/salary/entity/taxdeclaration/param/DeclareTaxResultFeedbackQueryParam.java new file mode 100644 index 000000000..7ce6c69c7 --- /dev/null +++ b/src/com/engine/salary/entity/taxdeclaration/param/DeclareTaxResultFeedbackQueryParam.java @@ -0,0 +1,18 @@ +package com.engine.salary.entity.taxdeclaration.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +@Data +@Builder +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +public class DeclareTaxResultFeedbackQueryParam { + Long id; + + String requestId; +} diff --git a/src/com/engine/salary/entity/taxdeclaration/po/TaxDeclareRecordPO.java b/src/com/engine/salary/entity/taxdeclaration/po/TaxDeclareRecordPO.java index 8a88a15ee..e65fff3d7 100644 --- a/src/com/engine/salary/entity/taxdeclaration/po/TaxDeclareRecordPO.java +++ b/src/com/engine/salary/entity/taxdeclaration/po/TaxDeclareRecordPO.java @@ -62,6 +62,10 @@ public class TaxDeclareRecordPO implements Serializable { * 请求的requestId */ private String requestId; + /** + * 申报的requestId,用于下载申报过程 + */ + private String declareRequestId; /** * 备注 */ diff --git a/src/com/engine/salary/mapper/taxdeclaration/TaxDeclareRecordMapper.xml b/src/com/engine/salary/mapper/taxdeclaration/TaxDeclareRecordMapper.xml index 7edc1e580..c6b660859 100644 --- a/src/com/engine/salary/mapper/taxdeclaration/TaxDeclareRecordMapper.xml +++ b/src/com/engine/salary/mapper/taxdeclaration/TaxDeclareRecordMapper.xml @@ -13,6 +13,7 @@ + @@ -38,6 +39,7 @@ , t.tax_cycle , t.remark , t.request_id + , t.declare_request_id , t.tax_declare_type , t.tax_declare_status , t.display_update_icon @@ -105,6 +107,9 @@ AND request_id = #{requestId} + + AND declare_request_id = #{declareRequestId} + AND tax_declare_type = #{taxDeclareType} @@ -189,6 +194,9 @@ request_id, + + declare_request_id, + tax_declare_type, @@ -248,6 +256,9 @@ #{requestId}, + + #{declareRequestId}, + #{taxDeclareType}, @@ -291,6 +302,7 @@ tax_cycle, remark, request_id, + declare_request_id, tax_declare_type, tax_declare_status, display_update_icon, @@ -314,6 +326,7 @@ #{item.taxCycle}, #{item.remark}, #{item.requestId}, + #{item.declareRequestId}, #{item.taxDeclareType}, #{item.taxDeclareStatus}, #{item.displayUpdateIcon}, @@ -340,6 +353,7 @@ tax_cycle, remark, request_id, + declare_request_id, tax_declare_type, tax_declare_status, display_update_icon, @@ -363,6 +377,7 @@ #{item.taxCycle,jdbcType=DATE}, #{item.remark,jdbcType=VARCHAR}, #{item.requestId,jdbcType=DOUBLE}, + #{item.declareRequestId,jdbcType=VARCHAR}, #{item.taxDeclareType,jdbcType=INTEGER}, #{item.taxDeclareStatus,jdbcType=INTEGER}, #{item.displayUpdateIcon,jdbcType=INTEGER}, @@ -390,6 +405,7 @@ tax_cycle, remark, request_id, + declare_request_id, tax_declare_type, tax_declare_status, display_update_icon, @@ -412,6 +428,7 @@ #{item.taxCycle}, #{item.remark}, #{item.requestId}, + #{item.declareRequestId}, #{item.taxDeclareType}, #{item.taxDeclareStatus}, #{item.displayUpdateIcon}, @@ -438,6 +455,7 @@ tax_cycle=#{taxCycle}, remark=#{remark}, request_id=#{requestId}, + declare_request_id=#{declareRequestId}, tax_declare_type=#{taxDeclareType}, tax_declare_status=#{taxDeclareStatus}, display_update_icon=#{displayUpdateIcon}, @@ -485,6 +503,9 @@ request_id=#{requestId}, + + declare_request_id=#{declareRequestId}, + tax_declare_type=#{taxDeclareType}, diff --git a/src/com/engine/salary/service/TaxDeclareRecordService.java b/src/com/engine/salary/service/TaxDeclareRecordService.java index a294e259d..aac9db48d 100644 --- a/src/com/engine/salary/service/TaxDeclareRecordService.java +++ b/src/com/engine/salary/service/TaxDeclareRecordService.java @@ -2,6 +2,7 @@ package com.engine.salary.service; import com.engine.salary.common.YearMonthRange; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationRateDTO; +import com.engine.salary.entity.taxdeclaration.param.DeclareTaxResultFeedbackQueryParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationListQueryParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationSaveParam; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationPO; @@ -140,7 +141,7 @@ public interface TaxDeclareRecordService { */ Object getDeclareTaxResultFeedback(Long id); - XSSFWorkbook exportGetDeclareTaxResultFeedback(Long id,String requestId); + XSSFWorkbook exportGetDeclareTaxResultFeedback(DeclareTaxResultFeedbackQueryParam param); /** * 作废 * diff --git a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java index f68dee7eb..8fe875eb2 100644 --- a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java @@ -26,6 +26,7 @@ import com.engine.salary.entity.taxapiflow.po.TaxDeclarationApiFlowRecordPO; import com.engine.salary.entity.taxdeclaration.bo.*; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationRateDTO; import com.engine.salary.entity.taxdeclaration.param.AbnormalEmployeeListQueryParam; +import com.engine.salary.entity.taxdeclaration.param.DeclareTaxResultFeedbackQueryParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationListQueryParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationSaveParam; import com.engine.salary.entity.taxdeclaration.po.*; @@ -772,6 +773,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe // 申报类型 taxDeclareRecord.setTaxPayAmount(Util.null2String(declareTaxFeedbackResponse.getBody().get("ykjse"))); taxDeclareRecord.setPersonNum(Integer.parseInt(Optional.ofNullable(declareTaxFeedbackResponse.getBody().get("nsrc")).orElse("0").toString())); + taxDeclareRecord.setDeclareRequestId(taxDeclareRecord.getRequestId()); taxDeclareRecord.setRequestId(""); taxDeclareRecord.setUpdateTime(new Date()); BigDecimal purePaidAmount = SalaryEntityUtil.empty2Zero(taxDeclareRecord.getTaxPurePaidAmount()); @@ -936,16 +938,18 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe TaxDeclareRecordPO taxDeclareRecord = taxDeclareRequest.getTaxDeclareRecord(); DeclareClient declareClient = new DeclareClient(taxDeclareRecord.getTaxAgentId()); - return declareClient.getDeclareTaxResultFeedback(taxDeclareRecord.getRequestId()); + return declareClient.getDeclareTaxResultFeedback(taxDeclareRecord.getDeclareRequestId()); } @Override - public XSSFWorkbook exportGetDeclareTaxResultFeedback(Long id, String requestId) { + public XSSFWorkbook exportGetDeclareTaxResultFeedback(DeclareTaxResultFeedbackQueryParam param) { + Long id = param.getId(); + String requestId = param.getRequestId(); TaxDeclareRequest taxDeclareRequest = buildTaxDeclareRequest(id); TaxDeclareRecordPO taxDeclareRecord = taxDeclareRequest.getTaxDeclareRecord(); DeclareClient declareClient = new DeclareClient(taxDeclareRecord.getTaxAgentId()); - GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse = declareClient.getDeclareTaxResultFeedback(StringUtils.isEmpty(requestId) ? taxDeclareRecord.getRequestId() : requestId); + GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse = declareClient.getDeclareTaxResultFeedback(StringUtils.isEmpty(requestId) ? taxDeclareRecord.getDeclareRequestId() : requestId); Map>> map = new HashMap<>(); List list = getTaxDeclarationService(user).listByTaxDeclareRecordId(id); diff --git a/src/com/engine/salary/web/TaxDeclarationController.java b/src/com/engine/salary/web/TaxDeclarationController.java index 0d6ad1e9e..e4746208c 100644 --- a/src/com/engine/salary/web/TaxDeclarationController.java +++ b/src/com/engine/salary/web/TaxDeclarationController.java @@ -222,14 +222,14 @@ public class TaxDeclarationController { * * @return */ - @GET + @POST @Path("/exportGetDeclareTaxResultFeedback") @Produces(MediaType.APPLICATION_OCTET_STREAM) - public Response exportGetDeclareTaxResultFeedback(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id, @QueryParam(value = "requestId") String requestId) { + public Response exportGetDeclareTaxResultFeedback(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody DeclareTaxResultFeedbackQueryParam param) { try { User user = HrmUserVarify.getUser(request, response); - XSSFWorkbook workbook = getTaxDeclareRecordWrapper(user).exportGetDeclareTaxResultFeedback(id, requestId); + XSSFWorkbook workbook = getTaxDeclareRecordWrapper(user).exportGetDeclareTaxResultFeedback(param); String fileName = "申报内置算税结果-" + LocalDate.now(); try { fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); diff --git a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java index 62e2ed562..18c81327d 100644 --- a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java +++ b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java @@ -477,8 +477,8 @@ public class TaxDeclareRecordWrapper extends Service { } - public XSSFWorkbook exportGetDeclareTaxResultFeedback(Long id, String requestId) { - return getTaxDeclareRecordService(user).exportGetDeclareTaxResultFeedback(id, requestId); + public XSSFWorkbook exportGetDeclareTaxResultFeedback(DeclareTaxResultFeedbackQueryParam param) { + return getTaxDeclareRecordService(user).exportGetDeclareTaxResultFeedback(param); } /** From fefb8264c88963f4e1375f27b4667419b0764a8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 28 Dec 2023 15:36:27 +0800 Subject: [PATCH 51/92] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/AbnormalEmployeeListDTO.java | 6 ++++ .../dto/FailEmployeeListDTO.java | 16 +++++++--- .../impl/TaxDeclarationExcelServiceImpl.java | 8 ++--- .../impl/TaxDeclarationValueServiceImpl.java | 18 +++++++++-- .../impl/TaxDeclareRecordServiceImpl.java | 6 ++++ .../salary/web/TaxDeclarationController.java | 31 +++++++++++++++++++ 6 files changed, 74 insertions(+), 11 deletions(-) diff --git a/src/com/engine/salary/entity/taxdeclaration/dto/AbnormalEmployeeListDTO.java b/src/com/engine/salary/entity/taxdeclaration/dto/AbnormalEmployeeListDTO.java index 7970724c7..88f0400cd 100644 --- a/src/com/engine/salary/entity/taxdeclaration/dto/AbnormalEmployeeListDTO.java +++ b/src/com/engine/salary/entity/taxdeclaration/dto/AbnormalEmployeeListDTO.java @@ -2,6 +2,7 @@ package com.engine.salary.entity.taxdeclaration.dto; import com.engine.salary.annotation.TableTitle; import com.engine.salary.enums.employeedeclare.DeclareStatusEnum; +import com.engine.salary.util.excel.ExcelHead; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; @@ -32,18 +33,22 @@ public class AbnormalEmployeeListDTO { //姓名") @TableTitle(title = "姓名",dataIndex = "employeeName",key = "employeeName") + @ExcelHead(title = "姓名",dataIndex = "employeeName") private String employeeName; //工号") @TableTitle(title = "工号",dataIndex = "jobNum",key = "jobNum") + @ExcelHead(title = "工号",dataIndex = "jobNum") private String jobNum; //证件类型") @TableTitle(title = "证件类型",dataIndex = "cardType",key = "cardType") + @ExcelHead(title = "证件类型",dataIndex = "cardType") private String cardType; //证件号码") @TableTitle(title = "证件号码",dataIndex = "cardNum",key = "cardNum") + @ExcelHead(title = "证件号码",dataIndex = "cardNum") private String cardNum; //报送状态") @@ -51,5 +56,6 @@ public class AbnormalEmployeeListDTO { //报送状态") @TableTitle(title = "报送状态",dataIndex = "declareStatusDesc",key = "declareStatusDesc") + @ExcelHead(title = "报送状态",dataIndex = "declareStatusDesc") private String declareStatusDesc; } diff --git a/src/com/engine/salary/entity/taxdeclaration/dto/FailEmployeeListDTO.java b/src/com/engine/salary/entity/taxdeclaration/dto/FailEmployeeListDTO.java index 7d2ae71d2..a6e79e5ec 100644 --- a/src/com/engine/salary/entity/taxdeclaration/dto/FailEmployeeListDTO.java +++ b/src/com/engine/salary/entity/taxdeclaration/dto/FailEmployeeListDTO.java @@ -1,6 +1,7 @@ package com.engine.salary.entity.taxdeclaration.dto; import com.engine.salary.annotation.TableTitle; +import com.engine.salary.util.excel.ExcelHead; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; @@ -23,7 +24,8 @@ public class FailEmployeeListDTO { private Long id; //姓名 - @TableTitle(title = "姓名",dataIndex = "employeeName",key = "employeeName") + @TableTitle(title = "姓名", dataIndex = "employeeName", key = "employeeName") + @ExcelHead(title = "姓名", dataIndex = "employeeName") private String employeeName; //个税扣缴义务人id @@ -31,18 +33,22 @@ public class FailEmployeeListDTO { private Long taxAgentId; //个税扣缴义务人名称 - @TableTitle(title = "个税扣缴义务人名称",dataIndex = "taxAgentName",key = "taxAgentName") + @TableTitle(title = "个税扣缴义务人名称", dataIndex = "taxAgentName", key = "taxAgentName") + @ExcelHead(title = "个税扣缴义务人名称", dataIndex = "taxAgentName") private String taxAgentName; //证件号码 - @TableTitle(title = "证件号码",dataIndex = "cardNum",key = "cardNum") + @TableTitle(title = "证件号码", dataIndex = "cardNum", key = "cardNum") + @ExcelHead(title = "证件号码", dataIndex = "cardNum") private String cardNum; //失败原因 - @TableTitle(title = "失败原因",dataIndex = "errorMsg",key = "errorMsg") + @TableTitle(title = "失败原因", dataIndex = "errorMsg", key = "errorMsg") + @ExcelHead(title = "失败原因", dataIndex = "errorMsg") private String errorMsg; //所得项目 - @TableTitle(title = "所得项目",dataIndex = "incomeCategory",key = "incomeCategory") + @TableTitle(title = "所得项目", dataIndex = "incomeCategory", key = "incomeCategory") + @ExcelHead(title = "所得项目", dataIndex = "incomeCategory") private String incomeCategory; } diff --git a/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java index 72597d4f2..6382be9b4 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java @@ -3,7 +3,6 @@ package com.engine.salary.service.impl; import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; -import com.engine.salary.annotation.SalaryTableColumn; import com.engine.salary.entity.taxdeclaration.dto.AbnormalEmployeeListDTO; import com.engine.salary.entity.taxdeclaration.dto.FailEmployeeListDTO; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationValueListDTO; @@ -13,6 +12,7 @@ import com.engine.salary.entity.taxdeclaration.po.*; import com.engine.salary.service.*; import com.engine.salary.util.JsonUtil; import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.excel.ExcelHead; import com.engine.salary.util.excel.ExcelSheetData; import com.engine.salary.util.excel.ExcelUtil; import com.google.common.collect.Lists; @@ -168,11 +168,11 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar private void parseHeader(Class clazz, List headerList, List dataIndexList) { Field[] declaredFields = clazz.getDeclaredFields(); for (Field declaredField : declaredFields) { - if (!declaredField.isAnnotationPresent(SalaryTableColumn.class)) { + if (!declaredField.isAnnotationPresent(ExcelHead.class)) { continue; } - SalaryTableColumn annotation = declaredField.getAnnotation(SalaryTableColumn.class); - headerList.add(SalaryI18nUtil.getI18nLabel(annotation.labelId(), annotation.text())); + ExcelHead annotation = declaredField.getAnnotation(ExcelHead.class); + headerList.add(SalaryI18nUtil.getI18nLabel(annotation.labelId(), annotation.title())); dataIndexList.add(declaredField.getName()); } } diff --git a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java index b8633e57b..b5ddd14b4 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java @@ -23,6 +23,7 @@ import com.engine.salary.enums.sicategory.DeleteTypeEnum; import com.engine.salary.enums.taxdeclaration.SourceEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.taxdeclaration.TaxDeclarationValueMapper; +import com.engine.salary.mapper.taxdeclaration.TaxDeclareRecordMapper; import com.engine.salary.service.*; import com.engine.salary.util.JsonUtil; import com.engine.salary.util.SalaryEntityUtil; @@ -56,6 +57,10 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar return MapperProxyFactory.getProxy(TaxDeclarationValueMapper.class); } + private TaxDeclareRecordMapper getTaxDeclareRecordMapper() { + return MapperProxyFactory.getProxy(TaxDeclareRecordMapper.class); + } + private SalaryEmployeeService getSalaryEmployeeService(User user) { return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); } @@ -151,10 +156,16 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar throw new SalaryRunTimeException("个税申报表不存在!"); } + Long taxDeclareRecordId = taxDeclaration.getTaxDeclareRecordId(); + TaxDeclareRecordPO declareRecordPO = getTaxDeclareRecordMapper().getById(taxDeclareRecordId); + if (declareRecordPO == null) { + throw new SalaryRunTimeException("个税申报记录不存在!"); + } + TaxDeclarationValuePO po = TaxDeclarationValuePO.builder() .id(IdGenerator.generate()) .taxDeclarationId(param.getTaxDeclarationId()) - .taxDeclareRecordId(taxDeclaration.getTaxDeclareRecordId()) + .taxDeclareRecordId(taxDeclareRecordId) .employeeId(param.getEmployeeId()) .employeeType(param.getEmployeeType()) .resultValue(param.getTaxReportColumnValues()) @@ -167,9 +178,12 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) .build(); encryptUtil.encrypt(po, TaxDeclarationValuePO.class); - getTaxDeclarationValueMapper().insertIgnoreNull(po); + //新增年终奖 + if (IncomeCategoryEnum.ONETIME_ANNUAL_BONUS.getValue().equals(taxDeclaration.getIncomeCategory())) { + autoAddWagesDeclare(declareRecordPO); + } } @Override diff --git a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java index 8fe875eb2..7f388cf8f 100644 --- a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java @@ -309,6 +309,12 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe } } + //补充正常工资薪金的申报人员 + newTaxDeclareRecords.forEach(taxDeclareRecordPO -> { + getTaxDeclarationValueService(user).autoAddWagesDeclare(taxDeclareRecordPO); + }); + + //更新核算记录状态 getSalaryAcctRecordService(user).updateStatusByIds(salaryAcctRecordIds, SalaryAcctRecordStatusEnum.DECLARED); // // 记录日志 diff --git a/src/com/engine/salary/web/TaxDeclarationController.java b/src/com/engine/salary/web/TaxDeclarationController.java index e4746208c..b6963b187 100644 --- a/src/com/engine/salary/web/TaxDeclarationController.java +++ b/src/com/engine/salary/web/TaxDeclarationController.java @@ -653,4 +653,35 @@ public class TaxDeclarationController { } } +// @POST +// @Path("/downloadTemplate") +// @Produces(MediaType.APPLICATION_OCTET_STREAM) +// public Response getAll(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody DownloadTemplateParam param) { +// try { +// User user = HrmUserVarify.getUser(request, response); +// +// +// XSSFWorkbook workbook = getTaxDeclareRecordWrapper(user).downloadTemplate(queryParam); +// +// String fileName = "往期累计情况导入模板" + LocalDate.now(); +// +// try { +// fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); +// } catch (UnsupportedEncodingException e) { +// log.error(e.getMessage(), e); +// } +// +// 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) { +// log.error("往期累计情况导入模板导出异常", e); +// throw e; +// } +// } + } From 06fe3144ba995ac3b3d98792c0a27f28af2dae66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 28 Dec 2023 15:37:01 +0800 Subject: [PATCH 52/92] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/util/excel/DataTypeEnum.java | 32 +++++++++++++++++++ .../engine/salary/util/excel/ExcelHead.java | 28 ++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 src/com/engine/salary/util/excel/DataTypeEnum.java create mode 100644 src/com/engine/salary/util/excel/ExcelHead.java diff --git a/src/com/engine/salary/util/excel/DataTypeEnum.java b/src/com/engine/salary/util/excel/DataTypeEnum.java new file mode 100644 index 000000000..15e845cd9 --- /dev/null +++ b/src/com/engine/salary/util/excel/DataTypeEnum.java @@ -0,0 +1,32 @@ +package com.engine.salary.util.excel; + +import java.util.Arrays; +import java.util.Objects; + +public enum DataTypeEnum { + string("string", "字符类型"), + number("string", "数字类型"), + date("string", "日期类型"); + + private String value; + private String name; + + DataTypeEnum(String value, String name) { + this.value = value; + this.name = name; + } + + public String getValue() { + return value; + } + + public String getName() { + return name; + } + + + public static DataTypeEnum parseByValue(String value) { + return Arrays.stream(DataTypeEnum.values()).filter(typeEnum -> Objects.equals(typeEnum.getValue(), value)).findFirst().orElse(null); + } + +} diff --git a/src/com/engine/salary/util/excel/ExcelHead.java b/src/com/engine/salary/util/excel/ExcelHead.java new file mode 100644 index 000000000..cec7da51d --- /dev/null +++ b/src/com/engine/salary/util/excel/ExcelHead.java @@ -0,0 +1,28 @@ +package com.engine.salary.util.excel; + +import java.lang.annotation.*; + +/** + * 数据列表表头 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Target({ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface ExcelHead { + + String title() default ""; + + String dataIndex() default ""; + + DataTypeEnum dataType() default DataTypeEnum.string; + + int labelId() default -1; + + String width() default ""; + +} From 7e22711dcd684350c7006efbbc4ecbfa545ab9fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 28 Dec 2023 15:47:05 +0800 Subject: [PATCH 53/92] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E5=B7=A5=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/TaxDeclarationAnnualListDTO.java | 11 +++++ .../dto/TaxDeclarationLaborListDTO.java | 40 +++++++++++++------ .../dto/TaxDeclarationWageListDTO.java | 26 ++++++++++++ .../impl/TaxDeclarationExcelServiceImpl.java | 28 ++----------- .../engine/salary/util/excel/ExcelUtil.java | 22 ++++++++++ 5 files changed, 89 insertions(+), 38 deletions(-) diff --git a/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclarationAnnualListDTO.java b/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclarationAnnualListDTO.java index 75b1b3191..696a3f9f7 100644 --- a/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclarationAnnualListDTO.java +++ b/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclarationAnnualListDTO.java @@ -2,6 +2,7 @@ package com.engine.salary.entity.taxdeclaration.dto; import com.engine.salary.annotation.SalaryTableColumn; import com.engine.salary.annotation.TableTitle; +import com.engine.salary.util.excel.ExcelHead; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; @@ -31,59 +32,69 @@ public class TaxDeclarationAnnualListDTO { text = "工号", width = "10%", column = "jobNum" ) @TableTitle(title ="工号",dataIndex = "jobNum",key = "jobNum") + @ExcelHead(title ="工号",dataIndex = "jobNum") private String jobNum; @SalaryTableColumn( text = "姓名", width = "10%", column = "username" ) @TableTitle(title ="姓名",dataIndex = "username",key = "username") + @ExcelHead(title ="姓名",dataIndex = "username") private String username; @SalaryTableColumn( text = "证件类型", width = "10%", column = "cardType" ) @TableTitle(title ="证件类型",dataIndex = "cardType",key = "cardType") + @ExcelHead(title ="证件类型",dataIndex = "cardType") private String cardType; @SalaryTableColumn( text = "证件号码", width = "10%", column = "cardNum" ) @TableTitle(title ="证件号码",dataIndex = "cardNum",key = "cardNum") + @ExcelHead(title ="证件号码",dataIndex = "cardNum") private String cardNum; @SalaryTableColumn( text = "全年一次性奖金额", width = "10%", column = "annualIncome" ) @TableTitle(title ="全年一次性奖金额",dataIndex = "annualIncome",key = "annualIncome") + @ExcelHead(title ="全年一次性奖金额",dataIndex = "annualIncome") private String annualIncome; @SalaryTableColumn( text = "免税收入", width = "10%", column = "annualTaxFreeIncome" ) @TableTitle(title ="免税收入",dataIndex = "annualTaxFreeIncome",key = "annualTaxFreeIncome") + @ExcelHead(title ="免税收入",dataIndex = "annualTaxFreeIncome") private String annualTaxFreeIncome; @SalaryTableColumn( text = "其他", width = "10%", column = "annualOther" ) @TableTitle(title ="其他",dataIndex = "annualOther",key = "annualOther") + @ExcelHead(title ="其他",dataIndex = "annualOther") private String annualOther; @SalaryTableColumn( text = "准予扣除的捐赠额", width = "10%", column = "annualDonateTax" ) @TableTitle(title ="准予扣除的捐赠额",dataIndex = "annualDonateTax",key = "annualDonateTax") + @ExcelHead(title ="准予扣除的捐赠额",dataIndex = "annualDonateTax") private String annualDonateTax; @SalaryTableColumn( text = "减免税额", width = "10%", column = "annualTaxSavings" ) @TableTitle(title ="减免税额",dataIndex = "annualTaxSavings",key = "annualTaxSavings") + @ExcelHead(title ="减免税额",dataIndex = "annualTaxSavings") private String annualTaxSavings; @SalaryTableColumn( text = "备注", width = "10%", column = "annualRemark" ) @TableTitle(title ="备注",dataIndex = "annualRemark",key = "annualRemark") + @ExcelHead(title ="备注",dataIndex = "annualRemark") private String annualRemark; } diff --git a/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclarationLaborListDTO.java b/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclarationLaborListDTO.java index 73872aa0a..ce03fd52c 100644 --- a/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclarationLaborListDTO.java +++ b/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclarationLaborListDTO.java @@ -2,6 +2,7 @@ package com.engine.salary.entity.taxdeclaration.dto; import com.engine.salary.annotation.SalaryTableColumn; import com.engine.salary.annotation.TableTitle; +import com.engine.salary.util.excel.ExcelHead; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; @@ -30,78 +31,91 @@ public class TaxDeclarationLaborListDTO { @SalaryTableColumn( text = "工号", width = "10%", column = "jobNum" ) - @TableTitle(title ="工号",dataIndex = "jobNum",key = "jobNum") + @TableTitle(title = "工号", dataIndex = "jobNum", key = "jobNum") + @ExcelHead(title = "工号", dataIndex = "jobNum") private String jobNum; @SalaryTableColumn( text = "姓名", width = "10%", column = "username" ) - @TableTitle(title ="姓名",dataIndex = "username",key = "username") + @TableTitle(title = "姓名", dataIndex = "username", key = "username") + @ExcelHead(title = "姓名", dataIndex = "username") private String username; @SalaryTableColumn( text = "证件类型", width = "10%", column = "cardType" ) - @TableTitle(title ="证件类型",dataIndex = "cardType",key = "cardType") + @TableTitle(title = "证件类型", dataIndex = "cardType", key = "cardType") + @ExcelHead(title = "证件类型", dataIndex = "cardType") private String cardType; @SalaryTableColumn( text = "证件号码", width = "10%", column = "cardNum" ) - @TableTitle(title ="证件号码",dataIndex = "cardNum",key = "cardNum") + @TableTitle(title = "证件号码", dataIndex = "cardNum", key = "cardNum") + @ExcelHead(title = "证件号码", dataIndex = "cardNum") private String cardNum; @SalaryTableColumn( text = "所得项目", width = "10%", column = "incomeItems" ) - @TableTitle(title ="所得项目",dataIndex = "incomeItems",key = "incomeItems") + @TableTitle(title = "所得项目", dataIndex = "incomeItems", key = "incomeItems") + @ExcelHead(title = "所得项目", dataIndex = "incomeItems") private String incomeItems; @SalaryTableColumn( text = "劳务收入", width = "10%", column = "laborIncome" ) - @TableTitle(title ="劳务收入",dataIndex = "laborIncome",key = "laborIncome") + @TableTitle(title = "劳务收入", dataIndex = "laborIncome", key = "laborIncome") + @ExcelHead(title = "劳务收入", dataIndex = "laborIncome") private String laborIncome; @SalaryTableColumn( text = "劳务免税收入", width = "10%", column = "laborTaxFreeIncome" ) - @TableTitle(title ="劳务免税收入",dataIndex = "laborTaxFreeIncome",key = "laborTaxFreeIncome") + @TableTitle(title = "劳务免税收入", dataIndex = "laborTaxFreeIncome", key = "laborTaxFreeIncome") + @ExcelHead(title = "劳务免税收入", dataIndex = "laborTaxFreeIncome") private String laborTaxFreeIncome; @SalaryTableColumn( text = "商业健康保险", width = "10%", column = "commercialHealthInsurance" ) - @TableTitle(title ="商业健康保险",dataIndex = "commercialHealthInsurance",key = "commercialHealthInsurance") + @TableTitle(title = "商业健康保险", dataIndex = "commercialHealthInsurance", key = "commercialHealthInsurance") + @ExcelHead(title = "商业健康保险", dataIndex = "commercialHealthInsurance") private String commercialHealthInsurance; @SalaryTableColumn( text = "税延养老保险", width = "10%", column = "taxDeferredEndowmentInsurance" ) - @TableTitle(title ="税延养老保险",dataIndex = "taxDeferredEndowmentInsurance",key = "taxDeferredEndowmentInsurance") + @TableTitle(title = "税延养老保险", dataIndex = "taxDeferredEndowmentInsurance", key = "taxDeferredEndowmentInsurance") + @ExcelHead(title = "税延养老保险", dataIndex = "taxDeferredEndowmentInsurance") private String taxDeferredEndowmentInsurance; @SalaryTableColumn( text = "其他", width = "10%", column = "other" ) - @TableTitle(title ="其他",dataIndex = "other",key = "other") + @TableTitle(title = "其他", dataIndex = "other", key = "other") + @ExcelHead(title = "其他", dataIndex = "other") private String other; @SalaryTableColumn( text = "准予扣除的捐赠额", width = "10%", column = "allowedDonation" ) - @TableTitle(title ="准予扣除的捐赠额",dataIndex = "allowedDonation",key = "allowedDonation") + @TableTitle(title = "准予扣除的捐赠额", dataIndex = "allowedDonation", key = "allowedDonation") + @ExcelHead(title = "准予扣除的捐赠额", dataIndex = "allowedDonation") private String allowedDonation; @SalaryTableColumn( text = "减免税额", width = "10%", column = "taxDeduction" ) - @TableTitle(title ="减免税额",dataIndex = "taxDeduction",key = "taxDeduction") + @TableTitle(title = "减免税额", dataIndex = "taxDeduction", key = "taxDeduction") + @ExcelHead(title = "减免税额", dataIndex = "taxDeduction") private String taxDeduction; @SalaryTableColumn( text = "备注", width = "10%", column = "description" ) - @TableTitle(title ="备注",dataIndex = "description",key = "description") + @TableTitle(title = "备注", dataIndex = "description", key = "description") + @ExcelHead(title = "备注", dataIndex = "description") private String description; } diff --git a/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclarationWageListDTO.java b/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclarationWageListDTO.java index 3725aaf27..419f8f1e0 100644 --- a/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclarationWageListDTO.java +++ b/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclarationWageListDTO.java @@ -4,6 +4,7 @@ import com.cloudstore.eccom.pc.table.WeaTableType; import com.engine.salary.annotation.SalaryTable; import com.engine.salary.annotation.SalaryTableColumn; import com.engine.salary.annotation.TableTitle; +import com.engine.salary.util.excel.ExcelHead; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -35,101 +36,126 @@ public class TaxDeclarationWageListDTO { @SalaryTableColumn(text = "工号", width = "10%", column = "jobNum") @TableTitle(title = "工号", dataIndex = "jobNum", key = "jobNum") + @ExcelHead(title = "工号", dataIndex = "jobNum") private String jobNum; @SalaryTableColumn(text = "姓名", width = "10%", column = "username") @TableTitle(title = "姓名", dataIndex = "username", key = "username") + @ExcelHead(title = "姓名", dataIndex = "username") private String username; @SalaryTableColumn(text = "证件类型", width = "10%", column = "cardType") @TableTitle(title = "证件类型", dataIndex = "cardType", key = "cardType") + @ExcelHead(title = "证件类型", dataIndex = "cardType") private String cardType; @SalaryTableColumn(text = "证件号码", width = "10%", column = "cardNum") @TableTitle(title = "证件号码", dataIndex = "cardNum", key = "cardNum") + @ExcelHead(title = "证件号码", dataIndex = "cardNum") private String cardNum; @SalaryTableColumn(text = "本期收入", width = "10%", column = "income") @TableTitle(title = "本期收入", dataIndex = "income", key = "income") + @ExcelHead(title = "本期收入", dataIndex = "income") private String income; @SalaryTableColumn(text = "本期免税收入", width = "10%", column = "taxFreeIncome") @TableTitle(title = "本期免税收入", dataIndex = "taxFreeIncome", key = "taxFreeIncome") + @ExcelHead(title = "本期免税收入", dataIndex = "taxFreeIncome") private String taxFreeIncome; @SalaryTableColumn(text = "基本养老保险费", width = "10%", column = "endowmentInsurance") @TableTitle(title = "基本养老保险费", dataIndex = "endowmentInsurance", key = "endowmentInsurance") + @ExcelHead(title = "基本养老保险费", dataIndex = "endowmentInsurance") private String endowmentInsurance; @SalaryTableColumn(text = "基本医疗保险费", width = "10%", column = "medicalInsurance") @TableTitle(title = "基本医疗保险费", dataIndex = "medicalInsurance", key = "medicalInsurance") + @ExcelHead(title = "基本医疗保险费", dataIndex = "medicalInsurance") private String medicalInsurance; @SalaryTableColumn(text = "失业保险费", width = "10%", column = "unemploymentInsurance") @TableTitle(title = "失业保险费", dataIndex = "unemploymentInsurance", key = "unemploymentInsurance") + @ExcelHead(title = "失业保险费", dataIndex = "unemploymentInsurance") private String unemploymentInsurance; @SalaryTableColumn(text = "住房公积金", width = "10%", column = "housingProvidentFund") @TableTitle(title = "住房公积金", dataIndex = "housingProvidentFund", key = "housingProvidentFund") + @ExcelHead(title = "住房公积金", dataIndex = "housingProvidentFund") private String housingProvidentFund; @SalaryTableColumn(text = "累计子女教育", width = "10%", column = "addUpChildEducation") @TableTitle(title = "累计子女教育", dataIndex = "addUpChildEducation", key = "addUpChildEducation") + @ExcelHead(title = "累计子女教育", dataIndex = "addUpChildEducation") private String addUpChildEducation; @SalaryTableColumn(text = "累计住房贷款利息", width = "10%", column = "addUpHousingLoanInterest") @TableTitle(title = "累计住房贷款利息", dataIndex = "addUpHousingLoanInterest", key = "addUpHousingLoanInterest") + @ExcelHead(title = "累计住房贷款利息", dataIndex = "addUpHousingLoanInterest") private String addUpHousingLoanInterest; @SalaryTableColumn(text = "累计住房租金", width = "10%", column = "addUpHousingRent") @TableTitle(title = "累计住房租金", dataIndex = "addUpHousingRent", key = "addUpHousingRent") + @ExcelHead(title = "累计住房租金", dataIndex = "addUpHousingRent") private String addUpHousingRent; @SalaryTableColumn(text = "累计继续教育", width = "10%", column = "addUpContinuingEducation") @TableTitle(title = "累计继续教育", dataIndex = "addUpContinuingEducation", key = "addUpContinuingEducation") + @ExcelHead(title = "累计继续教育", dataIndex = "addUpContinuingEducation") private String addUpContinuingEducation; @SalaryTableColumn(text = "累计赡养老人", width = "10%", column = "addUpSupportElderly") @TableTitle(title = "累计赡养老人", dataIndex = "addUpSupportElderly", key = "addUpSupportElderly") + @ExcelHead(title = "累计赡养老人", dataIndex = "addUpSupportElderly") private String addUpSupportElderly; @SalaryTableColumn(text = "累计大病医疗", width = "10%", column = "addUpIllnessMedical") @TableTitle(title = "累计大病医疗", dataIndex = "addUpIllnessMedical", key = "addUpIllnessMedical") + @ExcelHead(title = "累计大病医疗", dataIndex = "addUpIllnessMedical") private String addUpIllnessMedical; @SalaryTableColumn(text = "累计3岁以下婴幼儿照护", width = "10%", column = "addUpInfantCare") @TableTitle(title = "累计3岁以下婴幼儿照护", dataIndex = "addUpInfantCare", key = "addUpInfantCare") + @ExcelHead(title = "累计3岁以下婴幼儿照护", dataIndex = "addUpInfantCare") private String addUpInfantCare; @SalaryTableColumn(text = "累计个人养老金", width = "10%", column = "addUpPrivatePension") @TableTitle(title = "累计个人养老金", dataIndex = "addUpPrivatePension", key = "addUpPrivatePension") + @ExcelHead(title = "累计个人养老金", dataIndex = "addUpPrivatePension") private String addUpPrivatePension; @SalaryTableColumn(text = "企业(职业)年金", width = "10%", column = "annuity") @TableTitle(title = "企业(职业)年金", dataIndex = "annuity", key = "annuity") + @ExcelHead(title = "企业(职业)年金", dataIndex = "annuity") private String annuity; @SalaryTableColumn(text = "商业健康保险", width = "10%", column = "commercialHealthInsurance") @TableTitle(title = "商业健康保险", dataIndex = "commercialHealthInsurance", key = "commercialHealthInsurance") + @ExcelHead(title = "商业健康保险", dataIndex = "commercialHealthInsurance") private String commercialHealthInsurance; @SalaryTableColumn(text = "税延养老保险", width = "10%", column = "taxDeferredEndowmentInsurance") @TableTitle(title = "税延养老保险", dataIndex = "taxDeferredEndowmentInsurance", key = "taxDeferredEndowmentInsurance") + @ExcelHead(title = "税延养老保险", dataIndex = "taxDeferredEndowmentInsurance") private String taxDeferredEndowmentInsurance; @SalaryTableColumn(text = "其他", width = "10%", column = "other") @TableTitle(title = "其他", dataIndex = "other", key = "other") + @ExcelHead(title = "其他", dataIndex = "other") private String other; @SalaryTableColumn(text = "准予扣除的捐赠额", width = "10%", column = "allowedDonation") @TableTitle(title = "准予扣除的捐赠额", dataIndex = "allowedDonation", key = "allowedDonation") + @ExcelHead(title = "准予扣除的捐赠额", dataIndex = "allowedDonation") private String allowedDonation; @SalaryTableColumn(text = "减免税额", width = "10%", column = "taxDeduction") @TableTitle(title = "减免税额", dataIndex = "taxDeduction", key = "taxDeduction") + @ExcelHead(title = "减免税额", dataIndex = "taxDeduction") private String taxDeduction; @SalaryTableColumn(text = "备注", width = "10%", column = "description") @TableTitle(title = "备注", dataIndex = "description", key = "description") + @ExcelHead(title = "备注", dataIndex = "description") private String description; } diff --git a/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java index 957957790..c9eb8796a 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java @@ -2,7 +2,6 @@ package com.engine.salary.service.impl; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; -import com.engine.salary.annotation.SalaryTableColumn; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationAnnualListDTO; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationLaborListDTO; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationWageListDTO; @@ -23,7 +22,6 @@ import lombok.extern.slf4j.Slf4j; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.User; -import java.lang.reflect.Field; import java.util.List; import java.util.Map; import java.util.Objects; @@ -68,7 +66,7 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar List dataIndexList = Lists.newArrayList(); if (Objects.equals(taxDeclarationPO.getIncomeCategory(), IncomeCategoryEnum.WAGES_AND_SALARIES.getValue())) { // 解析表头 - parseHeader(TaxDeclarationWageListDTO.class, headerList, dataIndexList); + ExcelUtil.parseHeader(TaxDeclarationWageListDTO.class, headerList, dataIndexList); rows.add(headerList); for (int i = 0; i < totalPages; i++) { TaxDeclarationDetailListQueryParam queryParam = new TaxDeclarationDetailListQueryParam(); @@ -89,7 +87,7 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar } if (Objects.equals(taxDeclarationPO.getIncomeCategory(), IncomeCategoryEnum.REMUNERATION_FOR_LABOR.getValue())) { // 解析表头 - parseHeader(TaxDeclarationLaborListDTO.class, headerList, dataIndexList); + ExcelUtil.parseHeader(TaxDeclarationLaborListDTO.class, headerList, dataIndexList); rows.add(headerList); for (int i = 0; i < totalPages; i++) { TaxDeclarationDetailListQueryParam queryParam = new TaxDeclarationDetailListQueryParam(); @@ -111,7 +109,7 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar if (Objects.equals(taxDeclarationPO.getIncomeCategory(), IncomeCategoryEnum.ONETIME_ANNUAL_BONUS.getValue())) { // 解析表头 - parseHeader(TaxDeclarationAnnualListDTO.class, headerList, dataIndexList); + ExcelUtil.parseHeader(TaxDeclarationAnnualListDTO.class, headerList, dataIndexList); rows.add(headerList); for (int i = 0; i < totalPages; i++) { TaxDeclarationDetailListQueryParam queryParam = new TaxDeclarationDetailListQueryParam(); @@ -133,24 +131,4 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar return ExcelUtil.genWorkbookV2(rows, sheetName); } - - /** - * 解析表头 - * - * @param clazz - * @param headerList - * @param dataIndexList - * @param - */ - private void parseHeader(Class clazz, List headerList, List dataIndexList) { - Field[] declaredFields = clazz.getDeclaredFields(); - for (Field declaredField : declaredFields) { - if (!declaredField.isAnnotationPresent(SalaryTableColumn.class)) { - continue; - } - SalaryTableColumn annotation = declaredField.getAnnotation(SalaryTableColumn.class); - headerList.add(SalaryI18nUtil.getI18nLabel( annotation.labelId(), annotation.text())); - dataIndexList.add(declaredField.getName()); - } - } } diff --git a/src/com/engine/salary/util/excel/ExcelUtil.java b/src/com/engine/salary/util/excel/ExcelUtil.java index c50c11d2b..877714295 100644 --- a/src/com/engine/salary/util/excel/ExcelUtil.java +++ b/src/com/engine/salary/util/excel/ExcelUtil.java @@ -1,6 +1,7 @@ package com.engine.salary.util.excel; import com.engine.salary.util.SalaryDateUtil; +import com.engine.salary.util.SalaryI18nUtil; import org.apache.commons.collections4.CollectionUtils; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.FillPatternType; @@ -9,6 +10,7 @@ import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.xssf.usermodel.*; import java.awt.*; +import java.lang.reflect.Field; import java.util.Date; import java.util.List; @@ -267,4 +269,24 @@ public class ExcelUtil { } return workbook; } + + /** + * 解析表头 + * + * @param clazz + * @param headerList + * @param dataIndexList + * @param + */ + public static void parseHeader(Class clazz, List headerList, List dataIndexList) { + Field[] declaredFields = clazz.getDeclaredFields(); + for (Field declaredField : declaredFields) { + if (!declaredField.isAnnotationPresent(ExcelHead.class)) { + continue; + } + ExcelHead annotation = declaredField.getAnnotation(ExcelHead.class); + headerList.add(SalaryI18nUtil.getI18nLabel(annotation.labelId(), annotation.title())); + dataIndexList.add(declaredField.getName()); + } + } } From 622bd9ceb86030b53d05566ca5c432020c11ee98 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 28 Dec 2023 16:44:01 +0800 Subject: [PATCH 54/92] =?UTF-8?q?=E4=BA=BA=E5=91=98=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=8A=A5=E9=80=81=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/employeedeclare/bo/EmployeeDeclareBO.java | 3 +-- .../mapper/employeedeclare/EmployeeDeclareMapper.xml | 5 ++--- .../service/impl/EmployeeDeclareExcelServiceImpl.java | 11 +++++++---- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareBO.java b/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareBO.java index d3d91e5f8..48898d83d 100644 --- a/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareBO.java +++ b/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareBO.java @@ -3,7 +3,6 @@ package com.engine.salary.entity.employeedeclare.bo; import com.engine.salary.entity.employeedeclare.dto.EmployeeDeclareExcelDTO; import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; import com.engine.salary.enums.employeedeclare.CardTypeEnum; -import com.engine.salary.enums.employeedeclare.EmploymentTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryI18nUtil; @@ -27,7 +26,7 @@ public class EmployeeDeclareBO { .cardType(dto.getCardType() == null ? null :CardTypeEnum.RESIDENT_IDENTITY_CARDS.getValue()) .cardNum(dto.getCardNum()) .employmentStatus(StringUtils.isBlank(dto.getEmploymentStatus()) ? null : new Integer(dto.getEmploymentStatus())) - .employmentType(EmploymentTypeEnum.getValueByDefaultLabel(dto.getEmploymentType())) + .employmentType(StringUtils.isBlank(dto.getEmploymentType()) ? null : new Integer(dto.getEmploymentType())) .employmentFirstYear(dto.getEmploymentFirstYear()) .mobile(dto.getMobile()) .employmentDate(StringUtils.isBlank(dto.getEmploymentDate()) ? null : SalaryDateUtil.stringToDate(dto.getEmploymentDate()) ) diff --git a/src/com/engine/salary/mapper/employeedeclare/EmployeeDeclareMapper.xml b/src/com/engine/salary/mapper/employeedeclare/EmployeeDeclareMapper.xml index 890181735..335d8ed7c 100644 --- a/src/com/engine/salary/mapper/employeedeclare/EmployeeDeclareMapper.xml +++ b/src/com/engine/salary/mapper/employeedeclare/EmployeeDeclareMapper.xml @@ -452,8 +452,7 @@ update_time ) VALUES - ( - + ( #{item.birthday}, #{item.cardNum}, #{item.cardType}, @@ -486,8 +485,8 @@ #{item.taxCycle}, #{item.tenantKey}, #{item.updateTime} - ) + diff --git a/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java b/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java index 4bfb84b78..520dcc68a 100644 --- a/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java @@ -105,7 +105,7 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee row.add(CardTypeEnum.RESIDENT_IDENTITY_CARDS.getDefaultLabel()); row.add(employeeDeclare.getCardNum()); row.add(employmentStatusEnum == null ? "" : employmentStatusEnum.getDefaultLabel()); - row.add(employmentTypeEnum == null ? "" : employmentTypeEnum.getDefaultLabel()); + row.add(employmentTypeEnum == null ? EmploymentTypeEnum.EMPLOYEE.getDefaultLabel() : employmentTypeEnum.getDefaultLabel()); row.add(employeeDeclare.getEmploymentFirstYear()); row.add(employeeDeclare.getMobile()); row.add(SalaryDateUtil.getFormatDate(employeeDeclare.getEmploymentDate())); @@ -327,6 +327,9 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee errorData.add(errorMessageMap); } } else { + if (StringUtils.isNotBlank(dataValue) && dataValue.length() >= 10) { + dataValue = dataValue.substring(0,10); + } if (!SalaryDateUtil.checkDay(dataValue)) { isError = true; Map errorMessageMap = Maps.newHashMap(); @@ -440,7 +443,8 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee } else { EmployeeDeclarePO newEmployeeDeclare = new EmployeeDeclarePO(); BeanUtils.copyProperties(employeeDeclare, newEmployeeDeclare); - BeanUtils.copyProperties(employeeDeclareExcel, newEmployeeDeclare); + EmployeeDeclarePO employeeDeclarePO = EmployeeDeclareBO.convert2PO(employeeDeclareExcel); + BeanUtils.copyProperties(employeeDeclarePO, newEmployeeDeclare, getNullPropertyNames(employeeDeclarePO)); newEmployeeDeclare.setNewEmployeeInfo(StringUtils.equals(employeeDeclare.toCompareString(), newEmployeeDeclare.toCompareString()) ? 0 : 1); newEmployeeDeclare.setUpdateTime(now); needUpdateEmployeeDeclares.add(newEmployeeDeclare); @@ -481,7 +485,6 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee if (isError) { failCount++; failRowIndex++; - errorData.add(map); continue; } successCount++; @@ -496,7 +499,7 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee apidatas.put("successCount", successCount); apidatas.put("errorCount", failCount); - apidatas.put("errorNotice", errorData); + apidatas.put("errorData", errorData); // 发送导入回调信息 // salaryBatchService.sendImportCallBackInfo(message, successCount, errorCount, errorExcelSheets); From 463e56d2cf2020eb8d6977beec47fc31f24bab19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 28 Dec 2023 18:12:38 +0800 Subject: [PATCH 55/92] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E7=94=B3=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/DownloadTemplateParam.java | 26 ++ .../service/TaxDeclarationExcelService.java | 15 ++ .../service/TaxDeclarationValueService.java | 2 + .../impl/TaxDeclarationExcelServiceImpl.java | 254 ++++++++++++++++-- .../impl/TaxDeclarationValueServiceImpl.java | 22 +- .../salary/web/TaxDeclarationController.java | 75 +++--- .../wrapper/TaxDeclareRecordWrapper.java | 12 + 7 files changed, 352 insertions(+), 54 deletions(-) create mode 100644 src/com/engine/salary/entity/taxdeclaration/param/DownloadTemplateParam.java diff --git a/src/com/engine/salary/entity/taxdeclaration/param/DownloadTemplateParam.java b/src/com/engine/salary/entity/taxdeclaration/param/DownloadTemplateParam.java new file mode 100644 index 000000000..d9371b3fd --- /dev/null +++ b/src/com/engine/salary/entity/taxdeclaration/param/DownloadTemplateParam.java @@ -0,0 +1,26 @@ +package com.engine.salary.entity.taxdeclaration.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DownloadTemplateParam { + /** + * 申报表id,下载模板 + */ + @DataCheck(require = true,message = "imageId为空") + Long taxDeclarationId; + + + + /** + * 导入文件id + */ + String imageId; +} diff --git a/src/com/engine/salary/service/TaxDeclarationExcelService.java b/src/com/engine/salary/service/TaxDeclarationExcelService.java index 15d6c81fd..e5e154fe7 100644 --- a/src/com/engine/salary/service/TaxDeclarationExcelService.java +++ b/src/com/engine/salary/service/TaxDeclarationExcelService.java @@ -1,9 +1,12 @@ package com.engine.salary.service; import com.engine.salary.entity.taxdeclaration.param.AbnormalEmployeeListQueryParam; +import com.engine.salary.entity.taxdeclaration.param.DownloadTemplateParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationValueListQueryParam; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import java.util.Map; + /** * 个税申报表导出 *

Copyright: Copyright (c) 2022

@@ -45,4 +48,16 @@ public interface TaxDeclarationExcelService { * @return */ XSSFWorkbook exportEmployee4Fail(AbnormalEmployeeListQueryParam queryParam); + + XSSFWorkbook downloadTemplate(DownloadTemplateParam param); + /** + * 预览 + */ + Map preview(DownloadTemplateParam importParam); + + /** + * 导入数据 + */ + Map importData(DownloadTemplateParam importParam); + } diff --git a/src/com/engine/salary/service/TaxDeclarationValueService.java b/src/com/engine/salary/service/TaxDeclarationValueService.java index 70bd6f729..969292efb 100644 --- a/src/com/engine/salary/service/TaxDeclarationValueService.java +++ b/src/com/engine/salary/service/TaxDeclarationValueService.java @@ -36,6 +36,7 @@ public interface TaxDeclarationValueService { * @return */ List listByTaxDeclarationIds(Collection taxDeclarationIds); + List listByTaxDeclarationId(Long taxDeclarationIds); /** * 查询个税申报表明细 @@ -59,6 +60,7 @@ public interface TaxDeclarationValueService { * @param taxDeclarationValues */ void batchSave(List taxDeclarationValues); + void batchEdit(List taxDeclarationValues); void save(TaxDeclareRecordDetailSaveParam param); diff --git a/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java index 6382be9b4..8aac2c649 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java @@ -1,30 +1,53 @@ package com.engine.salary.service.impl; +import com.api.formmode.mybatis.util.SqlProxyHandle; import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.taxdeclaration.dto.AbnormalEmployeeListDTO; import com.engine.salary.entity.taxdeclaration.dto.FailEmployeeListDTO; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationValueListDTO; import com.engine.salary.entity.taxdeclaration.param.AbnormalEmployeeListQueryParam; +import com.engine.salary.entity.taxdeclaration.param.DownloadTemplateParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationValueListQueryParam; import com.engine.salary.entity.taxdeclaration.po.*; +import com.engine.salary.enums.UserStatusEnum; +import com.engine.salary.enums.salaryaccounting.EmployeeTypeEnum; +import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; +import com.engine.salary.enums.salarysob.IncomeCategoryEnum; +import com.engine.salary.enums.sicategory.DeleteTypeEnum; +import com.engine.salary.enums.taxdeclaration.SourceEnum; +import com.engine.salary.mapper.sys.SalarySysConfMapper; import com.engine.salary.service.*; +import com.engine.salary.sys.entity.po.SalarySysConfPO; import com.engine.salary.util.JsonUtil; +import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; -import com.engine.salary.util.excel.ExcelHead; +import com.engine.salary.util.excel.ExcelParseHelper; import com.engine.salary.util.excel.ExcelSheetData; +import com.engine.salary.util.excel.ExcelSupport; import com.engine.salary.util.excel.ExcelUtil; import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import dm.jdbc.util.IdGenerator; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.Validate; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.util.IOUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import weaver.file.ImageFileManager; import weaver.general.Util; import weaver.hrm.User; -import java.lang.reflect.Field; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.io.InputStream; +import java.util.*; +import java.util.stream.Collectors; + +import static com.engine.salary.util.excel.ExcelSupport.EXCEL_TYPE_XLSX; /** * 个税申报表导出 @@ -57,6 +80,19 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar return ServiceUtil.getService(TaxDeclareFailServiceImpl.class, user); } + + private TaxReportColumnService getTaxReportColumnService(User user) { + return ServiceUtil.getService(TaxReportColumnServiceImpl.class, user); + } + + private SalarySysConfMapper getSalarySysConfMapper() { + return SqlProxyHandle.getProxy(SalarySysConfMapper.class); + } + + private SalaryEmployeeService getSalaryEmployeeService(User user) { + return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); + } + @Override public XSSFWorkbook exportTaxDeclarationValue(TaxDeclarationValueListQueryParam queryParam) { // 查询个税申报表 @@ -140,7 +176,7 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar // 导出的表头 List headerList = Lists.newArrayList(); List dataIndexList = Lists.newArrayList(); - parseHeader(clazz, headerList, dataIndexList); + ExcelUtil.parseHeader(clazz, headerList, dataIndexList); // 导出的数据 List> rows = Lists.newArrayListWithExpectedSize(dtoList.size()); dtoList.forEach(dto -> { @@ -157,23 +193,195 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar return excelSheetData; } - /** - * 解析表头 - * - * @param clazz - * @param headerList - * @param dataIndexList - * @param - */ - private void parseHeader(Class clazz, List headerList, List dataIndexList) { - Field[] declaredFields = clazz.getDeclaredFields(); - for (Field declaredField : declaredFields) { - if (!declaredField.isAnnotationPresent(ExcelHead.class)) { - continue; - } - ExcelHead annotation = declaredField.getAnnotation(ExcelHead.class); - headerList.add(SalaryI18nUtil.getI18nLabel(annotation.labelId(), annotation.title())); - dataIndexList.add(declaredField.getName()); + @Override + public XSSFWorkbook downloadTemplate(DownloadTemplateParam param) { + TaxDeclarationPO declarationPO = getTaxDeclarationService(user).getById(param.getTaxDeclarationId()); + IncomeCategoryEnum incomeCategoryEnum = IncomeCategoryEnum.parseByValue(declarationPO.getIncomeCategory()); + List taxReportColumnPOS = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum); + + + List heads = new ArrayList<>(); + heads.add(SalaryI18nUtil.getI18nLabel(85429, "姓名")); + heads.add(SalaryI18nUtil.getI18nLabel(86185, "部门")); + heads.add(SalaryI18nUtil.getI18nLabel(86186, "手机号")); + heads.add(SalaryI18nUtil.getI18nLabel(86317, "工号")); + heads.addAll(SalaryEntityUtil.properties(taxReportColumnPOS, TaxReportColumnPO::getReportColumnName, Collectors.toList())); + + List> rowList = new ArrayList<>(); + rowList.add(heads); + XSSFWorkbook book = ExcelUtil.genWorkbookV2(rowList, incomeCategoryEnum.getDefaultLabel()); + return book; + } + + @Override + public Map preview(DownloadTemplateParam importParam) { + //excel文件id + String imageId = Util.null2String(importParam.getImageId()); + Validate.notBlank(imageId, "imageId为空"); + + InputStream fileInputStream = null; + Map map = new HashMap<>(); + try { + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(importParam.getImageId())); + Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX); + map.put("headers", ExcelSupport.getSheetHeader(sheet, 0)); + map.put("list", ExcelParseHelper.parse2List(sheet, 1, 0)); + return map; + } finally { + IOUtils.closeQuietly(fileInputStream); } } + + @Override + public Map importData(DownloadTemplateParam param) { + //查询对于人员信息导入筛选的全局配置 + SalarySysConfPO salarySysConfPO = getSalarySysConfMapper().getOneByCode("matchEmployeeMode"); + String confValue = (salarySysConfPO != null && salarySysConfPO.getConfValue() != null && !"".equals(salarySysConfPO.getConfValue())) ? salarySysConfPO.getConfValue() : "0"; + + + // 租户下所有的人员 + List salaryEmployees = getSalaryEmployeeService(user).listAllForReport(); + Map salaryEmployeeMap = SalaryEntityUtil.convert2Map(salaryEmployees, DataCollectionEmployee::getUsername, DataCollectionEmployee::getEmployeeId); + Map emps = SalaryEntityUtil.convert2Map(salaryEmployees, DataCollectionEmployee::getEmployeeId); + + + TaxDeclarationPO declarationPO = getTaxDeclarationService(user).getById(param.getTaxDeclarationId()); + IncomeCategoryEnum incomeCategoryEnum = IncomeCategoryEnum.parseByValue(declarationPO.getIncomeCategory()); + List taxReportColumnPOS = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum); + Map nameColumnMap = SalaryEntityUtil.convert2Map(taxReportColumnPOS, TaxReportColumnPO::getReportColumnName); + + List taxDeclarationValuePOS = getTaxDeclarationValueService(user).listByTaxDeclarationId(declarationPO.getId()); + Map empDeclarationValueMap = SalaryEntityUtil.convert2Map(taxDeclarationValuePOS, TaxDeclarationValuePO::getEmployeeId); + + // 索引(用于计算进度) + int index = 0; + // 失败的数量 + int failCount = 0; + // 成功的数量 + int successCount = 0; + Date now = new Date(); + + List addList = Lists.newArrayList(); + List editList = Lists.newArrayList(); + + + InputStream fileInputStream = null; + try { + + + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId())); + Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX); + + // 错误提示信息 + List excelComments = Lists.newArrayList(); + // 存在错误的那行数据 + List> errorDatas = Lists.newArrayList(); + // 表头 + List headers; + headers = ExcelSupport.getSheetHeader(sheet, 0); + List> data = ExcelParseHelper.parse2Map(sheet, 1, 0); + + if (CollectionUtils.isEmpty(headers)) { + throw new RuntimeException("表头为空"); + } + if (CollectionUtils.isEmpty(data)) { + throw new RuntimeException("无数据"); + } + for (int i = 0; i < data.size(); i++) { + + String row = "第" + (i + 2) + "行"; + + boolean isError = false; + Map map = data.get(i); + Long employeeId = 0L; + + String username = (String) map.getOrDefault("姓名", ""); + String deparmentName = (String) map.getOrDefault("部门", ""); + String mobile = (String) map.getOrDefault("手机号", ""); + String workcode = (String) map.getOrDefault("工号", ""); + + if (StringUtils.isEmpty(username) && "0".equals(confValue)) { + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", row + SalaryI18nUtil.getI18nLabel(102838, "姓名不能为空")); + excelComments.add(errorMessageMap); + } else { + //筛选导入人员信息可以在人力资源池中匹配到的人员信息 + List employeeSameIds = getSalaryEmployeeService(user).matchImportEmployee(salaryEmployees, username, deparmentName, mobile, workcode, null); + + if (CollectionUtils.isEmpty(employeeSameIds)) { + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", row + SalaryI18nUtil.getI18nLabel(100579, "姓名错误,系统内不存在该姓名")); + excelComments.add(errorMessageMap); + } else if (employeeSameIds.size() > 1) { + //存在离职和在职状态取在职状态 + employeeSameIds = employeeSameIds.stream() + .filter(e -> UserStatusEnum.getNormalStatus().contains(e.getStatus())) + .collect(Collectors.toList()); + if (employeeSameIds.size() != 1) { + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", row + "员工信息不存在或者存在多个员工"); + excelComments.add(errorMessageMap); + } else { + employeeId = CollectionUtils.isNotEmpty(employeeSameIds) && employeeSameIds.size() == 1 ? employeeSameIds.get(0).getEmployeeId() : null; + } + } else { + employeeId = employeeSameIds.get(0).getEmployeeId(); + } + } + + if (isError) { + failCount++; + errorDatas.add(map); + continue; + } + + successCount++; + + Map valueMap = Maps.newHashMap(); + for (TaxReportColumnPO taxReportColumn : taxReportColumnPOS) { + Object value = map.get(taxReportColumn.getReportColumnName()); + valueMap.put(taxReportColumn.getReportColumnDataIndex(), value != null ? value.toString() : Objects.equals(taxReportColumn.getDataType(), SalaryDataTypeEnum.NUMBER.getValue()) ? "0.00" : ""); + } + + if (empDeclarationValueMap.containsKey(employeeId)) { + TaxDeclarationValuePO taxDeclarationValue =empDeclarationValueMap.get(employeeId); + taxDeclarationValue.setResultValue(valueMap); + taxDeclarationValue.setResultValueJson(JsonUtil.toJsonString(valueMap)); + taxDeclarationValue.setUpdateTime(new Date()); + taxDeclarationValue.setSource(SourceEnum.IMP.getValue()); + editList.add(taxDeclarationValue); + } else { + //新增 + TaxDeclarationValuePO taxDeclarationValue = TaxDeclarationValuePO.builder() + .id(IdGenerator.generate()) + .taxDeclareRecordId(declarationPO.getTaxDeclareRecordId()) + .taxDeclarationId(declarationPO.getId()) + .employeeType(EmployeeTypeEnum.ORGANIZATION.getValue()) + .employeeId(employeeId) + .resultValue(valueMap) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .creator(employeeId) + .deleteType(DeleteTypeEnum.NOT_DELETED.getValue()) + .createTime(now) + .updateTime(now) + .source(SourceEnum.IMP.getValue()) + .build(); + addList.add(taxDeclarationValue); + } + } + + getTaxDeclarationValueService(user).batchSave(addList); + getTaxDeclarationValueService(user).batchEdit(editList); + + + } finally { + IOUtils.closeQuietly(fileInputStream); + } + + return null; + } + } diff --git a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java index b5ddd14b4..80e1c8209 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java @@ -94,6 +94,12 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar return decryptBatch(taxDeclarationValues); } + @Override + public List listByTaxDeclarationId(Long taxDeclarationId) { + List taxDeclarationValues = getTaxDeclarationValueMapper().listSome(TaxDeclarationValuePO.builder().taxDeclarationId(taxDeclarationId).build()); + return decryptBatch(taxDeclarationValues); + } + @Override public List listByTaxDeclarationIdsNoDecrypt(Collection taxDeclarationIds) { return getTaxDeclarationValueMapper().listSome(TaxDeclarationValuePO.builder().taxDeclarationIds(taxDeclarationIds).build()); @@ -144,7 +150,21 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar List> partition = Lists.partition(taxDeclarationValues, 100); for (List subTaxDeclarationValues : partition) { subTaxDeclarationValues.forEach(getTaxDeclarationValueMapper()::insertIgnoreNull); -// getTaxDeclarationValueMapper().batchInsert(subTaxDeclarationValues); + } + } + } + + @Override + public void batchEdit(List taxDeclarationValues) { + if (CollectionUtils.isNotEmpty(taxDeclarationValues)) { + // 加密 + taxDeclarationValues.forEach(taxDeclarationValue -> + taxDeclarationValue.setResultValueJson(JsonUtil.toJsonString(taxDeclarationValue.getResultValue()))); + taxDeclarationValues = encryptUtil.encryptList(taxDeclarationValues, TaxDeclarationValuePO.class); + // 分批保存 + List> partition = Lists.partition(taxDeclarationValues, 100); + for (List subTaxDeclarationValues : partition) { + subTaxDeclarationValues.forEach(getTaxDeclarationValueMapper()::updateIgnoreNull); } } } diff --git a/src/com/engine/salary/web/TaxDeclarationController.java b/src/com/engine/salary/web/TaxDeclarationController.java index b6963b187..dc61a0458 100644 --- a/src/com/engine/salary/web/TaxDeclarationController.java +++ b/src/com/engine/salary/web/TaxDeclarationController.java @@ -653,35 +653,50 @@ public class TaxDeclarationController { } } -// @POST -// @Path("/downloadTemplate") -// @Produces(MediaType.APPLICATION_OCTET_STREAM) -// public Response getAll(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody DownloadTemplateParam param) { -// try { -// User user = HrmUserVarify.getUser(request, response); -// -// -// XSSFWorkbook workbook = getTaxDeclareRecordWrapper(user).downloadTemplate(queryParam); -// -// String fileName = "往期累计情况导入模板" + LocalDate.now(); -// -// try { -// fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); -// } catch (UnsupportedEncodingException e) { -// log.error(e.getMessage(), e); -// } -// -// 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) { -// log.error("往期累计情况导入模板导出异常", e); -// throw e; -// } -// } + @POST + @Path("/downloadTemplate") + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Response downloadTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody DownloadTemplateParam param) { + try { + User user = HrmUserVarify.getUser(request, response); + + XSSFWorkbook workbook = getTaxDeclareRecordWrapper(user).downloadTemplate(param); + + String fileName = "申报表导入模板" + LocalDate.now(); + + try { + fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); + } catch (UnsupportedEncodingException e) { + log.error(e.getMessage(), e); + } + + 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) { + log.error("申报表导入模板导出异常", e); + throw e; + } + } + + @POST + @Path("/preview") + @Produces(MediaType.APPLICATION_JSON) + public String preview(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody DownloadTemplateParam importParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getTaxDeclareRecordWrapper(user)::preview, importParam); + } + + @POST + @Path("/importData") + @Produces(MediaType.APPLICATION_JSON) + public String importAddUpDeduction(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody DownloadTemplateParam importParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getTaxDeclareRecordWrapper(user)::importData, importParam); + } } diff --git a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java index 18c81327d..fed3fbe32 100644 --- a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java +++ b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java @@ -755,4 +755,16 @@ public class TaxDeclareRecordWrapper extends Service { .resultValue(declarationValuePO.getResultValue()) .build(); } + + public XSSFWorkbook downloadTemplate(DownloadTemplateParam param) { + return getTaxDeclarationExcelService(user).downloadTemplate(param); + } + + public Map preview(DownloadTemplateParam param) { + return getTaxDeclarationExcelService(user).preview(param); + } + + public Map importData(DownloadTemplateParam param) { + return getTaxDeclarationExcelService(user).importData(param); + } } From df16be5dd732970acc1a46a91171ad190554e4fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 28 Dec 2023 18:45:52 +0800 Subject: [PATCH 56/92] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E7=94=B3=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/TaxDeclarationExcelServiceImpl.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java index 8aac2c649..a4ac55966 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java @@ -241,14 +241,12 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar // 租户下所有的人员 List salaryEmployees = getSalaryEmployeeService(user).listAllForReport(); - Map salaryEmployeeMap = SalaryEntityUtil.convert2Map(salaryEmployees, DataCollectionEmployee::getUsername, DataCollectionEmployee::getEmployeeId); - Map emps = SalaryEntityUtil.convert2Map(salaryEmployees, DataCollectionEmployee::getEmployeeId); TaxDeclarationPO declarationPO = getTaxDeclarationService(user).getById(param.getTaxDeclarationId()); IncomeCategoryEnum incomeCategoryEnum = IncomeCategoryEnum.parseByValue(declarationPO.getIncomeCategory()); List taxReportColumnPOS = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum); - Map nameColumnMap = SalaryEntityUtil.convert2Map(taxReportColumnPOS, TaxReportColumnPO::getReportColumnName); + List taxReportColumnNames = SalaryEntityUtil.properties(taxReportColumnPOS, TaxReportColumnPO::getReportColumnName, Collectors.toList()); List taxDeclarationValuePOS = getTaxDeclarationValueService(user).listByTaxDeclarationId(declarationPO.getId()); Map empDeclarationValueMap = SalaryEntityUtil.convert2Map(taxDeclarationValuePOS, TaxDeclarationValuePO::getEmployeeId); @@ -268,7 +266,6 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar InputStream fileInputStream = null; try { - fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId())); Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX); @@ -277,8 +274,7 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar // 存在错误的那行数据 List> errorDatas = Lists.newArrayList(); // 表头 - List headers; - headers = ExcelSupport.getSheetHeader(sheet, 0); + List headers = ExcelSupport.getSheetHeader(sheet, 0); List> data = ExcelParseHelper.parse2Map(sheet, 1, 0); if (CollectionUtils.isEmpty(headers)) { @@ -287,6 +283,12 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar if (CollectionUtils.isEmpty(data)) { throw new RuntimeException("无数据"); } + + Optional first = taxReportColumnNames.stream().filter(name -> !headers.contains(name)).findFirst(); + if (first.isPresent()) { + throw new RuntimeException("申报模板异常,缺失" + first.get() + "列"); + } + for (int i = 0; i < data.size(); i++) { String row = "第" + (i + 2) + "行"; @@ -347,7 +349,7 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar } if (empDeclarationValueMap.containsKey(employeeId)) { - TaxDeclarationValuePO taxDeclarationValue =empDeclarationValueMap.get(employeeId); + TaxDeclarationValuePO taxDeclarationValue = empDeclarationValueMap.get(employeeId); taxDeclarationValue.setResultValue(valueMap); taxDeclarationValue.setResultValueJson(JsonUtil.toJsonString(valueMap)); taxDeclarationValue.setUpdateTime(new Date()); From 7c50e388674b17657fc3675ccc3760600a79cc67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 28 Dec 2023 19:19:09 +0800 Subject: [PATCH 57/92] =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202312270603.sql | 5 +++++ resource/sqlupgrade/GS/sql202312270603.sql | 5 +++++ resource/sqlupgrade/JC/sql202312270603.sql | 5 +++++ resource/sqlupgrade/Mysql/sql202312270603.sql | 5 +++-- resource/sqlupgrade/Oracle/sql202312270603.sql | 5 +++++ resource/sqlupgrade/PG/sql202312270603.sql | 4 +++- resource/sqlupgrade/SQLServer/sql202312270603.sql | 3 +++ resource/sqlupgrade/ST/sql202312270603.sql | 5 +++++ 8 files changed, 34 insertions(+), 3 deletions(-) diff --git a/resource/sqlupgrade/DM/sql202312270603.sql b/resource/sqlupgrade/DM/sql202312270603.sql index 99adc68e5..f9aba2b22 100644 --- a/resource/sqlupgrade/DM/sql202312270603.sql +++ b/resource/sqlupgrade/DM/sql202312270603.sql @@ -3,3 +3,8 @@ ALTER TABLE hrsa_tax_declaration_value add ( ); / +ALTER TABLE declare_request_id add ( + declare_request_id varchar2(100) +); +/ + diff --git a/resource/sqlupgrade/GS/sql202312270603.sql b/resource/sqlupgrade/GS/sql202312270603.sql index 99adc68e5..f9aba2b22 100644 --- a/resource/sqlupgrade/GS/sql202312270603.sql +++ b/resource/sqlupgrade/GS/sql202312270603.sql @@ -3,3 +3,8 @@ ALTER TABLE hrsa_tax_declaration_value add ( ); / +ALTER TABLE declare_request_id add ( + declare_request_id varchar2(100) +); +/ + diff --git a/resource/sqlupgrade/JC/sql202312270603.sql b/resource/sqlupgrade/JC/sql202312270603.sql index 99adc68e5..f9aba2b22 100644 --- a/resource/sqlupgrade/JC/sql202312270603.sql +++ b/resource/sqlupgrade/JC/sql202312270603.sql @@ -3,3 +3,8 @@ ALTER TABLE hrsa_tax_declaration_value add ( ); / +ALTER TABLE declare_request_id add ( + declare_request_id varchar2(100) +); +/ + diff --git a/resource/sqlupgrade/Mysql/sql202312270603.sql b/resource/sqlupgrade/Mysql/sql202312270603.sql index 3b1e70e48..52d95fada 100644 --- a/resource/sqlupgrade/Mysql/sql202312270603.sql +++ b/resource/sqlupgrade/Mysql/sql202312270603.sql @@ -1,2 +1,3 @@ -ALTER TABLE hrsa_tax_declaration_value -ADD COLUMN source int(0) NULL ; \ No newline at end of file +ALTER TABLE hrsa_tax_declaration_value ADD COLUMN source int(0) NULL ; + +ALTER TABLE hrsa_tax_declare_record ADD COLUMN declare_request_id varchar(100) NULL ; \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202312270603.sql b/resource/sqlupgrade/Oracle/sql202312270603.sql index 3865d0084..4aea94ab0 100644 --- a/resource/sqlupgrade/Oracle/sql202312270603.sql +++ b/resource/sqlupgrade/Oracle/sql202312270603.sql @@ -1,4 +1,9 @@ ALTER TABLE hrsa_tax_declaration_value add ( source number ) +/ + +ALTER TABLE declare_request_id add ( + declare_request_id varchar2(100) +) / \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202312270603.sql b/resource/sqlupgrade/PG/sql202312270603.sql index 2c6535f86..42b0d9089 100644 --- a/resource/sqlupgrade/PG/sql202312270603.sql +++ b/resource/sqlupgrade/PG/sql202312270603.sql @@ -1 +1,3 @@ -ALTER TABLE hrsa_tax_declaration_value ADD COLUMN source int NULL ; \ No newline at end of file +ALTER TABLE hrsa_tax_declaration_value ADD COLUMN source int NULL ; + +ALTER TABLE hrsa_salary_template ADD COLUMN declare_request_id varchar(200) NULL; \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202312270603.sql b/resource/sqlupgrade/SQLServer/sql202312270603.sql index a136431d3..6955742ff 100644 --- a/resource/sqlupgrade/SQLServer/sql202312270603.sql +++ b/resource/sqlupgrade/SQLServer/sql202312270603.sql @@ -1,2 +1,5 @@ ALTER TABLE hrsa_tax_declaration_value ADD source int NULL +GO + +ALTER TABLE hrsa_tax_declare_record ADD declare_request_id varchar(100) NULL GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202312270603.sql b/resource/sqlupgrade/ST/sql202312270603.sql index 99adc68e5..f9aba2b22 100644 --- a/resource/sqlupgrade/ST/sql202312270603.sql +++ b/resource/sqlupgrade/ST/sql202312270603.sql @@ -3,3 +3,8 @@ ALTER TABLE hrsa_tax_declaration_value add ( ); / +ALTER TABLE declare_request_id add ( + declare_request_id varchar2(100) +); +/ + From 79ba7c754cb7ac00c98579b5795723e90fe8d42b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 28 Dec 2023 20:59:13 +0800 Subject: [PATCH 58/92] =?UTF-8?q?=E7=94=B3=E6=8A=A5=E5=8F=8D=E9=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/TaxDeclarationInfoDTO.java | 4 +- .../impl/TaxDeclarationExcelServiceImpl.java | 47 ++++++++++++++----- .../salary/web/EmployeeDeclareController.java | 2 +- 3 files changed, 39 insertions(+), 14 deletions(-) diff --git a/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclarationInfoDTO.java b/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclarationInfoDTO.java index 20a06d05a..c3d48af5b 100644 --- a/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclarationInfoDTO.java +++ b/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclarationInfoDTO.java @@ -29,11 +29,11 @@ public class TaxDeclarationInfoDTO { @ApiModelProperty("薪资所属月") - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8") private Date salaryMonth; @ApiModelProperty("税款所属期") - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8") private Date taxCycle; @ApiModelProperty("个税扣缴义务人id") diff --git a/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java index a4ac55966..5f5796e39 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java @@ -234,6 +234,8 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar @Override public Map importData(DownloadTemplateParam param) { + Map apidatas = new HashMap<>(); + //查询对于人员信息导入筛选的全局配置 SalarySysConfPO salarySysConfPO = getSalarySysConfMapper().getOneByCode("matchEmployeeMode"); String confValue = (salarySysConfPO != null && salarySysConfPO.getConfValue() != null && !"".equals(salarySysConfPO.getConfValue())) ? salarySysConfPO.getConfValue() : "0"; @@ -251,10 +253,8 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar List taxDeclarationValuePOS = getTaxDeclarationValueService(user).listByTaxDeclarationId(declarationPO.getId()); Map empDeclarationValueMap = SalaryEntityUtil.convert2Map(taxDeclarationValuePOS, TaxDeclarationValuePO::getEmployeeId); - // 索引(用于计算进度) - int index = 0; // 失败的数量 - int failCount = 0; + int errorCount = 0; // 成功的数量 int successCount = 0; Date now = new Date(); @@ -278,17 +278,36 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar List> data = ExcelParseHelper.parse2Map(sheet, 1, 0); if (CollectionUtils.isEmpty(headers)) { - throw new RuntimeException("表头为空"); + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", "表头为空"); + excelComments.add(errorMessageMap); + apidatas.put("successCount", successCount); + apidatas.put("errorCount", errorCount); + apidatas.put("errorData", excelComments); + return apidatas; } if (CollectionUtils.isEmpty(data)) { - throw new RuntimeException("无数据"); + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", "无数据"); + excelComments.add(errorMessageMap); + apidatas.put("successCount", successCount); + apidatas.put("errorCount", errorCount); + apidatas.put("errorData", excelComments); + return apidatas; } Optional first = taxReportColumnNames.stream().filter(name -> !headers.contains(name)).findFirst(); if (first.isPresent()) { - throw new RuntimeException("申报模板异常,缺失" + first.get() + "列"); + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", "申报模板异常,缺失" + first.get() + "列,请检查是否为" + incomeCategoryEnum.getDefaultLabel() + "申报模板"); + excelComments.add(errorMessageMap); + apidatas.put("successCount", successCount); + apidatas.put("errorCount", errorCount); + apidatas.put("errorData", excelComments); + return apidatas; } + for (int i = 0; i < data.size(); i++) { String row = "第" + (i + 2) + "行"; @@ -335,7 +354,7 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar } if (isError) { - failCount++; + errorCount++; errorDatas.add(map); continue; } @@ -344,8 +363,8 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar Map valueMap = Maps.newHashMap(); for (TaxReportColumnPO taxReportColumn : taxReportColumnPOS) { - Object value = map.get(taxReportColumn.getReportColumnName()); - valueMap.put(taxReportColumn.getReportColumnDataIndex(), value != null ? value.toString() : Objects.equals(taxReportColumn.getDataType(), SalaryDataTypeEnum.NUMBER.getValue()) ? "0.00" : ""); + String value = (String) map.getOrDefault(taxReportColumn.getReportColumnName(), ""); + valueMap.put(taxReportColumn.getReportColumnDataIndex(), StringUtils.isNotBlank(value) ? value.toString() : Objects.equals(taxReportColumn.getDataType(), SalaryDataTypeEnum.NUMBER.getValue()) ? "0.00" : ""); } if (empDeclarationValueMap.containsKey(employeeId)) { @@ -378,12 +397,18 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar getTaxDeclarationValueService(user).batchSave(addList); getTaxDeclarationValueService(user).batchEdit(editList); + if (incomeCategoryEnum == IncomeCategoryEnum.ONETIME_ANNUAL_BONUS) { + TaxDeclareRecordPO declareRecordPO = getTaxDeclareRecordService(user).getById(declarationPO.getTaxDeclareRecordId()); + getTaxDeclarationValueService(user).autoAddWagesDeclare(declareRecordPO); + } + apidatas.put("successCount", successCount); + apidatas.put("errorCount", errorCount); + apidatas.put("errorData", excelComments); } finally { IOUtils.closeQuietly(fileInputStream); } - - return null; + return apidatas; } } diff --git a/src/com/engine/salary/web/EmployeeDeclareController.java b/src/com/engine/salary/web/EmployeeDeclareController.java index 6c2979f97..fa54d79f3 100644 --- a/src/com/engine/salary/web/EmployeeDeclareController.java +++ b/src/com/engine/salary/web/EmployeeDeclareController.java @@ -336,7 +336,7 @@ public class EmployeeDeclareController { /** * 人员报送-导出全部人员 * - * @param queryParam 导出参数 + * @param param 导出参数 * @return */ @POST From f03c0d0147749d0824466bd9caf884239463fc81 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 29 Dec 2023 10:27:35 +0800 Subject: [PATCH 59/92] =?UTF-8?q?=E8=96=AA=E8=B5=84=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E8=87=B3=E8=B4=A6=E5=A5=97=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=8C=E8=BF=87=E6=BB=A4=E6=B2=A1=E6=9C=89=E6=9D=83=E9=99=90?= =?UTF-8?q?=E7=9A=84=E8=B4=A6=E5=A5=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/service/impl/SalaryItemServiceImpl.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java index 3c30540a4..b287d3792 100644 --- a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java @@ -421,6 +421,9 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService List salarySobItemList = getSalarySobItemService(user).listBySalaryItemIds(Collections.singleton(salaryItemId)); Set salarySobIds = SalaryEntityUtil.properties(salarySobItemList, SalarySobItemPO::getSalarySobId); List salarySobs = getSalarySobService(user).listByIds(salarySobIds); + // 获取能够管理的义务人 + Set taxAgentIds = SalaryEntityUtil.properties(getTaxAgentService(user).listAllTaxAgentsAsAdmin(Long.valueOf(user.getUID())), TaxAgentPO::getId); + salarySobs = salarySobs.stream().filter(sob -> taxAgentIds.contains(sob.getTaxAgentId())).collect(Collectors.toList()); return salarySobs.stream().map(m -> { Map map = new HashMap<>(); map.put("id", String.valueOf(m.getId())); From bca7697d754298fe214dc24c4a73360ecedeebea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 29 Dec 2023 11:46:00 +0800 Subject: [PATCH 60/92] =?UTF-8?q?=E5=8F=96=E6=B6=88=E5=85=A8=E5=B9=B4?= =?UTF-8?q?=E4=B8=80=E6=AC=A1=E6=80=A7=E5=A5=96=E9=87=91=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/EmployeeDeclareListDTO.java | 16 ++++++++++++++++ .../impl/SalaryAcctRecordServiceImpl.java | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/entity/employeedeclare/dto/EmployeeDeclareListDTO.java b/src/com/engine/salary/entity/employeedeclare/dto/EmployeeDeclareListDTO.java index 93a06d3b5..76af21666 100644 --- a/src/com/engine/salary/entity/employeedeclare/dto/EmployeeDeclareListDTO.java +++ b/src/com/engine/salary/entity/employeedeclare/dto/EmployeeDeclareListDTO.java @@ -5,6 +5,7 @@ import com.engine.salary.annotation.SalaryTableColumn; import com.engine.salary.annotation.TableTitle; import com.engine.salary.enums.employeedeclare.DeclareStatusEnum; import com.engine.salary.enums.salaryaccounting.EmployeeTypeEnum; +import com.engine.salary.util.excel.ExcelHead; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -42,72 +43,86 @@ public class EmployeeDeclareListDTO { // 姓名 @SalaryTableColumn(text = "姓名", width = "10%", column = "employeeName") @TableTitle(title = "姓名", dataIndex = "employeeName", key = "employeeName") + @ExcelHead(title = "姓名", dataIndex = "employeeName") private String employeeName; // 分部 @SalaryTableColumn(text = "分部", width = "10%", column = "subCompanyName") @TableTitle(title = "分部", dataIndex = "subCompanyName", key = "subCompanyName") + @ExcelHead(title = "分部", dataIndex = "subCompanyName") private String subCompanyName; // 部门 @SalaryTableColumn(text = "部门", width = "10%", column = "departmentName") @TableTitle(title = "部门", dataIndex = "departmentName", key = "departmentName") + @ExcelHead(title = "部门", dataIndex = "departmentName") private String departmentName; // 个税扣缴义务人 @SalaryTableColumn(text = "个税扣缴义务人", width = "10%", column = "taxAgentName") @TableTitle(title = "个税扣缴义务人", dataIndex = "taxAgentName", key = "taxAgentName") + @ExcelHead(title = "个税扣缴义务人", dataIndex = "taxAgentName") private String taxAgentName; // 工号 @SalaryTableColumn(text = "工号", width = "10%", column = "jobNum") @TableTitle(title = "工号", dataIndex = "jobNum", key = "jobNum") + @ExcelHead(title = "工号", dataIndex = "jobNum") private String jobNum; // 证件类型 @SalaryTableColumn(text = "证件类型", width = "10%", column = "cardType") @TableTitle(title = "证件类型", dataIndex = "cardType", key = "cardType") + @ExcelHead(title = "证件类型", dataIndex = "cardType") private String cardType; // 证件号码 @SalaryTableColumn(text = "证件号码", width = "10%", column = "cardNum") @TableTitle(title = "证件号码", dataIndex = "cardNum", key = "cardNum") + @ExcelHead(title = "证件号码", dataIndex = "cardNum") private String cardNum; // 性别 @SalaryTableColumn(text = "性别", width = "10%", column = "gender") @TableTitle(title = "性别", dataIndex = "gender", key = "gender") + @ExcelHead(title = "性别", dataIndex = "gender") private String gender; // 出生日期 @SalaryTableColumn(text = "出生日期", width = "10%", column = "birthday") @TableTitle(title = "出生日期", dataIndex = "birthday", key = "birthday") + @ExcelHead(title = "出生日期", dataIndex = "birthday") private String birthday; // 人员状态 @SalaryTableColumn(text = "人员状态", width = "10%", column = "employmentStatus") @TableTitle(title = "人员状态", dataIndex = "employmentStatus", key = "employmentStatus") + @ExcelHead(title = "人员状态", dataIndex = "employmentStatus") private String employmentStatus; // 手机号码 @SalaryTableColumn(text = "手机号码", width = "10%", column = "mobile") @TableTitle(title = "手机号码", dataIndex = "mobile", key = "mobile") + @ExcelHead(title = "手机号码", dataIndex = "mobile") private String mobile; // 任职受雇从业类型 @SalaryTableColumn(text = "任职受雇从业类型", width = "10%", column = "employmentType") @TableTitle(title = "任职受雇从业类型", dataIndex = "employmentType", key = "employmentType") + @ExcelHead(title = "任职受雇从业类型", dataIndex = "employmentType") private String employmentType; // 任职受雇从业日期 @SalaryTableColumn(text = "任职受雇从业日期", width = "10%", column = "employmentDate") @TableTitle(title = "任职受雇从业日期", dataIndex = "employmentDate", key = "employmentDate") + @ExcelHead(title = "任职受雇从业日期", dataIndex = "employmentDate") private String employmentDate; // 离职日期 @SalaryTableColumn(text = "离职日期", width = "10%", column = "dismissDate") @TableTitle(title = "离职日期", dataIndex = "dismissDate", key = "dismissDate") + @ExcelHead(title = "离职日期", dataIndex = "dismissDate") private String dismissDate; // 申报状态 @@ -116,6 +131,7 @@ public class EmployeeDeclareListDTO { // 申报状态 @SalaryTableColumn(text = "申报状态", width = "10%", column = "declareStatusDesc") @TableTitle(title = "申报状态", dataIndex = "declareStatusDesc", key = "declareStatusDesc") + @ExcelHead(title = "申报状态", dataIndex = "declareStatusDesc") private String declareStatusDesc; // 申报失败原因 diff --git a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java index 79376b60d..c68b1dc9e 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java @@ -514,7 +514,7 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe .findAny() .orElse(null); if (diffTaxCycleSalaryAcctTaxAgent != null) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(160502, "全年一次性奖金收入一年内只能申报一次,所以税款所属期必须相同")); +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(160502, "全年一次性奖金收入一年内只能申报一次,所以税款所属期必须相同")); } } } From ac2046a8e77ec5528ed8a85f3f8776f5cf5f4f2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 29 Dec 2023 17:24:52 +0800 Subject: [PATCH 61/92] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E3=80=81=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E7=94=B3=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/TaxDeclarationAddParam.java | 36 +++++ .../param/TaxDeclarationDeleteParam.java | 29 +++++ .../param/TaxDeclareRecordParam.java | 1 + .../salary/service/TaxDeclarationService.java | 10 ++ .../service/TaxDeclarationValueService.java | 2 +- .../impl/TaxDeclarationServiceImpl.java | 94 ++++++++++++- .../impl/TaxDeclareRecordServiceImpl.java | 1 + .../salary/web/TaxDeclarationController.java | 32 ++++- .../salary/wrapper/TaxDeclarationWrapper.java | 123 ------------------ .../wrapper/TaxDeclareRecordWrapper.java | 14 ++ 10 files changed, 216 insertions(+), 126 deletions(-) create mode 100644 src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationAddParam.java create mode 100644 src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationDeleteParam.java diff --git a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationAddParam.java b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationAddParam.java new file mode 100644 index 000000000..7104856ff --- /dev/null +++ b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationAddParam.java @@ -0,0 +1,36 @@ +package com.engine.salary.entity.taxdeclaration.param; + +import com.engine.salary.enums.salarysob.IncomeCategoryEnum; +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 新增个税申报表参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaxDeclarationAddParam { + + /** + * 个税申报记录id + */ + @DataCheck(require = true, message = "个税申报记录id为空") + private Long taxDeclareRecordId; + + /** + * 薪资类型 + */ + @DataCheck(require = true, message = "薪资类型为空") + private IncomeCategoryEnum incomeCategory; + +} diff --git a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationDeleteParam.java b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationDeleteParam.java new file mode 100644 index 000000000..aac346fb1 --- /dev/null +++ b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationDeleteParam.java @@ -0,0 +1,29 @@ +package com.engine.salary.entity.taxdeclaration.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 删除个税申报表参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaxDeclarationDeleteParam { + + /** + * 个税申报表id + */ + @DataCheck(require = true, message = "个税申报表id为空") + private Long taxDeclarationId; + +} diff --git a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordParam.java b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordParam.java index 7e94fcc2e..673fd4aa8 100644 --- a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordParam.java +++ b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordParam.java @@ -1,5 +1,6 @@ package com.engine.salary.entity.taxdeclaration.param; +import com.engine.salary.util.valid.DataCheck; import lombok.Data; /** diff --git a/src/com/engine/salary/service/TaxDeclarationService.java b/src/com/engine/salary/service/TaxDeclarationService.java index 91b38c3eb..ef4c71fd1 100644 --- a/src/com/engine/salary/service/TaxDeclarationService.java +++ b/src/com/engine/salary/service/TaxDeclarationService.java @@ -3,6 +3,8 @@ package com.engine.salary.service; import com.engine.salary.common.YearMonthRange; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationAddParam; +import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationDeleteParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationListQueryParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationSaveParam; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationPO; @@ -73,4 +75,12 @@ public interface TaxDeclarationService { */ List listByTaxCycleRange(YearMonthRange yearMonthRange); + + /** + * 新增申报表 + * @param param + */ + void addTaxDeclaration(TaxDeclarationAddParam param); + + void deleteTaxDeclaration(TaxDeclarationDeleteParam param); } diff --git a/src/com/engine/salary/service/TaxDeclarationValueService.java b/src/com/engine/salary/service/TaxDeclarationValueService.java index 969292efb..3d12b5350 100644 --- a/src/com/engine/salary/service/TaxDeclarationValueService.java +++ b/src/com/engine/salary/service/TaxDeclarationValueService.java @@ -36,7 +36,7 @@ public interface TaxDeclarationValueService { * @return */ List listByTaxDeclarationIds(Collection taxDeclarationIds); - List listByTaxDeclarationId(Long taxDeclarationIds); + List listByTaxDeclarationId(Long taxDeclarationId); /** * 查询个税申报表明细 diff --git a/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java index d69513ae0..34019ce42 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java @@ -4,16 +4,23 @@ import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.common.LocalDateRange; import com.engine.salary.common.YearMonthRange; +import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.entity.taxdeclaration.bo.TaxDeclarationBO; +import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationAddParam; +import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationDeleteParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationListQueryParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationSaveParam; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationPO; +import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationValuePO; +import com.engine.salary.entity.taxdeclaration.po.TaxDeclareRecordPO; import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; +import com.engine.salary.enums.salarysob.IncomeCategoryEnum; +import com.engine.salary.enums.sicategory.DeleteTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.datacollection.AddUpSituationMapper; import com.engine.salary.mapper.salaryacct.SalaryAcctRecordMapper; @@ -25,6 +32,8 @@ import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; +import com.engine.salary.util.valid.ValidUtil; +import dm.jdbc.util.IdGenerator; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.BooleanUtils; @@ -84,6 +93,16 @@ public class TaxDeclarationServiceImpl extends Service implements TaxDeclaration return ServiceUtil.getService(SalaryAcctEmployeeServiceImpl.class, user); } + + private TaxDeclareRecordService getTaxDeclareRecordService(User user) { + return ServiceUtil.getService(TaxDeclareRecordServiceImpl.class, user); + } + + private TaxDeclarationValueService getTaxDeclarationValueService(User user) { + return ServiceUtil.getService(TaxDeclarationValueServiceImpl.class, user); + } + + @Override public List listByTaxCycleAndTaxAgentIds(YearMonth taxCycle, Collection taxAgentIds) { if (Objects.isNull(taxCycle) || CollectionUtils.isEmpty(taxAgentIds)) { @@ -102,8 +121,9 @@ public class TaxDeclarationServiceImpl extends Service implements TaxDeclaration TaxDeclarationPO po = TaxDeclarationPO.builder().taxDeclareRecordId(taxDeclareRecordId).build(); return getTaxDeclarationMapper().listSome(po); } + @Override - public List listByTaxDeclareRecordId(Long taxDeclareRecordId,Integer incomeCategory) { + public List listByTaxDeclareRecordId(Long taxDeclareRecordId, Integer incomeCategory) { if (Objects.isNull(taxDeclareRecordId)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(84026, "参数错误")); } @@ -383,4 +403,76 @@ public class TaxDeclarationServiceImpl extends Service implements TaxDeclaration .salaryMonths(LocalDateRange.builder().fromDate(yearMonthRange.getStartMonth()).endDate(yearMonthRange.getEndMonth()).build()) .build()); } + + + /** + * 新增申报表 + * + * @param param + */ + @Override + public void addTaxDeclaration(TaxDeclarationAddParam param) { + ValidUtil.doValidator(param); + + Long taxDeclareRecordId = param.getTaxDeclareRecordId(); + IncomeCategoryEnum incomeCategory = param.getIncomeCategory(); + + TaxDeclareRecordPO taxDeclareRecord = getTaxDeclareRecordService(user).getById(taxDeclareRecordId); + if (taxDeclareRecord == null) { + throw new SalaryRunTimeException("申报记录不存在!"); + } + + List taxDeclarations = listByTaxDeclareRecordId(taxDeclareRecordId); + Optional first = taxDeclarations.stream().filter(taxDeclarationPO -> incomeCategory.getValue().equals(taxDeclarationPO.getIncomeCategory())).findFirst(); + if (first.isPresent()) { + throw new SalaryRunTimeException("已存在" + incomeCategory.getDefaultLabel() + "申报表"); + } + + Date now = new Date(); + TaxDeclarationPO taxDeclaration = TaxDeclarationPO + .builder() + .id(IdGenerator.generate()) + .taxDeclareRecordId(taxDeclareRecord.getId()) + .incomeCategory(incomeCategory.getValue()) + .taxAgentId(taxDeclareRecord.getTaxAgentId()) + .salaryMonth(taxDeclareRecord.getSalaryMonth()) + .taxCycle(taxDeclareRecord.getTaxCycle()) + .description(taxDeclareRecord.getRemark()) + .controlView(0) + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .deleteType(DeleteTypeEnum.NOT_DELETED.getValue()) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + List objects = new ArrayList<>(); + objects.add(taxDeclaration); + getTaxDeclarationMapper().batchInsert(objects); + } + + + /** + * 新增申报表 + * + * @param param + */ + @Override + public void deleteTaxDeclaration(TaxDeclarationDeleteParam param) { + ValidUtil.doValidator(param); + Long taxDeclarationId = param.getTaxDeclarationId(); + TaxDeclarationPO declarationPO = getById(taxDeclarationId); + + if (declarationPO == null) { + throw new SalaryRunTimeException("申报表不存在!"); + } + + List taxDeclarationValuePOS = getTaxDeclarationValueService(user).listByTaxDeclarationId(taxDeclarationId); + + if (CollectionUtils.isNotEmpty(taxDeclarationValuePOS)) { + throw new SalaryRunTimeException("存在申报明细不允许删除,请先删除申报表明细!"); + } + + getTaxDeclarationMapper().deleteByIdZj(taxDeclarationId); + } + } diff --git a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java index 7f388cf8f..29a6d6492 100644 --- a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java @@ -1064,6 +1064,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe getTaxDeclareRecordMapper().updateIgnoreNull(taxDeclareRecord); } + private TaxDeclareRequest buildTaxDeclareRequest(Long id) { // 查询供应商信息 TaxDeclarationApiConfigPO apiConfig = getTaxDeclarationApiConfigService(user).getConfig(true); diff --git a/src/com/engine/salary/web/TaxDeclarationController.java b/src/com/engine/salary/web/TaxDeclarationController.java index dc61a0458..c0d6944f9 100644 --- a/src/com/engine/salary/web/TaxDeclarationController.java +++ b/src/com/engine/salary/web/TaxDeclarationController.java @@ -134,7 +134,7 @@ public class TaxDeclarationController { } /** - * 删除个税申报表 + * 删除个税申报记录 * * @param ids 个税申报记录id * @return @@ -175,6 +175,36 @@ public class TaxDeclarationController { return new ResponseResult>(user).run(getTaxDeclareRecordWrapper(user)::getTaxDeclarationTab, id); } + /** + * 新增个税申报记录下的个税申报表TAB + * + * @param param 个税申报记录id + * @return + */ + @POST + @Path("/addTaxDeclaration") + @Produces(MediaType.APPLICATION_JSON) + public String addTaxDeclarationTab(@Context HttpServletRequest request, @Context HttpServletResponse response,TaxDeclarationAddParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::addTaxDeclaration, param); + } + + /** + * 删除申报表 + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/deleteTaxDeclaration") + @Produces(MediaType.APPLICATION_JSON) + public String deleteTaxDeclaration(@Context HttpServletRequest request, @Context HttpServletResponse response,TaxDeclarationDeleteParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::deleteTaxDeclaration, param); + } + + /** * 在线申报 * diff --git a/src/com/engine/salary/wrapper/TaxDeclarationWrapper.java b/src/com/engine/salary/wrapper/TaxDeclarationWrapper.java index aa39752db..d98b8a419 100644 --- a/src/com/engine/salary/wrapper/TaxDeclarationWrapper.java +++ b/src/com/engine/salary/wrapper/TaxDeclarationWrapper.java @@ -2,35 +2,14 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; -import com.engine.salary.component.WeaFormOption; -import com.engine.salary.entity.datacollection.DataCollectionEmployee; -import com.engine.salary.entity.taxagent.po.TaxAgentPO; -import com.engine.salary.entity.taxdeclaration.bo.TaxDeclarationBO; -import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationFormDTO; -import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationInfoDTO; -import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationListDTO; -import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationListQueryParam; -import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationSaveParam; -import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationPO; -import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.service.SalaryEmployeeService; import com.engine.salary.service.TaxAgentService; import com.engine.salary.service.TaxDeclarationService; import com.engine.salary.service.impl.SalaryEmployeeServiceImpl; import com.engine.salary.service.impl.TaxAgentServiceImpl; import com.engine.salary.service.impl.TaxDeclarationServiceImpl; -import com.engine.salary.util.SalaryDateUtil; -import com.engine.salary.util.SalaryEntityUtil; -import com.engine.salary.util.SalaryI18nUtil; -import com.engine.salary.util.page.PageInfo; -import com.google.common.collect.Lists; -import org.apache.commons.collections4.CollectionUtils; import weaver.hrm.User; -import java.text.SimpleDateFormat; -import java.util.*; -import java.util.stream.Collectors; - /** * 个税申报表 *

Copyright: Copyright (c) 2022

@@ -53,106 +32,4 @@ public class TaxDeclarationWrapper extends Service { return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); } - /** - * 个税申报表列表 - * - * @param queryParam 列表查询条件 - * @param - * @return - */ - public PageInfo listPage(TaxDeclarationListQueryParam queryParam) { - // 询个税申报表(分页) - PageInfo page = getTaxDeclarationService(user).listPageByParam(queryParam); - PageInfo dtoPage = new PageInfo(TaxDeclarationListDTO.class); - dtoPage.setPageNum(queryParam.getCurrent()); - dtoPage.setPageSize(queryParam.getPageSize()); - dtoPage.setTotal(page.getTotal()); - List list = page.getList(); - if (CollectionUtils.isNotEmpty(list)) { - // 查询人员 - List employeeIds = SalaryEntityUtil.properties(list, TaxDeclarationPO::getCreator, Collectors.toList()); - List employeeComInfos = getSalaryEmployeeService(user).getEmployeeByIdsAll(employeeIds); - // 查询个税扣缴义务人 - Set taxAgentIds = SalaryEntityUtil.properties(list, TaxDeclarationPO::getTaxAgentId); - List taxAgentPOS = getTaxDeclarationService(user).countByTaxDeclarationId(taxAgentIds); - // 转换成列表dto - List taxDeclarationListDTOS = TaxDeclarationBO.convert2ListDTO(list, employeeComInfos, taxAgentPOS); - dtoPage.setList(taxDeclarationListDTOS); - } - return dtoPage; - } - - - public TaxDeclarationFormDTO getForm(Long id) { - TaxDeclarationFormDTO formDTO = new TaxDeclarationFormDTO(); - if (Objects.nonNull(id)) { - // 查询个税申报表 - TaxDeclarationPO taxDeclaration = getTaxDeclarationService(user).getById(id); - if (Objects.isNull(taxDeclaration)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98877, "个税申报表不存在或已删除")); - } - // 查询个税扣缴义务人 - TaxAgentPO taxAgent = getTaxAgentService(user).getById(id); - //日期转换 - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM"); - String transformDate = simpleDateFormat.format(taxDeclaration.getSalaryMonth()); - // 转换成个税申报表详情dto - formDTO = TaxDeclarationFormDTO.builder().salaryMonth(SalaryDateUtil.String2YearMonth(transformDate)).taxAgentId(taxDeclaration.getTaxAgentId()).taxAgentName(Optional.ofNullable(taxAgent).map(TaxAgentPO::getName).orElse("")).description(taxDeclaration.getDescription()).build(); - } - // 转换成前端所需的数据格式 - // WeaForm weaForm = SalaryFormatUtil.getInstance().buildForm(TaxDeclarationFormDTO.class, formDTO); - - // 查询租户所有的个税扣缴义务人 - Collection taxAgentListDTOS = getTaxAgentService(user).listAll(); - // 表单中个税扣缴义务人的可选项 - List weaFormOptions = Lists.newArrayListWithExpectedSize(taxAgentListDTOS.size()); - for (TaxAgentPO taxAgent : taxAgentListDTOS) { - weaFormOptions.add(new WeaFormOption("" + taxAgent.getId(), taxAgent.getName())); - } -// weaForm.getItems().forEach((k, v) -> { -// if (StringUtils.equals("taxAgentId", k)) { -// v.setOptions(weaFormOptions); -// } -// if (StringUtils.equals("salaryMonth", k)) { -// Map otherParams = new HashMap<>(); -// otherParams.put("type", "month"); -// v.setOtherParams(otherParams); -// } -// }); - return formDTO; - } - - /** - * 查询个税申报表的基本信息 - * - * @param id 个税申报表id - * @return - */ - public TaxDeclarationInfoDTO getTaxDeclarationInfoById(Long id) { - // 查询个税申报表 - TaxDeclarationPO taxDeclaration = getTaxDeclarationService(user).getById(id); - if (Objects.isNull(taxDeclaration)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98877, "个税申报表不存在或已删除")); - } - // 查询个税扣缴义务人 - TaxAgentPO taxAgentPO = getTaxAgentService(user).getById(taxDeclaration.getTaxAgentId()); - return TaxDeclarationInfoDTO.builder().salaryMonth(taxDeclaration.getSalaryMonth()).taxAgentId(taxDeclaration.getTaxAgentId()).taxAgentName(Optional.ofNullable(taxAgentPO).map(TaxAgentPO::getName).orElse("")).build(); - } - - /** - * 保存 - * - * @param saveParam 保存参数 - */ - public void save(TaxDeclarationSaveParam saveParam) { - getTaxDeclarationService(user).save(saveParam); - } - - /** - * 撤回个税申报 - * @param taxDeclarationId - */ - public void withDrawTaxDeclaration(Long taxDeclarationId) { - getTaxDeclarationService(user).withDrawTaxDeclaration(taxDeclarationId); - } } diff --git a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java index fed3fbe32..8c8f7be2b 100644 --- a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java +++ b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java @@ -310,6 +310,19 @@ public class TaxDeclareRecordWrapper extends Service { return tabs; } + /** + * 新增申报表 + * @param param + */ + public void addTaxDeclaration(TaxDeclarationAddParam param) { + getTaxDeclarationService(user).addTaxDeclaration(param); + } + + + public void deleteTaxDeclaration(TaxDeclarationDeleteParam param) { + getTaxDeclarationService(user).deleteTaxDeclaration(param); + } + /** * 查询个税申报表的基本信息 * @@ -767,4 +780,5 @@ public class TaxDeclareRecordWrapper extends Service { public Map importData(DownloadTemplateParam param) { return getTaxDeclarationExcelService(user).importData(param); } + } From dc3533d753a634984b62663cbc9dffd6b0ef2078 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 2 Jan 2024 09:41:30 +0800 Subject: [PATCH 62/92] =?UTF-8?q?=E4=BA=BA=E5=91=98=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=8A=A5=E9=80=81=E5=AF=BC=E5=85=A5=E5=88=86=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/EmployeeDeclareServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java b/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java index 1a18c8b3a..8143756ed 100644 --- a/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java +++ b/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java @@ -733,7 +733,7 @@ public class EmployeeDeclareServiceImpl extends Service implements EmployeeDecla if (CollectionUtils.isEmpty(insertList)) { return; } - List> partition = Lists.partition(insertList, 100); + List> partition = Lists.partition(insertList, 50); partition.forEach(getEmployeeDeclareMapper()::batchInsert); } } From 4cdd7616d9aa497476973595600ada8333f81333 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 2 Jan 2024 10:18:25 +0800 Subject: [PATCH 63/92] =?UTF-8?q?=E7=94=B3=E6=8A=A5=E5=89=8D=E6=B8=85?= =?UTF-8?q?=E9=99=A4=E9=94=99=E8=AF=AF=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/TaxDeclareRecordServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java index 29a6d6492..2f4f54b2b 100644 --- a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java @@ -679,6 +679,8 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe taxDeclareRecord.setTaxDeclareStatus(TaxDeclareStatusEnum.DECLARING.getValue()); taxDeclareRecord.setRequestId(declareTaxResponse.getBody().getRequestId()); taxDeclareRecord.setUpdateTime(new Date()); + //清除之前的错误 + taxDeclareRecord.setTaxDeclareErrorMsg(""); getTaxDeclareRecordMapper().updateIgnoreNull(taxDeclareRecord); // 删除个税申报申报失败的数据 getTaxDeclareFailService(user).deleteByTaxDeclareRecordIds(Collections.singleton(taxDeclareRecord.getId())); From 4c233fb168e9b2efee85d3f59df4c1f502eb89b6 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 2 Jan 2024 13:44:57 +0800 Subject: [PATCH 64/92] =?UTF-8?q?=E4=BA=BA=E5=91=98=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=8A=A5=E9=80=81=E5=AF=BC=E5=85=A5=EF=BC=8C=E7=94=B3=E6=8A=A5?= =?UTF-8?q?=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/EmployeeDeclareExcelServiceImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java b/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java index 520dcc68a..41401a94c 100644 --- a/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java @@ -447,7 +447,6 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee BeanUtils.copyProperties(employeeDeclarePO, newEmployeeDeclare, getNullPropertyNames(employeeDeclarePO)); newEmployeeDeclare.setNewEmployeeInfo(StringUtils.equals(employeeDeclare.toCompareString(), newEmployeeDeclare.toCompareString()) ? 0 : 1); newEmployeeDeclare.setUpdateTime(now); - needUpdateEmployeeDeclares.add(newEmployeeDeclare); if (Objects.equals(newEmployeeDeclare.getNewEmployeeInfo(), 1)) { newEmployeeDeclare.setDeclareStatus(DeclareStatusEnum.NOT_DECLARE.getValue()); newEmployeeDeclare.setDeclareErrorMsg(""); @@ -541,7 +540,9 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee .creator(Long.valueOf(user.getUID())) .deleteType(DeleteTypeEnum.NOT_DELETED.getValue()) .createTime(now) - .updateTime(now).build(); + .updateTime(now) + .declareStatus(DeclareStatusEnum.NOT_DECLARE.getValue()) + .build(); EmployeeDeclarePO employeeDeclarePO = EmployeeDeclareBO.convert2PO(employeeDeclareExcel); BeanUtils.copyProperties(employeeDeclarePO, employeeDeclare, getNullPropertyNames(employeeDeclarePO)); From dbcd6cc0b2aa3430e21b71483596a6747809c74d Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 2 Jan 2024 13:46:14 +0800 Subject: [PATCH 65/92] =?UTF-8?q?=E4=BA=BA=E5=91=98=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=8A=A5=E9=80=81=E5=AF=BC=E5=85=A5=EF=BC=8C=E7=94=B3=E6=8A=A5?= =?UTF-8?q?=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/EmployeeDeclareExcelServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java b/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java index 41401a94c..8b883769f 100644 --- a/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java @@ -447,6 +447,7 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee BeanUtils.copyProperties(employeeDeclarePO, newEmployeeDeclare, getNullPropertyNames(employeeDeclarePO)); newEmployeeDeclare.setNewEmployeeInfo(StringUtils.equals(employeeDeclare.toCompareString(), newEmployeeDeclare.toCompareString()) ? 0 : 1); newEmployeeDeclare.setUpdateTime(now); + needUpdateEmployeeDeclares.add(newEmployeeDeclare); if (Objects.equals(newEmployeeDeclare.getNewEmployeeInfo(), 1)) { newEmployeeDeclare.setDeclareStatus(DeclareStatusEnum.NOT_DECLARE.getValue()); newEmployeeDeclare.setDeclareErrorMsg(""); From fe00f5c0e74247d579b3fb41b41ae46389d87339 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 2 Jan 2024 14:40:33 +0800 Subject: [PATCH 66/92] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E5=8F=91?= =?UTF-8?q?=E9=80=81action?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/FileSalaryAcctRecordAction.java | 15 ++- .../salary/action/SendSalaryAction.java | 118 ++++++++++++++++++ .../salary/service/SalarySendService.java | 2 + .../service/impl/SalarySendServiceImpl.java | 5 + 4 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 src/com/engine/salary/action/SendSalaryAction.java diff --git a/src/com/engine/salary/action/FileSalaryAcctRecordAction.java b/src/com/engine/salary/action/FileSalaryAcctRecordAction.java index 7d6d22fb7..838c4c494 100644 --- a/src/com/engine/salary/action/FileSalaryAcctRecordAction.java +++ b/src/com/engine/salary/action/FileSalaryAcctRecordAction.java @@ -1,12 +1,14 @@ package com.engine.salary.action; import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.mapper.taxagent.TaxAgentMapper; import com.engine.salary.service.SalaryAcctRecordService; import com.engine.salary.service.impl.SalaryAcctRecordServiceImpl; import com.engine.salary.util.db.MapperProxyFactory; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import weaver.general.BaseBean; import weaver.general.Util; import weaver.hrm.User; import weaver.interfaces.workflow.action.Action; @@ -59,8 +61,19 @@ public class FileSalaryAcctRecordAction implements Action { } User user = new User(); user.setUid(1); + Long acctRecordId = Long.valueOf(salaryAcctRecordId); + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(acctRecordId); + if (salaryAcctRecordPO == null) { + requestInfo.getRequestManager().setMessage("薪资核算记录不存在,或已被删除"); + return FAILURE_AND_CONTINUE; + } + if (salaryAcctRecordPO.getStatus() > 1) { + BaseBean baseBean = new BaseBean(); + baseBean.writeLog("核算记录归档action, 该核算记录已经归档:" + salaryAcctRecordPO.getId()); + return SUCCESS; + } try { - getSalaryAcctRecordService(user).file(Long.valueOf(salaryAcctRecordId)); + getSalaryAcctRecordService(user).file(acctRecordId); } catch (Exception e) { requestInfo.getRequestManager().setMessage(e.getMessage()); return FAILURE_AND_CONTINUE; diff --git a/src/com/engine/salary/action/SendSalaryAction.java b/src/com/engine/salary/action/SendSalaryAction.java new file mode 100644 index 000000000..f0f3ef154 --- /dev/null +++ b/src/com/engine/salary/action/SendSalaryAction.java @@ -0,0 +1,118 @@ +package com.engine.salary.action; + +import com.engine.common.util.ServiceUtil; +import com.engine.salary.biz.SalarySendInfoBiz; +import com.engine.salary.entity.salaryBill.param.SalarySendGrantParam; +import com.engine.salary.entity.salaryBill.po.SalarySendPO; +import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; +import com.engine.salary.service.SalaryAcctRecordService; +import com.engine.salary.service.SalaryBillService; +import com.engine.salary.service.SalarySendService; +import com.engine.salary.service.SalaryTemplateService; +import com.engine.salary.service.impl.SalaryAcctRecordServiceImpl; +import com.engine.salary.service.impl.SalaryBillServiceImpl; +import com.engine.salary.service.impl.SalarySendServiceImpl; +import com.engine.salary.service.impl.SalaryTemplateServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.Property; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author Harryxzy + * @ClassName FileSalaryAcctRecordAction + * @date 2023/12/13 9:17 + * @description 工资单发放action + */ +@Slf4j +public class SendSalaryAction implements Action { + + + private SalaryAcctRecordService getSalaryAcctRecordService(User user) { + return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user); + } + + private SalarySendService getSalarySendService(User user) { + return ServiceUtil.getService(SalarySendServiceImpl.class, user); + } + + private SalaryTemplateService getSalaryTemplateService(User user) { + return ServiceUtil.getService(SalaryTemplateServiceImpl.class, user); + } + + private SalarySendInfoBiz salarySendInfoMapper = new SalarySendInfoBiz(); + + private SalaryBillService getSalaryBillService(User user) { + return ServiceUtil.getService(SalaryBillServiceImpl.class, user); + } + + + /** + * 发放id(核算记录id,工资单id)流程字段名 + */ + private String idFieldName; + + /** + * 根据什么id(核算记录id,工资单id)发工资单 + */ + private String sendBy; + + + @Override + public String execute(RequestInfo requestInfo) { + Property[] properties = requestInfo.getMainTableInfo().getProperty(); + Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, + property -> Util.null2String(property.getValue()))); + String idStr = fieldMap.get(idFieldName); + if (StringUtils.isBlank(idStr)) { + requestInfo.getRequestManager().setMessage("核算记录id或工资单id不能为空"); + return FAILURE_AND_CONTINUE; + } + User user = new User(); + user.setUid(1); + Long id = Long.valueOf(idStr); + SalarySendPO salarySendPO; + if(!org.h2.util.StringUtils.isNullOrEmpty(sendBy) && sendBy.equals("salaryAcctRecordId")) { + // 根据核算记录id发 + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(id); + if (salaryAcctRecordPO == null) { + requestInfo.getRequestManager().setMessage("薪资核算记录不存在,或已被删除"); + return FAILURE_AND_CONTINUE; + } + if (salaryAcctRecordPO.getStatus() == 1) { + requestInfo.getRequestManager().setMessage("核算记录还未归档,请先归档"); + return FAILURE_AND_CONTINUE; + } + // 获取工资单id + List salarySendPOList = getSalarySendService(user).listSome(SalarySendPO.builder().salaryAccountingId(id).sendStatus(0).build()); + salarySendPO = salarySendPOList.get(0); + } else if (!org.h2.util.StringUtils.isNullOrEmpty(sendBy) && sendBy.equals("salarySendId")) { + // 根据工资单发 + salarySendPO = getSalarySendService(user).getById(id); + } else { + requestInfo.getRequestManager().setMessage("请先维护根据什么id发放工资单的sendBy参数"); + return FAILURE_AND_CONTINUE; + } + + if (salarySendPO == null || salarySendPO.getId() == null) { + requestInfo.getRequestManager().setMessage("工资单不存在或已被删除!"); + return FAILURE_AND_CONTINUE; + } + try { + // 全部发放 + getSalaryBillService(user).grant(SalarySendGrantParam.builder().salarySendId(salarySendPO.getId()).build()); + } catch (Exception e) { + requestInfo.getRequestManager().setMessage(e.getMessage()); + return FAILURE_AND_CONTINUE; + } + return SUCCESS; + } +} diff --git a/src/com/engine/salary/service/SalarySendService.java b/src/com/engine/salary/service/SalarySendService.java index 90da3440f..72fc71423 100644 --- a/src/com/engine/salary/service/SalarySendService.java +++ b/src/com/engine/salary/service/SalarySendService.java @@ -216,4 +216,6 @@ public interface SalarySendService { void autoConfirmSalaryBill(List needAutoIds); List getByIds(List salarySendId); + + List listSome(SalarySendPO param); } diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index 5c3a92f0d..20cb9f176 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -1725,4 +1725,9 @@ public class SalarySendServiceImpl extends Service implements SalarySendService } return getSalarySendMapper().getByIds(salarySendId); } + + @Override + public List listSome(SalarySendPO param) { + return getSalarySendMapper().listSome(param); + } } From 7945c84fbb5b4c2c47acd930a4e4afdb36bbb467 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 2 Jan 2024 16:37:07 +0800 Subject: [PATCH 67/92] =?UTF-8?q?=E8=96=AA=E8=B5=84=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E5=AE=BD=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/salaryacct/bo/SalaryAcctResultBO.java | 16 ++++++++-------- .../entity/salaryitem/bo/SalaryItemBO.java | 5 ++++- .../entity/salaryitem/dto/SalaryItemFormDTO.java | 3 +++ .../entity/salaryitem/dto/SalaryItemListDTO.java | 3 +++ .../salaryitem/param/SalaryItemSaveParam.java | 5 +++++ .../entity/salaryitem/po/SalaryItemPO.java | 5 +++++ .../salarysob/bo/SalarySobItemAggregateBO.java | 1 + .../entity/salarysob/dto/SalarySobItemDTO.java | 3 +++ .../mapper/salaryitem/SalaryItemMapper.xml | 12 +++++++++++- .../service/impl/SalaryItemServiceImpl.java | 1 + .../engine/salary/util/page/SalaryPageUtil.java | 5 ++++- 11 files changed, 48 insertions(+), 11 deletions(-) diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java index 392ac81e6..0cd19d52b 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java @@ -170,7 +170,7 @@ public class SalaryAcctResultBO { List columns = Lists.newArrayList(); // 员工信息字段 for (SalarySobEmpFieldDTO salarySobEmpFieldDTO : salarySobItemAggregateDTO.getEmpFields()) { - columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobEmpFieldDTO.getFieldName()), salarySobEmpFieldDTO.getFieldName(), salarySobEmpFieldDTO.getFieldId())); + columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobEmpFieldDTO.getFieldName(), 0), salarySobEmpFieldDTO.getFieldName(), salarySobEmpFieldDTO.getFieldId())); } // 薪资项目分组下的薪资项目 for (SalarySobItemGroupDTO salarySobItemGroupDTO : salarySobItemAggregateDTO.getItemGroups()) { @@ -180,29 +180,29 @@ public class SalaryAcctResultBO { List childrenColumns = Lists.newArrayList(); for (SalarySobItemDTO salarySobItemDTO : salarySobItemGroupDTO.getItems()) { if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) { - childrenColumns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern())); + childrenColumns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName(), salarySobItemDTO.getWidth()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern())); } else { - childrenColumns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern())); + childrenColumns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName(), salarySobItemDTO.getWidth()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern())); } } - WeaTableColumnGroup weaTableColumnWapper = new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemGroupDTO.getName()), salarySobItemGroupDTO.getName(), String.valueOf(salarySobItemGroupDTO.getId()), childrenColumns); + WeaTableColumnGroup weaTableColumnWapper = new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemGroupDTO.getName(), 0), salarySobItemGroupDTO.getName(), String.valueOf(salarySobItemGroupDTO.getId()), childrenColumns); columns.add(weaTableColumnWapper); } // 没有分类的薪资项目 for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getItems()) { if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) { - columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern())); + columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName(), salarySobItemDTO.getWidth()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern())); } else { - columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern())); + columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName(), salarySobItemDTO.getWidth()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern())); } } // 回算的薪资项目 for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getBackCalcItems()) { if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) { - columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern())); + columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName(), 0), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern())); } else { - columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern())); + columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName(), 0), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern())); } } diff --git a/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java b/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java index f65c9f924..c11c58954 100644 --- a/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java +++ b/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java @@ -117,6 +117,7 @@ public class SalaryItemBO { .description(salaryItemPO.getDescription()) .canDelete(true) .canEdit(openFormulaForcedEditing ||Objects.equals(salaryItemPO.getCanEdit(), NumberUtils.INTEGER_ONE)) + .width(salaryItemPO.getWidth()) .build(); } ).collect(Collectors.toList()); @@ -200,7 +201,8 @@ public class SalaryItemBO { .setCanEdit(salaryItemPO.getCanEdit()) .setTaxAgentIds(salaryItemPO.getTaxAgentIds()) .setSharedType(salaryItemPO.getSharedType()) - .setSortedIndex(salaryItemPO.getSortedIndex()); + .setSortedIndex(salaryItemPO.getSortedIndex()) + .setWidth(salaryItemPO.getWidth()); } /** @@ -280,6 +282,7 @@ public class SalaryItemBO { .sharedType(Optional.ofNullable(saveParam.getSharedType()).orElse(0)) .taxAgentIds(saveParam.getTaxAgentIds()) .sortedIndex(saveParam.getSortedIndex()) + .width(saveParam.getWidth()) .build(); // 开启了"薪资档案引用",取值方式固定为输入 // if (Objects.equals(saveParam.getUseInEmployeeSalary(), NumberUtils.INTEGER_ONE)) { diff --git a/src/com/engine/salary/entity/salaryitem/dto/SalaryItemFormDTO.java b/src/com/engine/salary/entity/salaryitem/dto/SalaryItemFormDTO.java index 5101bf2e4..da0c6d4d5 100644 --- a/src/com/engine/salary/entity/salaryitem/dto/SalaryItemFormDTO.java +++ b/src/com/engine/salary/entity/salaryitem/dto/SalaryItemFormDTO.java @@ -95,4 +95,7 @@ public class SalaryItemFormDTO { private String taxAgentIds; private Integer sortedIndex; + + // 宽度 + private Integer width; } diff --git a/src/com/engine/salary/entity/salaryitem/dto/SalaryItemListDTO.java b/src/com/engine/salary/entity/salaryitem/dto/SalaryItemListDTO.java index adb0dc4b1..1e0af69d4 100644 --- a/src/com/engine/salary/entity/salaryitem/dto/SalaryItemListDTO.java +++ b/src/com/engine/salary/entity/salaryitem/dto/SalaryItemListDTO.java @@ -105,6 +105,9 @@ public class SalaryItemListDTO { @TableTitle(title = "显示顺序",dataIndex = "sortedIndex",key = "sortedIndex") private Integer sortedIndex; + // 宽度 + private Integer width; + @SalaryTableColumn(text = "操作", width = "20%", column = "operate") private String operate; } diff --git a/src/com/engine/salary/entity/salaryitem/param/SalaryItemSaveParam.java b/src/com/engine/salary/entity/salaryitem/param/SalaryItemSaveParam.java index 916342dfd..a200cea77 100644 --- a/src/com/engine/salary/entity/salaryitem/param/SalaryItemSaveParam.java +++ b/src/com/engine/salary/entity/salaryitem/param/SalaryItemSaveParam.java @@ -102,4 +102,9 @@ public class SalaryItemSaveParam { * 排序 */ private Integer sortedIndex; + + /** + * 宽度 + */ + private Integer width; } diff --git a/src/com/engine/salary/entity/salaryitem/po/SalaryItemPO.java b/src/com/engine/salary/entity/salaryitem/po/SalaryItemPO.java index 3115f0efa..3929bfed4 100644 --- a/src/com/engine/salary/entity/salaryitem/po/SalaryItemPO.java +++ b/src/com/engine/salary/entity/salaryitem/po/SalaryItemPO.java @@ -159,4 +159,9 @@ public class SalaryItemPO { * 排序 */ private Integer sortedIndex; + + /** + * 宽度 + */ + private Integer width; } diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java index be5bcf6c3..511e946c7 100644 --- a/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java +++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java @@ -143,6 +143,7 @@ public class SalarySobItemAggregateBO { .sortedIndex(salarySobItemPO.getSortedIndex()) .canEdit(openFormulaForcedEditing || Objects.equals(salaryItemPO.getCanEdit(), 1)) .canDelete(openFormulaForcedEditing || salaryItemPO.getCanDelete() == null || Objects.equals(salaryItemPO.getCanDelete(), 1)) + .width(salaryItemPO.getWidth()) .build()); } } diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java index 81bbc138a..8b23d6446 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java @@ -109,4 +109,7 @@ public class SalarySobItemDTO { * 保留小数位数 */ private Integer pattern; + + // 显示宽度 + private Integer width; } diff --git a/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml b/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml index 7dd705c72..93ec756ca 100644 --- a/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml +++ b/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml @@ -51,7 +51,8 @@ t.shared_type, t.tax_agent_ids, t.sorted_index, - t.hide_default + t.hide_default, + t.width @@ -217,6 +218,9 @@ sorted_index, + + width, + @@ -288,6 +292,9 @@ #{sortedIndex}, + + #{width}, + @@ -359,6 +366,9 @@ tax_agent_ids=#{taxAgentIds}, + + width=#{width}, + sorted_index=#{sortedIndex}, WHERE id = #{id} AND delete_type = 0 diff --git a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java index b287d3792..a6afb5bd3 100644 --- a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java @@ -254,6 +254,7 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService newSalaryItemPO.setSharedType(saveParam.getSharedType()); newSalaryItemPO.setTaxAgentIds(saveParam.getTaxAgentIds()); newSalaryItemPO.setSortedIndex(saveParam.getSortedIndex()); + newSalaryItemPO.setWidth(saveParam.getWidth()); salaryItemBiz.updateById(newSalaryItemPO); //改名后更新公式 diff --git a/src/com/engine/salary/util/page/SalaryPageUtil.java b/src/com/engine/salary/util/page/SalaryPageUtil.java index 0e75d79d2..bc8892eee 100644 --- a/src/com/engine/salary/util/page/SalaryPageUtil.java +++ b/src/com/engine/salary/util/page/SalaryPageUtil.java @@ -91,7 +91,10 @@ public class SalaryPageUtil { endIndex > source.size() ? source.size() : endIndex); } - public static String selfAdaption(String chars) { + public static String selfAdaption(String chars, Integer width) { + if (width != null && width != 0){ + return width + ""; + } int adaption = 0; if (chars != null) { From 4150948599bd8962dce5c68ded63479c0943ef4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 3 Jan 2024 10:40:55 +0800 Subject: [PATCH 68/92] =?UTF-8?q?=E6=92=A4=E9=94=80=E6=9B=B4=E6=AD=A3?= =?UTF-8?q?=E7=94=B3=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/constant/SzyhApiConstant.java | 5 ++ .../taxdeclaration/po/TaxDeclareRecordPO.java | 2 + .../taxdeclaration/TaxDeclareRecordMapper.xml | 6 +++ .../service/TaxDeclareRecordService.java | 11 +++- .../impl/TaxDeclareRecordServiceImpl.java | 54 +++++++++++++++++++ .../salary/web/TaxDeclarationController.java | 14 +++++ .../wrapper/TaxDeclareRecordWrapper.java | 31 +++++++++++ 7 files changed, 122 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/constant/SzyhApiConstant.java b/src/com/engine/salary/constant/SzyhApiConstant.java index b4e04552a..608bf61a4 100644 --- a/src/com/engine/salary/constant/SzyhApiConstant.java +++ b/src/com/engine/salary/constant/SzyhApiConstant.java @@ -75,6 +75,11 @@ public class SzyhApiConstant { */ public static final String UPDATE_DECLARE = "/gateway/iit/report/correct"; + /** + * 撤销更正申报 + */ + public static final String CANCEL_CORRECT = "gateway/iit/report/cancelCorrect"; + /** * 税局端申报状态查询 */ diff --git a/src/com/engine/salary/entity/taxdeclaration/po/TaxDeclareRecordPO.java b/src/com/engine/salary/entity/taxdeclaration/po/TaxDeclareRecordPO.java index e65fff3d7..6a6440435 100644 --- a/src/com/engine/salary/entity/taxdeclaration/po/TaxDeclareRecordPO.java +++ b/src/com/engine/salary/entity/taxdeclaration/po/TaxDeclareRecordPO.java @@ -1,6 +1,7 @@ package com.engine.salary.entity.taxdeclaration.po; import com.engine.salary.enums.taxdeclaration.TaxDeclareStatusEnum; +import com.engine.salary.enums.taxdeclaration.TaxDeclareTypeEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -47,6 +48,7 @@ public class TaxDeclareRecordPO implements Serializable { private Date taxCycle; /** * 申报类型 + * @see TaxDeclareTypeEnum */ private Integer taxDeclareType; /** diff --git a/src/com/engine/salary/mapper/taxdeclaration/TaxDeclareRecordMapper.xml b/src/com/engine/salary/mapper/taxdeclaration/TaxDeclareRecordMapper.xml index c6b660859..79b47b6fd 100644 --- a/src/com/engine/salary/mapper/taxdeclaration/TaxDeclareRecordMapper.xml +++ b/src/com/engine/salary/mapper/taxdeclaration/TaxDeclareRecordMapper.xml @@ -152,6 +152,12 @@ AND tax_cycle #{endDate} + + AND salary_month = ]]> #{salaryMonthStartDate} + + + AND salary_month #{salaryMonthEndDate} + ORDER BY tax_cycle DESC diff --git a/src/com/engine/salary/service/TaxDeclareRecordService.java b/src/com/engine/salary/service/TaxDeclareRecordService.java index aac9db48d..16478a170 100644 --- a/src/com/engine/salary/service/TaxDeclareRecordService.java +++ b/src/com/engine/salary/service/TaxDeclareRecordService.java @@ -22,7 +22,7 @@ import java.util.List; * @author qiantao * @version 1.0 **/ -public interface TaxDeclareRecordService { +public interface TaxDeclareRecordService { /** * 查询个税申报记录 @@ -136,12 +136,14 @@ public interface TaxDeclareRecordService { /** * 申报内置算税结果查询 + * * @param id * @return */ Object getDeclareTaxResultFeedback(Long id); XSSFWorkbook exportGetDeclareTaxResultFeedback(DeclareTaxResultFeedbackQueryParam param); + /** * 作废 * @@ -163,6 +165,13 @@ public interface TaxDeclareRecordService { */ void updateDeclare(Long id); + /** + * 撤销申报 + * + * @param id + */ + void cancelCorrect(Long id); + /** * 税局端申报状态查询 * diff --git a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java index 2f4f54b2b..29df68b25 100644 --- a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java @@ -1017,6 +1017,60 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe // taxDeclarationLoggerTemplate.write(loggerContext); } + + + + @Override + public void cancelCorrect(Long id) { + TaxDeclareRequest taxDeclareRequest = buildTaxDeclareRequest(id); + TaxDeclareRecordPO taxDeclareRecord = taxDeclareRequest.getTaxDeclareRecord(); +// List taxDeclareStatusEnumValueList = Lists.newArrayList(TaxDeclareStatusEnum.DECLARE_SUCCESS_UNPAID.getValue(), TaxDeclareStatusEnum.DECLARE_SUCCESS_NO_PAY.getValue(), TaxDeclareStatusEnum.DECLARE_SUCCESS_PAID.getValue(), TaxDeclareStatusEnum.DECLARE_SUCCESS_PAYING.getValue()); +// if (!taxDeclareStatusEnumValueList.contains(taxDeclareRecord.getTaxDeclareStatus())) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(182702, "对不起,只有申报成功后才允许更正申报")); +// } + // 供应商信息 + TaxDeclarationApiConfigPO apiConfig = taxDeclareRequest.getTaxDeclarationApiConfig(); + // 注册的企业信息-->请求参数 + Map requestParam = taxDeclareRequest.getRequestParam(); + // 税款所属期 + requestParam.put("skssq", SalaryDateUtil.getFormatYYYYMM(taxDeclareRecord.getTaxCycle())); + // 申报类型 + requestParam.put("sblx", "1"); + // 请求 + String reqJson = JsonUtil.toJsonString(requestParam); + log.info("撤销更正申报请求数据:" + reqJson); + String url = apiConfig.getHost() + SzyhApiConstant.CANCEL_CORRECT; + Map params = new HashMap<>(1); + Map header = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret()); + String res = HttpUtil.doPost(url, header, reqJson, HttpUtil.JSON_TYPE); + log.info("撤销更正申报返回数据:" + res); + UpdateDeclareResponse updateDeclareResponse = JsonUtil.parseObject(res, UpdateDeclareResponse.class); + if (Objects.isNull(updateDeclareResponse) || Objects.isNull(updateDeclareResponse.getHead())) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156449, "服务异常")); + } + if (!Objects.equals(updateDeclareResponse.getHead().getCode(), SzyhApiConstant.SUCCESS_CODE)) { + throw new SalaryRunTimeException(updateDeclareResponse.getHead().getMsg()); + } +// taxDeclareRecord.setTaxDeclareType(TaxDeclareTypeEnum.UPDATE_DECLARE.getValue()); +// taxDeclareRecord.setTaxDeclareStatus(TaxDeclareStatusEnum.NOT_DECLARE.getValue()); +// taxDeclareRecord.setRequestId(""); +// taxDeclareRecord.setUpdateTime(new Date()); +// getTaxDeclareRecordMapper().updateIgnoreNull(taxDeclareRecord); + + // 记录日志 +// TaxAgentPO taxAgent = taxDeclareRequest.getTaxAgent(); +// LoggerContext loggerContext = new LoggerContext<>(); +// loggerContext.setTargetId(String.valueOf(taxDeclareRecord.getId())); +// loggerContext.setTargetName(SalaryI18nUtil.getI18nLabel(203562, "个税扣缴义务人「{0}」税款所属期「{1}」") +// .replace("{0}", taxAgent.getName()) +// .replace("{1}", taxDeclareRecord.getTaxCycle())); +// loggerContext.setOperator(Util.null2String(employeeId)); +// loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); +// loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(177637, "更正申报")); +// loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(177637, "更正申报")); +// taxDeclarationLoggerTemplate.write(loggerContext); + } + @Override public String queryDeclareStatus(Long id) { TaxDeclareRequest taxDeclareRequest = buildTaxDeclareRequest(id); diff --git a/src/com/engine/salary/web/TaxDeclarationController.java b/src/com/engine/salary/web/TaxDeclarationController.java index c0d6944f9..c4e3a82a6 100644 --- a/src/com/engine/salary/web/TaxDeclarationController.java +++ b/src/com/engine/salary/web/TaxDeclarationController.java @@ -322,6 +322,20 @@ public class TaxDeclarationController { return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::updateDeclare, taxDeclareRecordParam.getTaxDeclareRecordId()); } + /** + * 撤销更正申报,税局存在逻辑问题。误更正申报,先再走申报处理 + * + * @param taxDeclareRecordParam 撤销更正申报参数 + * @return + */ + @POST + @Path("/cancelCorrect") + @Produces(MediaType.APPLICATION_JSON) + public String cancelCorrect(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordParam taxDeclareRecordParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::cancelCorrect, taxDeclareRecordParam.getTaxDeclareRecordId()); + } + /** * 税局端申报状态查询 * diff --git a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java index 8c8f7be2b..d8c0b7072 100644 --- a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java +++ b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java @@ -585,6 +585,37 @@ public class TaxDeclareRecordWrapper extends Service { return taxDeclarationRate.getIndex(); } + /** + * 撤销更正申报 + * + * @param id + * @return + */ + public String cancelCorrect(Long id) { + checkBefore(id); + TaxDeclarationRateDTO taxDeclarationRate = new TaxDeclarationRateDTO().setStatus(true).setIndex(Util.null2String(id)) + .setMsg(SalaryI18nUtil.getI18nLabel(177637, "撤销更正申报")); + getSalaryCacheService(user).set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate); + LocalRunnable localRunnable = new LocalRunnable() { + @Override + public void execute() { + try { + getTaxDeclareRecordService(user).cancelCorrect(id); + taxDeclarationRate.setFinish(true); + } catch (SalaryRunTimeException e) { + taxDeclarationRate.setStatus(false).setFinish(true).setMsg(e.getMessage()); + } catch (Exception e) { + log.error("撤销更正申报失败:{}", e.getMessage(), e); + taxDeclarationRate.setStatus(false).setFinish(true).setMsg(SalaryI18nUtil.getI18nLabel(187269, "撤销更正申报失败:") + e.getMessage()); + } finally { + getSalaryCacheService(user).set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate); + } + } + }; + ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.OTHER, "cancelCorrect", localRunnable); + return taxDeclarationRate.getIndex(); + } + /** * 税局端申报状态查询 * From fcf04833653e67de8ce91e4001cc0a4ad48c6109 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 3 Jan 2024 13:47:19 +0800 Subject: [PATCH 69/92] =?UTF-8?q?=E8=A1=A5=E5=85=85=E7=94=B3=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8=E6=9C=AA=E5=A1=AB=E5=86=99=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/enums/taxdeclaration/TaxDeclareStatusEnum.java | 1 + .../salary/service/impl/TaxDeclareRecordServiceImpl.java | 6 ++---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/enums/taxdeclaration/TaxDeclareStatusEnum.java b/src/com/engine/salary/enums/taxdeclaration/TaxDeclareStatusEnum.java index 27db64998..1335ff349 100644 --- a/src/com/engine/salary/enums/taxdeclaration/TaxDeclareStatusEnum.java +++ b/src/com/engine/salary/enums/taxdeclaration/TaxDeclareStatusEnum.java @@ -12,6 +12,7 @@ import com.engine.salary.enums.BaseEnum; **/ public enum TaxDeclareStatusEnum implements BaseEnum { + DECLARE_FAIL_UNFILLED(0, "未填写", 160495), NOT_DECLARE(1, "未申报", 160495), DECLARING(2, "申报中", 160496), DECLARE_FAIL(3, "申报失败", 160494), diff --git a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java index 29df68b25..2bd0b49ca 100644 --- a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java @@ -721,7 +721,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe throw new SalaryRunTimeException(declareTaxFeedbackResponse.getHead().getMsg()); } // 申报反馈状态 - Integer declareFeedbackStatus = SalaryEntityUtil.getIntValue(declareTaxFeedbackResponse.getBody().get("fkztbj"), 0); + Integer declareFeedbackStatus = SalaryEntityUtil.getIntValue(declareTaxFeedbackResponse.getBody().get("fkztbj"), -1); DeclareFeedBackStatusEnum declareFeedBackStatusEnum = SalaryEnumUtil.enumMatchByValue(declareFeedbackStatus, DeclareFeedBackStatusEnum.class); if (declareFeedBackStatusEnum == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156509, "服务异常,接口返回数据有误")); @@ -768,7 +768,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe taxDeclareRecord.setTaxDeclareErrorMsg(""); } // 申报状态 - Integer declareStatus = SalaryEntityUtil.getIntValue(declareTaxFeedbackResponse.getBody().get("sbztbj"), 0); + Integer declareStatus = SalaryEntityUtil.getIntValue(declareTaxFeedbackResponse.getBody().get("sbztbj"), -1); TaxDeclareStatusEnum taxDeclareStatusEnum = SalaryEnumUtil.enumMatchByValue(declareStatus, TaxDeclareStatusEnum.class); if (taxDeclareStatusEnum == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156509, "服务异常,接口返回数据有误")); @@ -1018,8 +1018,6 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe } - - @Override public void cancelCorrect(Long id) { TaxDeclareRequest taxDeclareRequest = buildTaxDeclareRequest(id); From 482c461ce9e9666f3851ff4f9308305ca1f26ca8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 3 Jan 2024 15:36:53 +0800 Subject: [PATCH 70/92] =?UTF-8?q?fix=E4=BD=9C=E5=BA=9F=E6=8E=A5=E5=8F=A3bu?= =?UTF-8?q?g?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/TaxDeclareRecordServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java index 2bd0b49ca..00c26572a 100644 --- a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java @@ -851,7 +851,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe // 申报类型 requestParam.put("sblx", "1"); // 作废银联缴款凭证 - taxPaymentServiceFactory.get(TaxPaymentServiceTypeEnum.WITHHOLDING_VOUCHER.getValue()).cancelWithholdingVoucher(apiConfig, taxDeclareRecord, requestParam); +// taxPaymentServiceFactory.get(TaxPaymentServiceTypeEnum.WITHHOLDING_VOUCHER.getValue()).cancelWithholdingVoucher(apiConfig, taxDeclareRecord, requestParam); // 是否清空所得 requestParam.put("sfqksd", "0"); // 请求 From 9ca420b5e6d6961a1dd7662331651e14e5101b6b Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 4 Jan 2024 10:39:41 +0800 Subject: [PATCH 71/92] =?UTF-8?q?fix=E5=88=A0=E9=99=A4=E4=B9=89=E5=8A=A1?= =?UTF-8?q?=E4=BA=BA=E6=97=B6=EF=BC=8C=E6=B2=A1=E5=88=86=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/TaxAgentEmpServiceImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/TaxAgentEmpServiceImpl.java b/src/com/engine/salary/service/impl/TaxAgentEmpServiceImpl.java index 7cd9cfd6f..f7fd19a94 100644 --- a/src/com/engine/salary/service/impl/TaxAgentEmpServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxAgentEmpServiceImpl.java @@ -53,7 +53,9 @@ public class TaxAgentEmpServiceImpl extends Service implements TaxAgentEmpServic return; } List idList = taxAgentEmpList.stream().map(TaxAgentEmpPO::getId).collect(Collectors.toList()); - getTaxAgentEmpMapper().deleteByIds(idList); + + List> partition = Lists.partition(idList, 500); + partition.forEach(getTaxAgentEmpMapper()::deleteByIds); } @Override From f3fa6c6f3222c42d1aa31bec30a94b1f1e6111b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 4 Jan 2024 15:35:23 +0800 Subject: [PATCH 72/92] =?UTF-8?q?=E5=AF=B9=E6=AF=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TaxDeclarationValueListQueryParam.java | 5 + .../taxdeclaration/po/TaxReportColumnPO.java | 70 ++++- .../taxdeclaration/TaxReportColumnMapper.java | 58 ---- .../taxdeclaration/TaxReportColumnMapper.xml | 296 +----------------- .../service/TaxDeclareRecordService.java | 20 +- .../service/TaxReportColumnService.java | 2 +- .../impl/TaxDeclarationExcelServiceImpl.java | 4 +- .../impl/TaxDeclarationValueServiceImpl.java | 24 +- .../impl/TaxDeclareRecordServiceImpl.java | 6 + .../impl/TaxReportColumnServiceImpl.java | 9 +- .../salary/web/TaxDeclarationController.java | 15 + .../wrapper/TaxDeclareRecordWrapper.java | 19 +- 12 files changed, 155 insertions(+), 373 deletions(-) diff --git a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationValueListQueryParam.java b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationValueListQueryParam.java index 864c4dac9..ff40cf181 100644 --- a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationValueListQueryParam.java +++ b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationValueListQueryParam.java @@ -26,4 +26,9 @@ public class TaxDeclarationValueListQueryParam extends BaseQueryParam { //导出excel时加密的密码") private String sharePassword; + + /** + * 姓名或者工号 + */ + private String keyword; } diff --git a/src/com/engine/salary/entity/taxdeclaration/po/TaxReportColumnPO.java b/src/com/engine/salary/entity/taxdeclaration/po/TaxReportColumnPO.java index a6591e714..f2b61a35e 100644 --- a/src/com/engine/salary/entity/taxdeclaration/po/TaxReportColumnPO.java +++ b/src/com/engine/salary/entity/taxdeclaration/po/TaxReportColumnPO.java @@ -23,32 +23,76 @@ import java.util.Date; //hrsa_tax_report_column public class TaxReportColumnPO { - //name = 主键id + /** + * 主键id + */ private Long id; - //name = 报表类型 + + /** + * 报表类型 + */ private String taxReportType; - //name = 所得项目 + + /** + * 所得项目 + */ private String incomeCategory; - //name = 申报表的列名 + + /** + * 申报表的列名 + */ private String reportColumnName; - //name = 申报表的列名多语言标签 + + /** + * 申报表的列名多语言标签 + */ private Integer reportColumnLabel; - //name = 申报表的列索引 + + /** + * 申报表的列索引 + */ private String reportColumnDataIndex; - //name = 数值类型 + + /** + * 数值类型 + */ private String dataType; - //name = 个税对接时的参数key + + /** + * 个税对接时的参数key + */ private String requestParamKey; - //name = 租户key + + /** + * 是否是对比字段,1是0否 + */ + private Integer contrastType; + + /** + * 租户key + */ private String tenantKey; - //name = 创建人id + + /** + * 创建人id + */ private Long creator; - //name = 是否删除 + + /** + * 是否删除 + */ private Integer deleteType; - //name = 创建时间 + + /** + * 创建时间 + */ private Date createTime; - //name = 更新时间 + + /** + * 更新时间 + */ private Date updateTime; Collection ids; + Collection contrastTypes; } diff --git a/src/com/engine/salary/mapper/taxdeclaration/TaxReportColumnMapper.java b/src/com/engine/salary/mapper/taxdeclaration/TaxReportColumnMapper.java index df8f8738a..1f767ca48 100644 --- a/src/com/engine/salary/mapper/taxdeclaration/TaxReportColumnMapper.java +++ b/src/com/engine/salary/mapper/taxdeclaration/TaxReportColumnMapper.java @@ -1,9 +1,7 @@ package com.engine.salary.mapper.taxdeclaration; import com.engine.salary.entity.taxdeclaration.po.TaxReportColumnPO; -import org.apache.ibatis.annotations.Param; -import java.util.Collection; import java.util.List; public interface TaxReportColumnMapper { @@ -21,60 +19,4 @@ public interface TaxReportColumnMapper { * @return 返回集合,没有返回空List */ List listSome(TaxReportColumnPO taxReportColumn); - - - /** - * 根据主键查询 - * - * @param id 主键 - * @return 返回记录,没有返回null - */ - TaxReportColumnPO getById(Long id); - - /** - * 新增,忽略null字段 - * - * @param taxReportColumn 新增的记录 - * @return 返回影响行数 - */ - int insertIgnoreNull(TaxReportColumnPO taxReportColumn); - - /** - * 批量插入 - * - * @param taxReportColumn - */ - void batchInsert(@Param("collection") List taxReportColumn); - - /** - * 修改,修改所有字段 - * - * @param taxReportColumn 修改的记录 - * @return 返回影响行数 - */ - int update(TaxReportColumnPO taxReportColumn); - - /** - * 修改,忽略null字段 - * - * @param taxReportColumn 修改的记录 - * @return 返回影响行数 - */ - int updateIgnoreNull(TaxReportColumnPO taxReportColumn); - - /** - * 删除记录 - * - * @param taxReportColumn 待删除的记录 - * @return 返回影响行数 - */ - int delete(TaxReportColumnPO taxReportColumn); - - /** - * 批量删除记录 - * - * @param ids 主键id集合 - */ - void deleteByIds(@Param("ids") Collection ids); - } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/taxdeclaration/TaxReportColumnMapper.xml b/src/com/engine/salary/mapper/taxdeclaration/TaxReportColumnMapper.xml index 1002208a0..7ce9c9fae 100644 --- a/src/com/engine/salary/mapper/taxdeclaration/TaxReportColumnMapper.xml +++ b/src/com/engine/salary/mapper/taxdeclaration/TaxReportColumnMapper.xml @@ -15,6 +15,7 @@ + @@ -34,6 +35,7 @@ , t.data_type , t.request_param_key , t.report_column_label + , t.contrast_type @@ -98,299 +100,23 @@ AND report_column_label = #{reportColumnLabel} + + AND contrast_type = #{contrastType} + AND id IN #{id} + + AND contrast_type IN + + #{contrastType} + + ORDER BY id - - - INSERT INTO hrsa_tax_report_column - - - - id, - - - create_time, - - - update_time, - - - creator, - - - delete_type, - - - tenant_key, - - - tax_report_type, - - - income_category, - - - report_column_name, - - - report_column_data_index, - - - data_type, - - - request_param_key, - - - report_column_label, - - - - - #{id}, - - - #{createTime}, - - - #{updateTime}, - - - #{creator}, - - - #{deleteType}, - - - #{tenantKey}, - - - #{taxReportType}, - - - #{incomeCategory}, - - - #{reportColumnName}, - - - #{reportColumnDataIndex}, - - - #{dataType}, - - - #{requestParamKey}, - - - #{reportColumnLabel}, - - - - - - - - INSERT INTO hrsa_tax_report_column - ( - id, - create_time, - update_time, - creator, - delete_type, - tenant_key, - tax_report_type, - income_category, - report_column_name, - report_column_data_index, - data_type, - request_param_key, - report_column_label - ) - VALUES - ( - - #{item.id}, - #{item.createTime}, - #{item.updateTime}, - #{item.creator}, - #{item.deleteType}, - #{item.tenantKey}, - #{item.taxReportType}, - #{item.incomeCategory}, - #{item.reportColumnName}, - #{item.reportColumnDataIndex}, - #{item.dataType}, - #{item.requestParamKey}, - #{item.reportColumnLabel} - - ) - - - - - INSERT INTO hrsa_tax_report_column ( - id, - create_time, - update_time, - creator, - delete_type, - tenant_key, - tax_report_type, - income_category, - report_column_name, - report_column_data_index, - data_type, - request_param_key, - report_column_label - ) - - - select - #{item.id,jdbcType=DOUBLE}, - #{item.createTime,jdbcType=DATE}, - #{item.updateTime,jdbcType=DATE}, - #{item.creator,jdbcType=DOUBLE}, - #{item.deleteType,jdbcType=INTEGER}, - #{item.tenantKey,jdbcType=VARCHAR}, - #{item.taxReportType,jdbcType=INTEGER}, - #{item.incomeCategory,jdbcType=INTEGER}, - #{item.reportColumnName,jdbcType=VARCHAR}, - #{item.reportColumnDataIndex,jdbcType=VARCHAR}, - #{item.dataType,jdbcType=VARCHAR}, - #{item.requestParamKey,jdbcType=VARCHAR}, - #{item.reportColumnLabel,jdbcType=INTEGER} - from dual - - - - - - - INSERT INTO hrsa_tax_report_column ( - id, - create_time, - update_time, - creator, - delete_type, - tenant_key, - tax_report_type, - income_category, - report_column_name, - report_column_data_index, - data_type, - request_param_key, - report_column_label - ) - VALUES - ( - #{item.id}, - #{item.createTime}, - #{item.updateTime}, - #{item.creator}, - #{item.deleteType}, - #{item.tenantKey}, - #{item.taxReportType}, - #{item.incomeCategory}, - #{item.reportColumnName}, - #{item.reportColumnDataIndex}, - #{item.dataType}, - #{item.requestParamKey}, - #{item.reportColumnLabel} - ) - - - - - UPDATE hrsa_tax_report_column - - create_time=#{createTime}, - update_time=#{updateTime}, - creator=#{creator}, - delete_type=#{deleteType}, - tenant_key=#{tenantKey}, - tax_report_type=#{taxReportType}, - income_category=#{incomeCategory}, - report_column_name=#{reportColumnName}, - report_column_data_index=#{reportColumnDataIndex}, - data_type=#{dataType}, - request_param_key=#{requestParamKey}, - report_column_label=#{reportColumnLabel}, - - WHERE id = #{id} AND delete_type = 0 - - - - - - UPDATE hrsa_tax_report_column - - - create_time=#{createTime}, - - - update_time=#{updateTime}, - - - creator=#{creator}, - - - delete_type=#{deleteType}, - - - tenant_key=#{tenantKey}, - - - tax_report_type=#{taxReportType}, - - - income_category=#{incomeCategory}, - - - report_column_name=#{reportColumnName}, - - - report_column_data_index=#{reportColumnDataIndex}, - - - data_type=#{dataType}, - - - request_param_key=#{requestParamKey}, - - - report_column_label=#{reportColumnLabel}, - - - WHERE id = #{id} AND delete_type = 0 - - - - - - UPDATE hrsa_tax_report_column - SET delete_type=1 - WHERE id = #{id} - AND delete_type = 0 - - - - UPDATE hrsa_tax_report_column - SET delete_type = 1 - WHERE delete_type = 0 - AND id IN - - #{id} - - - - \ No newline at end of file diff --git a/src/com/engine/salary/service/TaxDeclareRecordService.java b/src/com/engine/salary/service/TaxDeclareRecordService.java index 16478a170..1d844978a 100644 --- a/src/com/engine/salary/service/TaxDeclareRecordService.java +++ b/src/com/engine/salary/service/TaxDeclareRecordService.java @@ -81,6 +81,19 @@ public interface TaxDeclareRecordService { */ void save(TaxDeclarationSaveParam saveParam); + /** + * 税局端申报明细查询 + * + * @param id + */ + String queryCompanyIncomes(Long id); + + /** + * 对比线上和线下算税 + * @param id + */ + void contrast(Long id); + /** * 刷新数据 @@ -179,12 +192,7 @@ public interface TaxDeclareRecordService { */ String queryDeclareStatus(Long id); - /** - * 税局端申报明细查询 - * - * @param id - */ - String queryCompanyIncomes(Long id); + void updateById(TaxDeclareRecordPO taxDeclareRecord); diff --git a/src/com/engine/salary/service/TaxReportColumnService.java b/src/com/engine/salary/service/TaxReportColumnService.java index c9f466e14..329cd697e 100644 --- a/src/com/engine/salary/service/TaxReportColumnService.java +++ b/src/com/engine/salary/service/TaxReportColumnService.java @@ -28,5 +28,5 @@ public interface TaxReportColumnService { * @param incomeCategory * @return */ - List listByIncomeCategory(IncomeCategoryEnum incomeCategory); + List listByIncomeCategory(IncomeCategoryEnum incomeCategory, Integer... contrastTypes); } diff --git a/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java index 5f5796e39..f8a7db934 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java @@ -197,7 +197,7 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar public XSSFWorkbook downloadTemplate(DownloadTemplateParam param) { TaxDeclarationPO declarationPO = getTaxDeclarationService(user).getById(param.getTaxDeclarationId()); IncomeCategoryEnum incomeCategoryEnum = IncomeCategoryEnum.parseByValue(declarationPO.getIncomeCategory()); - List taxReportColumnPOS = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum); + List taxReportColumnPOS = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum,0); List heads = new ArrayList<>(); @@ -247,7 +247,7 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar TaxDeclarationPO declarationPO = getTaxDeclarationService(user).getById(param.getTaxDeclarationId()); IncomeCategoryEnum incomeCategoryEnum = IncomeCategoryEnum.parseByValue(declarationPO.getIncomeCategory()); - List taxReportColumnPOS = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum); + List taxReportColumnPOS = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum,0); List taxReportColumnNames = SalaryEntityUtil.properties(taxReportColumnPOS, TaxReportColumnPO::getReportColumnName, Collectors.toList()); List taxDeclarationValuePOS = getTaxDeclarationValueService(user).listByTaxDeclarationId(declarationPO.getId()); diff --git a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java index 80e1c8209..34191ae36 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java @@ -41,6 +41,8 @@ import weaver.hrm.User; import java.util.*; import java.util.stream.Collectors; +import static weaver.conn.ExternalDataSourceManager.list; + /** * 个税申报表 *

Copyright: Copyright (c) 2023

@@ -109,7 +111,7 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar public TaxDeclarationValueListDTO convert2List(TaxDeclarationPO taxDeclaration, List taxDeclarationValues) { // 查询个税申报表表头 IncomeCategoryEnum incomeCategoryEnum = SalaryEnumUtil.enumMatchByValue(taxDeclaration.getIncomeCategory(), IncomeCategoryEnum.class); - List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum); + List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum, 0); // 人员id Set employeeIds = SalaryEntityUtil.properties(taxDeclarationValues, TaxDeclarationValuePO::getEmployeeId); // 查询报送的人员 @@ -272,7 +274,7 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar } //正常薪资的表头 - List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(IncomeCategoryEnum.WAGES_AND_SALARIES); + List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(IncomeCategoryEnum.WAGES_AND_SALARIES, 0); Map valueMap = Maps.newHashMap(); for (TaxReportColumnPO taxReportColumn : taxReportColumns) { String value = Objects.equals(taxReportColumn.getDataType(), SalaryDataTypeEnum.NUMBER.getValue()) ? "0.00" : ""; @@ -328,4 +330,22 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar })).collect(Collectors.toList()); batchSave(autoAddValuePOs); } + + public void contrast(Long taxDeclarationId) { + TaxDeclarationPO declarationPO = getTaxDeclarationService(user).getById(taxDeclarationId); + if (declarationPO == null) { + throw new SalaryRunTimeException("无申报表"); + } + TaxDeclarationPO taxDeclarationPO; + + if (CollectionUtils.isNotEmpty(list)) { + if (list.size() > 1) { + throw new SalaryRunTimeException("存在多条正常工资薪金申报表数据"); + } + taxDeclarationPO = list.get(0); + } else { + + } + + } } diff --git a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java index 00c26572a..61199ba8f 100644 --- a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java @@ -1113,6 +1113,12 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe return res; } + @Override + public void contrast(Long id) { + + + } + @Override public void updateById(TaxDeclareRecordPO taxDeclareRecord) { getTaxDeclareRecordMapper().updateIgnoreNull(taxDeclareRecord); diff --git a/src/com/engine/salary/service/impl/TaxReportColumnServiceImpl.java b/src/com/engine/salary/service/impl/TaxReportColumnServiceImpl.java index 1ddd88cdc..30ebbe9d5 100644 --- a/src/com/engine/salary/service/impl/TaxReportColumnServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxReportColumnServiceImpl.java @@ -7,6 +7,7 @@ import com.engine.salary.mapper.taxdeclaration.TaxReportColumnMapper; import com.engine.salary.service.TaxReportColumnService; import com.engine.salary.util.db.MapperProxyFactory; +import java.util.Arrays; import java.util.List; /** @@ -17,7 +18,7 @@ import java.util.List; * @author qiantao * @version 1.0 **/ -public class TaxReportColumnServiceImpl extends Service implements TaxReportColumnService { +public class TaxReportColumnServiceImpl extends Service implements TaxReportColumnService { private TaxReportColumnMapper getTaxReportColumnMapper() { return MapperProxyFactory.getProxy(TaxReportColumnMapper.class); @@ -26,11 +27,11 @@ public class TaxReportColumnServiceImpl extends Service implements TaxReportCol @Override public List listAll() { - return getTaxReportColumnMapper().listAll(); + return getTaxReportColumnMapper().listAll(); } @Override - public List listByIncomeCategory(IncomeCategoryEnum incomeCategory) { - return getTaxReportColumnMapper().listSome(TaxReportColumnPO.builder().incomeCategory(incomeCategory.getValue().toString()).build()); + public List listByIncomeCategory(IncomeCategoryEnum incomeCategory, Integer... contrastTypes) { + return getTaxReportColumnMapper().listSome(TaxReportColumnPO.builder().contrastTypes(Arrays.asList(contrastTypes)).incomeCategory(incomeCategory.getValue().toString()).build()); } } diff --git a/src/com/engine/salary/web/TaxDeclarationController.java b/src/com/engine/salary/web/TaxDeclarationController.java index c4e3a82a6..d7561a977 100644 --- a/src/com/engine/salary/web/TaxDeclarationController.java +++ b/src/com/engine/salary/web/TaxDeclarationController.java @@ -364,6 +364,21 @@ public class TaxDeclarationController { return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::queryCompanyIncomes, taxDeclareRecordParam.getTaxDeclareRecordId()); } + /** + * 对比算税过程 + * @param request + * @param response + * @param taxDeclareRecordParam + * @return + */ + @POST + @Path("/contrast") + @Produces(MediaType.APPLICATION_JSON) + public String contrast(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordParam taxDeclareRecordParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::contrast, taxDeclareRecordParam.getTaxDeclareRecordId()); + } + /** * 刷新数据 * diff --git a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java index d8c0b7072..621721de5 100644 --- a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java +++ b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java @@ -636,6 +636,11 @@ public class TaxDeclareRecordWrapper extends Service { return getTaxDeclareRecordService(user).queryCompanyIncomes(id); } + + public void contrast(Long id) { + getTaxDeclareRecordService(user).contrast(id); + } + /** * 刷新数据 * @@ -714,6 +719,11 @@ public class TaxDeclareRecordWrapper extends Service { return getTaxDeclarationExcelService(user).exportEmployee4Fail(queryParam); } + /** + * 新增表单 + * @param param + * @return + */ public TaxDeclareRecordDetailFormDTO getAddForm(TaxDeclareRecordDetailFormParam param) { TaxDeclarationPO taxDeclaration = getTaxDeclarationService(user).getById(param.getTaxDeclarationId()); @@ -722,7 +732,7 @@ public class TaxDeclareRecordWrapper extends Service { } // 查询个税申报表列 - List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(IncomeCategoryEnum.parseByValue(taxDeclaration.getIncomeCategory())); + List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(IncomeCategoryEnum.parseByValue(taxDeclaration.getIncomeCategory()),0); //当前税款所属期报送成功且状态正常的人员 List employeeDeclarePOS = getEmployeeDeclareService(user).listByParam( EmployeeDeclareListQueryParam @@ -765,6 +775,11 @@ public class TaxDeclareRecordWrapper extends Service { getTaxDeclarationValueService(user).edit(param); } + /** + * 详细信息 + * @param id + * @return + */ public TaxDeclareRecordDetailFormDTO detailInfo(Long id) { TaxDeclarationValuePO declarationValuePO = getTaxDeclarationValueService(user).getById(id); TaxDeclarationPO taxDeclarationPO = getTaxDeclarationService(user).getById(declarationValuePO.getTaxDeclarationId()); @@ -783,7 +798,7 @@ public class TaxDeclareRecordWrapper extends Service { } EmployeeDeclarePO employeeDeclarePO = employeeDeclarePOS.get(0); // 查询个税申报表列 - List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(IncomeCategoryEnum.parseByValue(taxDeclarationPO.getIncomeCategory())); + List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(IncomeCategoryEnum.parseByValue(taxDeclarationPO.getIncomeCategory()),0); return TaxDeclareRecordDetailFormDTO .builder() .id(id) From be25234e0e8b692169a034180202b1339e47e2b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 4 Jan 2024 15:56:42 +0800 Subject: [PATCH 73/92] =?UTF-8?q?=E5=AF=B9=E6=AF=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/TaxDeclarationValueServiceImpl.java | 44 ++++++++++++++----- 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java index 34191ae36..c569bbf0c 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java @@ -41,8 +41,6 @@ import weaver.hrm.User; import java.util.*; import java.util.stream.Collectors; -import static weaver.conn.ExternalDataSourceManager.list; - /** * 个税申报表 *

Copyright: Copyright (c) 2023

@@ -332,20 +330,42 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar } public void contrast(Long taxDeclarationId) { - TaxDeclarationPO declarationPO = getTaxDeclarationService(user).getById(taxDeclarationId); - if (declarationPO == null) { + TaxDeclarationPO taxDeclaration = getTaxDeclarationService(user).getById(taxDeclarationId); + if (taxDeclaration == null) { throw new SalaryRunTimeException("无申报表"); } - TaxDeclarationPO taxDeclarationPO; - if (CollectionUtils.isNotEmpty(list)) { - if (list.size() > 1) { - throw new SalaryRunTimeException("存在多条正常工资薪金申报表数据"); - } - taxDeclarationPO = list.get(0); - } else { + List taxDeclarationValues = listByTaxDeclarationId(taxDeclaration.getId()); + + // 查询个税申报表表头 + IncomeCategoryEnum incomeCategoryEnum = SalaryEnumUtil.enumMatchByValue(taxDeclaration.getIncomeCategory(), IncomeCategoryEnum.class); + List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum, 0); + // 人员id + Set employeeIds = SalaryEntityUtil.properties(taxDeclarationValues, TaxDeclarationValuePO::getEmployeeId); + // 查询报送的人员 + List employeeDeclares = getEmployeeDeclareService(user).listByTaxCycleAndTaxAgentIdAndEmployeeIds(taxDeclaration.getTaxCycle(), taxDeclaration.getTaxAgentId(), employeeIds); + // 查询人员信息 + List simpleEmployeeIds = taxDeclarationValues.stream() + .filter(taxDeclarationValue -> taxDeclarationValue.getEmployeeType() == null || Objects.equals(taxDeclarationValue.getEmployeeType(), EmployeeTypeEnum.ORGANIZATION.getValue())) + .map(TaxDeclarationValuePO::getEmployeeId) + .distinct() + .collect(Collectors.toList()); + List simpleEmployees = getSalaryEmployeeService(user).getEmployeeByIds(simpleEmployeeIds); + // 查询人员薪资(身份证号码等) + List simpleUserInfos = getSalaryEmployeeService(user).getEmployeeByIds(simpleEmployeeIds); + // 查询外部人员 + List extEmployeeIds = taxDeclarationValues.stream() + .filter(taxDeclarationValue -> Objects.equals(taxDeclarationValue.getEmployeeType(), EmployeeTypeEnum.EXT_EMPLOYEE.getValue())) + .map(TaxDeclarationValuePO::getEmployeeId) + .collect(Collectors.toList()); + List extEmployees = getExtEmpService(user).getExtEmpByIds(extEmployeeIds); + + // 列表表头 + List weaTableColumns = TaxDeclarationValueList.buildTableColumns(taxReportColumns); + // 列表数据 + List> data = TaxDeclarationValueList.buildTableData(incomeCategoryEnum, taxReportColumns, taxDeclarationValues, + employeeDeclares, simpleEmployees, simpleUserInfos, extEmployees); - } } } From 2670236f9c61da88f83d242762f3bb96edd22a90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 8 Jan 2024 09:52:04 +0800 Subject: [PATCH 74/92] =?UTF-8?q?=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bo/TaxDeclarationValueList.java | 26 ++-- .../GetDeclareTaxResultFeedbackResponse.java | 40 +++++++ .../service/TaxDeclarationValueService.java | 13 +- .../service/TaxDeclareRecordService.java | 6 - .../impl/TaxDeclarationValueServiceImpl.java | 111 +++++++++++++----- .../impl/TaxDeclareRecordServiceImpl.java | 12 +- .../engine/salary/util/excel/ExcelUtil.java | 15 +-- .../salary/web/TaxDeclarationController.java | 30 ++--- .../wrapper/TaxDeclareRecordWrapper.java | 7 +- 9 files changed, 176 insertions(+), 84 deletions(-) diff --git a/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationValueList.java b/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationValueList.java index ee755aad5..e557e155e 100644 --- a/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationValueList.java +++ b/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationValueList.java @@ -67,7 +67,7 @@ public class TaxDeclarationValueList { List employeeDeclares, List simpleEmployees, List simpleUserInfos, - List extEmployees) { + List extEmployees, boolean cnKey) { if (CollectionUtils.isEmpty(simpleEmployees)) { return Collections.emptyList(); } @@ -86,27 +86,27 @@ public class TaxDeclarationValueList { dataMap.put("employeeId", taxDeclarationValue.getEmployeeId() + ""); dataMap.put("incomeCategory", incomeCategoryEnum.getDefaultLabel()); for (TaxReportColumnPO taxReportColumn : taxReportColumns) { - dataMap.put(taxReportColumn.getReportColumnDataIndex(), taxDeclarationValue.getResultValue().get(taxReportColumn.getReportColumnDataIndex())); + dataMap.put(cnKey ? taxReportColumn.getReportColumnName() : taxReportColumn.getReportColumnDataIndex(), taxDeclarationValue.getResultValue().get(taxReportColumn.getReportColumnDataIndex())); } EmployeeDeclarePO employeeDeclare = employeeDeclareMap.get(taxDeclarationValue.getEmployeeId()); if (employeeDeclare != null) { dataMap.put("jobNum", employeeDeclare.getJobNum()); - dataMap.put("username", employeeDeclare.getEmployeeName()); - dataMap.put("cardType", SalaryI18nUtil.getI18nLabel(CardTypeEnum.RESIDENT_IDENTITY_CARDS.getLabelId(), CardTypeEnum.RESIDENT_IDENTITY_CARDS.getDefaultLabel())); - dataMap.put("cardNum", employeeDeclare.getCardNum()); + 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 ? "证件号码" : "cardNum", employeeDeclare.getCardNum()); } else if (taxDeclarationValue.getEmployeeType() == null || Objects.equals(taxDeclarationValue.getEmployeeType(), EmployeeTypeEnum.ORGANIZATION.getValue())) { DataCollectionEmployee simpleEmployee = simpleEmployeeMap.get(taxDeclarationValue.getEmployeeId()); DataCollectionEmployee simpleUserInfo = simpleUserInfoMap.get(taxDeclarationValue.getEmployeeId()); - dataMap.put("jobNum", simpleEmployee.getWorkcode()); - dataMap.put("username", simpleEmployee.getUsername()); - dataMap.put("cardType", SalaryI18nUtil.getI18nLabel(CardTypeEnum.RESIDENT_IDENTITY_CARDS.getLabelId(), CardTypeEnum.RESIDENT_IDENTITY_CARDS.getDefaultLabel())); - dataMap.put("cardNum", simpleUserInfo == null ? "" : simpleUserInfo.getIdNo()); + dataMap.put(cnKey ? "工号" : "jobNum", simpleEmployee.getWorkcode()); + dataMap.put(cnKey ? "姓名" : "username", simpleEmployee.getUsername()); + dataMap.put(cnKey ? "证件类型" : "cardType", SalaryI18nUtil.getI18nLabel(CardTypeEnum.RESIDENT_IDENTITY_CARDS.getLabelId(), CardTypeEnum.RESIDENT_IDENTITY_CARDS.getDefaultLabel())); + dataMap.put(cnKey ? "证件号码" : "cardNum", simpleUserInfo == null ? "" : simpleUserInfo.getIdNo()); } else { ExtEmpPO extEmployee = extEmployeeMap.get(taxDeclarationValue.getEmployeeId()); - dataMap.put("jobNum", ""); - dataMap.put("username", extEmployee.getUsername()); - dataMap.put("cardType", SalaryI18nUtil.getI18nLabel(CardTypeEnum.RESIDENT_IDENTITY_CARDS.getLabelId(), CardTypeEnum.RESIDENT_IDENTITY_CARDS.getDefaultLabel())); - dataMap.put("cardNum", extEmployee.getIdNo()); + dataMap.put(cnKey ? "工号" : "jobNum", ""); + 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 ? "证件号码" : "cardNum", extEmployee.getIdNo()); } tableDataList.add(dataMap); } diff --git a/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java b/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java index 1313ca083..5727d8c74 100644 --- a/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java +++ b/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java @@ -2,6 +2,7 @@ package com.engine.salary.remote.tax.response.employee; import com.engine.salary.annotation.SalaryTableColumn; import com.engine.salary.entity.taxpayment.response.BaseResponse; +import com.engine.salary.util.excel.ExcelHead; import lombok.Data; import lombok.EqualsAndHashCode; @@ -240,112 +241,133 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse { * 姓名 必填:null 如果是汇总申报返回空 */ @SalaryTableColumn(text = "姓名", width = "10%", column = "xm") + @ExcelHead(title = "姓名", dataIndex = "xm") private String xm; /** * 证件类型 必填:null 见证件类型字典 */ @SalaryTableColumn(text = "证件类型", width = "10%", column = "zzlx") + @ExcelHead(title = "证件类型", dataIndex = "zzlx") private String zzlx; /** * 证件号码 必填:null 如果是汇总申报返回空 */ @SalaryTableColumn(text = "证件号码", width = "10%", column = "zzhm") + @ExcelHead(title = "证件号码", dataIndex = "zzhm") private String zzhm; /** * 任职受雇日期 必填:是 格式YYYY-MM-DD */ @SalaryTableColumn(text = "任职受雇日期", width = "10%", column = "rzsgrq") + @ExcelHead(title = "任职受雇日期", dataIndex = "rzsgrq") private String rzsgrq; /** * 离职日期 必填:否 格式YYYY-MM-DD */ @SalaryTableColumn(text = "离职日期", width = "10%", column = "lzrq") + @ExcelHead(title = "离职日期", dataIndex = "lzrq") private String lzrq; /** * 当期收入额 必填:是 不填写默认为0 */ @SalaryTableColumn(text = "本期收入", width = "10%", column = "sre") + @ExcelHead(title = "本期收入", dataIndex = "sre") private BigDecimal sre; /** * 当期免税收入 必填:null */ @SalaryTableColumn(text = "本期免税收入", width = "10%", column = "mssd") + @ExcelHead(title = "本期免税收入", dataIndex = "mssd") private BigDecimal mssd; /** * 基本养老保险 必填:null */ @SalaryTableColumn(text = "本期基本养老保险费", width = "10%", column = "jbylaobxf") + @ExcelHead(title = "本期基本养老保险费", dataIndex = "jbylaobxf") private BigDecimal jbylaobxf; /** * 基本医疗保险 必填:null */ @SalaryTableColumn(text = "本期基本医疗保险费", width = "10%", column = "jbylbxf") + @ExcelHead(title = "本期基本医疗保险费", dataIndex = "jbylbxf") private BigDecimal jbylbxf; /** * 失业保险 必填:null */ @SalaryTableColumn(text = "本期失业保险费", width = "10%", column = "sybxf") + @ExcelHead(title = "本期失业保险费", dataIndex = "sybxf") private BigDecimal sybxf; /** * 住房公积金 必填:null */ @SalaryTableColumn(text = "本期住房公积金", width = "10%", column = "zfgjj") + @ExcelHead(title = "本期住房公积金", dataIndex = "zfgjj") private BigDecimal zfgjj; /** * 年金 必填:null */ @SalaryTableColumn(text = "本期企业(职业)年金", width = "10%", column = "nj") + @ExcelHead(title = "本期企业(职业)年金", dataIndex = "nj") private BigDecimal nj; /** * 商业健康保险 必填:null */ @SalaryTableColumn(text = "本期商业健康保险费", width = "10%", column = "syjkbx") + @ExcelHead(title = "本期商业健康保险费", dataIndex = "syjkbx") private BigDecimal syjkbx; /** * 税延养老保险 必填:null */ @SalaryTableColumn(text = "本期税延养老保险费", width = "10%", column = "syylbx") + @ExcelHead(title = "本期税延养老保险费", dataIndex = "syylbx") private BigDecimal syylbx; /** * 其他 必填:null 按法律规定可以在税前扣除的项目 */ @SalaryTableColumn(text = "本期其他扣除(其他)", width = "10%", column = "qt") + @ExcelHead(title = "本期其他扣除(其他)", dataIndex = "qt") private BigDecimal qt; /** * 累计收入额 必填:null */ @SalaryTableColumn(text = "累计收入额", width = "10%", column = "ljsre") + @ExcelHead(title = "累计收入额", dataIndex = "ljsre") private BigDecimal ljsre; /** * 累计免税收入额 必填:null */ @SalaryTableColumn(text = "累计免税收入", width = "10%", column = "ljmssd") + @ExcelHead(title = "累计免税收入", dataIndex = "ljmssd") private BigDecimal ljmssd; /** * 累计减除费用额 必填:null 正常工资薪金累计减除费用 对应保险营销员、证券经纪人累计费用 */ @SalaryTableColumn(text = "累计减除费用", width = "10%", column = "ljjcfye") + @ExcelHead(title = "累计减除费用", dataIndex = "ljjcfye") private BigDecimal ljjcfye; /** * 累计专项扣除额 必填:null 三险一金合计 */ @SalaryTableColumn(text = "累计专项扣除", width = "10%", column = "ljzxkce") + @ExcelHead(title = "累计专项扣除", dataIndex = "ljzxkce") private BigDecimal ljzxkce; /** * 累计子女教育支出 必填:null */ @SalaryTableColumn(text = "累计子女教育支出扣除", width = "10%", column = "ljznjyzc") + @ExcelHead(title = "累计子女教育支出扣除", dataIndex = "ljznjyzc") private BigDecimal ljznjyzc; /** * 累计继续教育支出 必填:null */ @SalaryTableColumn(text = "累计继续教育支出扣除", width = "10%", column = "ljjxjyzc") + @ExcelHead(title = "累计继续教育支出扣除", dataIndex = "ljjxjyzc") private BigDecimal ljjxjyzc; /** * 累计非学历继续教育支持 必填:null @@ -359,21 +381,25 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse { * 累计住房租金支出 必填:null */ @SalaryTableColumn(text = "累计住房租金支出扣除", width = "10%", column = "ljzfzjzc") + @ExcelHead(title = "累计住房租金支出扣除", dataIndex = "ljzfzjzc") private BigDecimal ljzfzjzc; /** * 累计房屋贷款支出 必填:null */ @SalaryTableColumn(text = "累计房屋贷款支出扣除", width = "10%", column = "ljzfdklxzc") + @ExcelHead(title = "累计房屋贷款支出扣除", dataIndex = "ljzfdklxzc") private BigDecimal ljzfdklxzc; /** * 累计赡养老人支出 必填:null */ @SalaryTableColumn(text = "累计赡养老人支出扣除", width = "10%", column = "ljsylrzc") + @ExcelHead(title = "累计赡养老人支出扣除", dataIndex = "ljsylrzc") private BigDecimal ljsylrzc; /** * 累计3岁以下婴幼儿照护支出 必填:null */ @SalaryTableColumn(text = "累计3岁以下婴幼儿照护", width = "10%", column = "ljyyezhzc") + @ExcelHead(title = "累计3岁以下婴幼儿照护", dataIndex = "ljyyezhzc") private BigDecimal ljyyezhzc; @@ -381,81 +407,95 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse { * 累计个人养老金 必填:null */ @SalaryTableColumn(text = "累计个人养老金", width = "10%", column = "ljgrylj") + @ExcelHead(title = "累计个人养老金", dataIndex = "ljgrylj") private BigDecimal ljgrylj; /** * 累计其他扣除额 必填:null */ @SalaryTableColumn(text = "累计其他扣除", width = "10%", column = "ljqtkce") + @ExcelHead(title = "累计其他扣除", dataIndex = "ljqtkce") private BigDecimal ljqtkce; /** * 累计准予扣除的捐赠额 必填:null */ @SalaryTableColumn(text = "累计准予扣除的捐赠", width = "10%", column = "ljzykcjze") + @ExcelHead(title = "累计准予扣除的捐赠", dataIndex = "ljzykcjze") private BigDecimal ljzykcjze; /** * 累计应纳税所得额 必填:null */ @SalaryTableColumn(text = "累计应纳税所得额", width = "10%", column = "ljynssde") + @ExcelHead(title = "累计应纳税所得额", dataIndex = "ljynssde") private BigDecimal ljynssde; /** * 税率 必填:null */ @SalaryTableColumn(text = "税率", width = "10%", column = "sl") + @ExcelHead(title = "税率", dataIndex = "sl") private BigDecimal sl; /** * 速算扣除数 必填:null */ @SalaryTableColumn(text = "速算扣除数", width = "10%", column = "sskcs") + @ExcelHead(title = "速算扣除数", dataIndex = "sskcs") private BigDecimal sskcs; /** * 累计应纳税额 必填:null */ @SalaryTableColumn(text = "累计应纳税额", width = "10%", column = "ljynse") + @ExcelHead(title = "累计应纳税额", dataIndex = "ljynse") private BigDecimal ljynse; /** * 累计减免税额 必填:null */ @SalaryTableColumn(text = "累计减免税额", width = "10%", column = "ljjmse") + @ExcelHead(title = "累计减免税额", dataIndex = "ljjmse") private BigDecimal ljjmse; /** * 累计应扣缴税额 必填:null 累计应扣缴税额 = 累计应纳税额 - 累计减免税额 */ @SalaryTableColumn(text = "累计应扣缴税额", width = "10%", column = "ljyingkjse") + @ExcelHead(title = "累计应扣缴税额", dataIndex = "ljyingkjse") private BigDecimal ljyingkjse; /** * 累计已缴税额 必填:null */ @SalaryTableColumn(text = "累计已缴税额", width = "10%", column = "ljykjse") + @ExcelHead(title = "累计已缴税额", dataIndex = "ljykjse") private BigDecimal ljykjse; /** * 已缴税额 必填:null 正常工资薪金返回Null */ @SalaryTableColumn(text = "已缴税额", width = "10%", column = "ykjse") + @ExcelHead(title = "已缴税额", dataIndex = "ykjse") private BigDecimal ykjse; /** * 累计专项附加扣除额 必填:null 专项附加合计 */ @SalaryTableColumn(text = "累计专项附加扣除额", width = "10%", column = "ljzxfjkce") + @ExcelHead(title = "累计专项附加扣除额", dataIndex = "ljzxfjkce") private BigDecimal ljzxfjkce; /** * 应补退税额 必填:null 应补退税额=累计应扣缴税额-累计已缴税额 */ @SalaryTableColumn(text = "应补退税额", width = "10%", column = "ybtse") + @ExcelHead(title = "应补退税额", dataIndex = "ybtse") private BigDecimal ybtse; /** * 备注 必填:null */ @SalaryTableColumn(text = "备注", width = "10%", column = "bz") + @ExcelHead(title = "备注", dataIndex = "bz") private String bz; /** diff --git a/src/com/engine/salary/service/TaxDeclarationValueService.java b/src/com/engine/salary/service/TaxDeclarationValueService.java index 3d12b5350..773b6b9e9 100644 --- a/src/com/engine/salary/service/TaxDeclarationValueService.java +++ b/src/com/engine/salary/service/TaxDeclarationValueService.java @@ -27,7 +27,7 @@ public interface TaxDeclarationValueService { * @param taxDeclarationIds * @return */ - PageInfo listPageByTaxDeclarationIds(TaxDeclarationValueListQueryParam queryParam,Collection taxDeclarationIds); + PageInfo listPageByTaxDeclarationIds(TaxDeclarationValueListQueryParam queryParam, Collection taxDeclarationIds); /** * 查询个税申报表明细 @@ -36,6 +36,7 @@ public interface TaxDeclarationValueService { * @return */ List listByTaxDeclarationIds(Collection taxDeclarationIds); + List listByTaxDeclarationId(Long taxDeclarationId); /** @@ -60,11 +61,14 @@ public interface TaxDeclarationValueService { * @param taxDeclarationValues */ void batchSave(List taxDeclarationValues); + void batchEdit(List taxDeclarationValues); void save(TaxDeclareRecordDetailSaveParam param); + void edit(TaxDeclareRecordDetailSaveParam param); + TaxDeclarationValuePO getById(Long id); /** @@ -77,9 +81,16 @@ public interface TaxDeclarationValueService { /** * 因为单独申报年终奖不可行 * 需要补充正常工资薪金的申报,按0申报 + * * @param po */ void autoAddWagesDeclare(TaxDeclareRecordPO po); + /** + * 对比 + * @param taxDeclareRecordId + */ + void contrast(Long taxDeclareRecordId); + } diff --git a/src/com/engine/salary/service/TaxDeclareRecordService.java b/src/com/engine/salary/service/TaxDeclareRecordService.java index 1d844978a..25906560f 100644 --- a/src/com/engine/salary/service/TaxDeclareRecordService.java +++ b/src/com/engine/salary/service/TaxDeclareRecordService.java @@ -88,12 +88,6 @@ public interface TaxDeclareRecordService { */ String queryCompanyIncomes(Long id); - /** - * 对比线上和线下算税 - * @param id - */ - void contrast(Long id); - /** * 刷新数据 diff --git a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java index c569bbf0c..ddb3f26c4 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java @@ -24,6 +24,8 @@ import com.engine.salary.enums.taxdeclaration.SourceEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.taxdeclaration.TaxDeclarationValueMapper; import com.engine.salary.mapper.taxdeclaration.TaxDeclareRecordMapper; +import com.engine.salary.remote.tax.client.DeclareClient; +import com.engine.salary.remote.tax.response.employee.GetDeclareTaxResultFeedbackResponse; import com.engine.salary.service.*; import com.engine.salary.util.JsonUtil; import com.engine.salary.util.SalaryEntityUtil; @@ -36,6 +38,7 @@ import com.google.common.collect.Maps; import dm.jdbc.util.IdGenerator; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import weaver.hrm.User; import java.util.*; @@ -134,7 +137,7 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar List weaTableColumns = TaxDeclarationValueList.buildTableColumns(taxReportColumns); // 列表数据 List> data = TaxDeclarationValueList.buildTableData(incomeCategoryEnum, taxReportColumns, taxDeclarationValues, - employeeDeclares, simpleEmployees, simpleUserInfos, extEmployees); + employeeDeclares, simpleEmployees, simpleUserInfos, extEmployees, false); return new TaxDeclarationValueListDTO().setColumns(weaTableColumns).setData(data); } @@ -329,43 +332,87 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar batchSave(autoAddValuePOs); } - public void contrast(Long taxDeclarationId) { - TaxDeclarationPO taxDeclaration = getTaxDeclarationService(user).getById(taxDeclarationId); - if (taxDeclaration == null) { + @Override + public void contrast(Long taxDeclareRecordId) { + TaxDeclareRecordPO taxDeclareRecordPO = getTaxDeclareRecordMapper().getById(taxDeclareRecordId); + if (taxDeclareRecordPO == null) { + throw new SalaryRunTimeException("申报记录不存在!"); + } + + List taxDeclarations = getTaxDeclarationService(user).listByTaxDeclareRecordId(taxDeclareRecordId); + if (CollectionUtils.isEmpty(taxDeclarations)) { throw new SalaryRunTimeException("无申报表"); } - List taxDeclarationValues = listByTaxDeclarationId(taxDeclaration.getId()); + Map>> localData = new HashMap<>(); + for (TaxDeclarationPO taxDeclaration : taxDeclarations) { + List taxDeclarationValues = listByTaxDeclarationId(taxDeclaration.getId()); - // 查询个税申报表表头 - IncomeCategoryEnum incomeCategoryEnum = SalaryEnumUtil.enumMatchByValue(taxDeclaration.getIncomeCategory(), IncomeCategoryEnum.class); - List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum, 0); - // 人员id - Set employeeIds = SalaryEntityUtil.properties(taxDeclarationValues, TaxDeclarationValuePO::getEmployeeId); - // 查询报送的人员 - List employeeDeclares = getEmployeeDeclareService(user).listByTaxCycleAndTaxAgentIdAndEmployeeIds(taxDeclaration.getTaxCycle(), taxDeclaration.getTaxAgentId(), employeeIds); - // 查询人员信息 - List simpleEmployeeIds = taxDeclarationValues.stream() - .filter(taxDeclarationValue -> taxDeclarationValue.getEmployeeType() == null || Objects.equals(taxDeclarationValue.getEmployeeType(), EmployeeTypeEnum.ORGANIZATION.getValue())) - .map(TaxDeclarationValuePO::getEmployeeId) - .distinct() - .collect(Collectors.toList()); - List simpleEmployees = getSalaryEmployeeService(user).getEmployeeByIds(simpleEmployeeIds); - // 查询人员薪资(身份证号码等) - List simpleUserInfos = getSalaryEmployeeService(user).getEmployeeByIds(simpleEmployeeIds); - // 查询外部人员 - List extEmployeeIds = taxDeclarationValues.stream() - .filter(taxDeclarationValue -> Objects.equals(taxDeclarationValue.getEmployeeType(), EmployeeTypeEnum.EXT_EMPLOYEE.getValue())) - .map(TaxDeclarationValuePO::getEmployeeId) - .collect(Collectors.toList()); - List extEmployees = getExtEmpService(user).getExtEmpByIds(extEmployeeIds); + // 查询个税申报表表头 + IncomeCategoryEnum incomeCategoryEnum = SalaryEnumUtil.enumMatchByValue(taxDeclaration.getIncomeCategory(), IncomeCategoryEnum.class); + List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum); + // 人员id + Set employeeIds = SalaryEntityUtil.properties(taxDeclarationValues, TaxDeclarationValuePO::getEmployeeId); + // 查询报送的人员 + List employeeDeclares = getEmployeeDeclareService(user).listByTaxCycleAndTaxAgentIdAndEmployeeIds(taxDeclaration.getTaxCycle(), taxDeclaration.getTaxAgentId(), employeeIds); + // 查询人员信息 + List simpleEmployeeIds = taxDeclarationValues.stream() + .filter(taxDeclarationValue -> taxDeclarationValue.getEmployeeType() == null || Objects.equals(taxDeclarationValue.getEmployeeType(), EmployeeTypeEnum.ORGANIZATION.getValue())) + .map(TaxDeclarationValuePO::getEmployeeId) + .distinct() + .collect(Collectors.toList()); + List simpleEmployees = getSalaryEmployeeService(user).getEmployeeByIds(simpleEmployeeIds); + // 查询人员薪资(身份证号码等) + List simpleUserInfos = getSalaryEmployeeService(user).getEmployeeByIds(simpleEmployeeIds); + // 查询外部人员 + List extEmployeeIds = taxDeclarationValues.stream() + .filter(taxDeclarationValue -> Objects.equals(taxDeclarationValue.getEmployeeType(), EmployeeTypeEnum.EXT_EMPLOYEE.getValue())) + .map(TaxDeclarationValuePO::getEmployeeId) + .collect(Collectors.toList()); + List extEmployees = getExtEmpService(user).getExtEmpByIds(extEmployeeIds); - // 列表表头 - List weaTableColumns = TaxDeclarationValueList.buildTableColumns(taxReportColumns); - // 列表数据 - List> data = TaxDeclarationValueList.buildTableData(incomeCategoryEnum, taxReportColumns, taxDeclarationValues, - employeeDeclares, simpleEmployees, simpleUserInfos, extEmployees); + // 列表数据 + List> data = TaxDeclarationValueList.buildTableData(incomeCategoryEnum, taxReportColumns, taxDeclarationValues, + employeeDeclares, simpleEmployees, simpleUserInfos, extEmployees, true); + localData.put(incomeCategoryEnum.getDefaultLabel(), data); + } + DeclareClient declareClient = new DeclareClient(taxDeclareRecordPO.getTaxAgentId()); + GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse = declareClient.getDeclareTaxResultFeedback(taxDeclareRecordPO.getDeclareRequestId()); + + Map>> onlineDataMap = new HashMap<>(); + List list = getTaxDeclarationService(user).listByTaxDeclareRecordId(taxDeclareRecordPO.getId()); + list.stream().map(TaxDeclarationPO::getIncomeCategory).map(IncomeCategoryEnum::parseByValue).forEach(e -> e.parseGetDeclareTaxResultFeedbackResponse(onlineDataMap, declareTaxResultFeedbackResponse)); + + for (String incomeCategory : localData.keySet()) { + List> localMap = localData.get(incomeCategory); + + List> onlineData = onlineDataMap.get(incomeCategory); + List heads = onlineData.get(0); + List> data = onlineData.subList(1, onlineData.size()); + + List> onlineMap = new ArrayList<>(); + for (int i = 0; i < data.size(); i++) { + List row = data.get(i); + Map m = new HashMap<>(); + for (int j = 0; j < heads.size(); j++) { + String key = heads.get(j).toString(); + m.put(key, row.get(j)); + } + onlineMap.add(m); + } + } + } + + public static void main(String[] args) { + String a = "姓名, 证件类型, 证件号码, 本期收入, 本期免税收入, 基本养老保险费 , 基本医疗保险费, 失业保险费, 住房公积金, 企业(职业)年金, 商业健康保险, 税延养老保险, 累计收入额, 累计免税收入 , 累计减除费用, 累计专项扣除, 累计子女教育支出扣除, 累计继续教育 累计住房租金, 累计赡养老人支出扣除 , 累计3岁以下婴幼儿照护, 累计个人养老金, 累计其他扣除, 累计准予扣除的捐赠,累计应纳税所得额 ,税率, 速算扣除数, 累计应纳税额, 累计减免税额, 累计应扣缴税额, 已缴税额, 备注, incomeCategory, 证件号码,累计住房贷款利息, 累计子女教育, id, 减免税额, 累计3岁以下婴幼儿照护支出, jobNum, , employeeId, 其他, 应补(退)税额, 准予扣除的捐赠额, 累计住房贷款利息支出扣除, 累计住房租金支出扣除, 累计赡养老人, "; + String b = "姓名, 证件类型, 证件号码, 任职受雇日期, 离职日期, 本期收入, 本期免税收入, 本期基本养老保险费, 本期基本医疗保险费, 本期失业保险费, 本期住房公积金, 本期企业(职业)年金, 本期商业健康保险费, 本期税延养老保险费, 本期其他扣除(其他), 累计收入额, 累计免税收入, 累计减除费用, 累计专项扣除, 累计子女教育支出扣除, 累计继续教育支出扣除, 累计住房租金支出扣除, 累计房屋贷款支出扣除, 累计赡养老人支出扣除, 累计3岁以下婴幼儿照护, 累计个人养老金, 累计其他扣除, 累计准予扣除的捐赠, 累计应纳税所得额, 税率, 速算扣除数, 累计应纳税额, 累计减免税额, 累计应扣缴税额, 累计已缴税额, 已缴税额, 累计专项附加扣除额, 应补退税额, 备注"; + + List c = Arrays.stream(StringUtils.split(a, ",")).sorted(String::compareTo).collect(Collectors.toList()); + List d = Arrays.stream(StringUtils.split(b, ",")).sorted(String::compareTo).collect(Collectors.toList()); + + System.out.println(c); + System.out.println(d); } } diff --git a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java index 61199ba8f..f9ea9de2f 100644 --- a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java @@ -59,7 +59,6 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.springframework.transaction.annotation.Transactional; import weaver.general.Util; import weaver.hrm.User; @@ -334,7 +333,6 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe } @Override - @Transactional(rollbackFor = Exception.class) public void refreshData(Long id) { // 查询个税申报记录 TaxDeclareRecordPO taxDeclareRecord = getById(id); @@ -946,6 +944,11 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe TaxDeclareRecordPO taxDeclareRecord = taxDeclareRequest.getTaxDeclareRecord(); DeclareClient declareClient = new DeclareClient(taxDeclareRecord.getTaxAgentId()); + GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse = declareClient.getDeclareTaxResultFeedback(taxDeclareRecord.getDeclareRequestId()); + + Map>> map = new HashMap<>(); + List list = getTaxDeclarationService(user).listByTaxDeclareRecordId(id); + list.stream().map(TaxDeclarationPO::getIncomeCategory).map(IncomeCategoryEnum::parseByValue).forEach(e -> e.parseGetDeclareTaxResultFeedbackResponse(map, declareTaxResultFeedbackResponse)); return declareClient.getDeclareTaxResultFeedback(taxDeclareRecord.getDeclareRequestId()); } @@ -1113,11 +1116,6 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe return res; } - @Override - public void contrast(Long id) { - - - } @Override public void updateById(TaxDeclareRecordPO taxDeclareRecord) { diff --git a/src/com/engine/salary/util/excel/ExcelUtil.java b/src/com/engine/salary/util/excel/ExcelUtil.java index b47077c33..53b79fba8 100644 --- a/src/com/engine/salary/util/excel/ExcelUtil.java +++ b/src/com/engine/salary/util/excel/ExcelUtil.java @@ -1,10 +1,9 @@ package com.engine.salary.util.excel; -import com.engine.salary.annotation.SalaryTableColumn; import com.engine.salary.util.JsonUtil; import com.engine.salary.util.SalaryDateUtil; -import com.google.common.collect.Lists; import com.engine.salary.util.SalaryI18nUtil; +import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.FillPatternType; @@ -14,10 +13,8 @@ import org.apache.poi.xssf.usermodel.*; import java.awt.*; import java.lang.reflect.Field; -import java.util.*; -import java.lang.reflect.Field; -import java.util.Date; import java.util.List; +import java.util.*; public class ExcelUtil { /** @@ -355,12 +352,12 @@ public class ExcelUtil { List dataIndexList = Lists.newArrayList(); Field[] declaredFields = clazz.getDeclaredFields(); for (Field declaredField : declaredFields) { - if (!declaredField.isAnnotationPresent(SalaryTableColumn.class)) { + if (!declaredField.isAnnotationPresent(ExcelHead.class)) { continue; } - SalaryTableColumn annotation = declaredField.getAnnotation(SalaryTableColumn.class); - headerList.add(annotation.text()); - dataIndexList.add(annotation.column()); + ExcelHead annotation = declaredField.getAnnotation(ExcelHead.class); + headerList.add(annotation.title()); + dataIndexList.add(annotation.dataIndex()); } headerMap.put("header", headerList); headerMap.put("dataIndex", dataIndexList); diff --git a/src/com/engine/salary/web/TaxDeclarationController.java b/src/com/engine/salary/web/TaxDeclarationController.java index d7561a977..694c7f679 100644 --- a/src/com/engine/salary/web/TaxDeclarationController.java +++ b/src/com/engine/salary/web/TaxDeclarationController.java @@ -279,6 +279,21 @@ public class TaxDeclarationController { } } + /** + * 对比算税过程 + * @param request + * @param response + * @param taxDeclareRecordParam + * @return + */ + @POST + @Path("/contrast") + @Produces(MediaType.APPLICATION_JSON) + public String contrast(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordParam taxDeclareRecordParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::contrast, taxDeclareRecordParam.getTaxDeclareRecordId()); + } + /** * 作废 @@ -364,20 +379,7 @@ public class TaxDeclarationController { return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::queryCompanyIncomes, taxDeclareRecordParam.getTaxDeclareRecordId()); } - /** - * 对比算税过程 - * @param request - * @param response - * @param taxDeclareRecordParam - * @return - */ - @POST - @Path("/contrast") - @Produces(MediaType.APPLICATION_JSON) - public String contrast(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordParam taxDeclareRecordParam) { - User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::contrast, taxDeclareRecordParam.getTaxDeclareRecordId()); - } + /** * 刷新数据 diff --git a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java index 621721de5..b822db00f 100644 --- a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java +++ b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java @@ -636,9 +636,12 @@ public class TaxDeclareRecordWrapper extends Service { return getTaxDeclareRecordService(user).queryCompanyIncomes(id); } - + /** + * 对比算税结果 + * @param id + */ public void contrast(Long id) { - getTaxDeclareRecordService(user).contrast(id); + getTaxDeclarationValueService(user).contrast(id); } /** From 681c0fb18eeaadc8d4d5345503db1fc3386976c9 Mon Sep 17 00:00:00 2001 From: sy Date: Mon, 8 Jan 2024 10:57:55 +0800 Subject: [PATCH 75/92] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E4=B8=AD=E6=9B=B4=E6=96=B0=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=E4=B8=BB=E8=A1=A8=E5=92=8C=E5=AD=90=E8=A1=A8=E7=9A=84=E5=85=B3?= =?UTF-8?q?=E8=81=94=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index f2f3feee7..977adaab4 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -705,7 +705,7 @@ public class SIArchivesBiz { /** * @param paramReq - * @param employeeId + * @param */ public void otherSave(InsuranceArchivesSaveParam paramReq, User user, boolean welBaseDiffSign) { long employeeId = user.getUID(); @@ -781,8 +781,9 @@ public class SIArchivesBiz { if(baseInfoPO != null && baseInfoPO.getEmployeeType() != null && baseInfoPO.getEmployeeType().equals(DataCollectionEmployeeTypeEnum.EXT_EMPLOYEE.getValue())) { //对于非系统人员,编辑后状态切换为正在缴纳 baseInfoPO.setRunStatus(EmployeeStatusEnum.PAYING.getValue()); - getInsuranceBaseInfoMapper().updateById(baseInfoPO); } + baseInfoPO.setOtherArchivesId(updateOtherInfo.getId()); + getInsuranceBaseInfoMapper().updateById(baseInfoPO); sqlSession.commit(); } else { otherSchemeMapper.deleteByEmployeeIdAndPayOrg(InsuranceArchivesOtherSchemePO.builder() @@ -851,7 +852,7 @@ public class SIArchivesBiz { /** * @param paramReq - * @param employeeId + * @param */ public void fundSave(InsuranceArchivesSaveParam paramReq, User user, boolean welBaseDiffSign) { long employeeId = user.getUID(); @@ -927,8 +928,9 @@ public class SIArchivesBiz { if(baseInfoPO != null && baseInfoPO.getEmployeeType() != null && baseInfoPO.getEmployeeType().equals(DataCollectionEmployeeTypeEnum.EXT_EMPLOYEE.getValue())) { //对于非系统人员,编辑后状态切换为正在缴纳 baseInfoPO.setRunStatus(EmployeeStatusEnum.PAYING.getValue()); - getInsuranceBaseInfoMapper().updateById(baseInfoPO); } + baseInfoPO.setFundArchivesId(updateFundInfo.getId()); + getInsuranceBaseInfoMapper().updateById(baseInfoPO); sqlSession.commit(); } else { fundSchemeMapper.deleteByEmployeeIdAndPayOrg(InsuranceArchivesFundSchemePO.builder() @@ -1001,7 +1003,7 @@ public class SIArchivesBiz { /** * @param paramReq - * @param employeeId + * @param */ public void socialSave(InsuranceArchivesSaveParam paramReq, User user, boolean welBaseDiffSign) { long employeeId = user.getUID(); @@ -1084,8 +1086,9 @@ public class SIArchivesBiz { if(baseInfoPO != null && baseInfoPO.getEmployeeType() != null && baseInfoPO.getEmployeeType().equals(DataCollectionEmployeeTypeEnum.EXT_EMPLOYEE.getValue())) { //对于非系统人员,编辑后状态切换为正在缴纳 baseInfoPO.setRunStatus(EmployeeStatusEnum.PAYING.getValue()); - getInsuranceBaseInfoMapper().updateById(baseInfoPO); } + baseInfoPO.setSocialArchivesId(updateSocialInfo.getId()); + getInsuranceBaseInfoMapper().updateById(baseInfoPO); sqlSession.commit(); } else { socialSchemeMapper.deleteByEmployeeIdAndPayOrg(InsuranceArchivesSocialSchemePO.builder() From c0c93490fe58359c40d1bc04796efa4384fa9c1f Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 8 Jan 2024 15:32:49 +0800 Subject: [PATCH 76/92] sql --- resource/sqlupgrade/DM/sql202401080103.sql | 3 +++ resource/sqlupgrade/GS/sql202401080103.sql | 3 +++ resource/sqlupgrade/JC/sql202401080103.sql | 3 +++ resource/sqlupgrade/Mysql/sql202401080103.sql | 1 + resource/sqlupgrade/Oracle/sql202401080103.sql | 2 ++ resource/sqlupgrade/PG/sql202401080103.sql | 1 + resource/sqlupgrade/SQLServer/sql202401080103.sql | 2 ++ resource/sqlupgrade/ST/sql202401080103.sql | 3 +++ 8 files changed, 18 insertions(+) create mode 100644 resource/sqlupgrade/DM/sql202401080103.sql create mode 100644 resource/sqlupgrade/GS/sql202401080103.sql create mode 100644 resource/sqlupgrade/JC/sql202401080103.sql create mode 100644 resource/sqlupgrade/Mysql/sql202401080103.sql create mode 100644 resource/sqlupgrade/Oracle/sql202401080103.sql create mode 100644 resource/sqlupgrade/PG/sql202401080103.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202401080103.sql create mode 100644 resource/sqlupgrade/ST/sql202401080103.sql diff --git a/resource/sqlupgrade/DM/sql202401080103.sql b/resource/sqlupgrade/DM/sql202401080103.sql new file mode 100644 index 000000000..754d4529d --- /dev/null +++ b/resource/sqlupgrade/DM/sql202401080103.sql @@ -0,0 +1,3 @@ +alter table hrsa_salary_item add width int null; +/ + diff --git a/resource/sqlupgrade/GS/sql202401080103.sql b/resource/sqlupgrade/GS/sql202401080103.sql new file mode 100644 index 000000000..754d4529d --- /dev/null +++ b/resource/sqlupgrade/GS/sql202401080103.sql @@ -0,0 +1,3 @@ +alter table hrsa_salary_item add width int null; +/ + diff --git a/resource/sqlupgrade/JC/sql202401080103.sql b/resource/sqlupgrade/JC/sql202401080103.sql new file mode 100644 index 000000000..754d4529d --- /dev/null +++ b/resource/sqlupgrade/JC/sql202401080103.sql @@ -0,0 +1,3 @@ +alter table hrsa_salary_item add width int null; +/ + diff --git a/resource/sqlupgrade/Mysql/sql202401080103.sql b/resource/sqlupgrade/Mysql/sql202401080103.sql new file mode 100644 index 000000000..f5fb1c6f1 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202401080103.sql @@ -0,0 +1 @@ +alter table hrsa_salary_item add width int null; \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202401080103.sql b/resource/sqlupgrade/Oracle/sql202401080103.sql new file mode 100644 index 000000000..fc148da4a --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202401080103.sql @@ -0,0 +1,2 @@ +alter table hrsa_salary_item add width int null +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202401080103.sql b/resource/sqlupgrade/PG/sql202401080103.sql new file mode 100644 index 000000000..f5fb1c6f1 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202401080103.sql @@ -0,0 +1 @@ +alter table hrsa_salary_item add width int null; \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202401080103.sql b/resource/sqlupgrade/SQLServer/sql202401080103.sql new file mode 100644 index 000000000..ff92fddf9 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202401080103.sql @@ -0,0 +1,2 @@ +alter table hrsa_salary_item add width int null +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202401080103.sql b/resource/sqlupgrade/ST/sql202401080103.sql new file mode 100644 index 000000000..754d4529d --- /dev/null +++ b/resource/sqlupgrade/ST/sql202401080103.sql @@ -0,0 +1,3 @@ +alter table hrsa_salary_item add width int null; +/ + From c54f9daa2deef7a4775fe972d3bbe2a4ac5d0397 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 8 Jan 2024 16:00:15 +0800 Subject: [PATCH 77/92] =?UTF-8?q?=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GetDeclareTaxResultFeedbackResponse.java | 2 -- .../impl/TaxDeclarationValueServiceImpl.java | 34 +++++++++++++++++-- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java b/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java index 5727d8c74..93d834590 100644 --- a/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java +++ b/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java @@ -473,8 +473,6 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse { /** * 已缴税额 必填:null 正常工资薪金返回Null */ - @SalaryTableColumn(text = "已缴税额", width = "10%", column = "ykjse") - @ExcelHead(title = "已缴税额", dataIndex = "ykjse") private BigDecimal ykjse; /** diff --git a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java index ddb3f26c4..2e67d8973 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java @@ -31,6 +31,7 @@ import com.engine.salary.util.JsonUtil; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryEnumUtil; import com.engine.salary.util.db.MapperProxyFactory; +import com.engine.salary.util.excel.ExcelUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; @@ -386,12 +387,17 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar list.stream().map(TaxDeclarationPO::getIncomeCategory).map(IncomeCategoryEnum::parseByValue).forEach(e -> e.parseGetDeclareTaxResultFeedbackResponse(onlineDataMap, declareTaxResultFeedbackResponse)); for (String incomeCategory : localData.keySet()) { - List> localMap = localData.get(incomeCategory); + List> localList = localData.get(incomeCategory); + + Map> localMap = new HashMap<>(); + for (Map map : localList) { + String no = map.getOrDefault("证件号码", "").toString(); + localMap.put(no, map); + } List> onlineData = onlineDataMap.get(incomeCategory); List heads = onlineData.get(0); List> data = onlineData.subList(1, onlineData.size()); - List> onlineMap = new ArrayList<>(); for (int i = 0; i < data.size(); i++) { List row = data.get(i); @@ -402,11 +408,33 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar } onlineMap.add(m); } + + Map> onlineNoMap = new HashMap<>(); + for (Map map : onlineMap) { + String no = map.getOrDefault("证件号码", "").toString(); + onlineNoMap.put(no, map); + } + + Map> header = ExcelUtil.getHeader(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class); + List list1 = header.get(header); + List> resultList = new ArrayList<>(); + + + + for (Map map : localList) { + String no = map.getOrDefault("证件号码", "").toString(); + Map d1 = localMap.get(no); + Map d2 = onlineNoMap.get(no); + + + } + + } } public static void main(String[] args) { - String a = "姓名, 证件类型, 证件号码, 本期收入, 本期免税收入, 基本养老保险费 , 基本医疗保险费, 失业保险费, 住房公积金, 企业(职业)年金, 商业健康保险, 税延养老保险, 累计收入额, 累计免税收入 , 累计减除费用, 累计专项扣除, 累计子女教育支出扣除, 累计继续教育 累计住房租金, 累计赡养老人支出扣除 , 累计3岁以下婴幼儿照护, 累计个人养老金, 累计其他扣除, 累计准予扣除的捐赠,累计应纳税所得额 ,税率, 速算扣除数, 累计应纳税额, 累计减免税额, 累计应扣缴税额, 已缴税额, 备注, incomeCategory, 证件号码,累计住房贷款利息, 累计子女教育, id, 减免税额, 累计3岁以下婴幼儿照护支出, jobNum, , employeeId, 其他, 应补(退)税额, 准予扣除的捐赠额, 累计住房贷款利息支出扣除, 累计住房租金支出扣除, 累计赡养老人, "; + String a = "姓名, 证件类型, 证件号码, 本期收入, 本期免税收入, 基本养老保险费 , 基本医疗保险费, 失业保险费, 住房公积金, 企业(职业)年金, 商业健康保险, 税延养老保险, 累计收入额, 累计免税收入 , 累计减除费用, 累计专项扣除, 累计子女教育支出扣除, 累计继续教育 累计住房租金, ,累计住房贷款利息 ,累计赡养老人 , 累计3岁以下婴幼儿照护, 累计个人养老金, 累计其他扣除, 累计准予扣除的捐赠,累计应纳税所得额 ,税率, 速算扣除数, 累计应纳税额, 累计减免税额, 累计应扣缴税额, 已缴税额, 备注, incomeCategory, 证件号码, 累计子女教育, id, 减免税额, jobNum, , employeeId, 其他, 应补(退)税额, 准予扣除的捐赠额 "; String b = "姓名, 证件类型, 证件号码, 任职受雇日期, 离职日期, 本期收入, 本期免税收入, 本期基本养老保险费, 本期基本医疗保险费, 本期失业保险费, 本期住房公积金, 本期企业(职业)年金, 本期商业健康保险费, 本期税延养老保险费, 本期其他扣除(其他), 累计收入额, 累计免税收入, 累计减除费用, 累计专项扣除, 累计子女教育支出扣除, 累计继续教育支出扣除, 累计住房租金支出扣除, 累计房屋贷款支出扣除, 累计赡养老人支出扣除, 累计3岁以下婴幼儿照护, 累计个人养老金, 累计其他扣除, 累计准予扣除的捐赠, 累计应纳税所得额, 税率, 速算扣除数, 累计应纳税额, 累计减免税额, 累计应扣缴税额, 累计已缴税额, 已缴税额, 累计专项附加扣除额, 应补退税额, 备注"; List c = Arrays.stream(StringUtils.split(a, ",")).sorted(String::compareTo).collect(Collectors.toList()); From e0d4820e2eb6499d69730cff379b421b2a8a0db1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 9 Jan 2024 10:53:59 +0800 Subject: [PATCH 78/92] =?UTF-8?q?=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GetDeclareTaxResultFeedbackResponse.java | 2 - .../service/TaxDeclarationValueService.java | 3 +- .../impl/TaxDeclarationValueServiceImpl.java | 168 +++++++++--------- .../salary/web/TaxDeclarationController.java | 15 +- .../wrapper/TaxDeclareRecordWrapper.java | 12 +- 5 files changed, 105 insertions(+), 95 deletions(-) diff --git a/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java b/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java index 93d834590..9949402a4 100644 --- a/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java +++ b/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java @@ -478,8 +478,6 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse { /** * 累计专项附加扣除额 必填:null 专项附加合计 */ - @SalaryTableColumn(text = "累计专项附加扣除额", width = "10%", column = "ljzxfjkce") - @ExcelHead(title = "累计专项附加扣除额", dataIndex = "ljzxfjkce") private BigDecimal ljzxfjkce; /** diff --git a/src/com/engine/salary/service/TaxDeclarationValueService.java b/src/com/engine/salary/service/TaxDeclarationValueService.java index 773b6b9e9..bee04130e 100644 --- a/src/com/engine/salary/service/TaxDeclarationValueService.java +++ b/src/com/engine/salary/service/TaxDeclarationValueService.java @@ -10,6 +10,7 @@ import com.engine.salary.util.page.PageInfo; import java.util.Collection; import java.util.List; +import java.util.Map; /** * 个税申报表明细 @@ -90,7 +91,7 @@ public interface TaxDeclarationValueService { * 对比 * @param taxDeclareRecordId */ - void contrast(Long taxDeclareRecordId); + Map contrast(Long taxDeclareRecordId); } diff --git a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java index 2e67d8973..94d00a6b2 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java @@ -31,7 +31,6 @@ import com.engine.salary.util.JsonUtil; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryEnumUtil; import com.engine.salary.util.db.MapperProxyFactory; -import com.engine.salary.util.excel.ExcelUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; @@ -334,51 +333,21 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar } @Override - public void contrast(Long taxDeclareRecordId) { - TaxDeclareRecordPO taxDeclareRecordPO = getTaxDeclareRecordMapper().getById(taxDeclareRecordId); + public Map contrast(Long taxDeclarationId) { + + + TaxDeclarationPO taxDeclaration = getTaxDeclarationService(user).getById(taxDeclarationId); + if (taxDeclaration == null) { + throw new SalaryRunTimeException("无申报表"); + } + + TaxDeclareRecordPO taxDeclareRecordPO = getTaxDeclareRecordMapper().getById(taxDeclaration.getTaxDeclareRecordId()); if (taxDeclareRecordPO == null) { throw new SalaryRunTimeException("申报记录不存在!"); } - List taxDeclarations = getTaxDeclarationService(user).listByTaxDeclareRecordId(taxDeclareRecordId); - if (CollectionUtils.isEmpty(taxDeclarations)) { - throw new SalaryRunTimeException("无申报表"); - } - - Map>> localData = new HashMap<>(); - for (TaxDeclarationPO taxDeclaration : taxDeclarations) { - List taxDeclarationValues = listByTaxDeclarationId(taxDeclaration.getId()); - - // 查询个税申报表表头 - IncomeCategoryEnum incomeCategoryEnum = SalaryEnumUtil.enumMatchByValue(taxDeclaration.getIncomeCategory(), IncomeCategoryEnum.class); - List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum); - // 人员id - Set employeeIds = SalaryEntityUtil.properties(taxDeclarationValues, TaxDeclarationValuePO::getEmployeeId); - // 查询报送的人员 - List employeeDeclares = getEmployeeDeclareService(user).listByTaxCycleAndTaxAgentIdAndEmployeeIds(taxDeclaration.getTaxCycle(), taxDeclaration.getTaxAgentId(), employeeIds); - // 查询人员信息 - List simpleEmployeeIds = taxDeclarationValues.stream() - .filter(taxDeclarationValue -> taxDeclarationValue.getEmployeeType() == null || Objects.equals(taxDeclarationValue.getEmployeeType(), EmployeeTypeEnum.ORGANIZATION.getValue())) - .map(TaxDeclarationValuePO::getEmployeeId) - .distinct() - .collect(Collectors.toList()); - List simpleEmployees = getSalaryEmployeeService(user).getEmployeeByIds(simpleEmployeeIds); - // 查询人员薪资(身份证号码等) - List simpleUserInfos = getSalaryEmployeeService(user).getEmployeeByIds(simpleEmployeeIds); - // 查询外部人员 - List extEmployeeIds = taxDeclarationValues.stream() - .filter(taxDeclarationValue -> Objects.equals(taxDeclarationValue.getEmployeeType(), EmployeeTypeEnum.EXT_EMPLOYEE.getValue())) - .map(TaxDeclarationValuePO::getEmployeeId) - .collect(Collectors.toList()); - List extEmployees = getExtEmpService(user).getExtEmpByIds(extEmployeeIds); - - // 列表数据 - List> data = TaxDeclarationValueList.buildTableData(incomeCategoryEnum, taxReportColumns, taxDeclarationValues, - employeeDeclares, simpleEmployees, simpleUserInfos, extEmployees, true); - - localData.put(incomeCategoryEnum.getDefaultLabel(), data); - } + //线上数据 DeclareClient declareClient = new DeclareClient(taxDeclareRecordPO.getTaxAgentId()); GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse = declareClient.getDeclareTaxResultFeedback(taxDeclareRecordPO.getDeclareRequestId()); @@ -386,51 +355,88 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar List list = getTaxDeclarationService(user).listByTaxDeclareRecordId(taxDeclareRecordPO.getId()); list.stream().map(TaxDeclarationPO::getIncomeCategory).map(IncomeCategoryEnum::parseByValue).forEach(e -> e.parseGetDeclareTaxResultFeedbackResponse(onlineDataMap, declareTaxResultFeedbackResponse)); - for (String incomeCategory : localData.keySet()) { - List> localList = localData.get(incomeCategory); + Map resultList = new HashMap<>(); + List taxDeclarationValues = listByTaxDeclarationId(taxDeclaration.getId()); - Map> localMap = new HashMap<>(); - for (Map map : localList) { - String no = map.getOrDefault("证件号码", "").toString(); - localMap.put(no, map); - } + // 查询个税申报表表头 + IncomeCategoryEnum incomeCategoryEnum = SalaryEnumUtil.enumMatchByValue(taxDeclaration.getIncomeCategory(), IncomeCategoryEnum.class); + List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum); + List columns = SalaryEntityUtil.properties(taxReportColumns, TaxReportColumnPO::getReportColumnName, Collectors.toList()); + // 人员id + Set employeeIds = SalaryEntityUtil.properties(taxDeclarationValues, TaxDeclarationValuePO::getEmployeeId); + // 查询报送的人员 + List employeeDeclares = getEmployeeDeclareService(user).listByTaxCycleAndTaxAgentIdAndEmployeeIds(taxDeclaration.getTaxCycle(), taxDeclaration.getTaxAgentId(), employeeIds); + // 查询人员信息 + List simpleEmployeeIds = taxDeclarationValues.stream() + .filter(taxDeclarationValue -> taxDeclarationValue.getEmployeeType() == null || Objects.equals(taxDeclarationValue.getEmployeeType(), EmployeeTypeEnum.ORGANIZATION.getValue())) + .map(TaxDeclarationValuePO::getEmployeeId) + .distinct() + .collect(Collectors.toList()); + List simpleEmployees = getSalaryEmployeeService(user).getEmployeeByIds(simpleEmployeeIds); + // 查询人员薪资(身份证号码等) + List simpleUserInfos = getSalaryEmployeeService(user).getEmployeeByIds(simpleEmployeeIds); + // 查询外部人员 + List extEmployeeIds = taxDeclarationValues.stream() + .filter(taxDeclarationValue -> Objects.equals(taxDeclarationValue.getEmployeeType(), EmployeeTypeEnum.EXT_EMPLOYEE.getValue())) + .map(TaxDeclarationValuePO::getEmployeeId) + .collect(Collectors.toList()); + List extEmployees = getExtEmpService(user).getExtEmpByIds(extEmployeeIds); - List> onlineData = onlineDataMap.get(incomeCategory); - List heads = onlineData.get(0); - List> data = onlineData.subList(1, onlineData.size()); - List> onlineMap = new ArrayList<>(); - for (int i = 0; i < data.size(); i++) { - List row = data.get(i); - Map m = new HashMap<>(); - for (int j = 0; j < heads.size(); j++) { - String key = heads.get(j).toString(); - m.put(key, row.get(j)); - } - onlineMap.add(m); - } - - Map> onlineNoMap = new HashMap<>(); - for (Map map : onlineMap) { - String no = map.getOrDefault("证件号码", "").toString(); - onlineNoMap.put(no, map); - } - - Map> header = ExcelUtil.getHeader(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class); - List list1 = header.get(header); - List> resultList = new ArrayList<>(); - - - - for (Map map : localList) { - String no = map.getOrDefault("证件号码", "").toString(); - Map d1 = localMap.get(no); - Map d2 = onlineNoMap.get(no); - - - } + // 列表数据 + List> localList = TaxDeclarationValueList.buildTableData(incomeCategoryEnum, taxReportColumns, taxDeclarationValues, + employeeDeclares, simpleEmployees, simpleUserInfos, extEmployees, true); + Map> localMap = new HashMap<>(); + for (Map map : localList) { + String no = map.getOrDefault("证件号码", "").toString(); + localMap.put(no, map); } + + List> onlineData = onlineDataMap.get(incomeCategoryEnum.getDefaultLabel()); + List heads = onlineData.get(0); + List> data = onlineData.subList(1, onlineData.size()); + List> onlineMap = new ArrayList<>(); + for (int i = 0; i < data.size(); i++) { + List row = data.get(i); + Map m = new HashMap<>(); + for (int j = 0; j < heads.size(); j++) { + String key = heads.get(j).toString(); + m.put(key, row.get(j)); + } + onlineMap.add(m); + } + + Map> onlineNoMap = new HashMap<>(); + for (Map map : onlineMap) { + String no = map.getOrDefault("证件号码", "").toString(); + onlineNoMap.put(no, map); + } + + List> oneResultList = new ArrayList<>(); + for (Map local : localList) { + Map result = new HashMap<>(); + result.put("姓名", local.get("姓名")); + result.put("证件类型", local.get("证件类型")); + result.put("证件号码", local.get("证件号码")); + String no = local.getOrDefault("证件号码", "").toString(); + Map online = onlineNoMap.get(no); + + taxReportColumns.stream().forEach(col -> { + Map temp = Maps.newHashMap(); + // 系统值 + Object localValue = local.getOrDefault(col.getReportColumnName(), ""); + // 线下值 + Object onlineValue = online.getOrDefault(col.getReportColumnName(), ""); + temp.put("local", localValue); + temp.put("online", onlineValue); + result.put(col.getReportColumnName(), temp); + }); + oneResultList.add(result); + } + resultList.put("columns", columns); + resultList.put("data", oneResultList); + return resultList; } public static void main(String[] args) { diff --git a/src/com/engine/salary/web/TaxDeclarationController.java b/src/com/engine/salary/web/TaxDeclarationController.java index 694c7f679..c028ca7e2 100644 --- a/src/com/engine/salary/web/TaxDeclarationController.java +++ b/src/com/engine/salary/web/TaxDeclarationController.java @@ -184,13 +184,14 @@ public class TaxDeclarationController { @POST @Path("/addTaxDeclaration") @Produces(MediaType.APPLICATION_JSON) - public String addTaxDeclarationTab(@Context HttpServletRequest request, @Context HttpServletResponse response,TaxDeclarationAddParam param) { + public String addTaxDeclarationTab(@Context HttpServletRequest request, @Context HttpServletResponse response, TaxDeclarationAddParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::addTaxDeclaration, param); } /** * 删除申报表 + * * @param request * @param response * @param param @@ -199,7 +200,7 @@ public class TaxDeclarationController { @POST @Path("/deleteTaxDeclaration") @Produces(MediaType.APPLICATION_JSON) - public String deleteTaxDeclaration(@Context HttpServletRequest request, @Context HttpServletResponse response,TaxDeclarationDeleteParam param) { + public String deleteTaxDeclaration(@Context HttpServletRequest request, @Context HttpServletResponse response, TaxDeclarationDeleteParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::deleteTaxDeclaration, param); } @@ -281,17 +282,18 @@ public class TaxDeclarationController { /** * 对比算税过程 + * * @param request * @param response - * @param taxDeclareRecordParam + * @param taxDeclarationId * @return */ - @POST + @GET @Path("/contrast") @Produces(MediaType.APPLICATION_JSON) - public String contrast(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordParam taxDeclareRecordParam) { + public String contrast(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam(value = "taxDeclarationId") Long taxDeclarationId) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::contrast, taxDeclareRecordParam.getTaxDeclareRecordId()); + return new ResponseResult>(user).run(getTaxDeclareRecordWrapper(user)::contrast, taxDeclarationId); } @@ -380,7 +382,6 @@ public class TaxDeclarationController { } - /** * 刷新数据 * diff --git a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java index b822db00f..a1dfa6579 100644 --- a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java +++ b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java @@ -312,6 +312,7 @@ public class TaxDeclareRecordWrapper extends Service { /** * 新增申报表 + * * @param param */ public void addTaxDeclaration(TaxDeclarationAddParam param) { @@ -638,10 +639,11 @@ public class TaxDeclareRecordWrapper extends Service { /** * 对比算税结果 + * * @param id */ - public void contrast(Long id) { - getTaxDeclarationValueService(user).contrast(id); + public Map contrast(Long id) { + return getTaxDeclarationValueService(user).contrast(id); } /** @@ -724,6 +726,7 @@ public class TaxDeclareRecordWrapper extends Service { /** * 新增表单 + * * @param param * @return */ @@ -735,7 +738,7 @@ public class TaxDeclareRecordWrapper extends Service { } // 查询个税申报表列 - List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(IncomeCategoryEnum.parseByValue(taxDeclaration.getIncomeCategory()),0); + List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(IncomeCategoryEnum.parseByValue(taxDeclaration.getIncomeCategory()), 0); //当前税款所属期报送成功且状态正常的人员 List employeeDeclarePOS = getEmployeeDeclareService(user).listByParam( EmployeeDeclareListQueryParam @@ -780,6 +783,7 @@ public class TaxDeclareRecordWrapper extends Service { /** * 详细信息 + * * @param id * @return */ @@ -801,7 +805,7 @@ public class TaxDeclareRecordWrapper extends Service { } EmployeeDeclarePO employeeDeclarePO = employeeDeclarePOS.get(0); // 查询个税申报表列 - List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(IncomeCategoryEnum.parseByValue(taxDeclarationPO.getIncomeCategory()),0); + List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(IncomeCategoryEnum.parseByValue(taxDeclarationPO.getIncomeCategory()), 0); return TaxDeclareRecordDetailFormDTO .builder() .id(id) From f5aa425f2cca9b0d11ec3351d8b7465ef4bc2d56 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 9 Jan 2024 13:21:45 +0800 Subject: [PATCH 79/92] =?UTF-8?q?fix=E5=85=AC=E5=BC=8F=EF=BC=8C=E4=BA=BA?= =?UTF-8?q?=E5=91=98=E7=8A=B6=E6=80=81=E5=8F=98=E9=87=8F=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E5=80=BCbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/entity/salaryacct/bo/CalculateFormulaVarBO.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java b/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java index 74835472d..8251ea51f 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java @@ -1,5 +1,6 @@ package com.engine.salary.entity.salaryacct.bo; +import cn.hutool.core.util.NumberUtil; import com.engine.salary.annotation.SalaryFormulaVar; import com.engine.salary.common.LocalDateRange; import com.engine.salary.constant.SalaryFormulaFieldConstant; @@ -18,6 +19,7 @@ import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveTaxAgentDataDTO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; import com.engine.salary.entity.salarysob.po.SalarySobAdjustRulePO; +import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.salaryformula.SalaryFormulaReferenceEnum; import com.engine.salary.enums.salaryformula.SalarySQLReferenceEnum; import com.engine.salary.enums.salarysob.SalarySobAdjustRuleTypeEnum; @@ -551,6 +553,10 @@ public class CalculateFormulaVarBO { } // 填充到返回结果集中 employeeMap.forEach((key, po) -> { + // 获取po的状态 + if(po.getStatus() != null && NumberUtil.isNumber(po.getStatus())) { + po.setStatusName(UserStatusEnum.getDefaultLabelByValue(new Integer(po.getStatus()))); + } List formulaVarValues = resultMap.computeIfAbsent(key, k -> Lists.newArrayList()); Map map = JsonUtil.parseMap(po, String.class); formulaVarValues.addAll(fieldNames.stream().map(fieldName -> { From 3b761341fcc14e9f660e925ea7d87eed366c05e7 Mon Sep 17 00:00:00 2001 From: sy Date: Wed, 10 Jan 2024 11:20:36 +0800 Subject: [PATCH 80/92] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=9F=BA=E6=95=B0=E8=87=AA=E5=8A=A8=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 58 +++++++++++++++++++ .../service/impl/SISchemeServiceImpl.java | 35 ++++++++++- .../sys/constant/SalarySysConstant.java | 5 ++ 3 files changed, 97 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index 977adaab4..4f62417c6 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -1217,6 +1217,64 @@ public class SIArchivesBiz { return true; } + + /** + * 校验福利基数是否符合上下限要求,并返回符合要求的数据 + * @param primaryId + * @param paymentBaseString + * @return + */ + public String checkAndBuildWelBaseWithLimit(Long primaryId, String paymentBaseString, Integer paymentScope) { + + if (primaryId ==null || paymentBaseString == null) { + return paymentBaseString; + } + Map paymentBaseJson = JSON.parseObject(paymentBaseString, HashMap.class); + Map newPaymentBaseJson = JSON.parseObject(paymentBaseString, HashMap.class); + if (paymentBaseJson == null) { + return null; + } + + for (Map.Entry entry : paymentBaseJson.entrySet()) { + + //判断福利值是否为空/数字 + if (entry.getValue() == null || entry.getValue().length() == 0) { + continue; + } else if (!isNumeric(entry.getValue())) { + log.info("福利值非数字!"); + newPaymentBaseJson.remove(entry.getKey()); + continue; + } + //根据福利方案id、险种id + List insuranceSchemeDetailPOList = getInsuranceSchemeDetailMapper().getByPI(primaryId, Long.valueOf(entry.getKey())); + log.info("福利方案id: {},, 福利明细项id:{}", primaryId, Long.valueOf(entry.getKey())); + if (insuranceSchemeDetailPOList.size() == 0) { + log.info("根据福利方案id、险种id、缴纳对象查询明细为null!福利方案id: {}, 福利明细项id:{}", primaryId, Long.valueOf(entry.getKey())); + newPaymentBaseJson.remove(entry.getKey()); + continue; + } + List checkList = insuranceSchemeDetailPOList.stream() + .filter(f -> f.getPaymentScope().equals(paymentScope)).collect(Collectors.toList()); + if (checkList.size() > 0) { + InsuranceSchemeDetailPO insuranceSchemeDetailPO = checkList.get(0); + encryptUtil.decrypt(insuranceSchemeDetailPO, InsuranceSchemeDetailPO.class); + String lowerLimit = "0.000".equals(insuranceSchemeDetailPO.getLowerLimit()) ? null : insuranceSchemeDetailPO.getLowerLimit(); + String upperLimit = "0.000".equals(insuranceSchemeDetailPO.getUpperLimit()) ? null : insuranceSchemeDetailPO.getUpperLimit(); + if (lowerLimit != null && lowerLimit.length() > 0 && Double.parseDouble(entry.getValue()) < Double.parseDouble(lowerLimit)) { + //数值低于对应福利明细下限 + log.info("社保基数 {} 数值 {} 低于对应福利明细下限 {}!", entry.getKey(), entry.getValue(), lowerLimit); + newPaymentBaseJson.put(entry.getKey(), lowerLimit); + } + if (upperLimit != null && upperLimit.length() > 0 && Double.parseDouble(entry.getValue()) > Double.parseDouble(upperLimit)) { + //数值高于对应福利明细上限 + log.info("社保基数 {} 数值 {} 高于对应福利明细上限 {} !", entry.getKey(), entry.getValue(), upperLimit); + newPaymentBaseJson.put(entry.getKey(), upperLimit); + } + } + } + return JSON.toJSONString(newPaymentBaseJson); + } + /** * 档案列表 *

diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index 5b2552ef9..da2c8b0ae 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -44,6 +44,7 @@ import com.engine.salary.mapper.taxagent.TaxAgentMapper; import com.engine.salary.service.*; import com.engine.salary.sys.entity.po.SalarySysConfPO; import com.engine.salary.sys.entity.vo.OrderRuleVO; +import com.engine.salary.sys.enums.OpenEnum; import com.engine.salary.sys.service.SalarySysConfService; import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import com.engine.salary.util.*; @@ -74,6 +75,7 @@ import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; +import static com.engine.salary.sys.constant.SalarySysConstant.WEL_BASE_AUTO_ADJUST; import static com.engine.salary.util.excel.ExcelSupport.EXCEL_TYPE_XLSX; /** @@ -1263,7 +1265,12 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { //生成福利档案基础信息数据 InsuranceArchivesBaseInfoPO insuranceArchivesBaseInfoPO = buildBaseInfoPO(employeeId, singleAccount, paymentNameIdMap, creator, runStatus, employees.get(0).isExtEmp()); - if (!isError) { + + //判断是否福利档案导入时,不符合上下限的基数调整为上限/下限 + SalarySysConfPO welBaseAutoAdjust = getSalarySysConfService(user).getOneByCode(WEL_BASE_AUTO_ADJUST); + boolean welBaseAutoAdjustSign = welBaseAutoAdjust != null && welBaseAutoAdjust.getConfValue().equals(OpenEnum.OPEN.getValue()); + + if (!isError && !welBaseAutoAdjustSign) { insuranceArchivesAccountPO.setSocial(insuranceArchivesSocialSchemePO); insuranceArchivesAccountPO.setFund(insuranceArchivesFundSchemePO); insuranceArchivesAccountPO.setOther(insuranceArchivesOtherSchemePO); @@ -1304,6 +1311,32 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { isError = true; } + } else if (!isError) { + //校验福利基数是否符合上下限要求,不符合上下限的基数调整为上限 /下限 + String newSocialPaymentBaseString = siArchivesBiz.checkAndBuildWelBaseWithLimit(insuranceArchivesSocialSchemePO.getSocialSchemeId(), insuranceArchivesSocialSchemePO.getSocialPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue()); + String newFundPaymentBaseString = siArchivesBiz.checkAndBuildWelBaseWithLimit(insuranceArchivesFundSchemePO.getFundSchemeId(), insuranceArchivesFundSchemePO.getFundPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue()); + String newOtherPaymentBaseString = siArchivesBiz.checkAndBuildWelBaseWithLimit(insuranceArchivesOtherSchemePO.getOtherSchemeId(), insuranceArchivesOtherSchemePO.getOtherPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue()); + + insuranceArchivesSocialSchemePO.setSocialPaymentBaseString(newSocialPaymentBaseString); + insuranceArchivesFundSchemePO.setFundPaymentBaseString(newFundPaymentBaseString); + insuranceArchivesOtherSchemePO.setOtherPaymentBaseString(newOtherPaymentBaseString); + + if (welBaseDiffSign) { + String newSocialPaymentComBaseString = siArchivesBiz.checkAndBuildWelBaseWithLimit(insuranceArchivesSocialSchemePO.getSocialSchemeId(), insuranceArchivesSocialSchemePO.getSocialPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue()); + String newFundPaymentComBaseString = siArchivesBiz.checkAndBuildWelBaseWithLimit(insuranceArchivesFundSchemePO.getFundSchemeId(), insuranceArchivesFundSchemePO.getFundPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue()); + String newOtherPaymentComBaseString = siArchivesBiz.checkAndBuildWelBaseWithLimit(insuranceArchivesOtherSchemePO.getOtherSchemeId(), insuranceArchivesOtherSchemePO.getOtherPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue()); + + insuranceArchivesSocialSchemePO.setSocialPaymentComBaseString(newSocialPaymentComBaseString); + insuranceArchivesFundSchemePO.setFundPaymentComBaseString(newFundPaymentComBaseString); + insuranceArchivesOtherSchemePO.setOtherPaymentComBaseString(newOtherPaymentComBaseString); + } + + insuranceArchivesAccountPO.setSocial(insuranceArchivesSocialSchemePO); + insuranceArchivesAccountPO.setFund(insuranceArchivesFundSchemePO); + insuranceArchivesAccountPO.setOther(insuranceArchivesOtherSchemePO); + insuranceArchivesAccountPO.setBaseInfo(insuranceArchivesBaseInfoPO); + + insuranceArchivesAccountPOS.add(insuranceArchivesAccountPO); } return isError; } diff --git a/src/com/engine/salary/sys/constant/SalarySysConstant.java b/src/com/engine/salary/sys/constant/SalarySysConstant.java index df5ea5ea2..afe54d3c0 100644 --- a/src/com/engine/salary/sys/constant/SalarySysConstant.java +++ b/src/com/engine/salary/sys/constant/SalarySysConstant.java @@ -110,4 +110,9 @@ public class SalarySysConstant { * 应用设置是否福利档案基数区分个人和单位 */ public static final String WEL_BASE_DIFF_BY_PER_AND_COM = "welBaseDiffByPerAndCom"; + + /** + * 应用设置是否福利档案导入时,不符合上下限的基数调整为上限 /下限 + */ + public static final String WEL_BASE_AUTO_ADJUST = "welBaseAutoAdjust"; } From be68f01145cca15a1f0d5416a0ff6e463a428a85 Mon Sep 17 00:00:00 2001 From: sy Date: Mon, 15 Jan 2024 09:45:19 +0800 Subject: [PATCH 81/92] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8Cmysql=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=E4=B8=ADsql=E8=84=9A=E6=9C=AC=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/Mysql/sql202312130203.sql | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/resource/sqlupgrade/Mysql/sql202312130203.sql b/resource/sqlupgrade/Mysql/sql202312130203.sql index 7ff70da9f..15acb233a 100644 --- a/resource/sqlupgrade/Mysql/sql202312130203.sql +++ b/resource/sqlupgrade/Mysql/sql202312130203.sql @@ -1,17 +1,17 @@ -ALTER TABLE hrsa_social_archives ADD COLUMN social_payment_com_base_string varchar(4000) NULL; -ALTER TABLE hrsa_fund_archives ADD COLUMN fund_payment_com_base_string varchar(4000) NULL; -ALTER TABLE hrsa_other_archives ADD COLUMN other_payment_com_base_string varchar(4000) NULL; +ALTER TABLE hrsa_social_archives ADD COLUMN social_payment_com_base_string text NULL; +ALTER TABLE hrsa_fund_archives ADD COLUMN fund_payment_com_base_string text NULL; +ALTER TABLE hrsa_other_archives ADD COLUMN other_payment_com_base_string text NULL; -ALTER TABLE hrsa_bill_detail ADD COLUMN social_payment_com_base_string varchar(4000) NULL; -ALTER TABLE hrsa_bill_detail ADD COLUMN fund_payment_com_base_string varchar(4000) NULL; -ALTER TABLE hrsa_bill_detail ADD COLUMN other_payment_com_base_string varchar(4000) NULL; +ALTER TABLE hrsa_bill_detail ADD COLUMN social_payment_com_base_string text NULL; +ALTER TABLE hrsa_bill_detail ADD COLUMN fund_payment_com_base_string text NULL; +ALTER TABLE hrsa_bill_detail ADD COLUMN other_payment_com_base_string text NULL; -ALTER TABLE hrsa_bill_detail_temp ADD COLUMN social_payment_com_base_string varchar(4000) NULL; -ALTER TABLE hrsa_bill_detail_temp ADD COLUMN fund_payment_com_base_string varchar(4000) NULL; -ALTER TABLE hrsa_bill_detail_temp ADD COLUMN other_payment_com_base_string varchar(4000) NULL; +ALTER TABLE hrsa_bill_detail_temp ADD COLUMN social_payment_com_base_string text NULL; +ALTER TABLE hrsa_bill_detail_temp ADD COLUMN fund_payment_com_base_string text NULL; +ALTER TABLE hrsa_bill_detail_temp ADD COLUMN other_payment_com_base_string text NULL; -ALTER TABLE hrsa_excel_bill_detail ADD COLUMN social_payment_com_base_string varchar(4000) NULL; -ALTER TABLE hrsa_excel_bill_detail ADD COLUMN fund_payment_com_base_string varchar(4000) NULL; -ALTER TABLE hrsa_excel_bill_detail ADD COLUMN other_payment_com_base_string varchar(4000) NULL; +ALTER TABLE hrsa_excel_bill_detail ADD COLUMN social_payment_com_base_string text NULL; +ALTER TABLE hrsa_excel_bill_detail ADD COLUMN fund_payment_com_base_string text NULL; +ALTER TABLE hrsa_excel_bill_detail ADD COLUMN other_payment_com_base_string text NULL; ALTER TABLE hrsa_insurance_base_history ADD COLUMN payment_scope varchar(10) NULL; From e38fd9be992244d5aeb32b36fdda0d9bdc7004f9 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 15 Jan 2024 10:51:53 +0800 Subject: [PATCH 82/92] =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=B5=B7=E5=A7=8B=E3=80=81=E7=BB=93=E6=9D=9F?= =?UTF-8?q?=E5=8F=91=E8=96=AA=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/SalaryArchiveQueryParam.java | 22 ++++++++++++ .../mapper/archive/SalaryArchiveMapper.xml | 36 +++++++++++++++++++ .../impl/SalaryArchiveServiceImpl.java | 13 +++++++ 3 files changed, 71 insertions(+) diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveQueryParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveQueryParam.java index 12a02998d..505ce3264 100644 --- a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveQueryParam.java +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveQueryParam.java @@ -10,6 +10,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.util.Collection; +import java.util.Date; import java.util.List; /** @@ -88,4 +89,25 @@ public class SalaryArchiveQueryParam extends BaseQueryParam { */ private boolean extSalaryArchiveList; + + private String payStartDateStartDateStr; + private String payStartDateEndDateStr; + + // 起始发薪日期起 + private Date payStartDateStartDate; + + // 起始发薪日期止 + private Date payStartDateEndDate; + + // 最后发薪日期起 + private String payEndDateStartDateStr; + // 最后发薪日期止 + private String payEndDateEndDateStr; + + // 最后发薪日期起 + private Date payEndDateStartDate; + + // 最后发薪日期止 + private Date payEndDateEndDate; + } diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml index 03facc683..ea4f6498b 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml @@ -183,6 +183,18 @@ #{runStatus} + + AND pay_start_date = ]]> #{param.payStartDateStartDate} + + + AND pay_start_date #{param.payStartDateEndDate} + + + AND pay_end_date = ]]> #{param.payEndDateStartDate} + + + AND pay_end_date #{param.payEndDateEndDate} + ORDER BY ${param.orderRule.orderRule} ${param.orderRule.ascOrDesc} @@ -264,6 +276,18 @@ #{runStatus} + + AND pay_start_date = ]]> #{param.payStartDateStartDate} + + + AND pay_start_date = ]]> #{param.payStartDateEndDate} + + + AND pay_end_date = ]]> #{param.payEndDateStartDate} + + + AND pay_end_date = ]]> #{param.payEndDateEndDate} + ORDER BY ${param.orderRule.orderRule} ${param.orderRule.ascOrDesc} @@ -346,6 +370,18 @@ #{runStatus} + + AND pay_start_date = ]]> #{param.payStartDateStartDate} + + + AND pay_start_date = ]]> #{param.payStartDateEndDate} + + + AND pay_end_date = ]]> #{param.payEndDateStartDate} + + + AND pay_end_date = ]]> #{param.payEndDateEndDate} + ORDER BY ${param.orderRule.orderRule} ${param.orderRule.ascOrDesc} diff --git a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java index 5ba7bd575..1fbe1b525 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java @@ -163,6 +163,19 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe if (queryParam.isExtSalaryArchiveList()) { return getSalaryArchiveMapper().listExtSalaryArchive(queryParam); } + if (StringUtils.isNotBlank(queryParam.getPayStartDateStartDateStr())) { + queryParam.setPayStartDateStartDate(SalaryDateUtil.stringToDate(queryParam.getPayStartDateStartDateStr())); + } + if (Objects.nonNull(queryParam.getPayStartDateEndDateStr())) { + queryParam.setPayStartDateEndDate(SalaryDateUtil.stringToDate(queryParam.getPayStartDateEndDateStr())); + } + + if (StringUtils.isNotBlank(queryParam.getPayEndDateStartDateStr())) { + queryParam.setPayEndDateStartDate(SalaryDateUtil.stringToDate(queryParam.getPayEndDateStartDateStr())); + } + if (Objects.nonNull(queryParam.getPayEndDateEndDateStr())) { + queryParam.setPayEndDateEndDate(SalaryDateUtil.stringToDate(queryParam.getPayEndDateEndDateStr())); + } return getSalaryArchiveMapper().list(queryParam); } From 0a6467aaa6e5749b531d3d460a9cd108cdb46812 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 15 Jan 2024 18:48:05 +0800 Subject: [PATCH 83/92] =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=B5=B7=E5=A7=8B=E3=80=81=E7=BB=93=E6=9D=9F?= =?UTF-8?q?=E5=8F=91=E8=96=AA=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/mapper/archive/SalaryArchiveMapper.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml index ea4f6498b..c08dd87e2 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml @@ -280,13 +280,13 @@ AND pay_start_date = ]]> #{param.payStartDateStartDate} - AND pay_start_date = ]]> #{param.payStartDateEndDate} + AND pay_start_date #{param.payStartDateEndDate} AND pay_end_date = ]]> #{param.payEndDateStartDate} - AND pay_end_date = ]]> #{param.payEndDateEndDate} + AND pay_end_date #{param.payEndDateEndDate} @@ -374,13 +374,13 @@ AND pay_start_date = ]]> #{param.payStartDateStartDate} - AND pay_start_date = ]]> #{param.payStartDateEndDate} + AND pay_start_date #{param.payStartDateEndDate} AND pay_end_date = ]]> #{param.payEndDateStartDate} - AND pay_end_date = ]]> #{param.payEndDateEndDate} + AND pay_end_date #{param.payEndDateEndDate} From db4b44e62cd5ca7d4746494288ffc34495f91a06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 16 Jan 2024 16:35:37 +0800 Subject: [PATCH 84/92] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=9D=9E=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E4=BA=BA=E5=91=98=E7=8A=B6=E6=80=81bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SalaryArchiveServiceImpl.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java index 5ba7bd575..aa3b0eaf3 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java @@ -320,11 +320,11 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe @Override public void deleteSalaryArchive(Collection salaryArchiveIds) { - if(CollectionUtils.isEmpty(salaryArchiveIds)){ + if (CollectionUtils.isEmpty(salaryArchiveIds)) { throw new SalaryRunTimeException("薪资档案参数为空!"); } SalarySysConfPO canDelete = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_ARCHIVE_DELETE); - if(Objects.isNull(canDelete) || StringUtils.equals(canDelete.getConfValue(),"0") ){ + if (Objects.isNull(canDelete) || StringUtils.equals(canDelete.getConfValue(), "0")) { throw new SalaryRunTimeException("不允许删除薪资档案,请先开启删除档案规则配置!"); } List salaryArchiveList = getSalaryArchiveMapper().listSome(SalaryArchivePO.builder().ids(salaryArchiveIds).build()); @@ -333,17 +333,17 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe List canDeleteTaxAgentIds = getTaxAgentService(user).listAllTaxAgentsAsAdmin((long) user.getUID()) .stream().map(TaxAgentPO::getId).collect(Collectors.toList()); boolean err = salaryArchiveList.stream().anyMatch(po -> !canDeleteTaxAgentIds.contains(po.getTaxAgentId())); - if(CollectionUtils.isEmpty(salaryArchiveList) || err){ + if (CollectionUtils.isEmpty(salaryArchiveList) || err) { throw new SalaryRunTimeException("薪资档案不存在,或没有权限删除该薪资档案!"); } Optional fixedList = salaryArchiveList.stream().filter(archive -> !StringUtils.equals(archive.getRunStatus(), SalaryArchiveStatusEnum.PENDING.getValue()) && !StringUtils.equals(archive.getRunStatus(), SalaryArchiveStatusEnum.STOP_FROM_PENDING.getValue())).findFirst(); - if(fixedList.isPresent()){ + if (fixedList.isPresent()) { throw new SalaryRunTimeException("发薪员工、待停薪员工、停薪_来自待停薪,无法删除薪资档案!"); } List deleteIds = salaryArchiveList.stream().map(SalaryArchivePO::getId).collect(Collectors.toList()); // 删除薪资档案及档案项目 - if(CollectionUtils.isNotEmpty(deleteIds)){ + if (CollectionUtils.isNotEmpty(deleteIds)) { getSalaryArchiveMapper().deleteByIds(deleteIds); getSalaryArchiveItemMapper().deleteBySalaryArchiveId(deleteIds); } @@ -432,7 +432,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe List salaryItemIds = salaryItems.stream().map(SalaryItemPO::getId).collect(Collectors.toList()); // 1.获取薪资档案所对应的当前生效的薪资项目数据 List salaryArchiveItemList = Collections.emptyList(); - if(CollectionUtils.isNotEmpty(ids) && CollectionUtils.isNotEmpty(salaryItemIds) || !isPage){ + if (CollectionUtils.isNotEmpty(ids) && CollectionUtils.isNotEmpty(salaryItemIds) || !isPage) { salaryArchiveItemList = getCurrentEffectiveItemList(ids, salaryItemIds); } List finalSalaryArchiveItemList = salaryArchiveItemList; @@ -461,7 +461,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe // 3.组装数据 List> listMaps = new ArrayList<>(); salaryArchives.forEach(e -> { - e.setEmployeeStatus(UserStatusEnum.getDefaultLabelByValue(Integer.parseInt(e.getEmployeeStatus()))); + e.setEmployeeStatus(NumberUtils.isCreatable(e.getEmployeeStatus()) ? UserStatusEnum.getDefaultLabelByValue(Integer.parseInt(e.getEmployeeStatus())) : ""); Map map = new LinkedHashMap<>(); map.put("id", e.getId()); @@ -757,11 +757,11 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe // 获取核算人员规则 List statusList = Collections.emptyList(); SalarySysConfPO employeeRule = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_ACCT_EMPLOYEE_RULE); - if(Objects.isNull(employeeRule) || StringUtils.equals(employeeRule.getConfValue(), SalaryAcctEmployeeRuleEnum.BYPAYENDTIME.getValue())){ + if (Objects.isNull(employeeRule) || StringUtils.equals(employeeRule.getConfValue(), SalaryAcctEmployeeRuleEnum.BYPAYENDTIME.getValue())) { // 默认包含停薪列表 statusList = Arrays.asList(SalaryArchiveStatusEnum.FIXED.getValue(), SalaryArchiveStatusEnum.SUSPEND.getValue(), - SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue() ); - }else{ + SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue()); + } else { // 仅包含发薪、待定薪 statusList = Arrays.asList(SalaryArchiveStatusEnum.FIXED.getValue(), SalaryArchiveStatusEnum.SUSPEND.getValue()); } From a3aa0f5ca10a9228a548b9e16cef3ca64cfe53b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 17 Jan 2024 10:55:42 +0800 Subject: [PATCH 85/92] =?UTF-8?q?=E8=87=AA=E9=80=82=E5=BA=94=E6=96=87?= =?UTF-8?q?=E5=AD=97=E9=95=BF=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/util/page/SalaryPageUtil.java | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/com/engine/salary/util/page/SalaryPageUtil.java b/src/com/engine/salary/util/page/SalaryPageUtil.java index bc8892eee..a91fe1d2a 100644 --- a/src/com/engine/salary/util/page/SalaryPageUtil.java +++ b/src/com/engine/salary/util/page/SalaryPageUtil.java @@ -3,6 +3,9 @@ package com.engine.salary.util.page; import com.github.pagehelper.PageHelper; import org.apache.commons.collections4.CollectionUtils; +import java.awt.*; +import java.awt.font.FontRenderContext; +import java.awt.geom.Rectangle2D; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -91,18 +94,23 @@ public class SalaryPageUtil { endIndex > source.size() ? source.size() : endIndex); } + + static Font font = new Font("Arial", Font.PLAIN, 12); // 设置字体样式、大小等属性 + static FontRenderContext frc = new FontRenderContext(null, true, false); +// GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); + + /** + * 自适应文字长度 + * @param chars + * @param width + * @return + */ public static String selfAdaption(String chars, Integer width) { - if (width != null && width != 0){ + if (width != null && width != 0) { return width + ""; } - int adaption = 0; - - if (chars != null) { - adaption = chars.length() * 12 + 55; - } - if (adaption < 79) { - adaption = 79; - } - return adaption + ""; + Rectangle2D bounds = font.getStringBounds(chars, frc); + int pxLength = (int) Math.ceil(bounds.getWidth()); + return pxLength + 55 + ""; } } From e71edd1a7b62d00b0d7ceaf17d3981fd31bec0e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 18 Jan 2024 09:54:56 +0800 Subject: [PATCH 86/92] =?UTF-8?q?=E7=94=B3=E6=8A=A5=E8=A1=A8=E5=AF=B9?= =?UTF-8?q?=E6=AF=94=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GetDeclareTaxResultFeedbackResponse.java | 91 ++++++++++--------- .../impl/TaxDeclarationValueServiceImpl.java | 33 +++---- 2 files changed, 65 insertions(+), 59 deletions(-) diff --git a/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java b/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java index 9949402a4..43995fb0c 100644 --- a/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java +++ b/src/com/engine/salary/remote/tax/response/employee/GetDeclareTaxResultFeedbackResponse.java @@ -282,53 +282,73 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse { /** * 基本养老保险 必填:null */ - @SalaryTableColumn(text = "本期基本养老保险费", width = "10%", column = "jbylaobxf") - @ExcelHead(title = "本期基本养老保险费", dataIndex = "jbylaobxf") + @SalaryTableColumn(text = "基本养老保险费", width = "10%", column = "jbylaobxf") + @ExcelHead(title = "基本养老保险费", dataIndex = "jbylaobxf") private BigDecimal jbylaobxf; /** * 基本医疗保险 必填:null */ - @SalaryTableColumn(text = "本期基本医疗保险费", width = "10%", column = "jbylbxf") - @ExcelHead(title = "本期基本医疗保险费", dataIndex = "jbylbxf") + @SalaryTableColumn(text = "基本医疗保险费", width = "10%", column = "jbylbxf") + @ExcelHead(title = "基本医疗保险费", dataIndex = "jbylbxf") private BigDecimal jbylbxf; /** * 失业保险 必填:null */ - @SalaryTableColumn(text = "本期失业保险费", width = "10%", column = "sybxf") - @ExcelHead(title = "本期失业保险费", dataIndex = "sybxf") + @SalaryTableColumn(text = "失业保险费", width = "10%", column = "sybxf") + @ExcelHead(title = "失业保险费", dataIndex = "sybxf") private BigDecimal sybxf; /** * 住房公积金 必填:null */ - @SalaryTableColumn(text = "本期住房公积金", width = "10%", column = "zfgjj") - @ExcelHead(title = "本期住房公积金", dataIndex = "zfgjj") + @SalaryTableColumn(text = "住房公积金", width = "10%", column = "zfgjj") + @ExcelHead(title = "住房公积金", dataIndex = "zfgjj") private BigDecimal zfgjj; /** * 年金 必填:null */ - @SalaryTableColumn(text = "本期企业(职业)年金", width = "10%", column = "nj") - @ExcelHead(title = "本期企业(职业)年金", dataIndex = "nj") + @SalaryTableColumn(text = "企业(职业)年金", width = "10%", column = "nj") + @ExcelHead(title = "企业(职业)年金", dataIndex = "nj") private BigDecimal nj; /** * 商业健康保险 必填:null */ - @SalaryTableColumn(text = "本期商业健康保险费", width = "10%", column = "syjkbx") - @ExcelHead(title = "本期商业健康保险费", dataIndex = "syjkbx") + @SalaryTableColumn(text = "商业健康保险", width = "10%", column = "syjkbx") + @ExcelHead(title = "商业健康保险", dataIndex = "syjkbx") private BigDecimal syjkbx; /** * 税延养老保险 必填:null */ - @SalaryTableColumn(text = "本期税延养老保险费", width = "10%", column = "syylbx") - @ExcelHead(title = "本期税延养老保险费", dataIndex = "syylbx") + @SalaryTableColumn(text = "税延养老保险", width = "10%", column = "syylbx") + @ExcelHead(title = "税延养老保险", dataIndex = "syylbx") private BigDecimal syylbx; /** * 其他 必填:null 按法律规定可以在税前扣除的项目 */ - @SalaryTableColumn(text = "本期其他扣除(其他)", width = "10%", column = "qt") - @ExcelHead(title = "本期其他扣除(其他)", dataIndex = "qt") + @SalaryTableColumn(text = "其他", width = "10%", column = "qt") + @ExcelHead(title = "其他", dataIndex = "qt") private BigDecimal qt; + /** + * 准予扣除的捐赠额 必填:null + */ + @SalaryTableColumn(text = "准予扣除的捐赠额", width = "10%", column = "zykcjze") + @ExcelHead(title = "准予扣除的捐赠额", dataIndex = "zykcjze") + private BigDecimal zykcjze; + + /** + * 减免税额 必填:null + */ + @SalaryTableColumn(text = "减免税额", width = "10%", column = "jmse") + @ExcelHead(title = "减免税额", dataIndex = "jmse") + private BigDecimal jmse; + + /** + * 备注 必填:null + */ + @SalaryTableColumn(text = "备注", width = "10%", column = "bz") + @ExcelHead(title = "备注", dataIndex = "bz") + private String bz; /** * 累计收入额 必填:null @@ -360,14 +380,14 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse { /** * 累计子女教育支出 必填:null */ - @SalaryTableColumn(text = "累计子女教育支出扣除", width = "10%", column = "ljznjyzc") - @ExcelHead(title = "累计子女教育支出扣除", dataIndex = "ljznjyzc") + @SalaryTableColumn(text = "累计子女教育", width = "10%", column = "ljznjyzc") + @ExcelHead(title = "累计子女教育", dataIndex = "ljznjyzc") private BigDecimal ljznjyzc; /** * 累计继续教育支出 必填:null */ - @SalaryTableColumn(text = "累计继续教育支出扣除", width = "10%", column = "ljjxjyzc") - @ExcelHead(title = "累计继续教育支出扣除", dataIndex = "ljjxjyzc") + @SalaryTableColumn(text = "累计继续教育", width = "10%", column = "ljjxjyzc") + @ExcelHead(title = "累计继续教育", dataIndex = "ljjxjyzc") private BigDecimal ljjxjyzc; /** * 累计非学历继续教育支持 必填:null @@ -380,20 +400,20 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse { /** * 累计住房租金支出 必填:null */ - @SalaryTableColumn(text = "累计住房租金支出扣除", width = "10%", column = "ljzfzjzc") - @ExcelHead(title = "累计住房租金支出扣除", dataIndex = "ljzfzjzc") + @SalaryTableColumn(text = "累计住房租金", width = "10%", column = "ljzfzjzc") + @ExcelHead(title = "累计住房租金", dataIndex = "ljzfzjzc") private BigDecimal ljzfzjzc; /** * 累计房屋贷款支出 必填:null */ - @SalaryTableColumn(text = "累计房屋贷款支出扣除", width = "10%", column = "ljzfdklxzc") - @ExcelHead(title = "累计房屋贷款支出扣除", dataIndex = "ljzfdklxzc") + @SalaryTableColumn(text = "累计住房贷款利息", width = "10%", column = "ljzfdklxzc") + @ExcelHead(title = "累计住房贷款利息", dataIndex = "ljzfdklxzc") private BigDecimal ljzfdklxzc; /** * 累计赡养老人支出 必填:null */ - @SalaryTableColumn(text = "累计赡养老人支出扣除", width = "10%", column = "ljsylrzc") - @ExcelHead(title = "累计赡养老人支出扣除", dataIndex = "ljsylrzc") + @SalaryTableColumn(text = "累计赡养老人", width = "10%", column = "ljsylrzc") + @ExcelHead(title = "累计赡养老人", dataIndex = "ljsylrzc") private BigDecimal ljsylrzc; /** * 累计3岁以下婴幼儿照护支出 必填:null @@ -483,17 +503,10 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse { /** * 应补退税额 必填:null 应补退税额=累计应扣缴税额-累计已缴税额 */ - @SalaryTableColumn(text = "应补退税额", width = "10%", column = "ybtse") - @ExcelHead(title = "应补退税额", dataIndex = "ybtse") + @SalaryTableColumn(text = "应补(退)税额", width = "10%", column = "ybtse") + @ExcelHead(title = "应补(退)税额", dataIndex = "ybtse") private BigDecimal ybtse; - /** - * 备注 必填:null - */ - @SalaryTableColumn(text = "备注", width = "10%", column = "bz") - @ExcelHead(title = "备注", dataIndex = "bz") - private String bz; - /** * 子女教育支出 必填:null */ @@ -523,14 +536,6 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse { */ private BigDecimal yyezhzc; - /** - * 准予扣除的捐赠额 必填:null - */ - private BigDecimal zykcjze; - /** - * 减免税额 必填:null - */ - private BigDecimal jmse; /** * 减除费用 必填:null 正常工资薪金的减除费用。 对应保险营销员、证券经纪人的费用 diff --git a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java index 94d00a6b2..4c875c2ce 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java @@ -1,5 +1,6 @@ package com.engine.salary.service.impl; +import cn.hutool.core.util.NumberUtil; import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; @@ -38,9 +39,10 @@ import com.google.common.collect.Maps; import dm.jdbc.util.IdGenerator; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; +import weaver.general.Util; import weaver.hrm.User; +import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -422,14 +424,24 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar String no = local.getOrDefault("证件号码", "").toString(); Map online = onlineNoMap.get(no); - taxReportColumns.stream().forEach(col -> { + taxReportColumns.forEach(col -> { Map temp = Maps.newHashMap(); // 系统值 - Object localValue = local.getOrDefault(col.getReportColumnName(), ""); - // 线下值 - Object onlineValue = online.getOrDefault(col.getReportColumnName(), ""); + String localValue = Util.null2String(local.get(col.getReportColumnName())); + // 线上值 + String onlineValue = Util.null2String(online.get(col.getReportColumnName())); temp.put("local", localValue); temp.put("online", onlineValue); + if (NumberUtil.isNumber(localValue) && NumberUtil.isNumber(onlineValue)) { + BigDecimal diff = new BigDecimal(localValue).subtract(new BigDecimal(onlineValue)); + if (diff.compareTo(new BigDecimal(0)) != 0) { + temp.put("diff", diff); + } + } else { + if (!Objects.equals(localValue, onlineValue)) { + temp.put("diff", localValue); + } + } result.put(col.getReportColumnName(), temp); }); oneResultList.add(result); @@ -438,15 +450,4 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar resultList.put("data", oneResultList); return resultList; } - - public static void main(String[] args) { - String a = "姓名, 证件类型, 证件号码, 本期收入, 本期免税收入, 基本养老保险费 , 基本医疗保险费, 失业保险费, 住房公积金, 企业(职业)年金, 商业健康保险, 税延养老保险, 累计收入额, 累计免税收入 , 累计减除费用, 累计专项扣除, 累计子女教育支出扣除, 累计继续教育 累计住房租金, ,累计住房贷款利息 ,累计赡养老人 , 累计3岁以下婴幼儿照护, 累计个人养老金, 累计其他扣除, 累计准予扣除的捐赠,累计应纳税所得额 ,税率, 速算扣除数, 累计应纳税额, 累计减免税额, 累计应扣缴税额, 已缴税额, 备注, incomeCategory, 证件号码, 累计子女教育, id, 减免税额, jobNum, , employeeId, 其他, 应补(退)税额, 准予扣除的捐赠额 "; - String b = "姓名, 证件类型, 证件号码, 任职受雇日期, 离职日期, 本期收入, 本期免税收入, 本期基本养老保险费, 本期基本医疗保险费, 本期失业保险费, 本期住房公积金, 本期企业(职业)年金, 本期商业健康保险费, 本期税延养老保险费, 本期其他扣除(其他), 累计收入额, 累计免税收入, 累计减除费用, 累计专项扣除, 累计子女教育支出扣除, 累计继续教育支出扣除, 累计住房租金支出扣除, 累计房屋贷款支出扣除, 累计赡养老人支出扣除, 累计3岁以下婴幼儿照护, 累计个人养老金, 累计其他扣除, 累计准予扣除的捐赠, 累计应纳税所得额, 税率, 速算扣除数, 累计应纳税额, 累计减免税额, 累计应扣缴税额, 累计已缴税额, 已缴税额, 累计专项附加扣除额, 应补退税额, 备注"; - - List c = Arrays.stream(StringUtils.split(a, ",")).sorted(String::compareTo).collect(Collectors.toList()); - List d = Arrays.stream(StringUtils.split(b, ",")).sorted(String::compareTo).collect(Collectors.toList()); - - System.out.println(c); - System.out.println(d); - } } From 858ac8f00564a022227aee5a2299f2ab83fe1021 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 18 Jan 2024 11:44:57 +0800 Subject: [PATCH 87/92] =?UTF-8?q?=E7=94=B3=E6=8A=A5=E8=A1=A8=E5=AF=B9?= =?UTF-8?q?=E6=AF=94=E5=8A=9F=E8=83=BDsql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202312190103.sql | 65 +++++++++++++++++++ resource/sqlupgrade/GS/sql202312190103.sql | 65 +++++++++++++++++++ resource/sqlupgrade/JC/sql202312190103.sql | 65 +++++++++++++++++++ resource/sqlupgrade/Mysql/sql202312190103.sql | 47 ++++++++++++++ .../sqlupgrade/Oracle/sql202309050203.sql | 23 ------- .../sqlupgrade/Oracle/sql202312190103.sql | 64 ++++++++++++++++++ resource/sqlupgrade/PG/sql202312190103.sql | 47 ++++++++++++++ .../sqlupgrade/SQLServer/sql202312190103.sql | 64 ++++++++++++++++++ resource/sqlupgrade/ST/sql202312190103.sql | 65 +++++++++++++++++++ 9 files changed, 482 insertions(+), 23 deletions(-) create mode 100644 resource/sqlupgrade/DM/sql202312190103.sql create mode 100644 resource/sqlupgrade/GS/sql202312190103.sql create mode 100644 resource/sqlupgrade/JC/sql202312190103.sql create mode 100644 resource/sqlupgrade/Mysql/sql202312190103.sql delete mode 100644 resource/sqlupgrade/Oracle/sql202309050203.sql create mode 100644 resource/sqlupgrade/Oracle/sql202312190103.sql create mode 100644 resource/sqlupgrade/PG/sql202312190103.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202312190103.sql create mode 100644 resource/sqlupgrade/ST/sql202312190103.sql diff --git a/resource/sqlupgrade/DM/sql202312190103.sql b/resource/sqlupgrade/DM/sql202312190103.sql new file mode 100644 index 000000000..659ca7b6d --- /dev/null +++ b/resource/sqlupgrade/DM/sql202312190103.sql @@ -0,0 +1,65 @@ +ALTER TABLE hrsa_tax_report_column ADD contrast_type int NULL; +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158174, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ', 'addUpIncome', 'number', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158175, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ˰', 'addUpTaxFreeIncome', 'number', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158176, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼƼ', 'addUpSubtraction', 'number', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158177, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼר۳', 'addUpSpecialDeduction', 'number', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158184, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ۳', 'addUpOtherDeduction', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158185, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ׼۳ľ', 'addUpAllowedDonation', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158186, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼӦ˰ö', 'addUpTaxableIncome', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158187, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '˰', 'taxRate', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158188, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '۳', 'quickDeductionFactor', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158189, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼӦ˰', 'addUpTaxPayable', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158190, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼƼ˰', 'addUpTaxDeduction', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158191, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼӦ۽˰', 'addUpTaxPayable', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158192, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼѽ˰', 'addUpAdvanceTax', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158193, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'Ӧ()˰', 'refundedOrSupplementedTax', '', NULL, NULL,1); +/ + +update hrsa_tax_report_column set report_column_name = 'ۼ3Ӥ׶ջ' where report_column_name = 'ۼ3Ӥ׶ջ֧'; +/ + +update hrsa_tax_report_column set contrast_type = 0; +/ + diff --git a/resource/sqlupgrade/GS/sql202312190103.sql b/resource/sqlupgrade/GS/sql202312190103.sql new file mode 100644 index 000000000..659ca7b6d --- /dev/null +++ b/resource/sqlupgrade/GS/sql202312190103.sql @@ -0,0 +1,65 @@ +ALTER TABLE hrsa_tax_report_column ADD contrast_type int NULL; +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158174, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ', 'addUpIncome', 'number', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158175, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ˰', 'addUpTaxFreeIncome', 'number', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158176, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼƼ', 'addUpSubtraction', 'number', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158177, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼר۳', 'addUpSpecialDeduction', 'number', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158184, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ۳', 'addUpOtherDeduction', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158185, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ׼۳ľ', 'addUpAllowedDonation', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158186, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼӦ˰ö', 'addUpTaxableIncome', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158187, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '˰', 'taxRate', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158188, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '۳', 'quickDeductionFactor', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158189, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼӦ˰', 'addUpTaxPayable', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158190, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼƼ˰', 'addUpTaxDeduction', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158191, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼӦ۽˰', 'addUpTaxPayable', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158192, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼѽ˰', 'addUpAdvanceTax', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158193, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'Ӧ()˰', 'refundedOrSupplementedTax', '', NULL, NULL,1); +/ + +update hrsa_tax_report_column set report_column_name = 'ۼ3Ӥ׶ջ' where report_column_name = 'ۼ3Ӥ׶ջ֧'; +/ + +update hrsa_tax_report_column set contrast_type = 0; +/ + diff --git a/resource/sqlupgrade/JC/sql202312190103.sql b/resource/sqlupgrade/JC/sql202312190103.sql new file mode 100644 index 000000000..659ca7b6d --- /dev/null +++ b/resource/sqlupgrade/JC/sql202312190103.sql @@ -0,0 +1,65 @@ +ALTER TABLE hrsa_tax_report_column ADD contrast_type int NULL; +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158174, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ', 'addUpIncome', 'number', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158175, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ˰', 'addUpTaxFreeIncome', 'number', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158176, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼƼ', 'addUpSubtraction', 'number', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158177, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼר۳', 'addUpSpecialDeduction', 'number', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158184, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ۳', 'addUpOtherDeduction', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158185, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ׼۳ľ', 'addUpAllowedDonation', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158186, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼӦ˰ö', 'addUpTaxableIncome', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158187, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '˰', 'taxRate', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158188, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '۳', 'quickDeductionFactor', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158189, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼӦ˰', 'addUpTaxPayable', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158190, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼƼ˰', 'addUpTaxDeduction', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158191, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼӦ۽˰', 'addUpTaxPayable', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158192, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼѽ˰', 'addUpAdvanceTax', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158193, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'Ӧ()˰', 'refundedOrSupplementedTax', '', NULL, NULL,1); +/ + +update hrsa_tax_report_column set report_column_name = 'ۼ3Ӥ׶ջ' where report_column_name = 'ۼ3Ӥ׶ջ֧'; +/ + +update hrsa_tax_report_column set contrast_type = 0; +/ + diff --git a/resource/sqlupgrade/Mysql/sql202312190103.sql b/resource/sqlupgrade/Mysql/sql202312190103.sql new file mode 100644 index 000000000..9cc0240c6 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202312190103.sql @@ -0,0 +1,47 @@ +ALTER TABLE hrsa_tax_report_column ADD COLUMN contrast_type int(0) NULL; + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158174, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ', 'addUpIncome', 'number', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158175, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ˰', 'addUpTaxFreeIncome', 'number', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158176, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼƼ', 'addUpSubtraction', 'number', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158177, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼר۳', 'addUpSpecialDeduction', 'number', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158184, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ۳', 'addUpOtherDeduction', '', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158185, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ׼۳ľ', 'addUpAllowedDonation', '', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158186, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼӦ˰ö', 'addUpTaxableIncome', '', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158187, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '˰', 'taxRate', '', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158188, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '۳', 'quickDeductionFactor', '', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158189, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼӦ˰', 'addUpTaxPayable', '', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158190, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼƼ˰', 'addUpTaxDeduction', '', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158191, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼӦ۽˰', 'addUpTaxPayable', '', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158192, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼѽ˰', 'addUpAdvanceTax', '', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158193, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'Ӧ()˰', 'refundedOrSupplementedTax', '', NULL, NULL,1); + +update hrsa_tax_report_column set report_column_name = 'ۼ3Ӥ׶ջ' where report_column_name = 'ۼ3Ӥ׶ջ֧'; + +update hrsa_tax_report_column set contrast_type = 0; \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202309050203.sql b/resource/sqlupgrade/Oracle/sql202309050203.sql deleted file mode 100644 index 3caa7ac50..000000000 --- a/resource/sqlupgrade/Oracle/sql202309050203.sql +++ /dev/null @@ -1,23 +0,0 @@ -alter table hrsa_add_up_situation add add_up_taxable_income varchar2(255) -/ -alter table hrsa_add_up_situation add actual_add_up_advance_tax varchar2(255) -/ -alter table hrsa_add_up_situation add tax_adjustment varchar2(255) -/ -INSERT INTO hrsa_salary_sob_default_item(id, income_category, sys_salary_item_id, can_edit, can_delete, creator, create_time, update_time, delete_type, tenant_key, sob_default_item_group_id, sorted_index) VALUES (706066600446312885, 1, 674916065864646661, 1, 0, 0, to_date('2022-05-10 16:03:02','yyyy-MM-dd HH24:mi:ss'), to_date('2022-05-10 16:03:02','yyyy-MM-dd HH24:mi:ss'), 0, 'all_teams', 703433961629614119, 5) -/ -INSERT INTO hrsa_salary_sob_default_item(id, income_category, sys_salary_item_id, can_edit, can_delete, creator, create_time, update_time, delete_type, tenant_key, sob_default_item_group_id, sorted_index) VALUES (706066600446312886, 1, 674916065864646658, 1, 0, 0, to_date('2022-05-10 16:03:02','yyyy-MM-dd HH24:mi:ss'), to_date('2022-05-10 16:03:02','yyyy-MM-dd HH24:mi:ss'), 0, 'all_teams', 703433961629614119, 6) -/ - -INSERT INTO hrsa_formula(id, name, description, module, use_for, reference_type, return_type, validate_type, extend_param, formula, formulaRunScript, creator, delete_type, create_time, update_time) VALUES (1693896072589, 'ǰۼƼ˰ϼ', 'ע', 'salary', 'salaryitem', 'formula', 'number', 'number', '{"isCustomFunction":"0","sqlReturnKey":"","openDecrypt":"0","datasource":{"datasourceId":""}}', '{нĿ.£Σ˰}+{ۼ.ۼƼ˰}', 'salaryItem_taxDeduction+addUpSituation_addUpTaxSavings', 27, 0, to_date('2022-05-10 16:03:02','yyyy-MM-dd HH24:mi:ss'), to_date('2022-05-10 16:03:02','yyyy-MM-dd HH24:mi:ss')) -/ -INSERT INTO hrsa_formula_var(id, name, formula_id, field_id, field_name, field_type, source, order_index, creator, delete_type, create_time, update_time) VALUES (1693896072606, '£Σ˰', 1693896072589, 'salaryItem_taxDeduction', '{нĿ.£Σ˰}', 'number', 'salaryItem', 0, 27, 0, to_date('2022-05-10 16:03:02','yyyy-MM-dd HH24:mi:ss'), to_date('2022-05-10 16:03:02','yyyy-MM-dd HH24:mi:ss')) -/ -INSERT INTO hrsa_formula_var(id, name, formula_id, field_id, field_name, field_type, source, order_index, creator, delete_type, create_time, update_time) VALUES (1693896072611, 'ۼƼ˰', 1693896072589, 'addUpSituation_addUpTaxSavings', '{ۼ.ۼƼ˰}', 'number', 'addUpSituation', 1, 27, 0, to_date('2022-05-10 16:03:02','yyyy-MM-dd HH24:mi:ss'), to_date('2022-05-10 16:03:02','yyyy-MM-dd HH24:mi:ss')) -/ - -update hrsa_sys_salary_item set value_type = 2 ,formula_id =1693896072589 where id = 674916065864646658 -/ - -update hrsa_salary_item set value_type =2 ,formula_id =1693896072589 where sys_salary_item_id = 674916065864646658 -/ \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202312190103.sql b/resource/sqlupgrade/Oracle/sql202312190103.sql new file mode 100644 index 000000000..14ad11e18 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202312190103.sql @@ -0,0 +1,64 @@ +ALTER TABLE hrsa_tax_report_column ADD contrast_type int NULL +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158174, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ', 'addUpIncome', 'number', NULL, NULL,1) +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158175, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ˰', 'addUpTaxFreeIncome', 'number', NULL, NULL,1) +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158176, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼƼ', 'addUpSubtraction', 'number', NULL, NULL,1) +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158177, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼר۳', 'addUpSpecialDeduction', 'number', NULL, NULL,1) +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158184, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ۳', 'addUpOtherDeduction', '', NULL, NULL,1) +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158185, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ׼۳ľ', 'addUpAllowedDonation', '', NULL, NULL,1) +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158186, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼӦ˰ö', 'addUpTaxableIncome', '', NULL, NULL,1) +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158187, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '˰', 'taxRate', '', NULL, NULL,1) +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158188, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '۳', 'quickDeductionFactor', '', NULL, NULL,1) +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158189, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼӦ˰', 'addUpTaxPayable', '', NULL, NULL,1) +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158190, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼƼ˰', 'addUpTaxDeduction', '', NULL, NULL,1) +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158191, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼӦ۽˰', 'addUpTaxPayable', '', NULL, NULL,1) +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158192, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼѽ˰', 'addUpAdvanceTax', '', NULL, NULL,1) +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158193, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'Ӧ()˰', 'refundedOrSupplementedTax', '', NULL, NULL,1) +/ + +update hrsa_tax_report_column set report_column_name = 'ۼ3Ӥ׶ջ' where report_column_name = 'ۼ3Ӥ׶ջ֧' +/ + +update hrsa_tax_report_column set contrast_type = 0 +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202312190103.sql b/resource/sqlupgrade/PG/sql202312190103.sql new file mode 100644 index 000000000..f999dbbc3 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202312190103.sql @@ -0,0 +1,47 @@ +ALTER TABLE hrsa_tax_report_column ADD COLUMN contrast_type int NULL; + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158174, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ', 'addUpIncome', 'number', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158175, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ˰', 'addUpTaxFreeIncome', 'number', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158176, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼƼ', 'addUpSubtraction', 'number', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158177, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼר۳', 'addUpSpecialDeduction', 'number', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158184, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ۳', 'addUpOtherDeduction', '', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158185, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ׼۳ľ', 'addUpAllowedDonation', '', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158186, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼӦ˰ö', 'addUpTaxableIncome', '', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158187, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '˰', 'taxRate', '', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158188, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '۳', 'quickDeductionFactor', '', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158189, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼӦ˰', 'addUpTaxPayable', '', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158190, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼƼ˰', 'addUpTaxDeduction', '', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158191, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼӦ۽˰', 'addUpTaxPayable', '', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158192, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼѽ˰', 'addUpAdvanceTax', '', NULL, NULL,1); + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158193, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'Ӧ()˰', 'refundedOrSupplementedTax', '', NULL, NULL,1); + +update hrsa_tax_report_column set report_column_name = 'ۼ3Ӥ׶ջ' where report_column_name = 'ۼ3Ӥ׶ջ֧'; + +update hrsa_tax_report_column set contrast_type = 0; \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202312190103.sql b/resource/sqlupgrade/SQLServer/sql202312190103.sql new file mode 100644 index 000000000..1a0cd83fb --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202312190103.sql @@ -0,0 +1,64 @@ +ALTER TABLE hrsa_tax_report_column ADD contrast_type int NULL +GO + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158174, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ', 'addUpIncome', 'number', NULL, NULL,1) +GO + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158175, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ˰', 'addUpTaxFreeIncome', 'number', NULL, NULL,1) +GO + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158176, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼƼ', 'addUpSubtraction', 'number', NULL, NULL,1) +GO + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158177, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼר۳', 'addUpSpecialDeduction', 'number', NULL, NULL,1) +GO + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158184, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ۳', 'addUpOtherDeduction', '', NULL, NULL,1) +GO + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158185, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ׼۳ľ', 'addUpAllowedDonation', '', NULL, NULL,1) +GO + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158186, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼӦ˰ö', 'addUpTaxableIncome', '', NULL, NULL,1) +GO + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158187, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '˰', 'taxRate', '', NULL, NULL,1) +GO + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158188, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '۳', 'quickDeductionFactor', '', NULL, NULL,1) +GO + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158189, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼӦ˰', 'addUpTaxPayable', '', NULL, NULL,1) +GO + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158190, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼƼ˰', 'addUpTaxDeduction', '', NULL, NULL,1) +GO + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158191, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼӦ۽˰', 'addUpTaxPayable', '', NULL, NULL,1) +GO + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158192, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼѽ˰', 'addUpAdvanceTax', '', NULL, NULL,1) +GO + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158193, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'Ӧ()˰', 'refundedOrSupplementedTax', '', NULL, NULL,1) +GO + +update hrsa_tax_report_column set report_column_name = 'ۼ3Ӥ׶ջ' where report_column_name = 'ۼ3Ӥ׶ջ֧' +GO + +update hrsa_tax_report_column set contrast_type = 0 +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202312190103.sql b/resource/sqlupgrade/ST/sql202312190103.sql new file mode 100644 index 000000000..659ca7b6d --- /dev/null +++ b/resource/sqlupgrade/ST/sql202312190103.sql @@ -0,0 +1,65 @@ +ALTER TABLE hrsa_tax_report_column ADD contrast_type int NULL; +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158174, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ', 'addUpIncome', 'number', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158175, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ˰', 'addUpTaxFreeIncome', 'number', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158176, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼƼ', 'addUpSubtraction', 'number', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158177, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼר۳', 'addUpSpecialDeduction', 'number', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158184, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ۳', 'addUpOtherDeduction', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158185, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼ׼۳ľ', 'addUpAllowedDonation', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158186, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼӦ˰ö', 'addUpTaxableIncome', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158187, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '˰', 'taxRate', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158188, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '۳', 'quickDeductionFactor', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158189, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼӦ˰', 'addUpTaxPayable', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158190, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼƼ˰', 'addUpTaxDeduction', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158191, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼӦ۽˰', 'addUpTaxPayable', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158192, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'ۼѽ˰', 'addUpAdvanceTax', '', NULL, NULL,1); +/ + +INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES +(805915446042158193, NULL, NULL, NULL, 0, 'all_teams', '1', '1', 'Ӧ()˰', 'refundedOrSupplementedTax', '', NULL, NULL,1); +/ + +update hrsa_tax_report_column set report_column_name = 'ۼ3Ӥ׶ջ' where report_column_name = 'ۼ3Ӥ׶ջ֧'; +/ + +update hrsa_tax_report_column set contrast_type = 0; +/ + From a168aeef535743a23904c2687674d3478bf1aa13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 22 Jan 2024 14:15:36 +0800 Subject: [PATCH 88/92] =?UTF-8?q?=E5=AF=B9=E6=AF=94=E7=BA=BF=E4=B8=8B?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=EF=BC=8C=E5=88=86=E9=A1=B5=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/ContrastQueryParam.java | 22 +++++ .../service/TaxDeclarationValueService.java | 5 +- .../impl/TaxDeclarationValueServiceImpl.java | 89 ++++--------------- .../salary/web/TaxDeclarationController.java | 8 +- .../wrapper/TaxDeclareRecordWrapper.java | 6 +- 5 files changed, 47 insertions(+), 83 deletions(-) create mode 100644 src/com/engine/salary/entity/taxdeclaration/param/ContrastQueryParam.java diff --git a/src/com/engine/salary/entity/taxdeclaration/param/ContrastQueryParam.java b/src/com/engine/salary/entity/taxdeclaration/param/ContrastQueryParam.java new file mode 100644 index 000000000..95a4861af --- /dev/null +++ b/src/com/engine/salary/entity/taxdeclaration/param/ContrastQueryParam.java @@ -0,0 +1,22 @@ +package com.engine.salary.entity.taxdeclaration.param; + +import com.engine.salary.common.BaseQueryParam; +import lombok.Data; + +/** + * 对比查询 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +public class ContrastQueryParam extends BaseQueryParam { + + /** + * 申报表id + */ + private Long taxDeclarationId; + +} diff --git a/src/com/engine/salary/service/TaxDeclarationValueService.java b/src/com/engine/salary/service/TaxDeclarationValueService.java index bee04130e..aa2758d20 100644 --- a/src/com/engine/salary/service/TaxDeclarationValueService.java +++ b/src/com/engine/salary/service/TaxDeclarationValueService.java @@ -1,6 +1,7 @@ package com.engine.salary.service; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationValueListDTO; +import com.engine.salary.entity.taxdeclaration.param.ContrastQueryParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationValueListQueryParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclareRecordDetailSaveParam; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationPO; @@ -89,9 +90,9 @@ public interface TaxDeclarationValueService { /** * 对比 - * @param taxDeclareRecordId + * @param param */ - Map contrast(Long taxDeclareRecordId); + Map contrast(ContrastQueryParam param); } diff --git a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java index 4c875c2ce..fb671f6a5 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java @@ -11,6 +11,7 @@ import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; import com.engine.salary.entity.extemp.po.ExtEmpPO; import com.engine.salary.entity.taxdeclaration.bo.TaxDeclarationValueList; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationValueListDTO; +import com.engine.salary.entity.taxdeclaration.param.ContrastQueryParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationValueListQueryParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclareRecordDetailSaveParam; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationPO; @@ -120,26 +121,18 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar // 查询报送的人员 List employeeDeclares = getEmployeeDeclareService(user).listByTaxCycleAndTaxAgentIdAndEmployeeIds(taxDeclaration.getTaxCycle(), taxDeclaration.getTaxAgentId(), employeeIds); // 查询人员信息 - List simpleEmployeeIds = taxDeclarationValues.stream() - .filter(taxDeclarationValue -> taxDeclarationValue.getEmployeeType() == null || Objects.equals(taxDeclarationValue.getEmployeeType(), EmployeeTypeEnum.ORGANIZATION.getValue())) - .map(TaxDeclarationValuePO::getEmployeeId) - .distinct() - .collect(Collectors.toList()); + List simpleEmployeeIds = taxDeclarationValues.stream().filter(taxDeclarationValue -> taxDeclarationValue.getEmployeeType() == null || Objects.equals(taxDeclarationValue.getEmployeeType(), EmployeeTypeEnum.ORGANIZATION.getValue())).map(TaxDeclarationValuePO::getEmployeeId).distinct().collect(Collectors.toList()); List simpleEmployees = getSalaryEmployeeService(user).getEmployeeByIds(simpleEmployeeIds); // 查询人员薪资(身份证号码等) List simpleUserInfos = getSalaryEmployeeService(user).getEmployeeByIds(simpleEmployeeIds); // 查询外部人员 - List extEmployeeIds = taxDeclarationValues.stream() - .filter(taxDeclarationValue -> Objects.equals(taxDeclarationValue.getEmployeeType(), EmployeeTypeEnum.EXT_EMPLOYEE.getValue())) - .map(TaxDeclarationValuePO::getEmployeeId) - .collect(Collectors.toList()); + List extEmployeeIds = taxDeclarationValues.stream().filter(taxDeclarationValue -> Objects.equals(taxDeclarationValue.getEmployeeType(), EmployeeTypeEnum.EXT_EMPLOYEE.getValue())).map(TaxDeclarationValuePO::getEmployeeId).collect(Collectors.toList()); List extEmployees = getExtEmpService(user).getExtEmpByIds(extEmployeeIds); // 列表表头 List weaTableColumns = TaxDeclarationValueList.buildTableColumns(taxReportColumns); // 列表数据 - List> data = TaxDeclarationValueList.buildTableData(incomeCategoryEnum, taxReportColumns, taxDeclarationValues, - employeeDeclares, simpleEmployees, simpleUserInfos, extEmployees, false); + List> data = TaxDeclarationValueList.buildTableData(incomeCategoryEnum, taxReportColumns, taxDeclarationValues, employeeDeclares, simpleEmployees, simpleUserInfos, extEmployees, false); return new TaxDeclarationValueListDTO().setColumns(weaTableColumns).setData(data); } @@ -148,8 +141,7 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar public void batchSave(List taxDeclarationValues) { if (CollectionUtils.isNotEmpty(taxDeclarationValues)) { // 加密 - taxDeclarationValues.forEach(taxDeclarationValue -> - taxDeclarationValue.setResultValueJson(JsonUtil.toJsonString(taxDeclarationValue.getResultValue()))); + taxDeclarationValues.forEach(taxDeclarationValue -> taxDeclarationValue.setResultValueJson(JsonUtil.toJsonString(taxDeclarationValue.getResultValue()))); taxDeclarationValues = encryptUtil.encryptList(taxDeclarationValues, TaxDeclarationValuePO.class); // 分批保存 List> partition = Lists.partition(taxDeclarationValues, 100); @@ -163,8 +155,7 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar public void batchEdit(List taxDeclarationValues) { if (CollectionUtils.isNotEmpty(taxDeclarationValues)) { // 加密 - taxDeclarationValues.forEach(taxDeclarationValue -> - taxDeclarationValue.setResultValueJson(JsonUtil.toJsonString(taxDeclarationValue.getResultValue()))); + taxDeclarationValues.forEach(taxDeclarationValue -> taxDeclarationValue.setResultValueJson(JsonUtil.toJsonString(taxDeclarationValue.getResultValue()))); taxDeclarationValues = encryptUtil.encryptList(taxDeclarationValues, TaxDeclarationValuePO.class); // 分批保存 List> partition = Lists.partition(taxDeclarationValues, 100); @@ -187,21 +178,7 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar throw new SalaryRunTimeException("个税申报记录不存在!"); } - TaxDeclarationValuePO po = TaxDeclarationValuePO.builder() - .id(IdGenerator.generate()) - .taxDeclarationId(param.getTaxDeclarationId()) - .taxDeclareRecordId(taxDeclareRecordId) - .employeeId(param.getEmployeeId()) - .employeeType(param.getEmployeeType()) - .resultValue(param.getTaxReportColumnValues()) - .resultValueJson(JsonUtil.toJsonString(param.getTaxReportColumnValues())) - .createTime(new Date()) - .updateTime(new Date()) - .source(SourceEnum.ADD.getValue()) - .creator((long) user.getUID()) - .deleteType(0) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .build(); + TaxDeclarationValuePO po = TaxDeclarationValuePO.builder().id(IdGenerator.generate()).taxDeclarationId(param.getTaxDeclarationId()).taxDeclareRecordId(taxDeclareRecordId).employeeId(param.getEmployeeId()).employeeType(param.getEmployeeType()).resultValue(param.getTaxReportColumnValues()).resultValueJson(JsonUtil.toJsonString(param.getTaxReportColumnValues())).createTime(new Date()).updateTime(new Date()).source(SourceEnum.ADD.getValue()).creator((long) user.getUID()).deleteType(0).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).build(); encryptUtil.encrypt(po, TaxDeclarationValuePO.class); getTaxDeclarationValueMapper().insertIgnoreNull(po); @@ -293,52 +270,24 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar } taxDeclarationPO = list.get(0); } else { - taxDeclarationPO = TaxDeclarationPO - .builder() - .id(IdGenerator.generate()) - .taxDeclareRecordId(taxDeclareRecordId) - .incomeCategory(IncomeCategoryEnum.WAGES_AND_SALARIES.getValue()) - .taxAgentId(taxDeclareRecord.getTaxAgentId()) - .salaryMonth(taxDeclareRecord.getSalaryMonth()) - .taxCycle(taxDeclareRecord.getTaxCycle()) - .description(taxDeclareRecord.getRemark()) - .controlView(0) - .creator((long) user.getUID()) - .createTime(now) - .updateTime(now) - .deleteType(DeleteTypeEnum.NOT_DELETED.getValue()) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .build(); + taxDeclarationPO = TaxDeclarationPO.builder().id(IdGenerator.generate()).taxDeclareRecordId(taxDeclareRecordId).incomeCategory(IncomeCategoryEnum.WAGES_AND_SALARIES.getValue()).taxAgentId(taxDeclareRecord.getTaxAgentId()).salaryMonth(taxDeclareRecord.getSalaryMonth()).taxCycle(taxDeclareRecord.getTaxCycle()).description(taxDeclareRecord.getRemark()).controlView(0).creator((long) user.getUID()).createTime(now).updateTime(now).deleteType(DeleteTypeEnum.NOT_DELETED.getValue()).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).build(); List taxList = new ArrayList<>(); getTaxDeclarationService(user).saveBatch(taxList); } //组装数据,自动补足 List autoAddValuePOs = autoAddIds.stream().map((empId -> { - TaxDeclarationValuePO taxDeclarationValue = TaxDeclarationValuePO.builder() - .id(IdGenerator.generate()) - .taxDeclareRecordId(taxDeclarationPO.getTaxDeclareRecordId()) - .taxDeclarationId(taxDeclarationPO.getId()) - .employeeType(0) - .employeeId(empId) - .resultValue(valueMap) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .creator((long) user.getUID()) - .deleteType(DeleteTypeEnum.NOT_DELETED.getValue()) - .createTime(now) - .updateTime(now) - .source(SourceEnum.AUTO.getValue()) - .build(); + TaxDeclarationValuePO taxDeclarationValue = TaxDeclarationValuePO.builder().id(IdGenerator.generate()).taxDeclareRecordId(taxDeclarationPO.getTaxDeclareRecordId()).taxDeclarationId(taxDeclarationPO.getId()).employeeType(0).employeeId(empId).resultValue(valueMap).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).creator((long) user.getUID()).deleteType(DeleteTypeEnum.NOT_DELETED.getValue()).createTime(now).updateTime(now).source(SourceEnum.AUTO.getValue()).build(); return taxDeclarationValue; })).collect(Collectors.toList()); batchSave(autoAddValuePOs); } @Override - public Map contrast(Long taxDeclarationId) { + public Map contrast(ContrastQueryParam param) { - TaxDeclarationPO taxDeclaration = getTaxDeclarationService(user).getById(taxDeclarationId); + TaxDeclarationPO taxDeclaration = getTaxDeclarationService(user).getById(param.getTaxDeclarationId()); if (taxDeclaration == null) { throw new SalaryRunTimeException("无申报表"); } @@ -369,24 +318,16 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar // 查询报送的人员 List employeeDeclares = getEmployeeDeclareService(user).listByTaxCycleAndTaxAgentIdAndEmployeeIds(taxDeclaration.getTaxCycle(), taxDeclaration.getTaxAgentId(), employeeIds); // 查询人员信息 - List simpleEmployeeIds = taxDeclarationValues.stream() - .filter(taxDeclarationValue -> taxDeclarationValue.getEmployeeType() == null || Objects.equals(taxDeclarationValue.getEmployeeType(), EmployeeTypeEnum.ORGANIZATION.getValue())) - .map(TaxDeclarationValuePO::getEmployeeId) - .distinct() - .collect(Collectors.toList()); + List simpleEmployeeIds = taxDeclarationValues.stream().filter(taxDeclarationValue -> taxDeclarationValue.getEmployeeType() == null || Objects.equals(taxDeclarationValue.getEmployeeType(), EmployeeTypeEnum.ORGANIZATION.getValue())).map(TaxDeclarationValuePO::getEmployeeId).distinct().collect(Collectors.toList()); List simpleEmployees = getSalaryEmployeeService(user).getEmployeeByIds(simpleEmployeeIds); // 查询人员薪资(身份证号码等) List simpleUserInfos = getSalaryEmployeeService(user).getEmployeeByIds(simpleEmployeeIds); // 查询外部人员 - List extEmployeeIds = taxDeclarationValues.stream() - .filter(taxDeclarationValue -> Objects.equals(taxDeclarationValue.getEmployeeType(), EmployeeTypeEnum.EXT_EMPLOYEE.getValue())) - .map(TaxDeclarationValuePO::getEmployeeId) - .collect(Collectors.toList()); + List extEmployeeIds = taxDeclarationValues.stream().filter(taxDeclarationValue -> Objects.equals(taxDeclarationValue.getEmployeeType(), EmployeeTypeEnum.EXT_EMPLOYEE.getValue())).map(TaxDeclarationValuePO::getEmployeeId).collect(Collectors.toList()); List extEmployees = getExtEmpService(user).getExtEmpByIds(extEmployeeIds); // 列表数据 - List> localList = TaxDeclarationValueList.buildTableData(incomeCategoryEnum, taxReportColumns, taxDeclarationValues, - employeeDeclares, simpleEmployees, simpleUserInfos, extEmployees, true); + List> localList = TaxDeclarationValueList.buildTableData(incomeCategoryEnum, taxReportColumns, taxDeclarationValues, employeeDeclares, simpleEmployees, simpleUserInfos, extEmployees, true); Map> localMap = new HashMap<>(); @@ -447,7 +388,7 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar oneResultList.add(result); } resultList.put("columns", columns); - resultList.put("data", oneResultList); + resultList.put("pageInfo", SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), oneResultList)); return resultList; } } diff --git a/src/com/engine/salary/web/TaxDeclarationController.java b/src/com/engine/salary/web/TaxDeclarationController.java index c028ca7e2..9569e60cb 100644 --- a/src/com/engine/salary/web/TaxDeclarationController.java +++ b/src/com/engine/salary/web/TaxDeclarationController.java @@ -285,15 +285,15 @@ public class TaxDeclarationController { * * @param request * @param response - * @param taxDeclarationId + * @param ContrastQueryParam * @return */ - @GET + @POST @Path("/contrast") @Produces(MediaType.APPLICATION_JSON) - public String contrast(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam(value = "taxDeclarationId") Long taxDeclarationId) { + public String contrast(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody ContrastQueryParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult>(user).run(getTaxDeclareRecordWrapper(user)::contrast, taxDeclarationId); + return new ResponseResult>(user).run(getTaxDeclareRecordWrapper(user)::contrast, param); } diff --git a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java index a1dfa6579..26391d5b0 100644 --- a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java +++ b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java @@ -640,10 +640,10 @@ public class TaxDeclareRecordWrapper extends Service { /** * 对比算税结果 * - * @param id + * @param param */ - public Map contrast(Long id) { - return getTaxDeclarationValueService(user).contrast(id); + public Map contrast(ContrastQueryParam param) { + return getTaxDeclarationValueService(user).contrast(param); } /** From ce5c106845662fbcef51787006acb40239137f21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 23 Jan 2024 11:23:50 +0800 Subject: [PATCH 89/92] =?UTF-8?q?=E5=AF=B9=E6=AF=94=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=AD=9B=E9=80=89=E6=98=AF=E5=90=A6=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E5=B7=AE=E5=BC=82=E4=BA=BA=E5=91=98=E5=92=8C=E5=B7=AE?= =?UTF-8?q?=E5=BC=82=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../taxdeclaration/dto/ContrastListDTO.java | 20 +++++++++++ .../param/ContrastQueryParam.java | 9 +++++ .../impl/TaxDeclarationValueServiceImpl.java | 36 +++++++++++++------ .../salary/web/TaxDeclarationController.java | 2 +- 4 files changed, 55 insertions(+), 12 deletions(-) create mode 100644 src/com/engine/salary/entity/taxdeclaration/dto/ContrastListDTO.java diff --git a/src/com/engine/salary/entity/taxdeclaration/dto/ContrastListDTO.java b/src/com/engine/salary/entity/taxdeclaration/dto/ContrastListDTO.java new file mode 100644 index 000000000..0d8fa7f8b --- /dev/null +++ b/src/com/engine/salary/entity/taxdeclaration/dto/ContrastListDTO.java @@ -0,0 +1,20 @@ +package com.engine.salary.entity.taxdeclaration.dto; + +import lombok.Data; + +/** + * 个税申报表详情列表(劳务报酬所得) + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +public class ContrastListDTO { + private String local; + + private String online; + + private Object diff; +} diff --git a/src/com/engine/salary/entity/taxdeclaration/param/ContrastQueryParam.java b/src/com/engine/salary/entity/taxdeclaration/param/ContrastQueryParam.java index 95a4861af..e1a24429e 100644 --- a/src/com/engine/salary/entity/taxdeclaration/param/ContrastQueryParam.java +++ b/src/com/engine/salary/entity/taxdeclaration/param/ContrastQueryParam.java @@ -19,4 +19,13 @@ public class ContrastQueryParam extends BaseQueryParam { */ private Long taxDeclarationId; + /** + * 是否只显示差异人员 + */ + private boolean onlyShowDiffEmp; + + /** + * 是否只显示差异项 + */ + private boolean onlyShowDiffItem; } diff --git a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java index fb671f6a5..76743eb72 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java @@ -10,6 +10,7 @@ import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; import com.engine.salary.entity.extemp.po.ExtEmpPO; import com.engine.salary.entity.taxdeclaration.bo.TaxDeclarationValueList; +import com.engine.salary.entity.taxdeclaration.dto.ContrastListDTO; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationValueListDTO; import com.engine.salary.entity.taxdeclaration.param.ContrastQueryParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationValueListQueryParam; @@ -45,6 +46,7 @@ import weaver.hrm.User; import java.math.BigDecimal; import java.util.*; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; /** @@ -356,8 +358,10 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar onlineNoMap.put(no, map); } + Set onlyShowColumns = new HashSet<>(); List> oneResultList = new ArrayList<>(); for (Map local : localList) { + AtomicBoolean hasDiff = new AtomicBoolean(false); Map result = new HashMap<>(); result.put("姓名", local.get("姓名")); result.put("证件类型", local.get("证件类型")); @@ -365,29 +369,39 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar String no = local.getOrDefault("证件号码", "").toString(); Map online = onlineNoMap.get(no); - taxReportColumns.forEach(col -> { - Map temp = Maps.newHashMap(); + taxReportColumns.stream().map(TaxReportColumnPO::getReportColumnName).forEach(col -> { + ContrastListDTO dto = new ContrastListDTO(); // 系统值 - String localValue = Util.null2String(local.get(col.getReportColumnName())); + String localValue = Util.null2String(local.get(col)); // 线上值 - String onlineValue = Util.null2String(online.get(col.getReportColumnName())); - temp.put("local", localValue); - temp.put("online", onlineValue); + String onlineValue = Util.null2String(online.get(col)); + dto.setLocal(localValue); + dto.setOnline(onlineValue); if (NumberUtil.isNumber(localValue) && NumberUtil.isNumber(onlineValue)) { BigDecimal diff = new BigDecimal(localValue).subtract(new BigDecimal(onlineValue)); if (diff.compareTo(new BigDecimal(0)) != 0) { - temp.put("diff", diff); + dto.setDiff(diff); + onlyShowColumns.add(col); + hasDiff.set(true); } } else { if (!Objects.equals(localValue, onlineValue)) { - temp.put("diff", localValue); + dto.setDiff(localValue); + onlyShowColumns.add(col); + hasDiff.set(true); } } - result.put(col.getReportColumnName(), temp); + result.put(col, dto); }); - oneResultList.add(result); + if (param.isOnlyShowDiffEmp()) { + if (hasDiff.get()) { + oneResultList.add(result); + } + } else { + oneResultList.add(result); + } } - resultList.put("columns", columns); + resultList.put("columns", param.isOnlyShowDiffItem() ? onlyShowColumns : columns); resultList.put("pageInfo", SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), oneResultList)); return resultList; } diff --git a/src/com/engine/salary/web/TaxDeclarationController.java b/src/com/engine/salary/web/TaxDeclarationController.java index 9569e60cb..65a96bf26 100644 --- a/src/com/engine/salary/web/TaxDeclarationController.java +++ b/src/com/engine/salary/web/TaxDeclarationController.java @@ -285,7 +285,7 @@ public class TaxDeclarationController { * * @param request * @param response - * @param ContrastQueryParam + * @param param * @return */ @POST From cfeaa4fa7378b81bbed394481ec8268898020fc2 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 1 Feb 2024 12:03:24 +0800 Subject: [PATCH 90/92] =?UTF-8?q?=E4=BA=BA=E5=91=98=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=8A=A5=E9=80=81=E6=97=A5=E6=9C=9F=E6=94=AF=E6=8C=81yyyy/mm/d?= =?UTF-8?q?d=E5=86=99=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/EmployeeDeclareExcelServiceImpl.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java b/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java index 8b883769f..805bbf910 100644 --- a/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java @@ -52,7 +52,6 @@ import weaver.hrm.User; import java.beans.PropertyDescriptor; import java.io.InputStream; -import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; @@ -320,7 +319,7 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee } } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(0, "任职受雇从业日期"))) { if (StringUtils.isEmpty(dataValue)) { - if (!Objects.equals(employeeDeclareExcel.getEmploymentType(), EmploymentTypeEnum.OTHER.getValue())) { + if (!Objects.equals(employeeDeclareExcel.getEmploymentType(), EmploymentTypeEnum.OTHER.getValue().toString())) { isError = true; Map errorMessageMap = Maps.newHashMap(); errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(0, "任职受雇从业类型不为「其他」时,任职受雇从业日期为必填")); @@ -336,25 +335,28 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(0, "日期格式不正确")); errorData.add(errorMessageMap); } else { - employeeDeclareExcel.setEmploymentDate(LocalDate.parse(dataValue).toString()); + employeeDeclareExcel.setEmploymentDate(SalaryDateUtil.getFormatDate(SalaryDateUtil.dateStrToLocalDate(dataValue))); } } } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(0, "离职日期"))) { if (StringUtils.isEmpty(dataValue)) { - if (Objects.equals(employeeDeclareExcel.getEmploymentStatus(), EmploymentStatusEnum.ABNORMAL.getValue())) { + if (Objects.equals(employeeDeclareExcel.getEmploymentStatus(), EmploymentStatusEnum.ABNORMAL.getValue().toString())) { isError = true; Map errorMessageMap = Maps.newHashMap(); errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(0, "人员状态为非正常时,离职日期必填")); errorData.add(errorMessageMap); } } else { + if (StringUtils.isNotBlank(dataValue) && dataValue.length() >= 10) { + dataValue = dataValue.substring(0,10); + } if (!SalaryDateUtil.checkDay(dataValue)) { isError = true; Map errorMessageMap = Maps.newHashMap(); errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(0, "日期格式不正确")); errorData.add(errorMessageMap); } else { - employeeDeclareExcel.setDismissDate(LocalDate.parse(dataValue).toString()); + employeeDeclareExcel.setDismissDate(SalaryDateUtil.getFormatDate(SalaryDateUtil.dateStrToLocalDate(dataValue))); } } } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(0, "是否残疾"))) { From a4e598dc95d31919473aacd25e0ad8becfc499e0 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 2 Feb 2024 14:48:01 +0800 Subject: [PATCH 91/92] =?UTF-8?q?=E4=B8=AA=E7=A8=8E=E7=94=B3=E6=8A=A5?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/TaxDeclarationValueService.java | 5 +++++ .../impl/TaxDeclarationValueServiceImpl.java | 5 +++++ .../salary/web/TaxDeclarationController.java | 18 ++++++++++++++++++ .../wrapper/TaxDeclareRecordWrapper.java | 9 +++++++++ 4 files changed, 37 insertions(+) diff --git a/src/com/engine/salary/service/TaxDeclarationValueService.java b/src/com/engine/salary/service/TaxDeclarationValueService.java index aa2758d20..69b4acdb2 100644 --- a/src/com/engine/salary/service/TaxDeclarationValueService.java +++ b/src/com/engine/salary/service/TaxDeclarationValueService.java @@ -95,4 +95,9 @@ public interface TaxDeclarationValueService { Map contrast(ContrastQueryParam param); + /** + * 根据主键删除 + * @param deleteId + */ + void deleteById(Long deleteId); } diff --git a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java index 76743eb72..65e927c19 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java @@ -405,4 +405,9 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar resultList.put("pageInfo", SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), oneResultList)); return resultList; } + + @Override + public void deleteById(Long deleteId) { + getTaxDeclarationValueMapper().deleteByIds(Collections.singletonList(deleteId)); + } } diff --git a/src/com/engine/salary/web/TaxDeclarationController.java b/src/com/engine/salary/web/TaxDeclarationController.java index 65a96bf26..d584782ed 100644 --- a/src/com/engine/salary/web/TaxDeclarationController.java +++ b/src/com/engine/salary/web/TaxDeclarationController.java @@ -459,6 +459,24 @@ public class TaxDeclarationController { return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::detailInfo, id); } + /** + * 删除详细详细 + * + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/deleteInfo") + @Produces(MediaType.APPLICATION_JSON) + public String deleteInfo(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordDetailSaveParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::deleteInfo, param.getId()); + } + + + /** * 个税申报表详情列表 diff --git a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java index 26391d5b0..4613a52e0 100644 --- a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java +++ b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java @@ -33,6 +33,7 @@ import dm.jdbc.util.IdGenerator; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.compress.utils.Lists; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -834,4 +835,12 @@ public class TaxDeclareRecordWrapper extends Service { return getTaxDeclarationExcelService(user).importData(param); } + public void deleteInfo(Long deleteId) { + TaxDeclarationValuePO declarationValuePO = getTaxDeclarationValueService(user).getById(deleteId); + if (ObjectUtils.isEmpty(declarationValuePO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "该明细不存在或已被删除!")); + } + getTaxDeclarationValueService(user).deleteById(deleteId); + + } } From 3dd1c44459d77a4c170e198de2b15241eb0ef158 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Sun, 4 Feb 2024 10:55:40 +0800 Subject: [PATCH 92/92] =?UTF-8?q?=E6=A0=B8=E7=AE=97=E6=97=B6=E6=A0=B8?= =?UTF-8?q?=E7=AE=97=E6=A0=A1=E9=AA=8Cbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/taxdeclaration/po/TaxDeclarationPO.java | 10 +++++++++- .../mapper/taxdeclaration/TaxDeclarationMapper.xml | 6 ++++++ .../salary/service/impl/TaxDeclarationServiceImpl.java | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/entity/taxdeclaration/po/TaxDeclarationPO.java b/src/com/engine/salary/entity/taxdeclaration/po/TaxDeclarationPO.java index 682f1a87b..101b6dd52 100644 --- a/src/com/engine/salary/entity/taxdeclaration/po/TaxDeclarationPO.java +++ b/src/com/engine/salary/entity/taxdeclaration/po/TaxDeclarationPO.java @@ -94,10 +94,18 @@ public class TaxDeclarationPO { */ private Integer controlView; - //税款所属期 + /** + * 薪资所属月 + */ LocalDateRange salaryMonths; + /** + * 税款所属期 + */ + LocalDateRange taxMonths; + + private Collection taxAgentIds; } diff --git a/src/com/engine/salary/mapper/taxdeclaration/TaxDeclarationMapper.xml b/src/com/engine/salary/mapper/taxdeclaration/TaxDeclarationMapper.xml index 8324daf64..3b84589f3 100644 --- a/src/com/engine/salary/mapper/taxdeclaration/TaxDeclarationMapper.xml +++ b/src/com/engine/salary/mapper/taxdeclaration/TaxDeclarationMapper.xml @@ -63,6 +63,12 @@ AND salary_month #{salaryMonths.endDate} + + AND tax_cycle = ]]> #{taxMonths.fromDate} + + + AND tax_cycle #{taxMonths.endDate} + AND tax_agent_id IN diff --git a/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java index 34019ce42..9ba7b8237 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java @@ -400,7 +400,7 @@ public class TaxDeclarationServiceImpl extends Service implements TaxDeclaration @Override public List listByTaxCycleRange(YearMonthRange yearMonthRange) { return getTaxDeclarationMapper().listSome(TaxDeclarationPO.builder() - .salaryMonths(LocalDateRange.builder().fromDate(yearMonthRange.getStartMonth()).endDate(yearMonthRange.getEndMonth()).build()) + .taxMonths(LocalDateRange.builder().fromDate(yearMonthRange.getStartMonth()).endDate(yearMonthRange.getEndMonth()).build()) .build()); }