From cf253ecfb04b4d3a7cb9d88271aa044739585500 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 23 Dec 2024 16:41:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E5=85=BB=E8=80=81=E9=87=91?= =?UTF-8?q?=E9=99=84=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202412230103.sql | 25 ++ resource/sqlupgrade/GS/sql202412230103.sql | 25 ++ resource/sqlupgrade/JC/sql202412230103.sql | 25 ++ resource/sqlupgrade/Mysql/sql202412230103.sql | 24 ++ .../sqlupgrade/Oracle/sql202412230103.sql | 24 ++ resource/sqlupgrade/PG/sql202412230103.sql | 24 ++ .../sqlupgrade/SQLServer/sql202412230103.sql | 24 ++ resource/sqlupgrade/ST/sql202412230103.sql | 25 ++ .../dto/PersonalPensionListDTO.java | 127 ++++++ .../param/DerateDeductionSaveParam.java | 48 +++ .../param/EndowmentInsuranceSaveParam.java | 60 +++ .../param/FreeIncomeSaveParam.java | 48 +++ .../param/GrantDonationSaveParam.java | 59 +++ .../param/HealthInsuranceSaveParam.java | 54 +++ .../param/OtherDerateDeductionSaveParam.java | 45 ++ .../datacollection/po/OtherDeductionPO.java | 1 + .../PersonalPensionVoucherTypeEnum.java | 52 +++ .../datacollection/PersonalPensionMapper.java | 73 ++++ .../datacollection/PersonalPensionMapper.xml | 390 ++++++++++++++++++ .../salary/service/OtherDeductionService.java | 19 +- .../impl/OtherDeductionServiceImpl.java | 193 ++++++++- 21 files changed, 1361 insertions(+), 4 deletions(-) create mode 100644 resource/sqlupgrade/DM/sql202412230103.sql create mode 100644 resource/sqlupgrade/GS/sql202412230103.sql create mode 100644 resource/sqlupgrade/JC/sql202412230103.sql create mode 100644 resource/sqlupgrade/Mysql/sql202412230103.sql create mode 100644 resource/sqlupgrade/Oracle/sql202412230103.sql create mode 100644 resource/sqlupgrade/PG/sql202412230103.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202412230103.sql create mode 100644 resource/sqlupgrade/ST/sql202412230103.sql create mode 100644 src/com/engine/salary/entity/datacollection/dto/PersonalPensionListDTO.java create mode 100644 src/com/engine/salary/entity/datacollection/param/DerateDeductionSaveParam.java create mode 100644 src/com/engine/salary/entity/datacollection/param/EndowmentInsuranceSaveParam.java create mode 100644 src/com/engine/salary/entity/datacollection/param/FreeIncomeSaveParam.java create mode 100644 src/com/engine/salary/entity/datacollection/param/GrantDonationSaveParam.java create mode 100644 src/com/engine/salary/entity/datacollection/param/HealthInsuranceSaveParam.java create mode 100644 src/com/engine/salary/entity/datacollection/param/OtherDerateDeductionSaveParam.java create mode 100644 src/com/engine/salary/enums/datacollection/PersonalPensionVoucherTypeEnum.java create mode 100644 src/com/engine/salary/mapper/datacollection/PersonalPensionMapper.java create mode 100644 src/com/engine/salary/mapper/datacollection/PersonalPensionMapper.xml diff --git a/resource/sqlupgrade/DM/sql202412230103.sql b/resource/sqlupgrade/DM/sql202412230103.sql new file mode 100644 index 000000000..7d3959666 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202412230103.sql @@ -0,0 +1,25 @@ +create table hrsa_personal_pension +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + voucher_type varchar2(255), + voucher_no varchar2(255), + pay_amount varchar2(255), + data_source int, + collect_source varchar2(50), + pay_month date, + eb_data_id number, + voucher_type_name varchar2(50), + employee_type int +); +/ + diff --git a/resource/sqlupgrade/GS/sql202412230103.sql b/resource/sqlupgrade/GS/sql202412230103.sql new file mode 100644 index 000000000..7d3959666 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202412230103.sql @@ -0,0 +1,25 @@ +create table hrsa_personal_pension +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + voucher_type varchar2(255), + voucher_no varchar2(255), + pay_amount varchar2(255), + data_source int, + collect_source varchar2(50), + pay_month date, + eb_data_id number, + voucher_type_name varchar2(50), + employee_type int +); +/ + diff --git a/resource/sqlupgrade/JC/sql202412230103.sql b/resource/sqlupgrade/JC/sql202412230103.sql new file mode 100644 index 000000000..7d3959666 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202412230103.sql @@ -0,0 +1,25 @@ +create table hrsa_personal_pension +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + voucher_type varchar2(255), + voucher_no varchar2(255), + pay_amount varchar2(255), + data_source int, + collect_source varchar2(50), + pay_month date, + eb_data_id number, + voucher_type_name varchar2(50), + employee_type int +); +/ + diff --git a/resource/sqlupgrade/Mysql/sql202412230103.sql b/resource/sqlupgrade/Mysql/sql202412230103.sql new file mode 100644 index 000000000..1905ea452 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202412230103.sql @@ -0,0 +1,24 @@ +create table hrsa_personal_pension +( + id bigint primary key comment 'ID' , + create_time datetime comment '创建时间' , + update_time datetime comment '修改时间' , + creator bigint comment '创建人id' , + delete_type int default 0 comment '是否删除' , + tenant_key varchar(10) comment '租户KEY' , + main_id bigint comment '主表数据id' , + tax_year_month date comment '税款所属期' , + employee_id bigint comment '人员id' , + tax_agent_id bigint comment '个税扣缴义务人id' , + file_status int comment '归档状态 0未归档 1已归档' , + voucher_type varchar(255) comment '凭证类型' , + voucher_no varchar(255) comment '凭证编码' , + pay_amount varchar(255) comment '金额' , + data_source int comment '数据来源' , + collect_source varchar(50) comment '采集来源' , + pay_month date comment '缴费月度' , + eb_data_id bigint comment 'eb数据id' , + voucher_type_name varchar(50) comment '凭证类型' , + employee_type int comment '人员类型' +) +; \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202412230103.sql b/resource/sqlupgrade/Oracle/sql202412230103.sql new file mode 100644 index 000000000..e84bbd88e --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202412230103.sql @@ -0,0 +1,24 @@ +create table hrsa_personal_pension +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + voucher_type varchar2(255), + voucher_no varchar2(255), + pay_amount varchar2(255), + data_source int, + collect_source varchar2(50), + pay_month date, + eb_data_id number, + voucher_type_name varchar2(50), + employee_type int +) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202412230103.sql b/resource/sqlupgrade/PG/sql202412230103.sql new file mode 100644 index 000000000..9e48e428d --- /dev/null +++ b/resource/sqlupgrade/PG/sql202412230103.sql @@ -0,0 +1,24 @@ +create table hrsa_personal_pension +( + id bigint primary key , + create_time timestamp, + update_time timestamp, + creator bigint, + delete_type int default 0, + tenant_key varchar(10), + main_id bigint, + tax_year_month date, + employee_id bigint, + tax_agent_id bigint, + file_status int, + voucher_type varchar(255), + voucher_no varchar(255), + pay_amount varchar(255), + data_source int, + collect_source varchar(50), + pay_month date, + eb_data_id bigint, + voucher_type_name varchar(50), + employee_type int +); +/ \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202412230103.sql b/resource/sqlupgrade/SQLServer/sql202412230103.sql new file mode 100644 index 000000000..6fd85b259 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202412230103.sql @@ -0,0 +1,24 @@ +create table hrsa_personal_pension +( + id bigint primary key , + create_time datetime, + update_time datetime, + creator bigint, + delete_type int default 0, + tenant_key nvarchar(10), + main_id bigint, + tax_year_month datetime, + employee_id bigint, + tax_agent_id bigint, + file_status int, + voucher_type nvarchar(255), + voucher_no nvarchar(255), + pay_amount nvarchar(255), + data_source int, + collect_source nvarchar(50), + pay_month datetime, + eb_data_id bigint, + voucher_type_name nvarchar(50), + employee_type int +) +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202412230103.sql b/resource/sqlupgrade/ST/sql202412230103.sql new file mode 100644 index 000000000..7d3959666 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202412230103.sql @@ -0,0 +1,25 @@ +create table hrsa_personal_pension +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + voucher_type varchar2(255), + voucher_no varchar2(255), + pay_amount varchar2(255), + data_source int, + collect_source varchar2(50), + pay_month date, + eb_data_id number, + voucher_type_name varchar2(50), + employee_type int +); +/ + diff --git a/src/com/engine/salary/entity/datacollection/dto/PersonalPensionListDTO.java b/src/com/engine/salary/entity/datacollection/dto/PersonalPensionListDTO.java new file mode 100644 index 000000000..01becf206 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/dto/PersonalPensionListDTO.java @@ -0,0 +1,127 @@ +package com.engine.salary.entity.datacollection.dto; + +import com.engine.salary.annotation.I18n; +import com.engine.salary.annotation.TableTitle; +import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; +import com.engine.salary.enums.datacollection.EnumDeductionDataSource; +import com.engine.salary.util.excel.ExcelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 鍏朵粬鍏嶇◣鎵i櫎-涓汉鍏昏侀噾 + *

Copyright: Copyright (c) 2024

+ *

Company: 娉涘井杞欢

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_personal_pension +//鍏朵粬鍏嶇◣鎵i櫎-涓汉鍏昏侀噾 +public class PersonalPensionListDTO { + + private Long id; + + private Long mainId; + + /** + * 涓◣鎵g即涔夊姟浜篿d + */ + private Long taxAgentId; + + + private Long employeeId; + /** + * 浜哄憳绫诲瀷 + * + * @see DataCollectionEmployeeTypeEnum + */ + private Integer employeeType; + + @TableTitle(title = "绋庢鎵灞炴湡", dataIndex = "taxYearMonth", key = "taxYearMonth") + private Date taxYearMonth; + + //濮撳悕 + @TableTitle(title = "濮撳悕", dataIndex = "username", key = "username") + @ExcelProperty(index = 0) + @I18n + private String username; + + //涓◣鎵g即涔夊姟浜 + @TableTitle(title = "涓◣鎵g即涔夊姟浜", dataIndex = "taxAgentName", key = "taxAgentName") + @ExcelProperty(index = 1) + private String taxAgentName; + + //閮ㄩ棬 + @TableTitle(title = "閮ㄩ棬", dataIndex = "departmentName", key = "departmentName") + @ExcelProperty(index = 2) + @I18n + private String departmentName; + + //鎵嬫満鍙 + @TableTitle(title = "鎵嬫満鍙", dataIndex = "mobile", key = "mobile") + @ExcelProperty(index = 3) + private String mobile; + + //宸ュ彿 + @TableTitle(title = "宸ュ彿", dataIndex = "jobNum", key = "jobNum") + @ExcelProperty(index = 4) + private String jobNum; + + //璇佷欢鍙风爜 + @ExcelProperty(index = 5) + @TableTitle(title = "璇佷欢鍙风爜", dataIndex = "idNo", key = "idNo") + private String idNo; + + + //缂磋垂鏈堝害 + private Date payMonth; + + //鍑瘉绫诲埆 + private Integer voucherType; + + //鍑瘉绫诲埆鍚嶇О + @ExcelProperty(index = 6) + @TableTitle(title = "鍑瘉绫诲瀷", dataIndex = "voucherTypeName", key = "voucherTypeName") + private String voucherTypeName; + + //鍑瘉缂栫爜 + @ExcelProperty(index = 7) + @TableTitle(title = "鍑瘉缂栫爜", dataIndex = "voucherNo", key = "voucherNo") + private String voucherNo; + + //缂磋垂閲戦 + @ExcelProperty(index = 8) + @TableTitle(title = "缂磋垂閲戦", dataIndex = "payAmount", key = "payAmount") + private String payAmount; + + //褰掓。鐘舵 0鏈綊妗 1宸插綊妗 + private Integer fileStatus; + + /** + * @see EnumDeductionDataSource + */ + //鏁版嵁鏉ユ簮 + private Integer dataSource; + + //閲囬泦鏉ユ簮 + private String collectSource; + + //鍒涘缓鏃堕棿 + private Date createTime; + + //鏇存柊鏃堕棿 + private Date updateTime; + + //鍒涘缓浜 + private Long creator; + +} diff --git a/src/com/engine/salary/entity/datacollection/param/DerateDeductionSaveParam.java b/src/com/engine/salary/entity/datacollection/param/DerateDeductionSaveParam.java new file mode 100644 index 000000000..0eaf002cb --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/DerateDeductionSaveParam.java @@ -0,0 +1,48 @@ +package com.engine.salary.entity.datacollection.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 鍑忓厤绋庨 + *

Copyright: Copyright (c) 2024

+ *

Company: 娉涘井杞欢

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_derate_deduction +//鍏朵粬鍏嶇◣鎵i櫎-鍑忓厤绋庨 +public class DerateDeductionSaveParam { + //涓婚敭id + private Long id; + + //涓昏〃鏁版嵁Id + private Long mainId; + + //绋庢鎵灞炴湡 + private Date taxYearMonth; + + //浜哄憳 + private Long employeeId; + + //涓◣鎵g即涔夊姟浜 + private Long taxAgentId; + + //鍑忓厤浜嬮」 + private String derateItem; + + //鍑忓厤鎬ц川 + private String derateProperty; + + //鍑忓厤閲戦 + private String derateAmount; +} diff --git a/src/com/engine/salary/entity/datacollection/param/EndowmentInsuranceSaveParam.java b/src/com/engine/salary/entity/datacollection/param/EndowmentInsuranceSaveParam.java new file mode 100644 index 000000000..7a5b6ffba --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/EndowmentInsuranceSaveParam.java @@ -0,0 +1,60 @@ +package com.engine.salary.entity.datacollection.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 绋庡欢鍏昏佷繚闄 + *

Copyright: Copyright (c) 2024

+ *

Company: 娉涘井杞欢

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_endowment_insurance +//鍏朵粬鍏嶇◣鎵i櫎-绋庡欢鍏昏佷繚闄 +public class EndowmentInsuranceSaveParam { + + //涓婚敭 + private Long id; + + //涓昏〃鏁版嵁Id + private Long mainId; + + //绋庢鎵灞炴湡 + private Date taxYearMonth; + + //浜哄憳id + private Long employeeId; + + //涓◣鎵g即涔夊姟浜篒D + private Long taxAgentId; + + //鐢虫姤鎵i櫎鏈堜唤 + private Date deductionMonth; + + //绋庡欢鍏昏佽处鎴风紪鍙 + private String accountNumber; + + //鎶ョ◣鏍¢獙鐮 + private String checkCode; + + //骞村害淇濊垂 + private String yearPremium; + + //鏈堝害淇濊垂 + private String monthPremium; + + //鏈湡鎵i櫎閲戦 + private String currentDeduction; + + +} diff --git a/src/com/engine/salary/entity/datacollection/param/FreeIncomeSaveParam.java b/src/com/engine/salary/entity/datacollection/param/FreeIncomeSaveParam.java new file mode 100644 index 000000000..70e05f6bc --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/FreeIncomeSaveParam.java @@ -0,0 +1,48 @@ +package com.engine.salary.entity.datacollection.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 鍏朵粬鍏嶇◣鎵i櫎-鍏嶇◣鏀跺叆琛ㄥ崟 + *

Copyright: Copyright (c) 2024

+ *

Company: 娉涘井杞欢

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_free_income +//鍏朵粬鍏嶇◣鎵i櫎-鍏嶇◣鏀跺叆 +public class FreeIncomeSaveParam { + //涓婚敭id + private Long id; + + //涓昏〃鏁版嵁Id + private Long mainId; + + //绋庢鎵灞炴湡 + private Date taxYearMonth; + + //浜哄憳 + private Long employeeId; + + //涓◣鎵g即涔夊姟浜 + private Long taxAgentId; + + //鍏嶇◣浜嬮」 + private String freeItem; + + //鍏嶇◣鎬ц川 + private String freeProperty; + + //鍏嶇◣閲戦 + private String freeAmount; +} diff --git a/src/com/engine/salary/entity/datacollection/param/GrantDonationSaveParam.java b/src/com/engine/salary/entity/datacollection/param/GrantDonationSaveParam.java new file mode 100644 index 000000000..6b8256e0a --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/GrantDonationSaveParam.java @@ -0,0 +1,59 @@ +package com.engine.salary.entity.datacollection.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 鍏朵粬鍏嶇◣鎵i櫎-鍑嗕簣鎵i櫎鐨勬崘璧犻 + * + * @author chengliming + * @date 2023-06-09 15:03:45 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_grant_donation +//鍏朵粬鍏嶇◣鎵i櫎-鍑嗕簣鎵i櫎鐨勬崘璧犻 +public class GrantDonationSaveParam { + //涓婚敭id + private Long id; + + //涓昏〃鏁版嵁Id + private Long mainId; + + //绋庢鎵灞炴湡 + private Date taxYearMonth; + + //浜哄憳 + private Long employeeId; + + //涓◣鎵g即涔夊姟浜 + private Long taxAgentId; + + //鍙楄禒鍗曚綅鍚嶇О + private String recipientName; + + //鍙楄禒鍗曚綅绾崇◣浜鸿瘑鍒彿 + private String taxCode; + + //鎹愯禒鍑瘉鍙 + private String donationNumber; + + //鎹愯禒鏃ユ湡 + private Date donateDate; + + //鎹愯禒閲戦 + private String donateAmount; + + //鎵i櫎姣斾緥 + private String deductionProportion; + + //瀹為檯鎵i櫎閲戦 + private String actualDeduction; + +} diff --git a/src/com/engine/salary/entity/datacollection/param/HealthInsuranceSaveParam.java b/src/com/engine/salary/entity/datacollection/param/HealthInsuranceSaveParam.java new file mode 100644 index 000000000..6a24c8192 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/HealthInsuranceSaveParam.java @@ -0,0 +1,54 @@ +package com.engine.salary.entity.datacollection.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 鍟嗕笟鍋ュ悍淇濋櫓 + *

Copyright: Copyright (c) 2024

+ *

Company: 娉涘井杞欢

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_health_insurance +//鍏朵粬鍏嶇◣鎵i櫎-鍟嗕笟鍋ュ悍淇濋櫓琛ㄥ崟 +public class HealthInsuranceSaveParam { + //涓婚敭id + private Long id; + + //涓昏〃鏁版嵁Id + private Long mainId; + + //绋庢鎵灞炴湡 + private Date taxYearMonth; + + //浜哄憳 + private Long employeeId; + + //涓◣鎵g即涔夊姟浜 + private Long taxAgentId; + + //绋庝紭璇嗗埆鐮 + private String identificationNumber; + + //淇濆崟鐢熸晥鏃ユ湡 + private Date effectiveDate; + + //骞村害淇濊垂 + private String yearPremium; + + //鏈堝害淇濊垂 + private String monthPremium; + + //鏈湡鎵i櫎閲戦 + private String currentDeduction; +} diff --git a/src/com/engine/salary/entity/datacollection/param/OtherDerateDeductionSaveParam.java b/src/com/engine/salary/entity/datacollection/param/OtherDerateDeductionSaveParam.java new file mode 100644 index 000000000..160a296a2 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/OtherDerateDeductionSaveParam.java @@ -0,0 +1,45 @@ +package com.engine.salary.entity.datacollection.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 鍏朵粬鍏嶇◣鎵i櫎-鍏朵粬 + *

Copyright: Copyright (c) 2024

+ *

Company: 娉涘井杞欢

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_other_derate_deduction +//鍏朵粬鍏嶇◣鎵i櫎-鍏朵粬 +public class OtherDerateDeductionSaveParam { + //涓婚敭id + private Long id; + + //涓昏〃鏁版嵁Id + private Long mainId; + + //绋庢鎵灞炴湡 + private Date taxYearMonth; + + //浜哄憳 + private Long employeeId; + + //涓◣鎵g即涔夊姟浜 + private Long taxAgentId; + + //鍑忓厤绋庨 + private String otherDeduction; + + //澶囨敞 + private String remark; +} diff --git a/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java b/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java index c602d6ede..82d83784c 100644 --- a/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java +++ b/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java @@ -142,5 +142,6 @@ public class OtherDeductionPO { private List grantDonationList; private List healthInsuranceList; private List otherDerateDeductionList; + private List personalPensionList; } \ No newline at end of file diff --git a/src/com/engine/salary/enums/datacollection/PersonalPensionVoucherTypeEnum.java b/src/com/engine/salary/enums/datacollection/PersonalPensionVoucherTypeEnum.java new file mode 100644 index 000000000..7646c3246 --- /dev/null +++ b/src/com/engine/salary/enums/datacollection/PersonalPensionVoucherTypeEnum.java @@ -0,0 +1,52 @@ +package com.engine.salary.enums.datacollection; + +import com.engine.salary.enums.BaseEnum; + +import java.util.Arrays; +import java.util.Optional; + +/** + * 涓汉鍏昏侀噾鍑瘉绫诲埆 + *

Copyright: Copyright (c) 2024

+ *

Company: 娉涘井杞欢

+ * + * @author qiantao + * @version 1.0 + **/ +public enum PersonalPensionVoucherTypeEnum implements BaseEnum { + YEAR(1, "鏈堝害", 173218), + MONTH(2, "骞村害", 157163); + + private int value; + + private String defaultLabel; + + private int labelId; + + PersonalPensionVoucherTypeEnum(int value, String defaultLabel, int labelId) { + this.value = value; + this.defaultLabel = defaultLabel; + this.labelId = labelId; + } + + public Integer getValue() { + return value; + } + + public String getDefaultLabel() { + return defaultLabel; + } + + public Integer getLabelId() { + return labelId; + } + + public static String getDefaultLabelByValue(Integer value) { + Optional optional = Arrays.stream(PersonalPensionVoucherTypeEnum.values()).filter(r -> Integer.valueOf(r.getValue()).equals(value)).findFirst(); + return optional.isPresent() ? optional.get().getDefaultLabel() : ""; + } + + public static PersonalPensionVoucherTypeEnum parseByValue(int value) { + return Arrays.stream(values()).filter(e -> e.getValue() == value).findFirst().orElse(null); + } +} diff --git a/src/com/engine/salary/mapper/datacollection/PersonalPensionMapper.java b/src/com/engine/salary/mapper/datacollection/PersonalPensionMapper.java new file mode 100644 index 000000000..08681c5ce --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/PersonalPensionMapper.java @@ -0,0 +1,73 @@ +package com.engine.salary.mapper.datacollection; + +import com.engine.salary.entity.datacollection.po.PersonalPensionPO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +public interface PersonalPensionMapper { + + /** + * 鏌ヨ鎵鏈夎褰 + * + * @return 杩斿洖闆嗗悎锛屾病鏈夎繑鍥炵┖List + */ + List listAll(); + + /** + * 鏉′欢鏌ヨ + * + * @return 杩斿洖闆嗗悎锛屾病鏈夎繑鍥炵┖List + */ + List listSome(PersonalPensionPO personalPension); + + + /** + * 鏍规嵁涓婚敭鏌ヨ + * + * @param id 涓婚敭 + * @return 杩斿洖璁板綍锛屾病鏈夎繑鍥瀗ull + */ + PersonalPensionPO getById(Long id); + + /** + * 鏂板锛屽拷鐣ull瀛楁 + * + * @param personalPension 鏂板鐨勮褰 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int insertIgnoreNull(PersonalPensionPO personalPension); + + + /** + * 淇敼锛屼慨鏀规墍鏈夊瓧娈 + * + * @param personalPension 淇敼鐨勮褰 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int update(PersonalPensionPO personalPension); + + /** + * 淇敼锛屽拷鐣ull瀛楁 + * + * @param personalPension 淇敼鐨勮褰 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int updateIgnoreNull(PersonalPensionPO personalPension); + + /** + * 鍒犻櫎璁板綍 + * + * @param personalPension 寰呭垹闄ょ殑璁板綍 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int delete(PersonalPensionPO personalPension); + + /** + * 鎵归噺鍒犻櫎璁板綍 + * @param ids 涓婚敭id闆嗗悎 + */ + void deleteByIds(@Param("ids") Collection ids); + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/PersonalPensionMapper.xml b/src/com/engine/salary/mapper/datacollection/PersonalPensionMapper.xml new file mode 100644 index 000000000..675af0871 --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/PersonalPensionMapper.xml @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + t + . + collect_source + , t.create_time + , t.creator + , t.data_source + , t.delete_type + , t.eb_data_id + , t.employee_id + , t.employee_type + , t.file_status + , t.id + , t.main_id + , t.pay_amount + , t.pay_month + , t.tax_agent_id + , t.tax_year_month + , t.tenant_key + , t.update_time + , t.voucher_no + , t.voucher_type + , t.voucher_type_name + + + + + + + + + + + + + + + INSERT INTO hrsa_personal_pension + + + + collect_source, + + + create_time, + + + creator, + + + data_source, + + + delete_type, + + + eb_data_id, + + + employee_id, + + + employee_type, + + + file_status, + + + id, + + + main_id, + + + pay_amount, + + + pay_month, + + + tax_agent_id, + + + tax_year_month, + + + tenant_key, + + + update_time, + + + voucher_no, + + + voucher_type, + + + voucher_type_name, + + + + + #{collectSource}, + + + #{createTime}, + + + #{creator}, + + + #{dataSource}, + + + #{deleteType}, + + + #{ebDataId}, + + + #{employeeId}, + + + #{employeeType}, + + + #{fileStatus}, + + + #{id}, + + + #{mainId}, + + + #{payAmount}, + + + #{payMonth}, + + + #{taxAgentId}, + + + #{taxYearMonth}, + + + #{tenantKey}, + + + #{updateTime}, + + + #{voucherNo}, + + + #{voucherType}, + + + #{voucherTypeName}, + + + + + + + + UPDATE hrsa_personal_pension + + collect_source=#{collectSource}, + create_time=#{createTime}, + creator=#{creator}, + data_source=#{dataSource}, + delete_type=#{deleteType}, + eb_data_id=#{ebDataId}, + employee_id=#{employeeId}, + employee_type=#{employeeType}, + file_status=#{fileStatus}, + main_id=#{mainId}, + pay_amount=#{payAmount}, + pay_month=#{payMonth}, + tax_agent_id=#{taxAgentId}, + tax_year_month=#{taxYearMonth}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + voucher_no=#{voucherNo}, + voucher_type=#{voucherType}, + voucher_type_name=#{voucherTypeName}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_personal_pension + + + collect_source=#{collectSource}, + + + create_time=#{createTime}, + + + creator=#{creator}, + + + data_source=#{dataSource}, + + + delete_type=#{deleteType}, + + + eb_data_id=#{ebDataId}, + + + employee_id=#{employeeId}, + + + employee_type=#{employeeType}, + + + file_status=#{fileStatus}, + + + main_id=#{mainId}, + + + pay_amount=#{payAmount}, + + + pay_month=#{payMonth}, + + + tax_agent_id=#{taxAgentId}, + + + tax_year_month=#{taxYearMonth}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + voucher_no=#{voucherNo}, + + + voucher_type=#{voucherType}, + + + voucher_type_name=#{voucherTypeName}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_personal_pension + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + UPDATE hrsa_personal_pension + SET delete_type = 1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/service/OtherDeductionService.java b/src/com/engine/salary/service/OtherDeductionService.java index 854286a0f..f2f8b2efa 100644 --- a/src/com/engine/salary/service/OtherDeductionService.java +++ b/src/com/engine/salary/service/OtherDeductionService.java @@ -47,15 +47,13 @@ public interface OtherDeductionService { /** * 瀵煎嚭 - * */ XSSFWorkbook export(OtherDeductionQueryParam queryParam); /** * 瀵煎嚭璇︽儏 - * */ - XSSFWorkbook exportDetail( OtherDeductionQueryParam queryParam); + XSSFWorkbook exportDetail(OtherDeductionQueryParam queryParam); /** * 涓嬭浇瀵煎叆妯℃澘 @@ -67,6 +65,7 @@ public interface OtherDeductionService { /** * 涓嬭浇鏄庣粏妯℃澘 + * * @param param * @return */ @@ -84,6 +83,7 @@ public interface OtherDeductionService { /** * 瀵煎叆鏄庣粏鏁版嵁 + * * @param importParam * @return */ @@ -124,4 +124,17 @@ public interface OtherDeductionService { OtherDeductionRecordDTO getOtherDeduction(OtherDeductionParam otherDeductionParam); String extendToLastMonth(OtherDeductionExtendLastParam param); + + /** + * 淇濆瓨鍏嶇◣鏀跺叆 + * @param param + */ + void saveFreeIncome(FreeIncomeSaveParam param); +// void saveEndowmentInsurance(EndowmentInsuranceSaveParam param); +// void saveGrantDonation(GrantDonationSaveParam param); +// void saveHealthInsurance(HealthInsuranceSaveParam param); +// void saveOtherDerateDeduction(OtherDerateDeductionSaveParam param); +// void saveDerateDeduction(DerateDeductionSaveParam param); + + } diff --git a/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java b/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java index 5bdb007c8..c8d98a3f8 100644 --- a/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java +++ b/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java @@ -21,6 +21,7 @@ import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.OperateTypeEnum; import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; +import com.engine.salary.enums.sicategory.DeleteTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.datacollection.*; import com.engine.salary.mapper.sys.SalarySysConfMapper; @@ -1344,6 +1345,154 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction IOUtils.closeQuietly(fileInputStream); } + + try { + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId)); + + int successCount = 0; + int errorCount = 0; + + // 閿欒excel鍐呭 + List errorData = new ArrayList<>(); + + List dtoList = ExcelParseHelper.parse2Map(fileInputStream, PersonalPensionListDTO.class, 6, 1, 9, "OtherDeductionTemplate.xlsx"); + for (int i = 0; i < dtoList.size(); i++) { + PersonalPensionListDTO dto = dtoList.get(i); + + Date now = new Date(); + //寰呮彃鍏ユ暟鎹簱瀵硅薄 + OtherDeductionPO mainPo = OtherDeductionPO.builder() + .declareMonth(declareMonth) + .freeIncomeList(new ArrayList<>()) + .derateDeductionList(new ArrayList<>()) + .endowmentInsuranceList(new ArrayList<>()) + .grantDonationList(new ArrayList<>()) + .healthInsuranceList(new ArrayList<>()) + .otherDerateDeductionList(new ArrayList<>()) + .createTime(now) + .updateTime(now) + .creator((long) user.getUID()) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + + PersonalPensionPO po = PersonalPensionPO.builder() + .taxYearMonth(declareMonth) + .fileStatus(1) + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + + //寮傚父鐐规暟閲 + int errorSum = 0; + + //琛屽彿 + String rowIndex = String.format("绗%s琛", i + 2); + + //鐩稿悓鐨勫鍚 + String userName = dto.getUsername(); + String deparmentName = dto.getDepartmentName(); + String mobile = dto.getMobile(); + String workcode = dto.getJobNum(); + String idNo = dto.getIdNo(); + List employeeSameIds = new ArrayList<>(); + + //绛涢夊鍏ヤ汉鍛樹俊鎭彲浠ュ湪浜哄姏璧勬簮姹犱腑鍖归厤鍒扮殑浜哄憳淇℃伅 + List emps = getSalaryEmployeeService(user).matchImportEmployee(confValue, employees, userName, deparmentName, mobile, workcode, idNo, null); + //鍚湪鑱屽拰绂昏亴锛岄夊湪鑱屾暟鎹 + if (CollectionUtils.isNotEmpty(emps) && emps.size() > 1) { + employeeSameIds = emps.stream() + .filter(e -> UserStatusEnum.getNormalStatus().contains(e.getStatus())) + .map(DataCollectionEmployee::getEmployeeId) + .collect(Collectors.toList()); + } + if (CollectionUtils.isNotEmpty(emps) && emps.size() == 1) { + employeeSameIds = emps.stream() + .map(DataCollectionEmployee::getEmployeeId) + .collect(Collectors.toList()); + } + + //褰撲汉鍛樹俊鎭鍏ョ瓫閫夌殑鍏ㄥ眬閰嶇疆涓"0"鏃讹紝濮撳悕鎵嶆槸蹇呭~椤 + if (StringUtils.isBlank(userName) && "0".equals(confValue)) { + //濮撳悕 涓嶈兘涓虹┖ + //閿欒娑堟伅瀵硅薄 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "濮撳悕涓嶈兘涓虹┖"); + errorData.add(errorMessageMap); + errorSum += 1; + } else if (CollectionUtils.isEmpty(employeeSameIds) || employeeSameIds.size() > 1) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "鍛樺伐淇℃伅涓嶅瓨鍦ㄦ垨鑰呭瓨鍦ㄥ涓憳宸"); + errorData.add(errorMessageMap); + errorSum += 1; + } else { + Long employeeId = CollectionUtils.isNotEmpty(employeeSameIds) && employeeSameIds.size() == 1 ? employeeSameIds.get(0) : null; + if (employeeId != null && employeeId > 0) { + mainPo.setEmployeeId(employeeId); + po.setEmployeeId(employeeId); + po.setEmployeeType(DataCollectionEmployeeTypeEnum.ORGANIZATION.getValue()); + } else { + //濮撳悕閿欒锛岀郴缁熷唴涓嶅瓨鍦ㄨ濮撳悕 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "濮撳悕閿欒锛岀郴缁熷唴涓嶅瓨鍦ㄨ濮撳悕"); + errorData.add(errorMessageMap); + errorSum += 1; + } + } + + + String taxAgentName = dto.getTaxAgentName(); + if (StringUtils.isBlank(taxAgentName)) { + //涓◣鎵g即涔夊姟浜轰笉鑳戒负绌 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "涓◣鎵g即涔夊姟浜轰笉鑳戒负绌"); + errorData.add(errorMessageMap); + errorSum += 1; + } else { + Optional optionalTemp = taxAgentList.stream().filter(m -> m.getTaxAgentName().equals(taxAgentName)).findFirst(); + if (optionalTemp.isPresent()) { + mainPo.setTaxAgentId(optionalTemp.get().getTaxAgentId()); + po.setTaxAgentId(optionalTemp.get().getTaxAgentId()); + } else { + //涓◣鎵g即涔夊姟浜轰笉瀛樺湪 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "涓◣鎵g即涔夊姟浜轰笉瀛樺湪鎴栦笉鍦ㄦ潈闄愯寖鍥村唴"); + errorData.add(errorMessageMap); + errorSum += 1; + } + } + + po.setVoucherTypeName(dto.getVoucherTypeName()); + po.setVoucherNo(dto.getVoucherNo()); + po.setPayAmount(dto.getPayAmount()); + + + if (errorSum == 0) { + successCount += 1; + String key = mainPo.getTaxAgentId() + "-" + mainPo.getEmployeeId(); + Map deductionPOMap = SalaryEntityUtil.convert2Map(eligibleData, e -> e.getTaxAgentId() + "-" + e.getEmployeeId()); + if (deductionPOMap.containsKey(key)) { + deductionPOMap.get(key).getPersonalPensionList().add(po); + } else { + mainPo.getPersonalPensionList().add(po); + eligibleData.add(mainPo); + } + } else { + errorCount += 1; + } + } + + HashMap dataMap = new HashMap<>(); + dataMap.put("successCount", successCount); + dataMap.put("errorCount", errorCount); + dataMap.put("errorData", errorData); + apidatas.put("derateDeduction", dataMap); + + } finally { + IOUtils.closeQuietly(fileInputStream); + } + return apidatas; } @@ -2020,11 +2169,53 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction map.put("鍑忓厤绋庨", Arrays.asList(derateDeductionTitle)); List otherDerateDeductionTitle = Arrays.asList("濮撳悕", "涓◣鎵g即涔夊姟浜", "閮ㄩ棬", "鎵嬫満鍙", "宸ュ彿", "璇佷欢鍙风爜", "鍏朵粬鍏嶇◣鎵i櫎閲戦", "澶囨敞"); map.put("鍏朵粬", Arrays.asList(otherDerateDeductionTitle)); -// map.put("涓汉鍏昏侀噾", rowList); + List personalPensionTitle = Arrays.asList("濮撳悕", "涓◣鎵g即涔夊姟浜", "閮ㄩ棬", "鎵嬫満鍙", "宸ュ彿", "璇佷欢鍙风爜", "鍑瘉绫诲瀷", "鍑瘉缂栫爜", "缂磋垂閲戦"); + map.put("涓汉鍏昏侀噾", Arrays.asList(personalPensionTitle)); XSSFWorkbook book = ExcelUtil.genWorkbookV2(map); return book; } + + @Override + public void saveFreeIncome(FreeIncomeSaveParam param) { + Date now = new Date(); + + Long id = param.getId(); + if (id == null) { + FreeIncomePO po = FreeIncomePO.builder() + .id(id) + .mainId(param.getMainId()) + .taxYearMonth(param.getTaxYearMonth()) + .employeeId(param.getEmployeeId()) + .taxAgentId(param.getTaxAgentId()) + .freeItem(param.getFreeItem()) + .freeProperty(param.getFreeProperty()) + .freeAmount(param.getFreeAmount()) + .fileStatus(1) + .employeeType(0) + .createTime(now) + .updateTime(now) + .creator((long) user.getUID()) + .deleteType(DeleteTypeEnum.NOT_DELETED.getValue()) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + getFreeIncomeMapper().insertIgnoreNull(po); + } else { + FreeIncomePO po = getFreeIncomeMapper().getById(id); + + po.setTaxYearMonth(param.getTaxYearMonth()); + po.setEmployeeId(param.getEmployeeId()); + po.setTaxAgentId(param.getTaxAgentId()); + po.setFreeItem(param.getFreeItem()); + po.setFreeProperty(param.getFreeProperty()); + po.setFreeAmount(param.getFreeAmount()); + po.setEmployeeType(0); + po.setUpdateTime(now); + + getFreeIncomeMapper().updateIgnoreNull(po); + } + } + }