From 5b2609d93fa435ad4a2d0838771d6b3db866b11c Mon Sep 17 00:00:00 2001 From: sy Date: Wed, 25 Oct 2023 09:49:16 +0800 Subject: [PATCH 01/24] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E5=9F=BA=E6=95=B0=E8=B0=83=E6=95=B4=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E8=A1=A8=E6=96=B0=E5=BB=BAsql=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202310250103.sql | 39 +++++++++++++++++++ resource/sqlupgrade/GS/sql202310250103.sql | 39 +++++++++++++++++++ resource/sqlupgrade/JC/sql202310250103.sql | 39 +++++++++++++++++++ resource/sqlupgrade/Mysql/sql202310250103.sql | 37 ++++++++++++++++++ .../sqlupgrade/Oracle/sql202310250103.sql | 38 ++++++++++++++++++ resource/sqlupgrade/PG/sql202310250103.sql | 37 ++++++++++++++++++ .../sqlupgrade/SQLServer/sql202310250103.sql | 39 +++++++++++++++++++ resource/sqlupgrade/ST/sql202310250103.sql | 39 +++++++++++++++++++ 8 files changed, 307 insertions(+) create mode 100644 resource/sqlupgrade/DM/sql202310250103.sql create mode 100644 resource/sqlupgrade/GS/sql202310250103.sql create mode 100644 resource/sqlupgrade/JC/sql202310250103.sql create mode 100644 resource/sqlupgrade/Mysql/sql202310250103.sql create mode 100644 resource/sqlupgrade/Oracle/sql202310250103.sql create mode 100644 resource/sqlupgrade/PG/sql202310250103.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202310250103.sql create mode 100644 resource/sqlupgrade/ST/sql202310250103.sql diff --git a/resource/sqlupgrade/DM/sql202310250103.sql b/resource/sqlupgrade/DM/sql202310250103.sql new file mode 100644 index 000000000..52712fc7f --- /dev/null +++ b/resource/sqlupgrade/DM/sql202310250103.sql @@ -0,0 +1,39 @@ +CREATE TABLE hrsa_insurance_base_history ( + +id NUMBER(20,0) NOT NULL, + +employee_id NUMBER(20,0) NOT NULL, + +payment_organization NUMBER(11,0) NOT NULL, + +welfare_type NUMBER(11,0) NOT NULL, + +adjust_before_scheme_id NUMBER(11,0) NULL, + +adjust_after_scheme_id NUMBER(11,0) NULL, + +adjust_before_base_value VARCHAR2(255) NULL, + +adjust_after_base_value VARCHAR2(255) NULL, + +adjust_welfare_item_id NUMBER(20,0) NOT NULL, + +operator NUMBER(20,0) NOT NULL, + +operate_time DATE NULL, + +create_time DATE NOT NULL, + +update_time DATE NOT NULL, + +creator NUMBER(20,0) NOT NULL, + +delete_type NUMBER(11,0) NOT NULL, + +tenant_key VARCHAR2(10) NULL, + +PRIMARY KEY (id) + +); +/ + diff --git a/resource/sqlupgrade/GS/sql202310250103.sql b/resource/sqlupgrade/GS/sql202310250103.sql new file mode 100644 index 000000000..52712fc7f --- /dev/null +++ b/resource/sqlupgrade/GS/sql202310250103.sql @@ -0,0 +1,39 @@ +CREATE TABLE hrsa_insurance_base_history ( + +id NUMBER(20,0) NOT NULL, + +employee_id NUMBER(20,0) NOT NULL, + +payment_organization NUMBER(11,0) NOT NULL, + +welfare_type NUMBER(11,0) NOT NULL, + +adjust_before_scheme_id NUMBER(11,0) NULL, + +adjust_after_scheme_id NUMBER(11,0) NULL, + +adjust_before_base_value VARCHAR2(255) NULL, + +adjust_after_base_value VARCHAR2(255) NULL, + +adjust_welfare_item_id NUMBER(20,0) NOT NULL, + +operator NUMBER(20,0) NOT NULL, + +operate_time DATE NULL, + +create_time DATE NOT NULL, + +update_time DATE NOT NULL, + +creator NUMBER(20,0) NOT NULL, + +delete_type NUMBER(11,0) NOT NULL, + +tenant_key VARCHAR2(10) NULL, + +PRIMARY KEY (id) + +); +/ + diff --git a/resource/sqlupgrade/JC/sql202310250103.sql b/resource/sqlupgrade/JC/sql202310250103.sql new file mode 100644 index 000000000..52712fc7f --- /dev/null +++ b/resource/sqlupgrade/JC/sql202310250103.sql @@ -0,0 +1,39 @@ +CREATE TABLE hrsa_insurance_base_history ( + +id NUMBER(20,0) NOT NULL, + +employee_id NUMBER(20,0) NOT NULL, + +payment_organization NUMBER(11,0) NOT NULL, + +welfare_type NUMBER(11,0) NOT NULL, + +adjust_before_scheme_id NUMBER(11,0) NULL, + +adjust_after_scheme_id NUMBER(11,0) NULL, + +adjust_before_base_value VARCHAR2(255) NULL, + +adjust_after_base_value VARCHAR2(255) NULL, + +adjust_welfare_item_id NUMBER(20,0) NOT NULL, + +operator NUMBER(20,0) NOT NULL, + +operate_time DATE NULL, + +create_time DATE NOT NULL, + +update_time DATE NOT NULL, + +creator NUMBER(20,0) NOT NULL, + +delete_type NUMBER(11,0) NOT NULL, + +tenant_key VARCHAR2(10) NULL, + +PRIMARY KEY (id) + +); +/ + diff --git a/resource/sqlupgrade/Mysql/sql202310250103.sql b/resource/sqlupgrade/Mysql/sql202310250103.sql new file mode 100644 index 000000000..7c8046632 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202310250103.sql @@ -0,0 +1,37 @@ +CREATE TABLE hrsa_insurance_base_history ( + +id bigint NOT NULL, + +employee_id bigint NOT NULL, + +payment_organization int NOT NULL, + +welfare_type int NOT NULL, + +adjust_before_scheme_id int NULL, + +adjust_after_scheme_id int NULL, + +adjust_before_base_value varchar(255) NULL, + +adjust_after_base_value varchar(255) NULL, + +adjust_welfare_item_id bigint NOT NULL, + +operator bigint NOT NULL, + +operate_time datetime NULL, + +create_time datetime NOT NULL, + +update_time datetime NOT NULL, + +creator bigint NOT NULL, + +delete_type int NOT NULL, + +tenant_key varchar(10) NULL, + +PRIMARY KEY (id) + +); diff --git a/resource/sqlupgrade/Oracle/sql202310250103.sql b/resource/sqlupgrade/Oracle/sql202310250103.sql new file mode 100644 index 000000000..628f38757 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202310250103.sql @@ -0,0 +1,38 @@ +CREATE TABLE hrsa_insurance_base_history ( + +id NUMBER(20,0) NOT NULL, + +employee_id NUMBER(20,0) NOT NULL, + +payment_organization NUMBER(11,0) NOT NULL, + +welfare_type NUMBER(11,0) NOT NULL, + +adjust_before_scheme_id NUMBER(11,0) NULL, + +adjust_after_scheme_id NUMBER(11,0) NULL, + +adjust_before_base_value VARCHAR2(255) NULL, + +adjust_after_base_value VARCHAR2(255) NULL, + +adjust_welfare_item_id NUMBER(20,0) NOT NULL, + +operator NUMBER(20,0) NOT NULL, + +operate_time DATE NULL, + +create_time DATE NOT NULL, + +update_time DATE NOT NULL, + +creator NUMBER(20,0) NOT NULL, + +delete_type NUMBER(11,0) NOT NULL, + +tenant_key VARCHAR2(10) NULL, + +PRIMARY KEY (id) + +) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202310250103.sql b/resource/sqlupgrade/PG/sql202310250103.sql new file mode 100644 index 000000000..d2d961a08 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202310250103.sql @@ -0,0 +1,37 @@ +CREATE TABLE hrsa_insurance_base_history ( + +id bigint NOT NULL, + +employee_id bigint NOT NULL, + +payment_organization int NOT NULL, + +welfare_type int NOT NULL, + +adjust_before_scheme_id int, + +adjust_after_scheme_id int, + +adjust_before_base_value varchar(255), + +adjust_after_base_value varchar(255), + +adjust_welfare_item_id bigint NOT NULL, + +operator bigint NOT NULL, + +operate_time timestamp(0), + +create_time timestamp(0) NOT NULL, + +update_time timestamp(0) NOT NULL, + +creator bigint NOT NULL, + +delete_type int NOT NULL, + +tenant_key varchar(10), + +PRIMARY KEY (id) + +); \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202310250103.sql b/resource/sqlupgrade/SQLServer/sql202310250103.sql new file mode 100644 index 000000000..ddc7b2773 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202310250103.sql @@ -0,0 +1,39 @@ +CREATE TABLE [hrsa_insurance_base_history] ( + +[id] bigint NOT NULL, + +[employee_id] bigint NOT NULL, + +[payment_organization] int NOT NULL, + +[welfare_type] int NOT NULL, + +[adjust_before_scheme_id] int NULL, + +[adjust_after_scheme_id] int NULL, + +[adjust_before_base_value] varchar(255) COLLATE Chinese_PRC_CI_AS NULL, + +[adjust_after_base_value] varchar(255) COLLATE Chinese_PRC_CI_AS NULL, + +[adjust_welfare_item_id] bigint NOT NULL, + +[operator] bigint NOT NULL, + +[operate_time] datetime NULL, + +[create_time] datetime NOT NULL, + +[update_time] datetime NOT NULL, + +[creator] bigint NOT NULL, + +[delete_type] int NOT NULL, + +[tenant_key] varchar(10) COLLATE Chinese_PRC_CI_AS NULL, + +PRIMARY KEY ([id]) + +) + +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202310250103.sql b/resource/sqlupgrade/ST/sql202310250103.sql new file mode 100644 index 000000000..52712fc7f --- /dev/null +++ b/resource/sqlupgrade/ST/sql202310250103.sql @@ -0,0 +1,39 @@ +CREATE TABLE hrsa_insurance_base_history ( + +id NUMBER(20,0) NOT NULL, + +employee_id NUMBER(20,0) NOT NULL, + +payment_organization NUMBER(11,0) NOT NULL, + +welfare_type NUMBER(11,0) NOT NULL, + +adjust_before_scheme_id NUMBER(11,0) NULL, + +adjust_after_scheme_id NUMBER(11,0) NULL, + +adjust_before_base_value VARCHAR2(255) NULL, + +adjust_after_base_value VARCHAR2(255) NULL, + +adjust_welfare_item_id NUMBER(20,0) NOT NULL, + +operator NUMBER(20,0) NOT NULL, + +operate_time DATE NULL, + +create_time DATE NOT NULL, + +update_time DATE NOT NULL, + +creator NUMBER(20,0) NOT NULL, + +delete_type NUMBER(11,0) NOT NULL, + +tenant_key VARCHAR2(10) NULL, + +PRIMARY KEY (id) + +); +/ + From dba2f48785482e2bf5ea00cf9cfee9d3b45e23f0 Mon Sep 17 00:00:00 2001 From: sy Date: Wed, 25 Oct 2023 11:18:10 +0800 Subject: [PATCH 02/24] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E5=9F=BA=E6=95=B0=E8=B0=83=E6=95=B4=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E7=94=9F=E6=88=90=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= =?UTF-8?q?=EF=BC=8C=E8=BF=87=E6=BB=A4=E7=A9=BA=E5=80=BC=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 57 +++++++++++--------- 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index 7f91e79d1..05d985742 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -1967,7 +1967,7 @@ public class SIArchivesBiz { Date now = new Date(); List toCreateAdjustHistoryList = new ArrayList<>(); //旧档案不存在基数信息,则直接遍历新的基数数据,生成调整记录;旧档案存在基数信息,则合并新旧基数数据,遍历合并后的技术数据中的key,生成调整记录。 - if(adjustInfo.getAdjustAfterBaseJson() != null && adjustInfo.getAdjustBeforeBaseJson() == null) { + if(StringUtils.isNotBlank(adjustInfo.getAdjustAfterBaseJson()) && StringUtils.isBlank(adjustInfo.getAdjustBeforeBaseJson())) { Map adjustAfterBaseMap = JSON.parseObject(adjustInfo.getAdjustAfterBaseJson(), new TypeReference>() { }); for (String key : adjustAfterBaseMap.keySet()) { @@ -1985,36 +1985,43 @@ public class SIArchivesBiz { adjustItem.setId(IdGenerator.generate()); toCreateAdjustHistoryList.add(adjustItem); } - } else if (adjustInfo.getAdjustAfterBaseJson() != null && adjustInfo.getAdjustBeforeBaseJson() != null) { + } else if (StringUtils.isNotBlank(adjustInfo.getAdjustAfterBaseJson()) && StringUtils.isNotBlank(adjustInfo.getAdjustBeforeBaseJson())) { Map adjustAfterBaseMap = JSON.parseObject(adjustInfo.getAdjustAfterBaseJson(), new TypeReference>() { }); Map adjustBeforeBaseMap = JSON.parseObject(adjustInfo.getAdjustBeforeBaseJson(), new TypeReference>() { }); Map reDealMap = new HashMap<>(); - reDealMap.putAll(adjustAfterBaseMap); - reDealMap.putAll(adjustBeforeBaseMap); - for (String key : reDealMap.keySet()) { - String beforeValue = (String) adjustBeforeBaseMap.get(key); - String afterValue = (String) adjustAfterBaseMap.get(key); - if (SalaryEntityUtil.empty2Zero(beforeValue).compareTo(SalaryEntityUtil.empty2Zero(afterValue)) == 0) { - continue; - } - InsuranceArchivesBaseHistoryPO adjustItem = new InsuranceArchivesBaseHistoryPO(); - BeanUtils.copyProperties(adjustInfo, adjustItem); - adjustItem.setAdjustWelfareItemId(Long.valueOf(key)); - adjustItem.setAdjustBeforeBaseValue(beforeValue); - adjustItem.setAdjustAfterBaseValue(afterValue); - adjustItem.setOperateTime(now); - adjustItem.setOperator(creator); - adjustItem.setCreator(creator); - adjustItem.setCreateTime(now); - adjustItem.setUpdateTime(now); - adjustItem.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()); - adjustItem.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY); - adjustItem.setId(IdGenerator.generate()); - - toCreateAdjustHistoryList.add(adjustItem); + if (adjustAfterBaseMap != null) { + reDealMap.putAll(adjustAfterBaseMap); } + if (adjustBeforeBaseMap != null) { + reDealMap.putAll(adjustBeforeBaseMap); + } + if (reDealMap.size() >0) { + for (String key : reDealMap.keySet()) { + String beforeValue = (String) adjustBeforeBaseMap.get(key); + String afterValue = (String) adjustAfterBaseMap.get(key); + if (SalaryEntityUtil.empty2Zero(beforeValue).compareTo(SalaryEntityUtil.empty2Zero(afterValue)) == 0) { + continue; + } + InsuranceArchivesBaseHistoryPO adjustItem = new InsuranceArchivesBaseHistoryPO(); + BeanUtils.copyProperties(adjustInfo, adjustItem); + adjustItem.setAdjustWelfareItemId(Long.valueOf(key)); + adjustItem.setAdjustBeforeBaseValue(beforeValue); + adjustItem.setAdjustAfterBaseValue(afterValue); + adjustItem.setOperateTime(now); + adjustItem.setOperator(creator); + adjustItem.setCreator(creator); + adjustItem.setCreateTime(now); + adjustItem.setUpdateTime(now); + adjustItem.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()); + adjustItem.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY); + adjustItem.setId(IdGenerator.generate()); + + toCreateAdjustHistoryList.add(adjustItem); + } + } + } return toCreateAdjustHistoryList; } From 267cced46b46263224837464c0b5a1310cc05e3b Mon Sep 17 00:00:00 2001 From: sy Date: Wed, 25 Oct 2023 19:14:02 +0800 Subject: [PATCH 03/24] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E5=9F=BA=E6=95=B0=E8=B0=83=E6=95=B4=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E5=88=97=E8=A1=A8=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?= =?UTF-8?q?=EF=BC=8C=E5=8F=AF=E5=B1=95=E7=A4=BA=E9=9D=9E=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E4=BA=BA=E5=91=98=E5=A7=93=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 9 +++-- .../InsuranceBaseAdjustHistoryMapper.java | 1 + .../InsuranceBaseAdjustHistoryMapper.xml | 36 +++++++++++++++++++ 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index 05d985742..dcb8a15c8 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -2075,8 +2075,13 @@ public class SIArchivesBiz { SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); try { InsuranceBaseAdjustHistoryMapper mapper = sqlSession.getMapper(InsuranceBaseAdjustHistoryMapper.class); - List list = mapper.listByEmployeeIdAndOperator(operator, employeeId); - return list; + List empList = mapper.listByEmployeeIdAndOperator(operator, employeeId); + List extEmpList = mapper.listByExtEmpIdAndOperator(operator, employeeId); + if (extEmpList != null) { + empList.addAll(extEmpList); + empList = empList.stream().filter(f -> StringUtils.isNotBlank(f.getEmployeeName())).collect(Collectors.toList()); + } + return empList; } finally { sqlSession.close(); } diff --git a/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.java b/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.java index 746831ccb..39ab84890 100644 --- a/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.java +++ b/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.java @@ -26,4 +26,5 @@ public interface InsuranceBaseAdjustHistoryMapper { * 根据操作人或操作对象获取基数调整记录 */ List listByEmployeeIdAndOperator(@Param("operator")Long operator, @Param("employeeId")Long employeeId); + List listByExtEmpIdAndOperator(@Param("operator")Long operator, @Param("employeeId")Long employeeId); } diff --git a/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml b/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml index c910cc17d..da02c83b5 100644 --- a/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml @@ -196,4 +196,40 @@ ORDER BY t.operate_time DESC, t.adjust_welfare_item_id ASC + + \ No newline at end of file From da04a951d2217745a70230d746e35d97c12f36ae Mon Sep 17 00:00:00 2001 From: sy Date: Thu, 26 Oct 2023 10:00:14 +0800 Subject: [PATCH 04/24] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E5=9F=BA=E6=95=B0=E8=B0=83=E6=95=B4=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E5=88=97=E8=A1=A8=E6=8E=92=E5=BA=8F=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index dcb8a15c8..d3d7e2ddc 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -2079,7 +2079,8 @@ public class SIArchivesBiz { List extEmpList = mapper.listByExtEmpIdAndOperator(operator, employeeId); if (extEmpList != null) { empList.addAll(extEmpList); - empList = empList.stream().filter(f -> StringUtils.isNotBlank(f.getEmployeeName())).collect(Collectors.toList()); + empList = empList.stream().filter(f -> StringUtils.isNotBlank(f.getEmployeeName())) + .sorted(Comparator.comparing(InsuranceArchivesBaseHistoryDTO::getOperateTime).reversed()).collect(Collectors.toList()); } return empList; } finally { From 8eefec2e5784ff83defec77c192a357eb00c2227 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 13 Nov 2023 11:15:49 +0800 Subject: [PATCH 05/24] =?UTF-8?q?=E8=B7=B3=E8=BF=87=E8=80=83=E5=8B=A4?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=81=87=E6=9C=9F=E4=BD=99=E9=A2=9D=E6=9D=83?= =?UTF-8?q?=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../remote/attend/cmd/GetSearchListCmd.java | 371 ++++++++++++++++++ .../impl/RemoteAttend4SalaryServiceImpl.java | 15 +- .../impl/AttendQuoteDataServiceImpl.java | 7 +- 3 files changed, 383 insertions(+), 10 deletions(-) create mode 100644 src/com/engine/salary/remote/attend/cmd/GetSearchListCmd.java diff --git a/src/com/engine/salary/remote/attend/cmd/GetSearchListCmd.java b/src/com/engine/salary/remote/attend/cmd/GetSearchListCmd.java new file mode 100644 index 000000000..c96fc1944 --- /dev/null +++ b/src/com/engine/salary/remote/attend/cmd/GetSearchListCmd.java @@ -0,0 +1,371 @@ +package com.engine.salary.remote.attend.cmd; + +import com.api.hrm.bean.HrmFieldBean; +import com.api.hrm.util.HrmFieldUtil; +import com.engine.common.biz.AbstractCommonCommand; +import com.engine.common.entity.BizLogContext; +import com.engine.core.interceptor.CommandContext; +import com.engine.kq.biz.KQBalanceOfLeaveBiz; +import com.engine.kq.biz.KQLeaveRulesBiz; +import com.engine.kq.biz.KQLeaveRulesComInfo; +import com.engine.kq.biz.KQReportBiz; +import com.engine.kq.util.KQTransMethod; +import weaver.common.DateUtil; +import weaver.conn.RecordSet; +import weaver.general.TimeUtil; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.hrm.company.DepartmentComInfo; +import weaver.hrm.company.SubCompanyComInfo; +import weaver.hrm.job.JobTitlesComInfo; +import weaver.systeminfo.SystemEnv; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 员工假期余额报表--获取查询列表 + */ +public class GetSearchListCmd extends AbstractCommonCommand> { + + public GetSearchListCmd(Map params, User user) { + this.user = user; + this.params = params; + } + + @Override + public BizLogContext getLogContext() { + return null; + } + + @Override + public Map execute(CommandContext commandContext) { + Map resultMap = new HashMap(); + /** + * 分页控件返回的值 + * currentPage:当前页数 + * pageSize:每页多少条数据 + */ + int currentPage = Util.getIntValue((String) params.get("currentPage"), 1); + int pageSize = Util.getIntValue((String) params.get("pageSize"), 10); + /** + * 时间范围选择的年份 + * dateScope:5-本年、8-上一年 + * selectedYear:指定年份 + */ + String dateScope = Util.null2String(params.get("dateScope")); + String selectedYear = Util.null2String(params.get("selectedYear")); + if (dateScope.equals("5") || dateScope.equals("8")) { + selectedYear = TimeUtil.getDateByOption(dateScope, "0").substring(0, 4); + } + /** + * 数据范围 + * dataScope:0-总部、1-分部、2-分部、3-人员、4-我的下属 + * subcomId:指定分部ID + * deptId:指定部门ID + * resourceId:指定人员ID + * allLevel:是否包含下级下属:0-不包含、1-包含 + */ + String dataScope = Util.null2String(params.get("dataScope")); + String subcomId = Util.null2String(params.get("subcomId")); + String deptId = Util.null2String(params.get("deptId")); + String resourceId = Util.null2String(params.get("resourceId")); + String allLevel = Util.null2String(params.get("allLevel")); + /** + * isNoAccount:是否显示无账号人员:true-显示、false-不显示 + */ + String isNoAccount = Util.null2String(params.get("isNoAccount")); + + try { + /** + * 获取考勤报表权限共享设置 + */ + KQReportBiz kqReportBiz = new KQReportBiz(); +// String rightStr = kqReportBiz.getReportRight("4", "" + user.getUID(), "a"); + String rightStr =""; + + /** + * 拼凑查询结果列表的表头 + */ + List> columnsList = new ArrayList>(); + List hrmFieldBeanList = new ArrayList(); + HrmFieldBean hrmFieldBean = null; + String[] tempArr = new String[]{"lastName,413", "subcom,141", "dept,124", "jobtitle,6086","workcode,714", "companyStartDate,1516"}; + for (int i = 0; i < tempArr.length; i++) { + String[] fieldInfo = tempArr[i].split(","); + hrmFieldBean = new HrmFieldBean(); + hrmFieldBean.setFieldname(fieldInfo[0]); + hrmFieldBean.setFieldlabel(fieldInfo[1]); + hrmFieldBean.setFieldhtmltype("1"); + hrmFieldBean.setType("1"); + hrmFieldBean.setViewAttr(1); + hrmFieldBean.setIsFormField(true); + hrmFieldBeanList.add(hrmFieldBean); + } + + /**********************************************************************************************************/ + + /**获取假期类型的相关设置*/ + + /*请假类型的ID*/ + String leaveRulesId = ""; + + /*假期类型的名称,用作查询结果列表的表头显示*/ + String leaveName = ""; + + /*最小请假单位:1-按天请假、2-按半天请假、3-按小时请假、4-按整天请假*/ + int minimumUnit = 1; + + /*请假单位的显示名称是天还是小时*/ + String unitName = ""; + + /*是否开启假期余额,没有开启假期余额时需要提示“不限制余额*/ + int balanceEnable = 0; + + /**********************************************************************************************************/ + + /*是否是混合模式(福利年假+法定年假)*/ + boolean isMixMode = false; + + //是否是调休 + boolean isTiaoXiu = false; + + /**********************************************************************************************************/ + + /*获取当前日期*/ + String currentDate = DateUtil.getCurrentDate(); + + Map balanceMap = new HashMap(); + KQLeaveRulesComInfo rulesComInfo = new KQLeaveRulesComInfo(); + rulesComInfo.setTofirstRow(); + while (rulesComInfo.next()) { + if (rulesComInfo.getIsEnable().equals("0")) { + continue;//此假期类型没有启用 + } + + /*获取假期类型的设置 start*/ + leaveRulesId = rulesComInfo.getId(); + leaveName = Util.formatMultiLang(rulesComInfo.getLeaveName(), "" + user.getLanguage()); + minimumUnit = Util.getIntValue(rulesComInfo.getMinimumUnit(), 1); + if (minimumUnit == 1 || minimumUnit == 2 || minimumUnit == 4) { + unitName = SystemEnv.getHtmlLabelName(389325, user.getLanguage());//(天) + } else { + unitName = SystemEnv.getHtmlLabelName(389326, user.getLanguage());//(小时) + } + String showName = leaveName + unitName; + balanceEnable = Util.getIntValue(rulesComInfo.getBalanceEnable(), 0); + + isMixMode = KQLeaveRulesBiz.isMixMode(leaveRulesId); + isTiaoXiu = KQLeaveRulesBiz.isTiaoXiu(leaveRulesId); + /*获取假期类型的设置 end*/ + + hrmFieldBean = new HrmFieldBean(); + hrmFieldBean.setFieldname(rulesComInfo.getId()); + hrmFieldBean.setFieldlabelname(showName); + hrmFieldBean.setFieldhtmltype("1"); + hrmFieldBean.setType("1"); + hrmFieldBean.setViewAttr(1); + hrmFieldBean.setIsFormField(true); + hrmFieldBeanList.add(hrmFieldBean); + + /*判断该假期规则是否开启了假期余额,若没有开启,则无需查找该假期的余额,直接遍历下一个假期*/ + if (balanceEnable == 0) { + continue; + } + //如果是调休,获取假期余额的方式有些不同 + if(isTiaoXiu){ + params.put("leaveRulesId",leaveRulesId); + params.put("showAll","false"); + Map _balanceMap = KQBalanceOfLeaveBiz.getRestAmountMapByDis5(params,user); + balanceMap.putAll(_balanceMap); + continue; + } + + /*查询指定年份指定假期的余额数据,并放入集合中,用于后续拼凑查询结果数据*/ + KQTransMethod transMethod = new KQTransMethod(); + RecordSet recordSet = new RecordSet(); + String sql = "select a.id hrmResourceId,a.companyStartDate,a.workStartDate,b.* from HrmResource a left join kq_balanceOfLeave b on a.id=b.resourceId " + + "and belongYear='" + selectedYear + "' and b.leaveRulesId=" + leaveRulesId + " where 1=1 "; + if (recordSet.getDBType().equalsIgnoreCase("sqlserver")) { + sql = "select a.id hrmResourceId,a.companyStartDate,a.workStartDate,b.*,ROW_NUMBER() OVER(order by dspOrder,a.id) as rn from HrmResource a left join kq_balanceOfLeave b on a.id=b.resourceId " + + "and belongYear='" + selectedYear + "' and b.leaveRulesId=" + leaveRulesId + " where 1=1 "; + } else if (recordSet.getDBType().equalsIgnoreCase("mysql")) { + sql = "select a.id hrmResourceId,a.companyStartDate,a.workStartDate,b.* from HrmResource a left join kq_balanceOfLeave b on a.id=b.resourceId " + + "and belongYear='" + selectedYear + "' and b.leaveRulesId=" + leaveRulesId + " where 1=1 "; + } + if (dataScope.equals("0")) { + //总部 + } else if (dataScope.equals("1")) { + sql += " and a.subcompanyId1 in (" + subcomId + ") "; + } else if (dataScope.equals("2")) { + sql += " and a.departmentId in (" + deptId + ") "; + } else if (dataScope.equals("3")) { + sql += " and a.id in (" + resourceId + ")"; + } else if (dataScope.equals("4")) { + if (allLevel.equals("1")) { + sql += " and (a.id=" + user.getUID() + " or a.managerStr like '%," + user.getUID() + ",%' )"; + } else { + sql += " and (a.id=" + user.getUID() + " or a.managerid = " + user.getUID() + ")"; + } + } + if (isNoAccount.equals("false")) { + if (recordSet.getDBType().equalsIgnoreCase("sqlserver") + || recordSet.getDBType().equalsIgnoreCase("mysql")) { + sql += " and (loginId is not null and loginId<>'')"; + } else { + sql += " and (loginId is not null)"; + } + } + //考勤报表共享设置 + if (!rightStr.equals("") && !dataScope.equals("4")) { + sql += rightStr; + } + if (!recordSet.getDBType().equalsIgnoreCase("sqlserver")) { + sql += " order by dspOrder,hrmResourceId "; + } + + String pageSql = "select * from (select tmp.*,rownum rn from (" + sql + ") tmp where rownum<=" + (pageSize * currentPage) + ") where rn>=" + (pageSize * (currentPage - 1) + 1); + if (recordSet.getDBType().equalsIgnoreCase("sqlserver")) { + pageSql = "select t.* from (" + sql + ") t where 1=1 and rn>=" + (pageSize * (currentPage - 1) + 1) + " and rn<=" + (pageSize * currentPage); + } else if (recordSet.getDBType().equalsIgnoreCase("mysql")) { + pageSql = sql + " limit " + (currentPage - 1) * pageSize + "," + pageSize; + } + recordSet.executeQuery(pageSql); + while (recordSet.next()) { + String hrmResourceId = recordSet.getString("hrmResourceId"); + //所属年份 + String belongYear = recordSet.getString("belongYear"); + //失效日期 + String effectiveDate = recordSet.getString("effectiveDate"); + //失效日期 + String expirationDate = recordSet.getString("expirationDate"); + /*判断假期余额的有效期*/ + boolean status = KQBalanceOfLeaveBiz.getBalanceStatus(leaveRulesId, hrmResourceId, belongYear, currentDate,effectiveDate,expirationDate); + if (!status) { + continue; + } + BigDecimal baseAmount = new BigDecimal(Util.getDoubleValue(recordSet.getString("baseAmount"), 0.00));//假期基数 + BigDecimal usedAmount = new BigDecimal(Util.getDoubleValue(recordSet.getString("usedAmount"), 0.00));//已用假期 + BigDecimal extraAmount = new BigDecimal(Util.getDoubleValue(recordSet.getString("extraAmount"), 0.00));//额外假期 + BigDecimal baseAmount2 = new BigDecimal(Util.getDoubleValue(recordSet.getString("baseAmount2"), 0.00));//用于混合模式时:福利年假基数 + BigDecimal usedAmount2 = new BigDecimal(Util.getDoubleValue(recordSet.getString("usedAmount2"), 0.00));//用于混合模式时:已用福利年假 + BigDecimal extraAmount2 = new BigDecimal(Util.getDoubleValue(recordSet.getString("extraAmount2"), 0.00));//用于混合模式时:额外福利年假 + + BigDecimal restAmount = new BigDecimal(0); + if (isMixMode) { + /*释放规则*/ + baseAmount = KQBalanceOfLeaveBiz.getCanUseAmount(hrmResourceId, leaveRulesId, belongYear, baseAmount, "legal", currentDate); + baseAmount2 = KQBalanceOfLeaveBiz.getCanUseAmount(hrmResourceId, leaveRulesId, belongYear, baseAmount2, "welfare", currentDate); + + restAmount = baseAmount.add(extraAmount).subtract(usedAmount).add(baseAmount2).add(extraAmount2).subtract(usedAmount2); + } else { + /*释放规则*/ + baseAmount = KQBalanceOfLeaveBiz.getCanUseAmount(hrmResourceId, leaveRulesId, belongYear, baseAmount, "", currentDate); + + restAmount = baseAmount.add(extraAmount).subtract(usedAmount); + } + balanceMap.put(hrmResourceId + "_" + leaveRulesId, restAmount); + } + } + + /** + * 用于拼凑查询结果列表的表数据 + */ + SubCompanyComInfo subCompanyComInfo = new SubCompanyComInfo(); + DepartmentComInfo departmentComInfo = new DepartmentComInfo(); + JobTitlesComInfo jobTitlesComInfo = new JobTitlesComInfo(); + List> dataList = new ArrayList>(); + Map dataMap = new HashMap(); + RecordSet recordSet = new RecordSet(); + String sql = "select * from HrmResource a where 1=1 "; + if (recordSet.getDBType().equalsIgnoreCase("sqlserver")) { + sql = "select *,ROW_NUMBER() OVER(order by dspOrder,id) as rn from HrmResource a where 1=1 "; + } + if (dataScope.equals("0")) { + //总部 + } else if (dataScope.equals("1")) { + sql += " and a.subcompanyId1 in (" + subcomId + ") "; + } else if (dataScope.equals("2")) { + sql += " and a.departmentId in (" + deptId + ") "; + } else if (dataScope.equals("3")) { + sql += " and a.id in (" + resourceId + ")"; + } else if (dataScope.equals("4")) { + if (allLevel.equals("1")) { + sql += " and (a.id=" + user.getUID() + " or a.managerStr like '%," + user.getUID() + ",%' )"; + } else { + sql += " and (a.id=" + user.getUID() + " or a.managerid = " + user.getUID() + ")"; + } + } + if (isNoAccount.equals("false")) { + if (recordSet.getDBType().equalsIgnoreCase("sqlserver") + || recordSet.getDBType().equalsIgnoreCase("mysql")) { + sql += " and (a.loginId is not null and a.loginId<>'')"; + } else { + sql += " and (a.loginId is not null)"; + } + } + //考勤报表共享设置 + if (!rightStr.equals("") && !dataScope.equals("4")) { + sql += rightStr; + } + if (!recordSet.getDBType().equalsIgnoreCase("sqlserver")) { + sql += " order by dspOrder,id "; + } + String pageSql = "select * from (select tmp.*,rownum rn from (" + sql + ") tmp where rownum<=" + (pageSize * currentPage) + ") where rn>=" + (pageSize * (currentPage - 1) + 1); + if (recordSet.getDBType().equalsIgnoreCase("sqlserver")) { + pageSql = "select t.* from (" + sql + ") t where 1=1 and rn>=" + (pageSize * (currentPage - 1) + 1) + " and rn<=" + (pageSize * currentPage); + } else if (recordSet.getDBType().equalsIgnoreCase("mysql")) { + pageSql = sql + " limit " + (currentPage - 1) * pageSize + "," + pageSize; + } + recordSet.executeQuery(pageSql); + while (recordSet.next()) { + dataMap = new HashMap(); + + String id = recordSet.getString("id"); + String lastName = Util.formatMultiLang(recordSet.getString("lastName"), "" + user.getLanguage()); + String departmentId = recordSet.getString("departmentId"); + String subcompanyId = recordSet.getString("subcompanyId1"); + String jobtitleId = recordSet.getString("jobtitle"); + String workcode = recordSet.getString("workcode"); + String companyStartdate = recordSet.getString("companyStartdate"); + + dataMap.put("id", id); + dataMap.put("lastName", lastName); + dataMap.put("subcom", Util.formatMultiLang(subCompanyComInfo.getSubcompanyname(subcompanyId), "" + user.getLanguage())); + dataMap.put("dept", Util.formatMultiLang(departmentComInfo.getDepartmentname(departmentId), "" + user.getLanguage())); + dataMap.put("jobtitle", Util.formatMultiLang(jobTitlesComInfo.getJobTitlesname(jobtitleId), "" + user.getLanguage())); + dataMap.put("workcode", workcode); + dataMap.put("companyStartDate", companyStartdate); + dataMap.put("subcomId", subcompanyId); + dataMap.put("deptId", departmentId); + dataMap.put("jobtitleId", jobtitleId); + + rulesComInfo.setTofirstRow(); + while (rulesComInfo.next()) { + if (rulesComInfo.getIsEnable().equals("0")) { + continue; + } + /*该假期没有开启余额限制,显示不限制余额*/ + if (rulesComInfo.getBalanceEnable().equals("0")) { + dataMap.put(rulesComInfo.getId(), SystemEnv.getHtmlLabelName(389731, user.getLanguage()));//不限制余额 + continue; + } + BigDecimal restAmount = balanceMap.get(id + "_" + rulesComInfo.getId()); + dataMap.put(rulesComInfo.getId(), restAmount != null ? restAmount.setScale(2, RoundingMode.HALF_UP).toPlainString() : "0"); + } + dataList.add(dataMap); + } + + columnsList = HrmFieldUtil.getHrmDetailTable(hrmFieldBeanList, null, user); + resultMap.put("columns", columnsList); + resultMap.put("datas", dataList); + } catch (Exception e) { + e.printStackTrace(); + } + return resultMap; + } +} diff --git a/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java b/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java index 321afe9fc..d26faae52 100644 --- a/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java +++ b/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java @@ -3,8 +3,8 @@ package com.engine.salary.remote.attend.service.impl; import com.alibaba.druid.support.json.JSONUtils; import com.alibaba.fastjson.JSONObject; import com.engine.core.impl.Service; -import com.engine.kq.cmd.balanceofleaverp.GetSearchListCmd; import com.engine.kq.cmd.report.GetKQReportCmd; +import com.engine.salary.remote.attend.cmd.GetSearchListCmd; import com.engine.salary.remote.attend.entity.Attend4Salary; import com.engine.salary.remote.attend.service.RemoteAttend4SalaryService; import com.engine.salary.util.SalaryDateUtil; @@ -106,8 +106,9 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt @Override public List> getDatas(Attend4Salary attend4Salary) { ValidUtil.doValidator(attend4Salary); - log.info("开始获取的考勤数据,参数{}", attend4Salary); + log.info("salaryAttend开始获取的考勤数据,参数{}", attend4Salary); List> list = new ArrayList<>(); + try { Map paramsMap = new HashMap(); paramsMap.put("pageIndex", 1); @@ -126,10 +127,13 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt temp.put("reportType", "month"); list = (List>) commandExecutor.execute(new GetKQReportCmd(temp, user)).get("datas"); if (isLog) { - log.info("获取的考勤数据,{}", JSONUtils.toJSONString(list)); + log.info("salaryAttend获取的考勤数据,{}", JSONUtils.toJSONString(list)); } + } catch (Exception e) { + log.error("salaryAttend获取考勤数据失败", e); + } - + try { //假期余额信息 List> balanceOfLeaveDatas = getBalanceOfLeaveDatas(attend4Salary); Map> balanceMap = SalaryEntityUtil.convert2Map(balanceOfLeaveDatas, m -> m.get("id")); @@ -159,7 +163,7 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt .collect(Collectors.toList()); list.addAll(balanceOfLeaveList); } catch (Exception e) { - log.error("获取考勤数据失败", e); + log.error("salaryAttend获取假期数据失败", e); } return list; } @@ -191,7 +195,6 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt @Override public List> getBalanceOfLeaveDatas(Attend4Salary attend4Salary) { Map paramsMap = new HashMap(); - paramsMap.put("dateScope", "6"); paramsMap.put("selectedYear", SalaryDateUtil.date2Year(attend4Salary.getBeginDate())); paramsMap.put("dataScope", "3"); paramsMap.put("resourceId", attend4Salary.getOnlyEmpIds().stream().map(String::valueOf).collect(Collectors.joining(","))); diff --git a/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java b/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java index a3e279fec..e71480f4a 100644 --- a/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java +++ b/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java @@ -450,11 +450,11 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa // AttendQuoteDataBO.buildAttendDataFromRemote("day", attendResult.getData(), attendQuoteFields, attendQuoteSyncData); } } catch (Exception e) { - log.error("获取考勤数据错误失败:{}", String.format("参数:%s,错误信息:%s", JSONObject.toJSONString(attend4Salary), e.getMessage()), e); + log.error("salaryAttend获取考勤数据错误失败:{}", String.format("参数:%s,错误信息:%s", JSONObject.toJSONString(attend4Salary), e.getMessage()), e); return attendQuoteSyncData; } if (isLog) { - log.info("同步的考勤数据:{}", JSONUtils.toJSONString(attendQuoteSyncData)); + log.info("salaryAttend同步的考勤数据:{}", JSONUtils.toJSONString(attendQuoteSyncData)); } return attendQuoteSyncData; } @@ -484,7 +484,6 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa dataValueBiz.deleteByAttendQuoteIds(quoteIds); // 新增考勤值数据 if (CollectionUtils.isNotEmpty(values)) { - log.info("考勤数据:{}", values); //去除空值 values = values.stream().filter(po -> StringUtils.isNotBlank(po.getDataValue())).collect(Collectors.toList()); dataValueBiz.insertData(values); @@ -539,7 +538,7 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa return ExcelUtil.genWorkbookV2(rows, sheetName); } catch (Exception e) { - log.error("下载模板失败", e); + log.error("salaryAttend下载模板失败", e); } return null; } From f3bc735fae3387d599329501625100a2a0840fb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 13 Nov 2023 16:52:19 +0800 Subject: [PATCH 06/24] =?UTF-8?q?=E7=9F=AD=E4=BF=A1=E5=8F=91=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/salaryBill/bo/SalaryBillBO.java | 4 +++- .../service/impl/SalaryBillServiceImpl.java | 23 +++++++++++++------ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java b/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java index 13d873527..aab57656e 100644 --- a/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java +++ b/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java @@ -362,7 +362,9 @@ public class SalaryBillBO { return data; } - public static void sendSMS(SalaryBillSendDTO salaryBillSendParam, Long id, Long employeeId) { + public static void sendSMS(Map e, SalaryBillSendDTO salaryBillSendParam) { + + System.out.println(111); // try { // MessageUtil.sendSMS(mobile, content); diff --git a/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java b/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java index ca8b344e7..e2af8e9e2 100644 --- a/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java @@ -430,15 +430,16 @@ public class SalaryBillServiceImpl extends Service implements SalaryBillService List salaryAcctResultValues = Lists.newArrayList(); //是否需要发送邮件 - Boolean isEnableEmail = salaryBillSendParam.getSendChannels().contains(MessageChannelEnum.EMAIL); + boolean isEnableEmail = salaryBillSendParam.getSendChannels().contains(MessageChannelEnum.EMAIL); + boolean isEnableSMS = salaryBillSendParam.getSendChannels().contains(MessageChannelEnum.SMS); if (CollectionUtils.isNotEmpty(ids)) { int partSize = 100;// 分片大小,越小进度条跑得越短平快,但是总体速度更慢 List> partition = Lists.partition(employeeIds, partSize); for (List part : partition) { // 更新进度 getProgressService(user).getAndAddCalculatedQty(SalaryCacheKey.SALARY_GRANT_PROGRESS + "_" + salarySend.getId(), part.size()); - /** 注意只有邮件才需要加密的核算数据 */ - if (isEnableEmail || GEN_PDF) { + /** 注意只有邮件或生成pdf才需要加密的核算数据 */ + if (isEnableEmail || isEnableSMS || GEN_PDF) { List acctEmployees = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordIdsAndEmployeeIds(Collections.singletonList(salarySend.getSalaryAccountingId()), part); salaryAcctEmployees.addAll(acctEmployees); salaryAcctResultValues.addAll(getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(SalaryEntityUtil.properties(acctEmployees, SalaryAcctEmployeePO::getId, Collectors.toList()))); @@ -446,7 +447,7 @@ public class SalaryBillServiceImpl extends Service implements SalaryBillService } } else { /** 注意只有邮件才需要加密的核算数据 */ - if (isEnableEmail || GEN_PDF) { + if (isEnableEmail|| isEnableSMS || GEN_PDF) { salaryAcctEmployees = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salarySend.getSalaryAccountingId()); salaryAcctResultValues = getSalaryAcctResultService(user).listBySalaryAcctRecordIds(Collections.singletonList(salarySend.getSalaryAccountingId())); } @@ -571,12 +572,20 @@ public class SalaryBillServiceImpl extends Service implements SalaryBillService SalaryBillBO.sendMsg(salaryBillSendParam, Long.valueOf(e.get("id").toString()), Long.valueOf(e.get("employeeId").toString())); } - if (sendChannels.contains(MessageChannelEnum.EMAIL) || GEN_PDF) { + if (sendChannels.contains(MessageChannelEnum.EMAIL) || sendChannels.contains(MessageChannelEnum.SMS) || GEN_PDF) { // 构建发送消息 SalaryBillBO.buildEmployeeInfo(salaryBillSendParam, allEmployeeMap.get(e.get("employeeId").toString())); - SalaryBillBO.sendEmail(e, salaryBillSendParam); - } + //发送邮件 + if (sendChannels.contains(MessageChannelEnum.EMAIL)) { + SalaryBillBO.sendEmail(e, salaryBillSendParam); + } + + //发送短信 + SalaryBillBO.sendSMS(e, salaryBillSendParam); + if (sendChannels.contains(MessageChannelEnum.SMS)) { + } + } /** 发送工资单 **********************************************************/ sendInfoUpdateList.add(SalarySendInfoPO.builder() From 2c12b101715abcc2e03d99874d1c7334e284fbcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 13 Nov 2023 17:12:25 +0800 Subject: [PATCH 07/24] =?UTF-8?q?1=E3=80=81=E5=87=8F=E5=B0=91=E4=BA=BA?= =?UTF-8?q?=E5=91=98bug=202=E3=80=81=E6=A1=A3=E6=A1=88=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E8=BE=93=E5=85=A5bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SalaryAcctEmployeeServiceImpl.java | 12 +++++++----- .../salary/wrapper/SalaryArchiveItemWrapper.java | 1 + 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java index dff8d8578..514b82d74 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java @@ -291,11 +291,13 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct List salaryAcctEmployeePOS = listByParam(queryParam); Set keySet = SalaryEntityUtil.properties(salaryAcctEmployeePOS, salaryAcctEmployeePO -> salaryAcctEmployeePO.getEmployeeId() + "-" + salaryAcctEmployeePO.getTaxAgentId()); List resultList = Lists.newArrayList(); - lastMonthSalaryAcctEmployeePOMap.forEach((k, v) -> { - if (!keySet.contains(k)) { - resultList.add(v); - } - }); + if(CollectionUtils.isNotEmpty(keySet)){ + lastMonthSalaryAcctEmployeePOMap.forEach((k, v) -> { + if (!keySet.contains(k)) { + resultList.add(v); + } + }); + } return resultList; } diff --git a/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java b/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java index a66a79011..42faf9c9b 100644 --- a/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java @@ -111,6 +111,7 @@ public class SalaryArchiveItemWrapper extends Service implements SalaryArchiveIt Map salaryItemMap = new LinkedHashMap<>(); salaryItemMap.put("id", String.valueOf(m.getId())); salaryItemMap.put("content", m.getName()); + salaryItemMap.put("dataType", m.getDataType()); return salaryItemMap; }).collect(Collectors.toList()); From 7befa9f408210f8a418685625026d038f83e3a9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 13 Nov 2023 17:23:09 +0800 Subject: [PATCH 08/24] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E8=80=83=E5=8B=A4?= =?UTF-8?q?=E5=81=87=E6=9C=9F=E4=BD=99=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../attend/service/impl/RemoteAttend4SalaryServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java b/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java index d26faae52..837d506e7 100644 --- a/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java +++ b/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java @@ -195,6 +195,8 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt @Override public List> getBalanceOfLeaveDatas(Attend4Salary attend4Salary) { Map paramsMap = new HashMap(); + paramsMap.put("currentPage", "1"); + paramsMap.put("pageSize", "100000"); paramsMap.put("selectedYear", SalaryDateUtil.date2Year(attend4Salary.getBeginDate())); paramsMap.put("dataScope", "3"); paramsMap.put("resourceId", attend4Salary.getOnlyEmpIds().stream().map(String::valueOf).collect(Collectors.joining(","))); From 7f68931cc5bba0a78f1334e9ee945c61fc004379 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 13 Nov 2023 17:23:33 +0800 Subject: [PATCH 09/24] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E8=80=83=E5=8B=A4?= =?UTF-8?q?=E5=81=87=E6=9C=9F=E4=BD=99=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../attend/service/impl/RemoteAttend4SalaryServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java b/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java index 837d506e7..6aeab513e 100644 --- a/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java +++ b/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java @@ -196,7 +196,7 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt public List> getBalanceOfLeaveDatas(Attend4Salary attend4Salary) { Map paramsMap = new HashMap(); paramsMap.put("currentPage", "1"); - paramsMap.put("pageSize", "100000"); + paramsMap.put("pageSize", "500"); paramsMap.put("selectedYear", SalaryDateUtil.date2Year(attend4Salary.getBeginDate())); paramsMap.put("dataScope", "3"); paramsMap.put("resourceId", attend4Salary.getOnlyEmpIds().stream().map(String::valueOf).collect(Collectors.joining(","))); From d2127cccff5729294434ccc74dc80739569b6a7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 15 Nov 2023 13:32:37 +0800 Subject: [PATCH 10/24] =?UTF-8?q?=E7=9F=AD=E4=BF=A1=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/salaryBill/bo/SalaryBillBO.java | 28 ++++++++--- .../salaryBill/dto/SalaryBillSendDTO.java | 5 +- .../salaryBill/dto/SalaryTemplateSMSDTO.java | 23 +++++++++ .../dto/SalaryTemplateSMSSetDTO.java | 34 ++++++++++++++ .../param/SalaryTemplateSaveParam.java | 14 ++++-- .../salaryBill/po/SalaryTemplatePO.java | 5 ++ .../salarybill/SalaryTemplateMapper.xml | 18 +++++++ .../service/impl/SalaryBillServiceImpl.java | 8 ++-- .../impl/SalaryTemplateServiceImpl.java | 47 ++++++++++--------- 9 files changed, 146 insertions(+), 36 deletions(-) create mode 100644 src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateSMSDTO.java create mode 100644 src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateSMSSetDTO.java diff --git a/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java b/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java index aab57656e..e1b31c48e 100644 --- a/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java +++ b/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java @@ -10,10 +10,7 @@ import com.engine.salary.constant.SalaryArchiveConstant; import com.engine.salary.constant.SalaryBillConstant; import com.engine.salary.constant.SalaryTemplateSalaryItemSetGroupConstant; import com.engine.salary.entity.datacollection.DataCollectionEmployee; -import com.engine.salary.entity.salaryBill.dto.SalaryBillSendDTO; -import com.engine.salary.entity.salaryBill.dto.SalaryBillWatermarkDTO; -import com.engine.salary.entity.salaryBill.dto.SalaryTemplateSalaryItemListDTO; -import com.engine.salary.entity.salaryBill.dto.SalaryTemplateSalaryItemSetListDTO; +import com.engine.salary.entity.salaryBill.dto.*; import com.engine.salary.entity.salaryBill.po.SalaryTemplatePO; import com.engine.salary.entity.salaryformula.dto.SalaryFormulaEmployeeDTO; import com.engine.salary.enums.salarybill.MessageChannelEnum; @@ -144,6 +141,8 @@ public class SalaryBillBO { .telephone(org.apache.commons.lang3.StringUtils.isEmpty(simpleEmployee.getTelephone()) ? "" : simpleEmployee.getTelephone()) .username(org.apache.commons.lang3.StringUtils.isEmpty(simpleEmployee.getUsername()) ? "" : simpleEmployee.getUsername()) .workcode(simpleEmployee.getWorkcode()) + .idNo(simpleEmployee.getIdNo()) + .statusName(simpleEmployee.getStatusName()) .build(); List items = employeeInformation.getItems(); // 1.SalaryAcctResultBO.buildEmployeeFieldName()的取法 @@ -289,7 +288,7 @@ public class SalaryBillBO { File touch = FileUtil.touch(htmlPath); FileUtil.appendUtf8String(content, touch); - String pdfPath = HrmSalaryPayrollConf.GEN_PATH + yyyyMM + File.separator+ sendId + File.separator + id + ".pdf"; + String pdfPath = HrmSalaryPayrollConf.GEN_PATH + yyyyMM + File.separator + sendId + File.separator + id + ".pdf"; FileUtil.del(pdfPath); HtmlToPdf.convert(HrmSalaryPayrollConf.TO_PDF_TOOL_PATH, htmlPath, pdfPath); } @@ -364,7 +363,24 @@ public class SalaryBillBO { public static void sendSMS(Map e, SalaryBillSendDTO salaryBillSendParam) { - System.out.println(111); + + SalaryTemplateSMSSetDTO smsSetting = salaryBillSendParam.getSmsSetting(); + String content = smsSetting != null ? smsSetting.getContent() : ""; + + content = ""; + + if (StringUtils.isBlank(content)) { + return; + } + + List items = smsSetting.getItems(); + for (int i = 0; i < items.size(); i++) { + SalaryTemplateSMSDTO item = items.get(i); + content = content.replace(item.getItemName(), item.getItemKey()) + .replace(item.getItemKey(), e.getOrDefault(item.getItemKey(), "").toString()); + } + + System.out.println(content); // try { // MessageUtil.sendSMS(mobile, content); diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalaryBillSendDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalaryBillSendDTO.java index 4d82ace0e..c77c0bd7a 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalaryBillSendDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalaryBillSendDTO.java @@ -64,6 +64,9 @@ public class SalaryBillSendDTO { //工资单模板-薪资项目设置 private List salaryItemSetList; + //短信模板 + private SalaryTemplateSMSSetDTO smsSetting; + //工资单模板-员工基本信息 private SalaryTemplateSalaryItemSetListDTO employeeInformation; @@ -74,7 +77,7 @@ public class SalaryBillSendDTO { private String remarkI18n; //邮件是否可以发送邮件 - private boolean isEnableEmail; +// private boolean isEnableEmail; //工资单发放 private SalarySendPO salarySend; diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateSMSDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateSMSDTO.java new file mode 100644 index 000000000..829c6c799 --- /dev/null +++ b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateSMSDTO.java @@ -0,0 +1,23 @@ +package com.engine.salary.entity.salaryBill.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryTemplateSMSDTO { + + //展示名称 + private String itemName; + + //薪资项目 + private String itemKey; + + //来源 + private String source; +} diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateSMSSetDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateSMSSetDTO.java new file mode 100644 index 000000000..3171871ff --- /dev/null +++ b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateSMSSetDTO.java @@ -0,0 +1,34 @@ +package com.engine.salary.entity.salaryBill.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 短信模板设置 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryTemplateSMSSetDTO { + + /** + * 内容 + */ + private String content; + + + /** + * 薪资项目 + */ + private List items; +} diff --git a/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java b/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java index bbf16949e..7f13c13c6 100644 --- a/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java +++ b/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java @@ -1,5 +1,6 @@ package com.engine.salary.entity.salaryBill.param; +import com.engine.salary.entity.salaryBill.dto.SalaryTemplateSMSSetDTO; import com.engine.salary.entity.salaryBill.dto.SalaryTemplateSalaryItemSetListDTO; import com.engine.salary.enums.salarybill.SalaryTemplateTextContentPositionEnum; import com.engine.salary.exception.SalaryRunTimeException; @@ -45,6 +46,9 @@ public class SalaryTemplateSaveParam { // 消息中心开启状态。false:关、true:开 private Boolean msgStatus; + // 短信开关 false:关、true:开 + private Boolean smsStatus; + // 主题 private String theme; @@ -78,6 +82,9 @@ public class SalaryTemplateSaveParam { // 薪资项目设置 private List salaryItemSetting; + //短信模板 + private SalaryTemplateSMSSetDTO smsSetting; + // 补发工资单模板名称 private String replenishName; @@ -100,7 +107,6 @@ public class SalaryTemplateSaveParam { /** * 反馈流程地址 - * */ private String feedbackUrl; @@ -153,11 +159,11 @@ public class SalaryTemplateSaveParam { } if (saveParam.getAutoSendStatus() == Boolean.TRUE) { - if(StringUtils.isBlank(saveParam.getAutoSendDayOfMonth())) + if (StringUtils.isBlank(saveParam.getAutoSendDayOfMonth())) throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(140509, "自动发放日期不能为空")); - if(Objects.isNull(saveParam.getAutoSendCycleType())) + if (Objects.isNull(saveParam.getAutoSendCycleType())) throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(140509, "自动发放周期不能为空")); - if(StringUtils.isBlank(saveParam.getAutoSendTimeOfDay())) + if (StringUtils.isBlank(saveParam.getAutoSendTimeOfDay())) throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(140509, "自动发放时间不能为空")); } } diff --git a/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java b/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java index fd8e1a1c9..a428a68ed 100644 --- a/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java +++ b/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java @@ -68,6 +68,11 @@ public class SalaryTemplatePO { */ private Integer smsStatus; + /** + * 短信模板设置 + */ + private String smsSetting; + /** * 薪酬水印 */ diff --git a/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml b/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml index 29a016b93..e17ddfec3 100644 --- a/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml @@ -26,6 +26,7 @@ + @@ -62,6 +63,7 @@ , t.update_time , t.creator , t.delete_type + , t.sms_setting