diff --git a/src/com/engine/salary/biz/SIAccountBiz.java b/src/com/engine/salary/biz/SIAccountBiz.java index 4ba839d57..34b6aae17 100644 --- a/src/com/engine/salary/biz/SIAccountBiz.java +++ b/src/com/engine/salary/biz/SIAccountBiz.java @@ -22,7 +22,10 @@ import com.engine.salary.enums.siaccount.*; import com.engine.salary.enums.sicategory.*; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.siaccount.*; +import com.engine.salary.mapper.siarchives.FundSchemeMapper; import com.engine.salary.mapper.siarchives.InsuranceBaseInfoMapper; +import com.engine.salary.mapper.siarchives.OtherSchemeMapper; +import com.engine.salary.mapper.siarchives.SocialSchemeMapper; import com.engine.salary.mapper.sicategory.ICategoryMapper; import com.engine.salary.mapper.sischeme.InsuranceSchemeDetailMapper; import com.engine.salary.mapper.taxagent.TaxAgentMapper; @@ -108,6 +111,18 @@ public class SIAccountBiz extends Service { return MapperProxyFactory.getProxy(InsuranceBaseInfoMapper.class); } + private SocialSchemeMapper getSocialSchemeMapper() { + return MapperProxyFactory.getProxy(SocialSchemeMapper.class); + } + + private FundSchemeMapper getFundSchemeMapper() { + return MapperProxyFactory.getProxy(FundSchemeMapper.class); + } + + private OtherSchemeMapper getOtherSchemeMapper() { + return MapperProxyFactory.getProxy(OtherSchemeMapper.class); + } + private SalarySysConfService getSalarySysConfService(User user) { return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); } @@ -260,7 +275,7 @@ public class SIAccountBiz extends Service { public void accounting(AccountParam param, Long employeeId, String tenantKey, String currentUserName) { //薪资核算进度暂未实现 ProgressDTO salaryAcctProgressDTO = getSalaryAcctProgressService(user).getProgress(SalaryCacheKey.ACCT_PROGRESS + param.getBillMonth()); - if (salaryAcctProgressDTO != null && salaryAcctProgressDTO.getProgress().compareTo(BigDecimal.ONE) < 0) { + if (salaryAcctProgressDTO != null && salaryAcctProgressDTO.isStatus() && salaryAcctProgressDTO.getProgress().compareTo(BigDecimal.ONE) < 0) { return; } @@ -309,7 +324,9 @@ public class SIAccountBiz extends Service { .map(InsuranceArchivesBaseInfoPO::getEmployeeId) .collect(Collectors.toList()); - empIds = empIds.stream().filter(f->canAccountIds.contains(f)).collect(Collectors.toList()); + //20231122逻辑优化,过滤出不在起始缴纳月和最后缴纳月区间的人员 + List empIdsInPayMonthRange = listCanPayEmpIds(param.getPaymentOrganization(), param.getBillMonth()); + empIds = empIds.stream().filter(f->canAccountIds.contains(f) && empIdsInPayMonthRange.contains(f)).collect(Collectors.toList()); //过滤不在扣缴义务人下的数据 // Collection employeeIdsInTaxAgent = getTaxAgentService().listEmployeeIdsInTaxAgent(param.getPaymentOrganization()); @@ -399,8 +416,9 @@ public class SIAccountBiz extends Service { log.info("福利核算进度完成!"); } catch (Exception e) { log.error("account run fail", e); + getSalaryAcctProgressService(user).fail(SalaryCacheKey.ACCT_PROGRESS + param.getBillMonth(), SalaryI18nUtil.getI18nLabel(99642, "福利核算出错") + ": " + e.getMessage()); + List list = Lists.newArrayList(getInsuranceAccountBatchMapper().getByBillMonth(param.getBillMonth(), param.getPaymentOrganization())); - list = encryptUtil.decryptList(list, InsuranceAccountBatchPO.class); if (CollectionUtils.isNotEmpty(list)) { list.stream().forEach(f -> { getInsuranceAccountBatchMapper().deleteById(f.getId()); @@ -410,10 +428,36 @@ public class SIAccountBiz extends Service { //薪资核算进度暂未实现 //salaryAcctProgressService.del(tenantKey + param.getBillMonth(), employeeId, tenantKey); //logger.error("welfare account error:{}", e.getMessage(), e); - getSalaryAcctProgressService(user).fail(SalaryCacheKey.ACCT_PROGRESS + param.getBillMonth(), SalaryI18nUtil.getI18nLabel(99642, "福利核算出错") + ": " + e.getMessage()); } } + /** + * 根据个税扣缴义务人和账单月,获取三类福利档案中符合缴纳开始结束月区间的人员id + * @param paymentOrganization + * @param billMonth + * @return + */ + public List listCanPayEmpIds(Long paymentOrganization, String billMonth) { + List listCanPayEmpIds = new ArrayList<>(); + //社保档案中可进行缴纳的人员 + List socialCanPayEmpIds = getSocialSchemeMapper().listCanPayEmpIds(paymentOrganization, billMonth); + //公积金档案中可进行缴纳的人员 + List fundCanPayEmpIds = getFundSchemeMapper().listCanPayEmpIds(paymentOrganization, billMonth); + //其他福利档案中可进行缴纳的人员 + List otherCanPayEmpIds = getOtherSchemeMapper().listCanPayEmpIds(paymentOrganization, billMonth); + if (socialCanPayEmpIds != null && socialCanPayEmpIds.size() > 0) { + listCanPayEmpIds.addAll(socialCanPayEmpIds); + } + if (fundCanPayEmpIds != null && fundCanPayEmpIds.size() > 0) { + listCanPayEmpIds.addAll(fundCanPayEmpIds); + } + if (otherCanPayEmpIds != null && otherCanPayEmpIds.size() > 0) { + listCanPayEmpIds.addAll(otherCanPayEmpIds); + } + //去重 + listCanPayEmpIds = listCanPayEmpIds.stream().distinct().collect(Collectors.toList()); + return listCanPayEmpIds; + } public void commonAccount(/*CountDownLatch countDownLatch, BlockingDeque results,*/ String billMonth, List ids, Long employeeId, String tenantKey, Long paymentOrganization) { /* try {*/ @@ -1308,6 +1352,9 @@ public class SIAccountBiz extends Service { if (filterList.size() != employeeIds.size()) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "补缴人员中存在未设置福利档案人员或相关人员不在福利在缴人员中,不可新建补缴信息!")); } + //20231122逻辑优化,过滤出不在起始缴纳月和最后缴纳月区间的人员 + List empIdsInPayMonthRange = listCanPayEmpIds(param.getPaymentOrganization(), param.getBillMonth()); + employeeIds = employeeIds.stream().filter(f -> empIdsInPayMonthRange.contains(f)).collect(Collectors.toList()); SalaryAssert.notEmpty(employeeIds, SalaryI18nUtil.getI18nLabel(99920, "无核算人员")); List baseList = new ArrayList<>(); diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index ea0066a67..528849995 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -1496,7 +1496,14 @@ public class SIArchivesBiz { Map socialJson = JSON.parseObject(socialItem.getSocialPaymentBaseString(), new TypeReference>() { }); if (socialJson != null) { - map.putAll(socialJson); + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = payInsuranceIds(socialItem.getSocialSchemeId()); + socialJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + map.put(k, v); + } + }); +// map.putAll(socialJson); } map.put("socialAccount", socialItem.getSocialAccount()); map.put("socialStartTime", socialItem.getSocialStartTime()); @@ -1508,7 +1515,14 @@ public class SIArchivesBiz { Map fundJson = JSON.parseObject(fundItem.getFundPaymentBaseString(), new TypeReference>() { }); if (fundJson != null) { - map.putAll(fundJson); + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = payInsuranceIds(fundItem.getFundSchemeId()); + fundJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + map.put(k, v); + } + }); +// map.putAll(fundJson); } map.put("supplementFundAccount", fundItem.getSupplementFundAccount()); map.put("fundStartTime", fundItem.getFundStartTime()); @@ -1520,7 +1534,14 @@ public class SIArchivesBiz { Map otherJson = JSON.parseObject(otherItem.getOtherPaymentBaseString(), new TypeReference>() { }); if (otherJson != null) { - map.putAll(otherJson); + //查询该福利方案下开启缴纳的福利项 + List insuranceIdList = payInsuranceIds(otherItem.getOtherSchemeId()); + otherJson.forEach((k, v) -> { + if (insuranceIdList.contains(Long.valueOf(k))) { + map.put(k, v); + } + }); +// map.putAll(otherJson); } map.put("otherStartTime", otherItem.getOtherStartTime()); map.put("otherEndTime", otherItem.getOtherEndTime()); @@ -1534,6 +1555,16 @@ public class SIArchivesBiz { } } + public List payInsuranceIds(Long socialSchemeId) { + //查询该福利方案下开启缴纳的福利项 + 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())).map(InsuranceSchemeDetailPO::getInsuranceId).collect(Collectors.toList()); + } + return insuranceIdList; + } /** * 获取信息提示 */ diff --git a/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareSyncStartDateParam.java b/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareSyncStartDateParam.java new file mode 100644 index 000000000..c4410c28a --- /dev/null +++ b/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareSyncStartDateParam.java @@ -0,0 +1,31 @@ +package com.engine.salary.entity.employeedeclare.param; + +import com.engine.salary.util.valid.DataCheck; +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 EmployeeDeclareSyncStartDateParam { + // 个税扣缴义务人id + @DataCheck(require = true, message = "参数错误,个税扣缴义务人id不能为空") + private Long taxAgentId; + + // 税款所属期 + @DataCheck(require = true, message = "参数错误,税款所属期参数格式错误") + private Date taxCycle; +} diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java index 75bcd1b2b..2d1ed9e9b 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java @@ -11,6 +11,7 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.enums.salaryaccounting.ApprovalWorkflowStatusEnum; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; @@ -46,8 +47,7 @@ public class SalaryAcctRecordBO { List salarySobs, List employeeComInfos, List salaryAcctEmployeeCountDTOS, - List salarySendCheckResult, - Map workflowStatusMap) { + List salarySendCheckResult) { if (CollectionUtils.isEmpty(salaryAcctRecordPOS)) { return Collections.emptyList(); } @@ -55,6 +55,7 @@ public class SalaryAcctRecordBO { Map usernameMap = SalaryEntityUtil.convert2Map(employeeComInfos, DataCollectionEmployee::getEmployeeId, DataCollectionEmployee::getUsername); Map empSizeMap = SalaryEntityUtil.convert2Map(salaryAcctEmployeeCountDTOS, SalaryAcctEmployeeCountDTO::getSalaryAcctRecordId, SalaryAcctEmployeeCountDTO::getCountBySalaryAcctRecordId); Map salarySendMap = SalaryEntityUtil.convert2Map(salarySendCheckResult, SalarySendCheckDTO::getSalaryAcctId, SalarySendCheckDTO::isSendFinished); + Map taxAgentMap = SalaryEntityUtil.convert2Map(taxAgentPOS, TaxAgentPO::getId, TaxAgentPO::getName); return salaryAcctRecordPOS.stream() .map(salaryAcctRecordPO -> { SalarySobPO salarySobPO = salarySobMap.get(salaryAcctRecordPO.getSalarySobId()); @@ -98,6 +99,7 @@ public class SalaryAcctRecordBO { return SalaryAcctRecordListDTO.builder() .id(salaryAcctRecordPO.getId()) .salarySobName(Optional.ofNullable(salarySobPO).map(SalarySobPO::getName).orElse(StringUtils.EMPTY)) + .taxAgentName(taxAgentMap.get(Optional.ofNullable(salarySobPO).map(SalarySobPO::getTaxAgentId).orElse(0L))) .salaryMonth(SalaryDateUtil.localDate2YearMonth(salaryAcctRecordPO.getSalaryMonth()).toString()) .taxCycle(SalaryDateUtil.localDate2YearMonth(salaryAcctRecordPO.getTaxCycle()).toString()) .status(Optional.ofNullable(salaryAcctRecordStatusEnum) diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java index a49a1e03b..8713f49fe 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java @@ -23,7 +23,6 @@ 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.Column; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.apache.commons.collections4.CollectionUtils; @@ -86,36 +85,77 @@ public class SalaryAcctResultBO { // } + /** * 构建薪资核算结果列表的表头(线下对比) * * @param salarySobItemAggregateDTO * @return */ - public static List buildTableColumns4ComparisonResult(SalarySobItemAggregateDTO salarySobItemAggregateDTO, Set excludeSalaryItemIds) { - List columns = Lists.newArrayList(); + public static List buildTableColumns4ComparisonResult(SalarySobItemAggregateDTO salarySobItemAggregateDTO, Set excludeSalaryItemIds) { + List columns = Lists.newArrayList(); // 员工信息字段 for (SalarySobEmpFieldDTO salarySobEmpFieldDTO : salarySobItemAggregateDTO.getEmpFields()) { - columns.add(new Column(salarySobEmpFieldDTO.getFieldName(), salarySobEmpFieldDTO.getFieldId(), salarySobEmpFieldDTO.getFieldId())); + columns.add(new WeaTableColumnGroup("150", salarySobEmpFieldDTO.getFieldName(), salarySobEmpFieldDTO.getFieldId(), salarySobEmpFieldDTO.getFieldId())); } // 薪资项目分组下的薪资项目 for (SalarySobItemGroupDTO salarySobItemGroupDTO : salarySobItemAggregateDTO.getItemGroups()) { if (CollectionUtils.isEmpty(salarySobItemGroupDTO.getItems())) { continue; } + List childrenColumns = Lists.newArrayList(); for (SalarySobItemDTO salarySobItemDTO : salarySobItemGroupDTO.getItems()) { if (excludeSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) { continue; } - columns.add(new Column(salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), "" + salarySobItemDTO.getSalaryItemId())); + childrenColumns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), "" + salarySobItemDTO.getSalaryItemId())); } + WeaTableColumnGroup weaTableColumnWapper = new WeaTableColumnGroup("150", salarySobItemGroupDTO.getName(), String.valueOf(salarySobItemGroupDTO.getId()), childrenColumns); + columns.add(weaTableColumnWapper); } // 没有分类的薪资项目 for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getItems()) { if (excludeSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) { continue; } - columns.add(new Column(salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), "" + salarySobItemDTO.getSalaryItemId())); + columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), "" + salarySobItemDTO.getSalaryItemId())); + } + return columns; + } + + /** + * 构建薪资核算结果列表的表头(线下对比) + * + * @param salarySobItemAggregateDTO + * @return + */ + public static List buildTableColumns4ComparisonResultByGroup(SalarySobItemAggregateDTO salarySobItemAggregateDTO, Set excludeSalaryItemIds) { + List columns = Lists.newArrayList(); + // 员工信息字段 + for (SalarySobEmpFieldDTO salarySobEmpFieldDTO : salarySobItemAggregateDTO.getEmpFields()) { + columns.add(new WeaTableColumnGroup("150", salarySobEmpFieldDTO.getFieldName(), salarySobEmpFieldDTO.getFieldId(), salarySobEmpFieldDTO.getFieldId())); + } + // 薪资项目分组下的薪资项目 + for (SalarySobItemGroupDTO salarySobItemGroupDTO : salarySobItemAggregateDTO.getItemGroups()) { + if (CollectionUtils.isEmpty(salarySobItemGroupDTO.getItems())) { + continue; + } + List childrenColumns = Lists.newArrayList(); + for (SalarySobItemDTO salarySobItemDTO : salarySobItemGroupDTO.getItems()) { + if (excludeSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) { + continue; + } + childrenColumns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), "" + salarySobItemDTO.getSalaryItemId())); + } + WeaTableColumnGroup weaTableColumnWapper = new WeaTableColumnGroup("150", salarySobItemGroupDTO.getName(), String.valueOf(salarySobItemGroupDTO.getId()), childrenColumns); + columns.add(weaTableColumnWapper); + } + // 没有分类的薪资项目 + for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getItems()) { + if (excludeSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) { + continue; + } + columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), "" + salarySobItemDTO.getSalaryItemId())); } return columns; } diff --git a/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctRecordListDTO.java b/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctRecordListDTO.java index ba3ab3838..254c140d1 100644 --- a/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctRecordListDTO.java +++ b/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctRecordListDTO.java @@ -36,6 +36,9 @@ public class SalaryAcctRecordListDTO { //主键id private Long id; + @TableTitle(title = "个税扣缴义务人", dataIndex = "taxAgentName", key = "taxAgentName") + private String taxAgentName; + @TableTitle(title = "薪资账套", dataIndex = "salarySobName", key = "salarySobName") private String salarySobName; diff --git a/src/com/engine/salary/entity/salaryacct/dto/SalaryComparisonResultListDTO.java b/src/com/engine/salary/entity/salaryacct/dto/SalaryComparisonResultListDTO.java index 39fc6b164..2667b00bb 100644 --- a/src/com/engine/salary/entity/salaryacct/dto/SalaryComparisonResultListDTO.java +++ b/src/com/engine/salary/entity/salaryacct/dto/SalaryComparisonResultListDTO.java @@ -1,6 +1,6 @@ package com.engine.salary.entity.salaryacct.dto; -import com.engine.salary.util.page.Column; +import com.engine.salary.component.WeaTableColumnGroup; import com.engine.salary.util.page.PageInfo; import lombok.AllArgsConstructor; import lombok.Data; @@ -25,7 +25,7 @@ import java.util.Map; public class SalaryComparisonResultListDTO { //列表的表头 - private List weaTableColumns; + private List weaTableColumns; //列表数据 private PageInfo> data; diff --git a/src/com/engine/salary/entity/salarysob/param/SalarySobListQueryParam.java b/src/com/engine/salary/entity/salarysob/param/SalarySobListQueryParam.java index bd1a9e75b..ed5f39c96 100644 --- a/src/com/engine/salary/entity/salarysob/param/SalarySobListQueryParam.java +++ b/src/com/engine/salary/entity/salarysob/param/SalarySobListQueryParam.java @@ -18,4 +18,7 @@ public class SalarySobListQueryParam extends BaseQueryParam { //薪资账套名称") private String name; + + // 薪资账套id + private Long taxAgentId; } diff --git a/src/com/engine/salary/entity/siaccount/param/BalanceAccountBaseParam.java b/src/com/engine/salary/entity/siaccount/param/BalanceAccountBaseParam.java new file mode 100644 index 000000000..fb0e402ba --- /dev/null +++ b/src/com/engine/salary/entity/siaccount/param/BalanceAccountBaseParam.java @@ -0,0 +1,64 @@ +package com.engine.salary.entity.siaccount.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + + +/** + * @Author: sy + * @Description: 组装补差基本数据 + * @Date: 2023/11/23 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BalanceAccountBaseParam { + + //员工id") + private Long employeeId; + + //账单月份") + private String billMonth; + + /** + * 个税扣缴义务人id + */ + @DataCheck(require = true,message = "个税扣缴义务人不能为空") + private Long paymentOrganization; + + + /** + * 社保补缴金额_个人 + */ + private String socialPerJson; + + /** + * 社保补缴金额_单位 + */ + private String socialComJson; + + /** + * 公积金补缴金额_个人 + */ + private String fundPerJson; + + /** + * 公积金补缴金额_单位 + */ + private String fundComJson; + + /** + * 其他福利补缴金额_个人 + */ + private String otherPerJson; + + /** + * 其他福利补缴金额_单位 + */ + private String otherComJson; + +} diff --git a/src/com/engine/salary/entity/siaccount/param/InsuranceAccountBatchParam.java b/src/com/engine/salary/entity/siaccount/param/InsuranceAccountBatchParam.java index 9e34e0d42..9e3d531aa 100644 --- a/src/com/engine/salary/entity/siaccount/param/InsuranceAccountBatchParam.java +++ b/src/com/engine/salary/entity/siaccount/param/InsuranceAccountBatchParam.java @@ -27,4 +27,6 @@ public class InsuranceAccountBatchParam extends BaseQueryParam { private String endTime; private List taxAgents; + + private Long paymentOrganization; } diff --git a/src/com/engine/salary/entity/taxagent/bo/TaxAgentTaxReturnBO.java b/src/com/engine/salary/entity/taxagent/bo/TaxAgentTaxReturnBO.java index fab88eda0..b14674d76 100644 --- a/src/com/engine/salary/entity/taxagent/bo/TaxAgentTaxReturnBO.java +++ b/src/com/engine/salary/entity/taxagent/bo/TaxAgentTaxReturnBO.java @@ -96,8 +96,8 @@ public class TaxAgentTaxReturnBO { requestMap.put("djxhid", taxAgentTaxReturn.getTaxRegistrationNumber()); requestMap.put("nsrsbh", taxAgentTaxReturn.getTaxCode()); requestMap.put("areaid", taxAgentTaxReturn.getAreaCode()); - requestMap.put("bmbh", ""); - requestMap.put("bmmc", ""); + requestMap.put("bmbh", taxAgentTaxReturn.getDepartmentCode()); + requestMap.put("bmmc", taxAgentTaxReturn.getDepartmentName()); return requestMap; } diff --git a/src/com/engine/salary/entity/taxapiflow/response/QueryAccountBalanceResponse.java b/src/com/engine/salary/entity/taxapiflow/response/QueryAccountBalanceResponse.java index 67779fd42..4c5cb33e3 100644 --- a/src/com/engine/salary/entity/taxapiflow/response/QueryAccountBalanceResponse.java +++ b/src/com/engine/salary/entity/taxapiflow/response/QueryAccountBalanceResponse.java @@ -43,7 +43,7 @@ public class QueryAccountBalanceResponse { /** * 税号 */ - private String taxNumber; + private String taxNum; /** * 已使用流量 */ diff --git a/src/com/engine/salary/maintainer/EmployeeDeclare/EmployeeDeclareManager.java b/src/com/engine/salary/maintainer/EmployeeDeclare/EmployeeDeclareManager.java new file mode 100644 index 000000000..8cbfc06ba --- /dev/null +++ b/src/com/engine/salary/maintainer/EmployeeDeclare/EmployeeDeclareManager.java @@ -0,0 +1,44 @@ +package com.engine.salary.maintainer.EmployeeDeclare; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.entity.employeedeclare.param.EmployeeDeclareSyncStartDateParam; +import com.engine.salary.service.*; +import com.engine.salary.service.impl.*; +import com.engine.salary.util.valid.ValidUtil; +import weaver.hrm.User; + +public class EmployeeDeclareManager extends Service { + private TaxAgentService getTaxAgentService(User user) { + return ServiceUtil.getService(TaxAgentServiceImpl.class, user); + } + + private EmployeeDeclareService getEmployeeDeclareService(User user) { + return ServiceUtil.getService(EmployeeDeclareServiceImpl.class, user); + } + + private ExtEmpService getExtEmpService(User user) { + return ServiceUtil.getService(ExtEmpServiceImpl.class, user); + } + + private SalaryEmployeeService getSalaryEmployeeService(User user) { + return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); + } + + private SalaryCacheService getSalaryCacheService(User user) { + return ServiceUtil.getService(SalaryCacheServiceImpl.class, user); + } + + + /** + * 同步任职受雇日期为入职日期 + * + * @return + */ + public String syncEmploymentDate(EmployeeDeclareSyncStartDateParam param) { + ValidUtil.doValidator(param); + + return getEmployeeDeclareService(user).syncEmploymentDate(param); + } + +} diff --git a/src/com/engine/salary/maintainer/MaintainerController.java b/src/com/engine/salary/maintainer/MaintainerController.java index c184a6082..9bffd7681 100644 --- a/src/com/engine/salary/maintainer/MaintainerController.java +++ b/src/com/engine/salary/maintainer/MaintainerController.java @@ -1,11 +1,14 @@ package com.engine.salary.maintainer; import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.employeedeclare.param.EmployeeDeclareSyncStartDateParam; +import com.engine.salary.maintainer.EmployeeDeclare.EmployeeDeclareManager; import com.engine.salary.maintainer.datacollection.AddUpSituationManager; import com.engine.salary.maintainer.salaryacct.SalaryAcctManager; import com.engine.salary.maintainer.salaryacct.SalaryAcctSupplementParam; import com.engine.salary.maintainer.salaryarchive.SalaryArchiveManager; import com.engine.salary.util.ResponseResult; +import com.engine.salary.util.SalaryDateUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import weaver.hrm.HrmUserVarify; @@ -16,6 +19,7 @@ import javax.servlet.http.HttpServletResponse; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import java.util.Arrays; @@ -45,6 +49,10 @@ public class MaintainerController { return ServiceUtil.getService(SalaryArchiveManager.class, user); } + private EmployeeDeclareManager getEmployeeDeclareManager(User user) { + return ServiceUtil.getService(EmployeeDeclareManager.class, user); + } + //---------------------------薪资核算 start ------------------------------------ /** @@ -108,4 +116,32 @@ public class MaintainerController { return new ResponseResult(user).run(getSalaryArchiveManager(user)::initPayStartDate); } + /** + * 同步所有档案起始发薪日期变为入职日期 + * + * @return + */ + @GET + @Path("/salaryArchive/syncPayStartDate") + @Produces(MediaType.APPLICATION_JSON) + public String syncPayStartDate(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryArchiveManager(user)::syncPayStartDate); + } + + /** + * 同步任职受雇日期为入职日期 + * + * @return + */ + @GET + @Path("/employeedeclare/syncEmploymentDate") + @Produces(MediaType.APPLICATION_JSON) + public String syncEmploymentDate(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "taxAgentId") Long taxAgentId, @QueryParam(value = "taxCycle")String taxCycle) { + User user = HrmUserVarify.getUser(request, response); + EmployeeDeclareSyncStartDateParam param = EmployeeDeclareSyncStartDateParam.builder().taxAgentId(taxAgentId).taxCycle(SalaryDateUtil.stringToDate(taxCycle)).build(); + return new ResponseResult(user).run(getEmployeeDeclareManager(user)::syncEmploymentDate,param); + } + + } diff --git a/src/com/engine/salary/maintainer/salaryarchive/SalaryArchiveManager.java b/src/com/engine/salary/maintainer/salaryarchive/SalaryArchiveManager.java index cbd52a6ca..751088d46 100644 --- a/src/com/engine/salary/maintainer/salaryarchive/SalaryArchiveManager.java +++ b/src/com/engine/salary/maintainer/salaryarchive/SalaryArchiveManager.java @@ -61,4 +61,15 @@ public class SalaryArchiveManager extends Service { return null; } + + + /** + * 同步所有档案起始发薪日期变为入职日期 + * + * @return + */ + public String syncPayStartDate() { + return getSalaryArchiveService(user).syncPayStartDate(); + } + } diff --git a/src/com/engine/salary/mapper/employeedeclare/EmployeeDeclareMapper.xml b/src/com/engine/salary/mapper/employeedeclare/EmployeeDeclareMapper.xml index 5f8eab4af..890181735 100644 --- a/src/com/engine/salary/mapper/employeedeclare/EmployeeDeclareMapper.xml +++ b/src/com/engine/salary/mapper/employeedeclare/EmployeeDeclareMapper.xml @@ -639,7 +639,7 @@ ) - + @@ -730,9 +730,7 @@ employment_date=#{employmentDate}, - - dismiss_date=#{dismissDate}, - + dismiss_date=#{dismissDate}, disability=#{disability}, diff --git a/src/com/engine/salary/mapper/siaccount/InsuranceAccountBatchMapper.xml b/src/com/engine/salary/mapper/siaccount/InsuranceAccountBatchMapper.xml index 784c6e848..61223c9b0 100644 --- a/src/com/engine/salary/mapper/siaccount/InsuranceAccountBatchMapper.xml +++ b/src/com/engine/salary/mapper/siaccount/InsuranceAccountBatchMapper.xml @@ -138,6 +138,10 @@ AND t.bill_month between #{param.startTime} and #{param.endTime} + + AND + t.payment_organization = #{param.paymentOrganization} + AND t.payment_organization in diff --git a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml index 6540a705d..2e52ce986 100644 --- a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml +++ b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml @@ -1319,7 +1319,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.total, t.social_sum, t.fund_sum, t.other_sum + t.total, t.social_sum, t.fund_sum, t.other_sum, + t.social_scheme_id, t.fund_scheme_id, t.other_scheme_id FROM hrsa_bill_detail t WHERE t.delete_type = 0 diff --git a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.java b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.java index 203509ca1..d6368f8b4 100644 --- a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.java +++ b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.java @@ -61,6 +61,14 @@ public interface FundSchemeMapper { */ void batchSave(@Param("fundSchemePOS") List singletonList); + /** + * 根据个税扣缴义务人id获取目标账单月可以进行缴纳的人员id + * 筛选条件为账单月是否在起始缴纳月和最后缴纳月之间 + * @param paymentOrganization + * @return + */ + List listCanPayEmpIds(@Param("paymentOrganization")Long paymentOrganization, @Param("billMonth")String billMonth); + List listAll(); int batchUpdate(@Param("collection") List pos); diff --git a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml index 0b8f650b7..fc91b8885 100644 --- a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml @@ -248,6 +248,17 @@ + + + SELECT + t.employee_id + FROM hrsa_other_archives t + WHERE delete_type = 0 + AND payment_organization = #{paymentOrganization} + AND other_scheme_id is not null + AND other_start_time is not null AND other_start_time #{billMonth} + AND (other_end_time is null OR other_end_time = ]]> #{billMonth}) + + + + +