账套-个税字段对应、累计字段对应

This commit is contained in:
钱涛 2023-08-15 20:48:09 +08:00
parent 7275eb15d1
commit cf22685fca
53 changed files with 2343 additions and 288 deletions

View File

@ -0,0 +1,29 @@
alter table hrsa_salary_sob_item add income_category varchar2(100);
/
alter table hrsa_salary_sob_item modify income_category default '1';
/
update hrsa_salary_sob_item set income_category = '1' where salary_sob_id IN
(select id from hrsa_salary_sob where hrsa_salary_sob.income_category = '1');
/
update hrsa_salary_sob_item set income_category = '2' where salary_sob_id IN
(select id from hrsa_salary_sob where hrsa_salary_sob.income_category = '2');
/
update hrsa_salary_sob_item set income_category = '4' where salary_sob_id IN
(select id from hrsa_salary_sob where hrsa_salary_sob.income_category = '4');
/
alter table hrsa_salary_sob_item add salary_item_code varchar2(100);
/
update hrsa_salary_sob_item a
set ( salary_item_code) = (
select code as salary_item_code
from hrsa_salary_item b
where a.salary_item_id = b.id
);
/

View File

@ -0,0 +1,29 @@
alter table hrsa_salary_sob_item add income_category varchar2(100);
/
alter table hrsa_salary_sob_item modify income_category default '1';
/
update hrsa_salary_sob_item set income_category = '1' where salary_sob_id IN
(select id from hrsa_salary_sob where hrsa_salary_sob.income_category = '1');
/
update hrsa_salary_sob_item set income_category = '2' where salary_sob_id IN
(select id from hrsa_salary_sob where hrsa_salary_sob.income_category = '2');
/
update hrsa_salary_sob_item set income_category = '4' where salary_sob_id IN
(select id from hrsa_salary_sob where hrsa_salary_sob.income_category = '4');
/
alter table hrsa_salary_sob_item add salary_item_code varchar2(100);
/
update hrsa_salary_sob_item a
set ( salary_item_code) = (
select code as salary_item_code
from hrsa_salary_item b
where a.salary_item_id = b.id
);
/

View File

@ -0,0 +1,29 @@
alter table hrsa_salary_sob_item add income_category varchar2(100);
/
alter table hrsa_salary_sob_item modify income_category default '1';
/
update hrsa_salary_sob_item set income_category = '1' where salary_sob_id IN
(select id from hrsa_salary_sob where hrsa_salary_sob.income_category = '1');
/
update hrsa_salary_sob_item set income_category = '2' where salary_sob_id IN
(select id from hrsa_salary_sob where hrsa_salary_sob.income_category = '2');
/
update hrsa_salary_sob_item set income_category = '4' where salary_sob_id IN
(select id from hrsa_salary_sob where hrsa_salary_sob.income_category = '4');
/
alter table hrsa_salary_sob_item add salary_item_code varchar2(100);
/
update hrsa_salary_sob_item a
set ( salary_item_code) = (
select code as salary_item_code
from hrsa_salary_item b
where a.salary_item_id = b.id
);
/

View File

@ -0,0 +1,25 @@
alter table hrsa_salary_sob_item add income_category varchar(100)
;
alter table hrsa_salary_sob_item modify column income_category varchar(100) default '1'
;
update hrsa_salary_sob_item set income_category = '1' where salary_sob_id IN
(select id from hrsa_salary_sob where hrsa_salary_sob.income_category = '1')
;
update hrsa_salary_sob_item set income_category = '2' where salary_sob_id IN
(select id from hrsa_salary_sob where hrsa_salary_sob.income_category = '2')
;
update hrsa_salary_sob_item set income_category = '4' where salary_sob_id IN
(select id from hrsa_salary_sob where hrsa_salary_sob.income_category = '4')
;
alter table hrsa_salary_sob_item add salary_item_code varchar(100)
;
update hrsa_salary_sob_item a, hrsa_salary_item b
set a.salary_item_code = b.code
where a.salary_item_id = b.id
;

View File

@ -0,0 +1,28 @@
alter table hrsa_salary_sob_item add income_category varchar2(100)
/
alter table hrsa_salary_sob_item modify income_category default '1'
/
update hrsa_salary_sob_item set income_category = '1' where salary_sob_id IN
(select id from hrsa_salary_sob where hrsa_salary_sob.income_category = '1')
/
update hrsa_salary_sob_item set income_category = '2' where salary_sob_id IN
(select id from hrsa_salary_sob where hrsa_salary_sob.income_category = '2')
/
update hrsa_salary_sob_item set income_category = '4' where salary_sob_id IN
(select id from hrsa_salary_sob where hrsa_salary_sob.income_category = '4')
/
alter table hrsa_salary_sob_item add salary_item_code varchar2(100)
/
update hrsa_salary_sob_item a
set ( salary_item_code) = (
select code as salary_item_code
from hrsa_salary_item b
where a.salary_item_id = b.id
)
/

View File

@ -0,0 +1,22 @@
alter table hrsa_salary_sob_item add income_category varchar(100);
/
alter table hrsa_salary_sob_item alter column income_category set default '1';
/
update hrsa_salary_sob_item set income_category = '1' where salary_sob_id IN
(select id from hrsa_salary_sob where hrsa_salary_sob.income_category = '1');
/
update hrsa_salary_sob_item set income_category = '2' where salary_sob_id IN
(select id from hrsa_salary_sob where hrsa_salary_sob.income_category = '2');
/
update hrsa_salary_sob_item set income_category = '4' where salary_sob_id IN
(select id from hrsa_salary_sob where hrsa_salary_sob.income_category = '4');
/
alter table hrsa_salary_sob_item add salary_item_code varchar(100);
/
update hrsa_salary_sob_item a set salary_item_code = b.code from hrsa_salary_item b where a.salary_item_id = b.id and a.delete_type = 0;
/

View File

@ -0,0 +1,23 @@
alter table hrsa_salary_sob_item add income_category nvarchar(100)
GO
alter table hrsa_salary_sob_item add constraint hssi_income_category_default default '1' for income_category
GO
update hrsa_salary_sob_item set income_category = '1' where salary_sob_id IN
(select id from hrsa_salary_sob where hrsa_salary_sob.income_category = '1')
GO
update hrsa_salary_sob_item set income_category = '2' where salary_sob_id IN
(select id from hrsa_salary_sob where hrsa_salary_sob.income_category = '2')
GO
update hrsa_salary_sob_item set income_category = '4' where salary_sob_id IN
(select id from hrsa_salary_sob where hrsa_salary_sob.income_category = '4')
GO
alter table hrsa_salary_sob_item add salary_item_code nvarchar(100)
GO
update a set a.salary_item_code = b.code from hrsa_salary_sob_item a, hrsa_salary_item b where a.salary_item_id = b.id
GO

View File

@ -0,0 +1,29 @@
alter table hrsa_salary_sob_item add income_category varchar2(100);
/
alter table hrsa_salary_sob_item modify income_category default '1';
/
update hrsa_salary_sob_item set income_category = '1' where salary_sob_id IN
(select id from hrsa_salary_sob where hrsa_salary_sob.income_category = '1');
/
update hrsa_salary_sob_item set income_category = '2' where salary_sob_id IN
(select id from hrsa_salary_sob where hrsa_salary_sob.income_category = '2');
/
update hrsa_salary_sob_item set income_category = '4' where salary_sob_id IN
(select id from hrsa_salary_sob where hrsa_salary_sob.income_category = '4');
/
alter table hrsa_salary_sob_item add salary_item_code varchar2(100);
/
update hrsa_salary_sob_item a
set ( salary_item_code) = (
select code as salary_item_code
from hrsa_salary_item b
where a.salary_item_id = b.id
);
/

View File

@ -7,13 +7,14 @@ import com.engine.salary.enums.employeedeclare.CardTypeEnum;
import com.engine.salary.enums.employeedeclare.EmploymentStatusEnum; import com.engine.salary.enums.employeedeclare.EmploymentStatusEnum;
import com.engine.salary.enums.employeedeclare.EmploymentTypeEnum; import com.engine.salary.enums.employeedeclare.EmploymentTypeEnum;
import com.engine.salary.enums.employeedeclare.GenderEnum; import com.engine.salary.enums.employeedeclare.GenderEnum;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.time.LocalDate; import java.util.Date;
/** /**
* @description: 人员报送人员表单 * @description: 人员报送人员表单
@ -33,216 +34,83 @@ public class EmployeeDeclareFromDTO {
private Long id; private Long id;
// 个税扣缴义务人id // 个税扣缴义务人id
private Long taxAgentId; private Long taxAgentId;
// @SalaryForm(
// label = "系统名称",
// labelId = 160460,
// items = {
// @SalaryFormItem(itemType = WeaFormItemType.TYPESBROWSER, browserModule = "hrmsalary",
// browserType = "salaryEmployeeCombinationBrowser", required = true)
// }
// )
// 系统名称 // 系统名称
@TableTitle(title = "系统名称", dataIndex = "employee", key = "employee") @TableTitle(title = "系统名称", dataIndex = "employee", key = "employee")
private String employee; private String employee;
// @SalaryForm(
// label = "证件姓名",
// labelId = 160461,
// items = {
// @SalaryFormItem(itemType = WeaFormItemType.INPUT, maxLength = "40", required = true)
// }
// )
// 证件姓名 // 证件姓名
@TableTitle(title = "证件姓名", dataIndex = "employeeName", key = "employeeName") @TableTitle(title = "证件姓名", dataIndex = "employeeName", key = "employeeName")
private String employeeName; private String employeeName;
// @SalaryForm(
// label = "工号",
// labelId = 86317,
// items = {
// @SalaryFormItem(itemType = WeaFormItemType.INPUT, maxLength = "40")
// }
// )
// 工号 // 工号
@TableTitle(title = "工号", dataIndex = "jobNum", key = "jobNum") @TableTitle(title = "工号", dataIndex = "jobNum", key = "jobNum")
private String jobNum; private String jobNum;
// @SalaryForm(
// label = "国籍",
// labelId = 156406,
// items = {
// @SalaryFormItem(itemType = WeaFormItemType.INPUT, readOnly = true)
// }
// )
// 国籍 // 国籍
@TableTitle(title = "国籍", dataIndex = "nationality", key = "nationality") @TableTitle(title = "国籍", dataIndex = "nationality", key = "nationality")
private String nationality; private String nationality;
// @SalaryForm(
// label = "证件类型",
// labelId = 105139,
// items = {
// @SalaryFormItem(itemType = WeaFormItemType.SELECT, readOnly = true, optionsEnum = CardTypeEnum.class,
// required = true)
// }
// )
// 证件类型 // 证件类型
@TableTitle(title = "证件类型", dataIndex = "cardType", key = "cardType") @TableTitle(title = "证件类型", dataIndex = "cardType", key = "cardType")
private CardTypeEnum cardType; private CardTypeEnum cardType;
// @SalaryForm(
// label = "证件号码",
// labelId = 86318,
// items = {
// @SalaryFormItem(itemType = WeaFormItemType.INPUT, required = true, maxLength = "18")
// }
// )
// 证件号码 // 证件号码
@TableTitle(title = "证件号码", dataIndex = "cardNum", key = "cardNum") @TableTitle(title = "证件号码", dataIndex = "cardNum", key = "cardNum")
private String cardNum; private String cardNum;
// @SalaryForm(
// label = "性别",
// labelId = 98622,
// items = {
// @SalaryFormItem(itemType = WeaFormItemType.SELECT, required = true, optionsEnum = GenderEnum.class)
// }
// )
// 性别 // 性别
@TableTitle(title = "性别", dataIndex = "gender", key = "gender") @TableTitle(title = "性别", dataIndex = "gender", key = "gender")
private GenderEnum gender; private GenderEnum gender;
// @SalaryForm(
// label = "出生日期",
// labelId = 98624,
// items = {
// @SalaryFormItem(itemType = WeaFormItemType.DATEPICKER, required = true)
// }
// )
// 出生日期 // 出生日期
@TableTitle(title = "出生日期", dataIndex = "birthday", key = "birthday") @TableTitle(title = "出生日期", dataIndex = "birthday", key = "birthday")
private LocalDate birthday; @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date birthday;
// @SalaryForm(
// label = "状态",
// labelId = 91075,
// items = {
// @SalaryFormItem(itemType = WeaFormItemType.RADIO, required = true, optionsEnum = EmploymentStatusEnum.class)
// }
// )
// 状态 // 状态
@TableTitle(title = "状态", dataIndex = "employmentStatus", key = "employmentStatus") @TableTitle(title = "状态", dataIndex = "employmentStatus", key = "employmentStatus")
private EmploymentStatusEnum employmentStatus; private EmploymentStatusEnum employmentStatus;
// @SalaryForm(
// label = "手机号码",
// labelId = 98621,
// items = {
// @SalaryFormItem(itemType = WeaFormItemType.INPUT, required = true)
// }
// )
// 手机号码 // 手机号码
@TableTitle(title = "手机号码", dataIndex = "mobile", key = "mobile") @TableTitle(title = "手机号码", dataIndex = "mobile", key = "mobile")
private String mobile; private String mobile;
// @SalaryForm(
// label = "任职受雇从业类型",
// labelId = 156396,
// items = {
// @SalaryFormItem(itemType = WeaFormItemType.SELECT, required = true, optionsEnum = EmploymentTypeEnum.class)
// }
// )
// 任职受雇从业类型 // 任职受雇从业类型
@TableTitle(title = "任职受雇从业类型", dataIndex = "employmentType", key = "employmentType") @TableTitle(title = "任职受雇从业类型", dataIndex = "employmentType", key = "employmentType")
private EmploymentTypeEnum employmentType; private EmploymentTypeEnum employmentType;
// @SalaryForm(
// label = "任职受雇从业日期",
// labelId = 156409,
// items = {
// @SalaryFormItem(itemType = WeaFormItemType.DATEPICKER, required = true)
// }
// )
// 任职受雇从业日期 // 任职受雇从业日期
@TableTitle(title = "任职受雇从业日期", dataIndex = "employmentDate", key = "employmentDate") @TableTitle(title = "任职受雇从业日期", dataIndex = "employmentDate", key = "employmentDate")
private LocalDate employmentDate; @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date employmentDate;
// @SalaryForm(
// label = "离职日期",
// labelId = 95228,
// items = {
// @SalaryFormItem(itemType = WeaFormItemType.DATEPICKER)
// }
// )
// 离职日期 // 离职日期
@TableTitle(title = "离职日期", dataIndex = "dismissDate", key = "dismissDate") @TableTitle(title = "离职日期", dataIndex = "dismissDate", key = "dismissDate")
private LocalDate dismissDate; @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date dismissDate;
// @SalaryForm(
// label = "是否残疾",
// labelId = 156399,
// items = {
// @SalaryFormItem(itemType = WeaFormItemType.RADIO, optionsEnum = SalaryOnOffEnum.class)
// }
// )
// 是否残疾 // 是否残疾
@TableTitle(title = "是否残疾", dataIndex = "disability", key = "disability") @TableTitle(title = "是否残疾", dataIndex = "disability", key = "disability")
private SalaryOnOffEnum disability; private SalaryOnOffEnum disability;
// @SalaryForm(
// label = "残疾证号",
// labelId = 156412,
// items = {
// @SalaryFormItem(itemType = WeaFormItemType.INPUT)
// }
// )
// 残疾证号 // 残疾证号
@TableTitle(title = "残疾证号", dataIndex = "disabilityCardNo", key = "disabilityCardNo") @TableTitle(title = "残疾证号", dataIndex = "disabilityCardNo", key = "disabilityCardNo")
private String disabilityCardNo; private String disabilityCardNo;
// @SalaryForm(
// label = "是否孤老",
// labelId = 156400,
// items = {
// @SalaryFormItem(itemType = WeaFormItemType.RADIO, optionsEnum = SalaryOnOffEnum.class)
// }
// )
// 是否孤老 // 是否孤老
@TableTitle(title = "是否孤老", dataIndex = "lonelyOld", key = "lonelyOld") @TableTitle(title = "是否孤老", dataIndex = "lonelyOld", key = "lonelyOld")
private SalaryOnOffEnum lonelyOld; private SalaryOnOffEnum lonelyOld;
// @SalaryForm(
// label = "是否是烈属",
// labelId = 156401,
// items = {
// @SalaryFormItem(itemType = WeaFormItemType.RADIO, optionsEnum = SalaryOnOffEnum.class)
// }
// )
// 是否是烈属 // 是否是烈属
@TableTitle(title = "是否是烈属", dataIndex = "martyrDependents", key = "martyrDependents") @TableTitle(title = "是否是烈属", dataIndex = "martyrDependents", key = "martyrDependents")
private SalaryOnOffEnum martyrDependents; private SalaryOnOffEnum martyrDependents;
// @SalaryForm(
// label = "烈属证号",
// labelId = 156413,
// items = {
// @SalaryFormItem(itemType = WeaFormItemType.INPUT)
// }
// )
// 烈属证号 // 烈属证号
@TableTitle(title = "烈属证号", dataIndex = "martyrDependentsCardNo", key = "martyrDependentsCardNo") @TableTitle(title = "烈属证号", dataIndex = "martyrDependentsCardNo", key = "martyrDependentsCardNo")
private String martyrDependentsCardNo; private String martyrDependentsCardNo;
// @SalaryForm(
// label = "是否扣除减除费用",
// labelId = 156402,
// items = {
// @SalaryFormItem(itemType = WeaFormItemType.RADIO, optionsEnum = SalaryOnOffEnum.class)
// }
// )
// 是否扣除减除费用 // 是否扣除减除费用
@TableTitle(title = "是否扣除减除费用", dataIndex = "deductExpenses", key = "deductExpenses") @TableTitle(title = "是否扣除减除费用", dataIndex = "deductExpenses", key = "deductExpenses")
private SalaryOnOffEnum deductExpenses; private SalaryOnOffEnum deductExpenses;

View File

@ -1,6 +1,9 @@
package com.engine.salary.entity.employeedeclare.po; package com.engine.salary.entity.employeedeclare.po;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.util.Collection; import java.util.Collection;
@ -15,6 +18,9 @@ import java.util.Date;
*/ */
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@Builder
@AllArgsConstructor
@NoArgsConstructor
//"hrsa_employee_declare_record") //"hrsa_employee_declare_record")
public class EmployeeDeclareRecordPO { public class EmployeeDeclareRecordPO {
@ -29,7 +35,7 @@ public class EmployeeDeclareRecordPO {
/** /**
* 税款所属期 * 税款所属期
*/ */
private String taxCycle; private Date taxCycle;
/** /**
* 请求的requestId * 请求的requestId
*/ */

View File

@ -9,6 +9,7 @@ import com.engine.salary.enums.SalaryRoundingModeEnum;
import com.engine.salary.enums.SalarySystemTypeEnum; import com.engine.salary.enums.SalarySystemTypeEnum;
import com.engine.salary.enums.SalaryValueTypeEnum; import com.engine.salary.enums.SalaryValueTypeEnum;
import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum;
import com.engine.salary.enums.sicategory.DeleteTypeEnum;
import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.SalaryI18nUtil;
import dm.jdbc.util.IdGenerator; import dm.jdbc.util.IdGenerator;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
@ -158,4 +159,32 @@ public class SysSalaryItemBO {
.sharedType(sysSalaryItemPO.getSharedType()) .sharedType(sysSalaryItemPO.getSharedType())
.build(); .build();
} }
/**
* 系统薪资项目转换成自定义薪资项目
*
* @param sysSalaryItemPO 系统薪资项目
* @param employeeId 人员id
* @return
*/
public static SalaryItemPO convert2SalaryItemPO(SysSalaryItemPO sysSalaryItemPO, Date now, Long employeeId) {
if (sysSalaryItemPO == null) {
return null;
}
long id = IdGenerator.generate();
return SalaryItemPO.builder()
.id(id)
.code(sysSalaryItemPO.getCode())
.name(sysSalaryItemPO.getName())
.systemType(SalarySystemTypeEnum.SYSTEM.getValue())
.sysSalaryItemId(sysSalaryItemPO.getId())
.dataType(sysSalaryItemPO.getDataType())
.description(sysSalaryItemPO.getDescription())
.creator(employeeId)
.deleteType(DeleteTypeEnum.NOT_DELETED.getValue())
.createTime(now)
.updateTime(now)
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.build();
}
} }

View File

@ -0,0 +1,25 @@
package com.engine.salary.entity.salarysob.bo;
import com.engine.salary.entity.salarysob.param.SalarySobBasicSaveParam;
import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
import com.engine.salary.entity.salarysob.po.SalarySobPO;
import lombok.Data;
import weaver.hrm.User;
import java.util.List;
/**
* @description: 初始化薪资账套
* @author: xiajun
* @modified By: xiajun
* @date: Created in 2023/5/18 15:36
* @version:v1.0
*/
@Data
public class SalarySobInitEnv {
private User currentUser;
private SalarySobBasicSaveParam saveParam;
private SalarySobPO salarySob;
private List<SalarySobItemPO> salarySobItems;
}

View File

@ -117,6 +117,7 @@ public class SalarySobItemBO {
.salarySobId(salarySobId) .salarySobId(salarySobId)
.salarySobItemGroupId(salarySobItemGroupIdMap.getOrDefault(salarySobDefaultItemPO.getSobDefaultItemGroupId(), NumberUtils.LONG_ZERO)) .salarySobItemGroupId(salarySobItemGroupIdMap.getOrDefault(salarySobDefaultItemPO.getSobDefaultItemGroupId(), NumberUtils.LONG_ZERO))
.salaryItemId(salaryItemPO.getId()) .salaryItemId(salaryItemPO.getId())
.salaryItemCode(salaryItemPO.getCode())
.formulaId(salaryItemPO.getFormulaId()) .formulaId(salaryItemPO.getFormulaId())
.sortedIndex(salarySobDefaultItemPO.getSortedIndex()) .sortedIndex(salarySobDefaultItemPO.getSortedIndex())
.description(salaryItemPO.getDescription()) .description(salaryItemPO.getDescription())
@ -157,6 +158,7 @@ public class SalarySobItemBO {
.salarySobId(salarySobId) .salarySobId(salarySobId)
.salarySobItemGroupId(NumberUtils.LONG_ZERO) .salarySobItemGroupId(NumberUtils.LONG_ZERO)
.salaryItemId(salaryItemPO.getId()) .salaryItemId(salaryItemPO.getId())
.salaryItemCode(salaryItemPO.getCode())
.formulaId(salaryItemPO.getFormulaId()) .formulaId(salaryItemPO.getFormulaId())
.sortedIndex(i) .sortedIndex(i)
.description(salaryItemPO.getDescription()) .description(salaryItemPO.getDescription())

View File

@ -40,11 +40,11 @@ public class SalarySobBasicSaveParam {
private Long taxAgentId; private Long taxAgentId;
/** /**
* 薪资类型不允许为空 * 所得项目不允许为空
* *
* @see IncomeCategoryEnum * @see IncomeCategoryEnum
*/ */
@DataCheck(require = true, message = "薪资类型不允许为空") @DataCheck(require = true, message = "所得项目不允许为空")
private Integer taxableItems; private Integer taxableItems;
/** /**

View File

@ -1,9 +1,12 @@
package com.engine.salary.entity.salarysob.po; package com.engine.salary.entity.salarysob.po;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.time.LocalDateTime; import java.util.Collection;
import java.util.Date; import java.util.Date;
/** /**
@ -15,27 +18,32 @@ import java.util.Date;
*/ */
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
//"hrsa_sob_add_up_rule") @Builder
@AllArgsConstructor
@NoArgsConstructor
//hrsa_sob_add_up_rule
public class SalarySobAddUpRulePO { public class SalarySobAddUpRulePO {
//主键id") //主键id
private Long id; private Long id;
//薪资账套id") //薪资账套id
private Long salarySobId; private Long salarySobId;
//收入所得项目") //收入所得项目
private String incomeCategory; private String incomeCategory;
//薪资项目id") //薪资项目id
private Long salaryItemId; private Long salaryItemId;
//往期累计情况的字段索引") //往期累计情况的字段索引
private String addUpColumnDataIndex; private String addUpColumnDataIndex;
//租户key", ignore = true) //租户key
private String tenantKey; private String tenantKey;
//创建人id", ignore = true) //创建人id
private Long creator; private Long creator;
//是否删除", ignore = true) //是否删除
private Integer deleteType; private Integer deleteType;
//创建时间", ignore = true) //创建时间
private Date createTime; private Date createTime;
//更新时间", ignore = true) //更新时间
private Date updateTime; private Date updateTime;
private Collection<Long> salarySobIds;
} }

View File

@ -76,4 +76,5 @@ public class SalarySobDefaultItemGroupPO {
private Date updateTime; private Date updateTime;
Collection<Long> ids; Collection<Long> ids;
Collection<Integer> incomeCategorys;
} }

View File

@ -33,11 +33,23 @@ public class SalarySobItemPO {
*/ */
private Long salarySobId; private Long salarySobId;
/**
* 所得项目
*/
private String incomeCategory;
/** /**
* 薪资项目的id * 薪资项目的id
*/ */
private Long salaryItemId; private Long salaryItemId;
/**
* 薪资项目的code
*/
private String salaryItemCode;
/** /**
* 薪资账套薪资项目分组id * 薪资账套薪资项目分组id
*/ */

View File

@ -1,5 +1,6 @@
package com.engine.salary.entity.salarysob.po; package com.engine.salary.entity.salarysob.po;
import com.engine.salary.enums.salarysob.IncomeCategoryEnum;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
@ -35,6 +36,7 @@ public class SalarySobPO {
/** /**
* 应税项目1:正常工资薪金所得 * 应税项目1:正常工资薪金所得
* @see IncomeCategoryEnum
*/ */
private Integer incomeCategory; private Integer incomeCategory;
/** /**

View File

@ -1,8 +1,12 @@
package com.engine.salary.entity.salarysob.po; package com.engine.salary.entity.salarysob.po;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.util.Collection;
import java.util.Date; import java.util.Date;
/** /**
@ -14,6 +18,9 @@ import java.util.Date;
*/ */
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@Builder
@AllArgsConstructor
@NoArgsConstructor
//hrsa_sob_tax_report_rule //hrsa_sob_tax_report_rule
public class SalarySobTaxReportRulePO { public class SalarySobTaxReportRulePO {
@ -37,4 +44,8 @@ public class SalarySobTaxReportRulePO {
private Date createTime; private Date createTime;
//更新时间", ignore = true) //更新时间", ignore = true)
private Date updateTime; private Date updateTime;
private Collection<Long> ids;
private Collection<Long> salarySobIds;
} }

View File

@ -1,7 +1,8 @@
package com.engine.salary.entity.taxdeclaration.po; package com.engine.salary.entity.taxdeclaration.po;
import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
/** /**
* @description: 个税申报中的人员 * @description: 个税申报中的人员
@ -11,6 +12,8 @@ import lombok.Data;
* @version:v1.0 * @version:v1.0
*/ */
@Data @Data
@AllArgsConstructor
@NoArgsConstructor
public class TaxDeclareEmployeePO { public class TaxDeclareEmployeePO {
//人员id") //人员id")

View File

@ -1,8 +1,10 @@
package com.engine.salary.entity.taxdeclaration.po; package com.engine.salary.entity.taxdeclaration.po;
import com.engine.salary.report.enums.IncomeCategoryEnum; import com.engine.salary.report.enums.IncomeCategoryEnum;
import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.io.Serializable; import java.io.Serializable;
@ -19,6 +21,8 @@ import java.util.Date;
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@Builder @Builder
@AllArgsConstructor
@NoArgsConstructor
//hrsa_tax_declare_fail") //hrsa_tax_declare_fail")
public class TaxDeclareFailPO implements Serializable { public class TaxDeclareFailPO implements Serializable {

View File

@ -1,8 +1,11 @@
package com.engine.salary.entity.taxdeclaration.po; package com.engine.salary.entity.taxdeclaration.po;
import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Collection;
import java.util.Date; import java.util.Date;
/** /**
@ -14,7 +17,8 @@ import java.util.Date;
*/ */
@Data @Data
@Builder @Builder
//name = "个税申报表表头") @AllArgsConstructor
@NoArgsConstructor
//hrsa_tax_report_column") //hrsa_tax_report_column")
public class TaxReportColumnPO { public class TaxReportColumnPO {
@ -44,4 +48,6 @@ public class TaxReportColumnPO {
private Date createTime; private Date createTime;
//name = "更新时间", ignore = true) //name = "更新时间", ignore = true)
private Date updateTime; private Date updateTime;
Collection<Long> ids;
} }

View File

@ -19,6 +19,7 @@ import java.util.Objects;
**/ **/
public enum IncomeCategoryEnum implements BaseEnum<Integer> { public enum IncomeCategoryEnum implements BaseEnum<Integer> {
// todo 多语言
WAGES_AND_SALARIES(1, "0101", "正常工资薪金", 160487), WAGES_AND_SALARIES(1, "0101", "正常工资薪金", 160487),
REMUNERATION_FOR_LABOR(4, "0400", "一般劳务报酬所得", 160488), REMUNERATION_FOR_LABOR(4, "0400", "一般劳务报酬所得", 160488),
ONETIME_ANNUAL_BONUS(2, "0103", "全年一次性奖金收入", 160489), ONETIME_ANNUAL_BONUS(2, "0103", "全年一次性奖金收入", 160489),

View File

@ -558,9 +558,9 @@
SET delete_type=1, SET delete_type=1,
update_time = #{date} update_time = #{date}
WHERE delete_type = 0 WHERE delete_type = 0
<if test="ids != null and param.ids.size()>0"> <if test="ids != null and ids.size()>0">
AND id IN AND id IN
<foreach collection="param.ids" open="(" separator="," item="id" close=")"> <foreach collection="ids" open="(" separator="," item="id" close=")">
#{id} #{id}
</foreach> </foreach>
</if> </if>

View File

@ -4,6 +4,7 @@ import com.engine.salary.entity.employeedeclare.po.EmployeeDeclareRecordPO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.Collection; import java.util.Collection;
import java.util.Date;
import java.util.List; import java.util.List;
public interface EmployeeDeclareRecordMapper { public interface EmployeeDeclareRecordMapper {
@ -77,4 +78,5 @@ public interface EmployeeDeclareRecordMapper {
*/ */
void deleteByIds(@Param("ids") Collection<Long> ids); void deleteByIds(@Param("ids") Collection<Long> ids);
void deleteByTaxCycleAndTaxAgentId(Date taxCycle, Long taxAgentId);
} }

View File

@ -205,7 +205,7 @@
#{item.deleteType,jdbcType=INTEGER}, #{item.deleteType,jdbcType=INTEGER},
#{item.tenantKey,jdbcType=VARCHAR}, #{item.tenantKey,jdbcType=VARCHAR},
#{item.taxAgentId,jdbcType=DOUBLE}, #{item.taxAgentId,jdbcType=DOUBLE},
#{item.taxCycle,jdbcType=VARCHAR}, #{item.taxCycle,jdbcType=DATE},
#{item.requestId,jdbcType=DOUBLE}, #{item.requestId,jdbcType=DOUBLE},
from dual from dual
</foreach> </foreach>
@ -227,15 +227,15 @@
) )
VALUES VALUES
( (
#{item.id,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.id},
#{item.createTime,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.createTime},
#{item.updateTime,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.updateTime},
#{item.creator,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.creator},
#{item.deleteType,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.deleteType},
#{item.tenantKey,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.tenantKey},
#{item.taxAgentId,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.taxAgentId},
#{item.taxCycle,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.taxCycle},
#{item.requestId,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.requestId},
) )
</foreach> </foreach>
</insert> </insert>
@ -308,5 +308,12 @@
</foreach> </foreach>
</delete> </delete>
<delete id="deleteByTaxCycleAndTaxAgentId">
UPDATE hrsa_employee_declare_record
SET delete_type = 1
WHERE delete_type = 0
AND tax_cycle = #{taxCycle}
AND tax_agent_id = #{taxAgentId}
</delete>
</mapper> </mapper>

View File

@ -0,0 +1,80 @@
package com.engine.salary.mapper.salarysob;
import com.engine.salary.entity.salarysob.po.SalarySobAddUpRulePO;
import org.apache.ibatis.annotations.Param;
import java.util.Collection;
import java.util.List;
public interface SalarySobAddUpRuleMapper {
/**
* 查询所有记录
*
* @return 返回集合没有返回空List
*/
List<SalarySobAddUpRulePO> listAll();
/**
* 条件查询
*
* @return 返回集合没有返回空List
*/
List<SalarySobAddUpRulePO> listSome(SalarySobAddUpRulePO sobAddUpRule);
/**
* 根据主键查询
*
* @param id 主键
* @return 返回记录没有返回null
*/
SalarySobAddUpRulePO getById(Long id);
/**
* 新增忽略null字段
*
* @param sobAddUpRule 新增的记录
* @return 返回影响行数
*/
int insertIgnoreNull(SalarySobAddUpRulePO sobAddUpRule);
/**
* 批量插入
*
* @param sobAddUpRule
*/
void batchInsert(@Param("collection") List<SalarySobAddUpRulePO> sobAddUpRule);
/**
* 修改修改所有字段
*
* @param sobAddUpRule 修改的记录
* @return 返回影响行数
*/
int update(SalarySobAddUpRulePO sobAddUpRule);
/**
* 修改忽略null字段
*
* @param sobAddUpRule 修改的记录
* @return 返回影响行数
*/
int updateIgnoreNull(SalarySobAddUpRulePO sobAddUpRule);
/**
* 删除记录
*
* @param sobAddUpRule 待删除的记录
* @return 返回影响行数
*/
int delete(SalarySobAddUpRulePO sobAddUpRule);
/**
* 批量删除记录
* @param ids 主键id集合
*/
void deleteByIds(@Param("ids") Collection<Long> ids);
void deleteBySalarySobIds(Collection<Long> salarySobIds);
}

View File

@ -0,0 +1,342 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.engine.salary.mapper.salarysob.SalarySobAddUpRuleMapper">
<resultMap id="BaseResultMap" type="com.engine.salary.entity.salarysob.po.SalarySobAddUpRulePO">
<result column="add_up_column_data_index" property="addUpColumnDataIndex"/>
<result column="create_time" property="createTime"/>
<result column="creator" property="creator"/>
<result column="delete_type" property="deleteType"/>
<result column="id" property="id"/>
<result column="income_category" property="incomeCategory"/>
<result column="salary_item_id" property="salaryItemId"/>
<result column="salary_sob_id" property="salarySobId"/>
<result column="tenant_key" property="tenantKey"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<!-- 表字段 -->
<sql id="baseColumns">
t
.
add_up_column_data_index
, t.create_time
, t.creator
, t.delete_type
, t.id
, t.income_category
, t.salary_item_id
, t.salary_sob_id
, t.tenant_key
, t.update_time
</sql>
<!-- 查询全部 -->
<select id="listAll" resultMap="BaseResultMap">
SELECT
<include refid="baseColumns"/>
FROM hrsa_sob_add_up_rule t
WHERE delete_type = 0
</select>
<!-- 根据主键获取单条记录 -->
<select id="getById" resultMap="BaseResultMap" parameterType="Long">
SELECT
<include refid="baseColumns"/>
FROM hrsa_sob_add_up_rule t
WHERE id = #{id} AND delete_type = 0
</select>
<!-- 条件查询 -->
<select id="listSome" resultMap="BaseResultMap"
parameterType="com.engine.salary.entity.salarysob.po.SalarySobAddUpRulePO">
SELECT
<include refid="baseColumns"/>
FROM hrsa_sob_add_up_rule t
WHERE delete_type = 0
<if test="addUpColumnDataIndex != null">
AND add_up_column_data_index = #{addUpColumnDataIndex}
</if>
<if test="createTime != null">
AND create_time = #{createTime}
</if>
<if test="creator != null">
AND creator = #{creator}
</if>
<if test="deleteType != null">
AND delete_type = #{deleteType}
</if>
<if test="id != null">
AND id = #{id}
</if>
<if test="incomeCategory != null">
AND income_category = #{incomeCategory}
</if>
<if test="salaryItemId != null">
AND salary_item_id = #{salaryItemId}
</if>
<if test="salarySobId != null">
AND salary_sob_id = #{salarySobId}
</if>
<if test="tenantKey != null">
AND tenant_key = #{tenantKey}
</if>
<if test="updateTime != null">
AND update_time = #{updateTime}
</if>
<if test="ids != null and ids.size()>0">
AND id IN
<foreach collection="ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
ORDER BY id DESC
</select>
<!-- 插入不为NULL的字段 -->
<insert id="insertIgnoreNull" parameterType="com.engine.salary.entity.salarysob.po.SalarySobAddUpRulePO">
INSERT INTO hrsa_sob_add_up_rule
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="addUpColumnDataIndex != null">
add_up_column_data_index,
</if>
<if test="createTime != null">
create_time,
</if>
<if test="creator != null">
creator,
</if>
<if test="deleteType != null">
delete_type,
</if>
<if test="id != null">
id,
</if>
<if test="incomeCategory != null">
income_category,
</if>
<if test="salaryItemId != null">
salary_item_id,
</if>
<if test="salarySobId != null">
salary_sob_id,
</if>
<if test="tenantKey != null">
tenant_key,
</if>
<if test="updateTime != null">
update_time,
</if>
</trim>
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
<if test="addUpColumnDataIndex != null">
#{addUpColumnDataIndex},
</if>
<if test="createTime != null">
#{createTime},
</if>
<if test="creator != null">
#{creator},
</if>
<if test="deleteType != null">
#{deleteType},
</if>
<if test="id != null">
#{id},
</if>
<if test="incomeCategory != null">
#{incomeCategory},
</if>
<if test="salaryItemId != null">
#{salaryItemId},
</if>
<if test="salarySobId != null">
#{salarySobId},
</if>
<if test="tenantKey != null">
#{tenantKey},
</if>
<if test="updateTime != null">
#{updateTime},
</if>
</trim>
</insert>
<insert id="batchInsert">
INSERT INTO hrsa_sob_add_up_rule
(
add_up_column_data_index,
create_time,
creator,
delete_type,
id,
income_category,
salary_item_id,
salary_sob_id,
tenant_key,
update_time
)
VALUES
(
<foreach collection="collection" item="item" separator=",">
#{item.addUpColumnDataIndex},
#{item.createTime},
#{item.creator},
#{item.deleteType},
#{item.id},
#{item.incomeCategory},
#{item.salaryItemId},
#{item.salarySobId},
#{item.tenantKey},
#{item.updateTime}
</foreach>
)
</insert>
<insert id="batchInsert" databaseId="oracle">
INSERT INTO hrsa_sob_add_up_rule (
add_up_column_data_index,
create_time,
creator,
delete_type,
id,
income_category,
salary_item_id,
salary_sob_id,
tenant_key,
update_time,
)
<foreach collection="collection" item="item" separator="union all">
select
#{item.addUpColumnDataIndex,jdbcType=VARCHAR},
#{item.createTime,jdbcType=DATE},
#{item.creator,jdbcType=DOUBLE},
#{item.deleteType,jdbcType=INTEGER},
#{item.id,jdbcType=DOUBLE},
#{item.incomeCategory,jdbcType=VARCHAR},
#{item.salaryItemId,jdbcType=DOUBLE},
#{item.salarySobId,jdbcType=DOUBLE},
#{item.tenantKey,jdbcType=VARCHAR},
#{item.updateTime,jdbcType=DATE},
from dual
</foreach>
</insert>
<insert id="batchInsert" databaseId="sqlserver">
<foreach collection="collection" item="item" separator=";">
INSERT INTO hrsa_sob_add_up_rule (
add_up_column_data_index,
create_time,
creator,
delete_type,
id,
income_category,
salary_item_id,
salary_sob_id,
tenant_key,
update_time,
)
VALUES
(
#{item.addUpColumnDataIndex},
#{item.createTime},
#{item.creator},
#{item.deleteType},
#{item.id},
#{item.incomeCategory},
#{item.salaryItemId},
#{item.salarySobId},
#{item.tenantKey},
#{item.updateTime},
)
</foreach>
</insert>
<!-- 更新,更新全部字段 -->
<update id="update" parameterType="com.engine.salary.entity.salarysob.po.SalarySobAddUpRulePO">
UPDATE hrsa_sob_add_up_rule
<set>
add_up_column_data_index=#{addUpColumnDataIndex},
create_time=#{createTime},
creator=#{creator},
delete_type=#{deleteType},
income_category=#{incomeCategory},
salary_item_id=#{salaryItemId},
salary_sob_id=#{salarySobId},
tenant_key=#{tenantKey},
update_time=#{updateTime},
</set>
WHERE id = #{id} AND delete_type = 0
</update>
<!-- 更新不为NULL的字段 -->
<update id="updateIgnoreNull" parameterType="com.engine.salary.entity.salarysob.po.SalarySobAddUpRulePO">
UPDATE hrsa_sob_add_up_rule
<set>
<if test="addUpColumnDataIndex != null">
add_up_column_data_index=#{addUpColumnDataIndex},
</if>
<if test="createTime != null">
create_time=#{createTime},
</if>
<if test="creator != null">
creator=#{creator},
</if>
<if test="deleteType != null">
delete_type=#{deleteType},
</if>
<if test="incomeCategory != null">
income_category=#{incomeCategory},
</if>
<if test="salaryItemId != null">
salary_item_id=#{salaryItemId},
</if>
<if test="salarySobId != null">
salary_sob_id=#{salarySobId},
</if>
<if test="tenantKey != null">
tenant_key=#{tenantKey},
</if>
<if test="updateTime != null">
update_time=#{updateTime},
</if>
</set>
WHERE id = #{id} AND delete_type = 0
</update>
<!-- 根据主键删除记录 -->
<delete id="delete">
UPDATE hrsa_sob_add_up_rule
SET delete_type=1
WHERE id = #{id}
AND delete_type = 0
</delete>
<delete id="deleteByIds">
UPDATE hrsa_sob_add_up_rule
SET delete_type = 1
WHERE delete_type = 0
AND id IN
<foreach collection="ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</delete>
<delete id="deleteBySalarySobIds">
UPDATE hrsa_sob_add_up_rule
SET delete_type = 1
WHERE delete_type = 0
AND salary_sob_id IN
<foreach collection="salarySobIds" open="(" item="salarySobId" separator="," close=")">
#{salarySobId}
</foreach>
</delete>
</mapper>

View File

@ -89,6 +89,12 @@
#{id} #{id}
</foreach> </foreach>
</if> </if>
<if test="incomeCategorys != null and incomeCategorys.size()>0">
AND income_category IN
<foreach collection="incomeCategorys" open="(" item="incomeCategory" separator="," close=")">
#{incomeCategory}
</foreach>
</if>
ORDER BY id DESC ORDER BY id DESC
</select> </select>

View File

@ -15,6 +15,7 @@
<result column="tenant_key" property="tenantKey"/> <result column="tenant_key" property="tenantKey"/>
<result column="update_time" property="updateTime"/> <result column="update_time" property="updateTime"/>
<result column="can_delete" property="canDelete"/> <result column="can_delete" property="canDelete"/>
<result column="salary_item_code" property="salaryItemCode"/>
</resultMap> </resultMap>
<!-- 表字段 --> <!-- 表字段 -->
@ -34,6 +35,7 @@
, t.tenant_key , t.tenant_key
, t.update_time , t.update_time
,t.can_delete ,t.can_delete
,t.salary_item_code
</sql> </sql>
<!-- 查询全部 --> <!-- 查询全部 -->
@ -160,6 +162,7 @@
, t.tenant_key , t.tenant_key
, t.update_time , t.update_time
,t.can_delete ,t.can_delete
,t.salary_item_code
,h.item_hide ,h.item_hide
FROM hrsa_salary_sob_item t FROM hrsa_salary_sob_item t
LEFT JOIN hrsa_salary_item_hide h ON t.salary_item_id=h.salary_item_id and t.salary_sob_id = h.salary_sob_id LEFT JOIN hrsa_salary_item_hide h ON t.salary_item_id=h.salary_item_id and t.salary_sob_id = h.salary_sob_id
@ -364,7 +367,7 @@
<insert id="batchInsert"> <insert id="batchInsert">
INSERT INTO hrsa_salary_sob_item(salary_sob_id, salary_item_id, salary_sob_item_group_id, formula_id, INSERT INTO hrsa_salary_sob_item(salary_sob_id, salary_item_id, salary_sob_item_group_id, formula_id,
sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete) sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,salary_item_code)
VALUES VALUES
<foreach collection="collection" item="item" separator=","> <foreach collection="collection" item="item" separator=",">
( (
@ -379,13 +382,14 @@
#{item.creator}, #{item.creator},
#{item.deleteType}, #{item.deleteType},
#{item.tenantKey}, #{item.tenantKey},
#{item.canDelete} #{item.canDelete},
#{item.salaryItemCode}
) )
</foreach> </foreach>
</insert> </insert>
<insert id="batchInsert" databaseId="oracle"> <insert id="batchInsert" databaseId="oracle">
INSERT INTO hrsa_salary_sob_item( salary_sob_id, salary_item_id, salary_sob_item_group_id, formula_id, INSERT INTO hrsa_salary_sob_item( salary_sob_id, salary_item_id, salary_sob_item_group_id, formula_id,
sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete) sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,salary_item_code)
<foreach collection="collection" item="item" separator="union all"> <foreach collection="collection" item="item" separator="union all">
select select
@ -400,14 +404,15 @@
#{item.creator,jdbcType=DOUBLE}, #{item.creator,jdbcType=DOUBLE},
#{item.deleteType,jdbcType=INTEGER}, #{item.deleteType,jdbcType=INTEGER},
#{item.tenantKey,jdbcType=VARCHAR}, #{item.tenantKey,jdbcType=VARCHAR},
#{item.canDelete,jdbcType=INTEGER} #{item.canDelete,jdbcType=INTEGER},
#{item.salaryItemCode,jdbcType=INTEGER}
from dual from dual
</foreach> </foreach>
</insert> </insert>
<insert id="batchInsert" databaseId="sqlserver"> <insert id="batchInsert" databaseId="sqlserver">
<foreach collection="collection" item="item" separator=";"> <foreach collection="collection" item="item" separator=";">
INSERT INTO hrsa_salary_sob_item( salary_sob_id, salary_item_id, salary_sob_item_group_id, formula_id, INSERT INTO hrsa_salary_sob_item( salary_sob_id, salary_item_id, salary_sob_item_group_id, formula_id,
sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete) sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,salary_item_code)
VALUES VALUES
( (
#{item.salarySobId}, #{item.salarySobId},
@ -421,7 +426,8 @@
#{item.creator}, #{item.creator},
#{item.deleteType}, #{item.deleteType},
#{item.tenantKey}, #{item.tenantKey},
#{item.canDelete} #{item.canDelete},
#{item.salaryItemCode}
) )
</foreach> </foreach>
</insert> </insert>

View File

@ -0,0 +1,80 @@
package com.engine.salary.mapper.salarysob;
import com.engine.salary.entity.salarysob.po.SalarySobTaxReportRulePO;
import org.apache.ibatis.annotations.Param;
import java.util.Collection;
import java.util.List;
public interface SalarySobTaxReportRuleMapper {
/**
* 查询所有记录
*
* @return 返回集合没有返回空List
*/
List<SalarySobTaxReportRulePO> listAll();
/**
* 条件查询
*
* @return 返回集合没有返回空List
*/
List<SalarySobTaxReportRulePO> listSome(SalarySobTaxReportRulePO sobTaxReportRule);
/**
* 根据主键查询
*
* @param id 主键
* @return 返回记录没有返回null
*/
SalarySobTaxReportRulePO getById(Long id);
/**
* 新增忽略null字段
*
* @param sobTaxReportRule 新增的记录
* @return 返回影响行数
*/
int insertIgnoreNull(SalarySobTaxReportRulePO sobTaxReportRule);
/**
* 批量插入
*
* @param sobTaxReportRule
*/
void batchInsert(@Param("collection") List<SalarySobTaxReportRulePO> sobTaxReportRule);
/**
* 修改修改所有字段
*
* @param sobTaxReportRule 修改的记录
* @return 返回影响行数
*/
int update(SalarySobTaxReportRulePO sobTaxReportRule);
/**
* 修改忽略null字段
*
* @param sobTaxReportRule 修改的记录
* @return 返回影响行数
*/
int updateIgnoreNull(SalarySobTaxReportRulePO sobTaxReportRule);
/**
* 删除记录
*
* @param sobTaxReportRule 待删除的记录
* @return 返回影响行数
*/
int delete(SalarySobTaxReportRulePO sobTaxReportRule);
/**
* 批量删除记录
* @param ids 主键id集合
*/
void deleteByIds(@Param("ids") Collection<Long> ids);
void deleteBySalarySobIds(@Param("salarySobIds")Collection<Long> salarySobIds);
}

View File

@ -0,0 +1,349 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.engine.salary.mapper.salarysob.SalarySobTaxReportRuleMapper">
<resultMap id="BaseResultMap" type="com.engine.salary.entity.salarysob.po.SalarySobTaxReportRulePO">
<result column="id" property="id"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
<result column="creator" property="creator"/>
<result column="delete_type" property="deleteType"/>
<result column="tenant_key" property="tenantKey"/>
<result column="salary_sob_id" property="salarySobId"/>
<result column="income_category" property="incomeCategory"/>
<result column="report_column_data_index" property="reportColumnDataIndex"/>
<result column="salary_item_id" property="salaryItemId"/>
</resultMap>
<!-- 表字段 -->
<sql id="baseColumns">
t
.
id
, t.create_time
, t.update_time
, t.creator
, t.delete_type
, t.tenant_key
, t.salary_sob_id
, t.income_category
, t.report_column_data_index
, t.salary_item_id
</sql>
<!-- 查询全部 -->
<select id="listAll" resultMap="BaseResultMap">
SELECT
<include refid="baseColumns"/>
FROM hrsa_sob_tax_report_rule t
WHERE delete_type = 0
</select>
<!-- 根据主键获取单条记录 -->
<select id="getById" resultMap="BaseResultMap" parameterType="Long">
SELECT
<include refid="baseColumns"/>
FROM hrsa_sob_tax_report_rule t
WHERE id = #{id} AND delete_type = 0
</select>
<!-- 条件查询 -->
<select id="listSome" resultMap="BaseResultMap"
parameterType="com.engine.salary.entity.salarysob.po.SalarySobTaxReportRulePO">
SELECT
<include refid="baseColumns"/>
FROM hrsa_sob_tax_report_rule t
WHERE delete_type = 0
<if test="id != null">
AND id = #{id}
</if>
<if test="createTime != null">
AND create_time = #{createTime}
</if>
<if test="updateTime != null">
AND update_time = #{updateTime}
</if>
<if test="creator != null">
AND creator = #{creator}
</if>
<if test="deleteType != null">
AND delete_type = #{deleteType}
</if>
<if test="tenantKey != null">
AND tenant_key = #{tenantKey}
</if>
<if test="salarySobId != null">
AND salary_sob_id = #{salarySobId}
</if>
<if test="incomeCategory != null">
AND income_category = #{incomeCategory}
</if>
<if test="reportColumnDataIndex != null">
AND report_column_data_index = #{reportColumnDataIndex}
</if>
<if test="salaryItemId != null">
AND salary_item_id = #{salaryItemId}
</if>
<if test="ids != null and ids.size()>0">
AND id IN
<foreach collection="ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
<if test="salarySobIds != null and salarySobIds.size()>0">
AND salary_sob_id IN
<foreach collection="salarySobIds" open="(" item="salarySobId" separator="," close=")">
#{salarySobId}
</foreach>
</if>
ORDER BY id DESC
</select>
<!-- 插入不为NULL的字段 -->
<insert id="insertIgnoreNull" parameterType="com.engine.salary.entity.salarysob.po.SalarySobTaxReportRulePO">
INSERT INTO hrsa_sob_tax_report_rule
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="createTime != null">
create_time,
</if>
<if test="updateTime != null">
update_time,
</if>
<if test="creator != null">
creator,
</if>
<if test="deleteType != null">
delete_type,
</if>
<if test="tenantKey != null">
tenant_key,
</if>
<if test="salarySobId != null">
salary_sob_id,
</if>
<if test="incomeCategory != null">
income_category,
</if>
<if test="reportColumnDataIndex != null">
report_column_data_index,
</if>
<if test="salaryItemId != null">
salary_item_id,
</if>
</trim>
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id},
</if>
<if test="createTime != null">
#{createTime},
</if>
<if test="updateTime != null">
#{updateTime},
</if>
<if test="creator != null">
#{creator},
</if>
<if test="deleteType != null">
#{deleteType},
</if>
<if test="tenantKey != null">
#{tenantKey},
</if>
<if test="salarySobId != null">
#{salarySobId},
</if>
<if test="incomeCategory != null">
#{incomeCategory},
</if>
<if test="reportColumnDataIndex != null">
#{reportColumnDataIndex},
</if>
<if test="salaryItemId != null">
#{salaryItemId},
</if>
</trim>
</insert>
<insert id="batchInsert">
INSERT INTO hrsa_sob_tax_report_rule
(
id,
create_time,
update_time,
creator,
delete_type,
tenant_key,
salary_sob_id,
income_category,
report_column_data_index,
salary_item_id,
)
VALUES
(
<foreach collection="collection" item="item" separator=",">
#{item.id},
#{item.createTime},
#{item.updateTime},
#{item.creator},
#{item.deleteType},
#{item.tenantKey},
#{item.salarySobId},
#{item.incomeCategory},
#{item.reportColumnDataIndex},
#{item.salaryItemId},
</foreach>
)
</insert>
<insert id="batchInsert" databaseId="oracle">
INSERT INTO hrsa_sob_tax_report_rule (
id,
create_time,
update_time,
creator,
delete_type,
tenant_key,
salary_sob_id,
income_category,
report_column_data_index,
salary_item_id,
)
<foreach collection="collection" item="item" separator="union all">
select
#{item.id,jdbcType=DOUBLE},
#{item.createTime,jdbcType=DATE},
#{item.updateTime,jdbcType=DATE},
#{item.creator,jdbcType=DOUBLE},
#{item.deleteType,jdbcType=INTEGER},
#{item.tenantKey,jdbcType=VARCHAR},
#{item.salarySobId,jdbcType=DOUBLE},
#{item.incomeCategory,jdbcType=VARCHAR},
#{item.reportColumnDataIndex,jdbcType=VARCHAR},
#{item.salaryItemId,jdbcType=DOUBLE},
from dual
</foreach>
</insert>
<insert id="batchInsert" databaseId="sqlserver">
<foreach collection="collection" item="item" separator=";">
INSERT INTO hrsa_sob_tax_report_rule (
id,
create_time,
update_time,
creator,
delete_type,
tenant_key,
salary_sob_id,
income_category,
report_column_data_index,
salary_item_id,
)
VALUES
(
#{item.id},
#{item.createTime},
#{item.updateTime},
#{item.creator},
#{item.deleteType},
#{item.tenantKey},
#{item.salarySobId},
#{item.incomeCategory},
#{item.reportColumnDataIndex},
#{item.salaryItemId},
)
</foreach>
</insert>
<!-- 更新,更新全部字段 -->
<update id="update" parameterType="com.engine.salary.entity.salarysob.po.SalarySobTaxReportRulePO">
UPDATE hrsa_sob_tax_report_rule
<set>
create_time=#{createTime},
update_time=#{updateTime},
creator=#{creator},
delete_type=#{deleteType},
tenant_key=#{tenantKey},
salary_sob_id=#{salarySobId},
income_category=#{incomeCategory},
report_column_data_index=#{reportColumnDataIndex},
salary_item_id=#{salaryItemId},
</set>
WHERE id = #{id} AND delete_type = 0
</update>
<!-- 更新不为NULL的字段 -->
<update id="updateIgnoreNull" parameterType="com.engine.salary.entity.salarysob.po.SalarySobTaxReportRulePO">
UPDATE hrsa_sob_tax_report_rule
<set>
<if test="createTime != null">
create_time=#{createTime},
</if>
<if test="updateTime != null">
update_time=#{updateTime},
</if>
<if test="creator != null">
creator=#{creator},
</if>
<if test="deleteType != null">
delete_type=#{deleteType},
</if>
<if test="tenantKey != null">
tenant_key=#{tenantKey},
</if>
<if test="salarySobId != null">
salary_sob_id=#{salarySobId},
</if>
<if test="incomeCategory != null">
income_category=#{incomeCategory},
</if>
<if test="reportColumnDataIndex != null">
report_column_data_index=#{reportColumnDataIndex},
</if>
<if test="salaryItemId != null">
salary_item_id=#{salaryItemId},
</if>
</set>
WHERE id = #{id} AND delete_type = 0
</update>
<!-- 根据主键删除记录 -->
<delete id="delete">
UPDATE hrsa_sob_tax_report_rule
SET delete_type=1
WHERE id = #{id}
AND delete_type = 0
</delete>
<delete id="deleteByIds">
UPDATE hrsa_sob_tax_report_rule
SET delete_type = 1
WHERE delete_type = 0
AND id IN
<foreach collection="ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</delete>
<delete id="deleteBySalarySobIds">
UPDATE hrsa_sob_tax_report_rule
SET delete_type = 1
WHERE delete_type = 0
AND salary_sob_id IN
<foreach collection="salarySobIds" open="(" item="salarySobId" separator="," close=")">
#{salarySobId}
</foreach>
</delete>
</mapper>

View File

@ -227,17 +227,17 @@
<foreach collection="collection" item="item" separator="union all"> <foreach collection="collection" item="item" separator="union all">
select select
#{item.id,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.id,jdbcType=DOUBLE},
#{item.createTime,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.createTime,jdbcType=DATE},
#{item.updateTime,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.updateTime,jdbcType=DATE},
#{item.creator,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.creator,jdbcType=DOUBLE},
#{item.deleteType,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.deleteType,jdbcType=INTEGER},
#{item.tenantKey,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.tenantKey,jdbcType=VARCHAR},
#{item.taxDeclareRecordId,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.taxDeclareRecordId,jdbcType=DOUBLE},
#{item.taxDeclarationId,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.taxDeclarationId,jdbcType=DOUBLE},
#{item.employeeType,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.employeeType,jdbcType=INTEGER},
#{item.employeeId,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.employeeId,jdbcType=DOUBLE},
#{item.resultValueJson,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.resultValueJson,jdbcType=VARCHAR},
from dual from dual
</foreach> </foreach>
</insert> </insert>

View File

@ -401,25 +401,25 @@
) )
VALUES VALUES
( (
#{item.id,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.id},
#{item.createTime,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.createTime},
#{item.updateTime,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.updateTime},
#{item.creator,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.creator},
#{item.deleteType,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.deleteType},
#{item.tenantKey,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.tenantKey},
#{item.taxAgentId,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.taxAgentId},
#{item.salaryMonth,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.salaryMonth},
#{item.taxCycle,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.taxCycle},
#{item.remark,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.remark},
#{item.requestId,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.requestId},
#{item.taxDeclareType,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.taxDeclareType},
#{item.taxDeclareStatus,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.taxDeclareStatus},
#{item.displayUpdateIcon,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.displayUpdateIcon},
#{item.taxPayAmount,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.taxPayAmount},
#{item.personNum,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.personNum},
#{item.taxDeclareErrorMsg,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.taxDeclareErrorMsg},
#{item.taxPaidAmount,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.taxPaidAmount},
#{item.taxPurePaidAmount,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, #{item.taxPurePaidAmount},
) )
</foreach> </foreach>
</insert> </insert>

View File

@ -45,4 +45,7 @@ public interface SalarySobAddUpRuleService {
* @param salarySobIds * @param salarySobIds
*/ */
void deleteBySalarySobIds(Collection<Long> salarySobIds); void deleteBySalarySobIds(Collection<Long> salarySobIds);
void saveBatch(List<SalarySobAddUpRulePO> salarySobAddUpRules);
} }

View File

@ -1,5 +1,9 @@
package com.engine.salary.service; package com.engine.salary.service;
import com.engine.salary.entity.salarysob.po.SalarySobDefaultEmpFieldPO;
import java.util.List;
/** /**
* @description: 薪资账套默认的员工信息字段 * @description: 薪资账套默认的员工信息字段
* @author: xiajun * @author: xiajun
@ -9,10 +13,10 @@ package com.engine.salary.service;
*/ */
public interface SalarySobDefaultEmpFieldService { public interface SalarySobDefaultEmpFieldService {
// /** /**
// * 获取所有的薪资账套默认的员工信息字段 * 获取所有的薪资账套默认的员工信息字段
// * *
// * @return * @return
// */ */
// List<SalarySobDefaultEmpFieldPO> list(); List<SalarySobDefaultEmpFieldPO> list();
} }

View File

@ -0,0 +1,25 @@
package com.engine.salary.service;
import com.engine.salary.entity.salarysob.po.SalarySobDefaultItemGroupPO;
import com.engine.salary.enums.salarysob.IncomeCategoryEnum;
import java.util.Collection;
import java.util.List;
/**
* @description: 薪资账套默认的薪资项目分类
* @author: xiajun
* @modified By: xiajun
* @date: 2022/3/11 15:05
* @version:v1.0
*/
public interface SalarySobDefaultItemGroupService {
/**
* 根据所得项目获取薪资账套默认的薪资项目分类
*
* @param incomeCategories
* @return
*/
List<SalarySobDefaultItemGroupPO> listByIncomeCategoryIn(Collection<IncomeCategoryEnum> incomeCategories);
}

View File

@ -0,0 +1,22 @@
package com.engine.salary.service;
import com.engine.salary.entity.salarysob.param.SalarySobBasicSaveParam;
import com.engine.salary.entity.salarysob.po.SalarySobPO;
/**
* @description: 薪资账套初始化
* @author: xiajun
* @modified By: xiajun
* @date: Created in 2023/5/18 17:27
* @version:v1.0
*/
public interface SalarySobInitService {
/**
* 薪资账套初始化
*
* @param saveParam 初始化参数
* @return
*/
SalarySobPO init(SalarySobBasicSaveParam saveParam);
}

View File

@ -45,4 +45,6 @@ public interface SalarySobTaxReportRuleService {
* @param salarySobIds * @param salarySobIds
*/ */
void deleteBySalarySobIds(Collection<Long> salarySobIds); void deleteBySalarySobIds(Collection<Long> salarySobIds);
void saveBatch(List<SalarySobTaxReportRulePO> salarySobTaxReportRules);
} }

View File

@ -0,0 +1,81 @@
package com.engine.salary.service.impl;
import com.engine.core.impl.Service;
import com.engine.salary.entity.salarysob.bo.SalarySobInitEnv;
import com.engine.salary.entity.salarysob.param.SalarySobBasicSaveParam;
import com.engine.salary.entity.salarysob.po.SalarySobPO;
import com.engine.salary.service.SalarySobInitService;
/**
* @description: 薪资账套初始化
* @author: xiajun
* @modified By: xiajun
* @date: Created in 2023/5/18 15:23
* @version:v1.0
*/
public abstract class AbstractSalarySobInitService extends Service implements SalarySobInitService {
@Override
public SalarySobPO init(SalarySobBasicSaveParam saveParam) {
SalarySobInitEnv env = new SalarySobInitEnv();
env.setSaveParam(saveParam);
env.setCurrentUser(user);
// 初始化基础设置
initBasic(env);
// 初始化员工信息字段
initEmpField(env);
// 初始化薪资项目薪资项目分组
initItem(env);
// 初始化回算薪资项目
initBackItem(env);
// 初始化累计字段对应规则
initAddUpRule(env);
// 初始化个税申报表字段对应规则
initTaxReportRule(env);
return env.getSalarySob();
}
/**
* 初始化基础设置
*
* @param env 公共变量
*/
protected abstract void initBasic(SalarySobInitEnv env);
/**
* 初始化人员信息字段
*
* @param env 公共变量
*/
protected abstract void initEmpField(SalarySobInitEnv env);
/**
* 初始化薪资项目薪资项目分组
*
* @param env 公共变量
*/
protected abstract void initItem(SalarySobInitEnv env);
/**
* 初始化回算薪资项目
*
* @param env 公共变量
*/
protected abstract void initBackItem(SalarySobInitEnv env);
/**
* 初始化累计字段对应规则
*
* @param env 公共变量
*/
protected abstract void initAddUpRule(SalarySobInitEnv env);
/**
* 初始化个税申报表字段对应规则
*
* @param env 公共变量
*/
protected abstract void initTaxReportRule(SalarySobInitEnv env);
}

View File

@ -2,9 +2,13 @@ package com.engine.salary.service.impl;
import com.engine.core.impl.Service; import com.engine.core.impl.Service;
import com.engine.salary.entity.employeedeclare.po.EmployeeDeclareRecordPO; import com.engine.salary.entity.employeedeclare.po.EmployeeDeclareRecordPO;
import com.engine.salary.mapper.employeedeclare.EmployeeDeclareRecordMapper;
import com.engine.salary.service.EmployeeDeclareRecordService; import com.engine.salary.service.EmployeeDeclareRecordService;
import com.engine.salary.util.db.MapperProxyFactory;
import org.apache.commons.collections4.CollectionUtils;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* @description: 员工报送记录 * @description: 员工报送记录
@ -15,32 +19,26 @@ import java.util.Date;
*/ */
public class EmployeeDeclareRecordServiceImpl extends Service implements EmployeeDeclareRecordService { public class EmployeeDeclareRecordServiceImpl extends Service implements EmployeeDeclareRecordService {
private EmployeeDeclareRecordMapper getEmployeeDeclareRecordMapper() {
return MapperProxyFactory.getProxy(EmployeeDeclareRecordMapper.class);
}
@Override @Override
public EmployeeDeclareRecordPO getByTaxCycleAndTaxAgentId(Date taxCycle, Long taxAgentId) { public EmployeeDeclareRecordPO getByTaxCycleAndTaxAgentId(Date taxCycle, Long taxAgentId) {
// return new LambdaQueryChainWrapper<>(baseMapper) List<EmployeeDeclareRecordPO> employeeDeclareRecordPOS = getEmployeeDeclareRecordMapper().listSome(EmployeeDeclareRecordPO.builder().taxCycle(taxCycle).taxAgentId(taxAgentId).build());
// .eq(EmployeeDeclareRecordPO::getTenantKey, tenantKey) if (CollectionUtils.isNotEmpty(employeeDeclareRecordPOS)) {
// .eq(EmployeeDeclareRecordPO::getDeleteType, DeleteTypeEnum.NOT_DELETED.getValue()) return employeeDeclareRecordPOS.get(0);
// .eq(EmployeeDeclareRecordPO::getTaxCycle, taxCycle.toString()) }
// .eq(EmployeeDeclareRecordPO::getTaxAgentId, taxAgentId)
// .one();
return null; return null;
} }
@Override @Override
public void deleteByTaxCycleAndTaxAgentId(Date taxCycle, Long taxAgentId) { public void deleteByTaxCycleAndTaxAgentId(Date taxCycle, Long taxAgentId) {
// new LambdaUpdateChainWrapper<>(baseMapper) getEmployeeDeclareRecordMapper().deleteByTaxCycleAndTaxAgentId(taxCycle, taxAgentId);
// .eq(EmployeeDeclareRecordPO::getTenantKey, tenantKey)
// .eq(EmployeeDeclareRecordPO::getDeleteType, DeleteTypeEnum.NOT_DELETED.getValue())
// .eq(EmployeeDeclareRecordPO::getTaxCycle, taxCycle.toString())
// .eq(EmployeeDeclareRecordPO::getTaxAgentId, taxAgentId)
// .set(EmployeeDeclareRecordPO::getDeleteType, DeleteTypeEnum.DELETED.getValue())
// .set(EmployeeDeclareRecordPO::getUpdateTime, LocalDateTime.now())
// .update();
} }
@Override @Override
public void save(EmployeeDeclareRecordPO employeeDeclareRecord) { public void save(EmployeeDeclareRecordPO employeeDeclareRecord) {
getEmployeeDeclareRecordMapper().insertIgnoreNull(employeeDeclareRecord);
} }
} }

View File

@ -586,7 +586,7 @@ public class EmployeeDeclareServiceImpl extends Service implements EmployeeDecla
employeeDeclareRecord = new EmployeeDeclareRecordPO() employeeDeclareRecord = new EmployeeDeclareRecordPO()
.setId(IdGenerator.generate()) .setId(IdGenerator.generate())
.setTaxAgentId(param.getTaxAgentId()) .setTaxAgentId(param.getTaxAgentId())
.setTaxCycle(param.getTaxCycle().toString()) .setTaxCycle(param.getTaxCycle())
.setRequestId(asyncRequestIdDTO.getRequestId()) .setRequestId(asyncRequestIdDTO.getRequestId())
.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) .setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.setCreator((long) user.getUID()) .setCreator((long) user.getUID())

View File

@ -0,0 +1,173 @@
package com.engine.salary.service.impl;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.annotation.SalaryFormulaVar;
import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.salary.entity.datacollection.AddUpSituation;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.salarysob.dto.SalarySobAddUpRuleDTO;
import com.engine.salary.entity.salarysob.param.SalarySobAddUpRuleSaveParam;
import com.engine.salary.entity.salarysob.po.SalarySobAddUpRulePO;
import com.engine.salary.entity.salarysob.po.SalarySobBackItemPO;
import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
import com.engine.salary.entity.salarysob.po.SalarySobPO;
import com.engine.salary.enums.salarysob.IncomeCategoryEnum;
import com.engine.salary.enums.sicategory.DeleteTypeEnum;
import com.engine.salary.mapper.salarysob.SalarySobAddUpRuleMapper;
import com.engine.salary.service.*;
import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.db.MapperProxyFactory;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import dm.jdbc.util.IdGenerator;
import org.apache.commons.collections4.CollectionUtils;
import weaver.hrm.User;
import java.lang.reflect.Field;
import java.util.*;
/**
* @description: 薪资账套的累计字段对应
* @author: xiajun
* @modified By: xiajun
* @date: Created in 2023/1/4 10:09 AM
* @version:v1.0
*/
public class SalarySobAddUpRuleServiceImpl extends Service implements SalarySobAddUpRuleService {
private SalarySobAddUpRuleMapper getSalarySobAddUpRuleMapper() {
return MapperProxyFactory.getProxy(SalarySobAddUpRuleMapper.class);
}
private SalaryItemService getSalaryItemService(User user) {
return ServiceUtil.getService(SalaryItemServiceImpl.class, user);
}
private SalarySobService getSalarySobService(User user) {
return ServiceUtil.getService(SalarySobServiceImpl.class, user);
}
private SalarySobItemService getSalarySobItemService(User user) {
return ServiceUtil.getService(SalarySobItemServiceImpl.class, user);
}
private SalarySobBackItemService getSalarySobBackItemService(User user) {
return ServiceUtil.getService(SalarySobBackItemServiceImpl.class, user);
}
@Override
public List<SalarySobAddUpRulePO> listBySalarySobIds(Collection<Long> salarySobIds) {
if (CollectionUtils.isEmpty(salarySobIds)) {
return new ArrayList<>();
}
return getSalarySobAddUpRuleMapper().listSome(SalarySobAddUpRulePO.builder().salarySobIds(salarySobIds).build());
}
@Override
public List<SalarySobAddUpRuleDTO> listSalarySobAddUpRuleDTO(Long salarySobId) {
List<SalarySobAddUpRuleDTO> resultList = Lists.newArrayList();
// 查询薪资账套
SalarySobPO salarySob = getSalarySobService(user).getById(salarySobId);
// 薪资账套的收入所得项目
Integer incomeCategoryId = salarySob.getIncomeCategory();
// 薪资账套的薪资项目
List<SalarySobItemPO> salarySobItems = getSalarySobItemService(user).listBySalarySobId(salarySobId);
// 薪资账套的回算薪资项目
List<SalarySobBackItemPO> salarySobBackItems = getSalarySobBackItemService(user).listBySalarySobId(salarySobId);
// 薪资项目
Set<Long> salaryItemIds = Sets.newHashSet();
salaryItemIds.addAll(SalaryEntityUtil.properties(salarySobItems, SalarySobItemPO::getSalaryItemId));
salaryItemIds.addAll(SalaryEntityUtil.properties(salarySobBackItems, SalarySobBackItemPO::getSalaryItemId));
List<SalaryItemPO> salaryItems = getSalaryItemService(user).listByIds(salaryItemIds);
Map<Long, SalaryItemPO> idKeySalaryItemMap = SalaryEntityUtil.convert2Map(salaryItems, SalaryItemPO::getId);
// 薪资账套的已经存在的对应关系
List<SalarySobAddUpRulePO> salarySobAddUpRulePOS = listBySalarySobIds(Collections.singleton(salarySobId));
Map<String, Long> salarySobAddUpMap = SalaryEntityUtil.convert2Map(salarySobAddUpRulePOS,
e -> e.getIncomeCategory() + "-" + e.getAddUpColumnDataIndex(), SalarySobAddUpRulePO::getSalaryItemId);
IncomeCategoryEnum incomeCategoryEnum = IncomeCategoryEnum.parseByValue(incomeCategoryId);
if (incomeCategoryEnum != IncomeCategoryEnum.WAGES_AND_SALARIES
&& incomeCategoryEnum != IncomeCategoryEnum.INCOME_FOR_INSURANCE_SALESMAN
&& incomeCategoryEnum != IncomeCategoryEnum.INCOME_FOR_SECURITIES_BROKER
&& incomeCategoryEnum != IncomeCategoryEnum.REMUNERATION_FOR_OTHER_CONTINUOUS_LABOR) {
return resultList;
}
List<SalarySobAddUpRuleDTO.AddUpRuleDTO> addUpRules = Lists.newArrayList();
Field[] declaredFields = AddUpSituation.class.getDeclaredFields();
for (Field declaredField : declaredFields) {
if (!declaredField.isAnnotationPresent(SalaryFormulaVar.class)) {
continue;
}
SalaryFormulaVar annotation = declaredField.getAnnotation(SalaryFormulaVar.class);
SalarySobAddUpRuleDTO.AddUpRuleDTO addUpRuleDTO = new SalarySobAddUpRuleDTO.AddUpRuleDTO();
addUpRuleDTO.setId(IdGenerator.generate());
addUpRuleDTO.setAddUpColumnName(SalaryI18nUtil.getI18nLabel(annotation.labelId(), annotation.defaultLabel()));
addUpRuleDTO.setAddUpColumnDataIndex(declaredField.getName());
addUpRuleDTO.setSalaryItem(Collections.emptyList());
addUpRuleDTO.setCanEdit(true);
Long salaryItemId = salarySobAddUpMap.get(incomeCategoryId + "-" + declaredField.getName());
SalaryItemPO salaryItem = idKeySalaryItemMap.get(salaryItemId);
if (Objects.nonNull(salaryItem)) {
Map<String, Object> dataMap = Maps.newHashMap();
dataMap.put("id", salaryItem.getId().toString());
dataMap.put("name", salaryItem.getName());
dataMap.put("icon", "Icon-N-Salary-item-management");
addUpRuleDTO.setSalaryItem(Collections.singletonList(dataMap));
}
addUpRules.add(addUpRuleDTO);
}
SalarySobAddUpRuleDTO salarySobAddUpRuleDTO = new SalarySobAddUpRuleDTO();
salarySobAddUpRuleDTO.setIncomeCategoryId(incomeCategoryId.toString());
salarySobAddUpRuleDTO.setIncomeCategoryName(SalaryI18nUtil.getI18nLabel(incomeCategoryEnum.getLabelId(), incomeCategoryEnum.getDefaultLabel()));
salarySobAddUpRuleDTO.setAddUpRules(addUpRules);
resultList.add(salarySobAddUpRuleDTO);
return resultList;
}
@Override
public void saveByParam(SalarySobAddUpRuleSaveParam saveParam) {
// 校验参数是否合法
// 根据保存参数构建出po
Date now = new Date();
List<SalarySobAddUpRulePO> salarySobAddUpRulePOS = Lists.newArrayList();
for (SalarySobAddUpRuleSaveParam.AddUpRuleIncomeCategoryParam incomeCategoryParam : saveParam.getIncomeCategoryParams()) {
for (SalarySobAddUpRuleSaveParam.AddUpRuleParam addUpRuleParam : incomeCategoryParam.getAddUpRuleParams()) {
SalarySobAddUpRulePO salarySobAddUpRulePO = new SalarySobAddUpRulePO()
.setId(IdGenerator.generate())
.setSalarySobId(saveParam.getSalarySobId())
.setIncomeCategory(incomeCategoryParam.getIncomeCategory())
.setSalaryItemId(addUpRuleParam.getSalaryItemId())
.setAddUpColumnDataIndex(addUpRuleParam.getAddUpColumnDataIndex())
.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue())
.setCreator((long) user.getUID())
.setCreateTime(now)
.setUpdateTime(now);
salarySobAddUpRulePOS.add(salarySobAddUpRulePO);
}
}
// 删除原来的配置保存新的
deleteBySalarySobIds(Collections.singleton(saveParam.getSalarySobId()));
if (CollectionUtils.isNotEmpty(salarySobAddUpRulePOS)) {
saveBatch(salarySobAddUpRulePOS);
}
}
@Override
public void deleteBySalarySobIds(Collection<Long> salarySobIds) {
if (CollectionUtils.isNotEmpty(salarySobIds)) {
getSalarySobAddUpRuleMapper().deleteBySalarySobIds(salarySobIds);
}
}
@Override
public void saveBatch(List<SalarySobAddUpRulePO> salarySobAddUpRules) {
if (CollectionUtils.isNotEmpty(salarySobAddUpRules)) {
salarySobAddUpRules.forEach(o->getSalarySobAddUpRuleMapper().insertIgnoreNull(o));
// getSalarySobAddUpRuleMapper().batchInsert(salarySobAddUpRules);
}
}
}

View File

@ -1,6 +1,12 @@
package com.engine.salary.service.impl; package com.engine.salary.service.impl;
import com.engine.core.impl.Service;
import com.engine.salary.entity.salarysob.po.SalarySobDefaultEmpFieldPO;
import com.engine.salary.mapper.salarysob.SalarySobDefaultEmpFieldMapper;
import com.engine.salary.service.SalarySobDefaultEmpFieldService; import com.engine.salary.service.SalarySobDefaultEmpFieldService;
import com.engine.salary.util.db.MapperProxyFactory;
import java.util.List;
/** /**
* 薪资账套默认的员工信息字段 * 薪资账套默认的员工信息字段
@ -10,17 +16,14 @@ import com.engine.salary.service.SalarySobDefaultEmpFieldService;
* @author qiantao * @author qiantao
* @version 1.0 * @version 1.0
**/ **/
public class SalarySobDefaultEmpFieldServiceImpl implements SalarySobDefaultEmpFieldService { public class SalarySobDefaultEmpFieldServiceImpl extends Service implements SalarySobDefaultEmpFieldService {
// private SalarySobDefaultEmpFieldMapper getSalarySobDefaultEmpFieldMapper() {
// private SalarySobDefaultEmpFieldMapper salarySobDefaultEmpFieldMapper; return MapperProxyFactory.getProxy(SalarySobDefaultEmpFieldMapper.class);
// }
// @Override
// public List<SalarySobDefaultEmpFieldPO> list() { @Override
// public List<SalarySobDefaultEmpFieldPO> list() {
// return new LambdaQueryChainWrapper<>(salarySobDefaultEmpFieldMapper) return getSalarySobDefaultEmpFieldMapper().listAll();
// .eq(SalarySobDefaultEmpFieldPO::getTenantKey, SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) }
// .eq(SalarySobDefaultEmpFieldPO::getDeleteType, 0)
// .list();
// }
} }

View File

@ -0,0 +1,38 @@
package com.engine.salary.service.impl;
import com.engine.core.impl.Service;
import com.engine.salary.entity.salarysob.po.SalarySobDefaultItemGroupPO;
import com.engine.salary.enums.salarysob.IncomeCategoryEnum;
import com.engine.salary.mapper.salarysob.SalarySobDefaultItemGroupMapper;
import com.engine.salary.service.SalarySobDefaultItemGroupService;
import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.db.MapperProxyFactory;
import org.apache.commons.collections4.CollectionUtils;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
* @description:
* @author: xiajun
* @modified By: xiajun
* @date: 2022/3/11 15:07
* @version:v1.0
*/
public class SalarySobDefaultItemGroupServiceImpl extends Service implements SalarySobDefaultItemGroupService {
private SalarySobDefaultItemGroupMapper getSalarySobDefaultItemGroupMapper() {
return MapperProxyFactory.getProxy(SalarySobDefaultItemGroupMapper.class);
}
@Override
public List<SalarySobDefaultItemGroupPO> listByIncomeCategoryIn(Collection<IncomeCategoryEnum> incomeCategories) {
if (CollectionUtils.isEmpty(incomeCategories)) {
return Collections.emptyList();
}
List<Integer> incomeCategoryValues = SalaryEntityUtil.properties(incomeCategories, IncomeCategoryEnum::getValue, Collectors.toList());
return getSalarySobDefaultItemGroupMapper().listSome(SalarySobDefaultItemGroupPO.builder().incomeCategorys(incomeCategoryValues).build());
}
}

View File

@ -0,0 +1,389 @@
package com.engine.salary.service.impl;
import com.engine.common.util.ServiceUtil;
import com.engine.salary.annotation.SalaryFormulaVar;
import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.salary.entity.datacollection.AddUpSituation;
import com.engine.salary.entity.salaryitem.bo.SysSalaryItemBO;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.salaryitem.po.SysSalaryItemPO;
import com.engine.salary.entity.salarysob.bo.SalarySobInitEnv;
import com.engine.salary.entity.salarysob.param.SalarySobBasicSaveParam;
import com.engine.salary.entity.salarysob.po.*;
import com.engine.salary.entity.taxdeclaration.po.TaxReportColumnPO;
import com.engine.salary.enums.SalaryCycleTypeEnum;
import com.engine.salary.enums.salarysob.IncomeCategoryEnum;
import com.engine.salary.enums.sicategory.DeleteTypeEnum;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.salarysob.SalarySobMapper;
import com.engine.salary.service.*;
import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.db.MapperProxyFactory;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import dm.jdbc.util.IdGenerator;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import weaver.hrm.User;
import java.lang.reflect.Field;
import java.util.*;
import java.util.stream.Collectors;
/**
* @description: 薪资账套初始化
* @author: xiajun
* @modified By: xiajun
* @date: Created in 2023/5/18 15:32
* @version:v1.0
*/
public class SalarySobInitServiceImpl extends AbstractSalarySobInitService {
private SalarySobMapper getSalarySobMapper() {
return MapperProxyFactory.getProxy(SalarySobMapper.class);
}
private SalarySobDefaultEmpFieldService getSalarySobDefaultEmpFieldService(User user) {
return ServiceUtil.getService(SalarySobDefaultEmpFieldServiceImpl.class, user);
}
private SalarySobEmpFieldService getSalarySobEmpFieldService(User user) {
return ServiceUtil.getService(SalarySobEmpFieldServiceImpl.class, user);
}
private SalarySobDefaultItemGroupService getSalarySobDefaultItemGroupService(User user) {
return ServiceUtil.getService(SalarySobDefaultItemGroupServiceImpl.class, user);
}
private SalarySobDefaultItemService getSalarySobDefaultItemService(User user) {
return ServiceUtil.getService(SalarySobDefaultItemServiceImpl.class, user);
}
private SysSalaryItemService getSysSalaryItemService(User user) {
return ServiceUtil.getService(SysSalaryItemServiceImpl.class, user);
}
private SalaryItemService getSalaryItemService(User user) {
return ServiceUtil.getService(SalaryItemServiceImpl.class, user);
}
private SalarySobItemGroupService getSalarySobItemGroupService(User user) {
return ServiceUtil.getService(SalarySobItemGroupServiceImpl.class, user);
}
private SalarySobItemService getSalarySobItemService(User user) {
return ServiceUtil.getService(SalarySobItemServiceImpl.class, user);
}
private SalarySobBackItemService getSalarySobBackItemService(User user) {
return ServiceUtil.getService(SalarySobBackItemServiceImpl.class, user);
}
private SalarySobAddUpRuleService getSalarySobAddUpRuleService(User user) {
return ServiceUtil.getService(SalarySobAddUpRuleServiceImpl.class, user);
}
private TaxReportColumnService getTaxReportColumnService(User user) {
return ServiceUtil.getService(TaxReportColumnServiceImpl.class, user);
}
private SalarySobTaxReportRuleService getSalarySobTaxReportRuleService(User user) {
return ServiceUtil.getService(SalarySobTaxReportRuleServiceImpl.class, user);
}
@Override
protected void initBasic(SalarySobInitEnv env) {
if (env == null || env.getSaveParam() == null || env.getCurrentUser() == null) {
throw new SalaryRunTimeException("Invalid arguments");
}
// 因为薪资账套的名称支持了"小地球"所以在打开新建表单时后端就会将id传给前端所以新建保存的时候前端是会将id传给后端的
// 当前端未将id传给后端时后端自动生成一个id
SalarySobBasicSaveParam saveParam = env.getSaveParam();
if (saveParam.getId() == null) {
saveParam.setId(IdGenerator.generate());
}
Date now = new Date();
SalarySobPO salarySob = new SalarySobPO()
// .setId(saveParam.getId())
.setTaxAgentId(saveParam.getTaxAgentId())
.setName(saveParam.getName())
.setIncomeCategory(saveParam.getTaxableItems())
.setSalaryCycleType(saveParam.getSalaryCycleType())
.setSalaryCycleFromDay(saveParam.getSalaryCycleFromDay())
.setTaxCycleType(SalaryCycleTypeEnum.THIS_MONTH.getValue())
.setAttendCycleType(saveParam.getAttendCycleType())
.setAttendCycleFromDay(saveParam.getAttendCycleFromDay())
.setSocialSecurityCycleType(saveParam.getSocialSecurityCycleType())
.setDisable(0)
.setDescription(saveParam.getDescription())
// .setOriginSalarySobId(saveParam.getId())
.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.setCreator((long) env.getCurrentUser().getUID())
.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue())
.setCreateTime(now)
.setUpdateTime(now);
getSalarySobMapper().insertIgnoreNull(salarySob);
env.setSalarySob(salarySob);
}
@Override
protected void initEmpField(SalarySobInitEnv env) {
if (env == null || env.getSaveParam() == null || env.getCurrentUser() == null) {
throw new SalaryRunTimeException("Invalid arguments");
}
// 查询薪资账套默认的员工信息字段
List<SalarySobDefaultEmpFieldPO> salarySobDefaultEmpFields = getSalarySobDefaultEmpFieldService(user).list();
Date now = new Date();
List<SalarySobEmpFieldPO> salarySobEmpFields = salarySobDefaultEmpFields.stream()
.map(field -> new SalarySobEmpFieldPO()
// .setId(IdGenerator.generate())
.setSalarySobId(env.getSalarySob().getId())
.setFieldCode(field.getFieldCode())
.setSortedIndex(field.getSortedIndex())
.setCanDelete(field.getCanDelete())
.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.setCreator((long) env.getCurrentUser().getUID())
.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue())
.setCreateTime(now)
.setUpdateTime(now))
.collect(Collectors.toList());
getSalarySobEmpFieldService(user).batchSave(salarySobEmpFields);
}
@Override
protected void initItem(SalarySobInitEnv env) {
if (env == null || env.getSaveParam() == null || env.getCurrentUser() == null) {
throw new SalaryRunTimeException("Invalid arguments");
}
Date now = new Date();
// 根据所得项目查询默认的账套薪资项目分组
List<SalarySobDefaultItemGroupPO> salarySobDefaultItemGroups = getSalarySobDefaultItemGroupService(user)
.listByIncomeCategoryIn(Collections.singletonList(IncomeCategoryEnum.parseByValue(env.getSaveParam().getTaxableItems())));
// 根据所得项目查询默认的账套薪资项目
List<SalarySobDefaultItemPO> salarySobDefaultItems = getSalarySobDefaultItemService(user)
.listByIncomeCategory(IncomeCategoryEnum.parseByValue(env.getSaveParam().getTaxableItems()));
// 根据默认的账套薪资项目查询关联的系统薪资项目id
Set<Long> sysSalaryItemIds = SalaryEntityUtil.properties(salarySobDefaultItems,
SalarySobDefaultItemPO::getSysSalaryItemId);
List<SysSalaryItemPO> sysSalaryItems = getSysSalaryItemService(user).listByIds(sysSalaryItemIds);
Map<Long, SysSalaryItemPO> sysSalaryItemMap = SalaryEntityUtil.convert2Map(sysSalaryItems, SysSalaryItemPO::getId);
// 根据系统薪资项目id查询当前租户的自定义薪资项目
// 如果默认的账套薪资项目查询关联的系统薪资项目id没有生成自定义薪资项目需要自动生成对应的自定义薪资项目
List<SalaryItemPO> needInsertSalaryItems = new ArrayList<>();
List<SalaryItemPO> salaryItems = getSalaryItemService(user).listBySysSalaryItemIds(sysSalaryItemIds);
// key:系统薪资项目id;value:薪资项目po
Map<Long, SalaryItemPO> salaryItemMap = SalaryEntityUtil.convert2Map(salaryItems,
SalaryItemPO::getSysSalaryItemId);
for (SysSalaryItemPO sysSalaryItem : sysSalaryItems) {
salaryItemMap.computeIfAbsent(sysSalaryItem.getId(), key -> {
SalaryItemPO salaryItem = SysSalaryItemBO.convert2SalaryItemPO(sysSalaryItem, now, (long) env.getCurrentUser().getUID());
needInsertSalaryItems.add(salaryItem);
return salaryItem;
});
}
// key:默认的账套薪资项目分组id;value:账套薪资项目分组po
Map<Long, SalarySobItemGroupPO> salarySobItemGroupMap = Maps.newHashMapWithExpectedSize(salarySobDefaultItemGroups.size());
// 遍历默认的账套薪资项目分组生成账套薪资项目分组po
for (SalarySobDefaultItemGroupPO salarySobDefaultItemGroup : salarySobDefaultItemGroups) {
SalarySobItemGroupPO salarySobItemGroup = SalarySobItemGroupPO.builder()
.id(IdGenerator.generate())
.name(salarySobDefaultItemGroup.getName())
.salarySobId(env.getSalarySob().getId())
.sortedIndex(salarySobDefaultItemGroup.getSortedIndex())
.description(salarySobDefaultItemGroup.getDescription())
// .incomeCategory(salarySobDefaultItemGroup.getIncomeCategory().toString())
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.creator((long) env.getCurrentUser().getUID())
.deleteType(DeleteTypeEnum.NOT_DELETED.getValue())
.createTime(now)
.updateTime(now)
.build();
salarySobItemGroupMap.put(salarySobDefaultItemGroup.getId(), salarySobItemGroup);
}
List<SalarySobItemPO> salarySobItems = new ArrayList<>(salarySobDefaultItems.size());
// 遍历默认的账套薪资项目生成账套薪资项目po
for (SalarySobDefaultItemPO salarySobDefaultItem : salarySobDefaultItems) {
// 账套薪资项目分组
SalarySobItemGroupPO salarySobItemGroup = salarySobItemGroupMap.get(salarySobDefaultItem.getSobDefaultItemGroupId());
// 关联的薪资项目系统薪资项目
SalaryItemPO salaryItem = salaryItemMap.get(salarySobDefaultItem.getSysSalaryItemId());
SysSalaryItemPO sysSalaryItem = sysSalaryItemMap.get(salarySobDefaultItem.getSysSalaryItemId());
if (salaryItem == null || sysSalaryItem == null) {
throw new SalaryRunTimeException("Invalid arguments,salaryItem can not be null");
}
SalarySobItemPO salarySobItem = SalarySobItemPO.builder()
// .id(IdGenerator.generate())
.salarySobId(env.getSalarySob().getId())
.incomeCategory(salarySobDefaultItem.getIncomeCategory().toString())
.salaryItemId(salaryItem.getId())
.salaryItemCode(salaryItem.getCode())
.salarySobItemGroupId(Optional.ofNullable(salarySobItemGroup).map(SalarySobItemGroupPO::getId).orElse(0L))
// .useInEmployeeSalary(0)
// .dataType(salaryItem.getDataType())
// .roundingMode(sysSalaryItem.getRoundingMode())
// .pattern(sysSalaryItem.getPattern())
// .valueType(sysSalaryItem.getValueType())
.formulaId(sysSalaryItem.getFormulaId())
// .hideSwitch(0)
// .sumSwitch(0)
// .readonlySwitch(0)
.sortedIndex(salarySobDefaultItem.getSortedIndex())
.description(salaryItem.getDescription())
// .canEdit(1)
.canDelete(1)
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.creator((long) env.getCurrentUser().getUID())
.deleteType(DeleteTypeEnum.NOT_DELETED.getValue())
.createTime(now)
.updateTime(now)
.build();
salarySobItems.add(salarySobItem);
}
if (CollectionUtils.isNotEmpty(needInsertSalaryItems)) {
getSalaryItemService(user).batchSave(needInsertSalaryItems);
}
if (MapUtils.isNotEmpty(salarySobItemGroupMap)) {
getSalarySobItemGroupService(user).batchSave(salarySobItemGroupMap.values());
}
if (CollectionUtils.isNotEmpty(salarySobItems)) {
getSalarySobItemService(user).batchSave(salarySobItems);
}
env.setSalarySobItems(salarySobItems);
}
@Override
protected void initBackItem(SalarySobInitEnv env) {
// 只有正常工资薪金才默认生成回算薪资项目
boolean contains = Objects.equals(env.getSaveParam().getTaxableItems(), IncomeCategoryEnum.WAGES_AND_SALARIES.getValue());
if (!contains) {
return;
}
// 746777981115629575L--已发薪资合计
// 746777981115629576L--补发薪资合计
List<Long> sysSalaryItemIds = Lists.newArrayList(746777981115629575L, 746777981115629576L);
List<SysSalaryItemPO> sysSalaryItems = getSysSalaryItemService(user).listByIds(sysSalaryItemIds);
// 根据系统薪资项目id查询当前租户的自定义薪资项目
// 如果默认的账套薪资项目查询关联的系统薪资项目id没有生成自定义薪资项目需要自动生成对应的自定义薪资项目
List<SalaryItemPO> salaryItems = getSalaryItemService(user).listBySysSalaryItemIds(sysSalaryItemIds);
Map<Long, SalaryItemPO> salaryItemMap = SalaryEntityUtil.convert2Map(salaryItems, SalaryItemPO::getSysSalaryItemId);
Date now = new Date();
List<SalaryItemPO> needInsertSalaryItems = new ArrayList<>();
List<SalarySobBackItemPO> salarySobBackItems = new ArrayList<>();
for (SysSalaryItemPO sysSalaryItem : sysSalaryItems) {
SalaryItemPO salaryItem = salaryItemMap.computeIfAbsent(sysSalaryItem.getId(), key -> {
SalaryItemPO temp = SysSalaryItemBO.convert2SalaryItemPO(sysSalaryItem, now, (long) env.getCurrentUser().getUID());
needInsertSalaryItems.add(temp);
return temp;
});
SalarySobBackItemPO salarySobBackItem = SalarySobBackItemPO.builder()
.id(IdGenerator.generate())
.salarySobId(env.getSalarySob().getId())
// .incomeCategory(IncomeCategoryEnum.WAGES_AND_SALARIES.getValue().toString())
.salaryItemId(salaryItem.getId())
.salaryItemCode(salaryItem.getCode())
.dataType(salaryItem.getDataType())
.roundingMode(sysSalaryItem.getRoundingMode())
.pattern(sysSalaryItem.getPattern())
.valueType(sysSalaryItem.getValueType())
.formulaId(sysSalaryItem.getFormulaId())
// .hideSwitch(0)
// .sumSwitch(0)
// .readonlySwitch(0)
// .sortedIndex(0)
.backCalcType(Objects.equals(sysSalaryItem.getId(), 746777981115629575L) ? 0 : 1)
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
// .breator((long) env.getCurrentUser().getUID())
.deleteType(DeleteTypeEnum.NOT_DELETED.getValue())
.createTime(now)
.updateTime(now)
.build();
salarySobBackItems.add(salarySobBackItem);
}
if (CollectionUtils.isNotEmpty(needInsertSalaryItems)) {
getSalaryItemService(user).batchSave(needInsertSalaryItems);
}
if (CollectionUtils.isNotEmpty(salarySobBackItems)) {
getSalarySobBackItemService(user).batchInsert(salarySobBackItems);
}
}
@Override
protected void initAddUpRule(SalarySobInitEnv env) {
// 只有正常工资薪金才默认生成累计字段对应规则
boolean contains = Objects.equals(env.getSaveParam().getTaxableItems(), IncomeCategoryEnum.WAGES_AND_SALARIES.getValue());
if (!contains) {
return;
}
Date now = new Date();
List<SalarySobAddUpRulePO> salarySobAddUpRules = new ArrayList<>();
// 账套薪资项目
List<SalarySobItemPO> salarySobItems = env.getSalarySobItems().stream()
.filter(e -> Objects.equals(e.getIncomeCategory(), IncomeCategoryEnum.WAGES_AND_SALARIES.getValue().toString()))
.collect(Collectors.toList());
// AddUpSituationPO.class带有SalaryFormulaVar.class注解字段的name和账套薪资项目的code都是对应的除了addUpAdvanceTax
// 遍历AddUpSituationPO.class的SalaryFormulaVar.class注解生成累计字段对应规则po
Map<String, SalarySobItemPO> salarySobItemMap = SalaryEntityUtil.convert2Map(salarySobItems,
SalarySobItemPO::getSalaryItemCode);
for (Field declaredField : AddUpSituation.class.getDeclaredFields()) {
SalarySobItemPO salarySobItem = salarySobItemMap.get(declaredField.getName());
if (Objects.equals(declaredField.getName(), "addUpAdvanceTax")) {
salarySobItem = salarySobItemMap.get("addUpTaxPayable");
}
if (!declaredField.isAnnotationPresent(SalaryFormulaVar.class) || Objects.isNull(salarySobItem)) {
continue;
}
SalarySobAddUpRulePO salarySobAddUpRule = new SalarySobAddUpRulePO()
.setId(IdGenerator.generate())
.setSalarySobId(env.getSalarySob().getId())
.setIncomeCategory(IncomeCategoryEnum.WAGES_AND_SALARIES.getValue().toString())
.setSalaryItemId(salarySobItem.getSalaryItemId())
.setAddUpColumnDataIndex(declaredField.getName())
.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.setCreator((long) env.getCurrentUser().getUID())
.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue())
.setCreateTime(now)
.setUpdateTime(now);
salarySobAddUpRules.add(salarySobAddUpRule);
}
if (CollectionUtils.isNotEmpty(salarySobAddUpRules)) {
getSalarySobAddUpRuleService(user).saveBatch(salarySobAddUpRules);
}
}
@Override
protected void initTaxReportRule(SalarySobInitEnv env) {
// 查询个税申报表的表头
List<TaxReportColumnPO> taxReportColumns = new ArrayList<>(getTaxReportColumnService(user).listByIncomeCategory(IncomeCategoryEnum.parseByValue(env.getSaveParam().getTaxableItems())));
Date now = new Date();
// 个税申报表表头的reportColumnDataIndex和账套薪资项目的code都是对应的
// 遍历个税申报表的表头生成个税申报表字段对应规则po
List<SalarySobTaxReportRulePO> salarySobTaxReportRules = Lists.newArrayList();
Map<String, SalarySobItemPO> salarySobItemMap = SalaryEntityUtil.convert2Map(env.getSalarySobItems(),
e -> e.getIncomeCategory() + "-" + e.getSalaryItemCode());
for (TaxReportColumnPO taxReportColumn : taxReportColumns) {
SalarySobItemPO salarySobItem = salarySobItemMap.get(taxReportColumn.getIncomeCategory() + "-" + taxReportColumn.getReportColumnDataIndex());
if (Objects.nonNull(salarySobItem)) {
SalarySobTaxReportRulePO salarySobTaxReportRule = new SalarySobTaxReportRulePO()
.setId(IdGenerator.generate())
.setSalarySobId(env.getSalarySob().getId())
.setIncomeCategory(salarySobItem.getIncomeCategory())
.setReportColumnDataIndex(taxReportColumn.getReportColumnDataIndex())
.setSalaryItemId(salarySobItem.getSalaryItemId())
.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.setCreator((long) env.getCurrentUser().getUID())
.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue())
.setCreateTime(now)
.setUpdateTime(now);
salarySobTaxReportRules.add(salarySobTaxReportRule);
}
}
if (CollectionUtils.isNotEmpty(salarySobTaxReportRules)) {
getSalarySobTaxReportRuleService(user).saveBatch(salarySobTaxReportRules);
}
}
}

View File

@ -131,6 +131,10 @@ public class SalarySobServiceImpl extends Service implements SalarySobService {
return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); return ServiceUtil.getService(SalarySysConfServiceImpl.class, user);
} }
private SalarySobInitService getSalarySobInitService(User user) {
return ServiceUtil.getService(SalarySobInitServiceImpl.class, user);
}
@Override @Override
public SalarySobPO getById(Long id) { public SalarySobPO getById(Long id) {
return salarySobMapper.getById(id); return salarySobMapper.getById(id);
@ -272,23 +276,26 @@ public class SalarySobServiceImpl extends Service implements SalarySobService {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98403, "薪资账套名称已存在")); throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98403, "薪资账套名称已存在"));
} }
// 保存参数转换成薪资账套po SalarySobPO salarySobPO = getSalarySobInitService(user).init(saveParam);
SalarySobPO salarySobPO = SalarySobBO.convert2PO(saveParam, (long) user.getUID());
// 保存薪资账套
salarySobMapper.insert(salarySobPO); // // 保存参数转换成薪资账套po
//todo 记录日志 // SalarySobPO salarySobPO = SalarySobBO.convert2PO(saveParam, (long) user.getUID());
// LoggerContext<SalarySobPO> loggerContext = new LoggerContext<>(); // // 保存薪资账套
// loggerContext.setTargetId(String.valueOf(salarySobPO.getId())); // salarySobMapper.insert(salarySobPO);
// loggerContext.setTargetName(salarySobPO.getName()); // //todo 记录日志
// loggerContext.setOperateType(OperateTypeEnum.ADD.getValue()); //// LoggerContext<SalarySobPO> loggerContext = new LoggerContext<>();
// loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(98404, "新建薪资账套")); //// loggerContext.setTargetId(String.valueOf(salarySobPO.getId()));
// loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(98404, "新建薪资账套") + ": " + salarySobPO.getName()); //// loggerContext.setTargetName(salarySobPO.getName());
// loggerContext.setOldValues(salarySobPO); //// loggerContext.setOperateType(OperateTypeEnum.ADD.getValue());
// salarySobLoggerTemplate.write(loggerContext); //// loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(98404, "新建薪资账套"));
// 新建薪资账套时保存默认的员工信息字段 //// loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(98404, "新建薪资账套") + ": " + salarySobPO.getName());
saveDefaultEmpField(salarySobPO); //// loggerContext.setOldValues(salarySobPO);
// 新建薪资账套时保存默认的薪资项目 //// salarySobLoggerTemplate.write(loggerContext);
saveDefaultItem(salarySobPO); // // 新建薪资账套时保存默认的员工信息字段
// saveDefaultEmpField(salarySobPO);
// // 新建薪资账套时保存默认的薪资项目
// saveDefaultItem(salarySobPO);
// 新建薪资账套时保存默认的关联人员范围及从范围中排除 // 新建薪资账套时保存默认的关联人员范围及从范围中排除
saveDefaultEmployeeRange(salarySobPO); saveDefaultEmployeeRange(salarySobPO);
// 返回薪资账套的主键id // 返回薪资账套的主键id

View File

@ -0,0 +1,169 @@
package com.engine.salary.service.impl;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.salarysob.dto.SalarySobTaxReportRuleDTO;
import com.engine.salary.entity.salarysob.param.SalarySobTaxReportRuleSaveParam;
import com.engine.salary.entity.salarysob.po.SalarySobBackItemPO;
import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
import com.engine.salary.entity.salarysob.po.SalarySobPO;
import com.engine.salary.entity.salarysob.po.SalarySobTaxReportRulePO;
import com.engine.salary.entity.taxdeclaration.po.TaxReportColumnPO;
import com.engine.salary.enums.salarysob.IncomeCategoryEnum;
import com.engine.salary.enums.sicategory.DeleteTypeEnum;
import com.engine.salary.mapper.salarysob.SalarySobTaxReportRuleMapper;
import com.engine.salary.service.*;
import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.db.MapperProxyFactory;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import dm.jdbc.util.IdGenerator;
import org.apache.commons.collections4.CollectionUtils;
import weaver.hrm.User;
import java.util.*;
/**
* @description: 薪资账套的个税申报表规则
* @author: xiajun
* @modified By: xiajun
* @date: Created in 2022/11/29 5:19 PM
* @version:v1.0
*/
public class SalarySobTaxReportRuleServiceImpl extends Service implements SalarySobTaxReportRuleService {
private SalarySobTaxReportRuleMapper salarySobTaxReportRuleMapper() {
return MapperProxyFactory.getProxy(SalarySobTaxReportRuleMapper.class);
}
private SalarySobService getSalarySobService(User user) {
return ServiceUtil.getService(SalarySobServiceImpl.class, user);
}
private TaxReportColumnService getTaxReportColumnService(User user) {
return ServiceUtil.getService(TaxReportColumnServiceImpl.class, user);
}
private SalaryItemService getSalaryItemService(User user) {
return ServiceUtil.getService(SalaryItemServiceImpl.class, user);
}
private SalarySobItemService getSalarySobItemService(User user) {
return ServiceUtil.getService(SalarySobItemServiceImpl.class, user);
}
private SalarySobBackItemService getSalarySobBackItemService(User user) {
return ServiceUtil.getService(SalarySobBackItemServiceImpl.class, user);
}
@Override
public List<SalarySobTaxReportRulePO> listBySalarySobIds(Collection<Long> salarySobIds) {
if (CollectionUtils.isEmpty(salarySobIds)) {
return Collections.emptyList();
}
return salarySobTaxReportRuleMapper().listSome(SalarySobTaxReportRulePO.builder().salarySobIds(salarySobIds).build());
}
@Override
public List<SalarySobTaxReportRuleDTO> getSalarySobTaxReportRuleDTO(Long salarySobId) {
List<SalarySobTaxReportRuleDTO> resultList = Lists.newArrayList();
// 查询薪资账套
SalarySobPO salarySob = getSalarySobService(user).getById(salarySobId);
Integer incomeCategory = salarySob.getIncomeCategory();
List<Integer> incomeCategoryIds = Collections.singletonList(incomeCategory);
// 薪资账套的薪资项目
List<SalarySobItemPO> salarySobItems = getSalarySobItemService(user).listBySalarySobId(salarySobId);
// 薪资账套的回算薪资项目
List<SalarySobBackItemPO> salarySobBackItems = getSalarySobBackItemService(user).listBySalarySobId(salarySobId);
// 薪资项目
Set<Long> salaryItemIds = Sets.newHashSet();
salaryItemIds.addAll(SalaryEntityUtil.properties(salarySobItems, SalarySobItemPO::getSalaryItemId));
salaryItemIds.addAll(SalaryEntityUtil.properties(salarySobBackItems, SalarySobBackItemPO::getSalaryItemId));
List<SalaryItemPO> salaryItems = getSalaryItemService(user).listByIds(salaryItemIds);
Map<Long, SalaryItemPO> idKeySalaryItemMap = SalaryEntityUtil.convert2Map(salaryItems, SalaryItemPO::getId);
// 薪资账套中已经存在的对应关系
List<SalarySobTaxReportRulePO> salarySobTaxReportRules = listBySalarySobIds(Collections.singleton(salarySobId));
Map<String, Long> salarySobTaxReportRuleMap = SalaryEntityUtil.convert2Map(salarySobTaxReportRules,
e -> e.getIncomeCategory() + "-" + e.getReportColumnDataIndex(), SalarySobTaxReportRulePO::getSalaryItemId);
for (Integer incomeCategoryId : incomeCategoryIds) {
IncomeCategoryEnum incomeCategoryEnum = IncomeCategoryEnum.parseByValue(incomeCategoryId);
List<TaxReportColumnPO> taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum);
List<SalarySobTaxReportRuleDTO.TaxReportRuleDTO> taxReportRules = Lists.newArrayList();
for (TaxReportColumnPO taxReportColumn : taxReportColumns) {
SalarySobTaxReportRuleDTO.TaxReportRuleDTO taxReportRuleDTO = new SalarySobTaxReportRuleDTO.TaxReportRuleDTO();
taxReportRuleDTO.setId(taxReportColumn.getId());
taxReportRuleDTO.setReportColumnName(taxReportColumn.getReportColumnName());
taxReportRuleDTO.setReportColumnDataIndex(taxReportColumn.getReportColumnDataIndex());
taxReportRuleDTO.setSalaryItem(Collections.emptyList());
taxReportRuleDTO.setCanEdit(true);
Long salaryItemId = salarySobTaxReportRuleMap.get(incomeCategoryId + "-" + taxReportColumn.getReportColumnDataIndex());
SalaryItemPO salaryItem = idKeySalaryItemMap.get(salaryItemId);
if (Objects.nonNull(salaryItem)) {
Map<String, Object> dataMap = Maps.newHashMap();
dataMap.put("id", salaryItem.getId().toString());
dataMap.put("name", salaryItem.getName());
dataMap.put("icon", "Icon-N-Salary-item-management");
taxReportRuleDTO.setSalaryItem(Collections.singletonList(dataMap));
}
taxReportRules.add(taxReportRuleDTO);
}
SalarySobTaxReportRuleDTO salarySobTaxReportRuleDTO = new SalarySobTaxReportRuleDTO();
salarySobTaxReportRuleDTO.setIncomeCategoryId(incomeCategoryId.toString());
salarySobTaxReportRuleDTO.setIncomeCategoryName(incomeCategoryEnum == null ? "" : SalaryI18nUtil.getI18nLabel(incomeCategoryEnum.getLabelId(), incomeCategoryEnum.getDefaultLabel()));
salarySobTaxReportRuleDTO.setTaxReportRules(taxReportRules);
resultList.add(salarySobTaxReportRuleDTO);
}
return resultList;
}
@Override
public void saveByParam(SalarySobTaxReportRuleSaveParam saveParam) {
// 校验参数是否合法
// 构建po
Date now = new Date();
List<SalarySobTaxReportRulePO> salarySobTaxReportRules = Lists.newArrayList();
for (SalarySobTaxReportRuleSaveParam.TaxReportRuleIncomeCategoryParam incomeCategoryParam : saveParam.getIncomeCategoryParams()) {
for (SalarySobTaxReportRuleSaveParam.TaxReportRuleParam taxReportRuleParam : incomeCategoryParam.getTaxReportRuleParams()) {
SalarySobTaxReportRulePO salarySobTaxReportRule = new SalarySobTaxReportRulePO()
.setId(IdGenerator.generate())
.setSalarySobId(saveParam.getSalarySobId())
.setIncomeCategory(incomeCategoryParam.getIncomeCategory())
.setReportColumnDataIndex(taxReportRuleParam.getReportColumnDataIndex())
.setSalaryItemId(taxReportRuleParam.getSalaryItemId())
.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.setCreator((long) user.getUID())
.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue())
.setCreateTime(now)
.setUpdateTime(now);
salarySobTaxReportRules.add(salarySobTaxReportRule);
}
}
deleteBySalarySobIds(Collections.singleton(saveParam.getSalarySobId()));
if (CollectionUtils.isNotEmpty(salarySobTaxReportRules)) {
salarySobTaxReportRuleMapper().batchInsert(salarySobTaxReportRules);
}
}
@Override
public void deleteBySalarySobIds(Collection<Long> salarySobIds) {
if (CollectionUtils.isEmpty(salarySobIds)) {
return;
}
salarySobTaxReportRuleMapper().deleteBySalarySobIds(salarySobIds);
}
@Override
public void saveBatch(List<SalarySobTaxReportRulePO> salarySobTaxReportRules) {
if (CollectionUtils.isEmpty(salarySobTaxReportRules)) {
return;
}
salarySobTaxReportRuleMapper().batchInsert(salarySobTaxReportRules);
}
}

View File

@ -92,6 +92,7 @@ public class SalaryEnumUtil {
for (BaseEnum enumMessage : enums) { for (BaseEnum enumMessage : enums) {
Map<String, Object> hashMap = new HashMap<String, Object>(); Map<String, Object> hashMap = new HashMap<String, Object>();
hashMap.put("enum", enumMessage);
hashMap.put("value", enumMessage.getValue()); hashMap.put("value", enumMessage.getValue());
hashMap.put("defaultLabel", enumMessage.getDefaultLabel()); hashMap.put("defaultLabel", enumMessage.getDefaultLabel());
hashMap.put("labelId", enumMessage.getLabelId()); hashMap.put("labelId", enumMessage.getLabelId());

View File

@ -216,7 +216,7 @@ public class EmployeeDeclareController {
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
public String declare(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareParam employeeDeclareParam) { public String declare(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareParam employeeDeclareParam) {
User user = HrmUserVarify.getUser(request, response); User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<EmployeeDeclareParam, EmployeeDeclareInfoDTO>(user).run(getEmployeeDeclareWrapper(user)::declare, employeeDeclareParam); return new ResponseResult<EmployeeDeclareParam, String>(user).run(getEmployeeDeclareWrapper(user)::declare, employeeDeclareParam);
} }
/** /**
@ -230,7 +230,7 @@ public class EmployeeDeclareController {
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
public String getDeclareFeedback(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareParam employeeDeclareParam) { public String getDeclareFeedback(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareParam employeeDeclareParam) {
User user = HrmUserVarify.getUser(request, response); User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<EmployeeDeclareParam, EmployeeDeclareInfoDTO>(user).run(getEmployeeDeclareWrapper(user)::getDeclareFeedback, employeeDeclareParam); return new ResponseResult<EmployeeDeclareParam, String>(user).run(getEmployeeDeclareWrapper(user)::getDeclareFeedback, employeeDeclareParam);
} }
/** /**

View File

@ -71,6 +71,9 @@ public class SalarySobController {
return ServiceUtil.getService(SalarySobBackItemWrapper.class, user); return ServiceUtil.getService(SalarySobBackItemWrapper.class, user);
} }
private SalarySobTaxReportRuleWrapper getSalarySobTaxReportRuleWrapper(User user) {
return ServiceUtil.getService(SalarySobTaxReportRuleWrapper.class, user);
}
/**********************************薪资账套 start*********************************/ /**********************************薪资账套 start*********************************/
/** /**
@ -244,13 +247,13 @@ public class SalarySobController {
public Response downloadSobRangeTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "salarySobId") Long salarySobId) { public Response downloadSobRangeTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "salarySobId") Long salarySobId) {
User user = HrmUserVarify.getUser(request, response); User user = HrmUserVarify.getUser(request, response);
SalarySobPO salarySobPO = Objects.isNull(salarySobId) ? null : getSalarySobWrapper(user).getSalarySobService(user).getById(salarySobId); SalarySobPO salarySobPO = Objects.isNull(salarySobId) ? null : getSalarySobWrapper(user).getSalarySobService(user).getById(salarySobId);
if(Objects.isNull(salarySobPO)){ if (Objects.isNull(salarySobPO)) {
throw new SalaryRunTimeException("薪资账套不存在或已被删除"); throw new SalaryRunTimeException("薪资账套不存在或已被删除");
} }
try { try {
XSSFWorkbook workbook = getSalarySobRangeWrapper(user).exportImportTemplate(); XSSFWorkbook workbook = getSalarySobRangeWrapper(user).exportImportTemplate();
String time = LocalDate.now().toString(); String time = LocalDate.now().toString();
String fileName = salarySobPO.getName() + "人员范围导入模板" + time ; String fileName = salarySobPO.getName() + "人员范围导入模板" + time;
try { try {
fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8");
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
@ -261,17 +264,15 @@ public class SalarySobController {
outputStream.flush(); outputStream.flush();
}; };
response.setContentType("application/octet-stream"); response.setContentType("application/octet-stream");
return Response.ok(output). return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build();
header("Content-disposition", "attachment;filename=" + fileName).
header("Cache-Control", "no-cache").build();
} catch (Exception e) { } catch (Exception e) {
throw e; throw e;
} }
} }
/** /**
* @description 薪资账套人员范围导入预览
* @return String * @return String
* @description 薪资账套人员范围导入预览
* @author Harryxzy * @author Harryxzy
* @date 2023/1/9 13:32 * @date 2023/1/9 13:32
*/ */
@ -284,8 +285,8 @@ public class SalarySobController {
} }
/** /**
* @description 薪资账套人员范围导入
* @return String * @return String
* @description 薪资账套人员范围导入
* @author Harryxzy * @author Harryxzy
* @date 2023/1/9 13:32 * @date 2023/1/9 13:32
*/ */
@ -309,7 +310,7 @@ public class SalarySobController {
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
public String listSalaryItem(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryItemSearchParam queryParam) { public String listSalaryItem(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryItemSearchParam queryParam) {
User user = HrmUserVarify.getUser(request, response); User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<SalaryItemSearchParam, PageInfo<SalaryItemSobListDTO> >(user).run(getSalarySobItemWrapper(user)::listPage4SalaryItem, queryParam); return new ResponseResult<SalaryItemSearchParam, PageInfo<SalaryItemSobListDTO>>(user).run(getSalarySobItemWrapper(user)::listPage4SalaryItem, queryParam);
} }
@ -368,32 +369,28 @@ public class SalarySobController {
} }
/**********************************薪资账套的薪资项目 end*********************************/ /**********************************薪资账套的薪资项目 end*********************************/
/**********************************薪资账套的回算项目 start*********************************/ /**********************************薪资账套的回算项目 start*********************************/
/** /**
* @description 薪资账套回算项目列表
* @return String * @return String
* @description 薪资账套回算项目列表
* @author Harryxzy * @author Harryxzy
* @date 2022/11/16 14:01 * @date 2022/11/16 14:01
*/ */
@GET @GET
@Path("/backitem/getAggregate") @Path("/backitem/getAggregate")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
public String getSalarySobBackItemAggregate(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam(value = "salarySobId") Long salarySobId) { public String getSalarySobBackItemAggregate(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "salarySobId") Long salarySobId) {
User user = HrmUserVarify.getUser(request, response); User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<Long,SalarySobBackItemAggregateDTO>(user).run(getSalarySobBackItemWrapper(user)::getAggregate, salarySobId); return new ResponseResult<Long, SalarySobBackItemAggregateDTO>(user).run(getSalarySobBackItemWrapper(user)::getAggregate, salarySobId);
} }
/** /**
* @description 薪资账套回算项目详情(编辑前获取)
* @return null * @return null
* @description 薪资账套回算项目详情(编辑前获取)
* @author Harryxzy * @author Harryxzy
* @date 2022/11/16 14:02 * @date 2022/11/16 14:02
*/ */
@ -401,28 +398,61 @@ public class SalarySobController {
@Path("/backitem/getForm") @Path("/backitem/getForm")
@ApiOperation("薪资账套回算项目详情") @ApiOperation("薪资账套回算项目详情")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
public String getSalarySobBackItemForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value ="id") Long id) { public String getSalarySobBackItemForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) {
User user = HrmUserVarify.getUser(request, response); User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<Long,SalarySobBackItemFormDTO>(user).run(getSalarySobBackItemWrapper(user)::getForm, id); return new ResponseResult<Long, SalarySobBackItemFormDTO>(user).run(getSalarySobBackItemWrapper(user)::getForm, id);
} }
/** /**
* @description 保存薪资账套回算项目 * @description 保存薪资账套回算项目
* @return String
* @author Harryxzy * @author Harryxzy
* @date 2022/11/16 15:05 * @date 2022/11/16 15:05
*/ */
@POST @POST
@Path("/backitem/save") @Path("/backitem/save")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
public String saveSalarySobBackItem(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody SalarySobBackItemSaveParam saveParam) { public String saveSalarySobBackItem(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalarySobBackItemSaveParam saveParam) {
User user = HrmUserVarify.getUser(request, response); User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<SalarySobBackItemSaveParam,List<SalarySobBackItemDTO>>(user).run(getSalarySobBackItemWrapper(user)::save, saveParam); return new ResponseResult<SalarySobBackItemSaveParam, List<SalarySobBackItemDTO>>(user).run(getSalarySobBackItemWrapper(user)::save, saveParam);
} }
/**********************************薪资账套的回算项目 end*********************************/ /**********************************薪资账套的回算项目 end*********************************/
/**********************************薪资账套的个税申报表规则 start*********************************/
/**
* 薪资账套下的个税申报表规则的详情
*
* @param id 薪资账套id
* @return
*/
@GET
@Path("/taxreportrule/getForm")
@ApiOperation("薪资账套下的个税申报表规则的详情")
@Produces(MediaType.APPLICATION_JSON)
public String getSalarySobTaxReportRuleForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<Long, List<SalarySobTaxReportRuleDTO>>(user).run(getSalarySobTaxReportRuleWrapper(user)::getForm, id);
}
/**
* 保存薪资账套下的个税申报表规则的
*
* @param saveParam 保存参数
* @return
*/
@POST
@Path("/taxreportrule/save")
@ApiOperation("保存薪资账套下的个税申报表规则的")
@Produces(MediaType.APPLICATION_JSON)
public String saveSalarySobTaxReportRule(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalarySobTaxReportRuleSaveParam saveParam) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<SalarySobTaxReportRuleSaveParam, String>(user).run(getSalarySobTaxReportRuleWrapper(user)::save, saveParam);
}
/**********************************薪资账套的个税申报表规则 end*********************************/
/**********************************调薪计薪规则 start*********************************/ /**********************************调薪计薪规则 start*********************************/

View File

@ -113,7 +113,7 @@ public class EmployeeDeclareWrapper extends Service {
List<EmployeeDeclarePO> employeeDeclarePOS = getEmployeeDeclareService(user).listByParam(queryParam); List<EmployeeDeclarePO> employeeDeclarePOS = getEmployeeDeclareService(user).listByParam(queryParam);
employeeDeclarePOS = SalaryPageUtil.subList(queryParam.getCurrent(), queryParam.getPageSize(), employeeDeclarePOS); employeeDeclarePOS = SalaryPageUtil.subList(queryParam.getCurrent(), queryParam.getPageSize(), employeeDeclarePOS);
List<EmployeeDeclareListDTO> convert = getEmployeeDeclareService(user).convert(employeeDeclarePOS); List<EmployeeDeclareListDTO> convert = getEmployeeDeclareService(user).convert(employeeDeclarePOS);
PageInfo<EmployeeDeclareListDTO> pageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(),EmployeeDeclareListDTO.class); PageInfo<EmployeeDeclareListDTO> pageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), EmployeeDeclareListDTO.class);
pageInfo.setList(convert); pageInfo.setList(convert);
pageInfo.setTotal(employeeDeclarePOS.size()); pageInfo.setTotal(employeeDeclarePOS.size());
@ -147,7 +147,7 @@ public class EmployeeDeclareWrapper extends Service {
PageInfo<EmployeeDeclarePO> addPoPageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), addPOList, EmployeeDeclarePO.class); PageInfo<EmployeeDeclarePO> addPoPageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), addPOList, EmployeeDeclarePO.class);
List<EmployeeDeclareListDTO> addDTOList = getEmployeeDeclareService(user).convert(addPoPageInfo.getList()); List<EmployeeDeclareListDTO> addDTOList = getEmployeeDeclareService(user).convert(addPoPageInfo.getList());
// 分页 // 分页
PageInfo<EmployeeDeclareListDTO> pageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize()); PageInfo<EmployeeDeclareListDTO> pageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), EmployeeDeclareListDTO.class);
pageInfo.setList(addDTOList); pageInfo.setList(addDTOList);
pageInfo.setTotal(addPOList.size()); pageInfo.setTotal(addPOList.size());
@ -185,7 +185,7 @@ public class EmployeeDeclareWrapper extends Service {
// 查询上个月报送的人员 // 查询上个月报送的人员
Set<Long> employeeIds = SalaryEntityUtil.properties(poPageInfo.getList(), EmployeeDeclarePO::getEmployeeId); Set<Long> employeeIds = SalaryEntityUtil.properties(poPageInfo.getList(), EmployeeDeclarePO::getEmployeeId);
List<EmployeeDeclarePO> preTaxCycleEmployeeDeclares = getEmployeeDeclareService(user).listByTaxCycleAndTaxAgentIdAndEmployeeIds( List<EmployeeDeclarePO> preTaxCycleEmployeeDeclares = getEmployeeDeclareService(user).listByTaxCycleAndTaxAgentIdAndEmployeeIds(
SalaryDateUtil.plusMonths(queryParam.getTaxCycle(),-1), queryParam.getTaxAgentId(), employeeIds); SalaryDateUtil.plusMonths(queryParam.getTaxCycle(), -1), queryParam.getTaxAgentId(), employeeIds);
// 获取修改了哪些字段 // 获取修改了哪些字段
Map<Long, Set<String>> updatedFieldMap = EmployeeDeclareList.getUpdatedField(poPageInfo.getList(), preTaxCycleEmployeeDeclares); Map<Long, Set<String>> updatedFieldMap = EmployeeDeclareList.getUpdatedField(poPageInfo.getList(), preTaxCycleEmployeeDeclares);
for (EmployeeDeclareListDTO employeeDeclareListDTO : (List<EmployeeDeclareListDTO>) dtoPageInfo.getList()) { for (EmployeeDeclareListDTO employeeDeclareListDTO : (List<EmployeeDeclareListDTO>) dtoPageInfo.getList()) {
@ -270,12 +270,12 @@ public class EmployeeDeclareWrapper extends Service {
.setCardType(CardTypeEnum.RESIDENT_IDENTITY_CARDS) .setCardType(CardTypeEnum.RESIDENT_IDENTITY_CARDS)
.setCardNum(employeeDeclare.getCardNum()) .setCardNum(employeeDeclare.getCardNum())
.setGender(SalaryEnumUtil.enumMatchByValue(employeeDeclare.getGender(), GenderEnum.class)) .setGender(SalaryEnumUtil.enumMatchByValue(employeeDeclare.getGender(), GenderEnum.class))
.setBirthday(SalaryDateUtil.dateToLocalDate(employeeDeclare.getBirthday())) .setBirthday(employeeDeclare.getBirthday())
.setEmploymentStatus(SalaryEnumUtil.enumMatchByValue(employeeDeclare.getEmploymentStatus(), EmploymentStatusEnum.class)) .setEmploymentStatus(SalaryEnumUtil.enumMatchByValue(employeeDeclare.getEmploymentStatus(), EmploymentStatusEnum.class))
.setMobile(employeeDeclare.getMobile()) .setMobile(employeeDeclare.getMobile())
.setEmploymentType(SalaryEnumUtil.enumMatchByValue(employeeDeclare.getEmploymentType(), EmploymentTypeEnum.class)) .setEmploymentType(SalaryEnumUtil.enumMatchByValue(employeeDeclare.getEmploymentType(), EmploymentTypeEnum.class))
.setEmploymentDate(SalaryDateUtil.dateToLocalDate(employeeDeclare.getEmploymentDate())) .setEmploymentDate(employeeDeclare.getEmploymentDate())
.setDismissDate(SalaryDateUtil.dateToLocalDate(employeeDeclare.getDismissDate())) .setDismissDate(employeeDeclare.getDismissDate())
.setDisability(SalaryEnumUtil.enumMatchByValue(employeeDeclare.getDisability(), SalaryOnOffEnum.class)) .setDisability(SalaryEnumUtil.enumMatchByValue(employeeDeclare.getDisability(), SalaryOnOffEnum.class))
.setDisabilityCardNo(employeeDeclare.getDisabilityCardNo()) .setDisabilityCardNo(employeeDeclare.getDisabilityCardNo())
.setLonelyOld(SalaryEnumUtil.enumMatchByValue(employeeDeclare.getLonelyOld(), SalaryOnOffEnum.class)) .setLonelyOld(SalaryEnumUtil.enumMatchByValue(employeeDeclare.getLonelyOld(), SalaryOnOffEnum.class))
@ -531,7 +531,7 @@ public class EmployeeDeclareWrapper extends Service {
* @return * @return
*/ */
public EmployeeDeclareRateDTO getRate(String index) { public EmployeeDeclareRateDTO getRate(String index) {
return getSalaryCacheService(user).get(SalaryCacheKey.EMPLOYEE_DECLARE+ index); return getSalaryCacheService(user).get(SalaryCacheKey.EMPLOYEE_DECLARE + index);
} }
// /** // /**

View File

@ -0,0 +1,46 @@
package com.engine.salary.wrapper;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.entity.salarysob.dto.SalarySobTaxReportRuleDTO;
import com.engine.salary.entity.salarysob.param.SalarySobTaxReportRuleSaveParam;
import com.engine.salary.service.SalarySobTaxReportRuleService;
import com.engine.salary.service.impl.SalarySobTaxReportRuleServiceImpl;
import org.springframework.stereotype.Component;
import weaver.hrm.User;
import java.util.List;
/**
* @description: 薪资账套的个税申报表规则
* @author: xiajun
* @modified By: xiajun
* @date: Created in 2022/12/7 4:27 PM
* @version:v1.0
*/
@Component
public class SalarySobTaxReportRuleWrapper extends Service {
private SalarySobTaxReportRuleService getSalarySobTaxReportRuleService(User user) {
return ServiceUtil.getService(SalarySobTaxReportRuleServiceImpl.class, user);
}
/**
* 薪资账套的个税申报表规则
*
* @param salarySobId
* @return
*/
public List<SalarySobTaxReportRuleDTO> getForm(Long salarySobId) {
return getSalarySobTaxReportRuleService(user).getSalarySobTaxReportRuleDTO(salarySobId);
}
/**
* 保存薪资账套的个税申报表规则
*
* @param saveParam
*/
public void save(SalarySobTaxReportRuleSaveParam saveParam) {
getSalarySobTaxReportRuleService(user).saveByParam(saveParam);
}
}