diff --git a/resource/sqlupgrade/DM/sql2025010801039TEST.sql b/resource/sqlupgrade/DM/sql2025010801039TEST.sql new file mode 100644 index 000000000..0ff8ef894 --- /dev/null +++ b/resource/sqlupgrade/DM/sql2025010801039TEST.sql @@ -0,0 +1,5 @@ +ALTER TABLE hrsa_salary_acct_record ADD ( + run_status varchar2(200) NULL +); +/ + diff --git a/resource/sqlupgrade/GS/sql2025010801039TEST.sql b/resource/sqlupgrade/GS/sql2025010801039TEST.sql new file mode 100644 index 000000000..0ff8ef894 --- /dev/null +++ b/resource/sqlupgrade/GS/sql2025010801039TEST.sql @@ -0,0 +1,5 @@ +ALTER TABLE hrsa_salary_acct_record ADD ( + run_status varchar2(200) NULL +); +/ + diff --git a/resource/sqlupgrade/JC/sql2025010801039TEST.sql b/resource/sqlupgrade/JC/sql2025010801039TEST.sql new file mode 100644 index 000000000..0ff8ef894 --- /dev/null +++ b/resource/sqlupgrade/JC/sql2025010801039TEST.sql @@ -0,0 +1,5 @@ +ALTER TABLE hrsa_salary_acct_record ADD ( + run_status varchar2(200) NULL +); +/ + diff --git a/resource/sqlupgrade/Mysql/sql2025010801039TEST.sql b/resource/sqlupgrade/Mysql/sql2025010801039TEST.sql new file mode 100644 index 000000000..655a1452b --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql2025010801039TEST.sql @@ -0,0 +1 @@ +ALTER TABLE hrsa_salary_acct_record ADD COLUMN run_status varchar(200) ; \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql2025010801039TEST.sql b/resource/sqlupgrade/Oracle/sql2025010801039TEST.sql new file mode 100644 index 000000000..b5f15e56e --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql2025010801039TEST.sql @@ -0,0 +1,4 @@ +ALTER TABLE hrsa_salary_acct_record ADD ( + run_status varchar2(200) NULL +) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql2025010801039TEST.sql b/resource/sqlupgrade/PG/sql2025010801039TEST.sql new file mode 100644 index 000000000..7870635b2 --- /dev/null +++ b/resource/sqlupgrade/PG/sql2025010801039TEST.sql @@ -0,0 +1 @@ +ALTER TABLE hrsa_salary_acct_record ADD COLUMN run_status varchar(200) NULL; \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql2025010801039TEST.sql b/resource/sqlupgrade/SQLServer/sql2025010801039TEST.sql new file mode 100644 index 000000000..4651f7cd3 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql2025010801039TEST.sql @@ -0,0 +1,2 @@ +ALTER TABLE hrsa_salary_acct_record ADD run_status varchar(200) NULL +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql2025010801039TEST.sql b/resource/sqlupgrade/ST/sql2025010801039TEST.sql new file mode 100644 index 000000000..0ff8ef894 --- /dev/null +++ b/resource/sqlupgrade/ST/sql2025010801039TEST.sql @@ -0,0 +1,5 @@ +ALTER TABLE hrsa_salary_acct_record ADD ( + run_status varchar2(200) NULL +); +/ + diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java index 408da743f..1a534b2f9 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java @@ -107,6 +107,7 @@ public class SalaryAcctRecordBO { .updateTime(SalaryDateUtil.getFormatLocalDateTime(salaryAcctRecordPO.getUpdateTime())) .description(salaryAcctRecordPO.getDescription()) .approvalStatus(salaryAcctRecordPO.getApprovalStatus()) + .runStatus(salaryAcctRecordPO.getRunStatus()) .operate(btnList) .opts(salaryAcctRecordPO.getOpts()) .build(); @@ -124,7 +125,7 @@ public class SalaryAcctRecordBO { */ public static SalaryAcctRecordPO convert2PO(SalaryAcctRecordSaveParam saveParam, SalarySobCycleDTO salarySobCycle, - int acctTimes, Long employeeId) { + int acctTimes, Long employeeId, String runStatus) { Date now = new Date(); return new SalaryAcctRecordPO() .setSalaryMonth(SalaryDateUtil.localDateToDate(saveParam.getSalaryMonth().atDay(1))) @@ -138,6 +139,7 @@ public class SalaryAcctRecordBO { .setCreator(employeeId) .setCreateTime(now) .setUpdateTime(now) + .setRunStatus(runStatus) .setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY); } diff --git a/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctRecordListDTO.java b/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctRecordListDTO.java index e3d9b8fcc..33bc15ee2 100644 --- a/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctRecordListDTO.java +++ b/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctRecordListDTO.java @@ -67,6 +67,9 @@ public class SalaryAcctRecordListDTO { @TableTitle(title = "审批状态", dataIndex = "approvalStatus", key = "approvalStatus") private String approvalStatus; + @TableTitle(title = "执行状态", dataIndex = "runStatus", key = "runStatus") + private String runStatus; + @TableTitle(title = "操作", dataIndex = "operate", key = "operate") private List operate; diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctRecordBatchSaveParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctRecordBatchSaveParam.java new file mode 100644 index 000000000..aad8d394b --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctRecordBatchSaveParam.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.Date; +import java.util.List; + +/** + * @author Harryxzy + * @ClassName SalaryAcctRecordBatchSaveParam + * @date 2025/06/09 9:45 + * @description 薪资核算基本信息保存参数 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//薪资核算基本信息保存参数 +public class SalaryAcctRecordBatchSaveParam { + + //薪资所属月 + @DataCheck(require = true, message = "薪资所属月格式错误") + private Date salaryMonth; + + private String salaryMonthStr; + + //薪资账套id + private List salarySobIds; + + //备注 + @DataCheck(max = 80, message = "备注不能超过80个字符") + private String description; +} diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctRecordSaveParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctRecordSaveParam.java index 62890c5da..de134d6af 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctRecordSaveParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctRecordSaveParam.java @@ -36,4 +36,6 @@ public class SalaryAcctRecordSaveParam { //备注 @DataCheck(max = 80, message = "备注不能超过80个字符") private String description; + + private String runStatus; } diff --git a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java index ad062d7ff..b847314ba 100644 --- a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java +++ b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java @@ -151,6 +151,11 @@ public class SalaryAcctRecordPO { private Set opts; + /** + * 执行状态 + */ + private String runStatus; + //查询条件------------------------------- Collection ids; diff --git a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationBatParam.java b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationBatParam.java index 0b309e9c4..d8d4d4fde 100644 --- a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationBatParam.java +++ b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationBatParam.java @@ -6,6 +6,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.time.YearMonth; import java.util.Date; import java.util.List; diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.java b/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.java index 465834b7e..a925a7d2b 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.java +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.java @@ -81,7 +81,7 @@ public interface SalaryAcctRecordMapper { List getBackCalcRecordByIds(@Param("collection") Set salaryAcctIds); - void updateDate(@Param("id")Long id, @Param("updateTime")Date updateTime); + void updateDate(@Param("id")Long id, @Param("updateTime")Date updateTime, @Param("runStatus")String runStatus); /** diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml index 519af2c54..42435893e 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml @@ -16,6 +16,7 @@ + @@ -56,6 +57,7 @@ , t.lock_salary_item_ids , t.approval_status , t.approval_id + , t.run_status @@ -226,6 +228,9 @@ tenant_key, + + run_status, + @@ -264,6 +269,9 @@ #{tenantKey}, + + #{runStatus}, + @@ -312,6 +320,9 @@ tenant_key, + + run_status, + @@ -350,6 +361,9 @@ #{tenantKey}, + + #{runStatus}, + @@ -455,7 +469,8 @@ UPDATE hrsa_salary_acct_record - SET update_time=#{updateTime} + SET update_time=#{updateTime}, + run_status=#{runStatus} WHERE delete_type = 0 AND id = #{id} diff --git a/src/com/engine/salary/service/SalaryAcctRecordService.java b/src/com/engine/salary/service/SalaryAcctRecordService.java index 28c838536..f12105c38 100644 --- a/src/com/engine/salary/service/SalaryAcctRecordService.java +++ b/src/com/engine/salary/service/SalaryAcctRecordService.java @@ -218,7 +218,7 @@ public interface SalaryAcctRecordService { List listSome(SalaryAcctRecordPO po); - void updateDate(Long id, Date updateTime); + void updateDate(Long id, Date updateTime, String runStatus); /** * 根据薪资核算记录id查询关联的个税扣缴义务人 diff --git a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java index 0edbada4a..1fa0d4203 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java @@ -12,6 +12,7 @@ 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.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,8 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import weaver.hrm.User; +import weaver.wechat.util.Utils; +import weaver.wechat.util.Utils; import java.time.YearMonth; import java.util.*; @@ -331,8 +334,7 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe .count(); // 转换成po - SalaryAcctRecordPO salaryAcctRecordPO = SalaryAcctRecordBO.convert2PO(saveParam, salarySobCycleDTO, (int) acctTimes, (long) user.getUID()); - + SalaryAcctRecordPO salaryAcctRecordPO = SalaryAcctRecordBO.convert2PO(saveParam, salarySobCycleDTO, (int) acctTimes, (long) user.getUID(), Utils.null2String(saveParam.getRunStatus())); // 检查是否能够新建核算 SalaryAcctTaxAgentPO build = SalaryAcctTaxAgentPO.builder() .incomeCategory(salarySobPO.getIncomeCategory()) @@ -1004,10 +1006,11 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe } @Override - public void updateDate(Long id, Date updateTime) { - getSalaryAcctRecordMapper().updateDate(id, updateTime); + public void updateDate(Long id, Date updateTime, String runStatus) { + getSalaryAcctRecordMapper().updateDate(id, updateTime, runStatus); } + @Override public void batSave(SalaryAcctBatParam saveParam) { diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 1b78e42d4..1ed826103 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -965,7 +965,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe getSalaryAcctProgressService(user).finish(SalaryCacheKey.ACCT_PROGRESS + calculateParam.getSalaryAcctRecordId(), true); //更新薪资核算记录最后操作日期 - getSalaryAcctRecordService(user).updateDate(salaryAcctRecordPO.getId(), new Date()); + getSalaryAcctRecordService(user).updateDate(salaryAcctRecordPO.getId(), new Date(), "核算完成"); stopWatch.stop(); log.info(stopWatch.prettyPrint()); diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index 1f42d825d..4757a8c32 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -142,6 +142,16 @@ public class SalaryAcctController { return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::reCalculate, param.getSalaryAcctRecordId()); } + //批量保存并核算 + @POST + @Path("/batSaveAndAcct") + @Produces(MediaType.APPLICATION_JSON) + public String batSaveAndAcct(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctRecordBatchSaveParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalaryAcctRecordWrapper(user)::batSaveAndAcct, param); + } + + //薪资核算 @POST @Path("/batAccounting") diff --git a/src/com/engine/salary/web/TaxDeclarationController.java b/src/com/engine/salary/web/TaxDeclarationController.java index 8a953dc92..a98c540ce 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; @@ -546,6 +553,16 @@ public class TaxDeclarationController { * @return */ @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); + } + + //个税申报表详情列表 + @POST @Path("/detail/list") @Produces(MediaType.APPLICATION_JSON) public String listTaxDeclarationValue(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclarationValueListQueryParam queryParam) { diff --git a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java index c96bf0a5d..1ecaa6fd1 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java @@ -14,6 +14,7 @@ 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.param.*; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctSobConfigPO; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; @@ -408,4 +409,22 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord getSalaryAcctResultWrapper(user).calculate(calculateParam); } } + + public List batSaveAndAcct(SalaryAcctRecordBatchSaveParam saveParam) { + List ids = saveParam.getSalarySobIds().stream().filter(NumberUtils::isCreatable) + .map(Long::valueOf).map(salarySobId -> { + SalaryAcctRecordSaveParam build = SalaryAcctRecordSaveParam.builder() + .salarySobId(salarySobId) + .salaryMonth(SalaryDateUtil.localDate2YearMonth(saveParam.getSalaryMonth())) + .description(saveParam.getDescription()) + .runStatus("核算中") + .build(); + return save(build); + }).collect(Collectors.toList()); + + ids.forEach(salaryAcctRecordId -> { + getSalaryAcctResultWrapper(user).calculate(SalaryAcctCalculateParam.builder().salaryAcctRecordId(salaryAcctRecordId).build()); + }); + return ids; + } }