diff --git a/src/com/engine/salary/entity/salaryBill/param/SalarySendBatParam.java b/src/com/engine/salary/entity/salaryBill/param/SalarySendBatParam.java
new file mode 100644
index 000000000..40f529cc5
--- /dev/null
+++ b/src/com/engine/salary/entity/salaryBill/param/SalarySendBatParam.java
@@ -0,0 +1,27 @@
+package com.engine.salary.entity.salaryBill.param;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 工资单批量操作参数
+ *
Copyright: Copyright (c) 2024
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SalarySendBatParam {
+
+// 工资单发放Id
+ private List salarySendIds;
+
+}
diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctBatParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctBatParam.java
new file mode 100644
index 000000000..63dc4310a
--- /dev/null
+++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctBatParam.java
@@ -0,0 +1,34 @@
+package com.engine.salary.entity.salaryacct.param;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 批量操作参数
+ * Copyright: Copyright (c) 2024
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SalaryAcctBatParam {
+
+ //薪资所属月
+ private Date salaryMonth;
+ //薪资账套id
+ private List salarySobIds;
+ //备注
+ private String description;
+
+
+ private List salaryAcctRecordIds;
+}
diff --git a/src/com/engine/salary/entity/siaccount/param/AccountBatParam.java b/src/com/engine/salary/entity/siaccount/param/AccountBatParam.java
new file mode 100644
index 000000000..fa9de96fc
--- /dev/null
+++ b/src/com/engine/salary/entity/siaccount/param/AccountBatParam.java
@@ -0,0 +1,40 @@
+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;
+
+import java.util.List;
+
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class AccountBatParam {
+
+ //账单月份")
+ //@NotNull
+ @DataCheck(require = true,message = "账单月份不能为空")
+ private String billMonth;
+
+ //备注")
+ //@Length(max = 60)
+ @DataCheck(max = 60,message = "备注长度不能超过60个字符")
+ private String remarks;
+
+
+ /**
+ * 个税扣缴义务人id
+ */
+ @DataCheck(require = true,message = "个税扣缴义务人不能为空")
+ private List paymentOrganizations;
+
+
+
+ private List ids;
+
+}
diff --git a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationBatParam.java b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationBatParam.java
new file mode 100644
index 000000000..0168f9c89
--- /dev/null
+++ b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationBatParam.java
@@ -0,0 +1,54 @@
+package com.engine.salary.entity.taxdeclaration.param;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.YearMonth;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 生成个税申报表参数
+ * Copyright: Copyright (c) 2022
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class TaxDeclarationBatParam {
+
+ /**
+ * 个税申报id
+ */
+ private Long taxDeclarationId;
+
+ /**
+ * 薪资所属月
+ */
+ private YearMonth salaryMonth;
+
+ /**
+ * 个税扣缴义务人
+ */
+ private List taxAgentIds;
+
+ /**
+ * 备注
+ */
+ private String description;
+
+ private String salaryMonthStr;
+
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date taxCycle;
+
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date salaryDate;
+}
diff --git a/src/com/engine/salary/service/SIAccountService.java b/src/com/engine/salary/service/SIAccountService.java
index 55a578556..e299c15f0 100644
--- a/src/com/engine/salary/service/SIAccountService.java
+++ b/src/com/engine/salary/service/SIAccountService.java
@@ -324,5 +324,13 @@ public interface SIAccountService {
void deleteSocialAcctEmp(SaveCommonAccountParam param);
String addSocialAcctEmp(SaveCommonAccountParam param);
+
+ void batSave(AccountBatParam param);
+
+ void batDelete(AccountBatParam param);
+
+ void batFile(AccountBatParam param);
+
+ void batSocialSecurityBenefitsRecalculate(AccountBatParam batParam);
}
diff --git a/src/com/engine/salary/service/SalaryAcctRecordService.java b/src/com/engine/salary/service/SalaryAcctRecordService.java
index 8e203bf30..28c838536 100644
--- a/src/com/engine/salary/service/SalaryAcctRecordService.java
+++ b/src/com/engine/salary/service/SalaryAcctRecordService.java
@@ -1,6 +1,7 @@
package com.engine.salary.service;
import com.engine.salary.common.LocalDateRange;
+import com.engine.salary.entity.salaryacct.param.SalaryAcctBatParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordQueryParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordSaveParam;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
@@ -227,4 +228,11 @@ public interface SalaryAcctRecordService {
*/
List listBySalaryAcctRecordIds(Collection salaryAcctRecordIds);
+
+ void batSave(SalaryAcctBatParam saveParam);
+
+ void batFile(SalaryAcctBatParam param);
+
+ void batReCalculate(SalaryAcctBatParam param);
+
}
diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java
index 01aec157f..8d97dbeaf 100644
--- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java
+++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java
@@ -6719,6 +6719,55 @@ public class SIAccountServiceImpl extends Service implements SIAccountService {
Util_DataCache.setObjVal(cacheKey, JsonUtil.toJsonString(welfareNames));
}
+ @Override
+ public void batSave(AccountBatParam accountBatParam) {
+ List paymentOrganizations = accountBatParam.getPaymentOrganizations();
+ for (Long paymentOrganization : paymentOrganizations) {
+ AccountParam param = AccountParam.builder()
+ .billMonth(accountBatParam.getBillMonth())
+ .paymentOrganization(paymentOrganization)
+ .flag(true)
+ .remarks(accountBatParam.getRemarks())
+ .build();
+ save(param);
+ }
+ }
+
+ @Override
+ public void batDelete(AccountBatParam batParam) {
+ List ids = batParam.getIds();
+ for (Long id : ids) {
+ InsuranceAccountBatchPO po = getInsuranceAccountBatchMapper().getById(id);
+ AccountParam param = AccountParam.builder()
+ .billMonth(po.getBillMonth())
+ .paymentOrganization(po.getPaymentOrganization())
+ .build();
+ delete(param);
+ }
+ }
+
+ @Override
+ public void batFile(AccountBatParam batParam) {
+ List ids = batParam.getIds();
+ for (Long id : ids) {
+ InsuranceAccountBatchPO po = getInsuranceAccountBatchMapper().getById(id);
+ AccountParam param = AccountParam.builder()
+ .billMonth(po.getBillMonth())
+ .paymentOrganization(po.getPaymentOrganization())
+ .build();
+ file(param);
+ }
+ }
+
+ @Override
+ public void batSocialSecurityBenefitsRecalculate(AccountBatParam batParam) {
+ List ids = batParam.getIds();
+ for (Long id : ids) {
+ InsuranceAccountBatchPO param = InsuranceAccountBatchPO.builder().id(id).build();
+ socialSecurityBenefitsRecalculate(param);
+ }
+ }
+
public void accountOtherView(InsuranceAccountViewListDTO dto, List pos) {
int otherNum = 0;
BigDecimal otherPaySum = new BigDecimal("0");
diff --git a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java
index 242a69c02..0edbada4a 100644
--- a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java
+++ b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java
@@ -11,6 +11,7 @@ import com.engine.salary.config.SalaryElogConfig;
import com.engine.salary.entity.salaryBill.po.SalarySendPO;
import com.engine.salary.entity.salaryacct.bo.SalaryAcctRecordBO;
import com.engine.salary.entity.salaryacct.param.AbnormalEmployeeListQueryParam;
+import com.engine.salary.entity.salaryacct.param.SalaryAcctBatParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordQueryParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordSaveParam;
import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO;
@@ -50,6 +51,7 @@ 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;
@@ -1005,4 +1007,38 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
public void updateDate(Long id, Date updateTime) {
getSalaryAcctRecordMapper().updateDate(id, updateTime);
}
+
+ @Override
+ public void batSave(SalaryAcctBatParam saveParam) {
+
+ List salarySobIds = saveParam.getSalarySobIds();
+ YearMonth salaryMonth = SalaryDateUtil.localDate2YearMonth(saveParam.getSalaryMonth());
+ for (int i = 0; i < salarySobIds.size(); i++) {
+ Long salarySobId = salarySobIds.get(i);
+ SalaryAcctRecordSaveParam param = SalaryAcctRecordSaveParam.builder()
+ .salarySobId(salarySobId)
+ .salaryMonth(salaryMonth)
+ .description(saveParam.getDescription())
+ .build();
+ save(param);
+ }
+ }
+
+ @Override
+ public void batFile(SalaryAcctBatParam param) {
+ List salaryAcctRecordIds = param.getSalaryAcctRecordIds();
+ for (int i = 0; i < salaryAcctRecordIds.size(); i++) {
+ Long recordId = salaryAcctRecordIds.get(i);
+ file(recordId);
+ }
+ }
+
+ @Override
+ public void batReCalculate(SalaryAcctBatParam param) {
+ List salaryAcctRecordIds = param.getSalaryAcctRecordIds();
+ for (int i = 0; i < salaryAcctRecordIds.size(); i++) {
+ Long recordId = salaryAcctRecordIds.get(i);
+ reCalculate(recordId);
+ }
+ }
}
diff --git a/src/com/engine/salary/web/SIAccountController.java b/src/com/engine/salary/web/SIAccountController.java
index 73a01b5e6..9e213dba2 100644
--- a/src/com/engine/salary/web/SIAccountController.java
+++ b/src/com/engine/salary/web/SIAccountController.java
@@ -217,6 +217,38 @@ public class SIAccountController {
return new ResponseResult(user).run(getService(user)::save, param);
}
+ @POST
+ @Path("/batSave")
+ @Produces(MediaType.APPLICATION_JSON)
+ public String batSave(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody AccountBatParam param) {
+ User user = HrmUserVarify.getUser(request, response);
+ return new ResponseResult(user).run(getService(user)::batSave, param);
+ }
+
+ @POST
+ @Path("/batDelete")
+ @Produces(MediaType.APPLICATION_JSON)
+ public String batDelete(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody AccountBatParam param) {
+ User user = HrmUserVarify.getUser(request, response);
+ return new ResponseResult(user).run(getService(user)::batDelete, param);
+ }
+
+ @POST
+ @Path("/batFile")
+ @Produces(MediaType.APPLICATION_JSON)
+ public String batFile(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody AccountBatParam param) {
+ User user = HrmUserVarify.getUser(request, response);
+ return new ResponseResult(user).run(getService(user)::batFile, param);
+ }
+
+ @POST
+ @Path("/batSocialSecurityBenefitsRecalculate")
+ @Produces(MediaType.APPLICATION_JSON)
+ public String batSocialSecurityBenefitsRecalculate(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody AccountBatParam batParam ){
+ User user = HrmUserVarify.getUser(request, response);
+ return new ResponseResult(user).run(getService(user)::batSocialSecurityBenefitsRecalculate,batParam);
+ }
+
/**
* 正常缴纳页核算
diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java
index 64f5a7bbd..1f42d825d 100644
--- a/src/com/engine/salary/web/SalaryAcctController.java
+++ b/src/com/engine/salary/web/SalaryAcctController.java
@@ -142,6 +142,43 @@ public class SalaryAcctController {
return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::reCalculate, param.getSalaryAcctRecordId());
}
+ //薪资核算
+ @POST
+ @Path("/batAccounting")
+ @Produces(MediaType.APPLICATION_JSON)
+ public String batAccounting(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctBatParam param) {
+ User user = HrmUserVarify.getUser(request, response);
+ return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::batCalculate, param);
+ }
+
+ //保存薪资核算的基本信息
+ @POST
+ @Path("/basic/batSave")
+ @Produces(MediaType.APPLICATION_JSON)
+ public String batSave(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctBatParam param) {
+ User user = HrmUserVarify.getUser(request, response);
+ return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::batSave, param);
+ }
+
+
+ //归档薪资核算记录
+ @POST
+ @Path("/batFile")
+ @Produces(MediaType.APPLICATION_JSON)
+ public String batFile(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctBatParam param) {
+ User user = HrmUserVarify.getUser(request, response);
+ return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::batFile, param);
+ }
+
+ //重新核算
+ @POST
+ @Path("/batReAccounting")
+ @Produces(MediaType.APPLICATION_JSON)
+ public String batReAccounting(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctBatParam param) {
+ User user = HrmUserVarify.getUser(request, response);
+ return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::batReCalculate, param);
+ }
+
//判断是否存在合并计税
@GET
@Path("/hasConsolidatedTax")
diff --git a/src/com/engine/salary/web/SalaryBillController.java b/src/com/engine/salary/web/SalaryBillController.java
index 64437a579..ab505d1ce 100644
--- a/src/com/engine/salary/web/SalaryBillController.java
+++ b/src/com/engine/salary/web/SalaryBillController.java
@@ -480,6 +480,29 @@ public class SalaryBillController {
return new ResponseResult>(user).run(getSalarySendWrapper(user)::withdraw, queryParam);
}
+ @POST
+ @Path("/send/batGrant")
+ @Produces(MediaType.APPLICATION_JSON)
+ public String batGrant(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalarySendBatParam queryParam) {
+ User user = HrmUserVarify.getUser(request, response);
+ return new ResponseResult>(user).run(getSalarySendWrapper(user)::batGrant, queryParam);
+ }
+
+ /**
+ * 工资单撤回
+ *
+ * @param queryParam
+ * @return
+ */
+ @POST
+ @Path("/send/batWithdraw")
+ @Produces(MediaType.APPLICATION_JSON)
+ public String batWithdraw(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalarySendBatParam queryParam) {
+ User user = HrmUserVarify.getUser(request, response);
+ return new ResponseResult>(user).run(getSalarySendWrapper(user)::batWithdraw, queryParam);
+ }
+
+
/**
* 工资单发放详情列表的高级搜索
*
diff --git a/src/com/engine/salary/web/TaxDeclarationController.java b/src/com/engine/salary/web/TaxDeclarationController.java
index e5a5ecb84..88e686346 100644
--- a/src/com/engine/salary/web/TaxDeclarationController.java
+++ b/src/com/engine/salary/web/TaxDeclarationController.java
@@ -5,6 +5,13 @@ import com.engine.salary.entity.taxdeclaration.dto.*;
import com.engine.salary.entity.taxdeclaration.param.*;
import com.engine.salary.entity.taxdeclaration.po.TaxDeclareStatusPO;
import com.engine.salary.enums.salarysob.IncomeCategoryEnum;
+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.TaxDeclarationBatParam;
+import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationDetailListQueryParam;
+import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationListQueryParam;
+import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationSaveParam;
import com.engine.salary.service.TaxDeclarationExcelService;
import com.engine.salary.service.TaxDeclarationService;
import com.engine.salary.service.impl.TaxDeclarationExcelServiceImpl;
@@ -475,6 +482,16 @@ public class TaxDeclarationController {
return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::add, param);
}
+ @POST
+ @Path("/batSave")
+ @Produces(MediaType.APPLICATION_JSON)
+ public String batSave(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclarationBatParam param) {
+ User user = HrmUserVarify.getUser(request, response);
+ param.setSalaryMonth(SalaryDateUtil.String2YearMonth(param.getSalaryMonthStr()));
+ return new ResponseResult(user).run(getTaxDeclarationWrapper(user)::batSave, param);
+ }
+
+
/**
* 编辑
diff --git a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java
index a9f9e0556..c96bf0a5d 100644
--- a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java
+++ b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java
@@ -10,12 +10,13 @@ import com.engine.salary.entity.salaryacct.bo.SalaryAcctRecordBO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctEmployeeCountDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctRecordFormDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctRecordListDTO;
+import com.engine.salary.entity.salaryacct.param.SalaryAcctBatParam;
+import com.engine.salary.entity.salaryacct.param.SalaryAcctCalculateParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordQueryParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordSaveParam;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctSobConfigPO;
import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO;
-import com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO;
import com.engine.salary.entity.salarysob.po.*;
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum;
@@ -55,6 +56,9 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord
private SalaryAcctRecordService getSalaryAcctRecordService(User user) {
return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user);
}
+ private SalaryAcctResultWrapper getSalaryAcctResultWrapper(User user) {
+ return ServiceUtil.getService(SalaryAcctResultWrapper.class, user);
+ }
private SalarySobService getSalarySobService(User user) {
return ServiceUtil.getService(SalarySobServiceImpl.class, user);
@@ -380,4 +384,28 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord
public void updateSobConfig(Long id) {
getSalaryAcctSobConfigService(user).updateBySalaryAcctRecordId(id);
}
+
+
+ public void batSave(SalaryAcctBatParam param) {
+ getSalaryAcctRecordService(user).batSave(param);
+ }
+
+
+ public void batFile(SalaryAcctBatParam param) {
+ getSalaryAcctRecordService(user).batFile(param);
+ }
+
+ public void batReCalculate(SalaryAcctBatParam param) {
+ getSalaryAcctRecordService(user).batReCalculate(param);
+
+ }
+
+ public void batCalculate(SalaryAcctBatParam param) {
+ List salaryAcctRecordIds = param.getSalaryAcctRecordIds();
+ for (int i = 0; i < salaryAcctRecordIds.size(); i++) {
+ Long recordId = salaryAcctRecordIds.get(i);
+ SalaryAcctCalculateParam calculateParam = SalaryAcctCalculateParam.builder().salaryAcctRecordId(recordId).build();
+ getSalaryAcctResultWrapper(user).calculate(calculateParam);
+ }
+ }
}
diff --git a/src/com/engine/salary/wrapper/SalarySendWrapper.java b/src/com/engine/salary/wrapper/SalarySendWrapper.java
index f97a798dc..cf263db9d 100644
--- a/src/com/engine/salary/wrapper/SalarySendWrapper.java
+++ b/src/com/engine/salary/wrapper/SalarySendWrapper.java
@@ -738,4 +738,28 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy
public String genPdfBeforeExport(SalaryExportPdfParam salaryExportPdfParam) {
return getSalaryBillService(user).genPdfBeforeExport(salaryExportPdfParam);
}
+
+
+ public void batGrant(SalarySendBatParam param) {
+ List salarySendIds = param.getSalarySendIds();
+
+ for (int i = 0; i < salarySendIds.size(); i++) {
+ Long sendId = salarySendIds.get(i);
+ SalarySendGrantParam grantParam = SalarySendGrantParam.builder()
+ .salarySendId(sendId)
+ .build();
+ grant(grantParam);
+ }
+ }
+ public void batWithdraw(SalarySendBatParam param) {
+ List salarySendIds = param.getSalarySendIds();
+
+ for (int i = 0; i < salarySendIds.size(); i++) {
+ Long sendId = salarySendIds.get(i);
+ SalarySendWithdrawParam grantParam = SalarySendWithdrawParam.builder()
+ .salarySendId(sendId)
+ .build();
+ withdraw(grantParam);
+ }
+ }
}
diff --git a/src/com/engine/salary/wrapper/TaxDeclarationWrapper.java b/src/com/engine/salary/wrapper/TaxDeclarationWrapper.java
index d98b8a419..9ae14cf75 100644
--- a/src/com/engine/salary/wrapper/TaxDeclarationWrapper.java
+++ b/src/com/engine/salary/wrapper/TaxDeclarationWrapper.java
@@ -2,14 +2,36 @@ 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.TaxDeclarationBatParam;
+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
@@ -31,5 +53,125 @@ public class TaxDeclarationWrapper extends Service {
private SalaryEmployeeService getSalaryEmployeeService(User user) {
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, "个税申报表不存在或已删除"));
+ }
+ //日期转换
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
+ String transformDate = simpleDateFormat.format(taxDeclaration.getSalaryMonth());
+ // 查询个税扣缴义务人
+ TaxAgentPO taxAgentPO = getTaxAgentService(user).getById(taxDeclaration.getTaxAgentId());
+ return TaxDeclarationInfoDTO.builder().salaryMonth(SalaryDateUtil.String2YearMonth(transformDate)).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);
+ }
+
+ public void batSave(TaxDeclarationBatParam param) {
+ List taxAgentIds = param.getTaxAgentIds();
+ for (int i = 0; i < taxAgentIds.size(); i++) {
+ Long taxAgentId = taxAgentIds.get(i);
+ TaxDeclarationSaveParam saveParam = TaxDeclarationSaveParam.builder()
+ .salaryMonth(param.getSalaryMonth())
+ .taxAgentId(taxAgentId)
+ .description(param.getDescription())
+ .taxCycle(param.getTaxCycle())
+ .salaryDate(param.getSalaryDate())
+ .build();
+ save(saveParam);
+ }
+
+ }
}