Merge branch 'feature/批量操作' into custom/钱智

# Conflicts:
#	src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java
#	src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationBatParam.java
#	src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.java
#	src/com/engine/salary/service/SIAccountService.java
#	src/com/engine/salary/service/SalaryAcctRecordService.java
#	src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java
#	src/com/engine/salary/web/SalaryAcctController.java
#	src/com/engine/salary/web/TaxDeclarationController.java
#	src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java
#	src/com/engine/salary/wrapper/TaxDeclarationWrapper.java
This commit is contained in:
钱涛 2025-11-14 09:20:59 +08:00
commit 5c2c0f603f
22 changed files with 151 additions and 9 deletions

View File

@ -0,0 +1,5 @@
ALTER TABLE hrsa_salary_acct_record ADD (
run_status varchar2(200) NULL
);
/

View File

@ -0,0 +1,5 @@
ALTER TABLE hrsa_salary_acct_record ADD (
run_status varchar2(200) NULL
);
/

View File

@ -0,0 +1,5 @@
ALTER TABLE hrsa_salary_acct_record ADD (
run_status varchar2(200) NULL
);
/

View File

@ -0,0 +1 @@
ALTER TABLE hrsa_salary_acct_record ADD COLUMN run_status varchar(200) ;

View File

@ -0,0 +1,4 @@
ALTER TABLE hrsa_salary_acct_record ADD (
run_status varchar2(200) NULL
)
/

View File

@ -0,0 +1 @@
ALTER TABLE hrsa_salary_acct_record ADD COLUMN run_status varchar(200) NULL;

View File

@ -0,0 +1,2 @@
ALTER TABLE hrsa_salary_acct_record ADD run_status varchar(200) NULL
GO

View File

@ -0,0 +1,5 @@
ALTER TABLE hrsa_salary_acct_record ADD (
run_status varchar2(200) NULL
);
/

View File

@ -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);
}

View File

@ -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<WeaTableOperate> operate;

View File

@ -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<String> salarySobIds;
//备注
@DataCheck(max = 80, message = "备注不能超过80个字符")
private String description;
}

View File

@ -36,4 +36,6 @@ public class SalaryAcctRecordSaveParam {
//备注
@DataCheck(max = 80, message = "备注不能超过80个字符")
private String description;
private String runStatus;
}

View File

@ -151,6 +151,11 @@ public class SalaryAcctRecordPO {
private Set<String> opts;
/**
* 执行状态
*/
private String runStatus;
//查询条件-------------------------------
Collection<Long> ids;

View File

@ -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;

View File

@ -81,7 +81,7 @@ public interface SalaryAcctRecordMapper {
List<SalaryAcctRecordPO> getBackCalcRecordByIds(@Param("collection") Set<Long> 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);
/**

View File

@ -16,6 +16,7 @@
<result column="tenant_key" property="tenantKey"/>
<result column="back_calc_status" property="backCalcStatus"/>
<result column="lock_salary_item_ids" property="lockSalaryItemIds" typeHandler="com.engine.salary.handle.SalaryListTypeHandler"/>
<result column="run_status" property="runStatus"/>
</resultMap>
<resultMap id="BaseResultMap2" type="com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO">
@ -56,6 +57,7 @@
, t.lock_salary_item_ids
, t.approval_status
, t.approval_id
, t.run_status
</sql>
<!-- 查询全部 -->
@ -226,6 +228,9 @@
<if test="tenantKey != null">
tenant_key,
</if>
<if test="runStatus != null">
run_status,
</if>
</trim>
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
<if test="id != null">
@ -264,6 +269,9 @@
<if test="tenantKey != null">
#{tenantKey},
</if>
<if test="runStatus != null">
#{runStatus},
</if>
</trim>
</insert>
@ -312,6 +320,9 @@
<if test="tenantKey != null">
tenant_key,
</if>
<if test="runStatus != null">
run_status,
</if>
</trim>
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
<if test="id != null">
@ -350,6 +361,9 @@
<if test="tenantKey != null">
#{tenantKey},
</if>
<if test="runStatus != null">
#{runStatus},
</if>
</trim>
</insert>
@ -455,7 +469,8 @@
<update id="updateDate">
UPDATE hrsa_salary_acct_record
SET update_time=#{updateTime}
SET update_time=#{updateTime},
run_status=#{runStatus}
WHERE delete_type = 0
AND id = #{id}
</update>

View File

@ -218,7 +218,7 @@ public interface SalaryAcctRecordService {
List<SalaryAcctRecordPO> listSome(SalaryAcctRecordPO po);
void updateDate(Long id, Date updateTime);
void updateDate(Long id, Date updateTime, String runStatus);
/**
* 根据薪资核算记录id查询关联的个税扣缴义务人

View File

@ -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) {

View File

@ -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());

View File

@ -142,6 +142,16 @@ public class SalaryAcctController {
return new ResponseResult<Long, Long>(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<SalaryAcctRecordBatchSaveParam, List<Long>>(user).run(getSalaryAcctRecordWrapper(user)::batSaveAndAcct, param);
}
//薪资核算
@POST
@Path("/batAccounting")

View File

@ -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<TaxDeclarationBatParam, Long>(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) {

View File

@ -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<Long> batSaveAndAcct(SalaryAcctRecordBatchSaveParam saveParam) {
List<Long> 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;
}
}