Merge branch 'release/3.0.2.2504.01' into release/个税&业务线

This commit is contained in:
钱涛 2025-04-21 14:27:00 +08:00
commit 110cec1b33
28 changed files with 424 additions and 314 deletions

View File

@ -1,5 +1,5 @@
log=false
defaultCloseNonStandard149=true
AESEncryptScrect=990EB004A1C862721C1513AE90038C9E
version=3.0.1.2503.01
version=3.0.2.2504.01
openFormulaForcedEditing=false

View File

@ -32,39 +32,3 @@ CREATE TABLE hrsa_push_setting_item
);
/
CREATE TABLE hrsa_push_record
(
id NUMBER(38,0) NOT NULL,
name varchar2(200),
setting_id NUMBER(38,0),
mode_id number,
table_name varchar2(100),
acct_record_id NUMBER(38,0),
type number,
status number,
start_time date,
end_time date,
creator NUMBER(38,0),
create_time date,
update_time date,
delete_type number,
tenant_key varchar2(10)
);
/
CREATE TABLE hrsa_push_record_detail
(
id NUMBER(38,0) NOT NULL,
record_id NUMBER(38,0),
acct_emp_id NUMBER(38,0),
formula CLOB,
execute_time date,
status number,
creator NUMBER(38,0),
create_time date,
update_time date,
delete_type number,
tenant_key varchar2(10)
);
/

View File

@ -1,3 +1,39 @@
CREATE TABLE hrsa_push_record
(
id NUMBER(38,0) NOT NULL,
name varchar2(200),
setting_id NUMBER(38,0),
mode_id number,
table_name varchar2(100),
acct_record_id NUMBER(38,0),
type number,
status number,
start_time date,
end_time date,
creator NUMBER(38,0),
create_time date,
update_time date,
delete_type number,
tenant_key varchar2(10)
);
/
CREATE TABLE hrsa_push_record_detail
(
id NUMBER(38,0) NOT NULL,
record_id NUMBER(38,0),
acct_emp_id NUMBER(38,0),
formula CLOB,
execute_time date,
status number,
creator NUMBER(38,0),
create_time date,
update_time date,
delete_type number,
tenant_key varchar2(10)
);
/
ALTER TABLE hrsa_push_record ADD fail_reason varchar2(4000);
/

View File

@ -32,39 +32,3 @@ CREATE TABLE hrsa_push_setting_item
);
/
CREATE TABLE hrsa_push_record
(
id NUMBER(38,0) NOT NULL,
name varchar2(200),
setting_id NUMBER(38,0),
mode_id number,
table_name varchar2(100),
acct_record_id NUMBER(38,0),
type number,
status number,
start_time date,
end_time date,
creator NUMBER(38,0),
create_time date,
update_time date,
delete_type number,
tenant_key varchar2(10)
);
/
CREATE TABLE hrsa_push_record_detail
(
id NUMBER(38,0) NOT NULL,
record_id NUMBER(38,0),
acct_emp_id NUMBER(38,0),
formula CLOB,
execute_time date,
status number,
creator NUMBER(38,0),
create_time date,
update_time date,
delete_type number,
tenant_key varchar2(10)
);
/

View File

@ -1,3 +1,39 @@
CREATE TABLE hrsa_push_record
(
id NUMBER(38,0) NOT NULL,
name varchar2(200),
setting_id NUMBER(38,0),
mode_id number,
table_name varchar2(100),
acct_record_id NUMBER(38,0),
type number,
status number,
start_time date,
end_time date,
creator NUMBER(38,0),
create_time date,
update_time date,
delete_type number,
tenant_key varchar2(10)
);
/
CREATE TABLE hrsa_push_record_detail
(
id NUMBER(38,0) NOT NULL,
record_id NUMBER(38,0),
acct_emp_id NUMBER(38,0),
formula CLOB,
execute_time date,
status number,
creator NUMBER(38,0),
create_time date,
update_time date,
delete_type number,
tenant_key varchar2(10)
);
/
ALTER TABLE hrsa_push_record ADD fail_reason varchar2(4000);
/

View File

@ -32,39 +32,3 @@ CREATE TABLE hrsa_push_setting_item
);
/
CREATE TABLE hrsa_push_record
(
id NUMBER(38,0) NOT NULL,
name varchar2(200),
setting_id NUMBER(38,0),
mode_id number,
table_name varchar2(100),
acct_record_id NUMBER(38,0),
type number,
status number,
start_time date,
end_time date,
creator NUMBER(38,0),
create_time date,
update_time date,
delete_type number,
tenant_key varchar2(10)
);
/
CREATE TABLE hrsa_push_record_detail
(
id NUMBER(38,0) NOT NULL,
record_id NUMBER(38,0),
acct_emp_id NUMBER(38,0),
formula CLOB,
execute_time date,
status number,
creator NUMBER(38,0),
create_time date,
update_time date,
delete_type number,
tenant_key varchar2(10)
);
/

View File

@ -1,3 +1,39 @@
CREATE TABLE hrsa_push_record
(
id NUMBER(38,0) NOT NULL,
name varchar2(200),
setting_id NUMBER(38,0),
mode_id number,
table_name varchar2(100),
acct_record_id NUMBER(38,0),
type number,
status number,
start_time date,
end_time date,
creator NUMBER(38,0),
create_time date,
update_time date,
delete_type number,
tenant_key varchar2(10)
);
/
CREATE TABLE hrsa_push_record_detail
(
id NUMBER(38,0) NOT NULL,
record_id NUMBER(38,0),
acct_emp_id NUMBER(38,0),
formula CLOB,
execute_time date,
status number,
creator NUMBER(38,0),
create_time date,
update_time date,
delete_type number,
tenant_key varchar2(10)
);
/
ALTER TABLE hrsa_push_record ADD fail_reason varchar2(4000);
/

View File

@ -33,39 +33,3 @@ CREATE TABLE hrsa_push_setting_item
PRIMARY KEY (id) USING BTREE
);
CREATE TABLE hrsa_push_record
(
id bigint(0) NOT NULL,
name varchar(200),
setting_id bigint(0),
mode_id int(0),
table_name varchar(100),
acct_record_id bigint(0),
type int(0),
status int(0),
start_time datetime(0),
end_time datetime(0),
creator bigint(0),
create_time datetime(0),
update_time datetime(0),
delete_type int(0),
tenant_key varchar(10),
PRIMARY KEY (id) USING BTREE
);
CREATE TABLE hrsa_push_record_detail
(
id bigint(0) NOT NULL,
record_id bigint(0),
acct_emp_id bigint(0),
formula text,
execute_time datetime(0),
status int(0),
creator bigint(0),
create_time datetime(0),
update_time datetime(0),
delete_type int(0),
tenant_key varchar(10),
PRIMARY KEY (id) USING BTREE
);

View File

@ -1,3 +1,39 @@
CREATE TABLE hrsa_push_record
(
id bigint(0) NOT NULL,
name varchar(200),
setting_id bigint(0),
mode_id int(0),
table_name varchar(100),
acct_record_id bigint(0),
type int(0),
status int(0),
start_time datetime(0),
end_time datetime(0),
creator bigint(0),
create_time datetime(0),
update_time datetime(0),
delete_type int(0),
tenant_key varchar(10),
PRIMARY KEY (id) USING BTREE
);
CREATE TABLE hrsa_push_record_detail
(
id bigint(0) NOT NULL,
record_id bigint(0),
acct_emp_id bigint(0),
formula text,
execute_time datetime(0),
status int(0),
creator bigint(0),
create_time datetime(0),
update_time datetime(0),
delete_type int(0),
tenant_key varchar(10),
PRIMARY KEY (id) USING BTREE
);
ALTER TABLE hrsa_push_record ADD COLUMN fail_reason varchar(4000);
ALTER TABLE hrsa_push_record_detail ADD COLUMN fail_reason varchar(4000) ;

View File

@ -31,41 +31,4 @@ CREATE TABLE hrsa_push_setting_item
delete_type number,
tenant_key varchar2(10)
)
/
CREATE TABLE hrsa_push_record
(
id NUMBER(38,0) NOT NULL,
name varchar2(200),
setting_id NUMBER(38,0),
mode_id number,
table_name varchar2(100),
acct_record_id NUMBER(38,0),
type number,
status number,
start_time date,
end_time date,
creator NUMBER(38,0),
create_time date,
update_time date,
delete_type number,
tenant_key varchar2(10)
)
/
CREATE TABLE hrsa_push_record_detail
(
id NUMBER(38,0) NOT NULL,
record_id NUMBER(38,0),
acct_emp_id NUMBER(38,0),
formula CLOB,
execute_time date,
status number,
creator NUMBER(38,0),
create_time date,
update_time date,
delete_type number,
tenant_key varchar2(10)
)
/

View File

@ -1,3 +1,39 @@
CREATE TABLE hrsa_push_record
(
id NUMBER(38,0) NOT NULL,
name varchar2(200),
setting_id NUMBER(38,0),
mode_id number,
table_name varchar2(100),
acct_record_id NUMBER(38,0),
type number,
status number,
start_time date,
end_time date,
creator NUMBER(38,0),
create_time date,
update_time date,
delete_type number,
tenant_key varchar2(10)
)
/
CREATE TABLE hrsa_push_record_detail
(
id NUMBER(38,0) NOT NULL,
record_id NUMBER(38,0),
acct_emp_id NUMBER(38,0),
formula CLOB,
execute_time date,
status number,
creator NUMBER(38,0),
create_time date,
update_time date,
delete_type number,
tenant_key varchar2(10)
)
/
ALTER TABLE hrsa_push_record ADD fail_reason varchar2(4000);
/

View File

@ -31,41 +31,4 @@ CREATE TABLE hrsa_push_setting_item
delete_type int,
tenant_key varchar(10),
PRIMARY KEY (id)
);
CREATE TABLE hrsa_push_record
(
id bigint NOT NULL,
name varchar(200),
setting_id bigint,
mode_id int,
table_name varchar(100),
acct_record_id bigint,
type int,
status int,
start_time timestamp,
end_time timestamp,
creator bigint,
create_time timestamp,
update_time timestamp,
delete_type int,
tenant_key varchar(10),
PRIMARY KEY (id)
);
CREATE TABLE hrsa_push_record_detail
(
id bigint NOT NULL,
record_id bigint,
acct_emp_id bigint,
formula text,
execute_time timestamp,
status int,
creator bigint,
create_time timestamp,
update_time timestamp,
delete_type int,
tenant_key varchar(10),
PRIMARY KEY (id)
);

View File

@ -1,3 +1,39 @@
CREATE TABLE hrsa_push_record
(
id bigint NOT NULL,
name varchar(200),
setting_id bigint,
mode_id int,
table_name varchar(100),
acct_record_id bigint,
type int,
status int,
start_time timestamp,
end_time timestamp,
creator bigint,
create_time timestamp,
update_time timestamp,
delete_type int,
tenant_key varchar(10),
PRIMARY KEY (id)
);
CREATE TABLE hrsa_push_record_detail
(
id bigint NOT NULL,
record_id bigint,
acct_emp_id bigint,
formula text,
execute_time timestamp,
status int,
creator bigint,
create_time timestamp,
update_time timestamp,
delete_type int,
tenant_key varchar(10),
PRIMARY KEY (id)
);
alter table hrsa_push_record add fail_reason VARCHAR(4000) ;
alter table hrsa_push_record_detail add fail_reason VARCHAR(4000) ;

View File

@ -33,43 +33,4 @@ CREATE TABLE hrsa_push_setting_item
tenant_key varchar(10),
PRIMARY KEY (id)
)
GO
CREATE TABLE hrsa_push_record
(
id bigint NOT NULL,
name varchar(200),
setting_id bigint,
mode_id int,
table_name varchar(100),
acct_record_id bigint,
type int,
status int,
start_time datetime,
end_time datetime,
creator bigint,
create_time datetime,
update_time datetime,
delete_type int,
tenant_key varchar(10),
PRIMARY KEY (id)
)
GO
CREATE TABLE hrsa_push_record_detail
(
id bigint NOT NULL,
record_id bigint,
acct_emp_id bigint,
formula text,
execute_time datetime,
status int,
creator bigint,
create_time datetime,
update_time datetime,
delete_type int,
tenant_key varchar(10),
PRIMARY KEY (id)
)
GO

View File

@ -1,3 +1,41 @@
CREATE TABLE hrsa_push_record
(
id bigint NOT NULL,
name varchar(200),
setting_id bigint,
mode_id int,
table_name varchar(100),
acct_record_id bigint,
type int,
status int,
start_time datetime,
end_time datetime,
creator bigint,
create_time datetime,
update_time datetime,
delete_type int,
tenant_key varchar(10),
PRIMARY KEY (id)
)
GO
CREATE TABLE hrsa_push_record_detail
(
id bigint NOT NULL,
record_id bigint,
acct_emp_id bigint,
formula text,
execute_time datetime,
status int,
creator bigint,
create_time datetime,
update_time datetime,
delete_type int,
tenant_key varchar(10),
PRIMARY KEY (id)
)
GO
alter table hrsa_push_record add fail_reason VARCHAR(4000)
go

View File

@ -32,39 +32,3 @@ CREATE TABLE hrsa_push_setting_item
);
/
CREATE TABLE hrsa_push_record
(
id NUMBER(38,0) NOT NULL,
name varchar2(200),
setting_id NUMBER(38,0),
mode_id number,
table_name varchar2(100),
acct_record_id NUMBER(38,0),
type number,
status number,
start_time date,
end_time date,
creator NUMBER(38,0),
create_time date,
update_time date,
delete_type number,
tenant_key varchar2(10)
);
/
CREATE TABLE hrsa_push_record_detail
(
id NUMBER(38,0) NOT NULL,
record_id NUMBER(38,0),
acct_emp_id NUMBER(38,0),
formula CLOB,
execute_time date,
status number,
creator NUMBER(38,0),
create_time date,
update_time date,
delete_type number,
tenant_key varchar2(10)
);
/

View File

@ -1,3 +1,39 @@
CREATE TABLE hrsa_push_record
(
id NUMBER(38,0) NOT NULL,
name varchar2(200),
setting_id NUMBER(38,0),
mode_id number,
table_name varchar2(100),
acct_record_id NUMBER(38,0),
type number,
status number,
start_time date,
end_time date,
creator NUMBER(38,0),
create_time date,
update_time date,
delete_type number,
tenant_key varchar2(10)
);
/
CREATE TABLE hrsa_push_record_detail
(
id NUMBER(38,0) NOT NULL,
record_id NUMBER(38,0),
acct_emp_id NUMBER(38,0),
formula CLOB,
execute_time date,
status number,
creator NUMBER(38,0),
create_time date,
update_time date,
delete_type number,
tenant_key varchar2(10)
);
/
ALTER TABLE hrsa_push_record ADD fail_reason varchar2(4000);
/

View File

@ -7,6 +7,8 @@ import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeTaxAgentDTO;
import com.engine.salary.mapper.salarybill.SalarySendRangeObjMapper;
import com.engine.salary.service.TaxAgentService;
import com.engine.salary.service.impl.TaxAgentServiceImpl;
import com.engine.salary.util.db.MapperProxyFactory;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.ibatis.session.SqlSession;
import weaver.conn.mybatis.MyBatisFactory;
@ -23,6 +25,10 @@ public class SalarySendRangeObjBiz {
return ServiceUtil.getService(TaxAgentServiceImpl.class);
}
private SalarySendRangeObjMapper getSalarySendRangeObjMapper() {
return MapperProxyFactory.getProxy(SalarySendRangeObjMapper.class);
}
public <R> R applyMapper(Function<SalarySendRangeObjMapper, R> mapper) {
try (SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession()) {
final SalarySendRangeObjMapper salarySendRangeObjMapper = sqlSession.getMapper(SalarySendRangeObjMapper.class);
@ -41,7 +47,13 @@ public class SalarySendRangeObjBiz {
}
public List<SalarySendUserInfoDTO> getSalarySendUserInfoDTOs(List<Long> employees) {
List<SalarySendUserInfoDTO> userDTOs = applyMapper(mapper -> mapper.getUserInfoByEmployeeIds(employees));
List<SalarySendUserInfoDTO> userDTOs = new ArrayList<>();
List<List<Long>> partition = Lists.partition(employees, 500);
partition.forEach(l->{
List<SalarySendUserInfoDTO> userInfos = getSalarySendRangeObjMapper().getUserInfoByEmployeeIds(l);
userDTOs.addAll(userInfos);
});
Map<Long, SalarySendUserInfoDTO> userMap = userDTOs.stream()
.collect(Collectors.toMap(SalarySendUserInfoDTO::getResourceId, Function.identity()));

View File

@ -5,6 +5,8 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@ -13,9 +15,6 @@ import lombok.NoArgsConstructor;
public class PushParam {
private Long id;
private Long salaryAcctRecordId;
private List<Long> ids;
}

View File

@ -0,0 +1,20 @@
package com.engine.salary.entity.push.param;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WithdrawParam {
private List<Long> ids;
}

View File

@ -0,0 +1,29 @@
package com.engine.salary.entity.push.param;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 创建推送记录
* <p>Copyright: Copyright (c) 2024</p>
* <p>Company: 泛微软件</p>
*
* @author qiantao
* @version 1.0
**/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WithdrawPushParam {
private List<Long> ids;
}

View File

@ -7,6 +7,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.YearMonth;
import java.util.List;
/**
* 薪资核算列表查询参数
@ -31,6 +32,11 @@ public class SalaryAcctRecordQueryParam extends BaseQueryParam {
//账套名称")
private String name;
/**
* 扣缴义务人id集合
*/
private List<Long> taxAgentIds;
private String startMonthStr;
private String endMonthStr;
}

View File

@ -1,5 +1,6 @@
package com.engine.salary.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.api.formmode.mybatis.util.SqlProxyHandle;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
@ -207,6 +208,21 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
Set<Long> salarySobIds = SalaryEntityUtil.properties(salarySobPOS, SalarySobPO::getId);
po.setSalarySobIds(salarySobIds);
}
if (CollUtil.isNotEmpty(queryParam.getTaxAgentIds())) {
List<SalarySobPO> salarySobPOS = getSalarySobService(user).listByTaxAgentIds(queryParam.getTaxAgentIds());
if (CollectionUtils.isEmpty(salarySobPOS)) {
return page;
}
Set<Long> salarySobIds = SalaryEntityUtil.properties(salarySobPOS, SalarySobPO::getId);
Collection<Long> existIds = po.getSalarySobIds();
if (CollectionUtils.isNotEmpty(existIds)) {
existIds = SalaryEntityUtil.intersectionForList(existIds, salarySobIds);
po.setSalarySobIds(existIds);
} else {
po.setSalarySobIds(salarySobIds);
}
}
LocalDateRange localDateRange = new LocalDateRange();
if (Objects.nonNull(queryParam.getStartMonth())) {
localDateRange.setFromDate(SalaryDateUtil.localDateToDate(queryParam.getStartMonth().atDay(1)));
@ -981,6 +997,6 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
@Override
public void updateDate(Long id, Date updateTime) {
getSalaryAcctRecordMapper().updateDate(id,updateTime);
getSalaryAcctRecordMapper().updateDate(id, updateTime);
}
}

View File

@ -1356,7 +1356,12 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe
if (CollectionUtils.isEmpty(employeeIds)) {
return Collections.emptyList();
}
return getSalaryArchiveMapper().listPayEndDateIsNull(employeeIds);
List<List<Long>> partition = Lists.partition(employeeIds, 500);
List<SalaryArchivePO> resultList = new ArrayList<>();
partition.forEach(part -> {
resultList.addAll(getSalaryArchiveMapper().listPayEndDateIsNull(part));
});
return resultList;
}
@Override

View File

@ -166,16 +166,6 @@ public class SalaryBillServiceImpl extends Service implements SalaryBillService
&& Optional.ofNullable(salaryBillProgress.getProgress()).orElse(BigDecimal.ZERO).compareTo(BigDecimal.ONE) < 0) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(136104, "有其他人员正在发送中,请等待其他人员发送结束后再操作"));
}
// 初始化进度
ProgressDTO initProgress = ProgressDTO.builder()
.title(SalaryI18nUtil.getI18nLabel(136097, "发送中"))
.totalQuantity(NumberUtils.INTEGER_ZERO)
.calculatedQuantity(NumberUtils.INTEGER_ZERO)
.progress(BigDecimal.ZERO)
.status(true)
.message("")
.build();
getProgressService(user).initProgress(SalaryCacheKey.SALARY_GRANT_PROGRESS + "_" + salarySend.getId(), initProgress);
List<Long> ids = param.getIds();
@ -187,6 +177,17 @@ public class SalaryBillServiceImpl extends Service implements SalaryBillService
throw new SalaryRunTimeException("工资发放范围内没有匹配员工");
}
}
// 初始化进度
ProgressDTO initProgress = ProgressDTO.builder()
.title(SalaryI18nUtil.getI18nLabel(136097, "发送中"))
.totalQuantity(NumberUtils.INTEGER_ZERO)
.calculatedQuantity(NumberUtils.INTEGER_ZERO)
.progress(BigDecimal.ZERO)
.status(true)
.message("")
.build();
getProgressService(user).initProgress(SalaryCacheKey.SALARY_GRANT_PROGRESS + "_" + salarySend.getId(), initProgress);
// 异步执行
List<Long> finalIds = ids;
LocalRunnable localRunnable = new LocalRunnable() {

View File

@ -284,7 +284,7 @@ public class SalarySobServiceImpl extends Service implements SalarySobService {
}
if (queryParam.getTaxAgentId() != null) {
List<SobTaxLinkPO> sobTaxLinkPOS = getSobTaxLinkMapper().listSome(SobTaxLinkPO.builder().taxAgentId(queryParam.getTaxAgentId()).build());
build.setIds(sobTaxLinkPOS.stream().map(SobTaxLinkPO::getTaxAgentId).collect(Collectors.toList()));
build.setIds(sobTaxLinkPOS.stream().map(SobTaxLinkPO::getSobId).collect(Collectors.toList()));
}
List<SalarySobPO> list = getSalarySobMapper().listSome(build);

View File

@ -123,4 +123,12 @@ public class PushController {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<PushParam, String>(user).run(getPushWrapper(user)::push, param);
}
@POST
@Path("/record/withdraw")
@Produces(MediaType.APPLICATION_JSON)
public String push(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody WithdrawParam param) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<WithdrawParam, String>(user).run(getPushWrapper(user)::withdraw, param);
}
}

View File

@ -1,5 +1,6 @@
package com.engine.salary.wrapper;
import cn.hutool.core.collection.CollUtil;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.entity.push.dto.PushRecordDTO;
@ -16,6 +17,7 @@ import com.engine.salary.util.page.PageInfo;
import weaver.hrm.User;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -67,10 +69,25 @@ public class PushWrapper extends Service {
});
}
public void push(PushParam pushParam) {
getPushService(user).push(pushParam.getId());
public void push(PushParam param) {
List<Long> ids = param.getIds();
if (CollUtil.isEmpty(ids)) {
return;
}
ids.forEach(id -> {
getPushService(user).push(id);
});
}
public void withdraw(WithdrawParam param) {
List<Long> ids = param.getIds();
if (CollUtil.isEmpty(ids)) {
return;
}
ids.forEach(id -> {
getPushService(user).withdraw(id);
});
}
public PageInfo<PushRecordDTO> recordList(RecordListQueryParam param) {