diff --git a/resource/sqlupgrade/DM/sql202309210203.sql b/resource/sqlupgrade/DM/sql202309210203.sql new file mode 100644 index 000000000..e29314273 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202309210203.sql @@ -0,0 +1,40 @@ +create table hrsa_report_push +( + id NUMBER(38,0) primary key , + create_time DATE default sysdate, + update_time DATE default sysdate, + creator NUMBER(38,0), + delete_type number default 0, + tenant_key varchar2(10), + msg_id NUMBER(38,0), + report_ids varchar2(500), + start_time varchar2(30), + end_time varchar2(30), + push_channel varchar2(30), + email_account varchar2(30), + mark varchar2(100), + push_title varchar2(30), + email_account_id number, + remind NUMBER +); +/ + +create table hrsa_report_push_detail +( + id NUMBER(38,0) primary key , + create_time DATE default sysdate, + update_time DATE default sysdate, + creator NUMBER(38,0), + delete_type int default 0, + tenant_key varchar2(10), + msg_id NUMBER(38,0), + employee_id NUMBER(38,0), + push_time varchar2(30), + push_status varchar2(5), + reback_time varchar2(30), + reback_status varchar2(5), + batch_id NUMBER(38,0), + view_status varchar2(10) +); +/ + diff --git a/resource/sqlupgrade/GS/sql202309210203.sql b/resource/sqlupgrade/GS/sql202309210203.sql new file mode 100644 index 000000000..e29314273 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202309210203.sql @@ -0,0 +1,40 @@ +create table hrsa_report_push +( + id NUMBER(38,0) primary key , + create_time DATE default sysdate, + update_time DATE default sysdate, + creator NUMBER(38,0), + delete_type number default 0, + tenant_key varchar2(10), + msg_id NUMBER(38,0), + report_ids varchar2(500), + start_time varchar2(30), + end_time varchar2(30), + push_channel varchar2(30), + email_account varchar2(30), + mark varchar2(100), + push_title varchar2(30), + email_account_id number, + remind NUMBER +); +/ + +create table hrsa_report_push_detail +( + id NUMBER(38,0) primary key , + create_time DATE default sysdate, + update_time DATE default sysdate, + creator NUMBER(38,0), + delete_type int default 0, + tenant_key varchar2(10), + msg_id NUMBER(38,0), + employee_id NUMBER(38,0), + push_time varchar2(30), + push_status varchar2(5), + reback_time varchar2(30), + reback_status varchar2(5), + batch_id NUMBER(38,0), + view_status varchar2(10) +); +/ + diff --git a/resource/sqlupgrade/JC/sql202309210203.sql b/resource/sqlupgrade/JC/sql202309210203.sql new file mode 100644 index 000000000..e29314273 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202309210203.sql @@ -0,0 +1,40 @@ +create table hrsa_report_push +( + id NUMBER(38,0) primary key , + create_time DATE default sysdate, + update_time DATE default sysdate, + creator NUMBER(38,0), + delete_type number default 0, + tenant_key varchar2(10), + msg_id NUMBER(38,0), + report_ids varchar2(500), + start_time varchar2(30), + end_time varchar2(30), + push_channel varchar2(30), + email_account varchar2(30), + mark varchar2(100), + push_title varchar2(30), + email_account_id number, + remind NUMBER +); +/ + +create table hrsa_report_push_detail +( + id NUMBER(38,0) primary key , + create_time DATE default sysdate, + update_time DATE default sysdate, + creator NUMBER(38,0), + delete_type int default 0, + tenant_key varchar2(10), + msg_id NUMBER(38,0), + employee_id NUMBER(38,0), + push_time varchar2(30), + push_status varchar2(5), + reback_time varchar2(30), + reback_status varchar2(5), + batch_id NUMBER(38,0), + view_status varchar2(10) +); +/ + diff --git a/resource/sqlupgrade/Mysql/sql202309210203.sql b/resource/sqlupgrade/Mysql/sql202309210203.sql new file mode 100644 index 000000000..7e893a48d --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202309210203.sql @@ -0,0 +1,41 @@ +create table hrsa_report_push +( + id bigint primary key comment 'ID' , + create_time datetime default now() comment '创建时间' , + update_time datetime default now() comment '修改时间' , + creator bigint comment '创建人id' , + delete_type int default 0 comment '是否删除' , + tenant_key varchar(10) comment '租户KEY' , + msg_id bigint comment '消息id' , + report_ids varchar(500) comment '快照id' , + start_time varchar(30) comment '有效开始时间' , + end_time varchar(30) comment '有效结束时间' , + push_channel varchar(30) comment '分享渠道' , + email_account varchar(30) comment '邮件账号' , + mark varchar(100) comment '分享说明' , + push_title varchar(30) comment '推送标题' , + email_account_id bigint, + remind int +) +; + + +create table hrsa_report_push_detail +( + id bigint primary key comment 'ID' , + create_time datetime default now() comment '创建时间' , + update_time datetime default now() comment '修改时间' , + creator bigint comment '创建人id' , + delete_type int default 0 comment '是否删除' , + tenant_key varchar(10) comment '租户KEY' , + msg_id bigint comment '消息id' , + employee_id bigint comment '员工id' , + push_time varchar(30) comment '分享时间' , + push_status varchar(5) comment '分享状态' , + reback_time varchar(30) comment '撤回时间' , + reback_status varchar(5) comment '撤回状态' , + batch_id bigint comment '批次id', + view_status varchar(10) +) +; + diff --git a/resource/sqlupgrade/Oracle/sql202309210203.sql b/resource/sqlupgrade/Oracle/sql202309210203.sql new file mode 100644 index 000000000..9eea96c9a --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202309210203.sql @@ -0,0 +1,40 @@ +create table hrsa_report_push +( + id NUMBER(38,0) primary key , + create_time DATE default sysdate, + update_time DATE default sysdate, + creator NUMBER(38,0), + delete_type number default 0, + tenant_key varchar2(10), + msg_id NUMBER(38,0), + report_ids varchar2(500), + start_time varchar2(30), + end_time varchar2(30), + push_channel varchar2(30), + email_account varchar2(30), + mark varchar2(100), + push_title varchar2(30), + email_account_id number, + remind NUMBER +) +/ + + +create table hrsa_report_push_detail +( + id NUMBER(38,0) primary key , + create_time DATE default sysdate, + update_time DATE default sysdate, + creator NUMBER(38,0), + delete_type int default 0, + tenant_key varchar2(10), + msg_id NUMBER(38,0), + employee_id NUMBER(38,0), + push_time varchar2(30), + push_status varchar2(5), + reback_time varchar2(30), + reback_status varchar2(5), + batch_id NUMBER(38,0), + view_status varchar2(10) +) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202309210203.sql b/resource/sqlupgrade/PG/sql202309210203.sql new file mode 100644 index 000000000..90c83c99c --- /dev/null +++ b/resource/sqlupgrade/PG/sql202309210203.sql @@ -0,0 +1,40 @@ +create table hrsa_report_push +( + id bigint primary key , + create_time timestamp default now(), + update_time timestamp default now(), + creator bigint, + delete_type int default 0, + tenant_key varchar(10), + msg_id bigint, + report_ids varchar(500), + start_time varchar(30), + end_time varchar(30), + push_channel varchar(30), + email_account varchar(30), + mark varchar(100) , + push_title varchar(30), + email_account_id bigint, + remind int +) +; + + +create table hrsa_report_push_detail +( + id bigint primary key, + create_time timestamp default now(), + update_time timestamp default now() , + creator bigint, + delete_type int default 0 , + tenant_key varchar(10), + msg_id bigint , + employee_id bigint, + push_time varchar(30) , + push_status varchar(5) , + reback_time varchar(30) , + reback_status varchar(5) , + batch_id bigint, + view_status varchar(10) +) +; \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202309210203.sql b/resource/sqlupgrade/SQLServer/sql202309210203.sql new file mode 100644 index 000000000..96c3450e2 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202309210203.sql @@ -0,0 +1,40 @@ +create table hrsa_report_push +( + id bigint primary key, + create_time datetime default getdate(), + update_time datetime default getdate(), + creator bigint, + delete_type int default 0, + tenant_key VARCHAR(255), + msg_id bigint, + report_ids VARCHAR(255), + start_time VARCHAR(255), + end_time VARCHAR(255), + push_channel VARCHAR(255), + email_account VARCHAR(255), + email_account_id bigint, + mark VARCHAR(255), + push_title VARCHAR(255), + remind int +) +GO + + +create table hrsa_report_push_detail +( + id bigint primary key , + create_time datetime default getdate(), + update_time datetime default getdate(), + creator bigint, + delete_type int default 0, + tenant_key VARCHAR(255), + msg_id bigint, + employee_id bigint, + push_time VARCHAR(255), + push_status VARCHAR(255), + reback_time VARCHAR(255), + reback_status VARCHAR(255), + batch_id bigint, + view_status VARCHAR(255) +) +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202309210203.sql b/resource/sqlupgrade/ST/sql202309210203.sql new file mode 100644 index 000000000..e29314273 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202309210203.sql @@ -0,0 +1,40 @@ +create table hrsa_report_push +( + id NUMBER(38,0) primary key , + create_time DATE default sysdate, + update_time DATE default sysdate, + creator NUMBER(38,0), + delete_type number default 0, + tenant_key varchar2(10), + msg_id NUMBER(38,0), + report_ids varchar2(500), + start_time varchar2(30), + end_time varchar2(30), + push_channel varchar2(30), + email_account varchar2(30), + mark varchar2(100), + push_title varchar2(30), + email_account_id number, + remind NUMBER +); +/ + +create table hrsa_report_push_detail +( + id NUMBER(38,0) primary key , + create_time DATE default sysdate, + update_time DATE default sysdate, + creator NUMBER(38,0), + delete_type int default 0, + tenant_key varchar2(10), + msg_id NUMBER(38,0), + employee_id NUMBER(38,0), + push_time varchar2(30), + push_status varchar2(5), + reback_time varchar2(30), + reback_status varchar2(5), + batch_id NUMBER(38,0), + view_status varchar2(10) +); +/ + diff --git a/src/com/api/salary/web/SalaryStatisticsPushController.java b/src/com/api/salary/web/SalaryStatisticsPushController.java new file mode 100644 index 000000000..75b370b37 --- /dev/null +++ b/src/com/api/salary/web/SalaryStatisticsPushController.java @@ -0,0 +1,8 @@ +package com.api.salary.web; + + +import javax.ws.rs.Path; + +@Path("/bs/salaryreport/salary/statistics/push") +public class SalaryStatisticsPushController extends com.engine.salary.report.web.SalaryStatisticsPushController{ +} diff --git a/src/com/engine/salary/action/CheckEditSIArchiveAction.java b/src/com/engine/salary/action/CheckEditSIArchiveAction.java index 936a1b697..f4f8d9165 100644 --- a/src/com/engine/salary/action/CheckEditSIArchiveAction.java +++ b/src/com/engine/salary/action/CheckEditSIArchiveAction.java @@ -1,7 +1,7 @@ package com.engine.salary.action; import com.engine.common.util.ServiceUtil; -import com.engine.salary.entity.siarchives.param.SIArchiveImportActionParam; +import com.engine.salary.entity.siarchives.param.SIArchiveImportParam; import com.engine.salary.service.SISchemeService; import com.engine.salary.service.impl.SISchemeServiceImpl; import com.engine.salary.util.SalaryEntityUtil; @@ -66,7 +66,7 @@ public class CheckEditSIArchiveAction implements Action { //绂忓埄鎵ц鐘舵 String runStatus = list.stream().filter(f -> f.salaryName.equals("妗f鐘舵")).findFirst().map(CheckEditSIArchiveAction.SalaryField::getValue).orElse("1"); - SIArchiveImportActionParam build = SIArchiveImportActionParam.builder() + SIArchiveImportParam build = SIArchiveImportParam.builder() .importDatas(importData) .runStatus(runStatus) .build(); diff --git a/src/com/engine/salary/action/EditSIArchiveAction.java b/src/com/engine/salary/action/EditSIArchiveAction.java index 1fb188ed1..22dda2d3e 100644 --- a/src/com/engine/salary/action/EditSIArchiveAction.java +++ b/src/com/engine/salary/action/EditSIArchiveAction.java @@ -1,7 +1,7 @@ package com.engine.salary.action; import com.engine.common.util.ServiceUtil; -import com.engine.salary.entity.siarchives.param.SIArchiveImportActionParam; +import com.engine.salary.entity.siarchives.param.SIArchiveImportParam; import com.engine.salary.service.SISchemeService; import com.engine.salary.service.impl.SISchemeServiceImpl; import com.engine.salary.util.SalaryEntityUtil; @@ -65,7 +65,7 @@ public class EditSIArchiveAction implements Action { //绂忓埄鎵ц鐘舵 String runStatus = list.stream().filter(f -> f.salaryName.equals("妗f鐘舵")).findFirst().map(EditSIArchiveAction.SalaryField::getValue).orElse("1"); - SIArchiveImportActionParam build = SIArchiveImportActionParam.builder() + SIArchiveImportParam build = SIArchiveImportParam.builder() .importDatas(importData) .runStatus(runStatus) .build(); diff --git a/src/com/engine/salary/action/EditToPaySIArchiveAction.java b/src/com/engine/salary/action/EditToPaySIArchiveAction.java new file mode 100644 index 000000000..c736f9698 --- /dev/null +++ b/src/com/engine/salary/action/EditToPaySIArchiveAction.java @@ -0,0 +1,181 @@ +package com.engine.salary.action; + +import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.siarchives.param.SIArchiveImportParam; +import com.engine.salary.entity.siarchives.po.InsuranceArchivesBaseInfoPO; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.enums.siaccount.EmployeeStatusEnum; +import com.engine.salary.mapper.siarchives.InsuranceBaseInfoMapper; +import com.engine.salary.mapper.taxagent.TaxAgentMapper; +import com.engine.salary.service.SIArchivesService; +import com.engine.salary.service.SISchemeService; +import com.engine.salary.service.impl.SIArchivesServiceImpl; +import com.engine.salary.service.impl.SISchemeServiceImpl; +import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.db.MapperProxyFactory; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import weaver.conn.RecordSet; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.Property; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Author: sy + * @Description: 缂栬緫骞跺鍛樼鍒╂。妗 + * @Date: 2023/9/8 + **/ +@Slf4j +public class EditToPaySIArchiveAction implements Action { + private SISchemeService getSISchemeService(User user) { + return ServiceUtil.getService(SISchemeServiceImpl.class,user); + } + + private InsuranceBaseInfoMapper getInsuranceBaseInfoMapper() { + return MapperProxyFactory.getProxy(InsuranceBaseInfoMapper.class); + } + + private SIArchivesService getSIArchivesService(User user) { + return ServiceUtil.getService(SIArchivesServiceImpl.class,user); + } + + private TaxAgentMapper getTaxAgentMapper() { + return MapperProxyFactory.getProxy(TaxAgentMapper.class); + } + + private String tableName; + + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + @Override + public String execute(RequestInfo requestInfo) { + try { + Property[] properties = requestInfo.getMainTableInfo().getProperty(); + Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, + property -> Util.null2String(property.getValue()))); + + RecordSet rs = new RecordSet(); + + String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; + rs.executeQuery(queryImageId, requestInfo.getWorkflowid()); + + List list = new ArrayList<>(); + while (rs.next()) { + String processField = rs.getString("processfield"); + String salaryName = rs.getString("salaryname"); + String value = fieldMap.get(processField); + list.add(new EditToPaySIArchiveAction.SalaryField(processField, salaryName, value)); + } + List> importData = new ArrayList<>(); + importData.add(SalaryEntityUtil.convert2Map(list, EditToPaySIArchiveAction.SalaryField::getSalaryName, EditToPaySIArchiveAction.SalaryField::getValue)); + //绂忓埄鎵ц鐘舵 + String runStatus = EmployeeStatusEnum.STAY_ADD.getValue(); + + SIArchiveImportParam build = SIArchiveImportParam.builder() + .importDatas(importData) + .runStatus(runStatus) + .build(); + + //鎿嶄綔浜 + String uid = list.stream().filter(f -> f.salaryName.equals("鎿嶄綔浜")).findFirst().map(EditToPaySIArchiveAction.SalaryField::getValue).orElse("1"); + //鏇存柊/鏂板缓妗f鏁版嵁 + Map map = getSISchemeService(new User(Integer.parseInt(uid))).addSIArchive(build); + + List errorNotice = (List) map.get("errorData"); + if (CollectionUtils.isNotEmpty(errorNotice)) { + log.error("绂忓埄妗f缂栬緫骞跺鍛樺瓨鍦ㄥ紓甯 requestId:{} ,鍙傛暟:{}, map:{}", requestInfo.getRequestid(), build, map); + List> excelComments = (List>) map.get("errorData"); + StringBuilder message = new StringBuilder(""); + for (Map comments : excelComments) { + message.append(comments.get("message")).append("\n"); + } + requestInfo.getRequestManager().setMessage(message.toString()); + return FAILURE_AND_CONTINUE; + } + //澧炲憳 + String taxAgentName = importData.get(0).get("涓◣鎵g即涔夊姟浜").toString(); + List taxAgentPOS = getTaxAgentMapper().listByName(taxAgentName); + if(CollectionUtils.isEmpty(taxAgentPOS)){ + requestInfo.getRequestManager().setMessage("涓◣鎵g即涔夊姟浜轰笉瀛樺湪锛"); + return FAILURE_AND_CONTINUE; + } + Long taxAgentId = Long.valueOf(taxAgentPOS.get(0).getId()); + Long employeeId = Long.valueOf(list.stream().filter(f -> f.salaryName.equals("鍛樺伐id")).findFirst().map(EditToPaySIArchiveAction.SalaryField::getValue).orElse("-1")); + User user = new User(Integer.parseInt(uid)); + // 鑾峰彇绂忓埄妗f鍩虹淇℃伅 + InsuranceArchivesBaseInfoPO insuranceArchivesBaseInfoPO = getInsuranceBaseInfoMapper().getOneByEmployeeIdAndPayOrg(taxAgentId, employeeId); + if(insuranceArchivesBaseInfoPO == null){ + requestInfo.getRequestManager().setMessage("璇ヤ釜绋庢墸缂翠箟鍔′汉涓嬭鍛樺伐涓嶅瓨鍦ㄧ鍒╂。妗堬紝璇锋鏌ュ悗閲嶈瘯锛"); + return FAILURE_AND_CONTINUE; + } else if(!insuranceArchivesBaseInfoPO.getRunStatus().equals(EmployeeStatusEnum.STAY_ADD.getValue())){ + requestInfo.getRequestManager().setMessage("璇ヤ釜绋庢墸缂翠箟鍔′汉涓嬭鍛樺伐鐨勭鍒╂。妗堢姸鎬佷笉鏄緟澧炲憳锛屾棤娉曡繘琛屽鍛樻搷浣滐紝璇锋鏌ュ悗閲嶈瘯锛"); + return FAILURE_AND_CONTINUE; + } + //澧炲憳 + Map resultMap = getSIArchivesService(user).stayAddToPay(Collections.singletonList(insuranceArchivesBaseInfoPO.getId())); + if (resultMap.get("type").toString().equals("fail")) { + requestInfo.getRequestManager().setMessage(resultMap.get("msg").toString()); + return FAILURE_AND_CONTINUE; + } + + + } catch (Exception e) { + log.error("绂忓埄妗f缂栬緫骞跺鍛樺紓甯", e); + requestInfo.getRequestManager().setMessage(e.getMessage()); + return FAILURE_AND_CONTINUE; + } + return SUCCESS; + } + + + class SalaryField { + + private String processField; + + private String salaryName; + + private String value; + + public String getProcessField() { + return processField; + } + + public void setProcessField(String processField) { + this.processField = processField; + } + + public String getSalaryName() { + return salaryName; + } + + public void setSalaryName(String salaryName) { + this.salaryName = salaryName; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public SalaryField(String processField, String salaryName, String value) { + this.processField = processField; + this.salaryName = salaryName; + this.value = value; + } + } +} diff --git a/src/com/engine/salary/action/EditToStopSIArchiveAction.java b/src/com/engine/salary/action/EditToStopSIArchiveAction.java new file mode 100644 index 000000000..80b16ab93 --- /dev/null +++ b/src/com/engine/salary/action/EditToStopSIArchiveAction.java @@ -0,0 +1,184 @@ +package com.engine.salary.action; + +import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.siarchives.param.SIArchiveImportParam; +import com.engine.salary.entity.siarchives.po.InsuranceArchivesBaseInfoPO; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.enums.siaccount.EmployeeStatusEnum; +import com.engine.salary.mapper.siarchives.InsuranceBaseInfoMapper; +import com.engine.salary.mapper.taxagent.TaxAgentMapper; +import com.engine.salary.service.SIArchivesService; +import com.engine.salary.service.SISchemeService; +import com.engine.salary.service.impl.SIArchivesServiceImpl; +import com.engine.salary.service.impl.SISchemeServiceImpl; +import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.db.MapperProxyFactory; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import weaver.conn.RecordSet; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.Property; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Author: sy + * @Description: 缂栬緫骞跺噺鍛樼鍒╂。妗 + * @Date: 2023/9/8 + **/ +@Slf4j +public class EditToStopSIArchiveAction implements Action { + private SISchemeService getSISchemeService(User user) { + return ServiceUtil.getService(SISchemeServiceImpl.class,user); + } + + private InsuranceBaseInfoMapper getInsuranceBaseInfoMapper() { + return MapperProxyFactory.getProxy(InsuranceBaseInfoMapper.class); + } + + private SIArchivesService getSIArchivesService(User user) { + return ServiceUtil.getService(SIArchivesServiceImpl.class,user); + } + + private TaxAgentMapper getTaxAgentMapper() { + return MapperProxyFactory.getProxy(TaxAgentMapper.class); + } + + private String tableName; + + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + @Override + public String execute(RequestInfo requestInfo) { + try { + Property[] properties = requestInfo.getMainTableInfo().getProperty(); + Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, + property -> Util.null2String(property.getValue()))); + + RecordSet rs = new RecordSet(); + + String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; + rs.executeQuery(queryImageId, requestInfo.getWorkflowid()); + + List list = new ArrayList<>(); + while (rs.next()) { + String processField = rs.getString("processfield"); + String salaryName = rs.getString("salaryname"); + String value = fieldMap.get(processField); + list.add(new EditToStopSIArchiveAction.SalaryField(processField, salaryName, value)); + } + List> importData = new ArrayList<>(); + importData.add(SalaryEntityUtil.convert2Map(list, EditToStopSIArchiveAction.SalaryField::getSalaryName, EditToStopSIArchiveAction.SalaryField::getValue)); + //绂忓埄鎵ц鐘舵 + String runStatus = EmployeeStatusEnum.PAYING.getValue(); + + SIArchiveImportParam build = SIArchiveImportParam.builder() + .importDatas(importData) + .runStatus(runStatus) + .build(); + + //鎿嶄綔浜 + String uid = list.stream().filter(f -> f.salaryName.equals("鎿嶄綔浜")).findFirst().map(EditToStopSIArchiveAction.SalaryField::getValue).orElse("1"); + User user = new User(Integer.parseInt(uid)); + //鏇存柊/鏂板缓妗f鏁版嵁 + Map map = getSISchemeService(new User(Integer.parseInt(uid))).addSIArchive(build); + + List errorNotice = (List) map.get("errorData"); + if (CollectionUtils.isNotEmpty(errorNotice)) { + log.error("绂忓埄妗f缂栬緫骞跺噺鍛樺瓨鍦ㄥ紓甯 requestId:{} ,鍙傛暟:{}, map:{}", requestInfo.getRequestid(), build, map); + List> excelComments = (List>) map.get("errorData"); + StringBuilder message = new StringBuilder(""); + for (Map comments : excelComments) { + message.append(comments.get("message")).append("\n"); + } + requestInfo.getRequestManager().setMessage(message.toString()); + return FAILURE_AND_CONTINUE; + } + //鍒锋柊绂忓埄妗f鐘舵 + getSIArchivesService(user).handleStayDelData(Integer.parseInt(uid)); + //鍑忓憳 + String taxAgentName = importData.get(0).get("涓◣鎵g即涔夊姟浜").toString(); + List taxAgentPOS = getTaxAgentMapper().listByName(taxAgentName); + if(CollectionUtils.isEmpty(taxAgentPOS)){ + requestInfo.getRequestManager().setMessage("涓◣鎵g即涔夊姟浜轰笉瀛樺湪锛"); + return FAILURE_AND_CONTINUE; + } + Long taxAgentId = Long.valueOf(taxAgentPOS.get(0).getId()); + Long employeeId = Long.valueOf(list.stream().filter(f -> f.salaryName.equals("鍛樺伐id")).findFirst().map(EditToStopSIArchiveAction.SalaryField::getValue).orElse("-1")); + + // 鑾峰彇绂忓埄妗f + InsuranceArchivesBaseInfoPO insuranceArchivesBaseInfoPO = getInsuranceBaseInfoMapper().getOneByEmployeeIdAndPayOrg(taxAgentId, employeeId); + if(insuranceArchivesBaseInfoPO == null){ + requestInfo.getRequestManager().setMessage("璇ヤ釜绋庢墸缂翠箟鍔′汉涓嬭鍛樺伐涓嶅瓨鍦ㄧ鍒╂。妗堬紝璇锋鏌ュ悗閲嶈瘯锛"); + return FAILURE_AND_CONTINUE; + } else if(!insuranceArchivesBaseInfoPO.getRunStatus().equals(EmployeeStatusEnum.STAY_DEL.getValue())){ + requestInfo.getRequestManager().setMessage("璇ヤ釜绋庢墸缂翠箟鍔′汉涓嬭鍛樺伐鐨勭鍒╂。妗堢姸鎬佷笉鏄緟鍑忓憳锛屾棤娉曡繘琛屽噺鍛樻搷浣滐紝璇锋鏌ュ悗閲嶈瘯锛"); + return FAILURE_AND_CONTINUE; + } + //鍑忓憳 + Map resultMap = getSIArchivesService(user).stayDelToStop(Collections.singletonList(insuranceArchivesBaseInfoPO.getId())); + if (resultMap.get("type").toString().equals("fail")) { + requestInfo.getRequestManager().setMessage(resultMap.get("msg").toString()); + return FAILURE_AND_CONTINUE; + } + + + } catch (Exception e) { + log.error("绂忓埄妗f缂栬緫骞跺噺鍛樺紓甯", e); + requestInfo.getRequestManager().setMessage(e.getMessage()); + return FAILURE_AND_CONTINUE; + } + return SUCCESS; + } + + + class SalaryField { + + private String processField; + + private String salaryName; + + private String value; + + public String getProcessField() { + return processField; + } + + public void setProcessField(String processField) { + this.processField = processField; + } + + public String getSalaryName() { + return salaryName; + } + + public void setSalaryName(String salaryName) { + this.salaryName = salaryName; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public SalaryField(String processField, String salaryName, String value) { + this.processField = processField; + this.salaryName = salaryName; + this.value = value; + } + } +} diff --git a/src/com/engine/salary/action/StayAddToPaySIArchiveAction.java b/src/com/engine/salary/action/StayAddToPaySIArchiveAction.java index 7f55d7d8a..c0bc0c0b0 100644 --- a/src/com/engine/salary/action/StayAddToPaySIArchiveAction.java +++ b/src/com/engine/salary/action/StayAddToPaySIArchiveAction.java @@ -82,7 +82,7 @@ public class StayAddToPaySIArchiveAction implements Action { requestInfo.getRequestManager().setMessage("涓◣鎵g即涔夊姟浜轰笉瀛樺湪锛"); return FAILURE_AND_CONTINUE; } - Long taxAgentId = Long.valueOf( taxAgentPOS.get(0).getId() ); + Long taxAgentId = Long.valueOf(taxAgentPOS.get(0).getId()); Long employeeId = Long.valueOf(importDataMap.getOrDefault("鍛樺伐id", "-1").toString()); //鎿嶄綔浜 diff --git a/src/com/engine/salary/action/UpdateSISchemeDetailAction.java b/src/com/engine/salary/action/UpdateSISchemeDetailAction.java new file mode 100644 index 000000000..2ceef43d0 --- /dev/null +++ b/src/com/engine/salary/action/UpdateSISchemeDetailAction.java @@ -0,0 +1,250 @@ +package com.engine.salary.action; + +import com.engine.salary.encrypt.EncryptUtil; +import com.engine.salary.entity.sicategory.po.ICategoryPO; +import com.engine.salary.entity.sischeme.po.InsuranceSchemeDetailPO; +import com.engine.salary.entity.sischeme.po.InsuranceSchemePO; +import com.engine.salary.enums.sicategory.IsUseEnum; +import com.engine.salary.mapper.sicategory.ICategoryMapper; +import com.engine.salary.mapper.sischeme.InsuranceSchemeDetailMapper; +import com.engine.salary.mapper.sischeme.InsuranceSchemeMapper; +import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.db.MapperProxyFactory; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.*; +import weaver.workflow.request.RequestManager; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Author: sy + * @Description: 鏇存柊绂忓埄鏂规鏄庣粏淇℃伅action + * @Date: 2023/9/18 + **/ +@Slf4j +public class UpdateSISchemeDetailAction implements Action { + + private EncryptUtil encryptUtil = new EncryptUtil(); + + private InsuranceSchemeMapper getInsuranceSchemeMapper() { + return MapperProxyFactory.getProxy(InsuranceSchemeMapper.class); + } + + private InsuranceSchemeDetailMapper getInsuranceSchemeDetailMapper() { + return MapperProxyFactory.getProxy(InsuranceSchemeDetailMapper.class); + } + + private ICategoryMapper getICategoryMapper() { + return MapperProxyFactory.getProxy(ICategoryMapper.class); + } + + private String tableName; + + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + @Override + public String execute(RequestInfo requestInfo) { + try { + RequestManager requestManager = requestInfo.getRequestManager(); + User user = requestManager.getUser(); + + DetailTable[] detailTables = requestInfo.getDetailTableInfo().getDetailTable(); + List> detailList = new ArrayList<>(); + if (detailTables.length > 0) { + for(DetailTable dt : detailTables) { + Row[] s = dt.getRow(); + for (Row r : s) { + Cell[] c = r.getCell(); + Map detailMap = Arrays.stream(c).collect(Collectors.toMap(Cell::getName, + property -> Util.null2String(property.getValue()))); + detailList.add(detailMap); + } + + } + } + RecordSet rs = new RecordSet(); + + String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; + rs.executeQuery(queryImageId, requestInfo.getWorkflowid()); + + //閬嶅巻鍙栧嚭鏄庣粏琛ㄤ腑瀵瑰簲鏁版嵁 + int detailNo = 0; + List listAll = getICategoryMapper().listAll().stream().filter(f -> f.getIsUse().equals(IsUseEnum.START.getValue())).collect(Collectors.toList()); + List schemeList = getInsuranceSchemeMapper().listAll(); + List updateSchemeDetails = new ArrayList<>(); + for (Map map : detailList) { + detailNo++; + List list = new ArrayList<>(); + while (rs.next()) { + String processField = rs.getString("processfield"); + String salaryName = rs.getString("salaryname"); + String value = map.get(processField); + list.add(new UpdateSISchemeDetailAction.SalaryField(processField, salaryName, value)); + } + rs.beforFirst(); + // 娴佺▼鏁版嵁 + Map importDataMap = SalaryEntityUtil.convert2Map(list, UpdateSISchemeDetailAction.SalaryField::getSalaryName, UpdateSISchemeDetailAction.SalaryField::getValue); + //璁剧疆鏇存柊瀵硅薄鍏冪礌 + String schemeId = importDataMap.getOrDefault("绂忓埄鏂规id", "").toString(); + String schemeName = importDataMap.getOrDefault("绂忓埄鏂规鍚嶇О", "").toString(); + //鏌ヨ绂忓埄鏂规 + InsuranceSchemePO targetSchemePO = new InsuranceSchemePO(); + if (StringUtils.isNotBlank(schemeId)) { + targetSchemePO = schemeList.stream().filter(f -> f.getId().equals(Long.valueOf(schemeId))).findFirst().orElse(null); + } else if (StringUtils.isNotBlank(schemeName)) { + targetSchemePO = schemeList.stream().filter(f -> f.getSchemeName().equals(schemeName)).findFirst().orElse(null); + } else { + requestInfo.getRequestManager().setMessage("閿欒琛" + detailNo + ":" + "绂忓埄鏂规id鍜岀鍒╂柟妗堝悕绉拌嚦灏戝~鍐欎竴涓紒"); + return FAILURE_AND_CONTINUE; + } + + if (targetSchemePO == null) { + requestInfo.getRequestManager().setMessage("閿欒琛" + detailNo + ":" + "绂忓埄鏂规id鍜岀鍒╂柟妗堝悕绉颁俊鎭湁璇紝鏃犳硶鍖归厤鍒板凡鏈夌鍒╂柟妗堬紒"); + return FAILURE_AND_CONTINUE; + } + //鏌ヨ绂忓埄鏂规涓嬬殑绂忓埄椤规槑缁 + List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().queryListBySchemeId(targetSchemePO.getId()); + if (insuranceSchemeDetailPOS.size() > 0) { + encryptUtil.decryptList(insuranceSchemeDetailPOS, InsuranceSchemeDetailPO.class); + } else { + requestInfo.getRequestManager().setMessage("閿欒琛" + detailNo + ":" + "璇ョ鍒╂柟妗堜笉瀛樺湪绂忓埄椤规槑缁嗭紝鏃犳硶杩涜淇敼锛"); + return FAILURE_AND_CONTINUE; + } + + String paymentScope = importDataMap.getOrDefault("缂寸撼瀵硅薄", "").toString(); + if (StringUtils.isBlank(paymentScope)) { + requestInfo.getRequestManager().setMessage("閿欒琛" + detailNo + ":" + "缂寸撼瀵硅薄蹇呭~锛"); + return FAILURE_AND_CONTINUE; + } + + String insuranceId = importDataMap.getOrDefault("绂忓埄椤筰d", "").toString(); + String insuranceName = importDataMap.getOrDefault("绂忓埄椤瑰悕绉", "").toString(); + + InsuranceSchemeDetailPO targetSchemeDetailPO = new InsuranceSchemeDetailPO(); + if (StringUtils.isNotBlank(insuranceId)) { + targetSchemeDetailPO = insuranceSchemeDetailPOS.stream() + .filter(f -> f.getInsuranceId().equals(Long.valueOf(insuranceId)) && f.getPaymentScope().equals(Integer.valueOf(paymentScope))) + .findFirst().orElse(null); + } else if (StringUtils.isNotBlank(insuranceName)) { + List targetCategoryPOs = listAll.stream().filter(f -> f.getInsuranceName().equals(insuranceName)).collect(Collectors.toList()); + if (targetCategoryPOs .size() == 1) { + targetSchemeDetailPO = insuranceSchemeDetailPOS.stream() + .filter(f -> f.getInsuranceId().equals(targetCategoryPOs.get(0).getId()) && f.getPaymentScope().equals(Integer.valueOf(paymentScope))) + .findFirst().orElse(null); + } else if (targetCategoryPOs.size() > 1) { + requestInfo.getRequestManager().setMessage("閿欒琛" + detailNo + ":" + "绂忓埄椤瑰悕绉板尮閰嶅埌澶氫釜绂忓埄椤癸紒"); + return FAILURE_AND_CONTINUE; + } + + } else { + requestInfo.getRequestManager().setMessage("閿欒琛" + detailNo + ":" + "绂忓埄椤筰d鍜岀鍒╅」鍚嶇О鑷冲皯濉啓涓涓紒"); + return FAILURE_AND_CONTINUE; + } + + if (targetSchemeDetailPO == null) { + requestInfo.getRequestManager().setMessage("閿欒琛" + detailNo + ":" + "绂忓埄椤筰d鍜岀鍒╅」鍚嶇О淇℃伅鏈夎锛屾棤娉曞尮閰嶅埌鏂规宸叉湁绂忓埄椤癸紒"); + return FAILURE_AND_CONTINUE; + } + + String isPayment = importDataMap.getOrDefault("鏄惁缂磋垂", "").toString(); + if (StringUtils.isNotBlank(isPayment)) { + targetSchemeDetailPO.setIsPayment(Integer.valueOf(isPayment)); + } + + String upperLimit = importDataMap.getOrDefault("鍩烘暟涓婇檺", "").toString(); + if (StringUtils.isNotBlank(upperLimit)) { + targetSchemeDetailPO.setUpperLimit(upperLimit); + } + String lowerLimit = importDataMap.getOrDefault("鍩烘暟涓嬮檺", "").toString(); + if (StringUtils.isNotBlank(lowerLimit)) { + targetSchemeDetailPO.setLowerLimit(lowerLimit); + } + String paymentProportion = importDataMap.getOrDefault("缂寸撼姣斾緥", "").toString(); + if (StringUtils.isNotBlank(paymentProportion)) { + targetSchemeDetailPO.setPaymentProportion(paymentProportion); + } + String fixedCost = importDataMap.getOrDefault("鍥哄畾璐圭敤", "").toString(); + if (StringUtils.isNotBlank(fixedCost)) { + targetSchemeDetailPO.setFixedCost(fixedCost); + } + String validNum = importDataMap.getOrDefault("鏈夋晥灏忔暟浣", "").toString(); + if (StringUtils.isNotBlank(validNum)) { + targetSchemeDetailPO.setValidNum(Integer.valueOf(validNum)); + } + String rententionRule = importDataMap.getOrDefault("杩涗綅瑙勫垯", "").toString(); + if (StringUtils.isNotBlank(rententionRule)) { + targetSchemeDetailPO.setRententionRule(Integer.valueOf(rententionRule)); + } + targetSchemeDetailPO.setUpdateTime(new Date()); + + updateSchemeDetails.add(targetSchemeDetailPO); + + } + //鏇存柊鏂规鏄庣粏 + if (updateSchemeDetails.size() > 0) { + encryptUtil.encryptList(updateSchemeDetails, InsuranceSchemeDetailPO.class); + updateSchemeDetails.forEach(getInsuranceSchemeDetailMapper()::updateAll); + } + + + } catch (Exception e) { + log.error("绂忓埄鏂规鏇存柊寮傚父", e); + requestInfo.getRequestManager().setMessage(e.getMessage()); + return FAILURE_AND_CONTINUE; + } + return SUCCESS; + } + + + class SalaryField { + + private String processField; + + private String salaryName; + + private String value; + + public String getProcessField() { + return processField; + } + + public void setProcessField(String processField) { + this.processField = processField; + } + + public String getSalaryName() { + return salaryName; + } + + public void setSalaryName(String salaryName) { + this.salaryName = salaryName; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public SalaryField(String processField, String salaryName, String value) { + this.processField = processField; + this.salaryName = salaryName; + this.value = value; + } + } +} diff --git a/src/com/engine/salary/biz/SIAccountBiz.java b/src/com/engine/salary/biz/SIAccountBiz.java index 69b12aa04..a07390040 100644 --- a/src/com/engine/salary/biz/SIAccountBiz.java +++ b/src/com/engine/salary/biz/SIAccountBiz.java @@ -163,7 +163,11 @@ public class SIAccountBiz extends Service { OrderRuleVO orderRule = getSalarySysConfService(user).orderRule(); queryParam.setOrderRule(orderRule); + //绯荤粺浜哄憳绂忓埄鍙拌处鏄庣粏 List list = getInsuranceAccountDetailMapper().list(queryParam); + //闈炵郴缁熷悇浜哄憳鍙拌处鏄庣粏 + List extList = getInsuranceAccountDetailMapper().extList(queryParam); + list.addAll(extList); PageInfo pageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), list, InsuranceAccountDetailPO.class); @@ -610,6 +614,14 @@ public class SIAccountBiz extends Service { } }); } + //閬垮厤绂忓埄妗f鐨勬柟妗堟湭璁剧疆鍩烘暟锛屽鑷存牳绠楁椂閬楁紡杩欎簺绂忓埄椤圭殑鏍哥畻锛岄亶鍘嗕笅鏂规鐩稿叧绂忓埄椤癸紝骞跺皢閬楁紡鐨勭鍒╅」id娣诲姞 + if(otherPerson.size() > 0) { + otherPerson.forEach((id, object) -> { + if (!needArchivesPerson.contains(id)) { + needArchivesPerson.add(id); + } + }); + } //鍒ゆ柇鏍哥畻鍛ㄦ湡銆佹牳绠楁湀銆佺鍒╄捣濮嬬即绾虫湀鐨勫叧绯 checkCycleSettingWithStartMonth(otherPerson, billMonth, otherPO.getOtherStartTime()); @@ -672,6 +684,14 @@ public class SIAccountBiz extends Service { } }); } + //閬垮厤绂忓埄妗f鐨勬柟妗堟湭璁剧疆鍩烘暟锛屽鑷存牳绠楁椂閬楁紡杩欎簺绂忓埄椤圭殑鏍哥畻锛岄亶鍘嗕笅鏂规鐩稿叧绂忓埄椤癸紝骞跺皢閬楁紡鐨勭鍒╅」id娣诲姞 + if(otherCom.size() > 0) { + otherCom.forEach((id, object) -> { + if (!needArchivesCom.contains(id)) { + needArchivesCom.add(id); + } + }); + } //鍒ゆ柇鏍哥畻鍛ㄦ湡銆佹牳绠楁湀銆佺鍒╄捣濮嬬即绾虫湀鐨勫叧绯 checkCycleSettingWithStartMonth(otherCom, billMonth, otherPO.getOtherStartTime()); @@ -752,6 +772,14 @@ public class SIAccountBiz extends Service { } }); } + //閬垮厤绂忓埄妗f鐨勬柟妗堟湭璁剧疆鍩烘暟锛屽鑷存牳绠楁椂閬楁紡杩欎簺绂忓埄椤圭殑鏍哥畻锛岄亶鍘嗕笅鏂规鐩稿叧绂忓埄椤癸紝骞跺皢閬楁紡鐨勭鍒╅」id娣诲姞 + if(fundperson.size() > 0) { + fundperson.forEach((id, object) -> { + if (!needArchivesPerson.contains(id)) { + needArchivesPerson.add(id); + } + }); + } //鍒ゆ柇鏍哥畻鍛ㄦ湡銆佹牳绠楁湀銆佺鍒╄捣濮嬬即绾虫湀鐨勫叧绯 checkCycleSettingWithStartMonth(fundperson, billMonth, fundPO.getFundStartTime()); @@ -813,6 +841,14 @@ public class SIAccountBiz extends Service { } }); } + //閬垮厤绂忓埄妗f鐨勬柟妗堟湭璁剧疆鍩烘暟锛屽鑷存牳绠楁椂閬楁紡杩欎簺绂忓埄椤圭殑鏍哥畻锛岄亶鍘嗕笅鏂规鐩稿叧绂忓埄椤癸紝骞跺皢閬楁紡鐨勭鍒╅」id娣诲姞 + if(fundCom.size() > 0) { + fundCom.forEach((id, object) -> { + if (!needArchivesCom.contains(id)) { + needArchivesCom.add(id); + } + }); + } //鍒ゆ柇鏍哥畻鍛ㄦ湡銆佹牳绠楁湀銆佺鍒╄捣濮嬬即绾虫湀鐨勫叧绯 checkCycleSettingWithStartMonth(fundCom, billMonth, fundPO.getFundStartTime()); @@ -896,6 +932,14 @@ public class SIAccountBiz extends Service { } }); } + //閬垮厤绂忓埄妗f鐨勬柟妗堟湭璁剧疆鍩烘暟锛屽鑷存牳绠楁椂閬楁紡杩欎簺绂忓埄椤圭殑鏍哥畻锛岄亶鍘嗕笅鏂规鐩稿叧绂忓埄椤癸紝骞跺皢閬楁紡鐨勭鍒╅」id娣诲姞 + if(schemeperson.size() > 0) { + schemeperson.forEach((id, object) -> { + if (!needArchivesPerson.contains(id)) { + needArchivesPerson.add(id); + } + }); + } //鍒ゆ柇鏍哥畻鍛ㄦ湡銆佹牳绠楁湀銆佺鍒╄捣濮嬬即绾虫湀鐨勫叧绯 checkCycleSettingWithStartMonth(schemeperson, billMonth, socialPO.getSocialStartTime()); @@ -957,6 +1001,14 @@ public class SIAccountBiz extends Service { } }); } + //閬垮厤绂忓埄妗f鐨勬柟妗堟湭璁剧疆鍩烘暟锛屽鑷存牳绠楁椂閬楁紡杩欎簺绂忓埄椤圭殑鏍哥畻锛岄亶鍘嗕笅鏂规鐩稿叧绂忓埄椤癸紝骞跺皢閬楁紡鐨勭鍒╅」id娣诲姞 + if(schemeCom.size() > 0) { + schemeCom.forEach((id, object) -> { + if (!needArchivesCom.contains(id)) { + needArchivesCom.add(id); + } + }); + } //鍒ゆ柇鏍哥畻鍛ㄦ湡銆佹牳绠楁湀銆佺鍒╄捣濮嬬即绾虫湀鐨勫叧绯 checkCycleSettingWithStartMonth(schemeCom, billMonth, socialPO.getSocialStartTime()); diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index a3d3f10ab..c03ef2a39 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -29,6 +29,7 @@ import com.engine.salary.entity.sischeme.po.InsuranceSchemeDetailPO; import com.engine.salary.entity.sischeme.po.InsuranceSchemePO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.UserStatusEnum; +import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; import com.engine.salary.enums.siaccount.EmployeeStatusEnum; import com.engine.salary.enums.sicategory.*; import com.engine.salary.exception.SalaryRunTimeException; @@ -691,6 +692,13 @@ public class SIArchivesBiz { } encryptUtil.encrypt(updateOtherInfo, InsuranceArchivesOtherSchemePO.class); otherSchemeMapper.updateById(updateOtherInfo); + //鏇存柊base_info琛ㄧ姸鎬 + InsuranceArchivesBaseInfoPO baseInfoPO = getInsuranceBaseInfoMapper().getOneByEmployeeIdAndPayOrg(param.getPaymentOrganization(), param.getEmployeeId()); + if(baseInfoPO != null && baseInfoPO.getEmployeeType() != null && baseInfoPO.getEmployeeType().equals(DataCollectionEmployeeTypeEnum.EXT_EMPLOYEE.getValue())) { + //瀵逛簬闈炵郴缁熶汉鍛橈紝缂栬緫鍚庣姸鎬佸垏鎹负姝e湪缂寸撼 + baseInfoPO.setRunStatus(EmployeeStatusEnum.PAYING.getValue()); + getInsuranceBaseInfoMapper().updateById(baseInfoPO); + } sqlSession.commit(); } else { otherSchemeMapper.deleteByEmployeeIdAndPayOrg(InsuranceArchivesOtherSchemePO.builder() @@ -729,6 +737,10 @@ public class SIArchivesBiz { .paymentOrganization(param.getPaymentOrganization()) .build()); baseInfoPO.setOtherArchivesId(otherInfos.get(0).getId()); + //瀵逛簬闈炵郴缁熶汉鍛橈紝缂栬緫鍚庣姸鎬佸垏鎹负姝e湪缂寸撼 + if (baseInfoPO.getEmployeeType() != null && baseInfoPO.getEmployeeType().equals(DataCollectionEmployeeTypeEnum.EXT_EMPLOYEE.getValue())) { + baseInfoPO.setRunStatus(EmployeeStatusEnum.PAYING.getValue()); + } getInsuranceBaseInfoMapper().updateById(baseInfoPO); } else { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "妗f涓嶅瓨鍦紒")); @@ -790,7 +802,13 @@ public class SIArchivesBiz { } encryptUtil.encrypt(updateFundInfo, InsuranceArchivesFundSchemePO.class); fundSchemeMapper.updateById(updateFundInfo); - + //鏇存柊base_info琛ㄧ姸鎬 + InsuranceArchivesBaseInfoPO baseInfoPO = getInsuranceBaseInfoMapper().getOneByEmployeeIdAndPayOrg(param.getPaymentOrganization(), param.getEmployeeId()); + if(baseInfoPO != null && baseInfoPO.getEmployeeType() != null && baseInfoPO.getEmployeeType().equals(DataCollectionEmployeeTypeEnum.EXT_EMPLOYEE.getValue())) { + //瀵逛簬闈炵郴缁熶汉鍛橈紝缂栬緫鍚庣姸鎬佸垏鎹负姝e湪缂寸撼 + baseInfoPO.setRunStatus(EmployeeStatusEnum.PAYING.getValue()); + getInsuranceBaseInfoMapper().updateById(baseInfoPO); + } sqlSession.commit(); } else { fundSchemeMapper.deleteByEmployeeIdAndPayOrg(InsuranceArchivesFundSchemePO.builder() @@ -831,6 +849,10 @@ public class SIArchivesBiz { .paymentOrganization(param.getPaymentOrganization()) .build()); baseInfoPO.setFundArchivesId(fundInfos.get(0).getId()); + //瀵逛簬闈炵郴缁熶汉鍛橈紝缂栬緫鍚庣姸鎬佸垏鎹负姝e湪缂寸撼 + if (baseInfoPO.getEmployeeType() != null && baseInfoPO.getEmployeeType().equals(DataCollectionEmployeeTypeEnum.EXT_EMPLOYEE.getValue())) { + baseInfoPO.setRunStatus(EmployeeStatusEnum.PAYING.getValue()); + } getInsuranceBaseInfoMapper().updateById(baseInfoPO); } else { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "妗f涓嶅瓨鍦紒")); @@ -899,7 +921,13 @@ public class SIArchivesBiz { } encryptUtil.encrypt(updateSocialInfo, InsuranceArchivesSocialSchemePO.class); socialSchemeMapper.updateById(updateSocialInfo); - + //鏇存柊base_info琛ㄧ姸鎬 + InsuranceArchivesBaseInfoPO baseInfoPO = getInsuranceBaseInfoMapper().getOneByEmployeeIdAndPayOrg(param.getPaymentOrganization(), param.getEmployeeId()); + if(baseInfoPO != null && baseInfoPO.getEmployeeType() != null && baseInfoPO.getEmployeeType().equals(DataCollectionEmployeeTypeEnum.EXT_EMPLOYEE.getValue())) { + //瀵逛簬闈炵郴缁熶汉鍛橈紝缂栬緫鍚庣姸鎬佸垏鎹负姝e湪缂寸撼 + baseInfoPO.setRunStatus(EmployeeStatusEnum.PAYING.getValue()); + getInsuranceBaseInfoMapper().updateById(baseInfoPO); + } sqlSession.commit(); } else { socialSchemeMapper.deleteByEmployeeIdAndPayOrg(InsuranceArchivesSocialSchemePO.builder() @@ -940,6 +968,10 @@ public class SIArchivesBiz { .paymentOrganization(param.getPaymentOrganization()) .build()); baseInfoPO.setSocialArchivesId(socialInfos.get(0).getId()); + //瀵逛簬闈炵郴缁熶汉鍛橈紝缂栬緫鍚庣姸鎬佸垏鎹负姝e湪缂寸撼 + if (baseInfoPO.getEmployeeType() != null && baseInfoPO.getEmployeeType().equals(DataCollectionEmployeeTypeEnum.EXT_EMPLOYEE.getValue())) { + baseInfoPO.setRunStatus(EmployeeStatusEnum.PAYING.getValue()); + } getInsuranceBaseInfoMapper().updateById(baseInfoPO); } else { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "妗f涓嶅瓨鍦紒")); diff --git a/src/com/engine/salary/biz/SalarySobItemBiz.java b/src/com/engine/salary/biz/SalarySobItemBiz.java index f5537d7d5..66ac63d0c 100644 --- a/src/com/engine/salary/biz/SalarySobItemBiz.java +++ b/src/com/engine/salary/biz/SalarySobItemBiz.java @@ -10,6 +10,7 @@ import weaver.conn.mybatis.MyBatisFactory; import java.util.Collection; import java.util.List; +import java.util.Objects; public class SalarySobItemBiz { @@ -154,4 +155,18 @@ public class SalarySobItemBiz { sqlSession.close(); } } + + public void update(SalarySobItemPO salarySobItemPO) { + if (Objects.isNull(salarySobItemPO)) { + return; + } + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + SalarySobItemMapper mapper = sqlSession.getMapper(SalarySobItemMapper.class); + mapper.updateIgnoreNull(salarySobItemPO); + sqlSession.commit(); + } finally { + sqlSession.close(); + } + } } diff --git a/src/com/engine/salary/component/WeaTableColumnGroup.java b/src/com/engine/salary/component/WeaTableColumnGroup.java index 5edef0ba2..dac9a3569 100644 --- a/src/com/engine/salary/component/WeaTableColumnGroup.java +++ b/src/com/engine/salary/component/WeaTableColumnGroup.java @@ -13,6 +13,11 @@ public class WeaTableColumnGroup extends WeaTableColumn { */ private String lockStatus; + /** + * 淇濈暀灏忔暟浣嶆暟 + */ + private Integer pattern; + private List children; public WeaTableColumnGroup() { @@ -20,22 +25,32 @@ public class WeaTableColumnGroup extends WeaTableColumn { public WeaTableColumnGroup(String width, String text, String column) { super(width, text, column); + this.pattern = 0; } public WeaTableColumnGroup(String width, String text, String column, String lockStatus) { super(width, text, column); this.lockStatus = lockStatus; + this.pattern = 0; + } + + public WeaTableColumnGroup(String width, String text, String column, String lockStatus, Integer pattern) { + super(width, text, column); + this.lockStatus = lockStatus; + this.pattern = pattern; } public WeaTableColumnGroup(String width, String text, String column, List children) { super(width, text, column); this.children = children; + this.pattern = 0; } public WeaTableColumnGroup(String width, String text, String column, List children, String lockStatus) { super(width, text, column); this.children = children; this.lockStatus = lockStatus; + this.pattern = 0; } } diff --git a/src/com/engine/salary/entity/salaryBill/po/SalarySendInfoPO.java b/src/com/engine/salary/entity/salaryBill/po/SalarySendInfoPO.java index 3a0822673..48f8833b1 100644 --- a/src/com/engine/salary/entity/salaryBill/po/SalarySendInfoPO.java +++ b/src/com/engine/salary/entity/salaryBill/po/SalarySendInfoPO.java @@ -1,6 +1,7 @@ package com.engine.salary.entity.salaryBill.po; import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; +import com.engine.salary.enums.salarybill.BillConfimStatusEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -66,7 +67,8 @@ public class SalarySendInfoPO { private Integer billReadStatus; /** - * 纭鐘舵 0锛氭湭纭銆1锛氬凡纭 + * 纭鐘舵 0锛氭湭纭銆1锛氬凡纭銆2锛氬凡鍙嶉 + * @see BillConfimStatusEnum */ private Integer billConfirmStatus; diff --git a/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java b/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java index 6ed15c5a7..74835472d 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java @@ -207,7 +207,9 @@ public class CalculateFormulaVarBO { Map salaryAcctResultPOMap = SalaryEntityUtil.convert2Map(salaryAcctResultPOS, SalaryAcctResultPO::getSalaryItemId); formulaVarValues.addAll(salaryAcctCalculateBO.getIssuedFieldIds().stream() .map(fieldId -> { - String originResultValue = salaryAcctResultPOMap.get(salaryCodeItemMap.get(fieldId)).getOriginResultValue(); + String originResultValue = salaryAcctResultPOMap.getOrDefault( + salaryCodeItemMap.get(fieldId),SalaryAcctResultPO.builder().originResultValue("").build()) + .getOriginResultValue(); String fieldId2 = SalaryFormulaReferenceEnum.ISSUED.getValue() + SalaryFormulaFieldConstant.FIELD_ID_SEPARATOR + fieldId; diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java index 73558cd0b..57b6e1927 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java @@ -140,9 +140,9 @@ public class SalaryAcctResultBO { List childrenColumns = Lists.newArrayList(); for (SalarySobItemDTO salarySobItemDTO : salarySobItemGroupDTO.getItems()) { if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) { - childrenColumns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue())); + childrenColumns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern())); } else { - childrenColumns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue())); + childrenColumns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern())); } } WeaTableColumnGroup weaTableColumnWapper = new WeaTableColumnGroup("150", salarySobItemGroupDTO.getName(), String.valueOf(salarySobItemGroupDTO.getId()), childrenColumns); @@ -151,18 +151,18 @@ public class SalaryAcctResultBO { // 娌℃湁鍒嗙被鐨勮柂璧勯」鐩 for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getItems()) { if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) { - columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue())); + columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern())); } else { - columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue())); + columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern())); } } // 鍥炵畻鐨勮柂璧勯」鐩 for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getBackCalcItems()) { if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) { - columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue())); + columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern())); } else { - columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue())); + columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern())); } } @@ -493,7 +493,7 @@ public class SalaryAcctResultBO { Map resultValueMap, Map formulaContentMap) { - SalaryValueTypeEnum salaryValueTypeEnum = SalaryValueTypeEnum.parseByValue(Optional.ofNullable(salaryItemPO).map(SalaryItemPO::getValueType).orElse(0)); + SalaryValueTypeEnum salaryValueTypeEnum = SalaryValueTypeEnum.parseByValue(Optional.ofNullable(salarySobItemPO).map(SalarySobItemPO::getValueType).orElse(0)); String itemFormulaContent; if(Objects.equals(salaryValueTypeEnum.getValue(),SalaryValueTypeEnum.FORMULA.getValue())){ itemFormulaContent = Optional.ofNullable(formulaContentMap.get(salarySobItemPO.getSalaryItemId().toString())).map(SalaryAcctResultListColumnDTO::getFormulaContent).orElse(""); diff --git a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java index d70e63448..5a72e9641 100644 --- a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java +++ b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java @@ -11,11 +11,13 @@ import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportHandlePar import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO; import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; +import com.engine.salary.entity.salarysob.param.SalarySobRangeSaveParam; import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO; import com.engine.salary.entity.taxagent.param.TaxAgentManageRangeSaveParam; import com.engine.salary.entity.taxagent.param.TaxAgentRangeSaveParam; import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.salaryarchive.*; +import com.engine.salary.enums.salarysob.SalaryEmployeeStatusEnum; import com.engine.salary.enums.salarysob.TargetTypeEnum; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryI18nUtil; @@ -351,12 +353,12 @@ public class SalaryArchiveExcelBO extends Service { String validType = importHandleParam.getEmpValidType(); List emps = new ArrayList<>(); //澶栭儴浜哄憳 - if(importHandleParam.isExtEmp()){ + if (importHandleParam.isExtEmp()) { emps = importHandleParam.getEmployees().stream().filter(e -> (StringUtils.isBlank(userName) || Objects.equals(e.getUsername(), userName)) && (StringUtils.isBlank(deparmentName) || Objects.equals(e.getDepartmentName(), deparmentName)) && (StringUtils.isBlank(mobileName) || Objects.equals(e.getMobile(), mobileName))).collect(Collectors.toList()); - }else { + } else { if ("0".equals(validType)) { //鈥0鈥濅唬琛ㄥ鍚+閮ㄩ棬+鎵嬫満鍙风殑鍖归厤鍘熷垯锛屸1鈥濅唬琛ㄥ伐鍙蜂负鍞竴鍖归厤鍘熷垯 emps = importHandleParam.getEmployees().stream().filter(e -> @@ -651,6 +653,30 @@ public class SalaryArchiveExcelBO extends Service { effectiveTime, finalSalaryArchive, adjustReason, importHandleParam, key.toString(), cellVal, map); } } + + //璐﹀鍏宠仈 + Long finalEmployeeId = employeeId; + String sobIds = Optional.ofNullable(map.get("钖祫璐﹀ids")).orElse("").toString(); + List salarySobRangeSaveParams = new ArrayList<>(); + if (StringUtils.isNotBlank(sobIds)) { + salarySobRangeSaveParams = Arrays.stream(sobIds.split(",")).map(Long::valueOf).map(sobId -> { + + SalarySobRangeSaveParam.SalarySobRangeTargetParam salarySobRangeTargetParam = new SalarySobRangeSaveParam.SalarySobRangeTargetParam(); + salarySobRangeTargetParam.setTargetId(finalEmployeeId); + salarySobRangeTargetParam.setTargetType(TargetTypeEnum.EMPLOYEE); + salarySobRangeTargetParam.setEmployeeStatus(SalaryEmployeeStatusEnum.values()); + + SalarySobRangeSaveParam sobRangeSaveParam = new SalarySobRangeSaveParam(); + sobRangeSaveParam.setSalarySobId(sobId); + sobRangeSaveParam.setTargetParams(Collections.singletonList(salarySobRangeTargetParam)); + sobRangeSaveParam.setIncludeType(1); + sobRangeSaveParam.setEmployeeStatus(SalaryEmployeeStatusEnum.values()); + + return sobRangeSaveParam; + }).collect(Collectors.toList()); + } + + // 濡傛灉褰撳墠鏍¢獙琛屾病闂,淇敼璧峰鍙戣柂鏃ユ湡鍜屾渶缁堝彂钖棩鏈熺瓑 if (!isError) { Optional optionalUpdate = importHandleParam.getSalaryArchiveUpdates().stream().filter(f -> f.getId().equals(finalSalaryArchive.getId())).findFirst(); @@ -666,6 +692,8 @@ public class SalaryArchiveExcelBO extends Service { saves.add(finalSalaryArchive); importHandleParam.setSalaryArchiveSaves(saves); } + //淇濆瓨璐﹀鍏宠仈 + importHandleParam.setSalaryArchiveSobSaves(salarySobRangeSaveParams); } else { // 灏嗗墠闈㈡坊鍔犲ソ鐨勬暟鎹粰杩囨护鎺 importHandleParam.setSalaryArchiveSaves(importHandleParam.getSalaryArchiveSaves().stream().filter(f -> !finalSalaryArchive.getId().equals(f.getId())).collect(Collectors.toList())); diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportHandleParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportHandleParam.java index 17b552ca6..a9bd77eb5 100644 --- a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportHandleParam.java +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportHandleParam.java @@ -4,6 +4,7 @@ import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO; import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; +import com.engine.salary.entity.salarysob.param.SalarySobRangeSaveParam; import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO; import com.engine.salary.entity.taxagent.param.TaxAgentRangeSaveParam; import com.engine.salary.enums.salaryarchive.SalaryArchiveImportTypeEnum; @@ -170,5 +171,5 @@ public class SalaryArchiveImportHandleParam { /** * 钖祫妗f-璐﹀鍏宠仈 */ -// List salaryArchiveSobSaves; + List salaryArchiveSobSaves; } diff --git a/src/com/engine/salary/entity/salaryitem/param/SyncSalaryItemParam.java b/src/com/engine/salary/entity/salaryitem/param/SyncSalaryItemParam.java new file mode 100644 index 000000000..aadc5f5aa --- /dev/null +++ b/src/com/engine/salary/entity/salaryitem/param/SyncSalaryItemParam.java @@ -0,0 +1,30 @@ +package com.engine.salary.entity.salaryitem.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName SyncSalaryItemParam + * @date 2023/08/30 17:51 + * @description 鍚屾钖祫椤圭洰鍒拌处濂椾腑鍙傛暟 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SyncSalaryItemParam { + + // 钖祫椤圭洰id + @DataCheck(require = true, message = "钖祫椤圭洰id涓嶈兘涓虹┖") + private Long salaryItemId; + + // 钖祫璐﹀id + @DataCheck(require = true, message = "钖祫璐﹀涓嶈兘涓虹┖") + private List salarySobIds; +} diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobDuplicateBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobDuplicateBO.java index f22d002a9..28f6b8b69 100644 --- a/src/com/engine/salary/entity/salarysob/bo/SalarySobDuplicateBO.java +++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobDuplicateBO.java @@ -191,6 +191,9 @@ public class SalarySobDuplicateBO { .description(salarySobItem.getDescription()) .canDelete(salarySobItem.getCanDelete()) .itemHide(salarySobItem.getItemHide()) + .roundingMode(salarySobItem.getRoundingMode()) + .pattern(salarySobItem.getPattern()) + .valueType(salarySobItem.getValueType()) .creator(employeeId) .createTime(now) .updateTime(now) diff --git a/src/com/engine/salary/entity/siaccount/dto/InsuranceAcctDetailImportFieldDTO.java b/src/com/engine/salary/entity/siaccount/dto/InsuranceAcctDetailImportFieldDTO.java index b7e99b168..1f3cc912c 100644 --- a/src/com/engine/salary/entity/siaccount/dto/InsuranceAcctDetailImportFieldDTO.java +++ b/src/com/engine/salary/entity/siaccount/dto/InsuranceAcctDetailImportFieldDTO.java @@ -16,7 +16,7 @@ import lombok.NoArgsConstructor; @AllArgsConstructor public class InsuranceAcctDetailImportFieldDTO { //瀛楁id -// private String fieldId; + private String fieldId; //钖祫椤圭洰鍚嶇О private String salaryItemName; diff --git a/src/com/engine/salary/entity/siarchives/param/SIArchiveImportParam.java b/src/com/engine/salary/entity/siarchives/param/SIArchiveImportParam.java new file mode 100644 index 000000000..24e53e232 --- /dev/null +++ b/src/com/engine/salary/entity/siarchives/param/SIArchiveImportParam.java @@ -0,0 +1,56 @@ +package com.engine.salary.entity.siarchives.param; + +import com.engine.salary.entity.taxagent.param.TaxAgentRangeSaveParam; +import com.engine.salary.enums.siaccount.EmployeeStatusEnum; +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; +import java.util.Map; + +/** + * @Author: sy + * @Description: 绀句繚绂忓埄妗f瀵煎叆澶勭悊鍙傛暟 + * @Date: 2022/11/10 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SIArchiveImportParam { + + /** + * 涓婁紶鏂囦欢id + */ + String imageId; + + /** + * 瀵煎叆绫诲瀷 + * + * @see EmployeeStatusEnum + */ + + String runStatus; + + /** + * 瀵煎叆鏁版嵁 + * + */ + List> importDatas; + + private boolean addData; + + /** + * 寰呯敓鎴愮殑浜哄憳鑼冨洿 + */ + List taxAgentRanges; + /** + * 鏄惁鏄祦绋 + */ + boolean isProcess; + + +} diff --git a/src/com/engine/salary/entity/sischeme/param/InsuranceSchemeParam.java b/src/com/engine/salary/entity/sischeme/param/InsuranceSchemeParam.java index aefe8063d..cdc4b29f4 100644 --- a/src/com/engine/salary/entity/sischeme/param/InsuranceSchemeParam.java +++ b/src/com/engine/salary/entity/sischeme/param/InsuranceSchemeParam.java @@ -1,6 +1,7 @@ package com.engine.salary.entity.sischeme.param; import com.engine.salary.common.BaseQueryParam; +import com.engine.salary.enums.sicategory.PaymentTypeEnum; import com.engine.salary.enums.sicategory.WelfareTypeEnum; import lombok.AllArgsConstructor; import lombok.Builder; @@ -24,5 +25,22 @@ public class InsuranceSchemeParam extends BaseQueryParam { private WelfareTypeEnum welfareTypeEnum; + /** + * 缂寸撼绫诲瀷 + */ + private PaymentTypeEnum paymentTypeEnum; + /** + * 鏂规鍚嶇О + */ + private String schemeName; + + /** + * 缂寸撼绫诲瀷 + */ + private Integer paymentType; + /** + * 绂忓埄绫诲瀷 + */ + private Integer welfareType; } diff --git a/src/com/engine/salary/entity/sischeme/param/SISchemaImportParam.java b/src/com/engine/salary/entity/sischeme/param/SISchemaImportParam.java index 0581b2c5f..7e49621c2 100644 --- a/src/com/engine/salary/entity/sischeme/param/SISchemaImportParam.java +++ b/src/com/engine/salary/entity/sischeme/param/SISchemaImportParam.java @@ -18,6 +18,13 @@ public class SISchemaImportParam { @DataCheck(require = true,message = "imageId涓虹┖") String imageId; - //绂忓埄鎵ц鐘舵 + /** + * 绂忓埄鎵ц鐘舵 + */ String runStatus; + + /** + * 鏄惁鏄閮ㄤ汉鍛 + */ + boolean isExtEmp; } diff --git a/src/com/engine/salary/enums/salarysob/SalaryEmployeeStatusEnum.java b/src/com/engine/salary/enums/salarysob/SalaryEmployeeStatusEnum.java index e1b89f1fe..02d9cb735 100644 --- a/src/com/engine/salary/enums/salarysob/SalaryEmployeeStatusEnum.java +++ b/src/com/engine/salary/enums/salarysob/SalaryEmployeeStatusEnum.java @@ -19,13 +19,6 @@ import java.util.Objects; **/ public enum SalaryEmployeeStatusEnum implements BaseEnum { -// ALL(10, "鍏ㄩ儴", 85155), -// //鍦ㄨ亴,瀵瑰簲浜哄姏璧勬簮琛ㄤ腑鐘舵侊紝璇曠敤0锛屾寮1锛屼复鏃2锛岃瘯鐢ㄥ欢鏈3 -// NORMAL(1, "璇曠敤锛屾寮忥紝涓存椂锛屼复鏃跺欢鏈", 100120), -// //绂昏亴鑰,瀵瑰簲浜哄姏璧勬簮琛ㄤ腑鐘舵侊紝瑙i泧4锛岀鑱5锛岄浼6 -// UNAVAILABLE(2, "瑙i泧锛岀鑱岋紝閫浼", 85902), - - TRIAL(0, "璇曠敤", 100121), FORMAL(1, "姝e紡", 100122), diff --git a/src/com/engine/salary/formlua/func/logic/LogicServiceImpl.java b/src/com/engine/salary/formlua/func/logic/LogicServiceImpl.java index 0d0cb89a6..3cd94f8de 100644 --- a/src/com/engine/salary/formlua/func/logic/LogicServiceImpl.java +++ b/src/com/engine/salary/formlua/func/logic/LogicServiceImpl.java @@ -12,6 +12,7 @@ import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Objects; /** * @className锛 @@ -19,477 +20,478 @@ import java.util.List; * @Author锛 * @date锛 */ -public class LogicServiceImpl implements LogicService { - protected final Logger logger = LoggerFactory.getLogger(this.getClass()); - @Override - public DataType not(Object... objects) { - DataType resultdataType=new DataType(); - resultdataType.setDataType(DataType.BOOL); - Class[] typeObjects=new Class[]{boolean.class}; - IgnoreParamFilter.commonFilter("NOT",1,1,typeObjects,objects); - Object object=objects[0]; - if(object == null){ - resultdataType.setContent(false); - return resultdataType; - } - Boolean cnd; - if(object instanceof DataType){ - DataType dataType=(DataType)object; - cnd=dataType.getContent()!=null?((Boolean) dataType.getContent()):false; - }else{ - cnd=(boolean)object; - } +public class LogicServiceImpl implements LogicService { + protected final Logger logger = LoggerFactory.getLogger(this.getClass()); - resultdataType.setContent(!cnd); - return resultdataType; - } + @Override + public DataType not(Object... objects) { + DataType resultdataType = new DataType(); + resultdataType.setDataType(DataType.BOOL); + Class[] typeObjects = new Class[]{boolean.class}; + IgnoreParamFilter.commonFilter("NOT", 1, 1, typeObjects, objects); + Object object = objects[0]; + if (object == null) { + resultdataType.setContent(false); + return resultdataType; + } + Boolean cnd; + if (object instanceof DataType) { + DataType dataType = (DataType) object; + cnd = dataType.getContent() != null ? ((Boolean) dataType.getContent()) : false; + } else { + cnd = (boolean) object; + } - @Override - public DataType isEmpty(Object... objs) { - int number=IgnoreParamFilter.getSetFuncNumber(FuncNames.ISEMPTY.toString()); - if(objs.length!=1){ - throw new RuntimeException("ISEMPTY鍑芥暟鍙厑璁镐竴涓弬鏁"); - } - boolean result=false; - if(null==objs||objs.length==0){ - DataType dataType=new DataType(); - dataType.setDataType(DataType.BOOL); - dataType.setContent(true); - return dataType; - } - for(int i=0;i0){ - throw new RuntimeException("TRUE鍑芥暟涓嶈兘鏈夊弬鏁"); - } - DataType dataType=new DataType(); - dataType.setDataType(DataType.BOOL); - dataType.setContent(true); - return dataType; - } - @Override - public DataType isFalse(Object... objects){ - int number=IgnoreParamFilter.getSetFuncNumber(FuncNames.FALSE.toString()); - if(objects.length>0){ - JSONObject errorJson=ErrorUtil.buildError(FuncNames.FALSE.toString(),number,number,"FALSE鍑芥暟涓嶈兘鏈夊弬鏁"); - throw new RuntimeException(errorJson.getString("msg")); - } - DataType dataType=new DataType(); - dataType.setDataType(DataType.BOOL); - dataType.setContent(false); - return dataType; - } + @Override + public DataType isEmpty(Object... objs) { + int number = IgnoreParamFilter.getSetFuncNumber(FuncNames.ISEMPTY.toString()); + if (objs.length != 1) { + throw new RuntimeException("ISEMPTY鍑芥暟鍙厑璁镐竴涓弬鏁"); + } + boolean result = false; + if (null == objs || objs.length == 0) { + DataType dataType = new DataType(); + dataType.setDataType(DataType.BOOL); + dataType.setContent(true); + return dataType; + } + for (int i = 0; i < objs.length; i++) { + Object obj = objs[i]; + if (obj == null) { + DataType dataType = new DataType(); + dataType.setDataType(DataType.BOOL); + dataType.setContent(true); + return dataType; + } + if (obj instanceof DataType) { + DataType objDataType = (DataType) obj; + if (objDataType.getDataType().equalsIgnoreCase(DataType.NUMBER)) { + Object numberContent = objDataType.getContent(); + if (numberContent == null || numberContent.toString().equalsIgnoreCase("")) { + result = true; + break; + } + } + } + obj = ExcelParamUtil.getParamContent(obj, ""); + if (null == obj || null == ExcelParamUtil.getParamContent(obj, "") || ExcelParamUtil.getParamContent(obj, "").equals("")) { + result = true; + break; + } + } + DataType dataType = new DataType(); + dataType.setDataType(DataType.BOOL); + dataType.setContent(result); + return dataType; + } + + @Override + public DataType isTrue(Object... objects) { + int number = IgnoreParamFilter.getSetFuncNumber(FuncNames.TRUE.toString()); + if (objects.length > 0) { + throw new RuntimeException("TRUE鍑芥暟涓嶈兘鏈夊弬鏁"); + } + DataType dataType = new DataType(); + dataType.setDataType(DataType.BOOL); + dataType.setContent(true); + return dataType; + } + + @Override + public DataType isFalse(Object... objects) { + int number = IgnoreParamFilter.getSetFuncNumber(FuncNames.FALSE.toString()); + if (objects.length > 0) { + JSONObject errorJson = ErrorUtil.buildError(FuncNames.FALSE.toString(), number, number, "FALSE鍑芥暟涓嶈兘鏈夊弬鏁"); + throw new RuntimeException(errorJson.getString("msg")); + } + DataType dataType = new DataType(); + dataType.setDataType(DataType.BOOL); + dataType.setContent(false); + return dataType; + } - @Override - public DataType and(Object... objs) { - IgnoreParamFilter.filterLogicAndORFunc(objs,"AND"); - Object result; - int trueCount=0; - int falseCount=0; - DataType dataType=new DataType(); - for(int i=0;i0){ - dataType.getSubLogic().addAll(paramdataType.getSubLogic()); - } - }else{ - bool=(boolean)objs[i]; - } + @Override + public DataType and(Object... objs) { + IgnoreParamFilter.filterLogicAndORFunc(objs, "AND"); + Object result; + int trueCount = 0; + int falseCount = 0; + DataType dataType = new DataType(); + for (int i = 0; i < objs.length; i++) { + boolean bool; + if (objs[i] instanceof DataType) { + DataType paramdataType = (DataType) objs[i]; + bool = paramdataType.getContent() != null ? ((Boolean) paramdataType.getContent()) : false; + //濡傛灉鍙傛暟瀛樺湪搴曞眰Logic杩愮畻锛屾妸杩愮畻璁板綍鍔犲叆鍒板綋鍓岮ND鍑芥暟鐨勮繍绠楄褰曚腑 + if (paramdataType.getSubLogic() != null && paramdataType.getSubLogic().size() > 0) { + dataType.getSubLogic().addAll(paramdataType.getSubLogic()); + } + } else { + bool = (boolean) objs[i]; + } - if(bool){ - trueCount++; - }else{ - falseCount++; - } - } - if(trueCount==objs.length){ - result= true; - }else{ - result= false; - } + if (bool) { + trueCount++; + } else { + falseCount++; + } + } + if (trueCount == objs.length) { + result = true; + } else { + result = false; + } - dataType.setDataType(DataType.BOOL); - dataType.setContent(result); - dataType.getSubLogic().add("and"); + dataType.setDataType(DataType.BOOL); + dataType.setContent(result); + dataType.getSubLogic().add("and"); - LogicUtils.buildAndOrFilterParam("AND",dataType,objs); - return dataType; - } + LogicUtils.buildAndOrFilterParam("AND", dataType, objs); + return dataType; + } - @Override - public DataType or(Object... objs) { - IgnoreParamFilter.filterLogicAndORFunc(objs,"OR"); - Object result; - int trueCount=0; - int falseCount=0; - DataType dataType=new DataType(); - for(int i=0;i0){ - dataType.getSubLogic().addAll(paramdataType.getSubLogic()); - } - }else{ - bool=(boolean)objs[i]; - } - if(bool){ - trueCount++; - }else{ - falseCount++; - } - } - if(trueCount>0){ - result= true; - }else{ - result= false; - } + @Override + public DataType or(Object... objs) { + IgnoreParamFilter.filterLogicAndORFunc(objs, "OR"); + Object result; + int trueCount = 0; + int falseCount = 0; + DataType dataType = new DataType(); + for (int i = 0; i < objs.length; i++) { + boolean bool; + if (objs[i] instanceof DataType) { + DataType paramdataType = (DataType) objs[i]; + bool = paramdataType.getContent() != null ? ((Boolean) paramdataType.getContent()) : false; + //濡傛灉鍙傛暟瀛樺湪搴曞眰Logic杩愮畻锛屾妸杩愮畻璁板綍鍔犲叆鍒板綋鍓岮ND鍑芥暟鐨勮繍绠楄褰曚腑 + if (paramdataType.getSubLogic() != null && paramdataType.getSubLogic().size() > 0) { + dataType.getSubLogic().addAll(paramdataType.getSubLogic()); + } + } else { + bool = (boolean) objs[i]; + } + if (bool) { + trueCount++; + } else { + falseCount++; + } + } + if (trueCount > 0) { + result = true; + } else { + result = false; + } - dataType.setDataType(DataType.BOOL); - dataType.setContent(result); - dataType.getSubLogic().add("or"); - LogicUtils.buildAndOrFilterParam("OR",dataType,objs); - return dataType; - } + dataType.setDataType(DataType.BOOL); + dataType.setContent(result); + dataType.getSubLogic().add("or"); + LogicUtils.buildAndOrFilterParam("OR", dataType, objs); + return dataType; + } + @Override + public DataType likeFunc(Object... objects) { + IgnoreParamFilter.filterLikeFunc(objects); + Object object = objects[0]; + Object result = false; + String txtS = ""; + if (object instanceof DataType) { + txtS = ExcelParamUtil.getParamContent(object, "string").toString(); + } else { + txtS = object.toString(); + } + if (null == txtS || txtS.trim().equals("")) { + return new DataType(DataType.BOOL, false); + } + Object[] partamArray = (Object[]) objects[1]; + for (int i = 0; i < partamArray.length; i++) { + Object cnd = partamArray[i]; + String cndStr = ""; + if (cnd instanceof DataType) { + DataType cndJson = (DataType) cnd; + cndStr = ExcelParamUtil.getParamContent(cndJson, "string").toString(); + } else { + cndStr = cnd.toString(); + } - @Override - public DataType likeFunc(Object... objects) { - IgnoreParamFilter.filterLikeFunc(objects); - Object object=objects[0]; - Object result=false; - String txtS=""; - if(object instanceof DataType){ - txtS=ExcelParamUtil.getParamContent(object,"string").toString(); - }else { - txtS=object.toString(); - } - if(null==txtS||txtS.trim().equals("")){ - return new DataType(DataType.BOOL,false); - } - Object[] partamArray=(Object[])objects[1]; - for(int i=0;i=0?true:false){ - result=ridx>=0?true:false; - break; - } + int ridx = txtS.indexOf(cndStr); + if (ridx >= 0 ? true : false) { + result = ridx >= 0 ? true : false; + break; + } - } - DataType dataType=new DataType(DataType.BOOL,result); - LogicUtils.buildLikeFilterParam(dataType,objects); - return dataType; - } + } + DataType dataType = new DataType(DataType.BOOL, result); + LogicUtils.buildLikeFilterParam(dataType, objects); + return dataType; + } - @Override - public DataType ifs(Object... objects) { - int number=IgnoreParamFilter.getSetFuncNumber(FuncNames.IFS.toString()); - if(objects.length==0 || objects.length%2!=1 || objects.length<3){ - JSONObject errorJson=ErrorUtil.buildError(FuncNames.IFS.toString(),number,number,"IFS鍑芥暟鐨勫弬鏁板繀椤诲ぇ浜3涓笖涓哄崟鏁"); - throw new RuntimeException(errorJson.getString("msg")); - } - int testI; - for(testI=1;testI<=objects.length;testI++){ - if(testI%2>0 && testI!=objects.length){ - Object cndObj=objects[testI-1]; - if(!(cndObj instanceof Boolean) && !(cndObj instanceof DataType)){ - JSONObject errorJson= ErrorUtil.buildError(FuncNames.IFS.toString(),number,number,"IFS鍑芥暟鏉′欢蹇呴』涓虹湡鍋囧"); - throw new RuntimeException(errorJson.getString("msg")); - }else if(cndObj instanceof DataType){ - DataType boolDataType=(DataType)cndObj; - if(boolDataType.getContent()!=null && !(boolDataType.getContent() instanceof Boolean)){ - JSONObject errorJson=ErrorUtil.buildError(FuncNames.IFS.toString(),number,number,"IFS鍑芥暟鏉′欢蹇呴』涓虹湡鍋囧"); - throw new RuntimeException(errorJson.getString("msg")); - } - } - } - } + @Override + public DataType ifs(Object... objects) { + int number = IgnoreParamFilter.getSetFuncNumber(FuncNames.IFS.toString()); + if (objects.length == 0 || objects.length % 2 != 1 || objects.length < 3) { + JSONObject errorJson = ErrorUtil.buildError(FuncNames.IFS.toString(), number, number, "IFS鍑芥暟鐨勫弬鏁板繀椤诲ぇ浜3涓笖涓哄崟鏁"); + throw new RuntimeException(errorJson.getString("msg")); + } + int testI; + for (testI = 1; testI <= objects.length; testI++) { + if (testI % 2 > 0 && testI != objects.length) { + Object cndObj = objects[testI - 1]; + if (!(cndObj instanceof Boolean) && !(cndObj instanceof DataType)) { + JSONObject errorJson = ErrorUtil.buildError(FuncNames.IFS.toString(), number, number, "IFS鍑芥暟鏉′欢蹇呴』涓虹湡鍋囧"); + throw new RuntimeException(errorJson.getString("msg")); + } else if (cndObj instanceof DataType) { + DataType boolDataType = (DataType) cndObj; + if (boolDataType.getContent() != null && !(boolDataType.getContent() instanceof Boolean)) { + JSONObject errorJson = ErrorUtil.buildError(FuncNames.IFS.toString(), number, number, "IFS鍑芥暟鏉′欢蹇呴』涓虹湡鍋囧"); + throw new RuntimeException(errorJson.getString("msg")); + } + } + } + } - boolean paramCheck=checkParamType(objects); - if(!paramCheck){ - JSONObject errorJson=ErrorUtil.buildError(FuncNames.IFS.toString(),number,number,"IFS鍑芥暟澶氫釜鏉′欢鐨勮繑鍥炲煎繀椤讳竴鑷"); - throw new RuntimeException(errorJson.getString("msg")); - } + boolean paramCheck = checkParamType(objects); + if (!paramCheck) { + JSONObject errorJson = ErrorUtil.buildError(FuncNames.IFS.toString(), number, number, "IFS鍑芥暟澶氫釜鏉′欢鐨勮繑鍥炲煎繀椤讳竴鑷"); + throw new RuntimeException(errorJson.getString("msg")); + } - int i; - for(i=1;i<=objects.length;i++){ - if(i%2==0){ - Object cndObj=objects[i-2]; - if(cndObj instanceof Boolean){ - Boolean cnd=(Boolean)cndObj; - if(cnd){ - if(objects[i-1] instanceof DataType){ - return (DataType) objects[i-1]; - }else{ - return new DataType(DataType.returnType(ExcelParamUtil.getParamType(objects[i-1].getClass().getName())),objects[i-1]); - } + int i; + for (i = 1; i <= objects.length; i++) { + if (i % 2 == 0) { + Object cndObj = objects[i - 2]; + if (cndObj instanceof Boolean) { + Boolean cnd = (Boolean) cndObj; + if (cnd) { + if (objects[i - 1] instanceof DataType) { + return (DataType) objects[i - 1]; + } else { + return new DataType(DataType.returnType(ExcelParamUtil.getParamType(objects[i - 1].getClass().getName())), objects[i - 1]); + } // return new DataType(DataType.BOOL,objects[i-1]); - } - }else if(cndObj instanceof DataType){ - DataType boolData=(DataType)cndObj; - Boolean cnd=boolData.getContent()!=null?( (Boolean)boolData.getContent() ) : false; - if(cnd){ - if(objects[i-1] instanceof DataType){ - return (DataType) objects[i-1]; - }else { - return new DataType(DataType.returnType(ExcelParamUtil.getParamType(objects[i-1].getClass().getName())),objects[i-1]); - } + } + } else if (cndObj instanceof DataType) { + DataType boolData = (DataType) cndObj; + Boolean cnd = boolData.getContent() != null ? ((Boolean) boolData.getContent()) : false; + if (cnd) { + if (objects[i - 1] instanceof DataType) { + return (DataType) objects[i - 1]; + } else { + return new DataType(DataType.returnType(ExcelParamUtil.getParamType(objects[i - 1].getClass().getName())), objects[i - 1]); + } - } - } - } - } - //濡傛灉娌℃湁鏉′欢绗﹀悎锛岃繑鍥為粯璁ゅ硷紝鏈鍚庝竴涓弬鏁颁负榛樿鍊 - Object result=ExcelParamUtil.getParamContent(objects[objects.length-1],""); - if(result instanceof DataType){ - return (DataType)result; - }else{ - return new DataType(DataType.returnType(ExcelParamUtil.getParamType(result.getClass().getName())),result); - } + } + } + } + } + //濡傛灉娌℃湁鏉′欢绗﹀悎锛岃繑鍥為粯璁ゅ硷紝鏈鍚庝竴涓弬鏁颁负榛樿鍊 + Object result = ExcelParamUtil.getParamContent(objects[objects.length - 1], ""); + if (result instanceof DataType) { + return (DataType) result; + } else { + return new DataType(DataType.returnType(ExcelParamUtil.getParamType(result.getClass().getName())), result); + } - } + } - @Override - public DataType find(Object... objects) { + @Override + public DataType find(Object... objects) { - return new DataType(DataType.BOOL,finds(objects)); - } + return new DataType(DataType.BOOL, finds(objects)); + } - @Override - public DataType switchs(Object... objects) { - if(objects.length==0||objects==null){ - throw new RuntimeException("鍙傛暟涓嶈兘涓虹┖"); - } - if(objects.length<4){ - throw new RuntimeException("switch鍑芥暟鐨勫弬鏁伴暱搴﹀繀椤诲ぇ浜4涓"); - } - if(objects.length%2!=0){ - throw new RuntimeException("switch鍑芥暟鐨勫弬鏁伴暱搴﹀繀椤讳负鍙屾暟"); - } - Object source=objects[0]; - Object defaultValue=objects[objects.length-1]; - if(source instanceof DataType){ - source=ExcelParamUtil.getParamContent(source,""); - } - if(defaultValue instanceof DataType){ - defaultValue=ExcelParamUtil.getParamContent(defaultValue,""); - } - Object result=null; - for (int i=1;i=3 ){ - if(objects[objects.length-1] instanceof Integer){ - vali=Integer.parseInt(objects[objects.length-1].toString()); - if(vali!=1&&vali!=2){ - throw new RuntimeException("FIND鍑芥暟绗笁涓弬鏁板彧鍏佽1鍜2"); - } - }else{ - throw new RuntimeException("FIND鍑芥暟绗笁涓弬鏁板彧鍏佽1鍜2"); - } - } + //鑾峰彇鏌ユ壘绫诲瀷 1锛氱敤绗簩涓弬鏁板幓绗竴涓噷闈㈡壘銆2锛氱敤绗竴涓弬鏁板幓绗簩涓噷闈㈡壘 + String type = null; + int vali = 2; + if (objects.length >= 3) { + if (objects[objects.length - 1] instanceof Integer) { + vali = Integer.parseInt(objects[objects.length - 1].toString()); + if (vali != 1 && vali != 2) { + throw new RuntimeException("FIND鍑芥暟绗笁涓弬鏁板彧鍏佽1鍜2"); + } + } else { + throw new RuntimeException("FIND鍑芥暟绗笁涓弬鏁板彧鍏佽1鍜2"); + } + } - //灏嗗弬鏁拌浆鎹㈡垚List锛岃鍒ゆ柇鍙傛暟鏄暟缁勮繕鏄崟涓璞 - List objs1=null; - List objs2=null; - if(objects[0] instanceof Object[]){ - Object[] transObj=(Object[])objects[0]; - objs1=Arrays.asList(transObj); - }else{ - objs1=Arrays.asList(objects[0]); - } - if(objects[1] instanceof Object[]){ - Object[] transObj=(Object[])objects[1]; - objs2=Arrays.asList(transObj); - }else{ - objs2=Arrays.asList(objects[1]); - } + //灏嗗弬鏁拌浆鎹㈡垚List锛岃鍒ゆ柇鍙傛暟鏄暟缁勮繕鏄崟涓璞 + List objs1 = null; + List objs2 = null; + if (objects[0] instanceof Object[]) { + Object[] transObj = (Object[]) objects[0]; + objs1 = Arrays.asList(transObj); + } else { + objs1 = Arrays.asList(objects[0]); + } + if (objects[1] instanceof Object[]) { + Object[] transObj = (Object[]) objects[1]; + objs2 = Arrays.asList(transObj); + } else { + objs2 = Arrays.asList(objects[1]); + } - if(objs1.size()==0 || objs2.size() == 0 ){ - throw new RuntimeException("鍙傛暟涓嶈兘涓虹┖"); - } + if (objs1.size() == 0 || objs2.size() == 0) { + throw new RuntimeException("鍙傛暟涓嶈兘涓虹┖"); + } - //鍒ゆ柇鍙傛暟绫诲瀷鏄惁涓鑷 - List all=new ArrayList<>(); - all.addAll(objs1); - all.addAll(objs2); - for (Object obj:all){ - String localType=""; - if(obj instanceof DataType){ - String paramType=ExcelParamUtil.getParamType(obj); - if(!paramType.toLowerCase().equals("option")){ - localType=ExcelParamUtil.checkParamType(paramType); - }else{ - localType=paramType; - } - }else{ - localType=ExcelParamUtil.checkParamType(ExcelParamUtil.getParamType(obj.getClass().getName())); - } - if(type==null){ - type=localType; - }else{ - if(!type.equalsIgnoreCase(localType)){ - throw new RuntimeException("鍙傛暟绫诲瀷涓嶄竴鑷"); - } - } - } + //鍒ゆ柇鍙傛暟绫诲瀷鏄惁涓鑷 + List all = new ArrayList<>(); + all.addAll(objs1); + all.addAll(objs2); + for (Object obj : all) { + String localType = ""; + if (obj instanceof DataType) { + String paramType = ExcelParamUtil.getParamType(obj); + if (!paramType.toLowerCase().equals("option")) { + localType = ExcelParamUtil.checkParamType(paramType); + } else { + localType = paramType; + } + } else { + localType = ExcelParamUtil.checkParamType(ExcelParamUtil.getParamType(obj.getClass().getName())); + } + if (type == null) { + type = localType; + } else { + if (!type.equalsIgnoreCase(localType)) { + throw new RuntimeException("鍙傛暟绫诲瀷涓嶄竴鑷"); + } + } + } - //鏍规嵁瓒呮壘绫诲瀷鍒ゆ柇璋佹槸鏌ユ壘鐩爣锛岃皝鏄煡鎵句緷鎹 - List targetList=new ArrayList<>(); - List keyList=new ArrayList<>(); - switch (vali){ - case 1: - targetList=transOptionData(objs1); - keyList=transOptionData(objs2); - break; - case 2: - targetList=transOptionData(objs2); - keyList=transOptionData(objs1); - break; - default: - throw new RuntimeException("鏌ユ壘绫诲瀷閿欒"); - } + //鏍规嵁瓒呮壘绫诲瀷鍒ゆ柇璋佹槸鏌ユ壘鐩爣锛岃皝鏄煡鎵句緷鎹 + List targetList = new ArrayList<>(); + List keyList = new ArrayList<>(); + switch (vali) { + case 1: + targetList = transOptionData(objs1); + keyList = transOptionData(objs2); + break; + case 2: + targetList = transOptionData(objs2); + keyList = transOptionData(objs1); + break; + default: + throw new RuntimeException("鏌ユ壘绫诲瀷閿欒"); + } - for (Object keyO:keyList){ - for (Object target:targetList){ - if(keyO.equals(target)){ - return true; - } - } - } + for (Object keyO : keyList) { + for (Object target : targetList) { + if (keyO.equals(target)) { + return true; + } + } + } - return false; - } + return false; + } - private List transOptionData(List dataList){ - List contentArrays=new ArrayList<>(); - for (Object data:dataList){ - Object param1=ExcelParamUtil.getParamContent(data,""); - //鑾峰彇渚濇嵁鏁版嵁鐨勭被鍨 - String keyType=""; - if(data instanceof DataType){ - keyType=ExcelParamUtil.getParamType(data); - }else{ - keyType=ExcelParamUtil.getParamType(data.getClass().getName()); - } - keyType=ExcelParamUtil.checkParamType(keyType); + private List transOptionData(List dataList) { + List contentArrays = new ArrayList<>(); + for (Object data : dataList) { + Object param1 = ExcelParamUtil.getParamContent(data, ""); + //鑾峰彇渚濇嵁鏁版嵁鐨勭被鍨 + String keyType = ""; + if (data instanceof DataType) { + keyType = ExcelParamUtil.getParamType(data); + } else { + keyType = ExcelParamUtil.getParamType(data.getClass().getName()); + } + keyType = ExcelParamUtil.checkParamType(keyType); - if(keyType.toLowerCase().equals(DataType.OPTION)){ - contentArrays.addAll(Arrays.asList(param1.toString().split(","))); - }else if(data instanceof Character){ - contentArrays.add(param1.toString()); - }else if(keyType.toLowerCase().equals("number")){ - contentArrays.add(Double.parseDouble(param1.toString())); - }else{ - contentArrays.add(param1); - } - } - return contentArrays; - } + if (keyType.toLowerCase().equals(DataType.OPTION)) { + contentArrays.addAll(Arrays.asList(param1.toString().split(","))); + } else if (data instanceof Character) { + contentArrays.add(param1.toString()); + } else if (keyType.toLowerCase().equals("number")) { + contentArrays.add(Double.parseDouble(param1.toString())); + } else { + contentArrays.add(param1); + } + } + return contentArrays; + } - private boolean checkParamType(Object[] objects){ - boolean result=false; - String type=null; - for (int i=1;i<=objects.length;i++){ - if(i%2==0){ - Object obj=objects[i-1]; - String typeStr=ExcelParamUtil.getParamType(obj); - typeStr=ExcelParamUtil.checkParamType(typeStr); - logger.info(typeStr); - if(type==null){ - type=typeStr; - }else{ - result=typeStr.equalsIgnoreCase(type); - if(!result){ - return result; - } + private boolean checkParamType(Object[] objects) { + boolean result = false; + String type = null; + for (int i = 1; i <= objects.length; i++) { + if (i % 2 == 0) { + Object obj = objects[i - 1]; + String typeStr = ExcelParamUtil.getParamType(obj); + typeStr = ExcelParamUtil.checkParamType(typeStr); + logger.info(typeStr); + if (type == null) { + type = typeStr; + } else { + result = typeStr.equalsIgnoreCase(type); + if (!result) { + return result; + } - } - } - } - String typeStr=ExcelParamUtil.checkParamType(ExcelParamUtil.getParamType(objects[objects.length-1])); - result=type.equalsIgnoreCase(typeStr); - return result; - } + } + } + } + String typeStr = ExcelParamUtil.checkParamType(ExcelParamUtil.getParamType(objects[objects.length - 1])); + result = type.equalsIgnoreCase(typeStr); + return result; + } } diff --git a/src/com/engine/salary/mapper/InsuranceExportMapper.java b/src/com/engine/salary/mapper/InsuranceExportMapper.java index ffed6713f..2464c49de 100644 --- a/src/com/engine/salary/mapper/InsuranceExportMapper.java +++ b/src/com/engine/salary/mapper/InsuranceExportMapper.java @@ -21,4 +21,8 @@ public interface InsuranceExportMapper { List exportAccount(@Param("paymentStatus") Integer paymentStatus, @Param("param") InsuranceExportParam param); List exportRecessionAccount(@Param("paymentStatus") Integer paymentStatus, @Param("param") InsuranceExportParam param); + + List exportExtAccount(@Param("paymentStatus") Integer paymentStatus, @Param("param") InsuranceExportParam param); + + List exportExtExcelAccount(@Param("param") InsuranceComparisonResultQueryParam param); } diff --git a/src/com/engine/salary/mapper/InsuranceExportMapper.xml b/src/com/engine/salary/mapper/InsuranceExportMapper.xml index 517eb1672..481c44a30 100644 --- a/src/com/engine/salary/mapper/InsuranceExportMapper.xml +++ b/src/com/engine/salary/mapper/InsuranceExportMapper.xml @@ -193,4 +193,102 @@ ORDER BY ${param.orderRule.orderRule} ${param.orderRule.ascOrDesc} + + + + + + + + diff --git a/src/com/engine/salary/mapper/datacollection/EmployMapper.java b/src/com/engine/salary/mapper/datacollection/EmployMapper.java index 557198e80..4f3aa8ed4 100644 --- a/src/com/engine/salary/mapper/datacollection/EmployMapper.java +++ b/src/com/engine/salary/mapper/datacollection/EmployMapper.java @@ -87,6 +87,8 @@ public interface EmployMapper { List listHrmInfoByIdAndName(@Param("param") HrmQueryParam param); + List listExtHrmInfoByIdAndName(@Param("param") HrmQueryParam param); + /** * 鏍规嵁閮ㄩ棬鍚嶇О鏌ヨ閮ㄩ棬 diff --git a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml index b54ee6cba..29ce5fcbe 100644 --- a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml @@ -8,7 +8,8 @@ d.DEPARTMENTNAME as departmentName, e.status, e.mobile, - e.workcode + e.workcode, + 'false' as extEmp from hrmresource e left join hrmdepartment d on e.departmentid = d.id where e.status not in (7) @@ -385,4 +386,64 @@ where e.status not in (7) AND e.enddate >= #{dismissDate} + + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/extemp/ExternalEmployeeMapper.xml b/src/com/engine/salary/mapper/extemp/ExternalEmployeeMapper.xml index 0a8ac06b9..e04017e35 100644 --- a/src/com/engine/salary/mapper/extemp/ExternalEmployeeMapper.xml +++ b/src/com/engine/salary/mapper/extemp/ExternalEmployeeMapper.xml @@ -239,7 +239,8 @@ d.DEPARTMENTNAME as departmentName, e.status, e.mobile, - e.workcode + e.workcode, + 'true' as extEmp from hrsa_external_employee e left join hrmdepartment d on e.department_id = d.id diff --git a/src/com/engine/salary/mapper/report/SalaryStatisticsPushMapper.java b/src/com/engine/salary/mapper/report/SalaryStatisticsPushMapper.java new file mode 100644 index 000000000..bc49e30f6 --- /dev/null +++ b/src/com/engine/salary/mapper/report/SalaryStatisticsPushMapper.java @@ -0,0 +1,83 @@ +package com.engine.salary.mapper.report; + +import com.engine.salary.report.entity.po.SalaryStatisticsPushPO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName SalaryStatisticsPushMapper + * @date 2023/09/11 10:36 + * @description 鎶ヨ〃鍒嗕韩 + */ +public interface SalaryStatisticsPushMapper { + /** + * 鏌ヨ鎵鏈夎褰 + * + * @return 杩斿洖闆嗗悎锛屾病鏈夎繑鍥炵┖List + */ + List listAll(); + + /** + * 鏉′欢鏌ヨ + * + * @return 杩斿洖闆嗗悎锛屾病鏈夎繑鍥炵┖List + */ + List listSome(SalaryStatisticsPushPO SalaryStatisticsPushPO); + + + + /** + * 鏍规嵁涓婚敭鏌ヨ + * + * @param id 涓婚敭 + * @return 杩斿洖璁板綍锛屾病鏈夎繑鍥瀗ull + */ + SalaryStatisticsPushPO getById(Long id); + + /** + * 鏂板锛屽拷鐣ull瀛楁 + * + * @param SalaryStatisticsPushPO 鏂板鐨勮褰 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int insertIgnoreNull(SalaryStatisticsPushPO SalaryStatisticsPushPO); + + /** + * 淇敼锛屼慨鏀规墍鏈夊瓧娈 + * + * @param SalaryStatisticsPushPO 淇敼鐨勮褰 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int update(SalaryStatisticsPushPO SalaryStatisticsPushPO); + + /** + * 淇敼锛屽拷鐣ull瀛楁 + * + * @param SalaryStatisticsPushPO 淇敼鐨勮褰 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int updateIgnoreNull(SalaryStatisticsPushPO SalaryStatisticsPushPO); + + /** + * 鍒犻櫎璁板綍 + * + * @param SalaryStatisticsPushPO 寰呭垹闄ょ殑璁板綍 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int delete(SalaryStatisticsPushPO SalaryStatisticsPushPO); + + /** + * 鑾峰彇璇ョ敤鎴锋渶鏂板垱寤虹殑鍒嗕韩璁板綍 + * @param empId + */ + List listLatestRecordByCreator(@Param("empId") Long empId); + + /** + * 鏍规嵁鎶ヨ〃id妯$硦鏌ヨ + * @param reportId + * @return + */ + List listByReportIdAndIds(@Param("reportId") String reportId, @Param("ids") List ids); +} diff --git a/src/com/engine/salary/mapper/report/SalaryStatisticsPushMapper.xml b/src/com/engine/salary/mapper/report/SalaryStatisticsPushMapper.xml new file mode 100644 index 000000000..faebe7b3d --- /dev/null +++ b/src/com/engine/salary/mapper/report/SalaryStatisticsPushMapper.xml @@ -0,0 +1,358 @@ + + + + + + + + + + + + + + + + + + + + + + + + t.id + , t.create_time + , t.update_time + , t.creator + , t.delete_type + , t.tenant_key + , t.report_ids + , t.start_time + , t.end_time + , t.push_channel + , t.email_account + , t.mark + , t.push_title + , t.email_account_id + , t.remind + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO hrsa_report_push + + + + id, + + + create_time, + + + update_time, + + + creator, + + + delete_type, + + + tenant_key, + + + report_ids, + + + start_time, + + + end_time, + + + push_channel, + + + email_account, + + + mark, + + + push_title, + + + email_account_id, + + + remind, + + + + + #{id}, + + + #{createTime}, + + + #{updateTime}, + + + #{creator}, + + + #{deleteType}, + + + #{tenantKey}, + + + #{reportIds}, + + + #{startTime}, + + + #{endTime}, + + + #{pushChannel}, + + + #{emailAccount}, + + + #{mark}, + + + #{pushTitle}, + + + #{emailAccountId}, + + + #{remind}, + + + + + + + UPDATE hrsa_report_push + + create_time=#{createTime}, + update_time=#{updateTime}, + creator=#{creator}, + delete_type=#{deleteType}, + tenant_key=#{tenantKey}, + report_ids=#{reportIds}, + start_time=#{startTime}, + end_time=#{endTime}, + push_channel=#{pushChannel}, + email_account=#{emailAccount}, + mark=#{mark}, + push_title=#{pushTitle}, + email_account_id=#{emailAccountId}, + remind=#{remind}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_report_push + + + create_time=#{createTime}, + + + update_time=#{updateTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + tenant_key=#{tenantKey}, + + + report_ids=#{reportIds}, + + + start_time=#{startTime}, + + + end_time=#{endTime}, + + + push_channel=#{pushChannel}, + + + email_account=#{emailAccount}, + + + mark=#{mark}, + + + push_title=#{pushTitle}, + + + email_account_id=#{emailAccountId}, + + + remind=#{remind}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_report_push + SET delete_type=1 + WHERE id = #{id} AND delete_type = 0 + + + + diff --git a/src/com/engine/salary/mapper/report/salaryStatisticsPushDetailMapper.java b/src/com/engine/salary/mapper/report/salaryStatisticsPushDetailMapper.java new file mode 100644 index 000000000..e2cd55093 --- /dev/null +++ b/src/com/engine/salary/mapper/report/salaryStatisticsPushDetailMapper.java @@ -0,0 +1,81 @@ +package com.engine.salary.mapper.report; + +import com.engine.salary.report.entity.po.SalaryStatisticsPushDetailPO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName SalaryStatisticsPushPOMapper + * @date 2023/09/11 11:01 + * @description 鎶ヨ〃鍒嗕韩鏄庣粏 + */ +public interface salaryStatisticsPushDetailMapper { + /** + * 鏌ヨ鎵鏈夎褰 + * + * @return 杩斿洖闆嗗悎锛屾病鏈夎繑鍥炵┖List + */ + List listAll(); + + /** + * 鏉′欢鏌ヨ + * + * @return 杩斿洖闆嗗悎锛屾病鏈夎繑鍥炵┖List + */ + List listSome(SalaryStatisticsPushDetailPO SalaryStatisticsPushDetailPO); + + + /** + * 鏍规嵁涓婚敭鏌ヨ + * + * @param id 涓婚敭 + * @return 杩斿洖璁板綍锛屾病鏈夎繑鍥瀗ull + */ + SalaryStatisticsPushDetailPO getById(Long id); + + /** + * 鏂板锛屽拷鐣ull瀛楁 + * + * @param SalaryStatisticsPushDetailPO 鏂板鐨勮褰 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int insertIgnoreNull(SalaryStatisticsPushDetailPO SalaryStatisticsPushDetailPO); + + /** + * 淇敼锛屼慨鏀规墍鏈夊瓧娈 + * + * @param SalaryStatisticsPushDetailPO 淇敼鐨勮褰 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int update(SalaryStatisticsPushDetailPO SalaryStatisticsPushDetailPO); + + /** + * 淇敼锛屽拷鐣ull瀛楁 + * + * @param SalaryStatisticsPushDetailPO 淇敼鐨勮褰 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int updateIgnoreNull(SalaryStatisticsPushDetailPO SalaryStatisticsPushDetailPO); + + /** + * 鍒犻櫎璁板綍 + * + * @param SalaryStatisticsPushDetailPO 寰呭垹闄ょ殑璁板綍 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int delete(SalaryStatisticsPushDetailPO SalaryStatisticsPushDetailPO); + + /** + * 鏍规嵁鎵规id鏌ヨ + * @param batchIds + */ + List queryPushDetailPOByBatchId(@Param("batchIds") List batchIds); + + /** + * 鏍规嵁鎵规id銆佸憳宸d鏌ヨ + * @param + */ + List queryPushDetailPOByBatchIdAndEmpIds(@Param("batchId")Long batchId, @Param("empIds")List sharedBy); +} diff --git a/src/com/engine/salary/mapper/report/salaryStatisticsPushDetailMapper.xml b/src/com/engine/salary/mapper/report/salaryStatisticsPushDetailMapper.xml new file mode 100644 index 000000000..03bb7321e --- /dev/null +++ b/src/com/engine/salary/mapper/report/salaryStatisticsPushDetailMapper.xml @@ -0,0 +1,319 @@ + + + + + + + + + + + + + + + + + + + + + + + t.id + , t.create_time + , t.update_time + , t.creator + , t.delete_type + , t.tenant_key + , t.msg_id + , t.employee_id + , t.push_time + , t.push_status + , t.reback_time + , t.reback_status + , t.batch_id + , t.view_status + + + + + + + + + + + + + + + + + + + INSERT INTO hrsa_report_push_detail + + + + id, + + + create_time, + + + update_time, + + + creator, + + + delete_type, + + + tenant_key, + + + msg_id, + + + employee_id, + + + push_time, + + + push_status, + + + reback_time, + + + reback_status, + + + batch_id, + + + view_status, + + + + + #{id}, + + + #{createTime}, + + + #{updateTime}, + + + #{creator}, + + + #{deleteType}, + + + #{tenantKey}, + + + #{msgId}, + + + #{employeeId}, + + + #{pushTime}, + + + #{pushStatus}, + + + #{rebackTime}, + + + #{rebackStatus}, + + + #{batchId}, + + + #{viewStatus}, + + + + + + + UPDATE hrsa_report_push_detail + + create_time=#{createTime}, + update_time=#{updateTime}, + creator=#{creator}, + delete_type=#{deleteType}, + tenant_key=#{tenantKey}, + msg_id=#{msgId}, + employee_id=#{employeeId}, + push_time=#{pushTime}, + push_status=#{pushStatus}, + reback_time=#{rebackTime}, + reback_status=#{rebackStatus}, + batch_id=#{batchId}, + view_status=#{viewStatus}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_report_push_detail + + + create_time=#{createTime}, + + + update_time=#{updateTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + tenant_key=#{tenantKey}, + + + msg_id=#{msgId}, + + + employee_id=#{employeeId}, + + + push_time=#{pushTime}, + + + push_status=#{pushStatus}, + + + + reback_time = null, + + + reback_time=#{rebackTime}, + + + + reback_status=#{rebackStatus}, + + + batch_id=#{batchId}, + + + view_status=#{viewStatus}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_report_push_detail + SET delete_type=1 + WHERE id = #{id} AND delete_type = 0 + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.java b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.java index 94843ff71..2dec937ca 100644 --- a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.java +++ b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.java @@ -24,6 +24,14 @@ public interface InsuranceAccountDetailMapper { */ List list(@Param("param") InsuranceAccountDetailParam queryParam); + /** + * 鏌ヨ姝e父缂寸撼鍒楄〃_闈炵郴缁熶汉鍛 + * + * @param queryParam + * @return + */ + List extList(@Param("param") InsuranceAccountDetailParam queryParam); + /** * 閫氳繃id鏌ヨ */ diff --git a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml index 6535e2f0b..6540a705d 100644 --- a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml +++ b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml @@ -254,6 +254,94 @@ + + + AND + ( + e.userName like CONCAT('%',#{param.userName},'%') + ) + + + AND e.workcode like CONCAT('%',#{param.workcode},'%') + + + AND t.employee_id IN + + #{employeeId} + + + + AND t.bill_month IN + + #{recessionMonth} + + + + AND t.payment_organization IN + + #{taxAgent} + + + + + + AND + ( + e.userName like '%'||#{param.userName}||'%' + ) + + + AND e.workcode like '%'||#{param.workcode}||'%' + + + AND t.employee_id IN + + #{employeeId} + + + + AND t.bill_month IN + + #{recessionMonth} + + + + AND t.payment_organization IN + + #{taxAgent} + + + + + + AND + ( + e.userName like '%'+#{param.userName}+'%' + ) + + + AND e.workcode like '%'+#{param.workcode}+'%' + + + AND t.employee_id IN + + #{employeeId} + + + + AND t.bill_month IN + + #{recessionMonth} + + + + AND t.payment_organization IN + + #{taxAgent} + + + + + + @@ -221,6 +222,17 @@ AND t.delete_type = 0 + + + @@ -175,6 +191,22 @@ order by id desc + UPDATE hrsa_social_security_scheme diff --git a/src/com/engine/salary/process/salaryArchive/SalaryArchiveActionAPI.java b/src/com/engine/salary/process/salaryArchive/SalaryArchiveActionAPI.java index 1bc669356..2fa4e2126 100644 --- a/src/com/engine/salary/process/salaryArchive/SalaryArchiveActionAPI.java +++ b/src/com/engine/salary/process/salaryArchive/SalaryArchiveActionAPI.java @@ -1,8 +1,8 @@ package com.engine.salary.process.salaryArchive; import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveFormDTO; import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportActionParam; -import com.engine.salary.entity.salaryarchive.param.SalaryArchiveQueryParam; import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; import com.engine.salary.util.ResponseResult; import com.engine.salary.wrapper.SalaryArchiveWrapper; @@ -18,6 +18,7 @@ import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; +import java.util.List; import java.util.Map; @@ -86,13 +87,41 @@ public class SalaryArchiveActionAPI { return new ResponseResult>(user).run(getSalaryArchiveWrapper(user)::adjustmentSalaryArchive, importData); } + /** + * 鑾峰彇妗f淇℃伅锛岄粯璁ら渶瑕佷紶浜哄憳鍜屾墸缂翠箟鍔′汉id锛岃嫢鍙紶浜哄憳id锛屽彂鐜板涓彂钖。妗堜細鎶涘嚭寮傚父鎻愮ず + * + * 搴熷純锛岃鎺ュ彛浠呰繑鍥炲熀纭淇℃伅銆傚墠绔皟鐢ㄨ緝涓哄鏉傦紝浠ュ悗鎵嶆湁鑾峰彇鐢熸晥鏁版嵁鎺ュ彛 + * @param request + * @param response + * @param param + * @return 妗f鍩虹淇℃伅 + */ @POST @Path("/salaryArchiveInfo") @Produces(MediaType.APPLICATION_JSON) - public String adjustmentSalaryArchive(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryArchiveQueryParam param) { + @Deprecated + public String adjustmentSalaryArchive(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryArchiveProcessQueryParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getSalaryArchiveWrapper(user)::getSalaryArchiveInfo, param); + return new ResponseResult(user).run(getSalaryArchiveWrapper(user)::getSalaryArchiveInfo, param); + } + + /** + * 鑾峰彇妗f淇℃伅锛岄粯璁ら渶瑕佷紶浜哄憳鍜屾墸缂翠箟鍔′汉id锛岃嫢鍙紶浜哄憳id锛屽彂鐜板涓彂钖。妗堜細鎶涘嚭寮傚父鎻愮ず + * + * 搴熷純锛岃鎺ュ彛浠呰繑鍥炲熀纭淇℃伅銆傚墠绔皟鐢ㄨ緝涓哄鏉傦紝浠ュ悗鎵嶆湁鑾峰彇鐢熸晥鏁版嵁鎺ュ彛 + * @param request + * @param response + * @param param + * @return 妗f鍩虹淇℃伅 + */ + @POST + @Path("/v2/salaryArchiveInfo") + @Produces(MediaType.APPLICATION_JSON) + public String salaryArchiveInfo(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryArchiveProcessQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalaryArchiveWrapper(user)::getSalaryArchiveInfoV2, param); } + } diff --git a/src/com/engine/salary/process/salaryArchive/SalaryArchiveInfo.java b/src/com/engine/salary/process/salaryArchive/SalaryArchiveInfo.java new file mode 100644 index 000000000..f244624a3 --- /dev/null +++ b/src/com/engine/salary/process/salaryArchive/SalaryArchiveInfo.java @@ -0,0 +1,44 @@ +package com.engine.salary.process.salaryArchive; + +import com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.List; + +/** + * 钖祫妗f + *

Copyright: Copyright (c) 2022

+ *

Company: 娉涘井杞欢

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//钖祫妗f鏌ヨ鍙傛暟 +public class SalaryArchiveInfo { + + private Collection ids; + + /** + * 鍛樺伐id + */ + private Long employeeId; + + /** + * 鎵g即涔夊姟浜篿d + */ + private Long taxAgentId; + + /** + * 妗f鐘舵 + * @see SalaryArchiveStatusEnum + */ + private List runStatusList; +} diff --git a/src/com/engine/salary/process/salaryArchive/SalaryArchiveProcessQueryParam.java b/src/com/engine/salary/process/salaryArchive/SalaryArchiveProcessQueryParam.java new file mode 100644 index 000000000..04bbeef2d --- /dev/null +++ b/src/com/engine/salary/process/salaryArchive/SalaryArchiveProcessQueryParam.java @@ -0,0 +1,44 @@ +package com.engine.salary.process.salaryArchive; + +import com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.List; + +/** + * 钖祫妗f + *

Copyright: Copyright (c) 2022

+ *

Company: 娉涘井杞欢

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//钖祫妗f鏌ヨ鍙傛暟 +public class SalaryArchiveProcessQueryParam { + + private Collection ids; + + /** + * 鍛樺伐id + */ + private Long employeeId; + + /** + * 鎵g即涔夊姟浜篿d + */ + private Long taxAgentId; + + /** + * 妗f鐘舵 + * @see SalaryArchiveStatusEnum + */ + private List runStatusList; +} diff --git a/src/com/engine/salary/process/siArchives/SIArchiveActionAPI.java b/src/com/engine/salary/process/siArchives/SIArchiveActionAPI.java index 529f47139..657cd3e60 100644 --- a/src/com/engine/salary/process/siArchives/SIArchiveActionAPI.java +++ b/src/com/engine/salary/process/siArchives/SIArchiveActionAPI.java @@ -1,7 +1,7 @@ package com.engine.salary.process.siArchives; import com.engine.common.util.ServiceUtil; -import com.engine.salary.entity.siarchives.param.SIArchiveImportActionParam; +import com.engine.salary.entity.siarchives.param.SIArchiveImportParam; import com.engine.salary.enums.siaccount.EmployeeStatusEnum; import com.engine.salary.service.SISchemeService; import com.engine.salary.service.impl.SISchemeServiceImpl; @@ -40,11 +40,11 @@ public class SIArchiveActionAPI { @POST @Path("/checkImportSIArchiveListAdd") @Produces(MediaType.APPLICATION_JSON) - public String checkImportSIArchiveListAdd(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SIArchiveImportActionParam importData) { + public String checkImportSIArchiveListAdd(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SIArchiveImportParam importData) { User user = HrmUserVarify.getUser(request, response); importData.setRunStatus(EmployeeStatusEnum.STAY_ADD.getValue()); importData.setAddData(false); - return new ResponseResult>(user).run(getService(user)::checkSIArchiveAdd, importData); + return new ResponseResult>(user).run(getService(user)::checkSIArchiveAdd, importData); } /** @@ -55,10 +55,10 @@ public class SIArchiveActionAPI { @POST @Path("/addSIArchive") @Produces(MediaType.APPLICATION_JSON) - public String addSIArchive(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SIArchiveImportActionParam importData) { + public String addSIArchive(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SIArchiveImportParam importData) { User user = HrmUserVarify.getUser(request, response); importData.setRunStatus(EmployeeStatusEnum.STAY_ADD.getValue()); importData.setAddData(true); - return new ResponseResult>(user).run(getService(user)::addSIArchive, importData); + return new ResponseResult>(user).run(getService(user)::addSIArchive, importData); } } diff --git a/src/com/engine/salary/report/entity/dto/SalaryStatisticsPushDetail.java b/src/com/engine/salary/report/entity/dto/SalaryStatisticsPushDetail.java new file mode 100644 index 000000000..a075e19ac --- /dev/null +++ b/src/com/engine/salary/report/entity/dto/SalaryStatisticsPushDetail.java @@ -0,0 +1,25 @@ +package com.engine.salary.report.entity.dto; + +import com.engine.salary.util.page.PageInfo; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Description: 钖叕鎶ヨ〃鎺ㄩ佽鎯 + * @Author: zhangheng + * @CreateDate: 2023/5/23 + * @Version: v1.0 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryStatisticsPushDetail { + + private SalaryStatisticsPushDetailFormDTO detailForm; + + private PageInfo detailTable; + +} diff --git a/src/com/engine/salary/report/entity/dto/SalaryStatisticsPushDetailFormDTO.java b/src/com/engine/salary/report/entity/dto/SalaryStatisticsPushDetailFormDTO.java new file mode 100644 index 000000000..66fcf666a --- /dev/null +++ b/src/com/engine/salary/report/entity/dto/SalaryStatisticsPushDetailFormDTO.java @@ -0,0 +1,36 @@ +package com.engine.salary.report.entity.dto; + +import com.engine.salary.annotation.TableTitle; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Description: 钖叕鎶ヨ〃鎺ㄩ佽鎯呰〃鍗 + * @Author: zhangheng + * @CreateDate: 2023/5/23 + * @Version: v1.0 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryStatisticsPushDetailFormDTO { + + + @TableTitle(title = "鍒嗕韩鎶ヨ〃", dataIndex = "reportName", key = "reportName") + private String reportName; + + @TableTitle(title = "鎶ヨ〃鏌ョ湅鏈夋晥鏃堕棿", dataIndex = "effectiveTime", key = "effectiveTime") + private String effectiveTime; + + @TableTitle(title = "閭欢璐﹀彿", dataIndex = "emailAccount", key = "emailAccount") + private String emailAccount; + + @TableTitle(title = "鎶ヨ〃鍒嗕韩娓犻亾", dataIndex = "channel", key = "channel") + private String channel; + + @TableTitle(title = "鍒嗕韩璇存槑", dataIndex = "remark", key = "remark") + private String remark; +} diff --git a/src/com/engine/salary/report/entity/dto/SalaryStatisticsPushDetailTableDTO.java b/src/com/engine/salary/report/entity/dto/SalaryStatisticsPushDetailTableDTO.java new file mode 100644 index 000000000..7702ab2c8 --- /dev/null +++ b/src/com/engine/salary/report/entity/dto/SalaryStatisticsPushDetailTableDTO.java @@ -0,0 +1,48 @@ +package com.engine.salary.report.entity.dto; + +import com.engine.salary.annotation.TableTitle; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Description: 钖叕缁熻缁村害鍒楄〃 + * @Author: zhangheng + * @CreateDate: 2023/5/23 + * @Version: v1.0 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryStatisticsPushDetailTableDTO { + + // 涓婚敭id + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @TableTitle(title = "濮撳悕", dataIndex = "userName", key = "userName") + private String userName; + + @JsonSerialize(using = ToStringSerializer.class) + private Long employeeId; + + @TableTitle(title = "鍒嗕韩鏃堕棿", dataIndex = "pushTime", key = "pushTime") + private String pushTime; + + @TableTitle(title = "鍒嗕韩鐘舵", dataIndex = "pushStatus", key = "pushStatus") + private String pushStatus; + + @TableTitle(title = "鏌ョ湅鐘舵", dataIndex = "viewStatus", key = "viewStatus") + private String viewStatus; + + @TableTitle(title = "鎾ゅ洖鏃堕棿", dataIndex = "rebackTime", key = "rebackTime") + private String rebackTime; + + @TableTitle(title = "鎾ゅ洖鐘舵", dataIndex = "rebackStatus", key = "rebackStatus") + private String rebackStatus; + +} diff --git a/src/com/engine/salary/report/entity/dto/SalaryStatisticsPushTableDTO.java b/src/com/engine/salary/report/entity/dto/SalaryStatisticsPushTableDTO.java new file mode 100644 index 000000000..7505e14b9 --- /dev/null +++ b/src/com/engine/salary/report/entity/dto/SalaryStatisticsPushTableDTO.java @@ -0,0 +1,42 @@ +package com.engine.salary.report.entity.dto; + +import com.engine.salary.annotation.TableTitle; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Description: 钖叕缁熻缁村害鍒楄〃 + * @Author: zhangheng + * @CreateDate: 2023/5/23 + * @Version: v1.0 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryStatisticsPushTableDTO { + + // 涓婚敭id + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @TableTitle(title = "鍒嗕韩鎶ヨ〃", dataIndex = "reportName", key = "reportName") + private String reportName; + + // 鏁版嵁鏌ヨ鏈夋晥鏃堕棿 + @TableTitle(title = "鏁版嵁鏌ヨ鏈夋晥鏃堕棿", dataIndex = "effectiveTime", key = "effectiveTime") + private String effectiveTime; + + // 鍒嗕韩鎴愬姛鐨勮鍒嗕韩浜 + @TableTitle(title = "鍒嗕韩鎴愬姛鐨勮鍒嗕韩浜", dataIndex = "successPush", key = "successPush") + private String successPush; + + // 琚垎浜汉鏌ョ湅鎯呭喌 + @TableTitle(title = "琚垎浜汉鏌ョ湅鎯呭喌", dataIndex = "sharedView", key = "sharedView") + private String sharedView; + +} diff --git a/src/com/engine/salary/report/entity/param/SalaryStatisticsDataPerspectiveQueryParam.java b/src/com/engine/salary/report/entity/param/SalaryStatisticsDataPerspectiveQueryParam.java index a66763b27..d0afd0c00 100644 --- a/src/com/engine/salary/report/entity/param/SalaryStatisticsDataPerspectiveQueryParam.java +++ b/src/com/engine/salary/report/entity/param/SalaryStatisticsDataPerspectiveQueryParam.java @@ -80,4 +80,8 @@ public class SalaryStatisticsDataPerspectiveQueryParam extends BaseQueryParam { @JsonIgnore // 绂昏亴鏃ユ湡 private List leavedate; + + + // 鏄惁鏄垎浜姤琛 + private boolean isShare; } \ No newline at end of file diff --git a/src/com/engine/salary/report/entity/param/SalaryStatisticsPushDetailParam.java b/src/com/engine/salary/report/entity/param/SalaryStatisticsPushDetailParam.java new file mode 100644 index 000000000..004b79c97 --- /dev/null +++ b/src/com/engine/salary/report/entity/param/SalaryStatisticsPushDetailParam.java @@ -0,0 +1,26 @@ +package com.engine.salary.report.entity.param; + +import com.engine.salary.common.BaseQueryParam; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author Harryxzy + * @ClassName SalaryStatisticsPushDetailParam + * @date 2023/09/11 15:40 + * @description 鑾峰彇鍙戦佹秷鎭褰曡鎯 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryStatisticsPushDetailParam extends BaseQueryParam { + + // 涓婚敭id + private Long id; + + // 濮撳悕 + private String userNameSearch; +} diff --git a/src/com/engine/salary/report/entity/param/SalaryStatisticsPushParam.java b/src/com/engine/salary/report/entity/param/SalaryStatisticsPushParam.java new file mode 100644 index 000000000..86f90c086 --- /dev/null +++ b/src/com/engine/salary/report/entity/param/SalaryStatisticsPushParam.java @@ -0,0 +1,64 @@ +package com.engine.salary.report.entity.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @Description: 娑堟伅鍙戦 + * @Author: zhangheng + * @CreateDate: 2023/5/23 + * @Version: v1.0 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryStatisticsPushParam { + + /*********************************鍓嶇浼犻佸弬鏁*******************************************/ + // 蹇収id鍒楄〃 + private List reportIds; + + // 鍒嗕韩涓婚 + private String pushTitle; + + // 琚垎浜汉 + private List sharedBy; + + // 寮濮嬫椂闂 + private String startTime; + + // 缁撴潫鏃堕棿 + private String endTime; + + // 娑堟伅娓犻亾 + private List pushChannel; + + // 宸叉煡鐪嬫彁閱 + private Integer remind; + + // 閭欢鍦板潃 + private String emailAdress; + + // 閭欢璐﹀彿id + private Long emailAccountId; + + // 鍒嗕韩璇存槑 + private String mark; + + // 娓犻亾缁勪欢鍊 + private String config; + + // 娓犻亾缁勪欢涓氬姟id + private Long businessId; + /**********************************鍚庣琛ラ綈鍙傛暟*********************************************/ + // 鍩熷悕 + private String domain; + + // 鍒嗕韩鎵规id + private Long id; +} diff --git a/src/com/engine/salary/report/entity/param/SalaryStatisticsReportDataQueryParam.java b/src/com/engine/salary/report/entity/param/SalaryStatisticsReportDataQueryParam.java index e5882d3df..fa1d32dd1 100644 --- a/src/com/engine/salary/report/entity/param/SalaryStatisticsReportDataQueryParam.java +++ b/src/com/engine/salary/report/entity/param/SalaryStatisticsReportDataQueryParam.java @@ -78,4 +78,10 @@ public class SalaryStatisticsReportDataQueryParam extends BaseQueryParam { //缁熻鍗曚綅 private Integer unitType; + + // 鏄惁鏄垎浜姤琛 + private boolean isShare; + + // "鍒嗕韩鎵规id + private Long batchId; } diff --git a/src/com/engine/salary/report/entity/po/SalaryStatisticsPushDetailPO.java b/src/com/engine/salary/report/entity/po/SalaryStatisticsPushDetailPO.java new file mode 100644 index 000000000..a6c288da2 --- /dev/null +++ b/src/com/engine/salary/report/entity/po/SalaryStatisticsPushDetailPO.java @@ -0,0 +1,68 @@ +package com.engine.salary.report.entity.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * @Description: + * @Author: zhangheng + * @CreateDate: 2023/5/17 + * @Version: v1.0 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//@TableName(value = "hrsa_report_push_detail", autoResultMap = true) +public class SalaryStatisticsPushDetailPO implements Serializable { + + // 涓婚敭id + private Long id; + + // 鎵规id + private Long batchId; + + // 娑堟伅id + private Long msgId; + + // 鍛樺伐id + private Long employeeId; + + // 鍒嗕韩鏃堕棿 + private String pushTime; + + // 鍒嗕韩鐘舵 + private String pushStatus; + + // 鎾ゅ洖鏃堕棿 + private String rebackTime; + + // 鎾ゅ洖鐘舵 + private String rebackStatus; + + // 琚垎浜汉鏌ョ湅鎯呭喌 + private String viewStatus; + + // 绉熸埛key + private String tenantKey; + + // 鍒涘缓浜篿d + private Long creator; + + // 鏄惁鍒犻櫎 + private Integer deleteType; + + // 鍒涘缓鏃堕棿 + private Date createTime; + + // 鏇存柊鏃堕棿 + private Date updateTime; + + private List ids; +} diff --git a/src/com/engine/salary/report/entity/po/SalaryStatisticsPushPO.java b/src/com/engine/salary/report/entity/po/SalaryStatisticsPushPO.java new file mode 100644 index 000000000..17cd860aa --- /dev/null +++ b/src/com/engine/salary/report/entity/po/SalaryStatisticsPushPO.java @@ -0,0 +1,71 @@ +package com.engine.salary.report.entity.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * @Description: + * @Author: zhangheng + * @CreateDate: 2023/5/17 + * @Version: v1.0 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//@TableName(value = "hrsa_report_push", autoResultMap = true) +public class SalaryStatisticsPushPO implements Serializable { + + // 涓婚敭id + private Long id; + + // 鎶ヨ〃id + private String reportIds; + + // 娑堟伅鏍囬 + private String pushTitle; + + // 鏈夋晥寮濮嬫椂闂 + private String startTime; + + // 鏈夋晥缁撴潫鏃堕棿 + private String endTime; + + // 鍒嗕韩娓犻亾 + private String pushChannel; + + // 閭欢璐﹀彿id + private Long emailAccountId; + + // 閭欢璐﹀彿 + private String emailAccount; + + // 鍒嗕韩璇存槑 + private String mark; + + // 宸叉煡鐪嬫彁閱 + private Integer remind; + + // 绉熸埛key + private String tenantKey; + + // 鍒涘缓浜篿d + private Long creator; + + // 鏄惁鍒犻櫎 + private Integer deleteType; + + // 鍒涘缓鏃堕棿 + private Date createTime; + + // 鏇存柊鏃堕棿 + private Date updateTime; + + private List ids; +} diff --git a/src/com/engine/salary/report/service/SalaryStatisticsPushDetailService.java b/src/com/engine/salary/report/service/SalaryStatisticsPushDetailService.java new file mode 100644 index 000000000..f9a39c44b --- /dev/null +++ b/src/com/engine/salary/report/service/SalaryStatisticsPushDetailService.java @@ -0,0 +1,85 @@ +package com.engine.salary.report.service; + +import com.engine.salary.report.entity.po.SalaryStatisticsPushDetailPO; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName SalaryStatisticsPushDetailService + * @date 2023/09/13 15:10 + * @description + */ +public interface SalaryStatisticsPushDetailService { + + /** + * 鏌ヨ鎵鏈夎褰 + * + * @return 杩斿洖闆嗗悎锛屾病鏈夎繑鍥炵┖List + */ + List listAll(); + + List listSome(SalaryStatisticsPushDetailPO po); + + + /** + * 鏍规嵁涓婚敭鏌ヨ + * + * @param id 涓婚敭 + * @return 杩斿洖璁板綍锛屾病鏈夎繑鍥瀗ull + */ + SalaryStatisticsPushDetailPO getById(Long id); + + + /** + * 鏂板锛屽拷鐣ull瀛楁 + * + * @param po 鏂板鐨勮褰 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int insertIgnoreNull(SalaryStatisticsPushDetailPO po); + + /** + * 淇敼锛屼慨鏀规墍鏈夊瓧娈 + * + * @param po 淇敼鐨勮褰 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int update(SalaryStatisticsPushDetailPO po); + + /** + * 淇敼锛屽拷鐣ull瀛楁 + * + * @param po 淇敼鐨勮褰 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int updateIgnoreNull(SalaryStatisticsPushDetailPO po); + + /** + * 鍒犻櫎璁板綍 + * + * @param po 寰呭垹闄ょ殑璁板綍 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int delete(SalaryStatisticsPushDetailPO po); + + /** + * 鏍规嵁鎵规id鏌ヨ + * @param batchIds + */ + List queryPushDetailPOByBatchIds(List batchIds); + + /** + * 鏍规嵁鎵规id銆佸憳宸d鏌ヨ + * @param + */ + List queryPushDetailPOByBatchIdAndEmpIds(Long batchId, List sharedBy); + + /** + * 鏍规嵁琚垎浜汉鑾峰彇鍒嗕韩璁板綍鍒楄〃 + * @param uid + * @return + */ + List getSuccessPushDetailListByReceiver(Long uid); + +} diff --git a/src/com/engine/salary/report/service/SalaryStatisticsPushService.java b/src/com/engine/salary/report/service/SalaryStatisticsPushService.java new file mode 100644 index 000000000..39b87a212 --- /dev/null +++ b/src/com/engine/salary/report/service/SalaryStatisticsPushService.java @@ -0,0 +1,86 @@ +package com.engine.salary.report.service; + +import com.engine.salary.common.BaseQueryParam; +import com.engine.salary.report.entity.dto.SalaryStatisticsPushDetail; +import com.engine.salary.report.entity.dto.SalaryStatisticsPushTableDTO; +import com.engine.salary.report.entity.param.SalaryStatisticsPushDetailParam; +import com.engine.salary.report.entity.param.SalaryStatisticsPushParam; +import com.engine.salary.report.entity.po.SalaryStatisticsPushPO; +import com.engine.salary.util.page.PageInfo; + +import java.util.List; +import java.util.Map; + +/** + * @author Harryxzy + * @ClassName SalaryStatisticsPushService + * @date 2023/09/11 10:15 + * @description 钖叕缁熻鎶ヨ〃娑堟伅鎺ㄩ + */ +public interface SalaryStatisticsPushService { + Map getPushForm(); + + /** + * 鑾峰彇鍒嗕韩璁板綍鍒楄〃 + * @param baseQueryParam + */ + PageInfo getPushTable(BaseQueryParam baseQueryParam); + + /** + * 鑾峰彇鍙戦佹秷鎭褰曡鎯 + * @param param + * @return + */ + SalaryStatisticsPushDetail getPushDetail(SalaryStatisticsPushDetailParam param); + + /** + * 鍒嗕韩鎶ヨ〃 + * @param param + */ + void push(SalaryStatisticsPushParam param); + + void addSharedPush(SalaryStatisticsPushParam param); + + // void rePush(Long id, Long employeeId, String tenantKey); + + /** + * 鎾ゅ洖鍒嗕韩 + * @param id 鍒嗕韩鏄庣粏id + */ + void cancel(Long id); + + /** + * 鎾ゅ洖璇ユ壒娆℃墍鏈夊垎浜 + * @param id 鍒嗕韩鎵规id + */ + void cancelAll(Long id); + +// SalaryStatisticsPushPO getById(Long id, String tenantKey); + +// List getPushDetailsById(Long batchId, String tenantKey); + + void updateReportViewStatus(List batchId, Long uid); + +// void sendViewedMsg(Long batchId, Long reportId, Long employeeId, String tenantKey); + + /** + * 鏍规嵁鐢ㄦ埛鑾峰彇鏈夋晥锛堟病鏈夎繃鏈熴佹挙鍥烇級鐨勫垎浜褰 + * @param uid + * @return + */ + List getSuccessPushListByReceiver(Long uid); + + /** + * 鏍规嵁鎶ヨ〃id銆佸垎浜壒娆d鑾峰彇鏈夋晥鐨勫垎浜褰 + * @param reportId + * @return + */ + List getPushListByReportIdAndIds(Long reportId, List ids); + + /** + * 鏍¢獙褰撳墠鐧诲綍浜哄憳鏄惁鏈夋潈鏌ョ湅琚垎浜殑鎶ヨ〃 + * @param reportId + * @return + */ + List shareReportValid(Long reportId, Long uid); +} diff --git a/src/com/engine/salary/report/service/SalaryStatisticsReportService.java b/src/com/engine/salary/report/service/SalaryStatisticsReportService.java index e15572e0d..4355552cb 100644 --- a/src/com/engine/salary/report/service/SalaryStatisticsReportService.java +++ b/src/com/engine/salary/report/service/SalaryStatisticsReportService.java @@ -37,6 +37,13 @@ public interface SalaryStatisticsReportService { */ List list(); + /** + * 鏍规嵁鍒涘缓浜鸿幏鍙栬柂閰姤琛ㄥ垪琛 + * + * @return + */ + List listByCreator(Long uid); + /** * 鑾峰彇鍗曚釜钖叕缁熻鎶ヨ〃 * @@ -45,6 +52,8 @@ public interface SalaryStatisticsReportService { */ SalaryStatisticsReportPO getById(Long id); + List getByIds(List ids); + /** * 淇濆瓨钖叕缁熻鎶ヨ〃 * diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsPushDetailServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsPushDetailServiceImpl.java new file mode 100644 index 000000000..4c9b1d084 --- /dev/null +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsPushDetailServiceImpl.java @@ -0,0 +1,107 @@ +package com.engine.salary.report.service.impl; + +import com.engine.core.impl.Service; +import com.engine.salary.mapper.report.salaryStatisticsPushDetailMapper; +import com.engine.salary.report.entity.po.SalaryStatisticsPushDetailPO; +import com.engine.salary.report.service.SalaryStatisticsPushDetailService; +import com.engine.salary.util.db.MapperProxyFactory; +import com.google.common.collect.Lists; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.math.NumberUtils; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @author Harryxzy + * @ClassName SalaryStatisticsPushDetailServiceImpl + * @date 2023/09/13 15:13 + * @description + */ +public class SalaryStatisticsPushDetailServiceImpl extends Service implements SalaryStatisticsPushDetailService { + + private salaryStatisticsPushDetailMapper getsalaryStatisticsPushDetailMapper() { + return MapperProxyFactory.getProxy(salaryStatisticsPushDetailMapper.class); + } + + @Override + public List listAll() { + return getsalaryStatisticsPushDetailMapper().listAll(); + } + + @Override + public List listSome(SalaryStatisticsPushDetailPO po) { + return getsalaryStatisticsPushDetailMapper().listSome(po); + } + + @Override + public SalaryStatisticsPushDetailPO getById(Long id) { + return getsalaryStatisticsPushDetailMapper().getById(id); + } + + @Override + public int insertIgnoreNull(SalaryStatisticsPushDetailPO po) { + return getsalaryStatisticsPushDetailMapper().insertIgnoreNull(po); + } + + @Override + public int update(SalaryStatisticsPushDetailPO po) { + return getsalaryStatisticsPushDetailMapper().update(po); + } + + @Override + public int updateIgnoreNull(SalaryStatisticsPushDetailPO po) { + return getsalaryStatisticsPushDetailMapper().updateIgnoreNull(po); + } + + @Override + public int delete(SalaryStatisticsPushDetailPO po) { + return getsalaryStatisticsPushDetailMapper().delete(po); + } + + /** + * 鏍规嵁鎵规id鏌ヨ + * @param batchIds + */ + public List queryPushDetailPOByBatchIds(List batchIds) { + if (CollectionUtils.isEmpty(batchIds)) { + return Collections.emptyList(); + } + List> partition = Lists.partition(batchIds, 999); + List list = new ArrayList<>(); + partition.forEach(l -> { + list.addAll(getsalaryStatisticsPushDetailMapper().queryPushDetailPOByBatchId(l)); + }); + return list; + } + + /** + * 鏍规嵁鎵规id銆佸憳宸d鏌ヨ + * @param + */ + public List queryPushDetailPOByBatchIdAndEmpIds(Long batchId, List sharedBy) { + if (CollectionUtils.isEmpty(sharedBy) || ObjectUtils.isEmpty(batchId)) { + return Collections.emptyList(); + } + List> partition = Lists.partition(sharedBy, 999); + List list = new ArrayList<>(); + partition.forEach(l -> { + list.addAll(getsalaryStatisticsPushDetailMapper().queryPushDetailPOByBatchIdAndEmpIds(batchId, l)); + }); + return list; + } + + public List getSuccessPushDetailListByReceiver(Long uid) { + List detailList = listSome(SalaryStatisticsPushDetailPO.builder() + .employeeId(uid) + .pushStatus("true") + .deleteType(NumberUtils.INTEGER_ZERO) + .build()); + // 杩囨护宸茬粡鎾ゅ洖鐨 + return detailList.stream().filter(po -> !(Objects.equals(po.getRebackStatus(), "true"))).collect(Collectors.toList()); + } +} diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsPushServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsPushServiceImpl.java new file mode 100644 index 000000000..97b67c878 --- /dev/null +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsPushServiceImpl.java @@ -0,0 +1,776 @@ +package com.engine.salary.report.service.impl; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.common.BaseQueryParam; +import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.enums.sicategory.DeleteTypeEnum; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.mapper.report.SalaryStatisticsPushMapper; +import com.engine.salary.report.entity.dto.SalaryStatisticsPushDetail; +import com.engine.salary.report.entity.dto.SalaryStatisticsPushDetailFormDTO; +import com.engine.salary.report.entity.dto.SalaryStatisticsPushDetailTableDTO; +import com.engine.salary.report.entity.dto.SalaryStatisticsPushTableDTO; +import com.engine.salary.report.entity.param.SalaryStatisticsPushDetailParam; +import com.engine.salary.report.entity.param.SalaryStatisticsPushParam; +import com.engine.salary.report.entity.po.SalaryStatisticsPushDetailPO; +import com.engine.salary.report.entity.po.SalaryStatisticsPushPO; +import com.engine.salary.report.entity.po.SalaryStatisticsReportPO; +import com.engine.salary.report.service.SalaryStatisticsPushDetailService; +import com.engine.salary.report.service.SalaryStatisticsPushService; +import com.engine.salary.report.service.SalaryStatisticsReportService; +import com.engine.salary.report.util.ReportTimeUtil; +import com.engine.salary.service.SalaryEmployeeService; +import com.engine.salary.service.TaxAgentService; +import com.engine.salary.service.impl.SalaryEmployeeServiceImpl; +import com.engine.salary.service.impl.TaxAgentServiceImpl; +import com.engine.salary.util.SalaryDateUtil; +import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.db.MapperProxyFactory; +import com.engine.salary.util.page.PageInfo; +import com.engine.salary.util.page.SalaryPageUtil; +import com.google.common.collect.Lists; +import dm.jdbc.util.IdGenerator; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; +import weaver.hrm.User; + +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author Harryxzy + * @ClassName SalaryStatisticsPushServiceImpl + * @date 2023/09/11 10:15 + * @description 钖叕缁熻鎶ヨ〃娑堟伅鎺ㄩ + */ +public class SalaryStatisticsPushServiceImpl extends Service implements SalaryStatisticsPushService { + + private SalaryStatisticsPushMapper getSalaryStatisticsPushMapper() { + return MapperProxyFactory.getProxy(SalaryStatisticsPushMapper.class); + } + + private SalaryStatisticsPushDetailService getSalaryStatisticsPushDetailService(User user) { + return ServiceUtil.getService(SalaryStatisticsPushDetailServiceImpl.class, user); + } + + private SalaryEmployeeService getSalaryEmployeeService(User user) { + return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); + } + + private SalaryStatisticsReportService getSalaryStatisticsReportService(User user) { + return ServiceUtil.getService(SalaryStatisticsReportServiceImpl.class, user); + } + + private TaxAgentService getTaxAgentService(User user) { + return (TaxAgentService) ServiceUtil.getService(TaxAgentServiceImpl.class, user); + } + + @Override + public Map getPushForm() { + Map resultMap = new HashMap<>(); + // items + // 鍒嗕韩鎶ヨ〃item + List> reportOptions = buildReportIdsOptions(Long.valueOf(user.getUID())); + resultMap.put("reportOptions", reportOptions); + // data + resultMap.putAll(formData(Long.valueOf(user.getUID()))); + return resultMap; + } + + + private Map formData(Long employeeId) { + Map data = new HashMap<>(); + SalaryStatisticsPushPO pushPO = getListByEmployeeId(employeeId); + data.put("pushTitle", pushPO.getPushTitle()); + data.put("mark", pushPO.getMark()); + if (pushPO.getRemind() == null) { + data.put("remind", "1"); + } else { + data.put("remind", pushPO.getRemind().toString()); + } + return data; + } + + private SalaryStatisticsPushPO getListByEmployeeId(Long uid) { + List list = getSalaryStatisticsPushMapper().listLatestRecordByCreator(uid); + if (CollectionUtils.isEmpty(list)) { + return SalaryStatisticsPushPO.builder().build(); + } + return list.get(0); + } + + + private List> buildReportIdsOptions(Long employeeId) { + List> reportIdsOptions = new ArrayList<>(); + List reportPOS = getSalaryStatisticsReportService(user).listAll(); + Boolean needAuth = getTaxAgentService(user).isNeedAuth((long) user.getUID()); + if (needAuth) { + // 鍙兘澶熷垎浜垱寤轰汉鏄湰浜虹殑鎶ヨ〃 + reportPOS = reportPOS.stream().filter(po -> po.getCreator().compareTo(employeeId) == 0).collect(Collectors.toList()); + } + reportPOS.forEach( po -> { + Map option = new HashMap<>(); + option.put("id", po.getId().toString()); + option.put("reportName", po.getReportName()); + reportIdsOptions.add(option); + }); + + return reportIdsOptions; + } + + @Override + public SalaryStatisticsPushDetail getPushDetail(SalaryStatisticsPushDetailParam param) { + SalaryStatisticsPushPO salaryStatisticsPushPO = getSalaryStatisticsPushMapper().getById(param.getId()); + if (Objects.isNull(salaryStatisticsPushPO)) { + throw new SalaryRunTimeException("璇ュ垎浜褰曚笉瀛樺湪"); + } + Boolean needAuth = getTaxAgentService(user).isNeedAuth((long) user.getUID()); + if (needAuth && salaryStatisticsPushPO.getCreator().compareTo(Long.valueOf(user.getUID())) != 0) { + throw new SalaryRunTimeException("鏃犳潈鏌ョ湅璇ュ垎浜褰"); + } + SalaryStatisticsPushDetail result = new SalaryStatisticsPushDetail(); + result.setDetailForm(buildDetailForm(salaryStatisticsPushPO)); + result.setDetailTable(buildDetailTable(param)); + return result; + } + + @Override + public void push(SalaryStatisticsPushParam param) { + // 鐢熸垚鍒嗕韩閾炬帴涓殑id鍙傛暟 + param.setId(createAndGetBatchId(param)); + sendMsg(param); + } + +// public void configSave(SalaryStatisticsPushParam param, String tenantkey, Long employeeId) { +// if (StringUtils.isNotEmpty(param.getConfig())) { +// CreateRuleEntity createRule = new CreateRuleEntity() +// .setName(SalaryI18nUtil.getI18nLabel(tenantkey, employeeId, 220428, "鍒嗕韩鎶ヨ〃")) +// .setUser(new UserEntity(employeeId, tenantkey)) +// .setModule(MessageModule.HRSA) +// .setEvent(MessageEvent.REPORT_SHARING) +// .setBusinessId(param.getBusinessId().toString()) +// .setConfig(param.getConfig()); +// log.info("RuleRest.createRuleV2 -> config ====== {}", param.getConfig()); +// WeaResult weaResult = ruleRest.createRuleV2(createRule); +// SalaryAssert.isTrue(weaResult.isStatus(), SalaryI18nUtil.getI18nLabel(184008, "RPC鎺ュ彛鍒涘缓瑙勫垯澶辫触")); +// } +// } + + @Override + public void addSharedPush(SalaryStatisticsPushParam param) { + SalaryStatisticsPushPO pushPO = getSalaryStatisticsPushMapper().getById(param.getId()); + Collection sharedBy = sharedByValid(param.getSharedBy(), param.getId()); + if (CollectionUtils.isEmpty(sharedBy)) { + return; + } + SalaryStatisticsPushParam pushParam = new SalaryStatisticsPushParam(); + pushParam.setReportIds(Arrays.asList(pushPO.getReportIds().split(","))); + pushParam.setPushTitle(pushPO.getPushTitle()); +// pushParam.setEmailAccountId(pushPO.getEmailAccountId()); +// pushParam.setEmailAdress(pushParam.getEmailAdress()); + pushParam.setSharedBy((List) sharedBy); + pushParam.setStartTime(pushPO.getStartTime()); + pushParam.setEndTime(pushPO.getEndTime()); +// pushParam.setPushChannel(Arrays.stream(pushPO.getPushChannel().split(",")).map(Integer::valueOf).collect(Collectors.toList())); + pushParam.setMark(pushPO.getMark()); + pushParam.setId(pushPO.getId()); + sendMsg(pushParam); + } + + public Collection sharedByValid(List sharedBy, Long batchId) { + List list = getSalaryStatisticsPushDetailService(user).queryPushDetailPOByBatchIdAndEmpIds(batchId, sharedBy); + List finalList = list; + // 鑾峰彇闇瑕佸垎浜垨閲嶆柊鍒嗕韩鐨勪汉 + sharedBy = sharedBy.stream().filter(shareId -> { + List collect = finalList.stream().filter(po -> Objects.equals(po.getEmployeeId(), shareId)).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(collect)) { + return true; + } + boolean enabledSend = collect.stream().anyMatch(po -> Objects.equals(po.getPushStatus(), "true") && !Objects.equals(po.getRebackStatus(), "true")); + return !enabledSend; + + }).collect(Collectors.toList()); + return sharedBy; + } + + public void sendMsg(SalaryStatisticsPushParam param) { + // 鑾峰彇琚垎浜汉 + List receivers = getSalaryEmployeeService(user).getEmployeeByIds(param.getSharedBy()); + // 鍙戦佹秷鎭 + receivers.forEach(receiver -> { + // 鍙戦佹秷鎭... + // 鍙戦佹垚鍔 + doSuccess(receiver, param); + }); + } + + +// @Override +// public void rePush(Long id, Long employeeId, String tenantKey) { +// SalaryStatisticsPushDetailPO detailPO = salaryStatisticsPushDetailMapper.selectById(id); +// SalaryStatisticsPushPO pushPO = salaryStatisticsPushMapper.selectById(detailPO.getBatchId()); +// SalaryStatisticsPushParam param = new SalaryStatisticsPushParam(); +// param.setReportIds(Arrays.asList(pushPO.getReportIds().split(","))); +// param.setPushTitle(pushPO.getPushTitle()); +// param.setEmailAdress(pushPO.getEmailAccount()); +// param.setEmailAccountId(pushPO.getEmailAccountId()); +// param.setSharedBy(Collections.singletonList(detailPO.getEmployeeId())); +// param.setStartTime(pushPO.getStartTime()); +// param.setEndTime(pushPO.getEndTime()); +// param.setPushChannel(Arrays.stream(pushPO.getPushChannel().split(",")).map(Integer::valueOf).collect(Collectors.toList())); +// param.setMark(pushPO.getMark()); +// param.setId(pushPO.getId()); +// sendMsg(param, employeeId, tenantKey); +// } + + @Override + public void cancel(Long id) { + SalaryStatisticsPushDetailPO detailPO = getSalaryStatisticsPushDetailService(user).getById(id); + if (ObjectUtils.isEmpty(detailPO)) { + throw new SalaryRunTimeException("璇ユ槑缁嗕笉瀛樺湪"); + } + cancelSingle(detailPO); + } + + public void cancelSingle(SalaryStatisticsPushDetailPO detailPO) { + // 鎾ゅ洖娑堟伅... + // 鎾ゅ洖鍒嗕韩璁板綍 + doCancelResult(detailPO); + } + + @Override + public void cancelAll(Long id) { + // 鏍规嵁鍒嗕韩鎵规id锛岃幏鍙栨墍鏈夌殑鍒嗕韩鏄庣粏 + List salaryStatisticsPushDetailPOS = getSalaryStatisticsPushDetailService(user).queryPushDetailPOByBatchIds(Collections.singletonList(id)); + salaryStatisticsPushDetailPOS.forEach(po -> cancelSingle(po)); + } + +// public List getSalatyPushDetailPOSBybatchId(Long batchId, String tenantKey) { +// return new LambdaQueryChainWrapper<>(salaryStatisticsPushDetailMapper) +// .eq(SalaryStatisticsPushDetailPO::getTenantKey, tenantKey) +// .eq(SalaryStatisticsPushDetailPO::getBatchId, batchId) +// .eq(SalaryStatisticsPushDetailPO::getDeleteType, DeleteTypeEnum.NOT_DELETED.getValue()) +// .isNull(SalaryStatisticsPushDetailPO::getRebackStatus) +// .list(); +// } +// +// @Override +// public SalaryStatisticsPushPO getById(Long id, String tenantKey) { +// return salaryStatisticsPushMapper.selectById(id); +// } +// +// @Override +// public List getPushDetailsById(Long batchId, String tenantKey) { +// return new LambdaQueryChainWrapper<>(salaryStatisticsPushDetailMapper) +// .eq(SalaryStatisticsPushDetailPO::getTenantKey, tenantKey) +// .eq(SalaryStatisticsPushDetailPO::getDeleteType, DeleteTypeEnum.NOT_DELETED.getValue()) +// .eq(SalaryStatisticsPushDetailPO::getBatchId, batchId) +// .list(); +// } + + + @Override + public void updateReportViewStatus(List batchId, Long uid) { + List salaryStatisticsPushDetailPOS = getSalaryStatisticsPushDetailService(user).queryPushDetailPOByBatchIds(batchId); + salaryStatisticsPushDetailPOS.stream().filter(po -> Objects.equals(po.getPushStatus(), "true") && !(Objects.equals(po.getRebackStatus(), "true")) && Objects.equals(uid, po.getEmployeeId())) + .collect(Collectors.toList()).forEach(e -> { + e.setViewStatus("true"); + e.setUpdateTime(new Date()); + getSalaryStatisticsPushDetailService(user).updateIgnoreNull(e); + }); + } + +// @Override +// public void sendViewedMsg(Long batchId, Long reportId, Long employeeId, String tenantKey) { +// SalaryStatisticsPushPO pushPO = salaryStatisticsPushMapper.selectById(batchId); +// if (!Objects.equals(1, pushPO.getRemind())) { +// return; +// } +// List salaryStatisticsPushDetailPOS = queryPushDetailPOByBatchId(batchId, tenantKey); +// List detailPOList = salaryStatisticsPushDetailPOS.stream().filter(po -> Objects.equals(po.getPushStatus(), "true") && po.getRebackStatus() == null && Objects.equals(employeeId, po.getEmployeeId())).collect(Collectors.toList()); +// if (CollectionUtils.isEmpty(detailPOList)) { +// return; +// } +// SalaryStatisticsPushParam param = new SalaryStatisticsPushParam(); +// param.setPushTitle(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 227925, "鎶ヨ〃宸叉煡鐪嬫彁閱")); +// param.setSharedBy(Collections.singletonList(pushPO.getCreator())); +// param.setPushChannel(Collections.singletonList(MessageChannelEnum.IM.getType())); +// param.setMark(buildViewMark(pushPO, detailPOList, employeeId, tenantKey)); +// SendMessageEntity entity = buildSendMessage(param, employeeId, tenantKey); +// entity.getEntity().setPcUrl(""); +// entity.getEntity().setH5Url(""); +// entity.getEntity().setPcLinkeType(0); +// entity.getEntity().setH5LinkeType(0); +// List receivers = buildReceivers(param, tenantKey); +// // 鍙戦佹秷鎭 +// receivers.forEach(receiver -> { +// entity.setReceivers(Collections.singletonList(receiver)); +// try { +// asyncSystemMessageRest.sendMsg(entity); +// } catch (Exception e) { +// log.error("鏌ョ湅娑堟伅鍙戦佸け璐", e); +// } +// }); +// } +// +// public String buildViewMark(SalaryStatisticsPushPO pushPO, List detailPOList, Long employeeId, String tenantkey) { +// SimpleEmployee employee = hrmCommonEmployeeService.getById(employeeId); +// if (employee == null) { +// return SalaryI18nUtil.getI18nLabel(tenantkey, employeeId, 227926, "娑堟伅鍒涘缓浜哄凡涓嶅瓨鍦"); +// } +// return employee.getUsername() + +// SalaryI18nUtil.getI18nLabel(tenantkey, employeeId, 227927, "宸叉煡鐪嬫偍鍒嗕韩鐨勬姤琛ㄣ") + +// SalaryI18nUtil.getI18nLabel(tenantkey, employeeId, 227928, "鍒嗕韩涓婚锛") + +// pushPO.getPushTitle() + "锛" + +// SalaryI18nUtil.getI18nLabel(tenantkey, employeeId, 233590, "鍒嗕韩鏃堕棿锛") + +// detailPOList.get(0).getPushTime() + +// "銆"; +// } +// + + public void doCancelResult(SalaryStatisticsPushDetailPO detailPO) { + // 鍒ゆ柇鎾ゅ洖娑堟伅鏄惁鎴愬姛... + // 娑堟伅鎾ゅ洖鎴愬姛鐨勮瘽鎾ゅ洖鍒嗕韩璁板綍 + detailPO.setRebackStatus("true"); + detailPO.setRebackTime(ReportTimeUtil.getFormatLocalDateTime(LocalDateTime.now())); + getSalaryStatisticsPushDetailService(user).updateIgnoreNull(detailPO); + } + + + +// public CancleMessageEntity buildCancelMessageEntity(SalaryStatisticsPushDetailPO po, Long employeeId, String tenantKey) { +// SalaryStatisticsPushPO pushPO = salaryStatisticsPushMapper.selectById(po.getBatchId()); +// CancleMessageEntity cancleMessageEntity = new CancleMessageEntity(); +// cancleMessageEntity.setMsgId(po.getMsgId()); +// cancleMessageEntity.setModule(MessageModule.HRSA); +// cancleMessageEntity.setEvent(MessageEvent.REPORT_SHARING); +// cancleMessageEntity.setText(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 221630, "姝ゆ秷鎭凡鏀跺洖,濡傛湁闂,璇疯仈绯荤鐞嗗憳")); +// Entity entity = new Entity(); +// entity.setId(String.valueOf(IdGenerator.generate())); +// entity.setModule(EntityType.hrmsalary.name()); +// entity.setName(pushPO.getPushTitle()); +// cancleMessageEntity.setEntity(entity); +// UserEntity user = new UserEntity(employeeId, tenantKey); +// SimpleEmployee employeeById = hrmCommonEmployeeService.getEmployeeById(employeeId, tenantKey); +// user.setName(employeeById.getUsername()); +// cancleMessageEntity.setOperator(user); +// return cancleMessageEntity; +// } + + public void doSuccess(DataCollectionEmployee receiver, SalaryStatisticsPushParam param) { + List pushDetailByBatchIdAndEmpId = getSalaryStatisticsPushDetailService(user).listSome(SalaryStatisticsPushDetailPO.builder() + .batchId(param.getId()) + .employeeId(receiver.getEmployeeId()) + .build()); + Date now = new Date(); + if (CollectionUtils.isEmpty(pushDetailByBatchIdAndEmpId)) { + SalaryStatisticsPushDetailPO detailPO = SalaryStatisticsPushDetailPO.builder() + .id(IdGenerator.generate()) + .batchId(param.getId()) +// .msgId(result.getData()) + .pushStatus("true") + .pushTime(ReportTimeUtil.getFormatLocalDateTime(LocalDateTime.now())) + .deleteType(DeleteTypeEnum.NOT_DELETED.getValue()) + .employeeId(receiver.getEmployeeId()) + .updateTime(now) + .creator(Long.valueOf(user.getUID())) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + getSalaryStatisticsPushDetailService(user).insertIgnoreNull(detailPO); + } else { + SalaryStatisticsPushDetailPO PO = pushDetailByBatchIdAndEmpId.get(0); + PO.setPushStatus("true"); + PO.setRebackStatus(""); + PO.setRebackTime(""); + PO.setViewStatus("false"); +// PO.setMsgId(result.getData()); + PO.setPushTime(ReportTimeUtil.getFormatLocalDateTime(LocalDateTime.now())); + PO.setUpdateTime(now); + PO.setCreator(Long.valueOf(user.getUID())); + getSalaryStatisticsPushDetailService(user).updateIgnoreNull(PO); + } + } + +// public void delBatchId(Long id) { +// SalaryStatisticsPushPO pushPO = salaryStatisticsPushMapper.selectById(id); +// pushPO.setDeleteType(DeleteTypeEnum.PHYSICAL_DELETED.getValue()); +// salaryStatisticsPushMapper.updateById(pushPO); +// } +// +// public void paramValid(SalaryStatisticsPushParam param, Long employeeId, String tenantKey) { +// channelCheck(param, employeeId, tenantKey); +// emileCheck(param, employeeId, tenantKey); +// bridgeCheck(param, employeeId, tenantKey); +// } + + public Long createAndGetBatchId(SalaryStatisticsPushParam param) { + Date now = new Date(); + SalaryStatisticsPushPO pushPO = SalaryStatisticsPushPO.builder() + .id(IdGenerator.generate()) + .creator(Long.valueOf(user.getUID())) + .deleteType(DeleteTypeEnum.NOT_DELETED.getValue()) + .createTime(now) + .updateTime(now) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) +// .pushChannel(buildChannelString(param)) + .startTime(param.getStartTime()) + .endTime(param.getEndTime()) + .remind(param.getRemind()) +// .emailAccount(param.getEmailAdress()) +// .emailAccountId(param.getEmailAccountId()) + .mark(param.getMark()) +// .pushTitle(param.getPushTitle()) + .reportIds(String.join(",", param.getReportIds())) + .build(); + getSalaryStatisticsPushMapper().insertIgnoreNull(pushPO); + return pushPO.getId(); + } + +// public String buildChannelString(SalaryStatisticsPushParam param) { +// Set channelEnums = buildChannel(param); +// List channelType = channelEnums.stream().map(e -> String.valueOf(e.getType())).collect(Collectors.toList()); +// return String.join(",", channelType); +// } +// +// +// public void channelCheck(SalaryStatisticsPushParam param, Long employeeId, String tenantKey) { +// if (CollectionUtils.isEmpty(param.getPushChannel())) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 221582, "鑷冲皯鏈変竴涓彂閫侀氶亾")); +// } +// } +// +// public void emileCheck(SalaryStatisticsPushParam param, Long employeeId, String tenantKey) { +// if (param.getPushChannel().contains(MessageChannelEnum.EMAIL.getType())) { +// if (!isEnableEmail(tenantKey)) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 221580, "閭欢妯″潡鏈噰璐,涓嶅彲浣跨敤閭欢閫氶亾!")); +// } +// // 鎺ユ敹鑰呴偖绠辨牎楠 +// List employeeByIds = hrmCommonEmployeeService.getEmployeeByIds(param.getSharedBy(), tenantKey); +// List usernameList = new ArrayList<>(); +// employeeByIds.forEach(employee -> { +// if (StringUtils.isEmpty(employee.getEmail())) { +// usernameList.add(employee.getUsername()); +// } +// }); +// if (CollectionUtils.isNotEmpty(usernameList)) { +// throw new SalaryRunTimeException(String.join(",", usernameList) + SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 221578, "娌℃湁鍙敤閭锛岃鍏堥厤缃啀鍙戦!")); +// } +// if (StringUtils.isEmpty(param.getEmailAdress())) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 224278, "鍙戦侀偖绠变笉鍙负绌")); +// } +// } +// } +// +// public void bridgeCheck(SalaryStatisticsPushParam param, Long employeeId, String tenantKey) { +// if (param.getPushChannel().contains(MessageChannelEnum.CLOUD_BRIDGE.getType()) && !isEnableEbridge(tenantKey)) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 221581, "浜戞ˉ妯″潡鏈噰璐,涓嶅彲浣跨敤浜戞ˉ閫氶亾!")); +// } +// } +// +// public SendMessageEntity buildSendMessage(SalaryStatisticsPushParam param, Long employeeId, String tenantKey) { +// // 鍩熷悕 +// param.setDomain(weaverConfigUtils.getValueFromDataMap("primary.domain")); +// SendMessageEntity entity = new SendMessageEntity(); +// // 妯″潡 +// entity.setModule(MessageModule.HRSA); +// // 娑堟伅浜嬩欢 +// entity.setEvent(MessageEvent.REPORT_SHARING); +// // 娑堟伅閫氶亾 +// entity.setChannels(buildChannel(param)); +// // 涓婚 +// entity.setText(param.getPushTitle()); +// // 鍙戦佽呬俊鎭 +// entity.setSender(buildSendEntity(employeeId, tenantKey)); +// // 鎺ユ敹鑰 +// entity.setReceivers(buildReceivers(param, tenantKey)); +// // emile娑堟伅浣 +// entity.setEmailInfo(buildEmailEntity(param, employeeId, tenantKey)); +// // im娑堟伅浣 +// entity.setEntity(buildImEntity(param)); +// // 娑堟伅鍐呭 im鍜宐ridge鍏敤 +// entity.setText(param.getMark()); +// // 浜戞ˉ +// entity.setTitle(param.getPushTitle()); +// return entity; +// } +// +// public UserEntity buildSendEntity(Long employeeId, String tenantKey) { +// SimpleEmployee employeeById = hrmCommonEmployeeService.getEmployeeById(employeeId, tenantKey); +// UserEntity userEntity = new UserEntity(); +// userEntity.setEmployeeId(employeeId); +// userEntity.setTenantKey(tenantKey); +// userEntity.setName(employeeById.getUsername()); +// return userEntity; +// } +// +// +// public List buildReceivers(SalaryStatisticsPushParam param, String tenantKey) { +// List simpleEmployeeList = hrmCommonEmployeeService.getEmployeeByIds(param.getSharedBy(), tenantKey); +// return simpleEmployeeList.stream().map(employee -> { +// UserEntity userEntity = new UserEntity(); +// userEntity.setEmployeeId(employee.getEmployeeId()); +// userEntity.setTenantKey(tenantKey); +// userEntity.setEmail(employee.getEmail()); +// return userEntity; +// }).collect(Collectors.toList()); +// } +// +// public Entity buildImEntity(SalaryStatisticsPushParam param) { +// Entity imEntity = new Entity(); +// imEntity.setId(IDGenerator.generateId()); +// imEntity.setName(param.getPushTitle()); +// imEntity.setModule("hrmsalary"); +// imEntity.setPcLinkeType(2); +// imEntity.setH5LinkeType(2); +// imEntity.setPcUrl(buildPcUrl(param)); +// imEntity.setH5Url(buildPcUrl(param)); +// return imEntity; +// } +// +// public String buildPcUrl(SalaryStatisticsPushParam param) { +// return param.getDomain() + String.format("/sp/ebdpage/view/828107636586323968?id=%s&share=true", param.getId()); +// } +// +// public EmailEntity buildEmailEntity(SalaryStatisticsPushParam param, Long employeeId, String tenantKey) { +// EmailEntity emailEntity = new EmailEntity(); +// if (param.getEmailAccountId() == null) { +// return emailEntity; +// } +// emailEntity.setEmailSubject(param.getPushTitle()); +// emailEntity.setEmailContent(buildEmailContent(param)); +// emailEntity.setMailUserAccountId(param.getEmailAccountId()); +// return emailEntity; +// } +// +// public String buildEmailContent(SalaryStatisticsPushParam param) { +// String emailContent = "
" + +// "
" + +// param.getMark() + +// "
" + +// "" + buildPcUrl(param) + "" + +// "
"; +// return emailContent; +// } +// +// public Set buildChannel(SalaryStatisticsPushParam param) { +// Set channelEnums = new HashSet<>(); +// if (param.getPushChannel().contains(MessageChannelEnum.EMAIL.getType())) { +// channelEnums.add(MessageChannelEnum.EMAIL); +// } +// if (param.getPushChannel().contains(MessageChannelEnum.CLOUD_BRIDGE.getType())) { +// channelEnums.add(MessageChannelEnum.CLOUD_BRIDGE); +// } +// if (param.getPushChannel().contains(MessageChannelEnum.IM.getType())) { +// channelEnums.add(MessageChannelEnum.IM); +// } +// return channelEnums; +// } +// +// public Boolean isEnableEmail(String tenantKey) { +//// boolean isPayModule = remoteTenantService.isPayModule(tenantKey, EntityType.email.name()); +//// boolean checkDisplayModule = CollectionUtils.emptyIfNull(baseEnvInfoService.listDisplayModules(tenantKey)).stream().anyMatch(m -> m.equals(EntityType.email.name())); +//// return isPayModule && checkDisplayModule; +// return CollectionUtils.emptyIfNull(baseEnvInfoService.listDisplayModules(tenantKey)).stream().anyMatch(m -> m.equals(EntityType.email.name())); +// } +// +// public Boolean isEnableEbridge(String tenantKey) { +// return CollectionUtils.emptyIfNull(baseEnvInfoService.listDisplayModules(tenantKey)).stream().anyMatch(m -> m.equals("wechatEnterprise")); +// } + + public SalaryStatisticsPushDetailFormDTO buildDetailForm(SalaryStatisticsPushPO salaryStatisticsPushPO) { + List reportIds = Arrays.stream(salaryStatisticsPushPO.getReportIds().split(",")).map(Long::valueOf).collect(Collectors.toList()); + List reportNames = getSalaryStatisticsReportService(user).getByIds(reportIds).stream().map(SalaryStatisticsReportPO::getReportName).collect(Collectors.toList()); + SalaryStatisticsPushDetailFormDTO formDTO = SalaryStatisticsPushDetailFormDTO.builder() + .remark(salaryStatisticsPushPO.getMark()) + .effectiveTime(salaryStatisticsPushPO.getStartTime() + "-" + salaryStatisticsPushPO.getEndTime()) + .reportName(String.join("銆", reportNames)) + .build(); + return formDTO; + } + + public PageInfo buildDetailTable(SalaryStatisticsPushDetailParam param) { + List salaryStatisticsPushDetailPOS = getSalaryStatisticsPushDetailService(user).queryPushDetailPOByBatchIds(Arrays.asList(param.getId())); + PageInfo dtoPage = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), SalaryStatisticsPushDetailTableDTO.class); + List records = salaryStatisticsPushDetailPOS.stream().map(po -> { + return SalaryStatisticsPushDetailTableDTO.builder() + .id(po.getId()) + .pushStatus(buildStatus(po.getPushStatus())) + .pushTime(po.getPushTime()) + .rebackStatus(buildStatus(po.getRebackStatus())) + .viewStatus(buildViewStatus(po.getViewStatus())) + .rebackTime(po.getRebackTime()) + .userName(buildUserName(po.getEmployeeId())) + .employeeId(po.getEmployeeId()) + .build(); + }).collect(Collectors.toList()); + if (StringUtils.isNotEmpty(param.getUserNameSearch())) { + records = records.stream().filter(record -> record.getUserName().contains(param.getUserNameSearch())).collect(Collectors.toList()); + } + dtoPage.setList(records); + dtoPage.setTotal(records.size()); + return dtoPage; + } + + public String buildUserName(Long employeeId) { + DataCollectionEmployee employeeById = getSalaryEmployeeService(user).getEmployeeById(employeeId); + if (employeeById != null) { + return employeeById.getUsername(); + } + return ""; + } + + public String buildViewStatus(String status) { + if (Objects.equals(status, "true")) { + return SalaryI18nUtil.getI18nLabel(0, "宸叉煡鐪"); + } else { + return SalaryI18nUtil.getI18nLabel(0, "鏈煡鐪"); + } + } + + public String buildStatus(String status) { + if (StringUtils.isEmpty(status)) { + return ""; + } + if (Objects.equals("true", status)) { + return SalaryI18nUtil.getI18nLabel(0, "鎴愬姛"); + } + if (Objects.equals("false", status)) { + return SalaryI18nUtil.getI18nLabel(0, "澶辫触"); + } + return ""; + } + + @Override + public PageInfo getPushTable(BaseQueryParam param) { + Boolean needAuth = getTaxAgentService(user).isNeedAuth((long) user.getUID()); + List salaryStatisticsPushPOS; + if (needAuth) { + salaryStatisticsPushPOS = getSalaryStatisticsPushMapper().listSome(SalaryStatisticsPushPO.builder().creator(Long.valueOf(user.getUID())).build()); + } else { + salaryStatisticsPushPOS = getSalaryStatisticsPushMapper().listSome(SalaryStatisticsPushPO.builder().build()); + } + + salaryStatisticsPushPOS = SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), salaryStatisticsPushPOS); + PageInfo dtoPageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), SalaryStatisticsPushTableDTO.class); + if (CollectionUtils.isNotEmpty(salaryStatisticsPushPOS)) { + // 鑾峰彇鎶ヨ〃鍚嶇О key:鎶ヨ〃id锛 value锛氭姤琛ㄥ悕绉 + List reportIds = salaryStatisticsPushPOS.stream().map(po -> Arrays.asList(StringUtils.split(po.getReportIds(), ","))) + .flatMap(Collection::stream).distinct().map(Long::valueOf).collect(Collectors.toList()); + Map statisticsNameMap = SalaryEntityUtil.convert2Map(getSalaryStatisticsReportService(user).getByIds(reportIds), SalaryStatisticsReportPO::getId, SalaryStatisticsReportPO::getReportName); + + // 鑾峰彇鎶ヨ〃鍒嗕韩鏄庣粏 key:鎵规id锛 value锛氬垎浜槑缁嗗垪琛 + List batchIds = salaryStatisticsPushPOS.stream().map(po -> Long.valueOf(po.getId())).collect(Collectors.toList()); + Map> groupByBatchId; + if (CollectionUtils.isNotEmpty(batchIds)) { + groupByBatchId = SalaryEntityUtil.group2Map( + getSalaryStatisticsPushDetailService(user).queryPushDetailPOByBatchIds(batchIds), + SalaryStatisticsPushDetailPO::getBatchId); + } else { + groupByBatchId = Collections.emptyMap(); + } + List dtoList = salaryStatisticsPushPOS.stream().map(po -> { + return SalaryStatisticsPushTableDTO.builder() + .reportName(buildReportName(po.getReportIds(), statisticsNameMap)) + .effectiveTime(StringUtils.isEmpty(po.getStartTime()) ? "" : po.getStartTime() + + "鈥斺" + (StringUtils.isEmpty(po.getEndTime()) ? "" : po.getEndTime())) + .id(po.getId()) + .successPush(buildSuccessPush(groupByBatchId.get(po.getId()))) + .sharedView(buildSharedView(groupByBatchId.get(po.getId()))) + .build(); + }).collect(Collectors.toList()); + dtoPageInfo.setList(dtoList); + dtoPageInfo.setTotal(dtoList.size()); + } + return dtoPageInfo; + } + + public String buildSharedView(List list) { + List successEmpIds = list.stream().filter(po -> Objects.equals(po.getPushStatus(), "true") && !(Objects.equals(po.getRebackStatus(), "true"))).map(SalaryStatisticsPushDetailPO::getEmployeeId).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(successEmpIds)) { + return "0/0"; + } + List viewEmpIds = list.stream().filter(po -> Objects.equals(po.getViewStatus(), "true")).map(SalaryStatisticsPushDetailPO::getEmployeeId).collect(Collectors.toList()); + return viewEmpIds.size() + "/" + successEmpIds.size(); + } + + public String buildSuccessPush(List list) { + List employeeByIds = getSalaryEmployeeService(user).getEmployeeByIds(list.stream().filter(po -> Objects.equals(po.getPushStatus(), "true") && !(Objects.equals(po.getRebackStatus(), "true"))).map(SalaryStatisticsPushDetailPO::getEmployeeId).collect(Collectors.toList())); + Set employeeName = employeeByIds.stream().map(DataCollectionEmployee::getUsername).collect(Collectors.toSet()); + return String.join("銆", employeeName); + } + + public String buildReportName(String reportIds, Map statisticsNameMap) { + List ids = Arrays.asList(reportIds.split(",")); + List reportName = Lists.newArrayList(); + ids.forEach(id -> { + String name = statisticsNameMap.get(Long.valueOf(id)); + if (name != null) { + reportName.add(name); + } + + }); + return String.join("銆", reportName); + } + + @Override + public List getSuccessPushListByReceiver(Long uid) { + List batchIds = getSalaryStatisticsPushDetailService(user).getSuccessPushDetailListByReceiver(uid) + .stream().map(SalaryStatisticsPushDetailPO::getBatchId).collect(Collectors.toList()); + // 鏍规嵁batchId鑾峰彇鍒嗕韩璁板綍 + if (CollectionUtils.isEmpty(batchIds)) { + return Collections.emptyList(); + } + List pushList = new ArrayList<>(); + List> partition = Lists.partition((List)batchIds, 1000); + partition.forEach(ids -> { + pushList.addAll(getSalaryStatisticsPushMapper().listSome(SalaryStatisticsPushPO.builder().ids(ids).build())); + }); + return filterReportByTime(pushList); + } + + @Override + public List getPushListByReportIdAndIds(Long reportId, List ids) { + List pushList = getSalaryStatisticsPushMapper().listByReportIdAndIds(reportId.toString(), ids); + pushList = pushList.stream().filter( push -> { + return Arrays.asList(push.getReportIds().split(",")).contains(reportId.toString()); + }).collect(Collectors.toList()); + return pushList; + } + + List filterReportByTime(List pushList){ + // 鎶ヨ〃鍒嗕韩鏃堕棿鏍¢獙 + String formatLocalDateTime = SalaryDateUtil.getFormatLocalDate(LocalDateTime.now()); + List result = pushList.stream().filter(pushPO -> { + if (pushPO.getStartTime().compareTo(formatLocalDateTime) > 0 || (StringUtils.isNotEmpty(pushPO.getEndTime()) && pushPO.getEndTime().compareTo(formatLocalDateTime) < 0)) { + return false; + } + return true; + }).collect(Collectors.toList()); + return result; + } + + @Override + public List shareReportValid(Long reportId, Long uid) { + // 鑾峰彇璇ュ憳宸ユ墍鏈夎鍒嗕韩鎴愬姛鐨勬槑缁 + List successPushDetailList = getSalaryStatisticsPushDetailService(user).getSuccessPushDetailListByReceiver(uid); + // 鏍规嵁鎶ヨ〃id锛屽垎浜壒娆d鏌ヨ鍒嗕韩鎵规淇℃伅 + List batchIds = successPushDetailList.stream().map(SalaryStatisticsPushDetailPO::getBatchId).collect(Collectors.toList()); + List pushList= getPushListByReportIdAndIds(reportId,batchIds); + if (CollectionUtils.isEmpty(pushList)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"鏆傛棤鏉冮檺鏌ョ湅璇ユ姤琛")); + } + // 鏍¢獙鏄惁鍦ㄥ垎浜殑鏈夋晥鏃堕棿鍐 + pushList = filterReportByTime(pushList); + if (CollectionUtils.isEmpty(pushList)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"璇ユ姤琛ㄧ殑鍒嗕韩涓嶅湪鏈夋晥鏈熷唴锛屾棤娉曟煡鐪")); + } + return pushList; + } +} + + diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java index d9ab89660..715d9306c 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java @@ -132,11 +132,29 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary return getSalaryStatisticsReportMapper().listSome(SalaryStatisticsReportPO.builder().build()); } + @Override + public List listByCreator(Long uid) { + Boolean needAuth = getTaxAgentService(user).isNeedAuth((long) user.getUID()); + if (needAuth) { + return getSalaryStatisticsReportMapper().listSome(SalaryStatisticsReportPO.builder().creator(uid).build()); + } + + return getSalaryStatisticsReportMapper().listSome(SalaryStatisticsReportPO.builder().build()); + } + @Override public SalaryStatisticsReportPO getById(Long id) { return getSalaryStatisticsReportMapper().getById(id); } + @Override + public List getByIds(List ids) { + if (CollectionUtils.isEmpty(ids)) { + return Collections.emptyList(); + } + return getSalaryStatisticsReportMapper().listSome(SalaryStatisticsReportPO.builder().ids(ids).build()); + } + /** * 鏍规嵁鍚嶇О妯$硦鏌ヨ * diff --git a/src/com/engine/salary/report/web/SalaryStatisticsPushController.java b/src/com/engine/salary/report/web/SalaryStatisticsPushController.java new file mode 100644 index 000000000..64a11d5f9 --- /dev/null +++ b/src/com/engine/salary/report/web/SalaryStatisticsPushController.java @@ -0,0 +1,143 @@ +package com.engine.salary.report.web; + +import com.engine.common.util.ServiceUtil; +import com.engine.salary.common.BaseQueryParam; +import com.engine.salary.report.entity.dto.SalaryStatisticsPushDetail; +import com.engine.salary.report.entity.dto.SalaryStatisticsPushTableDTO; +import com.engine.salary.report.entity.param.SalaryStatisticsPushDetailParam; +import com.engine.salary.report.entity.param.SalaryStatisticsPushParam; +import com.engine.salary.report.service.SalaryStatisticsPushService; +import com.engine.salary.report.service.impl.SalaryStatisticsPushServiceImpl; +import com.engine.salary.util.ResponseResult; +import com.engine.salary.util.page.PageInfo; +import io.swagger.v3.oas.annotations.parameters.RequestBody; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.*; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.Map; + +/** + * @author Harryxzy + * @ClassName SalaryStatisticsPushController + * @date 2023/09/11 10:08 + * @description 钖叕缁熻鎶ヨ〃娑堟伅鎺ㄩ + */ +public class SalaryStatisticsPushController { + + + private SalaryStatisticsPushService getSalaryStatisticsPushService(User user) { + return ServiceUtil.getService(SalaryStatisticsPushServiceImpl.class, user); + } + + + /** + * 鑾峰彇鍙戦佹秷鎭痜orm + * + * @return obj + */ + @GET + @Path("/getForm") + @Produces(MediaType.APPLICATION_JSON) + public String getPushForm(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalaryStatisticsPushService(user)::getPushForm); + } + + /** + * 鑾峰彇鍒嗕韩璁板綍鍒楄〃 + * + * @return obj + */ + @POST + @Path("/getTable") + @Produces(MediaType.APPLICATION_JSON) + public String getPushTable(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody BaseQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalaryStatisticsPushService(user)::getPushTable, param); + } + + /** + * 鑾峰彇鍙戦佹秷鎭褰曡鎯 + * + * @return obj + */ + @POST + @Path("/getDetail") + @Produces(MediaType.APPLICATION_JSON) + public String getPushDetail(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryStatisticsPushDetailParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryStatisticsPushService(user)::getPushDetail, param); + } + + + /** + * 鍒嗕韩鎶ヨ〃 + * + * @return obj + */ + @POST + @Path("/sendMsg") + @Produces(MediaType.APPLICATION_JSON) + public String push(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryStatisticsPushParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryStatisticsPushService(user)::push, param); + } + + /** + * 杩藉姞鍒嗕韩浜哄彂閫佹秷鎭 + * + * @return obj + */ + @POST + @Path("/addSharedSendMsg") + @Produces(MediaType.APPLICATION_JSON) + public String addSharePush(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryStatisticsPushParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryStatisticsPushService(user)::addSharedPush, param); + } + +// /** +// * 鍙戦佹秷鎭 +// * +// * @return obj +// */ +// @GetMapping("/reSendMsg") +// @ApiOperation("閲嶆柊鍙戦佹秷鎭") +// @WeaPermission(publicPermission = true) +// public WeaResult push(@RequestParam Long id) { +// salaryStatisticsPushService.rePush(id, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey()); +// return WeaResult.success(""); +// } + + /** + * 鎾ゅ洖娑堟伅 + * + * @return obj + */ + @GET + @Path("/cancel") + @Produces(MediaType.APPLICATION_JSON) + public String cancel(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam("id") Long id) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryStatisticsPushService(user)::cancel, id); + } + + /** + * 鎾ゅ洖鍏ㄩ儴娑堟伅 + * + * @return obj + */ + @GET + @Path("/cancelAll") + @Produces(MediaType.APPLICATION_JSON) + public String cancelAll(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam("id") Long id) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryStatisticsPushService(user)::cancelAll, id); + } + +} diff --git a/src/com/engine/salary/report/web/SalaryStatisticsReportController.java b/src/com/engine/salary/report/web/SalaryStatisticsReportController.java index 4b89b6bf0..010547fab 100644 --- a/src/com/engine/salary/report/web/SalaryStatisticsReportController.java +++ b/src/com/engine/salary/report/web/SalaryStatisticsReportController.java @@ -6,6 +6,7 @@ import com.engine.salary.report.wrapper.SalaryStatisticsReportWrapper; import com.engine.salary.util.ResponseResult; import io.swagger.v3.oas.annotations.parameters.RequestBody; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; @@ -150,9 +151,9 @@ public class SalaryStatisticsReportController { SalaryStatisticsReportDataQueryParam param = SalaryStatisticsReportDataQueryParam.builder() .id(Long.parseLong(request.getParameter("id"))) .dimensionId(Long.parseLong(request.getParameter("dimensionId"))) + .isShare(StringUtils.equals(request.getParameter("isShare"), "true")) .build(); try { - User user = HrmUserVarify.getUser(request, response); Map map = getSalaryStatisticsReportWrapper(user).exportData(param); XSSFWorkbook workbook = (XSSFWorkbook) map.get("workbook"); diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java index d86adfee1..5ee853229 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java @@ -17,23 +17,12 @@ import com.engine.salary.report.entity.bo.SalaryStatisticsReportBO; import com.engine.salary.report.entity.param.*; import com.engine.salary.report.entity.po.SalaryStatisticsDimensionPO; import com.engine.salary.report.entity.po.SalaryStatisticsItemPO; +import com.engine.salary.report.entity.po.SalaryStatisticsPushPO; import com.engine.salary.report.entity.po.SalaryStatisticsReportPO; -import com.engine.salary.report.service.SalaryStatisticsDimensionService; -import com.engine.salary.report.service.SalaryStatisticsItemService; -import com.engine.salary.report.service.SalaryStatisticsReportService; -import com.engine.salary.report.service.SubTableExportService; -import com.engine.salary.report.service.impl.SalaryStatisticsDimensionServiceImpl; -import com.engine.salary.report.service.impl.SalaryStatisticsItemServiceImpl; -import com.engine.salary.report.service.impl.SalaryStatisticsReportServiceImpl; -import com.engine.salary.report.service.impl.SubTableExportServiceImpl; -import com.engine.salary.service.SalaryAcctEmployeeService; -import com.engine.salary.service.SalaryAcctResultService; -import com.engine.salary.service.SalaryCacheService; -import com.engine.salary.service.SalaryItemService; -import com.engine.salary.service.impl.SalaryAcctEmployeeServiceImpl; -import com.engine.salary.service.impl.SalaryAcctResultServiceImpl; -import com.engine.salary.service.impl.SalaryCacheServiceImpl; -import com.engine.salary.service.impl.SalaryItemServiceImpl; +import com.engine.salary.report.service.*; +import com.engine.salary.report.service.impl.*; +import com.engine.salary.service.*; +import com.engine.salary.service.impl.*; import com.engine.salary.util.*; import com.engine.salary.util.excel.ExcelUtilPlus; import com.engine.salary.util.page.PageInfo; @@ -42,6 +31,7 @@ import com.google.common.collect.Maps; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.general.PageIdConst; import weaver.hrm.User; @@ -95,6 +85,19 @@ public class SalaryStatisticsReportWrapper extends Service { return ServiceUtil.getService(SalaryCacheServiceImpl.class, user); } + private SalaryStatisticsPushService getSalaryStatisticsPushService(User user) { + return ServiceUtil.getService(SalaryStatisticsPushServiceImpl.class, user); + } + + private SalaryStatisticsPushDetailService getSalaryStatisticsPushDetailService(User user) { + return ServiceUtil.getService(SalaryStatisticsPushDetailServiceImpl.class, user); + } + + private TaxAgentService getTaxAgentService(User user) { + return ServiceUtil.getService(TaxAgentServiceImpl.class, user); + } + + /** * 鎶ヨ〃鍒楄〃 * @@ -102,16 +105,27 @@ public class SalaryStatisticsReportWrapper extends Service { * @return */ public List> list(SalaryStatisticsReportQueryParam queryParam) { + Long uid = Long.valueOf(user.getUID()); // 鍒濆鍖 - getSalaryStatisticsDimensionService(user).init((long) user.getUID()); + getSalaryStatisticsDimensionService(user).init(uid); + + // 鎵鏈変汉鑳藉鐪嬪埌鑷繁鍒涘缓鐨勬姤琛,钖叕鎬荤鐞嗗憳鑳藉鏌ョ湅鎵鏈夋姤琛 + List reportList = getSalaryStatisticsReportService(user).listByCreator(uid); + List reportIds = reportList.stream().map(SalaryStatisticsReportPO::getId).collect(Collectors.toList()); + // 鑾峰彇鎵鏈夋病鏈夋挙鍥炴病鏈夎繃鏈熺殑鎶ヨ〃ID锛堜笉鍖呭惈杩囨湡澶辨晥鐨勶級 + List pushList = getSalaryStatisticsPushService(user).getSuccessPushListByReceiver(uid); + List sharedReportIds = pushList.stream().map(po -> Arrays.asList(StringUtils.split(po.getReportIds(), ","))) + .flatMap(Collection::stream).distinct().map(Long::valueOf).collect(Collectors.toList()); + sharedReportIds = sharedReportIds.stream().filter(id -> !reportIds.contains(id)).collect(Collectors.toList()); + reportList.addAll(getSalaryStatisticsReportService(user).getByIds(sharedReportIds)); - List reportList = getSalaryStatisticsReportService(user).list(); if (StringUtils.isNotEmpty(queryParam.getReportName())) { reportList = reportList.stream().filter(rp -> rp.getReportName().contains(queryParam.getReportName())).collect(Collectors.toList()); } List salaryStatisticsDimensionList = this.getSalaryStatisticsDimensionService(user).listAll(); Map salaryStatisticsDimensionMap = SalaryEntityUtil.convert2Map(salaryStatisticsDimensionList, k -> k.getId().toString(), SalaryStatisticsDimensionPO::getDimName); List> result = new ArrayList<>(); + List finalSharedReportIds = sharedReportIds; reportList.forEach(po -> { Map temp = new HashMap<>(); temp.put("id", po.getId().toString()); @@ -120,6 +134,7 @@ public class SalaryStatisticsReportWrapper extends Service { List dimNames = Arrays.stream(po.getDimension().split(",")).map(dim -> Optional.ofNullable(salaryStatisticsDimensionMap.get(dim)).orElse("")).collect(Collectors.toList()); temp.put("dimension", StringUtils.join(dimNames, ",")); temp.put("dimensionId", po.getDimension()); + temp.put("isShare", finalSharedReportIds.contains(po.getId())); result.add(temp); }); return result; @@ -252,13 +267,33 @@ public class SalaryStatisticsReportWrapper extends Service { if (dimension == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(161300, "缁熻缁村害涓嶅瓨鍦")); } - // weaTable瀵硅薄 - Map weaTable = new HashMap<>(); // 鏌ヨ鎶ヨ〃閰嶇疆 SalaryStatisticsReportPO po = this.getSalaryStatisticsReportService(user).getById(id); if (po == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(161845, "钖叕缁熻鎶ヨ〃涓嶅瓨鍦")); } + if (param.isShare()) { + // 鏄鍒嗕韩鐨勬姤琛 + Long uid = Long.valueOf(user.getUID()); + // 鏍¢獙鏌ョ湅鏉冮檺锛岃幏鍙栨湁鏁堢殑鍒嗕韩璁板綍 + List pushList = getSalaryStatisticsPushService(user).shareReportValid(param.getId(), uid); + List batchIds = pushList.stream().map(SalaryStatisticsPushPO::getId).collect(Collectors.toList()); + getSalaryStatisticsPushService(user).updateReportViewStatus(batchIds, uid); +// salaryStatisticsPushService.sendViewedMsg(param.getBatchId(), param.getId(), employeeId, tenantKey); + // 濡傛灉鏄鍒嗕韩鐨勬姤琛紝鏍¢獙鍒嗕韩鏉冮檺锛岄氳繃鍚庡皢user璧嬪间负鎶ヨ〃鍒涘缓浜 + User creator = new User(); + creator.setUid(po.getCreator().intValue()); + user = creator; + } else { + // 鍒ゆ柇鎶ヨ〃鏄惁鏄櫥闄嗕汉鍒涘缓鐨,鎴栬柂閰荤鐞嗗憳 + Boolean needAuth = getTaxAgentService(user).isNeedAuth((long) user.getUID()); + if (needAuth && NumberUtils.compare(po.getCreator().intValue(), user.getUID()) != 0) { + throw new SalaryRunTimeException("鏃犳潈闄愭煡鐪嬭鎶ヨ〃锛"); + } + } + + // weaTable瀵硅薄 + Map weaTable = new HashMap<>(); // 鏌ヨ鑷畾涔夌粺璁¢」鐩 List salaryStatisticsItemList = this.getSalaryStatisticsItemService(user).listByStatisticsReportId(po.getId()); @@ -324,7 +359,7 @@ public class SalaryStatisticsReportWrapper extends Service { if (dimension == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(161300, "缁熻缁村害涓嶅瓨鍦")); } - + sharedReportCheck(param.isShare(), po); // 鍙傛暟杞崲 SalaryStatisticsReportBO.poToQueryParam(param, po); @@ -400,6 +435,8 @@ public class SalaryStatisticsReportWrapper extends Service { if (dimension == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(161300, "缁熻缁村害涓嶅瓨鍦")); } + // 鏍¢獙鎶ヨ〃鏉冮檺锛屽鏋滄槸琚垎浜姤琛ㄤ慨鏀筓ser + sharedReportCheck(param.isShare(), po); // 鏌ヨ鑷畾涔夌粺璁¢」鐩腑鎵鏈夎柂璧勯」鐩甶d List salaryStatisticsItemPOS = getSalaryStatisticsItemService(user).listByStatisticsReportId(param.getId()); List salaryItemIds = salaryStatisticsItemPOS.stream().filter(item -> StringUtils.isNotBlank(item.getItemValue())).map(p -> p.getItemValue().split(",")) @@ -431,6 +468,30 @@ public class SalaryStatisticsReportWrapper extends Service { return resultMap; } + /** + * 鏉冮檺鏍¢獙 + * @param isShared 鏄惁鏄鍒嗕韩鐨勬姤琛 + * @param po 鎶ヨ〃po + */ + private void sharedReportCheck(boolean isShared, SalaryStatisticsReportPO po) { + if (isShared) { + // 鏄鍒嗕韩鐨勬姤琛 + Long uid = Long.valueOf(user.getUID()); + // 鏍¢獙鍒嗕韩鏌ョ湅鏉冮檺 + getSalaryStatisticsPushService(user).shareReportValid(po.getId(), uid); + // 濡傛灉鏄鍒嗕韩鐨勬姤琛紝鏍¢獙鍒嗕韩鏉冮檺锛岄氳繃鍚庡皢user璧嬪间负鎶ヨ〃鍒涘缓浜 + User creator = new User(); + creator.setUid(po.getCreator().intValue()); + user = creator; + } else { + // 鍒ゆ柇鎶ヨ〃鏄惁鏄櫥闄嗕汉鍒涘缓鐨,鎴栬柂閰荤鐞嗗憳 + Boolean needAuth = getTaxAgentService(user).isNeedAuth((long) user.getUID()); + if (needAuth && NumberUtils.compare(po.getCreator().intValue(), user.getUID()) != 0) { + throw new SalaryRunTimeException("鏃犳潈闄愭煡鐪嬭鎶ヨ〃锛"); + } + } + } + private List buildDataPerspectiveTableColumns(List salaryItems) { // 琛ㄦ牸琛ㄥご List columns = new ArrayList<>(); diff --git a/src/com/engine/salary/service/SIArchivesService.java b/src/com/engine/salary/service/SIArchivesService.java index ee80e8731..fb4c63752 100644 --- a/src/com/engine/salary/service/SIArchivesService.java +++ b/src/com/engine/salary/service/SIArchivesService.java @@ -101,4 +101,6 @@ public interface SIArchivesService { * @param longs */ void deleteArchive(Collection longs); + + void handleStayDelData(long currentEmployeeId); } diff --git a/src/com/engine/salary/service/SIExportService.java b/src/com/engine/salary/service/SIExportService.java index 0fd3152dd..045ea5f1e 100644 --- a/src/com/engine/salary/service/SIExportService.java +++ b/src/com/engine/salary/service/SIExportService.java @@ -1,8 +1,12 @@ package com.engine.salary.service; import com.engine.salary.entity.siexport.param.InsuranceExportParam; +import com.engine.salary.entity.siexport.po.AccountExportPO; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import java.util.List; +import java.util.Map; + /** * @Author weaver_cl * @Description: @@ -25,4 +29,6 @@ public interface SIExportService { * @return */ XSSFWorkbook exportAccount(Integer paymentStatus, InsuranceExportParam param); + + List> buildCommonRecords(List list); } diff --git a/src/com/engine/salary/service/SISchemeService.java b/src/com/engine/salary/service/SISchemeService.java index d7a691b63..5e0b8d8de 100644 --- a/src/com/engine/salary/service/SISchemeService.java +++ b/src/com/engine/salary/service/SISchemeService.java @@ -2,12 +2,11 @@ package com.engine.salary.service; import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.engine.salary.entity.siarchives.param.InsuranceArchivesListParam; -import com.engine.salary.entity.siarchives.param.SIArchiveImportActionParam; +import com.engine.salary.entity.siarchives.param.SIArchiveImportParam; import com.engine.salary.entity.siarchives.po.InsuranceArchivesEmployeePO; import com.engine.salary.entity.sischeme.dto.InsuranceSchemeListDTO; import com.engine.salary.entity.sischeme.param.InsuranceSchemeDetailUpdateParam; import com.engine.salary.entity.sischeme.param.InsuranceSchemeParam; -import com.engine.salary.entity.sischeme.param.SISchemaImportParam; import com.engine.salary.entity.sischeme.po.InsuranceSchemeDetailPO; import com.engine.salary.util.page.PageInfo; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -66,15 +65,15 @@ public interface SISchemeService { List buildWeaTableColumns(List insuranceArchivesEmployeePOS, Long employeeId); - Map preview(SISchemaImportParam siSchemaImportParam); + Map preview(SIArchiveImportParam param); - Map batchImportEbatch(SISchemaImportParam param); + Map batchImportEbatch(SIArchiveImportParam param); XSSFWorkbook exportTemplate(InsuranceArchivesListParam param); - Map checkSIArchiveAdd(SIArchiveImportActionParam siArchiveImportActionParam); + Map checkSIArchiveAdd(SIArchiveImportParam param); - Map addSIArchive(SIArchiveImportActionParam siArchiveImportActionParam); + Map addSIArchive(SIArchiveImportParam param); /** * 缂栬緫鏂规鏄庣粏琛ㄦ暟鎹 diff --git a/src/com/engine/salary/service/SalaryItemService.java b/src/com/engine/salary/service/SalaryItemService.java index fbf123363..c42079fa3 100644 --- a/src/com/engine/salary/service/SalaryItemService.java +++ b/src/com/engine/salary/service/SalaryItemService.java @@ -2,6 +2,7 @@ package com.engine.salary.service; import com.engine.salary.entity.salaryitem.param.SalaryItemSaveParam; import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; +import com.engine.salary.entity.salaryitem.param.SyncSalaryItemParam; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.enums.SalarySystemTypeEnum; import com.engine.salary.service.impl.SalaryItemServiceImpl; @@ -9,6 +10,7 @@ import com.engine.salary.util.page.PageInfo; import java.util.Collection; import java.util.List; +import java.util.Map; import java.util.Set; /** @@ -133,5 +135,16 @@ public interface SalaryItemService { */ void batchUpdateSortedIndex(List values); + /** + * 鑾峰彇钖祫椤圭洰鍦ㄥ摢浜涜处濂椾腑浣跨敤 + * @param salaryItemId + * @return + */ + List> getSalarySobBySalaryItem(Long salaryItemId); + /** + * 灏嗚柂璧勯」鐩鐞嗕腑鐨勪俊鎭悓姝ヨ嚦璐﹀ + * @param syncSalaryItemParam + */ + void syncSalaryItemToSalarySobItem(SyncSalaryItemParam syncSalaryItemParam); } diff --git a/src/com/engine/salary/service/SalarySobItemService.java b/src/com/engine/salary/service/SalarySobItemService.java index 80d112a37..b9d6c78db 100644 --- a/src/com/engine/salary/service/SalarySobItemService.java +++ b/src/com/engine/salary/service/SalarySobItemService.java @@ -126,4 +126,6 @@ public interface SalarySobItemService { * 钖祫椤圭洰鐨勮鎯 */ SalarySobItemFormDTO getSalaryItemForm(SalarySobItemPO param); + + void update(SalarySobItemPO po); } diff --git a/src/com/engine/salary/service/TaxAgentService.java b/src/com/engine/salary/service/TaxAgentService.java index 8dd73f1c4..dfff8f23a 100644 --- a/src/com/engine/salary/service/TaxAgentService.java +++ b/src/com/engine/salary/service/TaxAgentService.java @@ -174,7 +174,7 @@ public interface TaxAgentService { * * @return */ - List> selectList(); + List> selectList(boolean needAuth); /** * 鑾峰彇浣滀负绠$悊鍛樼殑涓◣鎵g即涔夊姟浜虹殑涓嬫媺鍒楄〃 diff --git a/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java b/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java index fe7671522..45c90f46c 100644 --- a/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java +++ b/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java @@ -38,6 +38,7 @@ import org.springframework.beans.BeanUtils; import weaver.file.ImageFileManager; import weaver.general.Util; import weaver.hrm.User; +import weaver.hrm.company.DepartmentComInfo; import java.io.InputStream; import java.util.*; @@ -340,7 +341,10 @@ public class ExtEmpServiceImpl extends Service implements ExtEmpService { Long employeeId = 0L; String username = (String) map.getOrDefault(SalaryI18nUtil.getI18nLabel(25034, "濮撳悕"), ""); - String departmentName = (String) map.getOrDefault(SalaryI18nUtil.getI18nLabel(27511, "閮ㄩ棬"), ""); + String departmentFullName = (String) map.getOrDefault(SalaryI18nUtil.getI18nLabel(27511, "閮ㄩ棬"), ""); + String[] split = departmentFullName.split(">"); + String departmentName = split[split.length - 1]; + String subcompanyName = (String) map.getOrDefault(SalaryI18nUtil.getI18nLabel(33553, "鍒嗛儴"), ""); String companystartdate = (String) map.getOrDefault(SalaryI18nUtil.getI18nLabel(1516, "鍏ヨ亴鏃ユ湡"), ""); @@ -363,6 +367,7 @@ public class ExtEmpServiceImpl extends Service implements ExtEmpService { //鏍¢獙閮ㄩ棬銆佸垎閮 List subCompanyInfos = new ArrayList<>(); List deptInfos = new ArrayList<>(); + List targetDeptRange = new ArrayList<>(); if (StringUtils.isNotBlank(subcompanyName)) { subCompanyInfos = getEmployMapper().getSubCompanyInfosByName(subcompanyName); if (subCompanyInfos.size() == 0) { @@ -373,7 +378,18 @@ public class ExtEmpServiceImpl extends Service implements ExtEmpService { } } if (StringUtils.isNotBlank(departmentName)) { - deptInfos = getEmployMapper().getDeptInfosByName(departmentName); + List toDealDeptInfos = getEmployMapper().getDeptInfosByName(departmentName); + //绛涢夊嚭鍖归厤瀵煎叆閮ㄩ棬鍏ㄨ矾寰勭殑閮ㄩ棬淇℃伅 + DepartmentComInfo dci = new DepartmentComInfo(); + deptInfos = toDealDeptInfos.stream().filter(f -> { + try { + String departmentRealPath = dci.getDepartmentRealPath(f.getId().toString()); + return departmentRealPath.contains(departmentFullName); + } catch (Exception e) { + throw new SalaryRunTimeException(e.getMessage()); + } + }).collect(Collectors.toList()); + if (deptInfos.size() == 0) { isError = true; Map errorMessageMap = Maps.newHashMap(); @@ -409,7 +425,7 @@ public class ExtEmpServiceImpl extends Service implements ExtEmpService { if(subCompanyInfos.size() == 0 && deptInfos.size() > 1) { isError = true; Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", row + SalaryI18nUtil.getI18nLabel(0, "绯荤粺涓瓨鍦ㄩ噸澶嶉儴闂ㄤ俊鎭紝鏃犳硶鎸囧畾褰撳墠浜哄憳鍏宠仈鐨勫敮涓閮ㄩ棬锛岃閫氳繃濉啓閮ㄩ棬鎵灞炵殑鍒嗛儴淇℃伅鏉ョ缉灏忛儴闂ㄧ瓫閫夎寖鍥")); + errorMessageMap.put("message", row + SalaryI18nUtil.getI18nLabel(0, "绯荤粺涓瓨鍦ㄩ噸澶嶉儴闂ㄤ俊鎭紝鏃犳硶鎸囧畾褰撳墠浜哄憳鍏宠仈鐨勫敮涓閮ㄩ棬锛岃缁嗗寲閮ㄩ棬涓婄骇閮ㄩ棬鎴栧~鍐欓儴闂ㄦ墍灞炵殑鍒嗛儴淇℃伅鏉ョ缉灏忛儴闂ㄧ瓫閫夎寖鍥")); excelComments.add(errorMessageMap); } else if (subCompanyInfos.size() > 1 && deptInfos.size() == 0) { //閮ㄩ棬缁撴灉鏁颁负0锛屽垎閮ㄧ粨鏋滄暟澶т簬1锛屽垯鏃犳硶鍖归厤 @@ -432,7 +448,7 @@ public class ExtEmpServiceImpl extends Service implements ExtEmpService { } else if (targetDeptInfos.size() > 1) { isError = true; Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", row + SalaryI18nUtil.getI18nLabel(0, "璇ョ粍鏁版嵁涓殑閮ㄩ棬鍜屽垎閮ㄤ俊鎭湪绯荤粺涓嚭鐜板缁勫尮閰嶇殑閮ㄩ棬鍜屽垎甯冪粍鍚堬紝鏃犳硶鎸囧畾鍞竴鐨勯儴闂ㄥ拰鍒嗛儴缁勫悎")); + errorMessageMap.put("message", row + SalaryI18nUtil.getI18nLabel(0, "璇ョ粍鏁版嵁涓殑閮ㄩ棬鍜屽垎閮ㄤ俊鎭湪绯荤粺涓嚭鐜板缁勫尮閰嶇殑閮ㄩ棬鍜屽垎閮ㄧ粍鍚堬紝鏃犳硶鎸囧畾鍞竴鐨勯儴闂ㄥ拰鍒嗛儴缁勫悎")); excelComments.add(errorMessageMap); } else { targetSubCompanyInfos = subCompanyInfos.stream().filter(f -> f.getId().equals(targetDeptInfos.get(0).getSubcompanyid1())).collect(Collectors.toList()); diff --git a/src/com/engine/salary/service/impl/SIAComparisonResultServiceImpl.java b/src/com/engine/salary/service/impl/SIAComparisonResultServiceImpl.java index 2fe3ba1c6..89f725a87 100644 --- a/src/com/engine/salary/service/impl/SIAComparisonResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAComparisonResultServiceImpl.java @@ -148,7 +148,11 @@ public class SIAComparisonResultServiceImpl extends Service implements SIACompar insuranceExportParam.setBillMonth(queryParam.getBillMonth()); insuranceExportParam.setPaymentOrganization(queryParam.getPaymentOrganization()); insuranceExportParam.setOrderRule(orderRule); + //绯荤粺浜哄憳鏍哥畻鏄庣粏 List accountExportPOS = getInsuranceExportMapper().exportAccount(queryParam.getPaymentStatus(), insuranceExportParam); + //闈炵郴缁熶汉鍛樻牳绠楁槑缁 + List extAccountExportPOS = getInsuranceExportMapper().exportExtAccount(queryParam.getPaymentStatus(), insuranceExportParam); + accountExportPOS.addAll(extAccountExportPOS); //濡傛灉鍏ュ弬鍖呭惈濮撳悕淇℃伅 if (queryParam.getUserName() != null) { accountExportPOS = accountExportPOS.stream().filter(v -> v.getUserName().contains(queryParam.getUserName())).collect(Collectors.toList()); @@ -165,7 +169,11 @@ public class SIAComparisonResultServiceImpl extends Service implements SIACompar encryptUtil.decryptList(accountExportPOS, AccountExportPO.class); //2-鏌ヨ绾夸笅瀵规瘮鏁版嵁 + //绯荤粺浜哄憳瀵规瘮鏁版嵁 List excelAccountExportPOS = getInsuranceExportMapper().exportExcelAccount(queryParam); + //闈炵郴缁熶汉鍛樺姣旀暟鎹 + List extExcelAccountExportPOS = getInsuranceExportMapper().exportExtExcelAccount(queryParam); + excelAccountExportPOS.addAll(extExcelAccountExportPOS); encryptUtil.decryptList(excelAccountExportPOS, ExcelAccountExportPO.class); //鏁寸悊绾夸笂鏍哥畻璁板綍鐩稿叧鐨勭鍒╂柟妗堬紝骞朵互姝ゆ暣鐞嗛渶瑕佸姣旂殑绂忓埄椤圭被鍒暟鎹 diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index 599f27b24..84f7ade04 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -18,6 +18,7 @@ import com.engine.salary.entity.siaccount.bo.InsuranceAccountBO; import com.engine.salary.entity.siaccount.dto.InsuranceAccountBatchListDTO; import com.engine.salary.entity.siaccount.dto.InsuranceAccountTabDTO; import com.engine.salary.entity.siaccount.dto.InsuranceAccountViewListDTO; +import com.engine.salary.entity.siaccount.dto.InsuranceAcctDetailImportFieldDTO; import com.engine.salary.entity.siaccount.param.*; import com.engine.salary.entity.siaccount.po.ExcelInsuranceDetailPO; import com.engine.salary.entity.siaccount.po.InsuranceAccountBatchPO; @@ -71,8 +72,10 @@ import com.engine.salary.util.page.Column; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.engine.salary.util.valid.ValidUtil; +import com.engine.salary.wrapper.SalaryFormulaWrapper; import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import com.mzlion.core.utils.BeanUtils; import dm.jdbc.util.IdGenerator; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -197,6 +200,14 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { return MapperProxyFactory.getProxy(InsuranceSchemeDetailMapper.class); } + private SalaryFormulaWrapper getSalaryFormulaWrapper(User user) { + return (SalaryFormulaWrapper) ServiceUtil.getService(SalaryFormulaWrapper.class, user); + } + + public SIExportService getSIExportService(User user) { + return ServiceUtil.getService(SIExportServiceImpl.class, user); + } + @Override public Map listPage(InsuranceAccountBatchParam queryParam) { Long employeeId = (long) user.getUID(); @@ -346,7 +357,11 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { OrderRuleVO orderRule = getSalarySysConfService(user).orderRule(); queryParam.setOrderRule(orderRule); + //绯荤粺浜哄憳鏍哥畻鏄庣粏 List list = getInsuranceAccountDetailMapper().list(queryParam); + //闈炵郴缁熶汉鍛樻牳绠楁槑缁 + List extList = getInsuranceAccountDetailMapper().extList(queryParam); + list.addAll(extList); PageInfo pageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(),queryParam.getPageSize(), list, InsuranceAccountDetailPO.class); List insuranceAccountDetailPOS = pageInfo.getList(); @@ -412,7 +427,11 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { OrderRuleVO orderRule = getSalarySysConfService(user).orderRule(); queryParam.setOrderRule(orderRule); + //绯荤粺浜哄憳鏍哥畻鏄庣粏 List list = getInsuranceAccountDetailMapper().list(queryParam); + //闈炵郴缁熶汉鍛樻牳绠楁槑缁 + List extList = getInsuranceAccountDetailMapper().extList(queryParam); + list.addAll(extList); PageInfo pageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(),queryParam.getPageSize(), list, InsuranceAccountDetailPO.class); List insuranceAccountDetailPOS = pageInfo.getList(); @@ -469,7 +488,11 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { queryParam.setOrderRule(orderRule); SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + //绯荤粺浜哄憳鏍哥畻鏄庣粏 List list = getInsuranceAccountDetailMapper().list(queryParam); + //闈炵郴缁熶汉鍛樻牳绠楁槑缁 + List extList = getInsuranceAccountDetailMapper().extList(queryParam); + list.addAll(extList); PageInfo pageInfo = new PageInfo<>(list, InsuranceAccountDetailPO.class); List insuranceAccountDetailPOS = pageInfo.getList(); encryptUtil.decryptList(insuranceAccountDetailPOS, InsuranceAccountDetailPO.class); @@ -943,32 +966,32 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { InsuranceAccountDetailPO repairSiAcct = siAcctResultWithEmpAndPayStatus.get(item.getEmployeeId() + "_" + PaymentStatusEnum.REPAIR.getValue()); InsuranceAccountDetailPO balanceSiAcct = siAcctResultWithEmpAndPayStatus.get(item.getEmployeeId() + "_" + PaymentStatusEnum.BALANCE.getValue()); //鍙栨甯哥即绾崇殑绂忓埄鍩烘暟淇℃伅 - if (StringUtils.isNotEmpty(commonSiAcct.getSocialPaymentBaseString())) { + if (commonSiAcct != null && StringUtils.isNotEmpty(commonSiAcct.getSocialPaymentBaseString())) { Map socialBaseJson = JSON.parseObject(commonSiAcct.getSocialPaymentBaseString(), new HashMap().getClass()); socialBaseJson.forEach((k, v) -> { record.put(k + "socialBase", v); }); } - if (StringUtils.isNotEmpty(commonSiAcct.getFundPaymentBaseString())) { + if (commonSiAcct != null && StringUtils.isNotEmpty(commonSiAcct.getFundPaymentBaseString())) { Map fundBaseJson = JSON.parseObject(commonSiAcct.getFundPaymentBaseString(), new HashMap().getClass()); fundBaseJson.forEach((k, v) -> { record.put(k + "fundBase", v); }); } - if (StringUtils.isNotEmpty(commonSiAcct.getOtherPaymentBaseString())) { + if (commonSiAcct != null && StringUtils.isNotEmpty(commonSiAcct.getOtherPaymentBaseString())) { Map otherBaseJson = JSON.parseObject(commonSiAcct.getOtherPaymentBaseString(), new HashMap().getClass()); otherBaseJson.forEach((k, v) -> { record.put(k + "otherBase", v); }); } //绀句繚-姝e父缂寸撼 - if (StringUtils.isNotEmpty(commonSiAcct.getSocialPerJson())) { + if (commonSiAcct != null && StringUtils.isNotEmpty(commonSiAcct.getSocialPerJson())) { Map socialJson = JSON.parseObject(commonSiAcct.getSocialPerJson(), new HashMap().getClass()); socialJson.forEach((k, v) -> { record.put(k + "socialCommonPer", v); }); } - if (StringUtils.isNotEmpty(commonSiAcct.getSocialComJson())) { + if (commonSiAcct != null && StringUtils.isNotEmpty(commonSiAcct.getSocialComJson())) { Map socialJson = JSON.parseObject(commonSiAcct.getSocialComJson(), new HashMap().getClass()); socialJson.forEach((k, v) -> { record.put(k + "socialCommonCom", v); @@ -1008,13 +1031,13 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { record.put("socialComBalanceSum", balanceSiAcct != null ? balanceSiAcct.getSocialComSum() : new BigDecimal("0")); //鍏Н閲-姝e父缂寸撼 - if (StringUtils.isNotEmpty(commonSiAcct.getFundPerJson())) { + if (commonSiAcct != null && StringUtils.isNotEmpty(commonSiAcct.getFundPerJson())) { Map socialJson = JSON.parseObject(commonSiAcct.getFundPerJson(), new HashMap().getClass()); socialJson.forEach((k, v) -> { record.put(k + "fundCommonPer", v); }); } - if (StringUtils.isNotEmpty(commonSiAcct.getFundComJson())) { + if (commonSiAcct != null && StringUtils.isNotEmpty(commonSiAcct.getFundComJson())) { Map socialJson = JSON.parseObject(commonSiAcct.getFundComJson(), new HashMap().getClass()); socialJson.forEach((k, v) -> { record.put(k + "fundCommonCom", v); @@ -1054,13 +1077,13 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { record.put("fundComBalanceSum", balanceSiAcct != null ? balanceSiAcct.getFundComSum() : new BigDecimal("0")); //鍏朵粬绂忓埄-姝e父缂寸撼 - if (StringUtils.isNotEmpty(commonSiAcct.getOtherPerJson())) { + if (commonSiAcct != null && StringUtils.isNotEmpty(commonSiAcct.getOtherPerJson())) { Map otherJson = JSON.parseObject(commonSiAcct.getOtherPerJson(), new HashMap().getClass()); otherJson.forEach((k, v) -> { record.put(k + "otherCommonPer", v); }); } - if (StringUtils.isNotEmpty(commonSiAcct.getOtherComJson())) { + if (commonSiAcct != null && StringUtils.isNotEmpty(commonSiAcct.getOtherComJson())) { Map otherJson = JSON.parseObject(commonSiAcct.getOtherComJson(), new HashMap().getClass()); otherJson.forEach((k, v) -> { record.put(k + "otherCommonCom", v); @@ -1463,7 +1486,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { @Override public XSSFWorkbook exportImportTemplate(InsuranceAcctDetailImportTemplateParam param) { ValidUtil.doValidator(param); - + Long employeeId = (long) user.getUID(); // 蹇呴』閫夋嫨瀵煎叆妯℃澘鎵闇鐨勮柂璧勯」鐩(绂忓埄椤) if (CollectionUtils.isEmpty(param.getWelfareNames())) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(99019, "鍙傛暟閿欒锛岃閫夋嫨瀵煎叆妯℃澘鎵闇鐨勭鍒╅」鐩牳绠楅」")); @@ -1476,18 +1499,52 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { SalaryI18nUtil.getI18nLabel(86317, "宸ュ彿"), SalaryI18nUtil.getI18nLabel(86184, "涓◣鎵g即涔夊姟浜"), "璐﹀崟鏈堜唤"); - List dataIndexList = Lists.newArrayList("username", "departmentName", "mobile", "workcode", "taxAgentName", "billMonth"); +// List dataIndexList = Lists.newArrayList("username", "departmentName", "mobile", "workcode", "taxAgentName", "billMonth"); + List dataIndexList = Lists.newArrayList("userName", "department", "mobile", "workcode", "socialPayOrg", "billMonth"); // 鏌ヨ绂忓埄鏍哥畻椤圭洰 List welfareNames = (List) param.getWelfareNames(); headerList.addAll(welfareNames); + //鍖归厤welfareName瀵瑰簲鐨刬d + List welfareList = getSalaryFormulaWrapper(user).welfareList(); + Map welfareNameMap = welfareList.stream().collect(Collectors.toMap(InsuranceAcctDetailImportFieldDTO::getSalaryItemName, InsuranceAcctDetailImportFieldDTO::getFieldId, (key1, key2) -> key2)); + welfareNames.forEach(f -> { + if (StringUtils.isNotBlank(welfareNameMap.get(f))) { + dataIndexList.add(welfareNameMap.get(f)); + } + }); + // excel瀵煎嚭鐨勬暟鎹 +// //鏌ヨ褰撳墠宸叉湁鐨勬甯哥即绾虫暟鎹 +// List> resultMapList = getNormalDataByBillMonth(param.getBillMonth(), param.getPaymentOrganization()); +// // excel瀵煎嚭鐨勬暟鎹 +// List> rows = Lists.newArrayListWithExpectedSize(resultMapList.size()); +// rows.add(headerList); +// for (Map map : resultMapList) { +// List row = Lists.newArrayListWithExpectedSize(headerList.size()); +// for (String dataIndex : dataIndexList) { +// row.add(map.getOrDefault(dataIndex, StringUtils.EMPTY)); +// } +// rows.add(row); +// } + + InsuranceExportParam exportParam = new InsuranceExportParam(); + //鎺掑簭閰嶇疆 + OrderRuleVO orderRule = getSalarySysConfService(user).orderRule(); + exportParam.setOrderRule(orderRule); + exportParam.setBillMonth(param.getBillMonth()); + exportParam.setPaymentOrganization(param.getPaymentOrganization().toString()); + List accountExportPOS = new ArrayList<>(); + accountExportPOS = getInsuranceExportMapper().exportAccount(PaymentStatusEnum.COMMON.getValue(), exportParam); + //闈炵郴缁熶汉鍛樻牳绠楁槑缁 + List extAccountExportPOS = getInsuranceExportMapper().exportExtAccount(PaymentStatusEnum.COMMON.getValue(), exportParam); + accountExportPOS.addAll(extAccountExportPOS); + encryptUtil.decryptList(accountExportPOS, AccountExportPO.class); + // 鏁版嵁缁勮 + List> records = getSIExportService(user).buildCommonRecords(accountExportPOS); // excel瀵煎嚭鐨勬暟鎹 - //鏌ヨ褰撳墠宸叉湁鐨勬甯哥即绾虫暟鎹 - List> resultMapList = getNormalDataByBillMonth(param.getBillMonth(), param.getPaymentOrganization()); - // excel瀵煎嚭鐨勬暟鎹 - List> rows = Lists.newArrayListWithExpectedSize(resultMapList.size()); + List> rows = Lists.newArrayListWithExpectedSize(records.size()); rows.add(headerList); - for (Map map : resultMapList) { + for (Map map : records) { List row = Lists.newArrayListWithExpectedSize(headerList.size()); for (String dataIndex : dataIndexList) { row.add(map.getOrDefault(dataIndex, StringUtils.EMPTY)); @@ -1524,7 +1581,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { // Map taxAgentNameMap = SalaryEntityUtil.convert2Map(taxAgents, TaxAgentPO::getName, TaxAgentPO::getId); // 鑾峰彇绉熸埛涓嬫墍鏈夌殑浜哄憳 - List salaryEmployees = getSalaryEmployeeService(user).listAll(UseEmployeeTypeEnum.ORG); + List salaryEmployees = getSalaryEmployeeService(user).listAll(UseEmployeeTypeEnum.ALL); // 澶辫触鐨勬暟閲 int failCount = 0; @@ -2282,7 +2339,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { } // 鑾峰彇绉熸埛涓嬫墍鏈夌殑浜哄憳 - List salaryEmployees = getSalaryEmployeeService(user).listAll(UseEmployeeTypeEnum.ORG); + List salaryEmployees = getSalaryEmployeeService(user).listAll(UseEmployeeTypeEnum.ALL); // 澶辫触鐨勬暟閲 int failCount = 0; @@ -3235,7 +3292,11 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { OrderRuleVO orderRule = getSalarySysConfService(user).orderRule(); queryParam.setOrderRule(orderRule); + //绯荤粺浜哄憳鏍哥畻鏄庣粏 List list = getInsuranceAccountDetailMapper().list(queryParam); + //闈炵郴缁熶汉鍛樻牳绠楁槑缁 + List extList = getInsuranceAccountDetailMapper().extList(queryParam); + list.addAll(extList); encryptUtil.decryptList(list, InsuranceAccountDetailPO.class); //鏁版嵁缁勮 List> records = getService(user).buildCommonRecords(list, employeeId); @@ -3270,7 +3331,11 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { OrderRuleVO orderRule = getSalarySysConfService(user).orderRule(); queryParam.setOrderRule(orderRule); + //绯荤粺浜哄憳鏍哥畻鏄庣粏 List list = getInsuranceAccountDetailMapper().list(queryParam); + //闈炵郴缁熶汉鍛樻牳绠楁槑缁 + List extList = getInsuranceAccountDetailMapper().extList(queryParam); + list.addAll(extList); encryptUtil.decryptList(list, InsuranceAccountDetailPO.class); //鏁版嵁缁勮 List> records = getService(user).buildCommonRecords(list, employeeId); @@ -3305,7 +3370,11 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { queryParam.setOrderRule(orderRule); SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + //绯荤粺浜哄憳鏍哥畻鏄庣粏 List list = getInsuranceAccountDetailMapper().list(queryParam); + //闈炵郴缁熶汉鍛樻牳绠楁槑缁 + List extList = getInsuranceAccountDetailMapper().extList(queryParam); + list.addAll(extList); encryptUtil.decryptList(list, InsuranceAccountDetailPO.class); //鏁版嵁缁勮 List> records = getService(user).buildCommonRecords(list, employeeId); @@ -3343,7 +3412,9 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { } value = value.add(addValue); } - sumRow.put(numKey,value); +// sumRow.put(numKey,value); + sumRow.put(numKey,String.format("%.2f", value)); + } return sumRow; } diff --git a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java index 43f2052a5..720ed4805 100644 --- a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java @@ -209,8 +209,9 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService * 绂忓埄妗f涓緟鍑忓憳鏁版嵁鑷姩澶勭悊 * @param currentEmployeeId */ + @Override @Transactional(rollbackFor = Exception.class) - private void handleStayDelData(long currentEmployeeId) { + public void handleStayDelData(long currentEmployeeId) { log.info("绂忓埄妗f涓緟鍑忓憳鏁版嵁鑷姩澶勭悊閫昏緫寮濮嬶細"); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM"); String today = simpleDateFormat.format(new Date()); @@ -659,7 +660,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService //鑾峰彇鎵鏈夌鍒╂。妗堝熀纭淇℃伅 List archiveListDTOS = getInsuranceBaseInfoMapper().listAll(); - list = archiveListDTOS.stream().filter(dto -> taxAgentIds.contains(dto.getPaymentOrganization()) && !Objects.equals(dto.getEmployeeType(), 1)).collect(Collectors.toList()); + list = archiveListDTOS.stream().filter(dto -> taxAgentIds.contains(dto.getPaymentOrganization())).collect(Collectors.toList()); Boolean adminEnable = getTaxAgentService(user).isAdminEnable(currentEmployeeId); //涓嶆槸绠$悊鍛樼湅涓嶅埌鏁版嵁锛岃繑鍥炵┖ @@ -668,7 +669,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService } } else { - list = getInsuranceBaseInfoMapper().listAll().stream().filter(dto -> !Objects.equals(dto.getEmployeeType(), 1)).collect(Collectors.toList());; + list = getInsuranceBaseInfoMapper().listAll(); } @@ -676,24 +677,32 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService long payTotal = 0L; long stayDelTotal = 0L; long stopTotal = 0L; + long extTotal = 0L; for (InsuranceArchivesBaseInfoPO baseInfoPO : list) { - if (baseInfoPO.getRunStatus().equals(EmployeeStatusEnum.STAY_ADD.getValue())) { - stayAddTotal += 1; - } else if (baseInfoPO.getRunStatus().equals(EmployeeStatusEnum.PAYING.getValue()) || baseInfoPO.getRunStatus().equals(EmployeeStatusEnum.STAY_DEL.getValue())) { - payTotal += 1; - if (baseInfoPO.getRunStatus().equals(EmployeeStatusEnum.STAY_DEL.getValue())) { - stayDelTotal += 1; + Integer employeeType = baseInfoPO.getEmployeeType(); + if (employeeType == null || employeeType == 0) { + if (baseInfoPO.getRunStatus().equals(EmployeeStatusEnum.STAY_ADD.getValue())) { + stayAddTotal += 1; + } else if (baseInfoPO.getRunStatus().equals(EmployeeStatusEnum.PAYING.getValue()) || baseInfoPO.getRunStatus().equals(EmployeeStatusEnum.STAY_DEL.getValue())) { + payTotal += 1; + if (baseInfoPO.getRunStatus().equals(EmployeeStatusEnum.STAY_DEL.getValue())) { + stayDelTotal += 1; + } + } else if (baseInfoPO.getRunStatus().equals(EmployeeStatusEnum.STOP_PAYMENT_FROM_ADD.getValue()) || baseInfoPO.getRunStatus().equals(EmployeeStatusEnum.STOP_PAYMENT_FROM_DEL.getValue())) { + stopTotal += 1; } - } else if (baseInfoPO.getRunStatus().equals(EmployeeStatusEnum.STOP_PAYMENT_FROM_ADD.getValue()) || baseInfoPO.getRunStatus().equals(EmployeeStatusEnum.STOP_PAYMENT_FROM_DEL.getValue())) { - stopTotal += 1; + } else { + extTotal += 1; } + } result.put("stayAdd", stayAddTotal); result.put("paying", payTotal); result.put("stayDel", stayDelTotal); result.put("stopPay", stopTotal); + result.put("ext", extTotal); return result; } diff --git a/src/com/engine/salary/service/impl/SICompensationServiceImpl.java b/src/com/engine/salary/service/impl/SICompensationServiceImpl.java index e237ea7f4..8d0e1f579 100644 --- a/src/com/engine/salary/service/impl/SICompensationServiceImpl.java +++ b/src/com/engine/salary/service/impl/SICompensationServiceImpl.java @@ -17,6 +17,7 @@ import com.engine.salary.entity.siaccount.po.InsuranceAccountDetailPO; import com.engine.salary.entity.siaccount.po.InsuranceCompensationConfigPO; import com.engine.salary.entity.siaccount.po.InsuranceCompensationPO; import com.engine.salary.entity.sicategory.po.ICategoryPO; +import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum; import com.engine.salary.enums.siaccount.PaymentStatusEnum; import com.engine.salary.enums.sicategory.DeleteTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; @@ -25,10 +26,7 @@ import com.engine.salary.mapper.siaccount.InsuranceAccountDetailMapper; import com.engine.salary.mapper.siaccount.InsuranceCompensationConfigMapper; import com.engine.salary.mapper.siaccount.InsuranceCompensationMapper; import com.engine.salary.mapper.sicategory.ICategoryMapper; -import com.engine.salary.service.ColumnBuildService; -import com.engine.salary.service.SIAccountService; -import com.engine.salary.service.SICategoryService; -import com.engine.salary.service.SICompensationService; +import com.engine.salary.service.*; import com.engine.salary.util.SalaryAssert; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; @@ -84,6 +82,9 @@ public class SICompensationServiceImpl extends Service implements SICompensation return MapperProxyFactory.getProxy(ICategoryMapper.class); } + private SalaryEmployeeService getSalaryEmployeeService(User user) { + return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); + } /** * 鍙皟宸汉鍛 */ @@ -104,6 +105,7 @@ public class SICompensationServiceImpl extends Service implements SICompensation partition.forEach(p -> { param.setIds(p); resultData.addAll(getEmployMapper().listHrmInfoByIdAndName(param)); + resultData.addAll(getEmployMapper().listExtHrmInfoByIdAndName(param)); }); } @@ -199,20 +201,21 @@ public class SICompensationServiceImpl extends Service implements SICompensation } else { encryptUtil.decrypt(insuranceAccountDetailPO, InsuranceAccountDetailPO.class); //鍒ゆ柇鏄惁宸叉湁璋冨樊鏁版嵁锛堜釜绋庢墸缂翠箟鍔′汉+璐﹀崟鏈堜唤+浜哄憳id锛 - InsuranceCompensationPO nowCompensation = getInsuranceCompensationMapper().getOneByBillMonthPayOrgEmpId(InsuranceCompensationPO.builder() - .billMonth(insuranceAccountDetailPO.getBillMonth()) - .paymentOrganization(insuranceAccountDetailPO.getPaymentOrganization()) - .employeeId(insuranceAccountDetailPO.getEmployeeId()) - .build()); - if (nowCompensation != null) { - temp.put("error", SalaryI18nUtil.getI18nLabel(121039, "褰撳墠鏈堝湪璇ョ即绾崇粍缁囦笅宸插瓨鍦ㄨ皟宸暟鎹")); - } +// InsuranceCompensationPO nowCompensation = getInsuranceCompensationMapper().getOneByBillMonthPayOrgEmpId(InsuranceCompensationPO.builder() +// .billMonth(insuranceAccountDetailPO.getBillMonth()) +// .paymentOrganization(insuranceAccountDetailPO.getPaymentOrganization()) +// .employeeId(insuranceAccountDetailPO.getEmployeeId()) +// .build()); +// +// if (nowCompensation != null) { +// temp.put("error", SalaryI18nUtil.getI18nLabel(121039, "褰撳墠鏈堝湪璇ョ即绾崇粍缁囦笅宸插瓨鍦ㄨ皟宸暟鎹")); +// } //澶勭悊璋冨樊鏁版嵁 BigDecimal total = new BigDecimal("0"); List categoryTypeList = Arrays.asList(compensation.getCategoryType().split(",")); - if (nowCompensation == null && StringUtils.isNotBlank(insuranceAccountDetailPO.getSocialComJson())) { + if (StringUtils.isNotBlank(insuranceAccountDetailPO.getSocialComJson())) { Map socialJson = JSON.parseObject(insuranceAccountDetailPO.getSocialComJson(), new HashMap().getClass()); for (Map.Entry entry : socialJson.entrySet()) { String insuranceId = entry.getKey(); @@ -271,7 +274,8 @@ public class SICompensationServiceImpl extends Service implements SICompensation public Map compensationAccount(List list) { long currentEmployeeId = user.getUID(); - List allEmployees = getEmployMapper().listAll(); +// List allEmployees = getEmployMapper().listAll(); + List allEmployees = getSalaryEmployeeService(user).listAll(UseEmployeeTypeEnum.ALL); Map usernameMap = SalaryEntityUtil.convert2Map(allEmployees, DataCollectionEmployee::getEmployeeId, DataCollectionEmployee::getUsername); Map result = new HashMap<>(); @@ -280,9 +284,49 @@ public class SICompensationServiceImpl extends Service implements SICompensation //杩囨护 list = list.stream().collect(Collectors.collectingAndThen( Collectors.toCollection(() -> - new TreeSet<>(Comparator.comparing(InsuranceCompensationDTO::getTarget))), ArrayList::new)); + new TreeSet<>(Comparator.comparing((o -> o.getTarget() + ";" + o.getAdjustTo() + ";" + o.getCategoryType())))), ArrayList::new)); + //鏍规嵁target鍒嗙粍 + Map> compensationGroupInfoMap= list.stream().collect(Collectors.groupingBy(InsuranceCompensationDTO::getTarget)); + //鍙栫鍒╅」id鍜宯ame鐨勫叧鑱攎ap + List socialWelfareList = getICategoryMapper().listAll().stream().filter(e -> e.getWelfareType() == 1).collect(Collectors.toList()); + Map welfareNameMap = socialWelfareList.stream().collect(Collectors.toMap(ICategoryPO::getId, ICategoryPO::getInsuranceName, (key1, key2) -> key2)); for (InsuranceCompensationDTO param : list) { + //鍒ゆ柇鈥滅粺璁¤皟宸鍒╃被鍨嬧濆嵆categoryType涓紝鏄惁瀛樺湪鍚屼繚瀛樻壒娆¢噸澶嶇鍒╅」 + List waitJudgeCompensations = compensationGroupInfoMap.get(param.getTarget()).stream(). + filter(f -> !f.getTarget().equals(param.getTarget()) && !f.getAdjustTo().equals(param.getAdjustTo()) && !f.getCategoryType().equals(param.getCategoryType())).collect(Collectors.toList()); + if (waitJudgeCompensations.size() > 0) { + boolean judgeResult = true; + for (InsuranceCompensationDTO judgeParam : waitJudgeCompensations) { + List toDealWelfareTypeList = Arrays.asList(param.getCategoryType().split(",")); + List toJudgeWelfareTypeList = Arrays.asList(judgeParam.getCategoryType().split(",")); +// toDealWelfareTypeList.retainAll(toJudgeWelfareTypeList); + List intersectionList = (List) SalaryEntityUtil.intersectionForList(toDealWelfareTypeList, toJudgeWelfareTypeList); + if (intersectionList.size() > 0) { + StringBuilder toDealWelfareNames = new StringBuilder(); + StringBuilder sameWelfareNames = new StringBuilder(); + for(String str : toDealWelfareTypeList) { + if (welfareNameMap.get(Long.valueOf(str)) != null) { + toDealWelfareNames.append(welfareNameMap.get(Long.valueOf(str))).append("銆"); + } + } + for(String str : intersectionList) { + if (welfareNameMap.get(Long.valueOf(str)) != null) { + sameWelfareNames.append(welfareNameMap.get(Long.valueOf(str))).append("銆"); + } + } + errorList.add(usernameMap.get(param.getEmployeeId()) + "-" + toDealWelfareNames.deleteCharAt(toDealWelfareNames.length() - 1) + + "-璋冨樊澶辫触锛氭彁浜ゆ暟鎹腑锛岀粺璁¤皟宸鍒╃被鍨嬫湁閲嶅悎閮ㄥ垎锛" + "閲嶅悎绂忓埄閮ㄥ垎涓猴細" + sameWelfareNames.deleteCharAt(sameWelfareNames.length() - 1)); + judgeResult = false; + break; + } + } + if (!judgeResult) { + continue; + } + + } + if (StringUtils.isBlank(param.getAdjustmentTotal()) || "0".equals(param.getAdjustmentTotal()) || "0.00".equals(param.getAdjustmentTotal())) { errorList.add(usernameMap.get(param.getEmployeeId()) + "-璋冨樊澶辫触锛氳皟宸暟棰濅笉姝g‘锛"); continue; @@ -291,23 +335,68 @@ public class SICompensationServiceImpl extends Service implements SICompensation errorList.add(usernameMap.get(param.getEmployeeId()) + "-璋冨樊澶辫触锛氬叕鍙告牳绠楅噾棰濅负0锛岃妫鏌ユ暟鎹槸鍚﹀睘瀹炴垨鑰呭綋鍓嶄汉鍛樺凡瀛樺湪璇ユ湀璋冨樊鏁版嵁锛"); continue; } + if (param.getAdjustTo() == null) { + errorList.add(usernameMap.get(param.getEmployeeId()) + "-璋冨樊澶辫触锛氳皟宸埌鐨勭鍒╂湭璁剧疆锛"); + continue; + } InsuranceAccountDetailPO insuranceAccountDetailPO = getInsuranceAccountDetailMapper().getById(param.getTarget()); if (insuranceAccountDetailPO == null) { errorList.add(usernameMap.get(param.getEmployeeId()) + "-璋冨樊澶辫触锛氳皟宸璞′笉瀛樺湪锛"); continue; } + if (!param.getCategoryType().contains(param.getAdjustTo().toString())) { + errorList.add(usernameMap.get(param.getEmployeeId()) + "-璋冨樊澶辫触锛氳皟宸埌鐨勭鍒╂湭姝g‘璁剧疆锛"); + continue; + } + //鍒ゆ柇鏄惁宸叉湁璋冨樊鏁版嵁锛堜釜绋庢墸缂翠箟鍔′汉+璐﹀崟鏈堜唤+浜哄憳id锛 - InsuranceCompensationPO nowCompensation = getInsuranceCompensationMapper().getOneByBillMonthPayOrgEmpId(InsuranceCompensationPO.builder() +// InsuranceCompensationPO nowCompensation = getInsuranceCompensationMapper().getOneByBillMonthPayOrgEmpId(InsuranceCompensationPO.builder() +// .billMonth(insuranceAccountDetailPO.getBillMonth()) +// .paymentOrganization(insuranceAccountDetailPO.getPaymentOrganization()) +// .employeeId(insuranceAccountDetailPO.getEmployeeId()) +// .build()); +// if (nowCompensation != null) { +// errorList.add(usernameMap.get(param.getEmployeeId()) + "-璋冨樊澶辫触锛氳皟宸璞″湪褰撳墠鏈堣缂寸撼缁勭粐涓嬪凡瀛樺湪璋冨樊鏁版嵁锛"); +// continue; +// } + List nowCompensationList = getInsuranceCompensationMapper().getListByBillMonthPayOrgEmpId(InsuranceCompensationPO.builder() .billMonth(insuranceAccountDetailPO.getBillMonth()) .paymentOrganization(insuranceAccountDetailPO.getPaymentOrganization()) .employeeId(insuranceAccountDetailPO.getEmployeeId()) .build()); - if (nowCompensation != null) { - errorList.add(usernameMap.get(param.getEmployeeId()) + "-璋冨樊澶辫触锛氳皟宸璞″湪褰撳墠鏈堣缂寸撼缁勭粐涓嬪凡瀛樺湪璋冨樊鏁版嵁锛"); - continue; + if (nowCompensationList.size() > 0) { + boolean judgeResult = true; + for (InsuranceCompensationPO judgePO : nowCompensationList) { + List toDealWelfareTypeList = Arrays.asList(param.getCategoryType().split(",")); + List toJudgeWelfareTypeList = Arrays.asList(judgePO.getCategoryType().split(",")); + + List intersectionList = (List) SalaryEntityUtil.intersectionForList(toDealWelfareTypeList, toJudgeWelfareTypeList); + if (intersectionList.size() > 0) { + StringBuilder toDealWelfareNames = new StringBuilder(); + StringBuilder sameWelfareNames = new StringBuilder(); + for(String str : toDealWelfareTypeList) { + if (welfareNameMap.get(Long.valueOf(str)) != null) { + toDealWelfareNames.append(welfareNameMap.get(Long.valueOf(str))).append("銆"); + } + } + for(String str : intersectionList) { + if (welfareNameMap.get(Long.valueOf(str)) != null) { + sameWelfareNames.append(welfareNameMap.get(Long.valueOf(str))).append("銆"); + } + } + errorList.add(usernameMap.get(param.getEmployeeId()) + "-" + toDealWelfareNames.deleteCharAt(toDealWelfareNames.length() - 1) + + "-璋冨樊澶辫触锛氱浉鍚岀鍒╀笉鍙互澶氭璋冨樊锛" + "鐩稿悓閮ㄥ垎涓猴細" + sameWelfareNames.deleteCharAt(sameWelfareNames.length() - 1)); + judgeResult = false; + break; + } + } + if (!judgeResult) { + continue; + } } + encryptUtil.decrypt(insuranceAccountDetailPO, InsuranceAccountDetailPO.class); if (StringUtils.isNotBlank(insuranceAccountDetailPO.getSocialComJson())) { Map socialJson = JSON.parseObject(insuranceAccountDetailPO.getSocialComJson(), new HashMap().getClass()); @@ -372,7 +461,7 @@ public class SICompensationServiceImpl extends Service implements SICompensation if (errorList.size() == 0) { result.put("data", "鍏ㄩ儴璋冨樊鎴愬姛锛"); } else { - result.put("data", "瀛樺湪璋冨樊澶辫触椤癸紒"); + result.put("data", "瀛樺湪璋冨樊澶辫触椤癸紒" + "澶辫触鏁伴噺涓猴細" + errorList.size() + "銆傚叿浣撴湁浠ヤ笅锛"); } result.put("errorMessage", errorList); result.put("successIds", idList); diff --git a/src/com/engine/salary/service/impl/SIExportServiceImpl.java b/src/com/engine/salary/service/impl/SIExportServiceImpl.java index e66059a96..1c351dfac 100644 --- a/src/com/engine/salary/service/impl/SIExportServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIExportServiceImpl.java @@ -158,6 +158,9 @@ public class SIExportServiceImpl extends Service implements SIExportService { List accountExportPOS = new ArrayList<>(); if (paymentStatus.equals(PaymentStatusEnum.RECESSION.getValue())) { accountExportPOS = getInsuranceExportMapper().exportRecessionAccount(paymentStatus, param); + //闈炵郴缁熶汉鍛樻牳绠楁槑缁 + List extAccountExportPOS = getInsuranceExportMapper().exportExtAccount(paymentStatus, param); + accountExportPOS.addAll(extAccountExportPOS); // 鍒嗘潈閫昏緫 Boolean needAuth = getTaxAgentService(user).isNeedAuth((long) user.getUID()); if (needAuth) { @@ -174,6 +177,9 @@ public class SIExportServiceImpl extends Service implements SIExportService { } } else { accountExportPOS = getInsuranceExportMapper().exportAccount(paymentStatus, param); + //闈炵郴缁熶汉鍛樻牳绠楁槑缁 + List extAccountExportPOS = getInsuranceExportMapper().exportExtAccount(paymentStatus, param); + accountExportPOS.addAll(extAccountExportPOS); } // //杩囨护鍑虹鍒╂。妗堝熀纭淇℃伅琛ㄤ腑runStatus涓烘鍦ㄧ即绾冲拰寰呭噺鍛樼殑浜哄憳 @@ -201,7 +207,7 @@ public class SIExportServiceImpl extends Service implements SIExportService { records = buildCommonRecords(accountExportPOS); List> excelSheetData = new ArrayList<>(); //宸ヤ綔绨垮悕绉 - String sheetName = SalaryI18nUtil.getI18nLabel(85368, "绀句繚绂忓埄妗f"); + String sheetName = SalaryI18nUtil.getI18nLabel(0, "绀句繚绂忓埄鍙拌处"); excelSheetData.add(Arrays.asList(columns.stream().map(WeaTableColumn::getText).toArray(String[]::new))); //鍚堣 boolean total = false; @@ -239,8 +245,8 @@ public class SIExportServiceImpl extends Service implements SIExportService { return ExcelUtil.genWorkbookV2(excelSheetData, sheetName, total); } - - private List> buildCommonRecords(List list) { + @Override + public List> buildCommonRecords(List list) { List> result = new ArrayList<>(); List paymentList = getTaxAgentMapper().listAll(); diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index a29848e61..205c9d459 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -14,19 +14,21 @@ import com.engine.salary.encrypt.AESEncryptUtil; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.siarchives.param.InsuranceArchivesListParam; -import com.engine.salary.entity.siarchives.param.SIArchiveImportActionParam; +import com.engine.salary.entity.siarchives.param.SIArchiveImportParam; import com.engine.salary.entity.siarchives.po.*; import com.engine.salary.entity.sicategory.po.ICategoryPO; import com.engine.salary.entity.sischeme.dto.InsuranceSchemeListDTO; import com.engine.salary.entity.sischeme.param.InsuranceSchemeDetailUpdateParam; import com.engine.salary.entity.sischeme.param.InsuranceSchemeParam; -import com.engine.salary.entity.sischeme.param.SISchemaImportParam; import com.engine.salary.entity.sischeme.po.InsuranceSchemeDetailPO; import com.engine.salary.entity.sischeme.po.InsuranceSchemePO; import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeDTO; import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO; +import com.engine.salary.entity.taxagent.param.TaxAgentManageRangeSaveParam; +import com.engine.salary.entity.taxagent.param.TaxAgentRangeSaveParam; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.UserStatusEnum; +import com.engine.salary.enums.salarysob.TargetTypeEnum; import com.engine.salary.enums.siaccount.EmployeeStatusEnum; import com.engine.salary.enums.sicategory.*; import com.engine.salary.exception.SalaryRunTimeException; @@ -39,10 +41,7 @@ import com.engine.salary.mapper.sischeme.InsuranceSchemeDetailMapper; import com.engine.salary.mapper.sischeme.InsuranceSchemeMapper; import com.engine.salary.mapper.sys.SalarySysConfMapper; import com.engine.salary.mapper.taxagent.TaxAgentMapper; -import com.engine.salary.service.SIImportService; -import com.engine.salary.service.SISchemeService; -import com.engine.salary.service.SalaryEmployeeService; -import com.engine.salary.service.TaxAgentService; +import com.engine.salary.service.*; import com.engine.salary.sys.entity.po.SalarySysConfPO; import com.engine.salary.sys.entity.vo.OrderRuleVO; import com.engine.salary.sys.service.SalarySysConfService; @@ -146,6 +145,10 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { return MapperProxyFactory.getProxy(InsuranceBaseInfoMapper.class); } + public TaxAgentManageRangeService getTaxAgentManageRangeService(User user) { + return ServiceUtil.getService(TaxAgentManageRangeServiceImpl.class, user); + } + @Override public Map getForm(Map params) { return commandExecutor.execute(new SISchemeGetFormCmd(params, user)); @@ -194,11 +197,16 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { @Override public PageInfo list(InsuranceSchemeParam queryParam) { SalaryAssert.notNull(queryParam.getWelfareTypeEnum(), SalaryI18nUtil.getI18nLabel(84026, "鍙傛暟閿欒")); + queryParam.setWelfareType(queryParam.getWelfareTypeEnum().getValue()); + if (queryParam.getPaymentTypeEnum() != null) { + queryParam.setPaymentType(queryParam.getPaymentTypeEnum().getValue()); + } Long currentEmployeeId = (long) user.getUID(); List insuranceSchemePOS; Boolean needAuth = getTaxAgentService().isNeedAuth(currentEmployeeId); if (needAuth) { - insuranceSchemePOS = getInsuranceSchemeMapper().listByWelfareType(queryParam.getWelfareTypeEnum().getValue()); +// insuranceSchemePOS = getInsuranceSchemeMapper().listByWelfareType(queryParam.getWelfareTypeEnum().getValue()); + insuranceSchemePOS = getInsuranceSchemeMapper().list(queryParam); Boolean isAdminEnable = getTaxAgentService().isAdminEnable((long) user.getUID()); if (isAdminEnable) { //绠$悊鍛 @@ -217,7 +225,8 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { insuranceSchemePOS = new ArrayList<>(); } } else { - insuranceSchemePOS = getInsuranceSchemeMapper().listByWelfareType(queryParam.getWelfareTypeEnum().getValue()); +// insuranceSchemePOS = getInsuranceSchemeMapper().listByWelfareType(queryParam.getWelfareTypeEnum().getValue()); + insuranceSchemePOS = getInsuranceSchemeMapper().list(queryParam); } PageInfo dtoPage = new PageInfo<>(InsuranceSchemeListDTO.class); @@ -608,7 +617,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { * 瀵煎叆鐨勬暟鎹彃鍏ュ埌鏁版嵁搴撲腑 */ @Override - public Map preview(SISchemaImportParam param) { + public Map preview(SIArchiveImportParam param) { ValidUtil.doValidator(param); InputStream fileInputStream = null; try { @@ -626,15 +635,16 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { /** * 瀵煎叆鐨勬暟鎹彃鍏ュ埌鏁版嵁搴撲腑 */ - public Map batchImportEbatch(SISchemaImportParam param) { + public Map batchImportEbatch(SIArchiveImportParam param) { ValidUtil.doValidator(param); + param.setProcess(false); if (StringUtils.isBlank(param.getRunStatus())) { throw new SalaryRunTimeException("绂忓埄妗f鎵ц鐘舵佹湭鍦ㄥ鍏ユ潯浠惰缃腑娣诲姞锛"); } // List excelSheets = message.getBatchFile().getExcelSheets(); // 绉熸埛key -// String tenantKey = message.getTenantKey().toLowerCase(); +// String tenantKey = message.getTenantKey().toLowerCase();EditSIArchiveAction //鎿嶄綔鍛榠d Long creator = (long) user.getUID(); //鑾峰彇鎵鏈夌鍒╃被鍨嬬殑id-name缁撳悎 @@ -699,7 +709,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { singleAccount.add(cellData); } - isError = singleAccountCheck(singleAccount, welfareMap, insuranceArchivesAccountPOS, employeeByIds, excelComments, errorCount + 1, schemeNameIdMap, paymentNameIdMap, creator, i + 2, openDevolution, taxAgentManageRangeEmployeeTree, param.getRunStatus()); + isError = singleAccountCheck(singleAccount, welfareMap, insuranceArchivesAccountPOS, employeeByIds, excelComments, errorCount + 1, schemeNameIdMap, paymentNameIdMap, creator, i + 2, openDevolution, taxAgentManageRangeEmployeeTree, param); if (isError) { errorCount += 1; // 娣诲姞閿欒鏁版嵁 @@ -716,7 +726,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { // } // 鏁版嵁鍏ュ簱澶勭悊 - handleImportData(insuranceArchivesAccountPOS); + handleImportData(insuranceArchivesAccountPOS, param); // 鍙戦佸鍏ュ洖璋冧俊鎭 // salaryBatchService.sendImportCallBackInfo(message, successCount, errorCount, errorExcelSheets); @@ -755,8 +765,14 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { return userState; } - public boolean singleAccountCheck(List> singleAccount, Map welfareMap, List insuranceArchivesAccountPOS, List employeeByIds, List> excelComments, int i, Map schemeNameIdMap, Map paymentNameIdMap, Long creator, int index, Boolean openDevolution, List taxAgentManageRangeEmployeeTree, String runStatus) { + public boolean singleAccountCheck(List> singleAccount, Map welfareMap, + List insuranceArchivesAccountPOS, List employeeByIds, + List> excelComments, int i, Map schemeNameIdMap, + Map paymentNameIdMap, Long creator, int index, Boolean openDevolution, + List taxAgentManageRangeEmployeeTree, SIArchiveImportParam param) { boolean isError = false; + String runStatus = param.getRunStatus(); + // String userName = (String) singleAccount.get(0).get(SalaryI18nUtil.getI18nLabel(85429, "濮撳悕")); // String deparmentName = (String) singleAccount.get(1).get(SalaryI18nUtil.getI18nLabel(86185, "閮ㄩ棬")); // String mobile = (String) singleAccount.get(2).get(SalaryI18nUtil.getI18nLabel(86186, "鎵嬫満鍙")); @@ -878,27 +894,33 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { isError = true; } - if (openDevolution && !isError) { + if (!isError) { Long paymentOrgId = paymentNameIdMap.get(paymentOrg); TaxAgentManageRangeEmployeeDTO taxAgentManageRangeEmployeeDTO = taxAgentManageRangeEmployeeTree.stream().filter(tax -> tax.getTaxAgentId().equals(paymentOrgId)).findFirst().get(); Optional o = taxAgentManageRangeEmployeeDTO.getEmployeeList().stream().map(TaxAgentManageRangeEmployeeDTO.TaxAgentEmployee::getEmployeeId).filter(e -> e.equals(employeeId)).findFirst(); if (!o.isPresent()) { - Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100312, "璇ユ潯鏁版嵁涓嶅湪涓◣鎵g即涔夊姟浜轰汉鍛樿寖鍥村唴锛屼笉鍙鍏")); - excelComments.add(errorMessageMap); - isError = true; + if (param.isProcess()) { + //娴佺▼涓嚜鍔ㄥ皢浜哄憳娣诲姞杩涗釜绋庢墸缂翠箟鍔′汉涓 + TaxAgentManageRangeSaveParam.TaxAgentSubAdminRangeTargetParam taxAgentSubAdminRangeTargetParam = new TaxAgentManageRangeSaveParam.TaxAgentSubAdminRangeTargetParam(); + taxAgentSubAdminRangeTargetParam.setTargetId(employeeId); + taxAgentSubAdminRangeTargetParam.setTargetType(TargetTypeEnum.EMPLOYEE); + + TaxAgentRangeSaveParam taxAgentRangeSaveParam = new TaxAgentRangeSaveParam(); + taxAgentRangeSaveParam.setTaxAgentId(paymentOrgId); + taxAgentRangeSaveParam.setIncludeType(1); + taxAgentRangeSaveParam.setEmployeeStatus(Arrays.asList("0", "1", "2", "3", "4", "5", "6")); + taxAgentRangeSaveParam.setTargetParams(Collections.singletonList(taxAgentSubAdminRangeTargetParam)); + taxAgentRangeSaveParam.setSync(true); + param.setTaxAgentRanges(Collections.singletonList(taxAgentRangeSaveParam)); + } else { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100312, "璇ユ潯鏁版嵁涓嶅湪涓◣鎵g即涔夊姟浜轰汉鍛樿寖鍥村唴锛屼笉鍙鍏")); + excelComments.add(errorMessageMap); + isError = true; + } + } -// //鍒ゆ柇鏄惁瀛樺湪鍏朵粬涓◣鎵g即涔夊姟浜轰笅鐨勮鍛樺伐绂忓埄妗f -// // 鎵鏈夌鍒╂。妗堝熀纭淇℃伅鏁版嵁 -// List baseInfoPOList = getInsuranceBaseInfoMapper().listAll(); -// List otherTaxBaseInfos = baseInfoPOList.stream().filter(f -> f.getEmployeeId().equals(employeeId) && !f.getPaymentOrganization().equals(paymentOrgId)).collect(Collectors.toList()); -// if (otherTaxBaseInfos.size() > 0) { -// Map errorMessageMap = Maps.newHashMap(); -// errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100312, "璇ユ潯鏁版嵁鐩稿叧浜哄憳宸插瓨鍦ㄥ叾浠栦釜绋庢墸缂翠箟鍔′汉涓嬬殑绂忓埄妗f锛屼笉鍙鍏")); -// excelComments.add(errorMessageMap); -// isError = true; -// } } @@ -1044,7 +1066,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { } } //鐢熸垚绂忓埄妗f鍩虹淇℃伅鏁版嵁 - InsuranceArchivesBaseInfoPO insuranceArchivesBaseInfoPO = buildBaseInfoPO(employeeId, singleAccount, paymentNameIdMap, creator, runStatus); + InsuranceArchivesBaseInfoPO insuranceArchivesBaseInfoPO = buildBaseInfoPO(employeeId, singleAccount, paymentNameIdMap, creator, runStatus, employees.get(0).isExtEmp()); if (!isError) { insuranceArchivesAccountPO.setSocial(insuranceArchivesSocialSchemePO); insuranceArchivesAccountPO.setFund(insuranceArchivesFundSchemePO); @@ -1127,13 +1149,13 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { insuranceArchivesSocialSchemePO.setSocialSchemeId(socialSchemeId); } String socialStartDate = (String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91319, "绀句繚璧峰缂寸撼鏈")).get(SalaryI18nUtil.getI18nLabel(91319, "绀句繚璧峰缂寸撼鏈")); - if (StringUtils.isNotBlank(socialStartDate) && socialStartDate.length() > 7) { + if (StringUtils.isNotBlank(socialStartDate) && socialStartDate.length() >= 7) { socialStartDate = socialStartDate.substring(0, 7); insuranceArchivesSocialSchemePO.setSocialStartTime(socialStartDate); } String socialEndDate = (String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91320, "绀句繚鏈鍚庣即绾虫湀")).get(SalaryI18nUtil.getI18nLabel(91320, "绀句繚鏈鍚庣即绾虫湀")); - if (StringUtils.isNotBlank(socialEndDate) && socialEndDate.length() > 7) { + if (StringUtils.isNotBlank(socialEndDate) && socialEndDate.length() >= 7) { socialEndDate = socialEndDate.substring(0, 7); insuranceArchivesSocialSchemePO.setSocialEndTime(socialEndDate); } @@ -1215,13 +1237,13 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { insuranceArchivesFundSchemePO.setSupplementFundAccount(supplementFundAccount); } String fundStartDate = (String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91483, "鍏Н閲戣捣濮嬬即绾虫湀")).get(SalaryI18nUtil.getI18nLabel(91483, "鍏Н閲戣捣濮嬬即绾虫湀")); - if (StringUtils.isNotBlank(fundStartDate) && fundStartDate.length() > 7) { + if (StringUtils.isNotBlank(fundStartDate) && fundStartDate.length() >= 7) { fundStartDate = fundStartDate.substring(0, 7); insuranceArchivesFundSchemePO.setFundStartTime(fundStartDate); } String fundEndDate = (String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91484, "鍏Н閲戞渶鍚庣即绾虫湀")).get(SalaryI18nUtil.getI18nLabel(91484, "鍏Н閲戞渶鍚庣即绾虫湀")); - if (StringUtils.isNotBlank(fundEndDate) && fundEndDate.length() > 7) { + if (StringUtils.isNotBlank(fundEndDate) && fundEndDate.length() >= 7) { fundEndDate = fundEndDate.substring(0, 7); insuranceArchivesFundSchemePO.setFundEndTime(fundEndDate); } @@ -1291,13 +1313,13 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { insuranceArchivesOtherSchemePO.setOtherSchemeId(otherSchemeId); } String otherStartDate = (String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91490, "鍏朵粬绂忓埄璧峰缂寸撼鏈")).get(SalaryI18nUtil.getI18nLabel(91490, "鍏朵粬绂忓埄璧峰缂寸撼鏈")); - if (StringUtils.isNotBlank(otherStartDate) && otherStartDate.length() > 7) { + if (StringUtils.isNotBlank(otherStartDate) && otherStartDate.length() >= 7) { otherStartDate = otherStartDate.substring(0, 7); insuranceArchivesOtherSchemePO.setOtherStartTime(otherStartDate); } String otherEndDate = (String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91494, "鍏朵粬绂忓埄鏈鍚庣即绾虫湀")).get(SalaryI18nUtil.getI18nLabel(91494, "鍏朵粬绂忓埄鏈鍚庣即绾虫湀")); - if (StringUtils.isNotBlank(otherEndDate) && otherEndDate.length() > 7) { + if (StringUtils.isNotBlank(otherEndDate) && otherEndDate.length() >= 7) { otherEndDate = otherEndDate.substring(0, 7); insuranceArchivesOtherSchemePO.setOtherEndTime(otherEndDate); } @@ -1332,7 +1354,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { return insuranceArchivesOtherSchemePO; } - public InsuranceArchivesBaseInfoPO buildBaseInfoPO(Long employeeId, List> singleAccount, Map paymentNameIdMap, Long creator, String runStatus) { + public InsuranceArchivesBaseInfoPO buildBaseInfoPO(Long employeeId, List> singleAccount, Map paymentNameIdMap, Long creator, String runStatus, Boolean isExtEmp) { if (employeeId == null) { return null; } @@ -1346,11 +1368,14 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { insuranceArchivesBaseInfoPO.setUpdateTime(new Date()); insuranceArchivesBaseInfoPO.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY); insuranceArchivesBaseInfoPO.setPaymentOrganization(paymentNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91497, "涓◣鎵g即涔夊姟浜")).get(SalaryI18nUtil.getI18nLabel(91497, "涓◣鎵g即涔夊姟浜")))); + if (isExtEmp) { + insuranceArchivesBaseInfoPO.setEmployeeType(1); + } return insuranceArchivesBaseInfoPO; } - public void handleImportData(List insuranceArchivesAccountPOS) { + public void handleImportData(List insuranceArchivesAccountPOS, SIArchiveImportParam param) { //瀵煎叆绀句繚妗f List socialSchemePOS = insuranceArchivesAccountPOS.stream().filter(Objects::nonNull).map(InsuranceArchivesAccountPO::getSocial).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(socialSchemePOS)) { @@ -1430,6 +1455,10 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { List> partition = Lists.partition(newInsuranceArchivesBaseInfoList, 100); partition.forEach(getInsuranceBaseInfoMapper()::batchSave); } + //鏂板浜哄憳鑼冨洿锛堜細鑷姩鐢熸垚浜哄憳妗f锛 + if (CollectionUtils.isNotEmpty(param.getTaxAgentRanges())) { + param.getTaxAgentRanges().forEach(getTaxAgentManageRangeService(user)::save); + } } @@ -1456,31 +1485,26 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { /** * 鏍¢獙寰呮柊澧炵殑绀句繚绂忓埄妗f鏁版嵁 - * - * @param siArchiveImportActionParam - * @return */ @Override - public Map checkSIArchiveAdd(SIArchiveImportActionParam siArchiveImportActionParam) { - siArchiveImportActionParam.setAddData(false); - return processAddSIArchive(siArchiveImportActionParam); + public Map checkSIArchiveAdd(SIArchiveImportParam param) { + param.setAddData(false); + return processAddSIArchive(param); } /** * 鏂板绀句繚绂忓埄妗f - * - * @param siArchiveImportActionParam - * @return */ @Override - public Map addSIArchive(SIArchiveImportActionParam siArchiveImportActionParam) { - siArchiveImportActionParam.setAddData(true); - return processAddSIArchive(siArchiveImportActionParam); + public Map addSIArchive(SIArchiveImportParam param) { + param.setAddData(true); + return processAddSIArchive(param); } - private Map processAddSIArchive(SIArchiveImportActionParam param) { + private Map processAddSIArchive(SIArchiveImportParam param) { ValidUtil.doValidator(param); + param.setProcess(true); if (StringUtils.isBlank(param.getRunStatus())) { throw new SalaryRunTimeException("绂忓埄妗f鎵ц鐘舵佹湭鍦ㄥ鍏ユ潯浠惰缃腑娣诲姞锛"); @@ -1563,7 +1587,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { singleAccount.add(cellData); } - isError = singleAccountCheck(singleAccount, welfareMap, insuranceArchivesAccountPOS, employeeByIds, excelComments, errorCount + 1, schemeNameIdMap, paymentNameIdMap, creator, i + 2, openDevolution, taxAgentManageRangeEmployeeTree, param.getRunStatus()); + isError = singleAccountCheck(singleAccount, welfareMap, insuranceArchivesAccountPOS, employeeByIds, excelComments, errorCount + 1, schemeNameIdMap, paymentNameIdMap, creator, i + 2, openDevolution, taxAgentManageRangeEmployeeTree, param); if (isError) { errorCount += 1; // 娣诲姞閿欒鏁版嵁 @@ -1581,7 +1605,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { // 鏁版嵁鍏ュ簱澶勭悊 if (param.isAddData()) { - handleImportData(insuranceArchivesAccountPOS); + handleImportData(insuranceArchivesAccountPOS, param); } // 鍙戦佸鍏ュ洖璋冧俊鎭 // salaryBatchService.sendImportCallBackInfo(message, successCount, errorCount, errorExcelSheets); diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index 7dad4d050..35f02da4a 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -54,6 +54,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.util.IOUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -61,6 +62,7 @@ import weaver.file.ImageFileManager; import weaver.hrm.User; import java.io.InputStream; +import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -330,6 +332,11 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc if (openSum != null && StringUtils.isNotBlank(openSum.getConfValue()) && OpenEnum.parseByValue(openSum.getConfValue()) == OpenEnum.OPEN) { total = true; Map sumRow = getSalaryAcctResultService(user).sumRow(queryParam); + sumRow.forEach((k,v) -> { + if (NumberUtils.isCreatable(v.toString())) { + sumRow.put(k,new BigDecimal(v.toString())); + } + }); if(sumRow !=null){ sumRow.put("taxAgentName", "鎬昏"); resultMapList.add(sumRow); @@ -337,19 +344,26 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc } // excel瀵煎嚭鐨勬暟鎹 + String DATA_TYPE_SUFFIX = "_type"; List> rows = new ArrayList<>(); rows.add(headerList); for (Map map : resultMapList) { List row = Lists.newArrayListWithExpectedSize(headerColumnGroup.size()); for (WeaTableColumnGroup weaTableColumn : headerColumnGroup) { - row.add(map.getOrDefault(weaTableColumn.getColumn(), StringUtils.EMPTY)); + String fieldType = (String) map.getOrDefault(weaTableColumn.getColumn().toString() + DATA_TYPE_SUFFIX, StringUtils.EMPTY); + if (StringUtils.equals("number", fieldType)) { + row.add(new BigDecimal(StringUtils.isBlank(map.get(weaTableColumn.getColumn()).toString()) ? "0" :map.get(weaTableColumn.getColumn()).toString())); + } else { + row.add(map.getOrDefault(weaTableColumn.getColumn(), StringUtils.EMPTY)); + } + } rows.add(row); } String sheetName = "钖祫鏍哥畻缁撴灉"; // return ExcelUtil.genWorkbookV2(rows, sheetName, total); - return ExcelUtilPlus.genWorkbookWithChildTitleColumn(rows, sheetName, total); + return ExcelUtilPlus.genWorkbookWithChildTitleColumnWithExcelFormat(rows, sheetName, total); } diff --git a/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java index 4b45a13f1..87137b0e8 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java @@ -14,6 +14,7 @@ import com.engine.salary.entity.salaryarchive.param.SalaryArchiveQueryParam; import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO; import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; +import com.engine.salary.entity.salarysob.param.SalarySobRangeSaveParam; import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO; import com.engine.salary.entity.taxagent.param.TaxAgentRangeSaveParam; import com.engine.salary.entity.taxagent.po.TaxAgentPO; @@ -86,6 +87,10 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch return ServiceUtil.getService(TaxAgentManageRangeServiceImpl.class, user); } + private SalarySobRangeService getSalarySobRangeService(User user) { + return ServiceUtil.getService(SalarySobRangeServiceImpl.class, user); + } + public SalarySysConfService getSalarySysConfService(User user) { return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); } @@ -582,10 +587,6 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch // 閿欒sheet鏁版嵁 List> errorData = new ArrayList<>(); - // 鑾峰彇鍖归厤瑙勫垯 - SalarySysConfPO salarySysConfPO = getSalarySysConfService(user).getOneByCode("matchEmployeeMode"); - String confValue = (salarySysConfPO != null && salarySysConfPO.getConfValue() != null && !"".equals(salarySysConfPO.getConfValue())) ? salarySysConfPO.getConfValue() : "0"; - for (int i = 0; i < data.size(); i++) { Map map = data.get(i); @@ -820,7 +821,7 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch List salaryArchiveItemSaves = importHandleParam.getSalaryArchiveItemSaves(); List salaryArchiveItemDelSalaryItemIds = importHandleParam.getSalaryArchiveItemDelSalaryItemIds(); List taxAgentRanges = importHandleParam.getTaxAgentRanges(); -// List salaryArchiveSobSaves = importHandleParam.getSalaryArchiveSobSaves(); + List salaryArchiveSobSaves = importHandleParam.getSalaryArchiveSobSaves(); // 鏂板钖祫妗f @@ -859,5 +860,9 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch if (CollectionUtils.isNotEmpty(taxAgentRanges)) { taxAgentRanges.forEach(getTaxAgentManageRangeService(user)::save); } + + if (CollectionUtils.isNotEmpty(salaryArchiveSobSaves)) { + salaryArchiveSobSaves.forEach(getSalarySobRangeService(user)::save); + } } } diff --git a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java index c3674c65d..7a08cf8f9 100644 --- a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java @@ -10,10 +10,12 @@ import com.engine.salary.entity.salaryformula.po.FormulaVar; import com.engine.salary.entity.salaryitem.bo.SalaryItemBO; import com.engine.salary.entity.salaryitem.param.SalaryItemSaveParam; import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; +import com.engine.salary.entity.salaryitem.param.SyncSalaryItemParam; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salaryitem.po.SysSalaryItemPO; 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.taxagent.po.TaxAgentPO; import com.engine.salary.enums.SalarySystemTypeEnum; import com.engine.salary.enums.SalaryValueTypeEnum; @@ -24,11 +26,13 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; +import com.engine.salary.util.valid.ValidUtil; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import weaver.hrm.User; @@ -69,6 +73,10 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService return ServiceUtil.getService(SalarySobBackItemServiceImpl.class, user); } + public SalarySobService getSalarySobService(User user) { + return ServiceUtil.getService(SalarySobServiceImpl.class, user); + } + private SysSalaryItemBiz sysSalaryItemBiz = new SysSalaryItemBiz(); // @@ -391,6 +399,43 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService salaryItemBiz.batchUpdateSortedIndex(values); } + @Override + public List> getSalarySobBySalaryItem(Long salaryItemId) { + // 鏌ヨ鎵鏈夊惎鐢ㄧ殑钖祫璐﹀ + List salarySobItemList = getSalarySobItemService(user).listBySalaryItemIds(Collections.singleton(salaryItemId)); + Set salarySobIds = SalaryEntityUtil.properties(salarySobItemList, SalarySobItemPO::getSalarySobId); + List salarySobs = getSalarySobService(user).listByIds(salarySobIds); + return salarySobs.stream().map(m -> { + Map map = new HashMap<>(); + map.put("id", String.valueOf(m.getId())); + map.put("content", m.getName()); + return map; + }).collect(Collectors.toList()); + } + + @Override + public void syncSalaryItemToSalarySobItem(SyncSalaryItemParam param) { + ValidUtil.doValidator(param); + // 鑾峰彇钖祫椤圭洰淇℃伅 + SalaryItemPO salaryItemPO = salaryItemBiz.getById(param.getSalaryItemId()); + if (ObjectUtils.isEmpty(salaryItemPO)) { + throw new SalaryRunTimeException("钖祫椤圭洰涓嶅瓨鍦ㄦ垨宸茶鍒犻櫎"); + } + // 鑾峰彇钖祫璐﹀涓柂璧勯」鐩俊鎭 + List salarySobItemPOS = getSalarySobItemService(user).listBySalaryItemIds(Collections.singleton(param.getSalaryItemId())); + salarySobItemPOS = salarySobItemPOS.stream().filter( po -> param.getSalarySobIds().contains(po.getSalarySobId())).collect(Collectors.toList()); + // 鏇存柊钖祫璐﹀涓殑钖祫椤圭洰淇℃伅 + Date now = new Date(); + for (SalarySobItemPO sobItem : salarySobItemPOS) { + sobItem.setFormulaId(salaryItemPO.getFormulaId()); + sobItem.setRoundingMode(salaryItemPO.getRoundingMode()); + sobItem.setPattern(salaryItemPO.getPattern()); + sobItem.setValueType(salaryItemPO.getValueType()); + sobItem.setDescription(salaryItemPO.getDescription()); + sobItem.setUpdateTime(now); + getSalarySobItemService(user).update(sobItem); + } + } @Data @Builder diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index 94c34f599..01bc7bb65 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -613,7 +613,13 @@ public class SalarySendServiceImpl extends Service implements SalarySendService map.put("salaryAcctResult", salaryAcctResultS); // 宸ヨ祫鍗曞彂閫佷汉銆佹槸鍚﹀凡纭 if (NumberUtils.compare(salaryTemplate.getAckFeedbackStatus(),1) == 0) { - map.put("confirmStatus", salarySendInfo.getBillConfirmStatus() == null ? "0" : salarySendInfo.getBillConfirmStatus().toString()); + // 鍙嶉鍚庤繕鍙互纭鎴栧弽棣堟寜閽紝纭鍚2涓寜閽秷澶 + Integer confirmStatus = salarySendInfo.getBillConfirmStatus(); + if (confirmStatus == null || confirmStatus != BillConfimStatusEnum.CONFIRMED.getValue()) { + map.put("confirmStatus", "0"); + } else { + map.put("confirmStatus", "1"); + } map.put("sendEmployeeId", salarySendInfo.getSendEmployeeId()); }else{ map.put("confirmStatus", "1"); diff --git a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java index 1dda1ac54..32ad87e0f 100644 --- a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java @@ -731,6 +731,11 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe salarySobItemMapper.deleteItemShowBySalarySobId(salarySobIds); } + @Override + public void update(SalarySobItemPO po) { + salarySobItemMapper.update(po); + } + @Override public SalarySobItemFormDTO getSalaryItemForm(SalarySobItemPO param) { SalarySobItemFormDTO salarySobItemFormDTO = new SalarySobItemFormDTO(); diff --git a/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java b/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java index 4486790f7..6e19d15a5 100644 --- a/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java @@ -485,10 +485,10 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM // //鐢熸垚妗f getSalaryArchiveService(user).handleChangeData(1L); // //鐢熸垚绀句繚绂忓埄妗f -// String welSign = (String) Util_DataCache.getObjVal("welfareChangeSign"); -// if (welSign == null || "0".equals(welSign)) { -// getSIArchivesService(user).handleChangeData(1L); -// } + String welSign = (String) Util_DataCache.getObjVal("welfareChangeSign"); + if (welSign == null || "0".equals(welSign)) { + getSIArchivesService(user).handleChangeData(1L); + } } diff --git a/src/com/engine/salary/service/impl/TaxAgentServiceImpl.java b/src/com/engine/salary/service/impl/TaxAgentServiceImpl.java index ea7fb6fbb..167bbfffd 100644 --- a/src/com/engine/salary/service/impl/TaxAgentServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxAgentServiceImpl.java @@ -551,9 +551,11 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService { } @Override - public List> selectList() { + public List> selectList(boolean needAuth) { List taxAgents = getTaxAgentMapper().listAll(); - taxAgents = handleForDevolution(taxAgents, (long) user.getUID(), true); + if (needAuth) { + taxAgents = handleForDevolution(taxAgents, (long) user.getUID(), true); + } return taxAgents.stream().map(m -> { Map map = new HashMap<>(2); map.put("id", String.valueOf(m.getId())); diff --git a/src/com/engine/salary/util/excel/ExcelUtilPlus.java b/src/com/engine/salary/util/excel/ExcelUtilPlus.java index f8cb09c79..d54b875ab 100644 --- a/src/com/engine/salary/util/excel/ExcelUtilPlus.java +++ b/src/com/engine/salary/util/excel/ExcelUtilPlus.java @@ -6,10 +6,16 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.usermodel.*; +import org.springframework.beans.BeanUtils; import java.awt.Color; +import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; public class ExcelUtilPlus { /** @@ -342,7 +348,8 @@ public class ExcelUtilPlus { return workbook; } - public static XSSFWorkbook genWorkbookWithChildTitleColumn(List> rowList, String sheetName, boolean lastRowRed) { + // 鏁板奸」鐩慨鏀筫xcel鍗曞厓鏍兼牸寮忎负鏁板 + public static XSSFWorkbook genWorkbookWithChildTitleColumnWithExcelFormat(List> rowList, String sheetName, boolean lastRowRed) { XSSFWorkbook workbook = new XSSFWorkbook(); // 璁剧疆title鏍峰紡 @@ -413,6 +420,195 @@ public class ExcelUtilPlus { XSSFRow row0 = sheet.createRow(0); XSSFRow row1 = sheet.createRow(1); + // 淇濈暀灏忔暟浣嶆暟 + List patternList = new ArrayList<>(); + List header = rowList.get(0); + int startIndex = 0; + for (int i = 0; i < header.size(); i++) { + WeaTableColumnGroup columnGroupItem = (WeaTableColumnGroup) header.get(i); + if (columnGroupItem.getChildren() == null) { + sheet.addMergedRegion(new CellRangeAddress(0, 1, startIndex, startIndex)); + + XSSFCell rowZeroCell = row0.createCell(startIndex, CellType.STRING); + rowZeroCell.setCellValue(columnGroupItem.getText().toString()); + rowZeroCell.setCellStyle(titleCellStyle); + XSSFCell rowOneCell = row1.createCell(startIndex, CellType.STRING); + rowOneCell.setCellValue(columnGroupItem.getText().toString()); + rowOneCell.setCellStyle(titleCellStyle); + //璁剧疆鍒楀 + sheet.setColumnWidth(startIndex,Math.max(12, columnGroupItem.getText().length()*4)*256); + startIndex++; + patternList.add(columnGroupItem.getPattern()); + } else { + List childrenList = columnGroupItem.getChildren(); + int endIndex = startIndex + childrenList.size() - 1; + + if (endIndex > startIndex) { + sheet.addMergedRegion(new CellRangeAddress(0, 0, startIndex, endIndex)); + } + + XSSFCell cell = row0.createCell(startIndex, CellType.STRING); + cell.setCellValue(columnGroupItem.getText().toString()); + cell.setCellStyle(childTitleCellStyle); + + for (int j = 0; j < childrenList.size(); j++) { + WeaTableColumnGroup childrenItem = (WeaTableColumnGroup) childrenList.get(j); + + XSSFCell subHeader = row1.createCell(startIndex + j, CellType.STRING); + subHeader.setCellValue(childrenItem.getText().toString()); + subHeader.setCellStyle(titleCellStyle); + //璁剧疆鍒楀 + sheet.setColumnWidth(startIndex + j,Math.max(12, childrenItem.getText().length()*4)*256); + patternList.add(childrenItem.getPattern()); + } + + startIndex += childrenList.size(); + + } + + } + + HashMap numberCellStyleMap = new HashMap(); + HashMap numberRedCellStyleMap = new HashMap(); + XSSFDataFormat df = workbook.createDataFormat(); + patternList.stream().distinct().forEach(p -> { + String start = "0."; + if (p==0) { + start ="0"; + } + XSSFCellStyle numberRedCellStyle = workbook.createCellStyle(); + BeanUtils.copyProperties(redCellStyle, numberRedCellStyle); + numberRedCellStyle.setFont(redFont); + short format = df.getFormat(start + Stream.generate(() -> "0").limit(p).collect(Collectors.joining()) + "_ "); + numberRedCellStyle.setDataFormat(format); + // 鏈鍚庝竴琛岀孩鑹 + numberRedCellStyleMap.put(p, numberRedCellStyle); + XSSFCellStyle numberCellStyle = workbook.createCellStyle(); + BeanUtils.copyProperties(cellStyle, numberCellStyle); + numberCellStyle.setDataFormat(format); + numberCellStyleMap.put(p, numberCellStyle); + }); + + for (int rowIndex = 1; rowIndex < rowList.size(); rowIndex++) { + List infoList = rowList.get(rowIndex); + XSSFRow row = sheet.createRow(rowIndex + 1); + float height = 18; + float finalHeight = 18; + + for (int cellIndex = 0; cellIndex < infoList.size(); cellIndex++) { + XSSFCell cell = row.createCell(cellIndex); + + if (rowIndex == 0) { + cell.setCellStyle(titleCellStyle); + } else { + if (lastRowRed && rowIndex == rowList.size() - 1) { + cell.setCellStyle(redCellStyle); + } else { + cell.setCellStyle(cellStyle); + } + } + Object o = infoList.get(cellIndex); + if (o instanceof String) { + cell.setCellType(CellType.STRING); + cell.setCellValue(String.valueOf(o)); + } else if (o instanceof BigDecimal) { + cell.setCellType(CellType.NUMERIC); + cell.setCellValue(o == null ? 0 : ((BigDecimal) o).doubleValue()); + if (lastRowRed && rowIndex == rowList.size() - 1) { + cell.setCellStyle(numberRedCellStyleMap.get(patternList.get(cellIndex))); + } else { + cell.setCellStyle(numberCellStyleMap.get(patternList.get(cellIndex))); + } + } else if (o instanceof Boolean) { + cell.setCellType(CellType.BOOLEAN); + cell.setCellValue(String.valueOf(o)); + } else if (o instanceof Date) { + cell.setCellType(CellType.STRING); + cell.setCellValue(SalaryDateUtil.getFormatLocalDate((Date) o)); + } else { + cell.setCellType(CellType.STRING); + cell.setCellValue(o == null ? "" : o.toString()); + } + + //鍒ゆ柇鏄惁瑕佽皟鏁撮珮搴 + int width = sheet.getColumnWidth(cellIndex) / 256; + finalHeight = getFinalHeight(o, width, finalHeight, height); + } + row.setHeightInPoints(finalHeight); + } + return workbook; + } + + public static XSSFWorkbook genWorkbookWithChildTitleColumn(List> rowList, String sheetName, boolean lastRowRed) { + XSSFWorkbook workbook = new XSSFWorkbook(); + + // 璁剧疆title鏍峰紡 + XSSFCellStyle titleCellStyle = workbook.createCellStyle(); + XSSFFont titleFont = workbook.createFont(); + titleFont.setBold(true); + titleFont.setFontName("浠垮畫"); + titleFont.setFontHeightInPoints((short) 15); + titleCellStyle.setFont(titleFont); + titleCellStyle.setAlignment(HorizontalAlignment.CENTER); + titleCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());//鑳屾櫙鑹 + titleCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); + titleCellStyle.setVerticalAlignment(VerticalAlignment.CENTER); + titleCellStyle.setBorderLeft(BorderStyle.THIN); + titleCellStyle.setBorderRight(BorderStyle.THIN); + titleCellStyle.setBorderTop(BorderStyle.THIN); + titleCellStyle.setBorderBottom(BorderStyle.THIN); + + XSSFCellStyle childTitleCellStyle = workbook.createCellStyle(); + childTitleCellStyle.setFont(titleFont); + childTitleCellStyle.setAlignment(HorizontalAlignment.LEFT); + childTitleCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());//鑳屾櫙鑹 + childTitleCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); + childTitleCellStyle.setVerticalAlignment(VerticalAlignment.CENTER); + childTitleCellStyle.setBorderLeft(BorderStyle.THIN); + childTitleCellStyle.setBorderRight(BorderStyle.THIN); + childTitleCellStyle.setBorderTop(BorderStyle.THIN); + childTitleCellStyle.setBorderBottom(BorderStyle.THIN); + + + + // 璁剧疆涓讳綋鏍峰紡 + XSSFCellStyle cellStyle = workbook.createCellStyle(); + XSSFFont font = workbook.createFont(); + font.setFontName("瀹嬩綋"); + font.setFontHeightInPoints((short) 10);// 璁剧疆瀛椾綋澶у皬 + cellStyle.setFont(font);// 閫夋嫨闇瑕佺敤鍒扮殑瀛椾綋鏍煎紡 + cellStyle.setWrapText(true); + + cellStyle.setBorderLeft(BorderStyle.THIN); + cellStyle.setBorderRight(BorderStyle.THIN); + cellStyle.setBorderTop(BorderStyle.THIN); + cellStyle.setBorderBottom(BorderStyle.THIN); + + XSSFCellStyle redCellStyle = workbook.createCellStyle(); + XSSFFont redFont = workbook.createFont(); + redFont.setFontName("瀹嬩綋"); + redFont.setFontHeightInPoints((short) 10);// 璁剧疆瀛椾綋澶у皬 + redFont.setColor(new XSSFColor(new Color(0xFF3333), null)); + redFont.setBold(true); + redCellStyle.setWrapText(true); + redCellStyle.setFont(redFont);// 閫夋嫨闇瑕佺敤鍒扮殑瀛椾綋鏍煎紡 + + redCellStyle.setBorderLeft(BorderStyle.THIN); + redCellStyle.setBorderRight(BorderStyle.THIN); + redCellStyle.setBorderTop(BorderStyle.THIN); + redCellStyle.setBorderBottom(BorderStyle.THIN); + + XSSFSheet sheet = workbook.createSheet(sheetName); + //鑷傚簲瀹藉害 + sheet.autoSizeColumn(0, true); + //榛樿鍒楀 + sheet.setDefaultColumnWidth(20); + //榛樿琛岄珮 + sheet.setDefaultRowHeightInPoints(18); + + //澶勭悊鍚堝苟鍗曞厓鏍 + XSSFRow row0 = sheet.createRow(0); + XSSFRow row1 = sheet.createRow(1); List header = rowList.get(0); int startIndex = 0; for (int i = 0; i < header.size(); i++) { diff --git a/src/com/engine/salary/web/SISchemeController.java b/src/com/engine/salary/web/SISchemeController.java index bd175ee15..13b532394 100644 --- a/src/com/engine/salary/web/SISchemeController.java +++ b/src/com/engine/salary/web/SISchemeController.java @@ -4,11 +4,11 @@ import com.engine.common.util.ParamUtil; import com.engine.common.util.ServiceUtil; import com.engine.salary.entity.siaccount.po.InsuranceAccountInspectPO; import com.engine.salary.entity.siarchives.param.InsuranceArchivesListParam; +import com.engine.salary.entity.siarchives.param.SIArchiveImportParam; import com.engine.salary.entity.sischeme.dto.InsuranceSchemeListDTO; import com.engine.salary.entity.sischeme.param.InsuranceSchemeDetailUpdateParam; import com.engine.salary.entity.sischeme.param.InsuranceSchemeParam; import com.engine.salary.entity.sischeme.param.InsuranceSchemeReqParam; -import com.engine.salary.entity.sischeme.param.SISchemaImportParam; import com.engine.salary.enums.siaccount.EmployeeStatusEnum; import com.engine.salary.enums.sicategory.WelfareTypeEnum; import com.engine.salary.service.SIAccountService; @@ -231,18 +231,18 @@ public class SISchemeController { @POST @Path("/preview") @Produces(MediaType.APPLICATION_JSON) - public String preview(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SISchemaImportParam queryParam) { + public String preview(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SIArchiveImportParam queryParam) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult>(user).run(getService(user)::preview, queryParam); + return new ResponseResult>(user).run(getService(user)::preview, queryParam); } @POST @Path("/importBatch") @Produces(MediaType.APPLICATION_JSON) - public String batchImportEbatch(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SISchemaImportParam queryParam) { + public String batchImportEbatch(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SIArchiveImportParam queryParam) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult>(user).run(getService(user)::batchImportEbatch, queryParam); + return new ResponseResult>(user).run(getService(user)::batchImportEbatch, queryParam); } diff --git a/src/com/engine/salary/web/SalaryItemController.java b/src/com/engine/salary/web/SalaryItemController.java index 61584bae1..39131b9f4 100644 --- a/src/com/engine/salary/web/SalaryItemController.java +++ b/src/com/engine/salary/web/SalaryItemController.java @@ -8,6 +8,7 @@ import com.engine.salary.entity.salaryitem.dto.SalaryItemListDTO; import com.engine.salary.entity.salaryitem.dto.SysSalaryItemListDTO; import com.engine.salary.entity.salaryitem.param.SalaryItemSaveParam; import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; +import com.engine.salary.entity.salaryitem.param.SyncSalaryItemParam; import com.engine.salary.entity.salaryitem.param.SysSalaryItemSearchParam; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.util.ResponseResult; @@ -112,6 +113,28 @@ public class SalaryItemController { return new ResponseResult(user).run(getSalaryItemWrapper(user)::getForm, id); } + /** + * 鑾峰彇鍝簺璐﹀涓娇鐢ㄤ簡璇ヨ柂璧勯」鐩 + */ + @GET + @Path("/getSalarySobBySalaryItem") + @Produces(MediaType.APPLICATION_JSON) + public String getSalarySobBySalaryItem(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>>(user).run(getSalaryItemWrapper(user)::getSalarySobBySalaryItem, id); + } + + /** + * 灏嗚柂璧勯」鐩鐞嗕腑鐨勪俊鎭悓姝ヨ嚦璐﹀ + */ + @POST + @Path("/syncSalaryItemToSalarySobItem") + @Produces(MediaType.APPLICATION_JSON) + public String syncSalaryItemToSalarySobItem(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SyncSalaryItemParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryItemWrapper(user)::syncSalaryItemToSalarySobItem, param); + } + /** * "鑾峰彇钖祫椤圭洰鍙夌殑绫诲瀷锛堜笌灞炴ф湁鑱斿姩锛" * diff --git a/src/com/engine/salary/web/TaxAgentController.java b/src/com/engine/salary/web/TaxAgentController.java index aad5e89e3..7aee3ea8b 100644 --- a/src/com/engine/salary/web/TaxAgentController.java +++ b/src/com/engine/salary/web/TaxAgentController.java @@ -15,6 +15,7 @@ import com.engine.salary.wrapper.TaxAgentBaseWrapper; import com.engine.salary.wrapper.TaxAgentSubAdminWrapper; import com.engine.salary.wrapper.TaxAgentWrapper; import io.swagger.v3.oas.annotations.parameters.RequestBody; +import org.apache.commons.lang3.StringUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; @@ -362,7 +363,8 @@ public class TaxAgentController { @Produces(MediaType.APPLICATION_JSON) public String selectList(@Context HttpServletRequest request, @Context HttpServletResponse response) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult, List>>(user).run(getTaxAgentWrapper(user)::selectList); + boolean needAuth = !StringUtils.equals("true", request.getParameter("isShare")); + return new ResponseResult>>(user).run(getTaxAgentWrapper(user)::selectList, needAuth); } @GET diff --git a/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java b/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java index ff9147988..9ddc60326 100644 --- a/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java @@ -20,6 +20,7 @@ import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.salaryarchive.*; import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.process.salaryArchive.SalaryArchiveProcessQueryParam; import com.engine.salary.service.*; import com.engine.salary.service.impl.*; import com.engine.salary.util.SalaryI18nUtil; @@ -53,7 +54,6 @@ public class SalaryArchiveWrapper extends Service { } - private TaxAgentService getTaxAgentService(User user) { return ServiceUtil.getService(TaxAgentServiceImpl.class, user); } @@ -442,7 +442,7 @@ public class SalaryArchiveWrapper extends Service { * @return */ public XSSFWorkbook downloadTemplate(SalaryArchiveQueryParam queryParam) { - if(!queryParam.isExtSalaryArchiveList()){ + if (!queryParam.isExtSalaryArchiveList()) { if (queryParam.getListType() == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(109712, "鍒楄〃绫诲瀷蹇呬紶")); } else { @@ -567,14 +567,19 @@ public class SalaryArchiveWrapper extends Service { return getSalaryArchiveService(user).handleRepeatData(); } - public SalaryArchivePO getSalaryArchiveInfo(SalaryArchiveQueryParam param) { - SalaryArchivePO po = SalaryArchivePO.builder().employeeId(param.getEmployeeId()).build(); + @Deprecated + public SalaryArchivePO getSalaryArchiveInfo(SalaryArchiveProcessQueryParam param) { if (param.getEmployeeId() == null) { throw new SalaryRunTimeException("浜哄憳id涓虹┖!"); } + SalaryArchivePO po = SalaryArchivePO.builder().employeeId(param.getEmployeeId()).build(); if (param.getTaxAgentId() != null) { po.setTaxAgentId(param.getTaxAgentId()); } + if (CollectionUtils.isNotEmpty(param.getRunStatusList())) { + po.setRunStatusList(param.getRunStatusList()); + } + List list = getSalaryArchiveService(user).listSome(po); if (CollectionUtils.isEmpty(list)) { throw new SalaryRunTimeException("钖祫妗f涓嶅瓨鍦!"); @@ -585,9 +590,30 @@ public class SalaryArchiveWrapper extends Service { return list.get(0); } + public List getSalaryArchiveInfoV2(SalaryArchiveProcessQueryParam param) { + if (param.getEmployeeId() == null) { + throw new SalaryRunTimeException("浜哄憳id涓虹┖!"); + } + SalaryArchivePO po = SalaryArchivePO.builder().employeeId(param.getEmployeeId()).build(); + if (param.getTaxAgentId() != null) { + po.setTaxAgentId(param.getTaxAgentId()); + } + if (CollectionUtils.isNotEmpty(param.getRunStatusList())) { + po.setRunStatusList(param.getRunStatusList()); + } + + List list = getSalaryArchiveService(user).listSome(po); + if (CollectionUtils.isEmpty(list)) { + throw new SalaryRunTimeException("钖祫妗f涓嶅瓨鍦!"); + } + + return list.stream().map(a->getFrom(a.getId())).collect(Collectors.toList()); + } + /** * 鍒犻櫎钖祫妗f + * * @param salaryArchiveIds */ public void deleteSalaryArchive(Collection salaryArchiveIds) { diff --git a/src/com/engine/salary/wrapper/SalaryFormulaWrapper.java b/src/com/engine/salary/wrapper/SalaryFormulaWrapper.java index 7822f4404..ba43a041c 100644 --- a/src/com/engine/salary/wrapper/SalaryFormulaWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryFormulaWrapper.java @@ -111,20 +111,20 @@ public class SalaryFormulaWrapper extends Service { param.setSourceId("welfare"); //鑾峰彇绂忓埄绫昏柂璧勯」鐩 List list = getRemoteExcelService(user).fieldList(param.getSourceId(), param.getExtendParam()); - list = list.stream().filter(f -> !(f.getName().contains("姝e父缂寸撼") || f.getName().contains("琛ョ即") || f.getName().contains("琛ュ樊"))).collect(Collectors.toList()); + list = list.stream().filter(f -> !(f.getName().contains("姝e父缂寸撼") || f.getName().contains("琛ョ即") || f.getName().contains("琛ュ樊") || f.getName().contains("鐢虫姤鍩烘暟"))).collect(Collectors.toList()); //鎻愬彇鍑虹鍒╃被椤圭洰鍚嶇О for (FormulaVar formulaVar : list) { InsuranceAcctDetailImportFieldDTO insuranceAcctDetailImportFieldDTO = new InsuranceAcctDetailImportFieldDTO(); -// insuranceAcctDetailImportFieldDTO.setFieldId(formulaVar.getFieldId()); + insuranceAcctDetailImportFieldDTO.setFieldId(formulaVar.getFieldId().contains("welfare_") ? formulaVar.getFieldId().substring(8) : formulaVar.getFieldId()); insuranceAcctDetailImportFieldDTO.setSalaryItemName(formulaVar.getName()); welfareList.add(insuranceAcctDetailImportFieldDTO); } - welfareList.add(new InsuranceAcctDetailImportFieldDTO("绀句繚鍚堣")); - welfareList.add(new InsuranceAcctDetailImportFieldDTO("鍏Н閲戝悎璁")); - welfareList.add(new InsuranceAcctDetailImportFieldDTO("鍏朵粬绂忓埄鍚堣")); - welfareList.add(new InsuranceAcctDetailImportFieldDTO("鍚堣")); + welfareList.add(new InsuranceAcctDetailImportFieldDTO("socialSum","绀句繚鍚堣")); + welfareList.add(new InsuranceAcctDetailImportFieldDTO("fundSum","鍏Н閲戝悎璁")); + welfareList.add(new InsuranceAcctDetailImportFieldDTO("otherSum","鍏朵粬绂忓埄鍚堣")); + welfareList.add(new InsuranceAcctDetailImportFieldDTO("total","鍚堣")); return welfareList; } diff --git a/src/com/engine/salary/wrapper/SalaryItemWrapper.java b/src/com/engine/salary/wrapper/SalaryItemWrapper.java index b1d43a044..1cf40c5da 100644 --- a/src/com/engine/salary/wrapper/SalaryItemWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryItemWrapper.java @@ -10,6 +10,7 @@ import com.engine.salary.entity.salaryitem.dto.SalaryItemFormDTO; import com.engine.salary.entity.salaryitem.dto.SalaryItemListDTO; import com.engine.salary.entity.salaryitem.param.SalaryItemSaveParam; import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; +import com.engine.salary.entity.salaryitem.param.SyncSalaryItemParam; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salaryitem.po.SysSalaryItemPO; import com.engine.salary.entity.salarysob.po.SalarySobItemPO; @@ -236,8 +237,8 @@ public class SalaryItemWrapper extends Service { if (SalaryDataTypeEnum.parseByValue(saveParam.getDataType()) == null) { throw new SalaryRunTimeException("瀛楁绫诲瀷寮傚父"); } - if (saveParam.getName().contains("{") || saveParam.getName().contains("}")) { - throw new SalaryRunTimeException("钖祫椤圭洰鍚嶇О涓笉寰楀寘鍚ぇ鎷彿"); + if (saveParam.getName().contains("{") || saveParam.getName().contains("}") || saveParam.getName().contains(".")) { + throw new SalaryRunTimeException("钖祫椤圭洰鍚嶇О涓笉寰楀寘鍚ぇ鎷彿鎴栫偣"); } } @@ -262,4 +263,19 @@ public class SalaryItemWrapper extends Service { } + /** + * 鑾峰彇钖祫椤圭洰鍦ㄥ摢浜涜处濂椾腑浣跨敤 + * @param salaryItemId + */ + public List> getSalarySobBySalaryItem(Long salaryItemId) { + return getSalaryItemService(user).getSalarySobBySalaryItem(salaryItemId); + } + + /** + * 灏嗚柂璧勯」鐩鐞嗕腑鐨勪俊鎭悓姝ヨ嚦璐﹀ + * @param syncSalaryItemParam + */ + public void syncSalaryItemToSalarySobItem(SyncSalaryItemParam syncSalaryItemParam) { + getSalaryItemService(user).syncSalaryItemToSalarySobItem(syncSalaryItemParam); + } } diff --git a/src/com/engine/salary/wrapper/TaxAgentWrapper.java b/src/com/engine/salary/wrapper/TaxAgentWrapper.java index a9ff0a88c..027df9952 100644 --- a/src/com/engine/salary/wrapper/TaxAgentWrapper.java +++ b/src/com/engine/salary/wrapper/TaxAgentWrapper.java @@ -293,8 +293,8 @@ public class TaxAgentWrapper extends Service { * * @return */ - public List> selectList() { - return getTaxAgentService(user).selectList(); + public List> selectList(boolean needAuth) { + return getTaxAgentService(user).selectList(needAuth); } public List> selectListAsAdmin() {